Merge branch 'master' into AllMapChangesInOne

This commit is contained in:
LetterJay
2017-05-30 23:08:32 -05:00
committed by GitHub
364 changed files with 135665 additions and 22023 deletions
@@ -13,7 +13,7 @@
"ad" = ( "ad" = (
/obj/structure/flora/ausbushes/leafybush, /obj/structure/flora/ausbushes/leafybush,
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"ae" = ( "ae" = (
/obj/structure/table, /obj/structure/table,
/obj/item/weapon/storage/toolbox/mechanical, /obj/item/weapon/storage/toolbox/mechanical,
@@ -21,44 +21,47 @@
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"af" = ( "af" = (
/obj/structure/table, /obj/structure/table,
/obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas,
/obj/machinery/light/small{
dir = 1
},
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"ag" = ( "ag" = (
/obj/structure/reagent_dispensers/fueltank, /obj/structure/reagent_dispensers/fueltank,
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"ah" = ( "ah" = (
/obj/machinery/power/smes, /obj/machinery/power/smes,
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"ai" = ( "ai" = (
/obj/machinery/portable_atmospherics/canister/oxygen, /obj/machinery/portable_atmospherics/canister/oxygen,
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"aj" = ( "aj" = (
/turf/closed/wall/mineral/sandstone{ /turf/closed/wall/mineral/sandstone{
baseturf = /turf/open/floor/plating/beach/sand baseturf = /turf/open/floor/plating/beach/sand
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"ak" = ( "ak" = (
/obj/structure/toilet, /obj/structure/toilet,
/obj/effect/decal/sandeffect, /obj/effect/decal/sandeffect,
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"al" = ( "al" = (
/obj/structure/urinal{ /obj/structure/urinal{
pixel_y = 32 pixel_y = 32
@@ -66,7 +69,7 @@
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"am" = ( "am" = (
/obj/structure/urinal{ /obj/structure/urinal{
pixel_y = 32 pixel_y = 32
@@ -75,13 +78,16 @@
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"an" = ( "an" = (
/obj/item/device/flashlight/lantern, /obj/item/device/flashlight/lantern,
/obj/machinery/light/small{
dir = 1
},
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"ao" = ( "ao" = (
/obj/structure/sink{ /obj/structure/sink{
dir = 4; dir = 4;
@@ -96,213 +102,219 @@
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"ap" = ( "ap" = (
/obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/sparsegrass,
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"aq" = ( "aq" = (
/obj/structure/flora/ausbushes/sunnybush, /obj/structure/flora/ausbushes/sunnybush,
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"ar" = ( "ar" = (
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"as" = ( "as" = (
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"at" = ( "at" = (
/obj/item/weapon/tank/internals/oxygen, /obj/item/weapon/tank/internals/oxygen,
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"au" = ( "au" = (
/obj/effect/decal/sandeffect, /obj/effect/decal/sandeffect,
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"av" = ( "av" = (
/obj/machinery/door/airlock/hatch, /obj/machinery/door/airlock/hatch,
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"aw" = ( "aw" = (
/obj/machinery/door/airlock/sandstone, /obj/machinery/door/airlock/sandstone,
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"ax" = ( "ax" = (
/obj/structure/extinguisher_cabinet, /obj/structure/extinguisher_cabinet,
/turf/closed/wall/mineral/sandstone{ /turf/closed/wall/mineral/sandstone{
baseturf = /turf/open/floor/plating/beach/sand baseturf = /turf/open/floor/plating/beach/sand
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"ay" = ( "ay" = (
/obj/machinery/door/airlock/hatch, /obj/machinery/door/airlock/hatch,
/obj/effect/decal/sandeffect, /obj/effect/decal/sandeffect,
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"az" = ( "az" = (
/obj/item/clothing/neck/necklace/dope, /obj/item/clothing/neck/necklace/dope,
/obj/item/weapon/reagent_containers/spray/spraytan, /obj/item/weapon/reagent_containers/spray/spraytan,
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"aA" = ( "aA" = (
/obj/effect/decal/sandeffect, /obj/effect/decal/sandeffect,
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"aB" = ( "aB" = (
/obj/effect/turf_decal/stripes/asteroid/line{
dir = 1
},
/turf/open/floor/plasteel/asteroid{ /turf/open/floor/plasteel/asteroid{
baseturf = /turf/open/floor/plating/beach/sand; baseturf = /turf/open/floor/plating/beach/sand;
tag = "icon-asteroidwarning (NORTH)" tag = "icon-asteroidwarning (NORTH)"
}, },
/obj/effect/turf_decal/stripes/asteroid/line{ /area/ruin/powered/beach)
dir = 1
},
/area/ruin/powered)
"aC" = ( "aC" = (
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"aD" = ( "aD" = (
/obj/structure/table, /obj/structure/table,
/obj/item/weapon/storage/box/drinkingglasses, /obj/item/weapon/storage/box/drinkingglasses,
/obj/item/weapon/storage/box/drinkingglasses, /obj/item/weapon/storage/box/drinkingglasses,
/obj/item/weapon/reagent_containers/food/drinks/shaker, /obj/item/weapon/reagent_containers/food/drinks/shaker,
/obj/item/weapon/storage/box/beakers, /obj/item/weapon/storage/box/beakers,
/obj/machinery/light{
dir = 1
},
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"aE" = ( "aE" = (
/obj/structure/table, /obj/structure/table,
/obj/machinery/reagentgrinder, /obj/machinery/reagentgrinder,
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"aF" = ( "aF" = (
/obj/machinery/vending/boozeomat{ /obj/machinery/vending/boozeomat{
emagged = 1; emagged = 1;
req_access_txt = "0" req_access_txt = "0"
}, },
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"aG" = ( "aG" = (
/obj/structure/table, /obj/structure/table,
/obj/item/weapon/book/manual/barman_recipes, /obj/item/weapon/book/manual/barman_recipes,
/obj/item/weapon/reagent_containers/glass/rag, /obj/item/weapon/reagent_containers/glass/rag,
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"aH" = ( "aH" = (
/obj/structure/table, /obj/structure/table,
/obj/item/weapon/storage/box/donkpockets, /obj/item/weapon/storage/box/donkpockets,
/obj/machinery/light{
dir = 1
},
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"aI" = ( "aI" = (
/obj/structure/table, /obj/structure/table,
/obj/machinery/microwave, /obj/machinery/microwave,
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"aJ" = ( "aJ" = (
/obj/structure/closet/crate/bin, /obj/structure/closet/crate/bin,
/obj/item/weapon/tank/internals/emergency_oxygen, /obj/item/weapon/tank/internals/emergency_oxygen,
/obj/item/trash/candy, /obj/item/trash/candy,
/obj/item/toy/talking/owl, /obj/item/toy/talking/owl,
/obj/effect/turf_decal/stripes/asteroid/line{
dir = 1
},
/turf/open/floor/plasteel/asteroid{ /turf/open/floor/plasteel/asteroid{
baseturf = /turf/open/floor/plating/beach/sand; baseturf = /turf/open/floor/plating/beach/sand;
tag = "icon-asteroidwarning (NORTH)" tag = "icon-asteroidwarning (NORTH)"
}, },
/obj/effect/turf_decal/stripes/asteroid/line{ /area/ruin/powered/beach)
dir = 1
},
/area/ruin/powered)
"aK" = ( "aK" = (
/turf/open/floor/plasteel/asteroid{ /turf/open/floor/plasteel/asteroid{
baseturf = /turf/open/floor/plating/beach/sand baseturf = /turf/open/floor/plating/beach/sand
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"aL" = ( "aL" = (
/obj/effect/mob_spawn/human/bartender/alive{ /obj/effect/mob_spawn/human/bartender/alive{
name = "beach bum sleeper" name = "beach bum sleeper"
}, },
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"aM" = ( "aM" = (
/obj/structure/reagent_dispensers/beerkeg, /obj/structure/reagent_dispensers/beerkeg,
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"aN" = ( "aN" = (
/obj/machinery/vending/cigarette, /obj/machinery/vending/cigarette,
/turf/open/floor/plasteel/asteroid{ /turf/open/floor/plasteel/asteroid{
baseturf = /turf/open/floor/plating/beach/sand baseturf = /turf/open/floor/plating/beach/sand
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"aO" = ( "aO" = (
/obj/structure/stacklifter, /obj/structure/stacklifter,
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"aP" = ( "aP" = (
/obj/structure/table/wood, /obj/structure/table/wood,
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"aQ" = ( "aQ" = (
/obj/structure/table/wood, /obj/structure/table/wood,
/obj/item/device/flashlight/lamp, /obj/item/device/flashlight/lamp,
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"aR" = ( "aR" = (
/obj/structure/table/wood, /obj/structure/table/wood,
/obj/item/weapon/reagent_containers/food/drinks/bottle/tequila, /obj/item/weapon/reagent_containers/food/drinks/bottle/tequila,
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"aS" = ( "aS" = (
/obj/machinery/processor, /obj/machinery/processor,
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"aT" = ( "aT" = (
/obj/machinery/vending/cola, /obj/machinery/vending/cola,
/turf/open/floor/plasteel/asteroid{ /turf/open/floor/plasteel/asteroid{
baseturf = /turf/open/floor/plating/beach/sand baseturf = /turf/open/floor/plating/beach/sand
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"aU" = ( "aU" = (
/obj/effect/overlay/palmtree_l, /obj/effect/overlay/palmtree_l,
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"aV" = ( "aV" = (
/obj/effect/mob_spawn/human/beach/alive{ /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?"; flavour_text = "You're, like, totally a dudebro, bruh. Ch'yea. You came here, like, on spring break, hopin' to pick up some bangin' hot chicks, y'knaw?";
pocket2 = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/dank; l_pocket = /obj/item/weapon/reagent_containers/food/snacks/pizzaslice/dank;
uniform = /obj/item/clothing/under/pants/youngfolksjeans uniform = /obj/item/clothing/under/pants/youngfolksjeans
}, },
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"aW" = ( "aW" = (
/obj/structure/chair/stool, /obj/structure/chair/stool,
/obj/effect/turf_decal/stripes/asteroid/line{
dir = 1
},
/turf/open/floor/plasteel/asteroid{ /turf/open/floor/plasteel/asteroid{
baseturf = /turf/open/floor/plating/beach/sand; baseturf = /turf/open/floor/plating/beach/sand;
tag = "icon-asteroidwarning (NORTH)" tag = "icon-asteroidwarning (NORTH)"
}, },
/obj/effect/turf_decal/stripes/asteroid/line{ /area/ruin/powered/beach)
dir = 1
},
/area/ruin/powered)
"aX" = ( "aX" = (
/obj/structure/closet/secure_closet/freezer/meat, /obj/structure/closet/secure_closet/freezer/meat,
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"aY" = ( "aY" = (
/obj/machinery/vending/snack, /obj/machinery/vending/snack,
/turf/open/floor/plasteel/asteroid{ /turf/open/floor/plasteel/asteroid{
baseturf = /turf/open/floor/plating/beach/sand baseturf = /turf/open/floor/plating/beach/sand
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"aZ" = ( "aZ" = (
/obj/effect/overlay/coconut, /obj/effect/overlay/coconut,
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"ba" = ( "ba" = (
/obj/machinery/light{ /obj/machinery/light{
dir = 4; dir = 4;
@@ -316,24 +328,24 @@
"bb" = ( "bb" = (
/obj/structure/weightlifter, /obj/structure/weightlifter,
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"bc" = ( "bc" = (
/obj/machinery/door/airlock/sandstone, /obj/machinery/door/airlock/sandstone,
/obj/effect/decal/sandeffect, /obj/effect/decal/sandeffect,
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"bd" = ( "bd" = (
/obj/structure/closet/secure_closet/freezer/kitchen{ /obj/structure/closet/secure_closet/freezer/kitchen{
req_access = null req_access = null
}, },
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"be" = ( "be" = (
/obj/vehicle/scooter/skateboard{ /obj/vehicle/scooter/skateboard{
dir = 4 dir = 4
}, },
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"bf" = ( "bf" = (
/obj/machinery/light{ /obj/machinery/light{
icon_state = "tube1"; icon_state = "tube1";
@@ -347,10 +359,10 @@
"bg" = ( "bg" = (
/obj/structure/sign/barsign, /obj/structure/sign/barsign,
/turf/closed/wall/mineral/sandstone, /turf/closed/wall/mineral/sandstone,
/area/ruin/powered) /area/ruin/powered/beach)
"bh" = ( "bh" = (
/turf/closed/wall/mineral/sandstone, /turf/closed/wall/mineral/sandstone,
/area/ruin/powered) /area/ruin/powered/beach)
"bi" = ( "bi" = (
/turf/open/floor/plating/beach/sand{ /turf/open/floor/plating/beach/sand{
density = 1; density = 1;
@@ -365,14 +377,14 @@
/turf/open/floor/plasteel/asteroid{ /turf/open/floor/plasteel/asteroid{
baseturf = /turf/open/floor/plating/beach/sand baseturf = /turf/open/floor/plating/beach/sand
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"bk" = ( "bk" = (
/obj/structure/table/wood, /obj/structure/table/wood,
/obj/item/weapon/reagent_containers/food/snacks/pastatomato, /obj/item/weapon/reagent_containers/food/snacks/pastatomato,
/turf/open/floor/plasteel/asteroid{ /turf/open/floor/plasteel/asteroid{
baseturf = /turf/open/floor/plating/beach/sand baseturf = /turf/open/floor/plating/beach/sand
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"bl" = ( "bl" = (
/obj/structure/chair/wood/normal{ /obj/structure/chair/wood/normal{
icon_state = "wooden_chair"; icon_state = "wooden_chair";
@@ -381,7 +393,7 @@
/turf/open/floor/plasteel/asteroid{ /turf/open/floor/plasteel/asteroid{
baseturf = /turf/open/floor/plating/beach/sand baseturf = /turf/open/floor/plating/beach/sand
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"bm" = ( "bm" = (
/mob/living/simple_animal/crab, /mob/living/simple_animal/crab,
/turf/open/floor/plating/beach/sand{ /turf/open/floor/plating/beach/sand{
@@ -456,7 +468,7 @@
"bx" = ( "bx" = (
/obj/structure/flora/rock, /obj/structure/flora/rock,
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"by" = ( "by" = (
/obj/machinery/door/airlock/sandstone, /obj/machinery/door/airlock/sandstone,
/obj/effect/decal/sandeffect, /obj/effect/decal/sandeffect,
@@ -467,7 +479,7 @@
"bz" = ( "bz" = (
/mob/living/simple_animal/crab, /mob/living/simple_animal/crab,
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"bA" = ( "bA" = (
/obj/structure/window/reinforced{ /obj/structure/window/reinforced{
dir = 1 dir = 1
@@ -480,7 +492,7 @@
/obj/item/weapon/storage/firstaid, /obj/item/weapon/storage/firstaid,
/obj/item/weapon/storage/firstaid/brute, /obj/item/weapon/storage/firstaid/brute,
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"bB" = ( "bB" = (
/obj/structure/window/reinforced{ /obj/structure/window/reinforced{
dir = 4; dir = 4;
@@ -492,7 +504,7 @@
}, },
/obj/structure/chair/stool, /obj/structure/chair/stool,
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"bC" = ( "bC" = (
/obj/structure/table/wood, /obj/structure/table/wood,
/obj/item/weapon/tank/internals/oxygen, /obj/item/weapon/tank/internals/oxygen,
@@ -512,11 +524,11 @@
"bE" = ( "bE" = (
/obj/item/weapon/reagent_containers/spray/spraytan, /obj/item/weapon/reagent_containers/spray/spraytan,
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"bF" = ( "bF" = (
/obj/item/toy/beach_ball, /obj/item/toy/beach_ball,
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"bG" = ( "bG" = (
/obj/structure/window/reinforced{ /obj/structure/window/reinforced{
dir = 8 dir = 8
@@ -524,7 +536,7 @@
/obj/structure/window/reinforced, /obj/structure/window/reinforced,
/obj/item/device/megaphone, /obj/item/device/megaphone,
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"bH" = ( "bH" = (
/obj/structure/window/reinforced{ /obj/structure/window/reinforced{
dir = 4; dir = 4;
@@ -532,13 +544,13 @@
}, },
/obj/effect/mob_spawn/human/beach/alive{ /obj/effect/mob_spawn/human/beach/alive{
flavour_text = "You're a spunky lifeguard! It's up to you to make sure nobody drowns or gets eaten by sharks and stuff."; flavour_text = "You're a spunky lifeguard! It's up to you to make sure nobody drowns or gets eaten by sharks and stuff.";
has_id = 1; id = /obj/item/weapon/card/id;
id_access = "Medical Doctor"; id_access = "Medical Doctor";
id_job = "Lifeguard"; id_job = "Lifeguard";
mob_gender = "female" mob_gender = "female"
}, },
/turf/open/floor/wood, /turf/open/floor/wood,
/area/ruin/powered) /area/ruin/powered/beach)
"bI" = ( "bI" = (
/obj/structure/dresser, /obj/structure/dresser,
/turf/open/floor/pod/dark{ /turf/open/floor/pod/dark{
@@ -548,11 +560,11 @@
"bJ" = ( "bJ" = (
/obj/structure/chair, /obj/structure/chair,
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"bK" = ( "bK" = (
/obj/item/weapon/storage/backpack/dufflebag, /obj/item/weapon/storage/backpack/dufflebag,
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"bL" = ( "bL" = (
/obj/effect/decal/sandeffect{ /obj/effect/decal/sandeffect{
density = 1 density = 1
@@ -562,43 +574,227 @@
baseturf = /turf/open/floor/plating/lava/smooth; baseturf = /turf/open/floor/plating/lava/smooth;
density = 1 density = 1
}, },
/area/ruin/powered) /area/ruin/powered/beach)
"bM" = ( "bM" = (
/turf/open/floor/plasteel/stairs/old, /turf/open/floor/plasteel/stairs/old,
/area/ruin/powered) /area/ruin/powered/beach)
"bN" = ( "bN" = (
/obj/structure/flora/ausbushes/reedbush, /obj/structure/flora/ausbushes/reedbush,
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"bO" = ( "bO" = (
/obj/item/device/camera, /obj/item/device/camera,
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"bP" = ( "bP" = (
/obj/item/weapon/reagent_containers/food/drinks/beer, /obj/item/weapon/reagent_containers/food/drinks/beer,
/turf/open/floor/plating/beach/sand, /turf/open/floor/plating/beach/sand,
/area/ruin/powered) /area/ruin/powered/beach)
"bQ" = ( "bQ" = (
/obj/structure/flora/ausbushes/reedbush, /obj/structure/flora/ausbushes/reedbush,
/turf/open/floor/plating/beach/coastline_t, /turf/open/floor/plating/beach/coastline_t,
/area/ruin/powered) /area/ruin/powered/beach)
"bR" = ( "bR" = (
/turf/open/floor/plating/beach/coastline_t, /turf/open/floor/plating/beach/coastline_t,
/area/ruin/powered) /area/ruin/powered/beach)
"bS" = ( "bS" = (
/obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/sparsegrass,
/turf/open/floor/plating/beach/coastline_t, /turf/open/floor/plating/beach/coastline_t,
/area/ruin/powered) /area/ruin/powered/beach)
"bT" = ( "bT" = (
/turf/open/floor/plating/beach/coastline_b, /turf/open/floor/plating/beach/coastline_b,
/area/ruin/powered) /area/ruin/powered/beach)
"bU" = ( "bU" = (
/turf/open/floor/plating/beach/water, /turf/open/floor/plating/beach/water,
/area/ruin/powered) /area/ruin/powered/beach)
"bV" = ( "bV" = (
/obj/structure/flora/ausbushes/stalkybush, /obj/structure/flora/ausbushes/stalkybush,
/turf/open/floor/plating/beach/water, /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) /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) = {" (1,1,1) = {"
aa aa
@@ -646,11 +842,11 @@ ab
ab ab
ab ab
bn bn
br cm
bu bu
bv bv
bu bu
bs co
bC bC
ab ab
ab ab
@@ -673,7 +869,7 @@ ab
ab ab
ab ab
ap ap
ar cg
ar ar
ar ar
ab ab
@@ -721,7 +917,7 @@ ap
bR bR
bT bT
bU bU
bU ct
ab ab
ab ab
aa aa
@@ -740,7 +936,7 @@ aO
ar ar
bb bb
ar ar
ar ci
ar ar
ar ar
aA aA
@@ -748,7 +944,7 @@ aA
aA aA
ar ar
ar ar
ar cr
bN bN
bR bR
bT bT
@@ -819,7 +1015,7 @@ bT
bU bU
bU bU
bU bU
bU cv
ab ab
ab ab
aa aa
@@ -859,10 +1055,10 @@ aa
(9,1,1) = {" (9,1,1) = {"
aa aa
ab ab
ab bW
ab bW
ab bW
aA ce
aA aA
aA aA
aA aA
@@ -893,7 +1089,7 @@ aa
ac ac
ae ae
as as
ab bW
aB aB
aK aK
aK aK
@@ -980,7 +1176,7 @@ bU
bU bU
bU bU
bU bU
bU cx
ab ab
aa aa
"} "}
@@ -1051,7 +1247,7 @@ aa
(15,1,1) = {" (15,1,1) = {"
aa aa
ac ac
aj cd
aj aj
aj aj
aF aF
@@ -1092,7 +1288,7 @@ aj
aj aj
bc bc
aj aj
aB cj
aK aK
aA aA
ar ar
@@ -1172,7 +1368,7 @@ bU
bU bU
bU bU
bU bU
bU cy
ab ab
aa aa
"} "}
@@ -1188,14 +1384,14 @@ aj
aj aj
aj aj
aj aj
aB ck
aK aK
aA aA
ar ar
ar ar
ar ar
ar ar
ar cq
ar ar
ar ar
bR bR
@@ -1275,10 +1471,10 @@ aa
(22,1,1) = {" (22,1,1) = {"
aa aa
ab ab
ab bW
ab bW
ab bW
aA cf
aA aA
aA aA
aA aA
@@ -1363,7 +1559,7 @@ bT
bU bU
bU bU
bU bU
bU cw
ab ab
ab ab
aa aa
@@ -1412,7 +1608,7 @@ aq
ar ar
be be
ar ar
ar cl
ar ar
ar ar
aA aA
@@ -1420,7 +1616,7 @@ aA
aA aA
ar ar
ar ar
aU cs
ar ar
bR bR
bT bT
@@ -1457,7 +1653,7 @@ ap
bR bR
bT bT
bU bU
bU cu
ab ab
ab ab
aa aa
@@ -1473,7 +1669,7 @@ ab
ab ab
ab ab
ap ap
ar ch
ap ap
ar ar
ab ab
@@ -1510,11 +1706,11 @@ ab
ab ab
ab ab
bo bo
bs cn
bu bu
bu bu
bv bv
br cp
bC bC
ab ab
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{ /turf/closed/wall/r_wall{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"ac" = ( "ac" = (
/obj/item/stack/medical/ointment, /obj/item/stack/medical/ointment,
/obj/structure/table, /obj/structure/table,
@@ -19,6 +19,9 @@
/obj/structure/table, /obj/structure/table,
/obj/item/stack/medical/gauze, /obj/item/stack/medical/gauze,
/obj/item/stack/medical/gauze, /obj/item/stack/medical/gauze,
/obj/machinery/light/small{
dir = 1
},
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
@@ -36,6 +39,9 @@
/area/ruin/powered/snow_biodome) /area/ruin/powered/snow_biodome)
"ag" = ( "ag" = (
/obj/structure/reagent_dispensers/beerkeg, /obj/structure/reagent_dispensers/beerkeg,
/obj/machinery/light/small{
dir = 1
},
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
@@ -54,6 +60,9 @@
/area/ruin/powered/snow_biodome) /area/ruin/powered/snow_biodome)
"aj" = ( "aj" = (
/obj/structure/sink, /obj/structure/sink,
/obj/machinery/light/small{
dir = 1
},
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
@@ -290,89 +299,92 @@
/obj/item/clothing/shoes/winterboots, /obj/item/clothing/shoes/winterboots,
/obj/item/clothing/gloves/fingerless, /obj/item/clothing/gloves/fingerless,
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"aT" = ( "aT" = (
/obj/structure/grille, /obj/structure/grille,
/obj/structure/window/fulltile, /obj/structure/window/fulltile,
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"aU" = ( "aU" = (
/obj/machinery/vending/coffee, /obj/machinery/vending/coffee,
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"aV" = ( "aV" = (
/obj/structure/closet/secure_closet/freezer/fridge, /obj/structure/closet/secure_closet/freezer/fridge,
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"aW" = ( "aW" = (
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"aX" = ( "aX" = (
/turf/open/floor/pod/light, /turf/open/floor/pod/light,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"aY" = ( "aY" = (
/obj/structure/chair/stool, /obj/structure/chair/stool,
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"aZ" = ( "aZ" = (
/obj/machinery/door/airlock/hatch, /obj/machinery/door/airlock/hatch,
/obj/structure/fans/tiny, /obj/structure/fans/tiny,
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"ba" = ( "ba" = (
/obj/machinery/door/airlock/silver, /obj/machinery/door/airlock/silver,
/obj/structure/fans/tiny, /obj/structure/fans/tiny,
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"bb" = ( "bb" = (
/obj/machinery/door/airlock/silver, /obj/machinery/door/airlock/silver,
/obj/structure/fans/tiny, /obj/structure/fans/tiny,
/turf/open/floor/plating{ /turf/open/floor/plating{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"bc" = ( "bc" = (
/obj/structure/table, /obj/structure/table,
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"bd" = ( "bd" = (
/obj/structure/table, /obj/structure/table,
/obj/item/weapon/pen, /obj/item/weapon/pen,
/obj/item/weapon/paper_bin, /obj/item/weapon/paper_bin,
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"be" = ( "be" = (
/obj/structure/table, /obj/structure/table,
/obj/machinery/microwave, /obj/machinery/microwave,
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"bf" = ( "bf" = (
/obj/effect/decal/cleanable/oil, /obj/effect/decal/cleanable/oil,
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"bg" = ( "bg" = (
/obj/item/weapon/twohanded/required/chainsaw, /obj/item/weapon/twohanded/required/chainsaw,
/obj/structure/closet, /obj/structure/closet,
/obj/machinery/light/small{
dir = 4
},
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"bh" = ( "bh" = (
/obj/structure/filingcabinet, /obj/structure/filingcabinet,
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"bi" = ( "bi" = (
/obj/machinery/computer/monitor, /obj/machinery/computer/monitor,
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"bj" = ( "bj" = (
/obj/item/weapon/storage/toolbox/mechanical, /obj/item/weapon/storage/toolbox/mechanical,
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"bk" = ( "bk" = (
/obj/structure/reagent_dispensers/fueltank, /obj/structure/reagent_dispensers/fueltank,
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"bl" = ( "bl" = (
/turf/open/floor/wood{ /turf/open/floor/wood{
baseturf = /turf/open/floor/plating/lava/smooth; baseturf = /turf/open/floor/plating/lava/smooth;
@@ -382,22 +394,22 @@
/area/ruin/powered/snow_biodome) /area/ruin/powered/snow_biodome)
"bm" = ( "bm" = (
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"bn" = ( "bn" = (
/obj/item/clothing/mask/balaclava, /obj/item/clothing/mask/balaclava,
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"bo" = ( "bo" = (
/obj/structure/table, /obj/structure/table,
/obj/item/weapon/storage/fancy/cigarettes/cigpack_carp, /obj/item/weapon/storage/fancy/cigarettes/cigpack_carp,
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"bp" = ( "bp" = (
/obj/structure/table, /obj/structure/table,
/obj/item/weapon/pen, /obj/item/weapon/pen,
/obj/item/weapon/paper, /obj/item/weapon/paper,
/turf/open/floor/pod/dark, /turf/open/floor/pod/dark,
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"bq" = ( "bq" = (
/obj/machinery/light/built{ /obj/machinery/light/built{
dir = 1 dir = 1
@@ -406,12 +418,202 @@
baseturf = /turf/open/floor/plating/asteroid/basalt; baseturf = /turf/open/floor/plating/asteroid/basalt;
initial_gas_mix = "o2=14;n2=23;TEMP=300" initial_gas_mix = "o2=14;n2=23;TEMP=300"
}, },
/area/ruin/powered/snow_biodome) /area/ruin/powered)
"br" = ( "br" = (
/obj/structure/fans/tiny, /obj/structure/fans/tiny,
/obj/machinery/door/airlock/glass_large, /obj/machinery/door/airlock/glass_large,
/turf/open/floor/pod/dark, /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) /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) = {" (1,1,1) = {"
aa aa
@@ -458,10 +660,10 @@ ab
ab ab
ab ab
aS aS
aW bG
aW aW
aX aX
aW bI
aW aW
bh bh
ab ab
@@ -486,7 +688,7 @@ ab
ab ab
ab ab
ak ak
ak by
ak ak
ab ab
aS aS
@@ -552,7 +754,7 @@ ak
aI aI
ak ak
ak ak
ak bC
az az
ak ak
aB aB
@@ -560,7 +762,7 @@ ak
ak ak
ak ak
aI aI
ak bJ
ak ak
ak ak
ak ak
@@ -577,7 +779,7 @@ aa
aa aa
aa aa
ab ab
ao bv
ao ao
ao ao
ao ao
@@ -631,7 +833,7 @@ ak
ak ak
ak ak
ak ak
ak bO
ab ab
ab ab
bm bm
@@ -744,7 +946,7 @@ aq
aq aq
aK aK
aq aq
ak bD
ao ao
ao ao
ao ao
@@ -770,7 +972,7 @@ ab
ad ad
af af
ar ar
at bw
at at
aD aD
at at
@@ -790,7 +992,7 @@ ak
ak ak
ak ak
az az
ak bM
ab ab
aS aS
aS aS
@@ -806,7 +1008,7 @@ au
au au
aq aq
at at
at bz
aq aq
ak ak
ak ak
@@ -825,7 +1027,7 @@ ak
aI aI
ab ab
bn bn
aW bQ
ab ab
bm bm
"} "}
@@ -887,7 +1089,7 @@ ao
ak ak
ak ak
ak ak
aO bs
aX aX
aX aX
br br
@@ -919,10 +1121,10 @@ ao
ao ao
ak ak
ak ak
aP bt
aX aX
aX aX
aP bt
bm bm
"} "}
(17,1,1) = {" (17,1,1) = {"
@@ -966,7 +1168,7 @@ av
at at
aG aG
at at
at bA
aq aq
aR aR
ak ak
@@ -985,7 +1187,7 @@ ao
ao ao
ab ab
aW aW
aW bR
ab ab
bm bm
"} "}
@@ -995,7 +1197,7 @@ ai
af af
aq aq
av av
at bx
aH aH
at at
aN aN
@@ -1014,7 +1216,7 @@ ak
ak ak
ak ak
ao ao
ao bN
ab ab
bo bo
bp bp
@@ -1032,7 +1234,7 @@ aq
aq aq
aq aq
aq aq
ak bE
ak ak
ak ak
ak ak
@@ -1175,7 +1377,7 @@ ak
aI aI
aI aI
ak ak
ak bP
ab ab
ab ab
bm bm
@@ -1224,7 +1426,7 @@ az
ak ak
ak ak
ak ak
ak bF
ak ak
ak ak
ak ak
@@ -1232,7 +1434,7 @@ ak
ak ak
az az
ak ak
ak bK
ak ak
ak ak
az az
@@ -1286,7 +1488,7 @@ ab
ab ab
ab ab
ak ak
ak bB
ak ak
ab ab
aU aU
@@ -1298,7 +1500,7 @@ bf
bj bj
ab ab
ak ak
ak bL
ak ak
ab ab
ab ab
@@ -1322,7 +1524,7 @@ ab
ab ab
ab ab
aV aV
aW bH
aY aY
bc bc
be be
@@ -15,36 +15,36 @@
/area/ruin/powered) /area/ruin/powered)
"e" = ( "e" = (
/turf/open/floor/plating/lava/smooth, /turf/open/floor/plating/lava/smooth,
/area/ruin/powered) /area/ruin/powered/gluttony)
"f" = ( "f" = (
/obj/item/weapon/reagent_containers/syringe/gluttony, /obj/item/weapon/reagent_containers/syringe/gluttony,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/gluttony)
"g" = ( "g" = (
/obj/effect/gluttony, /obj/effect/gluttony,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/gluttony)
"h" = ( "h" = (
/obj/item/weapon/veilrender/vealrender, /obj/item/weapon/veilrender/vealrender,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/gluttony)
"i" = ( "i" = (
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/gluttony)
"j" = ( "j" = (
/obj/item/trash/plate, /obj/item/trash/plate,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/gluttony)
"k" = ( "k" = (
/obj/machinery/door/airlock/uranium, /obj/machinery/door/airlock/uranium,
/obj/structure/fans/tiny/invisible, /obj/structure/fans/tiny/invisible,
@@ -57,37 +57,113 @@
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/gluttony)
"m" = ( "m" = (
/obj/item/trash/raisins, /obj/item/trash/raisins,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/gluttony)
"n" = ( "n" = (
/obj/item/trash/pistachios, /obj/item/trash/pistachios,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/gluttony)
"o" = ( "o" = (
/obj/item/trash/popcorn, /obj/item/trash/popcorn,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/gluttony)
"p" = ( "p" = (
/obj/item/trash/semki, /obj/item/trash/semki,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/gluttony)
"q" = ( "q" = (
/obj/item/trash/syndi_cakes, /obj/item/trash/syndi_cakes,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth 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) = {" (1,1,1) = {"
a a
@@ -211,7 +287,7 @@ c
d d
i i
i i
i v
d d
c c
b b
@@ -253,7 +329,7 @@ c
c c
c c
d d
i t
i i
m m
d d
@@ -277,7 +353,7 @@ d
d d
g g
m m
i w
d d
d d
d d
@@ -294,7 +370,7 @@ c
d d
e e
d d
g r
g g
g g
g g
@@ -302,7 +378,7 @@ g
i i
p p
i i
j z
l l
i i
d d
@@ -338,7 +414,7 @@ c
d d
e e
d d
g s
g g
g g
g g
@@ -346,7 +422,7 @@ i
g g
i i
l l
i A
i i
q q
d d
@@ -365,7 +441,7 @@ d
d d
g g
i i
i x
d d
d d
d d
@@ -385,7 +461,7 @@ c
c c
c c
d d
g u
i i
i i
d d
@@ -431,7 +507,7 @@ c
d d
j j
i i
i y
d d
c c
b b
@@ -122,6 +122,9 @@
name = "shrine of the liberator"; name = "shrine of the liberator";
pixel_x = 0 pixel_x = 0
}, },
/obj/machinery/light{
dir = 8
},
/turf/open/floor/mineral/titanium/purple{ /turf/open/floor/mineral/titanium/purple{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
@@ -215,6 +218,7 @@
/obj/item/weapon/storage/firstaid/fire, /obj/item/weapon/storage/firstaid/fire,
/obj/structure/table/wood, /obj/structure/table/wood,
/obj/item/weapon/storage/firstaid/fire, /obj/item/weapon/storage/firstaid/fire,
/obj/machinery/light,
/turf/open/floor/mineral/titanium/purple{ /turf/open/floor/mineral/titanium/purple{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
@@ -262,6 +266,122 @@
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered/golem_ship) /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) = {" (1,1,1) = {"
a a
@@ -358,7 +478,7 @@ a
a a
a a
b b
l L
l l
j j
l l
@@ -384,10 +504,10 @@ l
l l
b b
l l
l Q
G G
l l
l T
b b
b b
b b
@@ -427,7 +547,7 @@ j
l l
l l
b b
l P
l l
G G
l l
@@ -444,18 +564,18 @@ a
a a
b b
c c
f I
b b
m M
o o
b b
l l
l l
G G
o o
m U
b b
f V
F F
b b
a a
@@ -510,18 +630,18 @@ a
a a
b b
c c
f J
b b
l l
l l
O
l l
l l
l S
l
l l
z z
b b
f W
F F
b b
a a
@@ -598,9 +718,9 @@ a
a a
b b
e e
f K
b b
l N
l l
l l
l l
@@ -609,7 +729,7 @@ v
l l
B B
b b
f X
f f
b b
a a
@@ -670,7 +790,7 @@ h
h h
b b
t t
l R
b b
h h
h h
@@ -16,26 +16,32 @@
"e" = ( "e" = (
/obj/structure/table/wood/poker, /obj/structure/table/wood/poker,
/obj/item/weapon/gun/ballistic/revolver/russian/soul, /obj/item/weapon/gun/ballistic/revolver/russian/soul,
/obj/machinery/light/small{
dir = 1
},
/turf/open/floor/carpet{ /turf/open/floor/carpet{
baseturf = /turf/open/floor/plating/lava/smooth; baseturf = /turf/open/floor/plating/lava/smooth;
icon_state = "carpetsymbol" icon_state = "carpetsymbol"
}, },
/area/ruin/powered) /area/ruin/powered/greed)
"f" = ( "f" = (
/obj/structure/cursed_slot_machine, /obj/structure/cursed_slot_machine,
/turf/open/floor/carpet{ /turf/open/floor/carpet{
baseturf = /turf/open/floor/plating/lava/smooth; baseturf = /turf/open/floor/plating/lava/smooth;
icon_state = "carpetsymbol" icon_state = "carpetsymbol"
}, },
/area/ruin/powered) /area/ruin/powered/greed)
"g" = ( "g" = (
/obj/structure/table/wood/poker, /obj/structure/table/wood/poker,
/obj/item/weapon/coin/mythril, /obj/item/weapon/coin/mythril,
/obj/machinery/light/small{
dir = 1
},
/turf/open/floor/carpet{ /turf/open/floor/carpet{
baseturf = /turf/open/floor/plating/lava/smooth; baseturf = /turf/open/floor/plating/lava/smooth;
icon_state = "carpetsymbol" icon_state = "carpetsymbol"
}, },
/area/ruin/powered) /area/ruin/powered/greed)
"h" = ( "h" = (
/obj/structure/table/wood/poker, /obj/structure/table/wood/poker,
/obj/item/weapon/coin/diamond, /obj/item/weapon/coin/diamond,
@@ -43,13 +49,13 @@
baseturf = /turf/open/floor/plating/lava/smooth; baseturf = /turf/open/floor/plating/lava/smooth;
icon_state = "carpetsymbol" icon_state = "carpetsymbol"
}, },
/area/ruin/powered) /area/ruin/powered/greed)
"i" = ( "i" = (
/turf/open/floor/carpet{ /turf/open/floor/carpet{
baseturf = /turf/open/floor/plating/lava/smooth; baseturf = /turf/open/floor/plating/lava/smooth;
icon_state = "carpetsymbol" icon_state = "carpetsymbol"
}, },
/area/ruin/powered) /area/ruin/powered/greed)
"j" = ( "j" = (
/obj/structure/table/wood/poker, /obj/structure/table/wood/poker,
/obj/item/weapon/coin/adamantine, /obj/item/weapon/coin/adamantine,
@@ -57,7 +63,7 @@
baseturf = /turf/open/floor/plating/lava/smooth; baseturf = /turf/open/floor/plating/lava/smooth;
icon_state = "carpetsymbol" icon_state = "carpetsymbol"
}, },
/area/ruin/powered) /area/ruin/powered/greed)
"k" = ( "k" = (
/obj/machinery/computer/arcade/battle{ /obj/machinery/computer/arcade/battle{
emagged = 1 emagged = 1
@@ -65,46 +71,50 @@
/turf/open/floor/engine/cult{ /turf/open/floor/engine/cult{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/greed)
"l" = ( "l" = (
/obj/item/weapon/coin/gold, /obj/item/weapon/coin/gold,
/turf/open/floor/engine/cult{ /turf/open/floor/engine/cult{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/greed)
"m" = ( "m" = (
/turf/open/floor/engine/cult{ /turf/open/floor/engine/cult{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/greed)
"n" = ( "n" = (
/obj/structure/table/wood/poker, /obj/structure/table/wood/poker,
/obj/item/stack/spacecash/c1000, /obj/item/stack/spacecash/c1000,
/turf/open/floor/engine/cult{ /turf/open/floor/engine/cult{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/greed)
"o" = ( "o" = (
/obj/item/weapon/storage/bag/money, /obj/item/weapon/storage/bag/money,
/turf/open/floor/engine/cult{ /turf/open/floor/engine/cult{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/greed)
"p" = ( "p" = (
/obj/structure/table/wood/poker, /obj/structure/table/wood/poker,
/obj/item/weapon/ore/gold, /obj/item/weapon/ore/gold,
/turf/open/floor/engine/cult{ /turf/open/floor/engine/cult{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/greed)
"q" = ( "q" = (
/obj/structure/table/wood/poker, /obj/structure/table/wood/poker,
/obj/item/stack/spacecash/c20, /obj/item/stack/spacecash/c20,
/obj/item/stack/spacecash/c50, /obj/item/stack/spacecash/c50,
/obj/machinery/light/small{
brightness = 3;
dir = 8
},
/turf/open/floor/engine/cult{ /turf/open/floor/engine/cult{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/greed)
"r" = ( "r" = (
/obj/structure/table/wood/poker, /obj/structure/table/wood/poker,
/obj/item/stack/spacecash/c500, /obj/item/stack/spacecash/c500,
@@ -113,21 +123,47 @@
/turf/open/floor/engine/cult{ /turf/open/floor/engine/cult{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/greed)
"s" = ( "s" = (
/obj/structure/table/wood/poker, /obj/structure/table/wood/poker,
/obj/item/stack/spacecash/c200, /obj/item/stack/spacecash/c200,
/turf/open/floor/engine/cult{ /turf/open/floor/engine/cult{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/greed)
"t" = ( "t" = (
/obj/machinery/door/airlock/gold, /obj/machinery/door/airlock/gold,
/obj/structure/fans/tiny/invisible,
/turf/open/floor/engine/cult{ /turf/open/floor/engine/cult{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/obj/structure/fans/tiny/invisible,
/area/ruin/powered) /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) = {" (1,1,1) = {"
a a
@@ -320,7 +356,7 @@ m
m m
l l
m m
l v
d d
d d
a a
@@ -364,7 +400,7 @@ m
l l
m m
l l
o w
d d
d d
a a
@@ -404,7 +440,7 @@ c
d d
d d
p p
r u
r r
d d
c c
@@ -20,7 +20,7 @@
/turf/open/floor/mineral/silver{ /turf/open/floor/mineral/silver{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/pride)
"f" = ( "f" = (
/obj/structure/mirror{ /obj/structure/mirror{
pixel_x = 32 pixel_x = 32
@@ -28,12 +28,12 @@
/turf/open/floor/mineral/silver{ /turf/open/floor/mineral/silver{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/pride)
"g" = ( "g" = (
/turf/open/floor/mineral/silver{ /turf/open/floor/mineral/silver{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/pride)
"h" = ( "h" = (
/obj/structure/mirror/magic/pride, /obj/structure/mirror/magic/pride,
/turf/closed/wall/mineral/diamond{ /turf/closed/wall/mineral/diamond{
@@ -47,6 +47,109 @@
blocks_air = 1 blocks_air = 1
}, },
/area/ruin/powered) /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) = {" (1,1,1) = {"
a a
@@ -120,16 +223,16 @@ c
d d
d d
d d
j
e e
e e
l
e e
e e
n
e e
e e
e p
e
e
e
e e
e e
d d
@@ -153,7 +256,7 @@ g
g g
g g
g g
g r
d d
a a
a a
@@ -197,7 +300,7 @@ g
g g
g g
g g
g s
d d
c c
a a
@@ -208,16 +311,16 @@ c
d d
d d
d d
k
f f
f f
m
f f
f f
o
f f
f f
f q
f
f
f
f f
f f
d d
@@ -19,31 +19,31 @@
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"e" = ( "e" = (
/obj/structure/table/wood, /obj/structure/table/wood,
/obj/item/weapon/storage/box/disks_plantgene, /obj/item/weapon/storage/box/disks_plantgene,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"f" = ( "f" = (
/obj/machinery/plantgenes/seedvault, /obj/machinery/plantgenes/seedvault,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"g" = ( "g" = (
/obj/structure/table/wood, /obj/structure/table/wood,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"h" = ( "h" = (
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"i" = ( "i" = (
/obj/structure/closet/crate/hydroponics, /obj/structure/closet/crate/hydroponics,
/obj/structure/beebox, /obj/structure/beebox,
@@ -57,7 +57,7 @@
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"j" = ( "j" = (
/obj/structure/shuttle/engine/propulsion{ /obj/structure/shuttle/engine/propulsion{
icon_state = "propulsion"; icon_state = "propulsion";
@@ -71,13 +71,13 @@
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"l" = ( "l" = (
/obj/machinery/door/airlock, /obj/machinery/door/airlock,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"m" = ( "m" = (
/obj/structure/shuttle/engine/propulsion{ /obj/structure/shuttle/engine/propulsion{
icon_state = "propulsion"; icon_state = "propulsion";
@@ -90,7 +90,7 @@
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"o" = ( "o" = (
/obj/structure/closet/crate/hydroponics, /obj/structure/closet/crate/hydroponics,
/obj/item/weapon/cultivator, /obj/item/weapon/cultivator,
@@ -108,13 +108,13 @@
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"p" = ( "p" = (
/obj/machinery/hydroponics/constructable, /obj/machinery/hydroponics/constructable,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"q" = ( "q" = (
/obj/item/weapon/hatchet, /obj/item/weapon/hatchet,
/obj/item/weapon/storage/bag/plants, /obj/item/weapon/storage/bag/plants,
@@ -123,7 +123,7 @@
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"r" = ( "r" = (
/obj/structure/table/wood, /obj/structure/table/wood,
/obj/item/weapon/storage/bag/plants, /obj/item/weapon/storage/bag/plants,
@@ -133,7 +133,7 @@
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"s" = ( "s" = (
/obj/structure/table/wood, /obj/structure/table/wood,
/obj/item/weapon/gun/energy/floragun, /obj/item/weapon/gun/energy/floragun,
@@ -144,13 +144,13 @@
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"t" = ( "t" = (
/obj/effect/mob_spawn/human/seed_vault, /obj/effect/mob_spawn/human/seed_vault,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"u" = ( "u" = (
/obj/structure/sink{ /obj/structure/sink{
icon_state = "sink"; icon_state = "sink";
@@ -161,19 +161,19 @@
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"v" = ( "v" = (
/obj/machinery/vending/hydronutrients, /obj/machinery/vending/hydronutrients,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"w" = ( "w" = (
/obj/machinery/vending/hydroseeds, /obj/machinery/vending/hydroseeds,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"x" = ( "x" = (
/obj/machinery/reagentgrinder{ /obj/machinery/reagentgrinder{
pixel_y = 5 pixel_y = 5
@@ -186,7 +186,7 @@
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"y" = ( "y" = (
/obj/structure/sink{ /obj/structure/sink{
dir = 4; dir = 4;
@@ -197,13 +197,13 @@
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"z" = ( "z" = (
/obj/machinery/door/airlock/external, /obj/machinery/door/airlock/external,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"A" = ( "A" = (
/obj/machinery/door/airlock/external, /obj/machinery/door/airlock/external,
/obj/structure/fans/tiny, /obj/structure/fans/tiny,
@@ -217,31 +217,31 @@
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"C" = ( "C" = (
/obj/machinery/seed_extractor, /obj/machinery/seed_extractor,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"D" = ( "D" = (
/obj/machinery/biogenerator, /obj/machinery/biogenerator,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"E" = ( "E" = (
/obj/machinery/chem_dispenser/mutagensaltpeter, /obj/machinery/chem_dispenser/mutagensaltpeter,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"F" = ( "F" = (
/obj/structure/disposalpipe/segment, /obj/structure/disposalpipe/segment,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"G" = ( "G" = (
/obj/structure/closet/crate/hydroponics, /obj/structure/closet/crate/hydroponics,
/obj/item/clothing/under/rank/hydroponics, /obj/item/clothing/under/rank/hydroponics,
@@ -251,13 +251,13 @@
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"H" = ( "H" = (
/obj/machinery/chem_master/condimaster, /obj/machinery/chem_master/condimaster,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"I" = ( "I" = (
/obj/structure/table/wood, /obj/structure/table/wood,
/obj/item/weapon/reagent_containers/glass/bucket, /obj/item/weapon/reagent_containers/glass/bucket,
@@ -267,14 +267,14 @@
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"J" = ( "J" = (
/obj/item/weapon/storage/toolbox/syndicate, /obj/item/weapon/storage/toolbox/syndicate,
/obj/structure/table/wood, /obj/structure/table/wood,
/turf/open/floor/plasteel/freezer{ /turf/open/floor/plasteel/freezer{
baseturf = /turf/open/floor/plating/lava/smooth baseturf = /turf/open/floor/plating/lava/smooth
}, },
/area/ruin/powered) /area/ruin/powered/seedvault)
"K" = ( "K" = (
/obj/structure/disposalpipe/segment, /obj/structure/disposalpipe/segment,
/turf/closed/wall/r_wall, /turf/closed/wall/r_wall,
@@ -292,6 +292,102 @@
}, },
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/lavaland/surface/outdoors) /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) = {" (1,1,1) = {"
a a
@@ -346,10 +442,10 @@ a
a a
c c
c c
T
h h
h h
h U
h
c c
c c
a a
@@ -389,12 +485,12 @@ c
k k
c c
n n
h R
u u
h h
h h
u u
h V
u u
c c
a a
@@ -429,17 +525,17 @@ a
a a
a a
c c
e N
h h
c c
p P
h h
p p
h h
h h
p p
h h
p X
c c
a a
a a
@@ -539,17 +635,17 @@ a
b b
a a
c c
h O
h h
c c
p Q
h h
h h
h h
h h
h h
h h
p Y
c c
a a
a a
@@ -587,12 +683,12 @@ c
i i
c c
s s
h S
y y
h h
h h
y y
h W
J J
c c
a a
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -8,185 +8,81 @@
}, },
/obj/structure/alien/resin/wall, /obj/structure/alien/resin/wall,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"c" = ( "c" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds2" icon_state = "weeds2"
}, },
/obj/structure/alien/resin/wall, /obj/structure/alien/resin/wall,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"d" = ( "d" = (
/obj/structure/alien/resin/wall, /obj/structure/alien/resin/wall,
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds2" icon_state = "weeds2"
}, },
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"e" = ( "e" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds1" icon_state = "weeds1"
}, },
/obj/structure/alien/egg/burst, /obj/structure/alien/egg/burst,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"f" = ( "f" = (
/obj/structure/alien/weeds, /obj/structure/alien/weeds,
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds2" icon_state = "weeds2"
}, },
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"g" = ( "g" = (
/obj/structure/alien/weeds, /obj/structure/alien/weeds,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"h" = ( "h" = (
/obj/structure/alien/weeds, /obj/structure/alien/weeds,
/obj/structure/alien/resin/wall, /obj/structure/alien/resin/wall,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"i" = ( "i" = (
/obj/structure/alien/weeds, /obj/structure/alien/weeds,
/obj/structure/bed/nest, /obj/structure/bed/nest,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"j" = ( "j" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds2" icon_state = "weeds2"
}, },
/mob/living/simple_animal/hostile/alien, /mob/living/simple_animal/hostile/alien,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"k" = ( "k" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds2" icon_state = "weeds2"
}, },
/obj/structure/alien/egg/burst, /obj/structure/alien/egg/burst,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"l" = ( "l" = (
/obj/structure/alien/weeds/node, /obj/structure/alien/weeds/node,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"m" = ( "m" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds1" icon_state = "weeds1"
}, },
/obj/structure/bed/nest, /obj/structure/bed/nest,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"n" = ( "n" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds2" icon_state = "weeds2"
}, },
/obj/structure/bed/nest, /obj/structure/bed/nest,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"o" = ( "o" = (
/obj/structure/alien/weeds, /obj/structure/alien/weeds,
/obj/structure/bed/nest, /obj/structure/bed/nest,
@@ -198,43 +94,19 @@
}, },
/obj/item/weapon/gun/ballistic/automatic/pistol, /obj/item/weapon/gun/ballistic/automatic/pistol,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"p" = ( "p" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds1" icon_state = "weeds1"
}, },
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"q" = ( "q" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds2" icon_state = "weeds2"
}, },
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"r" = ( "r" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds1" icon_state = "weeds1"
@@ -242,112 +114,48 @@
/obj/structure/alien/resin/wall, /obj/structure/alien/resin/wall,
/obj/structure/alien/resin/wall, /obj/structure/alien/resin/wall,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"s" = ( "s" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds2" icon_state = "weeds2"
}, },
/obj/structure/alien/egg, /obj/structure/alien/egg,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"t" = ( "t" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds2" icon_state = "weeds2"
}, },
/mob/living/simple_animal/hostile/alien/sentinel, /mob/living/simple_animal/hostile/alien/sentinel,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"u" = ( "u" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds1" icon_state = "weeds1"
}, },
/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"v" = ( "v" = (
/obj/structure/alien/weeds/node, /obj/structure/alien/weeds/node,
/obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/blood,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"w" = ( "w" = (
/obj/structure/alien/weeds, /obj/structure/alien/weeds,
/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"x" = ( "x" = (
/obj/structure/alien/weeds, /obj/structure/alien/weeds,
/obj/structure/alien/egg/burst, /obj/structure/alien/egg/burst,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"y" = ( "y" = (
/obj/structure/alien/weeds/node, /obj/structure/alien/weeds/node,
/obj/structure/alien/resin/wall, /obj/structure/alien/resin/wall,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"z" = ( "z" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds1" icon_state = "weeds1"
@@ -364,28 +172,12 @@
/obj/item/weapon/melee/baton/loaded, /obj/item/weapon/melee/baton/loaded,
/obj/item/clothing/head/helmet, /obj/item/clothing/head/helmet,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"A" = ( "A" = (
/obj/structure/alien/weeds, /obj/structure/alien/weeds,
/obj/structure/alien/egg, /obj/structure/alien/egg,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"B" = ( "B" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds1" icon_state = "weeds1"
@@ -393,59 +185,27 @@
/obj/structure/alien/egg/burst, /obj/structure/alien/egg/burst,
/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"C" = ( "C" = (
/obj/structure/alien/weeds, /obj/structure/alien/weeds,
/obj/structure/alien/egg/burst, /obj/structure/alien/egg/burst,
/obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/blood,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"D" = ( "D" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds2" icon_state = "weeds2"
}, },
/obj/effect/decal/cleanable/blood/gibs, /obj/effect/decal/cleanable/blood/gibs,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"E" = ( "E" = (
/obj/structure/alien/weeds, /obj/structure/alien/weeds,
/mob/living/simple_animal/hostile/alien/drone{ /mob/living/simple_animal/hostile/alien/drone{
plants_off = 1 plants_off = 1
}, },
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"F" = ( "F" = (
/obj/structure/alien/weeds, /obj/structure/alien/weeds,
/mob/living/simple_animal/hostile/alien/queen/large{ /mob/living/simple_animal/hostile/alien/queen/large{
@@ -455,15 +215,7 @@
plants_off = 1 plants_off = 1
}, },
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"G" = ( "G" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds1" icon_state = "weeds1"
@@ -472,28 +224,12 @@
plants_off = 1 plants_off = 1
}, },
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"H" = ( "H" = (
/obj/structure/alien/weeds, /obj/structure/alien/weeds,
/obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/blood,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"I" = ( "I" = (
/obj/structure/alien/weeds, /obj/structure/alien/weeds,
/obj/structure/bed/nest, /obj/structure/bed/nest,
@@ -507,56 +243,24 @@
/obj/item/clothing/under/syndicate, /obj/item/clothing/under/syndicate,
/obj/item/clothing/glasses/night, /obj/item/clothing/glasses/night,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"J" = ( "J" = (
/obj/structure/alien/weeds, /obj/structure/alien/weeds,
/mob/living/simple_animal/hostile/alien/sentinel, /mob/living/simple_animal/hostile/alien/sentinel,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"K" = ( "K" = (
/obj/structure/alien/weeds/node, /obj/structure/alien/weeds/node,
/mob/living/simple_animal/hostile/alien, /mob/living/simple_animal/hostile/alien,
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"L" = ( "L" = (
/obj/structure/alien/weeds/node, /obj/structure/alien/weeds/node,
/mob/living/simple_animal/hostile/alien/drone{ /mob/living/simple_animal/hostile/alien/drone{
plants_off = 1 plants_off = 1
}, },
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"M" = ( "M" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds1" icon_state = "weeds1"
@@ -573,15 +277,7 @@
stat = 2 stat = 2
}, },
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"N" = ( "N" = (
/obj/structure/alien/weeds, /obj/structure/alien/weeds,
/obj/structure/alien/resin/wall, /obj/structure/alien/resin/wall,
@@ -590,15 +286,7 @@
"O" = ( "O" = (
/obj/structure/alien/weeds/node, /obj/structure/alien/weeds/node,
/turf/template_noop, /turf/template_noop,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"P" = ( "P" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds2" icon_state = "weeds2"
@@ -615,41 +303,17 @@
plants_off = 1 plants_off = 1
}, },
/turf/open/floor/plating/asteroid/basalt/lava_land_surface, /turf/open/floor/plating/asteroid/basalt/lava_land_surface,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"R" = ( "R" = (
/obj/structure/alien/weeds, /obj/structure/alien/weeds,
/turf/template_noop, /turf/template_noop,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"S" = ( "S" = (
/obj/structure/alien/weeds{ /obj/structure/alien/weeds{
icon_state = "weeds2" icon_state = "weeds2"
}, },
/turf/template_noop, /turf/template_noop,
/area/awaycontent/a5{ /area/ruin/xenonest)
always_unpowered = 1;
has_gravity = 1;
name = "The Hive";
power_environ = 0;
power_equip = 0;
power_light = 0;
poweralm = 0
})
"T" = ( "T" = (
/obj/structure/alien/weeds/node, /obj/structure/alien/weeds/node,
/obj/structure/alien/resin/wall, /obj/structure/alien/resin/wall,
@@ -475,7 +475,7 @@
/area/ruin/derelictoutpost) /area/ruin/derelictoutpost)
"bq" = ( "bq" = (
/obj/effect/mob_spawn/human/corpse/nanotrasensoldier{ /obj/effect/mob_spawn/human/corpse/nanotrasensoldier{
helmet = null; head = null;
id_job = "Tradepost Officer"; id_job = "Tradepost Officer";
name = "Tradeport Officer"; name = "Tradeport Officer";
random = 1 random = 1
+42 -6
View File
@@ -37,6 +37,9 @@
/area/ruin/powered/aesthetic) /area/ruin/powered/aesthetic)
"j" = ( "j" = (
/obj/structure/chair/stool, /obj/structure/chair/stool,
/obj/machinery/light/small{
dir = 1
},
/turf/open/floor/plasteel/vaporwave, /turf/open/floor/plasteel/vaporwave,
/area/ruin/powered/aesthetic) /area/ruin/powered/aesthetic)
"k" = ( "k" = (
@@ -153,10 +156,10 @@
}, },
/area/ruin/unpowered/no_grav) /area/ruin/unpowered/no_grav)
"G" = ( "G" = (
/obj/effect/turf_decal/stripes/asteroid/line,
/turf/open/floor/plating/astplate{ /turf/open/floor/plating/astplate{
initial_gas_mix = "TEMP=2.7" initial_gas_mix = "TEMP=2.7"
}, },
/obj/effect/turf_decal/stripes/asteroid/line,
/area/ruin/unpowered/no_grav) /area/ruin/unpowered/no_grav)
"H" = ( "H" = (
/obj/effect/overlay/palmtree_l, /obj/effect/overlay/palmtree_l,
@@ -196,6 +199,39 @@
/obj/effect/decal/sandeffect, /obj/effect/decal/sandeffect,
/turf/open/floor/plasteel/airless/asteroid, /turf/open/floor/plasteel/airless/asteroid,
/area/ruin/unpowered/no_grav) /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) = {" (1,1,1) = {"
a a
@@ -294,7 +330,7 @@ h
u u
y y
f f
B R
d d
d d
a a
@@ -326,7 +362,7 @@ j
k k
k k
v v
k P
f f
C C
I I
@@ -390,11 +426,11 @@ a
d d
c c
g g
n O
n n
k k
w w
k Q
g g
F F
I I
@@ -430,7 +466,7 @@ p
u u
y y
g g
B S
d d
d d
a a
+1 -1
View File
@@ -163,7 +163,7 @@
/area/awaymission/beach) /area/awaymission/beach)
"aC" = ( "aC" = (
/obj/effect/mob_spawn/human/cook{ /obj/effect/mob_spawn/human/cook{
helmet = null; head = null;
id_access = "Bartender"; id_access = "Bartender";
id_job = "Bartender"; id_job = "Bartender";
suit = /obj/item/clothing/suit/armor/vest; suit = /obj/item/clothing/suit/armor/vest;
+3 -3
View File
@@ -187,7 +187,7 @@
/turf/closed/mineral, /turf/closed/mineral,
/area/awaymission/wwmines) /area/awaymission/wwmines)
"aO" = ( "aO" = (
/obj/effect/mob_spawn/human/syndicatecommando, /obj/effect/mob_spawn/human/corpse/syndicatecommando,
/turf/open/floor/plasteel/cult{ /turf/open/floor/plasteel/cult{
name = "engraved floor"; name = "engraved floor";
tag = "icon-cult" tag = "icon-cult"
@@ -929,7 +929,7 @@
}, },
/area/awaymission/wwgov) /area/awaymission/wwgov)
"dh" = ( "dh" = (
/obj/effect/mob_spawn/human/syndicatecommando{ /obj/effect/mob_spawn/human/corpse/syndicatecommando{
mob_name = "Syndicate Commando" mob_name = "Syndicate Commando"
}, },
/turf/open/floor/carpet, /turf/open/floor/carpet,
@@ -2017,7 +2017,7 @@
}, },
/area/awaymission/wwmines) /area/awaymission/wwmines)
"gy" = ( "gy" = (
/obj/effect/mob_spawn/human/syndicatecommando{ /obj/effect/mob_spawn/human/corpse/syndicatecommando{
mob_name = "Syndicate Commando" mob_name = "Syndicate Commando"
}, },
/turf/open/floor/grass, /turf/open/floor/grass,
-31
View File
@@ -1,31 +0,0 @@
/*
The /tg/ codebase currently requires you to have 11 z-levels of the same size dimensions.
z-level order is important, the order you put them in inside the map config.dm will determine what z level number they are assigned ingame.
Names of z-level do not matter, but order does greatly, for instances such as checking alive status of revheads on z1
current as of 2016/6/2
z1 = station
z2 = centcomm
z5 = mining
Everything else = randomized space
Last space-z level = empty
*/
#define CROSSLINKED 2
#define SELFLOOPING 1
#define UNAFFECTED 0
#define MAIN_STATION "Main Station"
#define CENTCOMM "CentComm"
#define EMPTY_AREA_1 "Empty Area 1"
#define EMPTY_AREA_2 "Empty Area 2"
#define MINING "Mining Asteroid"
#define EMPTY_AREA_3 "Empty Area 3"
#define EMPTY_AREA_4 "Empty Area 4"
#define EMPTY_AREA_5 "Empty Area 5"
#define EMPTY_AREA_6 "Empty Area 6"
#define EMPTY_AREA_7 "Empty Area 7"
#define EMPTY_AREA_8 "Empty Area 8"
#define AWAY_MISSION "Away Mission"
#define AWAY_MISSION_LIST list(AWAY_MISSION = SELFLOOPING)
#define DEFAULT_MAP_TRANSITION_CONFIG list(MAIN_STATION = CROSSLINKED, CENTCOMM = SELFLOOPING, EMPTY_AREA_1 = CROSSLINKED, EMPTY_AREA_2 = CROSSLINKED, MINING = SELFLOOPING, EMPTY_AREA_3 = CROSSLINKED, EMPTY_AREA_4 = CROSSLINKED, EMPTY_AREA_5 = CROSSLINKED, EMPTY_AREA_6 = CROSSLINKED, EMPTY_AREA_7 = CROSSLINKED, EMPTY_AREA_8 = CROSSLINKED)
+2 -2
View File
@@ -1,10 +1,10 @@
#ifndef ALL_MAPS #ifndef ALL_MAPS
#include "map_files\generic\SpaceStation.dmm"
#include "map_files\generic\Centcomm.dmm" #include "map_files\generic\Centcomm.dmm"
#include "map_files\generic\SpaceStation.dmm"
#include "map_files\generic\Space.dmm" #include "map_files\generic\Space.dmm"
#include "map_files\generic\SpaceDock.dmm" #include "map_files\generic\SpaceDock.dmm"
#include "map_files\Mining\lavaland.dmm" #include "map_files\Mining\Lavaland.dmm"
#else #else
-21
View File
@@ -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
@@ -0,0 +1,12 @@
diff a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm (rejected hunks)
@@ -20207,9 +20151,7 @@
/area/shuttle/syndicate)
"aTq" = (
/turf/closed/wall,
-/area/security/vacantoffice{
- name = "Vacant Office A"
- })
+/area/security/vacantoffice/a)
"aTr" = (
/obj/machinery/door/firedoor,
/obj/machinery/status_display{
-3
View File
@@ -1,3 +0,0 @@
"a" = ()
(1,1,1, 1,1,1) = {""}
+179 -19
View File
@@ -123,6 +123,7 @@
}, },
/area/shuttle/escape) /area/shuttle/escape)
"aw" = ( "aw" = (
/obj/machinery/light,
/turf/open/floor/plasteel/darkblue/side, /turf/open/floor/plasteel/darkblue/side,
/area/shuttle/escape) /area/shuttle/escape)
"ax" = ( "ax" = (
@@ -168,6 +169,10 @@
"aE" = ( "aE" = (
/obj/structure/table/reinforced, /obj/structure/table/reinforced,
/obj/item/weapon/defibrillator/loaded, /obj/item/weapon/defibrillator/loaded,
/obj/machinery/light{
dir = 4;
icon_state = "tube1"
},
/turf/open/floor/plasteel/darkpurple/side{ /turf/open/floor/plasteel/darkpurple/side{
dir = 4 dir = 4
}, },
@@ -216,6 +221,9 @@
id = "shuttleflash"; id = "shuttleflash";
pixel_y = -23 pixel_y = -23
}, },
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel/darkblue/side{ /turf/open/floor/plasteel/darkblue/side{
tag = "icon-darkblue (NORTH)"; tag = "icon-darkblue (NORTH)";
dir = 1 dir = 1
@@ -232,6 +240,9 @@
}, },
/area/shuttle/escape) /area/shuttle/escape)
"aM" = ( "aM" = (
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel/darkblue/side{ /turf/open/floor/plasteel/darkblue/side{
tag = "icon-darkblue (NORTH)"; tag = "icon-darkblue (NORTH)";
dir = 1 dir = 1
@@ -412,6 +423,9 @@
pixel_y = 9 pixel_y = 9
}, },
/obj/structure/closet/crate/internals, /obj/structure/closet/crate/internals,
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel/darkyellow/side{ /turf/open/floor/plasteel/darkyellow/side{
tag = "icon-darkyellow (NORTHEAST)"; tag = "icon-darkyellow (NORTHEAST)";
icon_state = "darkyellow"; icon_state = "darkyellow";
@@ -516,6 +530,9 @@
pixel_y = 8 pixel_y = 8
}, },
/obj/structure/table/reinforced, /obj/structure/table/reinforced,
/obj/machinery/light{
dir = 8
},
/turf/open/floor/plasteel/darkpurple/side{ /turf/open/floor/plasteel/darkpurple/side{
dir = 8 dir = 8
}, },
@@ -918,6 +935,9 @@
/area/shuttle/escape) /area/shuttle/escape)
"ch" = ( "ch" = (
/obj/structure/reagent_dispensers/fueltank, /obj/structure/reagent_dispensers/fueltank,
/obj/machinery/light{
dir = 8
},
/turf/open/floor/plasteel/darkgreen/side{ /turf/open/floor/plasteel/darkgreen/side{
dir = 9; dir = 9;
icon_state = "darkgreen"; icon_state = "darkgreen";
@@ -926,6 +946,10 @@
/area/shuttle/escape) /area/shuttle/escape)
"ci" = ( "ci" = (
/obj/structure/reagent_dispensers/watertank, /obj/structure/reagent_dispensers/watertank,
/obj/machinery/light{
dir = 4;
icon_state = "tube1"
},
/turf/open/floor/plasteel/darkgreen/side{ /turf/open/floor/plasteel/darkgreen/side{
dir = 5 dir = 5
}, },
@@ -1040,9 +1064,9 @@
name = "Bridge Blast Shutters"; name = "Bridge Blast Shutters";
pixel_x = 0; pixel_x = 0;
pixel_y = -26; pixel_y = -26;
req_access_txt = "150"; req_access_txt = "19"
pixel_x = 0
}, },
/obj/machinery/light,
/turf/open/floor/plasteel/darkblue/side, /turf/open/floor/plasteel/darkblue/side,
/area/shuttle/escape) /area/shuttle/escape)
"cA" = ( "cA" = (
@@ -1482,10 +1506,146 @@
pixel_x = 24; pixel_x = 24;
pixel_y = 0 pixel_y = 0
}, },
/obj/machinery/light{
dir = 4;
icon_state = "tube1"
},
/turf/open/floor/plasteel/darkgreen/side{ /turf/open/floor/plasteel/darkgreen/side{
dir = 4 dir = 4
}, },
/area/shuttle/escape) /area/shuttle/escape)
"eC" = (
/obj/machinery/light{
dir = 4;
icon_state = "tube1"
},
/turf/open/floor/plasteel/darkpurple/side{
dir = 4
},
/area/shuttle/escape)
"eD" = (
/obj/machinery/light{
dir = 8
},
/turf/open/floor/mineral/plastitanium/brig{
dir = 8;
floor_tile = /obj/item/stack/tile/plasteel;
icon_state = "darkred"
},
/area/shuttle/escape)
"eE" = (
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel/darkgreen/side{
tag = "icon-darkgreen (NORTH)";
icon_state = "darkgreen";
dir = 1
},
/area/shuttle/escape)
"eF" = (
/obj/machinery/light{
dir = 8
},
/turf/open/floor/plasteel/darkgreen/side{
dir = 8
},
/area/shuttle/escape)
"eG" = (
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel/darkgreen/side{
tag = "icon-darkgreen (NORTH)";
icon_state = "darkgreen";
dir = 1
},
/area/shuttle/escape)
"eH" = (
/obj/machinery/light,
/turf/open/floor/plasteel/darkgreen/side,
/area/shuttle/escape)
"eI" = (
/obj/machinery/light,
/turf/open/floor/plasteel/darkgreen/side,
/area/shuttle/escape)
"eJ" = (
/obj/machinery/button/flasher{
id = "cockpit_flasher";
pixel_x = 6;
pixel_y = -24
},
/obj/machinery/light,
/turf/open/floor/mineral/titanium/blue,
/area/space)
"eK" = (
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel/darkgreen/side{
tag = "icon-darkgreen (NORTH)";
icon_state = "darkgreen";
dir = 1
},
/area/shuttle/escape)
"eL" = (
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel/darkgreen/side{
tag = "icon-darkgreen (NORTH)";
icon_state = "darkgreen";
dir = 1
},
/area/shuttle/escape)
"eM" = (
/obj/machinery/light{
dir = 1
},
/turf/open/floor/plasteel/darkgreen/side{
tag = "icon-darkgreen (NORTH)";
icon_state = "darkgreen";
dir = 1
},
/area/shuttle/escape)
"eN" = (
/obj/machinery/light{
dir = 4;
icon_state = "tube1"
},
/turf/open/floor/plasteel/darkgreen/side{
dir = 4
},
/area/shuttle/escape)
"eO" = (
/obj/machinery/light{
dir = 8
},
/turf/open/floor/plasteel/darkgreen/side{
dir = 8
},
/area/shuttle/escape)
"eP" = (
/obj/machinery/light,
/turf/open/floor/plasteel/darkgreen/side,
/area/shuttle/escape)
"eQ" = (
/obj/machinery/light{
dir = 4;
icon_state = "tube1"
},
/turf/open/floor/plasteel/darkgreen/side{
dir = 4
},
/area/shuttle/escape)
"eR" = (
/obj/machinery/light,
/turf/open/floor/plasteel/darkgreen/side,
/area/shuttle/escape)
"eS" = (
/obj/machinery/light,
/turf/open/floor/plasteel/darkgreen/side,
/area/shuttle/escape)
(1,1,1) = {" (1,1,1) = {"
aa aa
@@ -1531,7 +1691,7 @@ cs
ar ar
aW aW
bc bc
bc eD
bc bc
bc bc
bc bc
@@ -1545,7 +1705,7 @@ cu
bF bF
be be
be be
be eO
be be
be be
cd cd
@@ -1604,19 +1764,19 @@ cu
cu cu
cs cs
ar ar
br eG
aC aC
bz eH
ar ar
bT bT
bo bo
br eK
bZ bZ
ca ca
aC aC
bZ bZ
ca ca
bz eR
ab ab
ch ch
ar ar
@@ -1636,7 +1796,7 @@ be
be be
be be
be be
be eF
be be
bG bG
aC aC
@@ -1712,13 +1872,13 @@ bP
ar ar
bU bU
bo bo
br eL
bZ bZ
ca ca
aC aC
bZ bZ
ca ca
bz eS
ab ab
ci ci
ar ar
@@ -1742,7 +1902,7 @@ bz
cs cs
bH bH
bG bG
bz eI
cs cs
cs cs
cs cs
@@ -1771,7 +1931,7 @@ bb
bf bf
bk bk
cs cs
br eE
bz bz
cs cs
bI bI
@@ -1884,9 +2044,9 @@ aa
cs cs
cs cs
cs cs
br eM
aC aC
bz eP
cs cs
cs cs
cs cs
@@ -1946,7 +2106,7 @@ bB
cu cu
ad ad
ad ad
ad eJ
ad ad
cu cu
br br
@@ -2004,7 +2164,7 @@ ar
aE aE
aI aI
aO aO
aV eC
aV aV
bi bi
bm bm
@@ -2020,9 +2180,9 @@ cs
bW bW
aZ aZ
aZ aZ
eN
aZ aZ
aZ eQ
aZ
aZ aZ
aZ aZ
ce ce
+1
View File
@@ -23,6 +23,7 @@
#define WACKY "Wacky" #define WACKY "Wacky"
#define MUT_MUTE "Mute" #define MUT_MUTE "Mute"
#define SMILE "Smile" #define SMILE "Smile"
#define STONER "Stoner"
#define UNINTELLIGABLE "Unintelligable" #define UNINTELLIGABLE "Unintelligable"
#define SWEDISH "Swedish" #define SWEDISH "Swedish"
#define CHAV "Chav" #define CHAV "Chav"
+2
View File
@@ -14,6 +14,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
#define NOBLUDGEON 4 // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby() #define NOBLUDGEON 4 // when an item has this it produces no "X has been hit by Y with Z" message in the default attackby()
#define MASKINTERNALS 8 // mask allows internals #define MASKINTERNALS 8 // mask allows internals
#define HEAR 16 // This flag is what recursive_hear_check() uses to determine wether to add an item to the hearer list or not. #define HEAR 16 // This flag is what recursive_hear_check() uses to determine wether to add an item to the hearer list or not.
#define CHECK_RICOCHET 32 // Projectiels will check ricochet on things impacted that have this.
#define CONDUCT 64 // conducts electricity (metal etc.) #define CONDUCT 64 // conducts electricity (metal etc.)
#define ABSTRACT 128 // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way #define ABSTRACT 128 // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way
#define NODECONSTRUCT 128 // For machines and structures that should not break into parts, eg, holodeck stuff #define NODECONSTRUCT 128 // For machines and structures that should not break into parts, eg, holodeck stuff
@@ -57,6 +58,7 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204
#define UNUSED_TRANSIT_TURF 2 #define UNUSED_TRANSIT_TURF 2
#define CAN_BE_DIRTY 4 //If a turf can be made dirty at roundstart. This is also used in areas. #define CAN_BE_DIRTY 4 //If a turf can be made dirty at roundstart. This is also used in areas.
#define NO_DEATHRATTLE 16 // Do not notify deadchat about any deaths that occur on this turf. #define NO_DEATHRATTLE 16 // Do not notify deadchat about any deaths that occur on this turf.
//#define CHECK_RICOCHET 32 //Same thing as atom flag.
/* /*
These defines are used specifically with the atom/pass_flags bitmask These defines are used specifically with the atom/pass_flags bitmask
+2
View File
@@ -51,8 +51,10 @@
#define LIGHT_COLOR_GREEN "#64C864" //Bright but quickly dissipating neon green. rgb(100, 200, 100) #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_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_CYAN "#7DE1E1" //Diluted cyan. rgb(125, 225, 225)
#define LIGHT_COLOR_LIGHT_CYAN "#40CEFF" //More-saturated cyan. rgb(64, 206, 255) #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_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_YELLOW "#E1E17D" //Dimmed yellow, leaning kaki. rgb(225, 225, 125)
#define LIGHT_COLOR_BROWN "#966432" //Clear brown, mostly dim. rgb(150, 100, 50) #define LIGHT_COLOR_BROWN "#966432" //Clear brown, mostly dim. rgb(150, 100, 50)
+18
View File
@@ -0,0 +1,18 @@
//Investigate logging defines
#define INVESTIGATE_ATMOS "atmos"
#define INVESTIGATE_BOTANY "botany"
#define INVESTIGATE_CARGO "cargo"
#define INVESTIGATE_EXPERIMENTOR "experimentor"
#define INVESTIGATE_GRAVITY "gravity"
#define INVESTIGATE_RECORDS "records"
#define INVESTIGATE_SINGULO "singulo"
#define INVESTIGATE_SUPERMATTER "supermatter"
#define INVESTIGATE_TELESCI "telesci"
#define INVESTIGATE_WIRES "wires"
//Individual logging defines
#define INDIVIDUAL_ATTACK_LOG "Attack log"
#define INDIVIDUAL_SAY_LOG "Say log"
#define INDIVIDUAL_EMOTE_LOG "Emote log"
#define INDIVIDUAL_OOC_LOG "OOC log"
#define INDIVIDUAL_SHOW_ALL_LOG "All logs"
+2 -2
View File
@@ -34,8 +34,8 @@ Last space-z level = empty
#define MAP_REMOVE_JOB(jobpath) /datum/job/##jobpath/map_check() { return (SSmapping.config.map_name != JOB_MODIFICATION_MAP_NAME) && ..() } #define MAP_REMOVE_JOB(jobpath) /datum/job/##jobpath/map_check() { return (SSmapping.config.map_name != JOB_MODIFICATION_MAP_NAME) && ..() }
//zlevel defines, can be overridden for different maps in the appropriate _maps file. //zlevel defines, can be overridden for different maps in the appropriate _maps file.
#define ZLEVEL_STATION 1 #define ZLEVEL_CENTCOM 1
#define ZLEVEL_CENTCOM 2 #define ZLEVEL_STATION 2
#define ZLEVEL_MINING 5 #define ZLEVEL_MINING 5
#define ZLEVEL_LAVALAND 5 #define ZLEVEL_LAVALAND 5
#define ZLEVEL_EMPTY_SPACE 11 #define ZLEVEL_EMPTY_SPACE 11
+19
View File
@@ -4,6 +4,19 @@
// #define EAST 4 // #define EAST 4
// #define WEST 8 // #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 #define MIDNIGHT_ROLLOVER 864000 //number of deciseconds in a day
@@ -411,3 +424,9 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE
#define NO_FIELD 0 #define NO_FIELD 0
#define FIELD_TURF 1 #define FIELD_TURF 1
#define FIELD_EDGE 2 #define FIELD_EDGE 2
//gibtonite state defines
#define GIBTONITE_UNSTRUCK 0
#define GIBTONITE_ACTIVE 1
#define GIBTONITE_STABLE 2
#define GIBTONITE_DETONATE 3
+5 -7
View File
@@ -114,13 +114,6 @@
#define SNPC_MARTYR 3 #define SNPC_MARTYR 3
#define SNPC_PSYCHO 4 #define SNPC_PSYCHO 4
//Individual logging defines
#define INDIVIDUAL_ATTACK_LOG "Attack log"
#define INDIVIDUAL_SAY_LOG "Say log"
#define INDIVIDUAL_EMOTE_LOG "Emote log"
#define INDIVIDUAL_OOC_LOG "OOC log"
#define INDIVIDUAL_SHOW_ALL_LOG "All logs"
#define TK_MAXRANGE 15 #define TK_MAXRANGE 15
#define NO_SLIP_WHEN_WALKING 1 #define NO_SLIP_WHEN_WALKING 1
@@ -131,3 +124,8 @@
#define MAX_CHICKENS 50 #define MAX_CHICKENS 50
#define UNHEALING_EAR_DAMAGE 100 #define UNHEALING_EAR_DAMAGE 100
#define INCORPOREAL_MOVE_BASIC 1
#define INCORPOREAL_MOVE_SHADOW 2 // leaves a trail of shadows
#define INCORPOREAL_MOVE_JAUNT 3 // is blocked by holy water/salt
+2 -1
View File
@@ -39,6 +39,7 @@
// Subsystem init_order, from highest priority to lowest priority // Subsystem init_order, from highest priority to lowest priority
// Subsystems shutdown in the reverse of the order they initialize in
// The numbers just define the ordering, they are meaningless otherwise. // The numbers just define the ordering, they are meaningless otherwise.
#define INIT_ORDER_SERVER_MAINT 16 #define INIT_ORDER_SERVER_MAINT 16
@@ -71,4 +72,4 @@
#define RUNLEVEL_GAME 4 #define RUNLEVEL_GAME 4
#define RUNLEVEL_POSTGAME 8 #define RUNLEVEL_POSTGAME 8
#define RUNLEVELS_DEFAULT (RUNLEVEL_SETUP | RUNLEVEL_GAME | RUNLEVEL_POSTGAME) #define RUNLEVELS_DEFAULT (RUNLEVEL_SETUP | RUNLEVEL_GAME | RUNLEVEL_POSTGAME)
+2 -2
View File
@@ -3,8 +3,8 @@
#define WIRE_AI "AI Connection" #define WIRE_AI "AI Connection"
#define WIRE_ALARM "Alarm" #define WIRE_ALARM "Alarm"
#define WIRE_AVOIDANCE "Avoidance" #define WIRE_AVOIDANCE "Avoidance"
#define WIRE_BACKUP1 "Auxillary Power 1" #define WIRE_BACKUP1 "Auxiliary Power 1"
#define WIRE_BACKUP2 "Auxillary Power 2" #define WIRE_BACKUP2 "Auxiliary Power 2"
#define WIRE_BEACON "Beacon" #define WIRE_BEACON "Beacon"
#define WIRE_BOLTS "Bolts" #define WIRE_BOLTS "Bolts"
#define WIRE_BOOM "Boom" #define WIRE_BOOM "Boom"
+6 -15
View File
@@ -167,23 +167,14 @@
underlay_appearance.icon = fixed_underlay["icon"] underlay_appearance.icon = fixed_underlay["icon"]
underlay_appearance.icon_state = fixed_underlay["icon_state"] underlay_appearance.icon_state = fixed_underlay["icon_state"]
else else
var/turf/T = get_step(src, turn(adjacencies, 180)) var/turned_adjacency = turn(adjacencies, 180)
if(T && (T.density || T.smooth)) var/turf/T = get_step(src, turned_adjacency)
if(!T.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency))
T = get_step(src, turn(adjacencies, 135)) T = get_step(src, turn(adjacencies, 135))
if(T && (T.density || T.smooth)) if(!T.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency))
T = get_step(src, turn(adjacencies, 225)) T = get_step(src, turn(adjacencies, 225))
//if all else fails, ask our own turf
if(isspaceturf(T) && !istype(T, /turf/open/space/transit)) if(!T.get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency) && !get_smooth_underlay_icon(underlay_appearance, src, turned_adjacency))
underlay_appearance.icon = 'icons/turf/space.dmi'
underlay_appearance.icon_state = SPACE_ICON_STATE
underlay_appearance.plane = PLANE_SPACE
else if(T && !T.density && !T.smooth)
underlay_appearance.icon = T.icon
underlay_appearance.icon_state = T.icon_state
else if(baseturf && !initial(baseturf.density) && !initial(baseturf.smooth))
underlay_appearance.icon = initial(baseturf.icon)
underlay_appearance.icon_state = initial(baseturf.icon_state)
else
underlay_appearance.icon = DEFAULT_UNDERLAY_ICON underlay_appearance.icon = DEFAULT_UNDERLAY_ICON
underlay_appearance.icon_state = DEFAULT_UNDERLAY_ICON_STATE underlay_appearance.icon_state = DEFAULT_UNDERLAY_ICON_STATE
underlays = U underlays = U
+16 -2
View File
@@ -130,6 +130,22 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4,
var/t = round((val - min) / d) var/t = round((val - min) / d)
return val - (t * d) return val - (t * d)
#define NORM_ROT(rot) ((((rot % 360) + (rot - round(rot, 1))) > 0) ? ((rot % 360) + (rot - round(rot, 1))) : (((rot % 360) + (rot - round(rot, 1))) + 360))
/proc/get_angle_of_incidence(face_angle, angle_in, auto_normalize = TRUE)
var/angle_in_s = NORM_ROT(angle_in)
var/face_angle_s = NORM_ROT(face_angle)
var/incidence = face_angle_s - angle_in_s
var/incidence_s = incidence
while(incidence_s < -90)
incidence_s += 180
while(incidence_s > 90)
incidence_s -= 180
if(auto_normalize)
return incidence_s
else
return incidence
//A logarithm that converts an integer to a number scaled between 0 and 1 (can be tweaked to be higher). //A logarithm that converts an integer to a number scaled between 0 and 1 (can be tweaked to be higher).
//Currently, this is used for hydroponics-produce sprite transforming, but could be useful for other transform functions. //Currently, this is used for hydroponics-produce sprite transforming, but could be useful for other transform functions.
@@ -141,8 +157,6 @@ GLOBAL_LIST_INIT(sqrtTable, list(1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4,
return size_factor + scaling_modifier //scale mod of 0 results in a number from 0 to 1. A scale modifier of +0.5 returns 0.5 to 1.5 return size_factor + scaling_modifier //scale mod of 0 results in a number from 0 to 1. A scale modifier of +0.5 returns 0.5 to 1.5
//to_chat(world, "Transform multiplier of [src] is [size_factor + scaling_modifer]") //to_chat(world, "Transform multiplier of [src] is [size_factor + scaling_modifer]")
//converts a uniform distributed random number into a normal distributed one //converts a uniform distributed random number into a normal distributed one
//since this method produces two random numbers, one is saved for subsequent calls //since this method produces two random numbers, one is saved for subsequent calls
//(making the cost negligble for every second call) //(making the cost negligble for every second call)
+8 -7
View File
@@ -1079,18 +1079,17 @@ B --><-- A
return L return L
//similar function to RANGE_TURFS(), but will search spiralling outwards from the center (like the above, but only turfs) //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(!dist)
if(!orange) outlist += center
return list(center) return outlist
else
return list()
var/turf/t_center = get_turf(center) var/turf/t_center = get_turf(center)
if(!t_center) if(!t_center)
return list() return outlist
var/list/L = list() var/list/L = outlist
var/turf/T var/turf/T
var/y var/y
var/x var/x
@@ -1128,6 +1127,8 @@ B --><-- A
if(T) if(T)
L += T L += T
c_dist++ c_dist++
if(tick_checked)
CHECK_TICK
return L return L
+9 -9
View File
@@ -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. // 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(Debug, FALSE) // global debug switch
GLOBAL_VAR_INIT(Debug2, FALSE) 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 //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_DEVESTATION_RANGE, 3)
GLOBAL_VAR_INIT(MAX_EX_HEAVY_RANGE, 7) GLOBAL_VAR_INIT(MAX_EX_HEAVY_RANGE, 7)
GLOBAL_VAR_INIT(MAX_EX_LIGHT_RANGE, 14) GLOBAL_VAR_INIT(MAX_EX_LIGHT_RANGE, 14)
GLOBAL_VAR_INIT(MAX_EX_FLASH_RANGE, 14) GLOBAL_VAR_INIT(MAX_EX_FLASH_RANGE, 14)
GLOBAL_VAR_INIT(MAX_EX_FLAME_RANGE, 14) GLOBAL_VAR_INIT(MAX_EX_FLAME_RANGE, 14)
GLOBAL_VAR_INIT(DYN_EX_SCALE, 0.5) GLOBAL_VAR_INIT(DYN_EX_SCALE, 0.5)
+5 -6
View File
@@ -92,7 +92,7 @@
if(next_move > world.time) // in the year 2000... if(next_move > world.time) // in the year 2000...
return return
if(A.IsObscured()) if(!modifiers["catcher"] && A.IsObscured())
return return
if(istype(loc,/obj/mecha)) if(istype(loc,/obj/mecha))
@@ -119,7 +119,7 @@
//User itself, current loc, and user inventory //User itself, current loc, and user inventory
if(DirectAccess(A)) if(DirectAccess(A))
if(W) if(W)
melee_item_attack_chain(src,W,A,params) W.melee_attack_chain(src, A, params)
else else
if(ismob(A)) if(ismob(A))
changeNext_move(CLICK_CD_MELEE) changeNext_move(CLICK_CD_MELEE)
@@ -133,7 +133,7 @@
//Standard reach turf to turf or reaching inside storage //Standard reach turf to turf or reaching inside storage
if(CanReach(A,W)) if(CanReach(A,W))
if(W) if(W)
melee_item_attack_chain(src,W,A,params) W.melee_attack_chain(src, A, params)
else else
if(ismob(A)) if(ismob(A))
changeNext_move(CLICK_CD_MELEE) changeNext_move(CLICK_CD_MELEE)
@@ -325,8 +325,6 @@
/mob/living/carbon/human/CtrlClick(mob/user) /mob/living/carbon/human/CtrlClick(mob/user)
if(ishuman(user) && Adjacent(user)) if(ishuman(user) && Adjacent(user))
if(world.time < user.next_move)
return FALSE
var/mob/living/carbon/human/H = user var/mob/living/carbon/human/H = user
H.dna.species.grab(H, src, H.mind.martial_art) H.dna.species.grab(H, src, H.mind.martial_art)
H.changeNext_move(CLICK_CD_MELEE) H.changeNext_move(CLICK_CD_MELEE)
@@ -448,6 +446,7 @@
C.swap_hand() C.swap_hand()
else else
var/turf/T = params2turf(modifiers["screen-loc"], get_turf(usr)) var/turf/T = params2turf(modifiers["screen-loc"], get_turf(usr))
params += "&catcher=1"
if(T) if(T)
T.Click(location, control, params) T.Click(location, control, params)
. = 1 . = 1
@@ -466,4 +465,4 @@
view = -1 view = -1
else else
view = 1 view = 1
add_view_range(view) add_view_range(view)
+2 -2
View File
@@ -71,7 +71,7 @@
// cyborgs are prohibited from using storage items so we can I think safely remove (A.loc in contents) // cyborgs are prohibited from using storage items so we can I think safely remove (A.loc in contents)
if(A == loc || (A in loc) || (A in contents)) if(A == loc || (A in loc) || (A in contents))
melee_item_attack_chain(src, W, A, params) W.melee_attack_chain(src, A, params)
return return
if(!isturf(loc)) if(!isturf(loc))
@@ -80,7 +80,7 @@
// cyborgs are prohibited from using storage items so we can I think safely remove (A.loc && isturf(A.loc.loc)) // cyborgs are prohibited from using storage items so we can I think safely remove (A.loc && isturf(A.loc.loc))
if(isturf(A) || isturf(A.loc)) if(isturf(A) || isturf(A.loc))
if(A.Adjacent(src)) // see adjacent.dm if(A.Adjacent(src)) // see adjacent.dm
melee_item_attack_chain(src, W, A, params) W.melee_attack_chain(src, A, params)
return return
else else
W.afterattack(A, src, 0, params) W.afterattack(A, src, 0, params)
+1 -2
View File
@@ -271,8 +271,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion."
/obj/screen/alert/bloodsense/Initialize() /obj/screen/alert/bloodsense/Initialize()
. = ..() . = ..()
if(!narnar) narnar = new('icons/mob/screen_alert.dmi', "mini_nar")
narnar = new('icons/mob/screen_alert.dmi', "mini_nar")
START_PROCESSING(SSprocessing, src) START_PROCESSING(SSprocessing, src)
/obj/screen/alert/bloodsense/Destroy() /obj/screen/alert/bloodsense/Destroy()
+5 -5
View File
@@ -1,10 +1,10 @@
/proc/melee_item_attack_chain(mob/user, obj/item/I, atom/target, params) /obj/item/proc/melee_attack_chain(mob/user, atom/target, params)
if(I.pre_attackby(target, user, params)) if(pre_attackby(target, user, params))
// Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example) // Return 1 in attackby() to prevent afterattack() effects (when safely moving items for example)
var/resolved = target.attackby(I,user,params) var/resolved = target.attackby(src, user, params)
if(!resolved && target && I) if(!resolved && target && !QDELETED(src))
I.afterattack(target, user, 1, params) // 1: clicking something Adjacent afterattack(target, user, 1, params) // 1: clicking something Adjacent
// Called when the item is in the active hand, and clicked; alternately, there is an 'activate held object' verb or you can hit pagedown. // Called when the item is in the active hand, and clicked; alternately, there is an 'activate held object' verb or you can hit pagedown.
+2 -1
View File
@@ -124,7 +124,8 @@
if(!isturf(target) && istype(focus,/obj/item) && target.Adjacent(focus)) if(!isturf(target) && istype(focus,/obj/item) && target.Adjacent(focus))
apply_focus_overlay() apply_focus_overlay()
melee_item_attack_chain(tk_user, focus, target, params) //isn't copying the attack chain fun. we should do it more often. var/obj/item/I = focus
I.melee_attack_chain(tk_user, target, params) //isn't copying the attack chain fun. we should do it more often.
if(check_if_focusable(focus)) if(check_if_focusable(focus))
focus.do_attack_animation(target, null, focus) focus.do_attack_animation(target, null, focus)
else else
+2 -1
View File
@@ -177,7 +177,8 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
to_chat(world, "<span class='boldannounce'>[msg]</span>") to_chat(world, "<span class='boldannounce'>[msg]</span>")
log_world(msg) log_world(msg)
SetRunLevel(1) if (!current_runlevel)
SetRunLevel(1)
// Sort subsystems by display setting for easy access. // Sort subsystems by display setting for easy access.
sortTim(subsystems, /proc/cmp_subsystem_display) sortTim(subsystems, /proc/cmp_subsystem_display)
+4 -5
View File
@@ -1,8 +1,8 @@
SUBSYSTEM_DEF(blackbox) SUBSYSTEM_DEF(blackbox)
name = "Blackbox" name = "Blackbox"
wait = 6000 wait = 6000
flags = SS_NO_TICK_CHECK | SS_NO_INIT flags = SS_NO_TICK_CHECK | SS_NO_INIT
runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME
var/list/msg_common = list() var/list/msg_common = list()
var/list/msg_science = list() var/list/msg_science = list()
@@ -86,12 +86,11 @@ SUBSYSTEM_DEF(blackbox)
if (!SSdbcore.Connect()) if (!SSdbcore.Connect())
return return
var/list/sqlrowlist = list() var/list/sqlrowlist = list()
for (var/datum/feedback_variable/FV in feedback) for (var/datum/feedback_variable/FV in feedback)
sqlrowlist += list("time" = "Now()", "round_id" = GLOB.round_id, "var_name" = "'[sanitizeSQL(FV.get_variable())]'", "var_value" = FV.get_value(), "details" = "'[sanitizeSQL(FV.get_details())]'") sqlrowlist += list(list("time" = "Now()", "round_id" = GLOB.round_id, "var_name" = "'[sanitizeSQL(FV.get_variable())]'", "var_value" = FV.get_value(), "details" = "'[sanitizeSQL(FV.get_details())]'"))
if (!length(sqlrowlist)) if (!length(sqlrowlist))
return return
+2 -1
View File
@@ -23,7 +23,8 @@ SUBSYSTEM_DEF(dbcore)
var/failed_connections = 0 var/failed_connections = 0
/datum/controller/subsystem/dbcore/PreInit() /datum/controller/subsystem/dbcore/PreInit()
_db_con = _dm_db_new_con() if(!_db_con)
_db_con = _dm_db_new_con()
/datum/controller/subsystem/dbcore/Recover() /datum/controller/subsystem/dbcore/Recover()
_db_con = SSdbcore._db_con _db_con = SSdbcore._db_con
+510
View File
@@ -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
+2 -2
View File
@@ -164,8 +164,8 @@ SUBSYSTEM_DEF(garbage)
if (time > highest_del_time) if (time > highest_del_time)
highest_del_time = time highest_del_time = time
if (time > 10) if (time > 10)
log_game("Error: [type]([refID]) took longer then 1 second to delete (took [time/10] seconds to delete)") log_game("Error: [type]([refID]) took longer than 1 second to delete (took [time/10] seconds to delete)")
message_admins("Error: [type]([refID]) took longer then 1 second to delete (took [time/10] seconds to delete).") message_admins("Error: [type]([refID]) took longer than 1 second to delete (took [time/10] seconds to delete).")
postpone(time/5) postpone(time/5)
/datum/controller/subsystem/garbage/proc/HardQueue(datum/A) /datum/controller/subsystem/garbage/proc/HardQueue(datum/A)
+8 -7
View File
@@ -15,14 +15,15 @@ SUBSYSTEM_DEF(lighting)
/datum/controller/subsystem/lighting/Initialize(timeofday) /datum/controller/subsystem/lighting/Initialize(timeofday)
if (config.starlight) if(!initialized)
for(var/I in GLOB.sortedAreas) if (config.starlight)
var/area/A = I for(var/I in GLOB.sortedAreas)
if (A.dynamic_lighting == DYNAMIC_LIGHTING_IFSTARLIGHT) var/area/A = I
A.luminosity = 0 if (A.dynamic_lighting == DYNAMIC_LIGHTING_IFSTARLIGHT)
A.luminosity = 0
create_all_lighting_objects() create_all_lighting_objects()
initialized = TRUE initialized = TRUE
fire(FALSE, TRUE) fire(FALSE, TRUE)
+3 -3
View File
@@ -37,11 +37,11 @@ SUBSYSTEM_DEF(machines)
var/seconds = wait * 0.1 var/seconds = wait * 0.1
while(currentrun.len) while(currentrun.len)
var/datum/thing = currentrun[currentrun.len] var/obj/machinery/thing = currentrun[currentrun.len]
currentrun.len-- currentrun.len--
if(thing && thing.process(seconds) != PROCESS_KILL) if(thing && thing.process(seconds) != PROCESS_KILL)
if(thing:use_power) if(thing.use_power)
thing:auto_use_power() //add back the power state thing.auto_use_power() //add back the power state
else else
processing -= thing processing -= thing
if (thing) if (thing)
+3 -1
View File
@@ -119,7 +119,9 @@ SUBSYSTEM_DEF(mapping)
INIT_ANNOUNCE("Loading [config.map_name]...") INIT_ANNOUNCE("Loading [config.map_name]...")
TryLoadZ(config.GetFullMapPath(), FailedZs, ZLEVEL_STATION) TryLoadZ(config.GetFullMapPath(), FailedZs, ZLEVEL_STATION)
INIT_ANNOUNCE("Loaded station in [(REALTIMEOFDAY - start_time)/10]s!") 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") 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!") INIT_ANNOUNCE("WARNING: A map without lavaland set as it's minetype was loaded! This is being ignored! Update the maploader code!")
+1
View File
@@ -25,6 +25,7 @@ SUBSYSTEM_DEF(shuttle)
var/area/emergencyLastCallLoc var/area/emergencyLastCallLoc
var/emergencyCallAmount = 0 //how many times the escape shuttle was called var/emergencyCallAmount = 0 //how many times the escape shuttle was called
var/emergencyNoEscape var/emergencyNoEscape
var/emergencyNoRecall = FALSE
var/list/hostileEnvironments = list() var/list/hostileEnvironments = list()
//supply shuttle stuff //supply shuttle stuff
+12 -3
View File
@@ -744,6 +744,15 @@ SUBSYSTEM_DEF(ticker)
cinematic = SSticker.cinematic cinematic = SSticker.cinematic
maprotatechecked = SSticker.maprotatechecked maprotatechecked = SSticker.maprotatechecked
switch (current_state)
if(GAME_STATE_SETTING_UP)
Master.SetRunLevel(RUNLEVEL_SETUP)
if(GAME_STATE_PLAYING)
Master.SetRunLevel(RUNLEVEL_GAME)
if(GAME_STATE_FINISHED)
Master.SetRunLevel(RUNLEVEL_POSTGAME)
modevoted = SSticker.modevoted modevoted = SSticker.modevoted
/datum/controller/subsystem/ticker/proc/send_news_report() /datum/controller/subsystem/ticker/proc/send_news_report()
@@ -844,17 +853,17 @@ SUBSYSTEM_DEF(ticker)
if(delay_end) if(delay_end)
to_chat(world, "<span class='boldannounce'>An admin has delayed the round end.</span>") to_chat(world, "<span class='boldannounce'>An admin has delayed the round end.</span>")
return return
to_chat(world, "<span class='boldannounce'>Rebooting World in [delay/10] [(delay >= 10 && delay < 20) ? "second" : "seconds"]. [reason]</span>") to_chat(world, "<span class='boldannounce'>Rebooting World in [delay/10] [(delay >= 10 && delay < 20) ? "second" : "seconds"]. [reason]</span>")
var/start_wait = world.time var/start_wait = world.time
UNTIL(round_end_sound_sent && (world.time - start_wait) > (delay * 2)) //don't wait forever UNTIL(round_end_sound_sent || (world.time - start_wait) > (delay * 2)) //don't wait forever
sleep(delay - (world.time - start_wait)) sleep(delay - (world.time - start_wait))
if(delay_end) if(delay_end)
to_chat(world, "<span class='boldannounce'>Reboot was cancelled by an admin.</span>") to_chat(world, "<span class='boldannounce'>Reboot was cancelled by an admin.</span>")
return return
SSblackbox.set_details("[feedback_c]","[feedback_r]") SSblackbox.set_details("[feedback_c]","[feedback_r]")
log_game("<span class='boldannounce'>Rebooting World. [reason]</span>") log_game("<span class='boldannounce'>Rebooting World. [reason]</span>")
+2 -3
View File
@@ -55,9 +55,8 @@
else if(isbrain(current) || isclockmob(current)) else if(isbrain(current) || isclockmob(current))
to_chat(current, "<span class='nezbere'>You can communicate with other servants by using the Hierophant Network action button in the upper left.</span>") to_chat(current, "<span class='nezbere'>You can communicate with other servants by using the Hierophant Network action button in the upper left.</span>")
..() ..()
if(istype(SSticker.mode, /datum/game_mode/clockwork_cult)) to_chat(current, "<b>This is Ratvar's will:</b> [CLOCKCULT_OBJECTIVE]")
var/datum/game_mode/clockwork_cult/C = SSticker.mode owner.memory += "<b>Ratvar's will:</b> [CLOCKCULT_OBJECTIVE]<br>" //Memorize the objectives
C.present_tasks(owner) //Memorize the objectives
/datum/antagonist/clockcult/apply_innate_effects(mob/living/mob_override) /datum/antagonist/clockcult/apply_innate_effects(mob/living/mob_override)
. = ..() . = ..()
+2 -2
View File
@@ -32,7 +32,7 @@
var/list/symptoms = list() // The symptoms of the disease. var/list/symptoms = list() // The symptoms of the disease.
var/id = "" var/id = ""
var/processing = 0 var/processing = 0
// The order goes from easy to cure to hard to cure. // The order goes from easy to cure to hard to cure.
var/static/list/advance_cures = list( var/static/list/advance_cures = list(
"sodiumchloride", "sugar", "orangejuice", "sodiumchloride", "sugar", "orangejuice",
@@ -399,7 +399,7 @@
AD.Refresh() AD.Refresh()
for(var/mob/living/carbon/human/H in shuffle(GLOB.living_mob_list)) for(var/mob/living/carbon/human/H in shuffle(GLOB.living_mob_list))
if(H.z != 1) if(H.z != ZLEVEL_STATION)
continue continue
if(!H.HasDisease(D)) if(!H.HasDisease(D))
H.ForceContractDisease(D) H.ForceContractDisease(D)
@@ -1,10 +1,48 @@
/proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, flash_range, adminlog = 1, ignorecap = 0, flame_range, silent = 0, smoke = 1) #define EXPLOSION_THROW_SPEED 4
set waitfor = 0
src = null //so we don't abort once src is deleted 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) epicenter = get_turf(epicenter)
if(!epicenter) if(!epicenter)
return return
GLOB.explosions += src
if(isnull(flame_range)) if(isnull(flame_range))
flame_range = light_impact_range flame_range = light_impact_range
if(isnull(flash_range)) if(isnull(flash_range))
@@ -30,14 +68,13 @@
//I would make this not ex_act the thing that triggered the explosion, //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() //but everything that explodes gives us their loc or a get_turf()
//and somethings expect us to ex_act them so they can qdel() //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 EX_PREPROCESS_EXIT_CHECK
var/id = explosionid++
var/start = world.timeofday started_at = REALTIMEOFDAY
var/max_range = max(devastation_range, heavy_impact_range, light_impact_range, flame_range) var/max_range = max(devastation_range, heavy_impact_range, light_impact_range, flame_range)
var/list/cached_exp_block = list()
if(adminlog) 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)]") 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 += heavy_impact_range * 5
far_dist += devastation_range * 20 far_dist += devastation_range * 20
var/x0 = epicenter.x
var/y0 = epicenter.y
var/z0 = epicenter.z
if(!silent) if(!silent)
var/frequency = get_rand_frequency() var/frequency = get_rand_frequency()
var/ex_sound = get_sfx("explosion") var/ex_sound = get_sfx("explosion")
for(var/mob/M in GLOB.player_list) for(var/mob/M in GLOB.player_list)
// Double check for client // Double check for client
if(M && M.client) var/turf/M_turf = get_turf(M)
var/turf/M_turf = get_turf(M) if(M_turf && M_turf.z == z0)
if(M_turf && M_turf.z == epicenter.z) var/dist = get_dist(M_turf, epicenter)
var/dist = get_dist(M_turf, epicenter) // If inside the blast radius + world.view - 2
// If inside the blast radius + world.view - 2 if(dist <= round(max_range + world.view - 2, 1))
if(dist <= round(max_range + world.view - 2, 1)) M.playsound_local(epicenter, ex_sound, 100, 1, frequency, falloff = 5)
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.
// 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)
else if(dist <= far_dist) var/far_volume = Clamp(far_dist, 30, 50) // Volume is based on explosion size and 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
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)
M.playsound_local(epicenter, 'sound/effects/explosionfar.ogg', far_volume, 1, frequency, falloff = 5) EX_PREPROCESS_CHECK_TICK
//postpone processing for a bit //postpone processing for a bit
var/postponeCycles = max(round(devastation_range/8),1) var/postponeCycles = max(round(devastation_range/8),1)
@@ -77,66 +118,52 @@
SSmachines.postpone(postponeCycles) SSmachines.postpone(postponeCycles)
if(heavy_impact_range > 1) if(heavy_impact_range > 1)
var/datum/effect_system/explosion/E
if(smoke) if(smoke)
var/datum/effect_system/explosion/smoke/E = new/datum/effect_system/explosion/smoke() E = new /datum/effect_system/explosion/smoke
E.set_up(epicenter)
E.start()
else else
var/datum/effect_system/explosion/E = new/datum/effect_system/explosion() E = new
E.set_up(epicenter) E.set_up(epicenter)
E.start() E.start()
var/x0 = epicenter.x EX_PREPROCESS_CHECK_TICK
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
//flash mobs //flash mobs
if(flash_range) if(flash_range)
for(var/mob/living/L in viewers(flash_range, epicenter)) for(var/mob/living/L in viewers(flash_range, epicenter))
L.flash_act() 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 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) var/reactionary = config.reactionary_explosions
continue 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/init_dist = cheap_hypotenuse(T.x, T.y, x0, y0)
var/dist = init_dist var/dist = init_dist
if(config.reactionary_explosions) if(reactionary)
var/turf/Trajectory = T var/turf/Trajectory = T
while(Trajectory != epicenter) while(Trajectory != epicenter)
Trajectory = get_step_towards(Trajectory, epicenter) Trajectory = get_step_towards(Trajectory, epicenter)
dist += cached_exp_block[Trajectory] dist += cached_exp_block[Trajectory]
var/flame_dist = 0 var/flame_dist = dist < flame_range
var/throw_dist = dist var/throw_dist = dist
if(dist < flame_range)
flame_dist = 1
if(dist < devastation_range) if(dist < devastation_range)
dist = 1 dist = 1
else if(dist < heavy_impact_range) else if(dist < heavy_impact_range)
@@ -148,27 +175,61 @@
//------- EX_ACT AND TURF FIRES ------- //------- EX_ACT AND TURF FIRES -------
if(T) if(flame_dist && prob(40) && !isspaceturf(T) && !T.density)
if(flame_dist && prob(40) && !isspaceturf(T) && !T.density) new /obj/effect/hotspot(T) //Mostly for ambience!
new /obj/effect/hotspot(T) //Mostly for ambience!
if(dist > 0) if(dist > 0)
T.explosion_level = max(T.explosion_level, dist) //let the bigger one have it T.explosion_level = max(T.explosion_level, dist) //let the bigger one have it
T.explosion_id = id T.explosion_id = id
T.ex_act(dist) T.ex_act(dist)
exploded_this_tick += T exploded_this_tick += T
//--- THROW ITEMS AROUND --- //--- THROW ITEMS AROUND ---
var/throw_dir = get_dir(epicenter,T) var/throw_dir = get_dir(epicenter,T)
for(var/obj/item/I in T) for(var/obj/item/I in T)
if(I && !I.anchored) if(!I.anchored)
var/throw_range = rand(throw_dist, max_range) var/throw_range = rand(throw_dist, max_range)
var/turf/throw_at = get_ranged_target_turf(I, throw_dir, throw_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_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, I.throw_speed) 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() 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 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 if(exploded_this_tick.len > circumference) //only do this every revolution
for(var/Unexplode in exploded_this_tick) for(var/Unexplode in exploded_this_tick)
@@ -182,24 +243,67 @@
UnexplodeT.explosion_level = 0 UnexplodeT.explosion_level = 0
exploded_this_tick.Cut() exploded_this_tick.Cut()
var/took = (world.timeofday-start)/10 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
//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) if(GLOB.Debug2)
log_world("## DEBUG: Explosion([x0],[y0],[z0])(d[devastation_range],h[heavy_impact_range],l[light_impact_range]): Took [took] seconds.") 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. if(!stopped) //if we aren't in a hurry
for(var/array in GLOB.doppler_arrays) //Machines which report explosions.
var/obj/machinery/doppler_array/A = array for(var/array in GLOB.doppler_arrays)
A.sense_explosion(epicenter,devastation_range,heavy_impact_range,light_impact_range,took,orig_dev_range,orig_heavy_range,orig_light_range) 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) /datum/explosion/proc/CaculateExplosionBlock(list/affected_turfs)
for(var/turf/tile in spiral_range_turfs(range, epicenter)) set waitfor = FALSE
tile.ex_act(2)
. = 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() /client/proc/check_bomb_impacts()
set name = "Check Bomb Impact" set name = "Check Bomb Impact"
+17 -14
View File
@@ -1,34 +1,37 @@
/datum/getrev /datum/getrev
var/parentcommit var/originmastercommit
var/commit var/commit
var/list/testmerge = list() var/list/testmerge = list()
var/has_pr_details = FALSE //example data in a testmerge entry when this is true: https://api.github.com/repositories/3234987/pulls/22586 var/has_pr_details = FALSE //example data in a testmerge entry when this is true: https://api.github.com/repositories/3234987/pulls/22586
var/date var/date
/datum/getrev/New() /datum/getrev/New()
var/head_file = file2text(".git/logs/HEAD")
if(SERVERTOOLS && fexists("..\\prtestjob.lk")) if(SERVERTOOLS && fexists("..\\prtestjob.lk"))
var/list/tmp = world.file2list("..\\prtestjob.lk") var/list/tmp = world.file2list("..\\prtestjob.lk")
for(var/I in tmp) for(var/I in tmp)
if(I) if(I)
testmerge |= I testmerge |= I
var/testlen = max(testmerge.len - 1, 0)
var/regex/head_log = new("(\\w{40}) .+> (\\d{10}).+(?=(\n.*(\\w{40}).*){[testlen]}\n*\\Z)")
head_log.Find(head_file)
parentcommit = head_log.group[1]
date = unix2date(text2num(head_log.group[2]))
commit = head_log.group[4]
log_world("Running /tg/ revision:") log_world("Running /tg/ revision:")
log_world("[date]") var/list/logs = world.file2list(".git/logs/HEAD")
if(logs)
logs = splittext(logs[logs.len - 1], " ")
date = unix2date(text2num(logs[5]))
commit = logs[2]
log_world("[date]")
logs = world.file2list(".git/logs/refs/remotes/origin/master")
if(logs)
originmastercommit = splittext(logs[logs.len - 1], " ")[2]
if(testmerge.len) if(testmerge.len)
log_world(commit) log_world(commit)
for(var/line in testmerge) for(var/line in testmerge)
if(line) if(line)
log_world("Test merge active of PR #[line]") log_world("Test merge active of PR #[line]")
SSblackbox.add_details("testmerged_prs","[line]") SSblackbox.add_details("testmerged_prs","[line]")
log_world("Based off master commit [parentcommit]") log_world("Based off origin/master commit [originmastercommit]")
else else
log_world(parentcommit) log_world(originmastercommit)
/datum/getrev/proc/DownloadPRDetails() /datum/getrev/proc/DownloadPRDetails()
if(!config.githubrepoid) if(!config.githubrepoid)
@@ -73,13 +76,13 @@
set name = "Show Server Revision" set name = "Show Server Revision"
set desc = "Check the current server code revision" set desc = "Check the current server code revision"
if(GLOB.revdata.parentcommit) if(GLOB.revdata.originmastercommit)
to_chat(src, "<b>Server revision compiled on:</b> [GLOB.revdata.date]") to_chat(src, "<b>Server revision compiled on:</b> [GLOB.revdata.date]")
var/prefix = "" var/prefix = ""
if(GLOB.revdata.testmerge.len) if(GLOB.revdata.testmerge.len)
to_chat(src, GLOB.revdata.GetTestMergeInfo()) to_chat(src, GLOB.revdata.GetTestMergeInfo())
prefix = "Based off master commit: " prefix = "Based off origin/master commit: "
var/pc = GLOB.revdata.parentcommit var/pc = GLOB.revdata.originmastercommit
to_chat(src, "[prefix]<a href='[config.githuburl]/commit/[pc]'>[copytext(pc, 1, min(length(pc), 7))]</a>") to_chat(src, "[prefix]<a href='[config.githuburl]/commit/[pc]'>[copytext(pc, 1, min(length(pc), 7))]</a>")
else else
to_chat(src, "Revision unknown") to_chat(src, "Revision unknown")
+4 -3
View File
@@ -44,11 +44,12 @@
//cleans up ALL references :) //cleans up ALL references :)
/datum/holocall/Destroy() /datum/holocall/Destroy()
user.reset_perspective() user.reset_perspective()
if(user.client) if(!QDELETED(eye) && user.client)
for(var/datum/camerachunk/chunk in eye.visibleCameraChunks) for(var/datum/camerachunk/chunk in eye.visibleCameraChunks)
user.client.images -= chunk.obscured chunk.remove(eye)
qdel(eye)
eye = null
user.remote_control = null user.remote_control = null
QDEL_NULL(eye)
user = null user = null
if(hologram) if(hologram)
+2 -2
View File
@@ -11,8 +11,8 @@
var/minetype = "lavaland" var/minetype = "lavaland"
var/list/transition_config = list(MAIN_STATION = CROSSLINKED, var/list/transition_config = list(CENTCOMM = SELFLOOPING,
CENTCOMM = SELFLOOPING, MAIN_STATION = CROSSLINKED,
EMPTY_AREA_1 = CROSSLINKED, EMPTY_AREA_1 = CROSSLINKED,
EMPTY_AREA_2 = CROSSLINKED, EMPTY_AREA_2 = CROSSLINKED,
MINING = SELFLOOPING, MINING = SELFLOOPING,
+17
View File
@@ -608,6 +608,23 @@ GLOBAL_LIST_EMPTY(mutations_list)
message = replacetext(message," muh valids "," getting my kicks ") message = replacetext(message," muh valids "," getting my kicks ")
return trim(message) return trim(message)
/datum/mutation/human/stoner
name = "Stoner"
quality = NEGATIVE
dna_block = NON_SCANNABLE
text_gain_indication = "<span class='notice'>You feel...totally chill, man!</span>"
text_lose_indication = "<span class='notice'>You feel like you have a better sense of time.</span>"
/datum/mutation/human/stoner/on_acquiring(mob/living/carbon/human/owner)
..()
owner.grant_language(/datum/language/beachbum)
owner.remove_language(/datum/language/common)
/datum/mutation/human/stoner/on_losing(mob/living/carbon/human/owner)
..()
owner.grant_language(/datum/language/common)
owner.remove_language(/datum/language/beachbum)
/datum/mutation/human/laser_eyes /datum/mutation/human/laser_eyes
name = "Laser Eyes" name = "Laser Eyes"
quality = POSITIVE quality = POSITIVE
+11 -6
View File
@@ -20,7 +20,8 @@
var/r_hand = null var/r_hand = null
var/l_hand = null var/l_hand = null
var/internals_slot = null //ID of slot containing a gas tank var/internals_slot = null //ID of slot containing a gas tank
var/list/backpack_contents = list() // In the list(path=count,otherpath=count) format var/list/backpack_contents = null // In the list(path=count,otherpath=count) format
var/list/implants = null
/datum/outfit/proc/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE) /datum/outfit/proc/pre_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
//to be overriden for customization depending on client prefs,species etc //to be overriden for customization depending on client prefs,species etc
@@ -71,11 +72,11 @@
H.equip_to_slot_or_del(new l_pocket(H),slot_l_store) H.equip_to_slot_or_del(new l_pocket(H),slot_l_store)
if(r_pocket) if(r_pocket)
H.equip_to_slot_or_del(new r_pocket(H),slot_r_store) H.equip_to_slot_or_del(new r_pocket(H),slot_r_store)
if(backpack_contents)
for(var/path in backpack_contents) for(var/path in backpack_contents)
var/number = backpack_contents[path] var/number = backpack_contents[path]
for(var/i=0,i<number,i++) for(var/i=0,i<number,i++)
H.equip_to_slot_or_del(new path(H),slot_in_backpack) H.equip_to_slot_or_del(new path(H),slot_in_backpack)
if(!H.head && toggle_helmet && istype(H.wear_suit, /obj/item/clothing/suit/space/hardsuit)) if(!H.head && toggle_helmet && istype(H.wear_suit, /obj/item/clothing/suit/space/hardsuit))
var/obj/item/clothing/suit/space/hardsuit/HS = H.wear_suit var/obj/item/clothing/suit/space/hardsuit/HS = H.wear_suit
@@ -88,6 +89,10 @@
if(internals_slot) if(internals_slot)
H.internal = H.get_item_by_slot(internals_slot) H.internal = H.get_item_by_slot(internals_slot)
H.update_action_buttons_icon() H.update_action_buttons_icon()
if(implants)
for(var/implant_type in implants)
var/obj/item/weapon/implant/I = new implant_type(H)
I.implant(H, null, silent=TRUE)
H.update_body() H.update_body()
return 1 return 1
+59 -116
View File
@@ -1,6 +1,4 @@
/datum/riding /datum/riding
var/generic_pixel_x = 0 //All dirs show this pixel_x for the driver
var/generic_pixel_y = 0 //All dirs show this pixel_y for the driver, use these vars if the pixel shift is stable across all dir, override handle_vehicle_offsets otherwise.
var/next_vehicle_move = 0 //used for move delays var/next_vehicle_move = 0 //used for move delays
var/vehicle_move_delay = 2 //tick delay between movements, lower = faster, higher = slower var/vehicle_move_delay = 2 //tick delay between movements, lower = faster, higher = slower
var/keytype = null var/keytype = null
@@ -34,16 +32,29 @@
/datum/riding/proc/force_dismount(mob/living/M) /datum/riding/proc/force_dismount(mob/living/M)
ridden.unbuckle_mob(M) ridden.unbuckle_mob(M)
//Override this to set your vehicle's various pixel offsets
//if they differ between directions, otherwise use the
//generic variables
/datum/riding/proc/handle_vehicle_offsets() /datum/riding/proc/handle_vehicle_offsets()
var/ridden_dir = "[ridden.dir]"
var/passindex = 0
if(ridden.has_buckled_mobs()) if(ridden.has_buckled_mobs())
for(var/m in ridden.buckled_mobs) for(var/m in ridden.buckled_mobs)
passindex++
var/mob/living/buckled_mob = m var/mob/living/buckled_mob = m
buckled_mob.setDir(ridden.dir) var/list/offsets = get_offsets(passindex)
buckled_mob.pixel_x = generic_pixel_x dir_loop:
buckled_mob.pixel_y = generic_pixel_y for(var/offsetdir in offsets)
if(offsetdir == ridden_dir)
var/list/diroffsets = offsets[offsetdir]
buckled_mob.pixel_x = diroffsets[1]
if(diroffsets.len == 2)
buckled_mob.pixel_y = diroffsets[2]
if(diroffsets.len == 3)
buckled_mob.layer = diroffsets[3]
break dir_loop
//Override this to set your vehicle's various pixel offsets
/datum/riding/proc/get_offsets(pass_index) // list(dir = x, y, layer)
return list("[NORTH]" = list(0, 0), "[SOUTH]" = list(0, 0), "[EAST]" = list(0, 0), "[WEST]" = list(0, 0))
//KEYS //KEYS
/datum/riding/proc/keycheck(mob/user) /datum/riding/proc/keycheck(mob/user)
@@ -100,10 +111,12 @@
//atv //atv
/datum/riding/atv /datum/riding/atv
keytype = /obj/item/key keytype = /obj/item/key
generic_pixel_x = 0
generic_pixel_y = 4
vehicle_move_delay = 1 vehicle_move_delay = 1
/datum/riding/atv/get_offsets(pass_index) // list(dir = x, y, layer)
return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(0, 4), "[WEST]" = list( 0, 4))
/datum/riding/atv/handle_vehicle_layer() /datum/riding/atv/handle_vehicle_layer()
if(ridden.dir == SOUTH) if(ridden.dir == SOUTH)
ridden.layer = ABOVE_MOB_LAYER ridden.layer = ABOVE_MOB_LAYER
@@ -150,24 +163,9 @@
keytype = /obj/item/key/janitor keytype = /obj/item/key/janitor
/datum/riding/janicart/handle_vehicle_offsets() /datum/riding/janicart/get_offsets(pass_index) // list(dir = x, y, layer)
..() return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(-12, 7), "[EAST]" = list(0, 7), "[WEST]" = list( 12, 7))
if(ridden.has_buckled_mobs())
for(var/m in ridden.buckled_mobs)
var/mob/living/buckled_mob = m
switch(buckled_mob.dir)
if(NORTH)
buckled_mob.pixel_x = 0
buckled_mob.pixel_y = 4
if(EAST)
buckled_mob.pixel_x = -12
buckled_mob.pixel_y = 7
if(SOUTH)
buckled_mob.pixel_x = 0
buckled_mob.pixel_y = 7
if(WEST)
buckled_mob.pixel_x = 12
buckled_mob.pixel_y = 7
//scooter //scooter
/datum/riding/scooter/handle_vehicle_layer() /datum/riding/scooter/handle_vehicle_layer()
if(ridden.dir == SOUTH) if(ridden.dir == SOUTH)
@@ -175,20 +173,14 @@
else else
ridden.layer = OBJ_LAYER ridden.layer = OBJ_LAYER
/datum/riding/scooter/get_offsets(pass_index) // list(dir = x, y, layer)
return list("[NORTH]" = list(0), "[SOUTH]" = list(-2), "[EAST]" = list(0), "[WEST]" = list( 2))
/datum/riding/scooter/handle_vehicle_offsets() /datum/riding/scooter/handle_vehicle_offsets()
..() ..()
if(ridden.has_buckled_mobs()) if(ridden.has_buckled_mobs())
for(var/m in ridden.buckled_mobs) for(var/m in ridden.buckled_mobs)
var/mob/living/buckled_mob = m var/mob/living/buckled_mob = m
switch(buckled_mob.dir)
if(NORTH)
buckled_mob.pixel_x = 0
if(EAST)
buckled_mob.pixel_x = -2
if(SOUTH)
buckled_mob.pixel_x = 0
if(WEST)
buckled_mob.pixel_x = 2
if(buckled_mob.get_num_legs() > 0) if(buckled_mob.get_num_legs() > 0)
buckled_mob.pixel_y = 5 buckled_mob.pixel_y = 5
else else
@@ -209,16 +201,18 @@
//secway //secway
/datum/riding/secway /datum/riding/secway
keytype = /obj/item/key/security keytype = /obj/item/key/security
generic_pixel_x = 0
generic_pixel_y = 4 /datum/riding/secway/get_offsets(pass_index) // list(dir = x, y, layer)
return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(0, 4), "[WEST]" = list( 0, 4))
//i want to ride my //i want to ride my
/datum/riding/bicycle /datum/riding/bicycle
keytype = null keytype = null
generic_pixel_x = 0
generic_pixel_y = 4
vehicle_move_delay = 0 vehicle_move_delay = 0
/datum/riding/bicycle/get_offsets(pass_index) // list(dir = x, y, layer)
return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(0, 4), "[WEST]" = list( 0, 4))
//speedbike //speedbike
/datum/riding/space/speedbike /datum/riding/space/speedbike
keytype = null keytype = null
@@ -233,54 +227,28 @@
ridden.pixel_x = -18 ridden.pixel_x = -18
ridden.pixel_y = 0 ridden.pixel_y = 0
/datum/riding/space/speedbike/handle_vehicle_offsets() /datum/riding/space/speedbike/get_offsets(pass_index) // list(dir = x, y, layer)
if(ridden.has_buckled_mobs()) return list("[NORTH]" = list(0, -8), "[SOUTH]" = list(0, 4), "[EAST]" = list(-10, 5), "[WEST]" = list( 10, 5))
for(var/m in ridden.buckled_mobs)
var/mob/living/buckled_mob = m
buckled_mob.setDir(ridden.dir)
switch(ridden.dir)
if(NORTH)
buckled_mob.pixel_x = 0
buckled_mob.pixel_y = -8
if(SOUTH)
buckled_mob.pixel_x = 0
buckled_mob.pixel_y = 4
if(EAST)
buckled_mob.pixel_x = -10
buckled_mob.pixel_y = 5
if(WEST)
buckled_mob.pixel_x = 10
buckled_mob.pixel_y = 5
//SPEEDUWAGON //SPEEDUWAGON
/datum/riding/space/speedwagon /datum/riding/space/speedwagon
vehicle_move_delay = 0 vehicle_move_delay = 0
/datum/riding/space/speedwagon/handle_vehicle_offsets()
if(ridden.has_buckled_mobs())
for(var/m in ridden.buckled_mobs)
var/mob/living/buckled_mob = m
buckled_mob.setDir(ridden.dir)
ridden.pixel_x = -48
ridden.pixel_y = -48
switch(ridden.dir)
if(NORTH)
buckled_mob.pixel_x = -10
buckled_mob.pixel_y = -3
if(SOUTH)
buckled_mob.pixel_x = 16
buckled_mob.pixel_y = 3
if(EAST)
buckled_mob.pixel_x = -4
buckled_mob.pixel_y = 30
if(WEST)
buckled_mob.pixel_x = 4
buckled_mob.pixel_y = -1
/datum/riding/space/speedwagon/handle_vehicle_layer() /datum/riding/space/speedwagon/handle_vehicle_layer()
ridden.layer = BELOW_MOB_LAYER ridden.layer = BELOW_MOB_LAYER
/datum/riding/space/speedwagon/get_offsets(pass_index) // list(dir = x, y, layer)
switch(pass_index)
if(1)
return list("[NORTH]" = list(-10, -4), "[SOUTH]" = list(16, 3), "[EAST]" = list(-4, 30), "[WEST]" = list(4, -3))
if(2)
return list("[NORTH]" = list(19, -5, 4), "[SOUTH]" = list(-13, 3, 4), "[EAST]" = list(-4, -3, 4.1), "[WEST]" = list(4, 28, 3.9))
if(3)
return list("[NORTH]" = list(-10, -18, 4.2), "[SOUTH]" = list(16, 25, 3.9), "[EAST]" = list(-22, 30), "[WEST]" = list(22, -3, 4.1))
if(4)
return list("[NORTH]" = list(19, -18, 4.2), "[SOUTH]" = list(-13, 25, 3.9), "[EAST]" = list(-22, 3, 3.9), "[WEST]" = list(22, 28))
///////////////BOATS//////////// ///////////////BOATS////////////
/datum/riding/boat /datum/riding/boat
keytype = /obj/item/weapon/oar keytype = /obj/item/weapon/oar
@@ -297,17 +265,15 @@
/datum/riding/boat/dragon /datum/riding/boat/dragon
keytype = null keytype = null
generic_pixel_y = 2
generic_pixel_x = 1
vehicle_move_delay = 1 vehicle_move_delay = 1
/datum/riding/boat/dragon/get_offsets(pass_index) // list(dir = x, y, layer)
return list("[NORTH]" = list(1, 2), "[SOUTH]" = list(1, 2), "[EAST]" = list(1, 2), "[WEST]" = list( 1, 2))
///////////////ANIMALS//////////// ///////////////ANIMALS////////////
//general animals //general animals
/datum/riding/animal /datum/riding/animal
keytype = null keytype = null
generic_pixel_x = 0
generic_pixel_y = 4
/datum/riding/animal/handle_ride(mob/user, direction) /datum/riding/animal/handle_ride(mob/user, direction)
if(user.incapacitated()) if(user.incapacitated())
@@ -335,7 +301,7 @@
/datum/riding/human/ride_check(mob/living/M) /datum/riding/human/ride_check(mob/living/M)
var/mob/living/carbon/human/H = ridden //IF this runtimes I'm blaming the admins. var/mob/living/carbon/human/H = ridden //IF this runtimes I'm blaming the admins.
if(M.incapacitated(FALSE, TRUE) || H.incapacitated(FALSE, TRUE)) if(M.incapacitated(FALSE, TRUE) || H.incapacitated(FALSE, TRUE))
M.visible_message("<span class='warning'>[M] falls off [ridden]!</span>") M.visible_message("<span class='boldwarning'>[M] falls off of [ridden]!</span>")
Unbuckle(M) Unbuckle(M)
return FALSE return FALSE
if(M.restrained(TRUE)) if(M.restrained(TRUE))
@@ -345,22 +311,8 @@
if(H.pulling == M) if(H.pulling == M)
H.stop_pulling() H.stop_pulling()
/datum/riding/human/handle_vehicle_offsets() /datum/riding/human/get_offsets(pass_index) // list(dir = x, y, layer)
for(var/mob/living/M in ridden.buckled_mobs) return list("[NORTH]" = list(0, 6), "[SOUTH]" = list(0, 6), "[EAST]" = list(-6, 4), "[WEST]" = list( 6, 4))
M.setDir(ridden.dir)
switch(ridden.dir)
if(NORTH)
M.pixel_x = 0
M.pixel_y = 6
if(SOUTH)
M.pixel_x = 0
M.pixel_y = 6
if(EAST)
M.pixel_x = -6
M.pixel_y = 4
if(WEST)
M.pixel_x = 6
M.pixel_y = 4
/datum/riding/human/handle_vehicle_layer() /datum/riding/human/handle_vehicle_layer()
if(ridden.buckled_mobs && ridden.buckled_mobs.len) if(ridden.buckled_mobs && ridden.buckled_mobs.len)
@@ -375,7 +327,7 @@
ridden.unbuckle_mob(user) ridden.unbuckle_mob(user)
user.Weaken(3) user.Weaken(3)
user.Stun(3) user.Stun(3)
user.visible_message("<span class='warning'>[ridden] pushes [user] off of them!</span>") user.visible_message("<span class='boldwarning'>[ridden] pushes [user] off of them!</span>")
/datum/riding/cyborg /datum/riding/cyborg
keytype = null keytype = null
@@ -407,6 +359,9 @@
else else
ridden.layer = MOB_LAYER ridden.layer = MOB_LAYER
/datum/riding/cyborg/get_offsets(pass_index) // list(dir = x, y, layer)
return list("[NORTH]" = list(0, 4), "[SOUTH]" = list(0, 4), "[EAST]" = list(-6, 3), "[WEST]" = list( 6, 3))
/datum/riding/cyborg/handle_vehicle_offsets() /datum/riding/cyborg/handle_vehicle_offsets()
if(ridden.has_buckled_mobs()) if(ridden.has_buckled_mobs())
for(var/mob/living/M in ridden.buckled_mobs) for(var/mob/living/M in ridden.buckled_mobs)
@@ -417,26 +372,14 @@
M.pixel_x = R.module.ride_offset_x[dir2text(ridden.dir)] M.pixel_x = R.module.ride_offset_x[dir2text(ridden.dir)]
M.pixel_y = R.module.ride_offset_y[dir2text(ridden.dir)] M.pixel_y = R.module.ride_offset_y[dir2text(ridden.dir)]
else else
switch(ridden.dir) ..()
if(NORTH)
M.pixel_x = 0
M.pixel_y = 4
if(SOUTH)
M.pixel_x = 0
M.pixel_y = 4
if(EAST)
M.pixel_x = -6
M.pixel_y = 3
if(WEST)
M.pixel_x = 6
M.pixel_y = 3
/datum/riding/cyborg/force_dismount(mob/living/M) /datum/riding/cyborg/force_dismount(mob/living/M)
ridden.unbuckle_mob(M) ridden.unbuckle_mob(M)
var/turf/target = get_edge_target_turf(ridden, ridden.dir) var/turf/target = get_edge_target_turf(ridden, ridden.dir)
var/turf/targetm = get_step(get_turf(ridden), ridden.dir) var/turf/targetm = get_step(get_turf(ridden), ridden.dir)
M.Move(targetm) M.Move(targetm)
M.visible_message("<span class='warning'>[M] is thrown clear of [ridden]!</span>") M.visible_message("<span class='boldwarning'>[M] is thrown clear of [ridden]!</span>")
M.throw_at(target, 14, 5, ridden) M.throw_at(target, 14, 5, ridden)
M.Weaken(3) M.Weaken(3)
+1
View File
@@ -181,6 +181,7 @@
marked_underlay.pixel_x = -owner.pixel_x marked_underlay.pixel_x = -owner.pixel_x
marked_underlay.pixel_y = -owner.pixel_y marked_underlay.pixel_y = -owner.pixel_y
owner.underlays += marked_underlay owner.underlays += marked_underlay
return TRUE
return FALSE return FALSE
/datum/status_effect/crusher_mark/Destroy() /datum/status_effect/crusher_mark/Destroy()
+1 -1
View File
@@ -1557,4 +1557,4 @@ GLOBAL_LIST_INIT(the_station_areas, list (
/area/ai_monitored/turret_protected/ai_upload, //do not try to simplify to "/area/ai_monitored/turret_protected" --rastaf0 /area/ai_monitored/turret_protected/ai_upload, //do not try to simplify to "/area/ai_monitored/turret_protected" --rastaf0
/area/ai_monitored/turret_protected/ai_upload_foyer, /area/ai_monitored/turret_protected/ai_upload_foyer,
/area/ai_monitored/turret_protected/ai, /area/ai_monitored/turret_protected/ai,
)) ))
+5 -4
View File
@@ -57,13 +57,13 @@
name = "Mining Station Communications" name = "Mining Station Communications"
/area/mine/cafeteria /area/mine/cafeteria
name = "Mining station Cafeteria" name = "Mining Station Cafeteria"
/area/mine/hydroponics /area/mine/hydroponics
name = "Mining station Hydroponics" name = "Mining Station Hydroponics"
/area/mine/sleeper /area/mine/sleeper
name = "Mining station Emergency Sleeper" name = "Mining Station Emergency Sleeper"
/area/mine/north_outpost /area/mine/north_outpost
name = "North Mining Outpost" name = "North Mining Outpost"
@@ -86,6 +86,7 @@
/area/lavaland /area/lavaland
icon_state = "mining" icon_state = "mining"
has_gravity = 1 has_gravity = 1
flags = NONE
/area/lavaland/surface /area/lavaland/surface
name = "Lavaland" name = "Lavaland"
@@ -123,4 +124,4 @@
icon_state = "danger" icon_state = "danger"
/area/lavaland/surface/outdoors/explored /area/lavaland/surface/outdoors/explored
name = "Lavaland Labor Camp" name = "Lavaland Labor Camp"
+14 -3
View File
@@ -115,15 +115,26 @@
/area/prison/solitary /area/prison/solitary
name = "Solitary Confinement" name = "Solitary Confinement"
icon_state = "brig" icon_state = "brig"
/area/prison/execution_room
name = "Prisoner Education Chamber"
icon_state = "armory"
/area/prison/cell_block/A /area/prison/execution_room
name = "Prisoner Education Chamber"
icon_state = "armory"
/area/prison/cell_block/a
// /area/prison/cell_block/A
name = "Prison Cell Block A" name = "Prison Cell Block A"
icon_state = "brig" icon_state = "brig"
/area/prison/cell_block/B /area/prison/cell_block/b
// /area/prison/cell_block/B
name = "Prison Cell Block B" name = "Prison Cell Block B"
icon_state = "brig" icon_state = "brig"
/area/prison/cell_block/C /area/prison/cell_block/c
// /area/prison/cell_block/C
name = "Prison Cell Block C" name = "Prison Cell Block C"
icon_state = "brig" icon_state = "brig"
+48 -7
View File
@@ -5,6 +5,7 @@
icon_state = "away" icon_state = "away"
has_gravity = 1 has_gravity = 1
hidden = TRUE hidden = TRUE
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
/area/ruin/unpowered /area/ruin/unpowered
@@ -20,20 +21,48 @@
//Areas //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 /area/ruin/unpowered/hierophant
name = "Hierophant's Arena" 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 /area/ruin/unpowered/no_grav/way_home
name = "\improper Salvation" name = "\improper Salvation"
icon_state = "away" 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 // Ruins of "onehalf" ship
@@ -199,3 +228,15 @@
/area/ruin/abandonedzoo /area/ruin/abandonedzoo
name = "Abandoned Zoo" name = "Abandoned Zoo"
icon_state = "green" icon_state = "green"
//Xeno Nest
/area/ruin/xenonest
name = "The Hive"
always_unpowered = 1
power_environ = 0
power_equip = 0
power_light = 0
poweralm = 0
+36 -33
View File
@@ -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/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/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/New(loc, ...)
//atom creation method that preloads variables at creation //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() 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 var/do_initialize = SSatoms.initialized
if(do_initialize > INITIALIZATION_INSSATOMS) if(do_initialize > INITIALIZATION_INSSATOMS)
args[1] = do_initialize == INITIALIZATION_INNEW_MAPLOAD args[1] = do_initialize == INITIALIZATION_INNEW_MAPLOAD
if(SSatoms.InitAtom(src, args)) if(SSatoms.InitAtom(src, args))
//we were deleted //we were deleted
return return
var/list/created = SSatoms.created_atoms var/list/created = SSatoms.created_atoms
if(created) if(created)
created += src created += src
//Called after New if the map is being loaded. mapload = TRUE //Called after New if the map is being loaded. mapload = TRUE
//Called from base of New if the map is being loaded. mapload = FALSE //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 //This base must be called or derivatives must set initialized to TRUE
//must not sleep //must not sleep
//Other parameters are passed from New (excluding loc), this does not happen if mapload is TRUE //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: //Note: the following functions don't call the base for optimization and must copypasta:
// /turf/Initialize // /turf/Initialize
@@ -76,23 +76,23 @@
if (opacity && isturf(loc)) if (opacity && isturf(loc))
var/turf/T = 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. 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 //called if Initialize returns INITIALIZE_HINT_LATELOAD
//This version shouldn't be called //This version shouldn't be called
/atom/proc/LateInitialize() /atom/proc/LateInitialize()
var/static/list/warned_types = list() var/static/list/warned_types = list()
if(!warned_types[type]) if(!warned_types[type])
WARNING("Old style LateInitialize behaviour detected in [type]!") WARNING("Old style LateInitialize behaviour detected in [type]!")
warned_types[type] = TRUE warned_types[type] = TRUE
Initialize(FALSE) Initialize(FALSE)
/atom/Destroy() /atom/Destroy()
if(alternate_appearances) if(alternate_appearances)
for(var/K in alternate_appearances) for(var/K in alternate_appearances)
var/datum/atom_hud/alternate_appearance/AA = alternate_appearances[K] var/datum/atom_hud/alternate_appearance/AA = alternate_appearances[K]
AA.remove_from_hud(src) AA.remove_from_hud(src)
if(reagents) if(reagents)
qdel(reagents) qdel(reagents)
@@ -100,10 +100,13 @@
LAZYCLEARLIST(priority_overlays) LAZYCLEARLIST(priority_overlays)
//SSoverlays.processing -= src //we COULD do this, but it's better to just let it fall out of the processing queue //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 ..() return ..()
/atom/proc/handle_ricochet(obj/item/projectile/P)
return
/atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5) /atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5)
return (!density || !height) return (!density || !height)
@@ -274,7 +277,7 @@
return return
/atom/proc/ex_act(severity, target) /atom/proc/ex_act(severity, target)
set waitfor = FALSE set waitfor = FALSE
contents_explosion(severity, target) contents_explosion(severity, target)
/atom/proc/blob_act(obj/structure/blob/B) /atom/proc/blob_act(obj/structure/blob/B)
@@ -506,10 +509,10 @@ GLOBAL_LIST_EMPTY(blood_splatter_icons)
/atom/proc/mech_melee_attack(obj/mecha/M) /atom/proc/mech_melee_attack(obj/mecha/M)
return return
//If a mob logouts/logins in side of an object you can use this proc //If a mob logouts/logins in side of an object you can use this proc
/atom/proc/on_log(login) /atom/proc/on_log(login)
if(loc) if(loc)
loc.on_log(login) loc.on_log(login)
/* /*
+9
View File
@@ -0,0 +1,9 @@
diff a/code/game/atoms.dm b/code/game/atoms.dm (rejected hunks)
@@ -274,6 +274,7 @@
return
/atom/proc/ex_act(severity, target)
+ set waitfor = FALSE
contents_explosion(severity, target)
/atom/proc/blob_act(obj/structure/blob/B)
+1 -1
View File
@@ -236,7 +236,7 @@
/obj/item/weapon/antag_spawner/slaughter_demon/attack_self(mob/user) /obj/item/weapon/antag_spawner/slaughter_demon/attack_self(mob/user)
if(user.z != 1) if(user.z != ZLEVEL_STATION)
to_chat(user, "<span class='notice'>You should probably wait until you reach the station.</span>") to_chat(user, "<span class='notice'>You should probably wait until you reach the station.</span>")
return return
if(used) if(used)
@@ -171,14 +171,6 @@ Credit where due:
return TRUE return TRUE
return FALSE return FALSE
/datum/game_mode/clockwork_cult/proc/present_tasks(mob/living/L) //Memorizes and displays the clockwork cult's objective
if(!L || !istype(L) || !L.mind)
return 0
var/datum/mind/M = L.mind
to_chat(M.current, "<b>This is Ratvar's will:</b> [CLOCKCULT_OBJECTIVE]")
M.memory += "<b>Ratvar's will:</b> [CLOCKCULT_OBJECTIVE]<br>"
return 1
/datum/game_mode/clockwork_cult/proc/check_clockwork_victory() /datum/game_mode/clockwork_cult/proc/check_clockwork_victory()
if(GLOB.clockwork_gateway_activated) if(GLOB.clockwork_gateway_activated)
SSticker.news_report = CLOCK_PROSELYTIZATION //failure, technically, but we have the station SSticker.news_report = CLOCK_PROSELYTIZATION //failure, technically, but we have the station
+2 -2
View File
@@ -375,8 +375,8 @@
desc = "Used by veteran cultists to instantly transport items to their needful bretheren." desc = "Used by veteran cultists to instantly transport items to their needful bretheren."
w_class = WEIGHT_CLASS_SMALL w_class = WEIGHT_CLASS_SMALL
brightness_on = 1 brightness_on = 1
icon_state = "torch-on" icon_state = "torch"
item_state = "torch-on" item_state = "torch"
color = "#ff0000" color = "#ff0000"
on_damage = 15 on_damage = 15
slot_flags = null slot_flags = null
+2 -2
View File
@@ -233,11 +233,11 @@
if(ishuman(M)) if(ishuman(M))
if(!M.stat) if(!M.stat)
surviving_humans++ surviving_humans++
if(M.z == 2) if(M.z == ZLEVEL_CENTCOM)
escaped_humans++ escaped_humans++
if(!M.stat) if(!M.stat)
surviving_total++ surviving_total++
if(M.z == 2) if(M.z == ZLEVEL_CENTCOM)
escaped_total++ escaped_total++
+14
View File
@@ -261,6 +261,20 @@ GLOBAL_LIST_INIT(gang_outfit_pool, list(/obj/item/clothing/suit/jacket/leather,/
gang_bosses += G.bosses gang_bosses += G.bosses
return gang_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) /proc/determine_domination_time(var/datum/gang/G)
return max(180,480 - (round((G.territory.len/GLOB.start_state.num_territories)*100, 1) * 9)) return max(180,480 - (round((G.territory.len/GLOB.start_state.num_territories)*100, 1) * 9))
+3 -3
View File
@@ -53,7 +53,6 @@
/datum/gang_item/weapon/ammo/uzi_ammo, /datum/gang_item/weapon/ammo/uzi_ammo,
/datum/gang_item/equipment/sharpener, /datum/gang_item/equipment/sharpener,
/datum/gang_item/equipment/spraycan, /datum/gang_item/equipment/spraycan,
/datum/gang_item/equipment/sharpener,
/datum/gang_item/equipment/emp, /datum/gang_item/equipment/emp,
/datum/gang_item/equipment/c4, /datum/gang_item/equipment/c4,
/datum/gang_item/equipment/frag, /datum/gang_item/equipment/frag,
@@ -91,7 +90,6 @@
/datum/gang_item/weapon/ammo/uzi_ammo, /datum/gang_item/weapon/ammo/uzi_ammo,
/datum/gang_item/equipment/sharpener, /datum/gang_item/equipment/sharpener,
/datum/gang_item/equipment/spraycan, /datum/gang_item/equipment/spraycan,
/datum/gang_item/equipment/sharpener,
/datum/gang_item/equipment/emp, /datum/gang_item/equipment/emp,
/datum/gang_item/equipment/c4, /datum/gang_item/equipment/c4,
/datum/gang_item/equipment/frag, /datum/gang_item/equipment/frag,
@@ -204,7 +202,9 @@
return return
var/added_names = "" var/added_names = ""
var/lost_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 //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 var/list/reclaimed_territories = territory_new & territory_lost
territory |= reclaimed_territories territory |= reclaimed_territories
+3 -2
View File
@@ -326,6 +326,7 @@
if(spawn_msg) if(spawn_msg)
to_chat(user, spawn_msg) to_chat(user, spawn_msg)
/datum/gang_item/equipment/wetwork_boots /datum/gang_item/equipment/wetwork_boots
name = "Wetwork boots" name = "Wetwork boots"
id = "wetwork" id = "wetwork"
@@ -412,7 +413,7 @@
/datum/gang_item/equipment/dominator/purchase(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool) /datum/gang_item/equipment/dominator/purchase(mob/living/carbon/user, datum/gang/gang, obj/item/device/gangtool/gangtool)
var/area/usrarea = get_area(user.loc) var/area/usrarea = get_area(user.loc)
var/usrturf = get_turf(user.loc) var/usrturf = get_turf(user.loc)
if(initial(usrarea.name) == "Space" || isspaceturf(usrturf) || usr.z != 1) if(initial(usrarea.name) == "Space" || isspaceturf(usrturf) || usr.z != ZLEVEL_STATION)
to_chat(user, "<span class='warning'>You can only use this on the station!</span>") to_chat(user, "<span class='warning'>You can only use this on the station!</span>")
return FALSE return FALSE
@@ -422,7 +423,7 @@
return FALSE return FALSE
if(dominator_excessive_walls(user)) if(dominator_excessive_walls(user))
to_chat(user, "span class='warning'>The <b>dominator</b> will not function here! The <b>dominator</b> requires a sizable open space within three standard units so that walls do not interfere with the signal.</span>") to_chat(user, "<span class='warning'>The <b>dominator</b> will not function here! The <b>dominator</b> requires a sizable open space within three standard units so that walls do not interfere with the signal.</span>")
return FALSE return FALSE
if(!(usrarea.type in gang.territory|gang.territory_new)) if(!(usrarea.type in gang.territory|gang.territory_new))
+5 -2
View File
@@ -167,6 +167,9 @@
if(!can_use(user)) if(!can_use(user))
return 0 return 0
if(SSshuttle.emergencyNoRecall)
return 0
if(recalling) if(recalling)
to_chat(usr, "<span class='warning'>Error: Recall already in progress.</span>") to_chat(usr, "<span class='warning'>Error: Recall already in progress.</span>")
return 0 return 0
@@ -194,7 +197,7 @@
return 0 return 0
var/turf/userturf = get_turf(user) var/turf/userturf = get_turf(user)
if(userturf.z != 1) //Shuttle can only be recalled while on station if(userturf.z != ZLEVEL_STATION) //Shuttle can only be recalled while on station
to_chat(user, "<span class='warning'>\icon[src]Error: Device out of range of station communication arrays.</span>") to_chat(user, "<span class='warning'>\icon[src]Error: Device out of range of station communication arrays.</span>")
recalling = 0 recalling = 0
return 0 return 0
@@ -212,7 +215,7 @@
log_game("[key_name(user)] has tried to recall the shuttle with a gangtool.") log_game("[key_name(user)] has tried to recall the shuttle with a gangtool.")
message_admins("[key_name_admin(user)] has tried to recall the shuttle with a gangtool.", 1) message_admins("[key_name_admin(user)] has tried to recall the shuttle with a gangtool.", 1)
userturf = get_turf(user) userturf = get_turf(user)
if(userturf.z == 1) //Check one more time that they are on station. if(userturf.z == ZLEVEL_STATION) //Check one more time that they are on station.
if(SSshuttle.cancelEvac(user)) if(SSshuttle.cancelEvac(user))
gang.recalls -= 1 gang.recalls -= 1
return 1 return 1
@@ -70,12 +70,12 @@
origin.vest_mode_action.Remove(C) origin.vest_mode_action.Remove(C)
origin.vest_disguise_action.Remove(C) origin.vest_disguise_action.Remove(C)
origin.set_droppoint_action.Remove(C) origin.set_droppoint_action.Remove(C)
remote_eye.eye_user = null
C.reset_perspective(null) C.reset_perspective(null)
if(C.client) if(C.client)
C.client.images -= remote_eye.user_image C.client.images -= remote_eye.user_image
for(var/datum/camerachunk/chunk in remote_eye.visibleCameraChunks) for(var/datum/camerachunk/chunk in remote_eye.visibleCameraChunks)
C.client.images -= chunk.obscured chunk.remove(remote_eye)
remote_eye.eye_user = null
C.remote_control = null C.remote_control = null
C.unset_machine() C.unset_machine()
Remove(C) Remove(C)
@@ -181,6 +181,7 @@
to_chat(H, "<span class='warning'>You feel intensely watched.</span>") to_chat(H, "<span class='warning'>You feel intensely watched.</span>")
sleep(5) sleep(5)
to_chat(H, "<span class='warning'><b>Your mind snaps!</b></span>") 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/objtype = pick(subtypesof(/datum/objective/abductee/))
var/datum/objective/abductee/O = new objtype() var/datum/objective/abductee/O = new objtype()
SSticker.mode.abductees += H.mind SSticker.mode.abductees += H.mind
@@ -15,7 +15,7 @@
var/icon_stun = "revenant_stun" var/icon_stun = "revenant_stun"
var/icon_drain = "revenant_draining" var/icon_drain = "revenant_draining"
var/stasis = FALSE var/stasis = FALSE
incorporeal_move = 3 incorporeal_move = INCORPOREAL_MOVE_JAUNT
invisibility = INVISIBILITY_REVENANT invisibility = INVISIBILITY_REVENANT
health = INFINITY //Revenants don't use health, they use essence instead health = INFINITY //Revenants don't use health, they use essence instead
maxHealth = INFINITY maxHealth = INFINITY
@@ -102,7 +102,7 @@
if(unreveal_time && world.time >= unreveal_time) if(unreveal_time && world.time >= unreveal_time)
unreveal_time = 0 unreveal_time = 0
revealed = FALSE revealed = FALSE
incorporeal_move = 3 incorporeal_move = INCORPOREAL_MOVE_JAUNT
invisibility = INVISIBILITY_REVENANT invisibility = INVISIBILITY_REVENANT
to_chat(src, "<span class='revenboldnotice'>You are once more concealed.</span>") to_chat(src, "<span class='revenboldnotice'>You are once more concealed.</span>")
if(unstun_time && world.time >= unstun_time) if(unstun_time && world.time >= unstun_time)
@@ -222,7 +222,7 @@
R.essence = max(reforming_essence - 15 * perfectsouls, 75) //minus any perfect souls R.essence = max(reforming_essence - 15 * perfectsouls, 75) //minus any perfect souls
R.client_to_revive = client //If the essence reforms, the old revenant is put back in the body R.client_to_revive = client //If the essence reforms, the old revenant is put back in the body
R.revenant = src R.revenant = src
invisibility = INVISIBILITY_ABSTRACT invisibility = INVISIBILITY_ABSTRACT
revealed = FALSE revealed = FALSE
ghostize(0)//Don't re-enter invisible corpse ghostize(0)//Don't re-enter invisible corpse
return return
@@ -236,7 +236,7 @@
return return
revealed = TRUE revealed = TRUE
invisibility = 0 invisibility = 0
incorporeal_move = 0 incorporeal_move = FALSE
if(!unreveal_time) if(!unreveal_time)
to_chat(src, "<span class='revendanger'>You have been revealed!</span>") to_chat(src, "<span class='revendanger'>You have been revealed!</span>")
unreveal_time = world.time + time unreveal_time = world.time + time
@@ -309,12 +309,12 @@
/mob/living/simple_animal/revenant/proc/death_reset() /mob/living/simple_animal/revenant/proc/death_reset()
revealed = FALSE revealed = FALSE
unreveal_time = 0 unreveal_time = 0
notransform = 0 notransform = 0
unstun_time = 0 unstun_time = 0
inhibited = FALSE inhibited = FALSE
draining = FALSE draining = FALSE
incorporeal_move = 3 incorporeal_move = INCORPOREAL_MOVE_JAUNT
invisibility = INVISIBILITY_REVENANT invisibility = INVISIBILITY_REVENANT
alpha=255 alpha=255
stasis = FALSE stasis = FALSE
+28 -7
View File
@@ -1,6 +1,8 @@
#define PINPOINTER_MINIMUM_RANGE 15 #define PINPOINTER_MINIMUM_RANGE 15
#define PINPOINTER_EXTRA_RANDOM_RANGE 10 #define PINPOINTER_EXTRA_RANDOM_RANGE 10
#define PINPOINTER_PING_TIME 40 #define PINPOINTER_PING_TIME 40
#define PROB_ACTUAL_TRAITOR 20
#define TRAITOR_AGENT_ROLE "Syndicate External Affairs Agent"
/datum/game_mode/traitor/internal_affairs /datum/game_mode/traitor/internal_affairs
name = "Internal Affairs" name = "Internal Affairs"
@@ -171,7 +173,10 @@
if(!objective.check_completion()) if(!objective.check_completion())
traitored = FALSE traitored = FALSE
return return
to_chat(owner.current,"<span class='userdanger'> All the other agents are dead, and you're the last loose end. Stage a Syndicate terrorist attack to cover up for today's events. You no longer have any limits on collateral damage.</span>") if(owner.special_role == TRAITOR_AGENT_ROLE)
to_chat(owner.current,"<span class='userdanger'> All the loyalist agents are dead, and no more is required of you. Die a glorious death, agent. </span>")
else
to_chat(owner.current,"<span class='userdanger'> All the other agents are dead, and you're the last loose end. Stage a Syndicate terrorist attack to cover up for today's events. You no longer have any limits on collateral damage.</span>")
replace_escape_objective(owner) replace_escape_objective(owner)
@@ -194,7 +199,10 @@
if(objective.stolen) if(objective.stolen)
var/fail_msg = "<span class='userdanger'>Your sensors tell you that [objective.target.current.real_name], one of the targets you were meant to have killed, pulled one over on you, and is still alive - do the job properly this time! </span>" var/fail_msg = "<span class='userdanger'>Your sensors tell you that [objective.target.current.real_name], one of the targets you were meant to have killed, pulled one over on you, and is still alive - do the job properly this time! </span>"
if(traitored) if(traitored)
fail_msg += "<span class='userdanger'> The truth could still slip out!</font><B><font size=5 color=red> Cease any terrorist actions as soon as possible, unneeded property damage or loss of employee life will lead to your contract being terminated.</span>" if(owner.special_role == TRAITOR_AGENT_ROLE)
fail_msg += "<span class='userdanger'> You no longer have permission to die. </span>"
else
fail_msg += "<span class='userdanger'> The truth could still slip out!</font><B><font size=5 color=red> Cease any terrorist actions as soon as possible, unneeded property damage or loss of employee life will lead to your contract being terminated.</span>"
reinstate_escape_objective(owner) reinstate_escape_objective(owner)
traitored = FALSE traitored = FALSE
to_chat(owner.current, fail_msg) to_chat(owner.current, fail_msg)
@@ -238,6 +246,10 @@
state.add_steal_targets_timer() state.add_steal_targets_timer()
if(!issilicon(traitor.current)) if(!issilicon(traitor.current))
give_pinpointer(traitor) give_pinpointer(traitor)
//Optional traitor objective
if(prob(PROB_ACTUAL_TRAITOR))
traitor.special_role = TRAITOR_AGENT_ROLE
forge_single_objective(traitor)
else else
..() // Give them standard objectives. ..() // Give them standard objectives.
@@ -289,11 +301,18 @@
/datum/game_mode/traitor/internal_affairs/greet_traitor(datum/mind/traitor) /datum/game_mode/traitor/internal_affairs/greet_traitor(datum/mind/traitor)
var/crime = pick("distribution of contraband" , "unauthorized erotic action on duty", "embezzlement", "piloting under the influence", "dereliction of duty", "syndicate collaboration", "mutiny", "multiple homicides", "corporate espionage", "recieving bribes", "malpractice", "worship of prohbited life forms", "possession of profane texts", "murder", "arson", "insulting their manager", "grand theft", "conspiracy", "attempting to unionize", "vandalism", "gross incompetence") var/crime = pick("distribution of contraband" , "unauthorized erotic action on duty", "embezzlement", "piloting under the influence", "dereliction of duty", "syndicate collaboration", "mutiny", "multiple homicides", "corporate espionage", "recieving bribes", "malpractice", "worship of prohbited life forms", "possession of profane texts", "murder", "arson", "insulting their manager", "grand theft", "conspiracy", "attempting to unionize", "vandalism", "gross incompetence")
to_chat(traitor.current, "<span class='userdanger'>You are the [traitor_name].</span>") if(traitor.special_role == TRAITOR_AGENT_ROLE)
to_chat(traitor.current, "<span class='userdanger'>Your target is suspected of [crime], and you have been tasked with eliminating them by any means necessary to avoid a costly and embarrassing public trial.</span>") to_chat(traitor.current, "<span class='userdanger'>You are the [TRAITOR_AGENT_ROLE].</span>")
to_chat(traitor.current, "<B><font size=5 color=red>While you have a license to kill, unneeded property damage or loss of employee life will lead to your contract being terminated.</font></B>") to_chat(traitor.current, "<span class='userdanger'>Your target has been framed for [crime], and you have been tasked with eliminating them to prevent them defending themselves in court.</span>")
to_chat(traitor.current, "<span class='userdanger'>For the sake of plausible deniability, you have been equipped with an array of captured Syndicate weaponry available via uplink.</span>") to_chat(traitor.current, "<B><font size=5 color=red>Any damage you cause will be a further embarrassment to Nanotrasen, so you have no limits on collateral damage.</font></B>")
to_chat(traitor.current, "<span class='userdanger'>Finally, watch your back. Your target has friends in high places, and intel suggests someone may have taken out a contract of their own to protect them.</span>") to_chat(traitor.current, "<span class='userdanger'> You have been provided with a standard uplink to accomplish your task. </span>")
to_chat(traitor.current, "<span class='userdanger'>Finally, watch your back. Your target has friends in high places, and intel suggests someone may have taken out a contract of their own to protect them.</span>")
else
to_chat(traitor.current, "<span class='userdanger'>You are the [traitor_name].</span>")
to_chat(traitor.current, "<span class='userdanger'>Your target is suspected of [crime], and you have been tasked with eliminating them by any means necessary to avoid a costly and embarrassing public trial.</span>")
to_chat(traitor.current, "<B><font size=5 color=red>While you have a license to kill, unneeded property damage or loss of employee life will lead to your contract being terminated.</font></B>")
to_chat(traitor.current, "<span class='userdanger'>For the sake of plausible deniability, you have been equipped with an array of captured Syndicate weaponry available via uplink.</span>")
to_chat(traitor.current, "<span class='userdanger'>Finally, watch your back. Your target has friends in high places, and intel suggests someone may have taken out a contract of their own to protect them.</span>")
traitor.announce_objectives() traitor.announce_objectives()
@@ -301,6 +320,8 @@
/datum/game_mode/traitor/internal_affairs/give_codewords(mob/living/traitor_mob) /datum/game_mode/traitor/internal_affairs/give_codewords(mob/living/traitor_mob)
return return
#undef PROB_ACTUAL_TRAITOR
#undef PINPOINTER_EXTRA_RANDOM_RANGE #undef PINPOINTER_EXTRA_RANDOM_RANGE
#undef PINPOINTER_MINIMUM_RANGE #undef PINPOINTER_MINIMUM_RANGE
#undef PINPOINTER_PING_TIME #undef PINPOINTER_PING_TIME
+55 -51
View File
@@ -85,40 +85,65 @@
character.make_Traitor() character.make_Traitor()
/datum/game_mode/proc/forge_single_objective(datum/mind/traitor) //Returns how many objectives are added
.=1
if(issilicon(traitor.current))
var/special_pick = rand(1,4)
switch(special_pick)
if(1)
var/datum/objective/block/block_objective = new
block_objective.owner = traitor
traitor.objectives += block_objective
if(2)
var/datum/objective/purge/purge_objective = new
purge_objective.owner = traitor
traitor.objectives += purge_objective
if(3)
var/datum/objective/robot_army/robot_objective = new
robot_objective.owner = traitor
traitor.objectives += robot_objective
if(4) //Protect and strand a target
var/datum/objective/protect/yandere_one = new
yandere_one.owner = traitor
traitor.objectives += yandere_one
yandere_one.find_target()
var/datum/objective/maroon/yandere_two = new
yandere_two.owner = traitor
yandere_two.target = yandere_one.target
yandere_two.update_explanation_text() // normally called in find_target()
traitor.objectives += yandere_two
.=2
else
if(prob(50))
var/list/active_ais = active_ais()
if(active_ais.len && prob(100/GLOB.joined_player_list.len))
var/datum/objective/destroy/destroy_objective = new
destroy_objective.owner = traitor
destroy_objective.find_target()
traitor.objectives += destroy_objective
else if(prob(30))
var/datum/objective/maroon/maroon_objective = new
maroon_objective.owner = traitor
maroon_objective.find_target()
traitor.objectives += maroon_objective
else
var/datum/objective/assassinate/kill_objective = new
kill_objective.owner = traitor
kill_objective.find_target()
traitor.objectives += kill_objective
else
var/datum/objective/steal/steal_objective = new
steal_objective.owner = traitor
steal_objective.find_target()
traitor.objectives += steal_objective
/datum/game_mode/proc/forge_traitor_objectives(datum/mind/traitor) /datum/game_mode/proc/forge_traitor_objectives(datum/mind/traitor)
if(issilicon(traitor.current)) if(issilicon(traitor.current))
var/objective_count = 0 var/objective_count = 0
if(prob(30)) if(prob(30))
var/special_pick = rand(1,4) objective_count+=forge_single_objective(traitor)
switch(special_pick)
if(1)
var/datum/objective/block/block_objective = new
block_objective.owner = traitor
traitor.objectives += block_objective
objective_count++
if(2)
var/datum/objective/purge/purge_objective = new
purge_objective.owner = traitor
traitor.objectives += purge_objective
objective_count++
if(3)
var/datum/objective/robot_army/robot_objective = new
robot_objective.owner = traitor
traitor.objectives += robot_objective
objective_count++
if(4) //Protect and strand a target
var/datum/objective/protect/yandere_one = new
yandere_one.owner = traitor
traitor.objectives += yandere_one
yandere_one.find_target()
objective_count++
var/datum/objective/maroon/yandere_two = new
yandere_two.owner = traitor
yandere_two.target = yandere_one.target
yandere_two.update_explanation_text() // normally called in find_target()
traitor.objectives += yandere_two
objective_count++
for(var/i = objective_count, i < config.traitor_objectives_amount, i++) for(var/i = objective_count, i < config.traitor_objectives_amount, i++)
var/datum/objective/assassinate/kill_objective = new var/datum/objective/assassinate/kill_objective = new
@@ -142,29 +167,8 @@
assign_exchange_role(exchange_red) assign_exchange_role(exchange_red)
assign_exchange_role(exchange_blue) assign_exchange_role(exchange_blue)
objective_count += 1 //Exchange counts towards number of objectives objective_count += 1 //Exchange counts towards number of objectives
var/list/active_ais = active_ais()
for(var/i = objective_count, i < config.traitor_objectives_amount, i++) for(var/i = objective_count, i < config.traitor_objectives_amount, i++)
if(prob(50)) forge_single_objective(traitor)
if(active_ais.len && prob(100/GLOB.joined_player_list.len))
var/datum/objective/destroy/destroy_objective = new
destroy_objective.owner = traitor
destroy_objective.find_target()
traitor.objectives += destroy_objective
else if(prob(30))
var/datum/objective/maroon/maroon_objective = new
maroon_objective.owner = traitor
maroon_objective.find_target()
traitor.objectives += maroon_objective
else
var/datum/objective/assassinate/kill_objective = new
kill_objective.owner = traitor
kill_objective.find_target()
traitor.objectives += kill_objective
else
var/datum/objective/steal/steal_objective = new
steal_objective.owner = traitor
steal_objective.find_target()
traitor.objectives += steal_objective
if(is_hijacker && objective_count <= config.traitor_objectives_amount) //Don't assign hijack if it would exceed the number of objectives set in config.traitor_objectives_amount if(is_hijacker && objective_count <= config.traitor_objectives_amount) //Don't assign hijack if it would exceed the number of objectives set in config.traitor_objectives_amount
if (!(locate(/datum/objective/hijack) in traitor.objectives)) if (!(locate(/datum/objective/hijack) in traitor.objectives))
+3 -2
View File
@@ -3,6 +3,7 @@
icon = 'icons/obj/wizard.dmi' icon = 'icons/obj/wizard.dmi'
icon_state = "soulstone" icon_state = "soulstone"
item_state = "electronic" item_state = "electronic"
layer = HIGH_OBJ_LAYER
desc = "A fragment of the legendary treasure known simply as the 'Soul Stone'. The shard still flickers with a fraction of the full artefact's power." desc = "A fragment of the legendary treasure known simply as the 'Soul Stone'. The shard still flickers with a fraction of the full artefact's power."
w_class = WEIGHT_CLASS_TINY w_class = WEIGHT_CLASS_TINY
slot_flags = SLOT_BELT slot_flags = SLOT_BELT
@@ -213,12 +214,12 @@
var/obj/screen/alert/bloodsense/BS var/obj/screen/alert/bloodsense/BS
if(newstruct.mind && ((stoner && iscultist(stoner)) || cultoverride) && SSticker && SSticker.mode) if(newstruct.mind && ((stoner && iscultist(stoner)) || cultoverride) && SSticker && SSticker.mode)
SSticker.mode.add_cultist(newstruct.mind, 0) SSticker.mode.add_cultist(newstruct.mind, 0)
BS = newstruct.alerts.Find("bloodsense")
if(iscultist(stoner) || cultoverride) if(iscultist(stoner) || cultoverride)
to_chat(newstruct, "<b>You are still bound to serve the cult[stoner ? " and [stoner]":""], follow their orders and help them complete their goals at all costs.</b>") to_chat(newstruct, "<b>You are still bound to serve the cult[stoner ? " and [stoner]":""], follow their orders and help them complete their goals at all costs.</b>")
else if(stoner) else if(stoner)
to_chat(newstruct, "<b>You are still bound to serve your creator, [stoner], follow their orders and help them complete their goals at all costs.</b>") to_chat(newstruct, "<b>You are still bound to serve your creator, [stoner], follow their orders and help them complete their goals at all costs.</b>")
BS = newstruct.throw_alert("bloodsense", /obj/screen/alert/bloodsense) newstruct.clear_alert("bloodsense")
BS = newstruct.throw_alert("bloodsense", /obj/screen/alert/bloodsense)
if(BS) if(BS)
BS.Cviewer = newstruct BS.Cviewer = newstruct
newstruct.cancel_camera() newstruct.cancel_camera()
+14 -8
View File
@@ -44,8 +44,8 @@
"corazone", // prevents cardiac arrest damage "corazone", // prevents cardiac arrest damage
"mimesbane") // stops them gasping from lack of air. "mimesbane") // stops them gasping from lack of air.
/obj/machinery/clonepod/New() /obj/machinery/clonepod/Initialize()
..() . = ..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/clonepod(null) var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/clonepod(null)
B.apply_default_parts(src) B.apply_default_parts(src)
@@ -358,8 +358,12 @@
/obj/machinery/clonepod/proc/go_out() /obj/machinery/clonepod/proc/go_out()
countdown.stop() countdown.stop()
var/mob/living/mob_occupant = occupant var/mob/living/mob_occupant = occupant
var/turf/T = get_turf(src)
if(mess) //Clean that mess and dump those gibs! if(mess) //Clean that mess and dump those gibs!
for(var/obj/fl in unattached_flesh)
fl.forceMove(T)
unattached_flesh.Cut()
mess = FALSE mess = FALSE
new /obj/effect/gibspawner/generic(loc) new /obj/effect/gibspawner/generic(loc)
audible_message("<span class='italics'>You hear a splat.</span>") audible_message("<span class='italics'>You hear a splat.</span>")
@@ -375,10 +379,12 @@
to_chat(occupant, "<span class='notice'><b>There is a bright flash!</b><br><i>You feel like a new being.</i></span>") to_chat(occupant, "<span class='notice'><b>There is a bright flash!</b><br><i>You feel like a new being.</i></span>")
mob_occupant.flash_act() mob_occupant.flash_act()
var/turf/T = get_turf(src)
occupant.forceMove(T) occupant.forceMove(T)
icon_state = "pod_0" icon_state = "pod_0"
mob_occupant.domutcheck(1) //Waiting until they're out before possible monkeyizing. The 1 argument forces powers to manifest. mob_occupant.domutcheck(1) //Waiting until they're out before possible monkeyizing. The 1 argument forces powers to manifest.
for(var/fl in unattached_flesh)
qdel(fl)
unattached_flesh.Cut()
occupant = null occupant = null
@@ -389,8 +395,7 @@
SPEAK("Critical error! Please contact a Thinktronic Systems \ SPEAK("Critical error! Please contact a Thinktronic Systems \
technician, as your warranty may be affected.") technician, as your warranty may be affected.")
mess = TRUE mess = TRUE
for(var/obj/item/O in unattached_flesh) maim_clone(mob_occupant) //Remove every bit that's grown back so far to drop later, also destroys bits that haven't grown yet
qdel(O)
icon_state = "pod_g" icon_state = "pod_g"
if(mob_occupant.mind != clonemind) if(mob_occupant.mind != clonemind)
clonemind.transfer_to(mob_occupant) clonemind.transfer_to(mob_occupant)
@@ -450,9 +455,10 @@
var/static/list/zones = list("r_arm", "l_arm", "r_leg", "l_leg") var/static/list/zones = list("r_arm", "l_arm", "r_leg", "l_leg")
for(var/zone in zones) for(var/zone in zones)
var/obj/item/bodypart/BP = H.get_bodypart(zone) var/obj/item/bodypart/BP = H.get_bodypart(zone)
BP.drop_limb() if(BP)
BP.forceMove(src) BP.drop_limb()
unattached_flesh += BP BP.forceMove(src)
unattached_flesh += BP
for(var/o in H.internal_organs) for(var/o in H.internal_organs)
var/obj/item/organ/organ = o var/obj/item/organ/organ = o
+9 -5
View File
@@ -1056,17 +1056,21 @@
/obj/effect/mob_spawn/human/corpse/orionsecurity /obj/effect/mob_spawn/human/corpse/orionsecurity
name = "Spaceport Security" name = "Spaceport Security"
id_job = "Officer"
id_access_list = list(GLOB.access_syndicate)
outfit = /datum/outfit/orionsecurity
/datum/outfit/orionsecurity
name = "Orion Spaceport Security"
uniform = /obj/item/clothing/under/syndicate uniform = /obj/item/clothing/under/syndicate
suit = /obj/item/clothing/suit/armor/vest suit = /obj/item/clothing/suit/armor/vest
shoes = /obj/item/clothing/shoes/combat shoes = /obj/item/clothing/shoes/combat
gloves = /obj/item/clothing/gloves/combat gloves = /obj/item/clothing/gloves/combat
radio = /obj/item/device/radio/headset ears = /obj/item/device/radio/headset
mask = /obj/item/clothing/mask/gas mask = /obj/item/clothing/mask/gas
helmet = /obj/item/clothing/head/helmet/swat head = /obj/item/clothing/head/helmet/swat
back = /obj/item/weapon/storage/backpack back = /obj/item/weapon/storage/backpack
has_id = 1 id = /obj/item/weapon/card/id
id_job = "Officer"
id_access_list = list(GLOB.access_syndicate)
/obj/item/weapon/orion_ship /obj/item/weapon/orion_ship
name = "model settler ship" name = "model settler ship"
@@ -178,7 +178,7 @@
/obj/item/weapon/circuitboard/computer/xenobiology /obj/item/weapon/circuitboard/computer/xenobiology
name = "circuit board (Xenobiology Console)" name = "circuit board (Xenobiology Console)"
build_path = /obj/machinery/computer/camera_advanced/xenobio build_path = /obj/machinery/computer/camera_advanced/xenobio
origin_tech = "programming=3;bio=3" origin_tech = "programming=3;biotech=3"
/obj/item/weapon/circuitboard/computer/base_construction /obj/item/weapon/circuitboard/computer/base_construction
name = "circuit board (Aux Mining Base Construction Console)" name = "circuit board (Aux Mining Base Construction Console)"
build_path = /obj/machinery/computer/camera_advanced/base_construction build_path = /obj/machinery/computer/camera_advanced/base_construction
@@ -151,13 +151,13 @@ obj/machinery/computer/camera_advanced/attack_ai(mob/user)
var/mob/camera/aiEye/remote/remote_eye = C.remote_control var/mob/camera/aiEye/remote/remote_eye = C.remote_control
remote_eye.origin.current_user = null remote_eye.origin.current_user = null
remote_eye.origin.jump_action.Remove(C) remote_eye.origin.jump_action.Remove(C)
remote_eye.eye_user = null
if(C.client) if(C.client)
C.reset_perspective(null) C.reset_perspective(null)
if(remote_eye.visible_icon) if(remote_eye.visible_icon)
C.client.images -= remote_eye.user_image C.client.images -= remote_eye.user_image
for(var/datum/camerachunk/chunk in remote_eye.visibleCameraChunks) for(var/datum/camerachunk/chunk in remote_eye.visibleCameraChunks)
C.client.images -= chunk.obscured chunk.remove(remote_eye)
remote_eye.eye_user = null
C.remote_control = null C.remote_control = null
C.unset_machine() C.unset_machine()
Remove(C) Remove(C)
@@ -54,7 +54,7 @@
/obj/machinery/computer/communications/Topic(href, href_list) /obj/machinery/computer/communications/Topic(href, href_list)
if(..()) if(..())
return return
if (src.z > ZLEVEL_CENTCOM) //Can only use on centcom and SS13 if (z != ZLEVEL_STATION && z != ZLEVEL_CENTCOM) //Can only use on centcom and SS13
to_chat(usr, "<span class='boldannounce'>Unable to establish a connection</span>: \black You're too far away from the station!") to_chat(usr, "<span class='boldannounce'>Unable to establish a connection</span>: \black You're too far away from the station!")
return return
usr.set_machine(src) usr.set_machine(src)
+2 -2
View File
@@ -292,7 +292,7 @@
src.temp = text("Are you sure you wish to delete all records?<br>\n\t<A href='?src=\ref[];temp=1;del_all2=1'>Yes</A><br>\n\t<A href='?src=\ref[];temp=1'>No</A><br>", src, src) src.temp = text("Are you sure you wish to delete all records?<br>\n\t<A href='?src=\ref[];temp=1;del_all2=1'>Yes</A><br>\n\t<A href='?src=\ref[];temp=1'>No</A><br>", src, src)
else if(href_list["del_all2"]) else if(href_list["del_all2"])
investigate_log("[usr.name] ([usr.key]) has deleted all medical records.", "records") investigate_log("[usr.name] ([usr.key]) has deleted all medical records.", INVESTIGATE_RECORDS)
GLOB.data_core.medical.Cut() GLOB.data_core.medical.Cut()
src.temp = "All records deleted." src.temp = "All records deleted."
@@ -458,7 +458,7 @@
src.temp = text("Are you sure you wish to delete the record (Medical Portion Only)?<br>\n\t<A href='?src=\ref[];temp=1;del_r2=1'>Yes</A><br>\n\t<A href='?src=\ref[];temp=1'>No</A><br>", src, src) src.temp = text("Are you sure you wish to delete the record (Medical Portion Only)?<br>\n\t<A href='?src=\ref[];temp=1;del_r2=1'>Yes</A><br>\n\t<A href='?src=\ref[];temp=1'>No</A><br>", src, src)
else if(href_list["del_r2"]) else if(href_list["del_r2"])
investigate_log("[usr.name] ([usr.key]) has deleted the medical records for [active1.fields["name"]].", "records") investigate_log("[usr.name] ([usr.key]) has deleted the medical records for [active1.fields["name"]].", INVESTIGATE_RECORDS)
if(active2) if(active2)
qdel(active2) qdel(active2)
active2 = null active2 = null
+4 -4
View File
@@ -452,7 +452,7 @@ What a mess.*/
temp += "<a href='?src=\ref[src];choice=Clear Screen'>No</a>" temp += "<a href='?src=\ref[src];choice=Clear Screen'>No</a>"
if("Purge All Records") if("Purge All Records")
investigate_log("[usr.name] ([usr.key]) has purged all the security records.", "records") investigate_log("[usr.name] ([usr.key]) has purged all the security records.", INVESTIGATE_RECORDS)
for(var/datum/data/record/R in GLOB.data_core.security) for(var/datum/data/record/R in GLOB.data_core.security)
qdel(R) qdel(R)
GLOB.data_core.security.Cut() GLOB.data_core.security.Cut()
@@ -696,18 +696,18 @@ What a mess.*/
active2.fields["criminal"] = "Parolled" active2.fields["criminal"] = "Parolled"
if("released") if("released")
active2.fields["criminal"] = "Discharged" active2.fields["criminal"] = "Discharged"
investigate_log("[active1.fields["name"]] has been set from [old_field] to [active2.fields["criminal"]] by [usr.name] ([usr.key]).", "records") investigate_log("[active1.fields["name"]] has been set from [old_field] to [active2.fields["criminal"]] by [usr.name] ([usr.key]).", INVESTIGATE_RECORDS)
for(var/mob/living/carbon/human/H in GLOB.mob_list) //thanks for forcing me to do this, whoever wrote this shitty records system for(var/mob/living/carbon/human/H in GLOB.mob_list) //thanks for forcing me to do this, whoever wrote this shitty records system
H.sec_hud_set_security_status() H.sec_hud_set_security_status()
if("Delete Record (Security) Execute") if("Delete Record (Security) Execute")
investigate_log("[usr.name] ([usr.key]) has deleted the security records for [active1.fields["name"]].", "records") investigate_log("[usr.name] ([usr.key]) has deleted the security records for [active1.fields["name"]].", INVESTIGATE_RECORDS)
if(active2) if(active2)
qdel(active2) qdel(active2)
active2 = null active2 = null
if("Delete Record (ALL) Execute") if("Delete Record (ALL) Execute")
if(active1) if(active1)
investigate_log("[usr.name] ([usr.key]) has deleted all records for [active1.fields["name"]].", "records") investigate_log("[usr.name] ([usr.key]) has deleted all records for [active1.fields["name"]].", INVESTIGATE_RECORDS)
for(var/datum/data/record/R in GLOB.data_core.medical) for(var/datum/data/record/R in GLOB.data_core.medical)
if((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"])) if((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"]))
qdel(R) qdel(R)
+1 -1
View File
@@ -317,7 +317,7 @@
/obj/machinery/disco/proc/dance(var/mob/living/M) //Show your moves /obj/machinery/disco/proc/dance(var/mob/living/M) //Show your moves
set waitfor = FALSE
switch(rand(0,9)) switch(rand(0,9))
if(0 to 1) if(0 to 1)
dance2(M) dance2(M)
+10 -14
View File
@@ -97,7 +97,14 @@
var/static/list/airlock_overlays = list() var/static/list/airlock_overlays = list()
/obj/machinery/door/airlock/Initialize() /obj/machinery/door/airlock/Initialize()
..() . = ..()
if (cyclelinkeddir)
cyclelinkairlock()
if(frequency)
set_frequency(frequency)
update_icon()
wires = new /datum/wires/airlock(src) wires = new /datum/wires/airlock(src)
if(src.closeOtherId != null) if(src.closeOtherId != null)
spawn (5) spawn (5)
@@ -120,14 +127,6 @@
diag_hud.add_to_hud(src) diag_hud.add_to_hud(src)
diag_hud_set_electrified() diag_hud_set_electrified()
/obj/machinery/door/airlock/Initialize()
..()
if (cyclelinkeddir)
cyclelinkairlock()
if(frequency)
set_frequency(frequency)
update_icon()
/obj/machinery/door/airlock/proc/cyclelinkairlock() /obj/machinery/door/airlock/proc/cyclelinkairlock()
if (cyclelinkedairlock) if (cyclelinkedairlock)
cyclelinkedairlock.cyclelinkedairlock = null cyclelinkedairlock.cyclelinkedairlock = null
@@ -199,14 +198,11 @@
qdel(src) qdel(src)
/obj/machinery/door/airlock/Destroy() /obj/machinery/door/airlock/Destroy()
qdel(wires) QDEL_NULL(wires)
wires = null
if(charge) if(charge)
qdel(charge) qdel(charge)
charge = null charge = null
if(electronics) QDEL_NULL(electronics)
qdel(electronics)
electronics = null
if (cyclelinkedairlock) if (cyclelinkedairlock)
if (cyclelinkedairlock.cyclelinkedairlock == src) if (cyclelinkedairlock.cyclelinkedairlock == src)
cyclelinkedairlock.cyclelinkedairlock = null cyclelinkedairlock.cyclelinkedairlock = null
+4 -4
View File
@@ -1,5 +1,5 @@
GLOBAL_LIST_EMPTY(doppler_arrays) GLOBAL_LIST_EMPTY(doppler_arrays)
/obj/machinery/doppler_array /obj/machinery/doppler_array
name = "tachyon-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>" 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() /obj/machinery/doppler_array/New()
..() ..()
GLOB.doppler_arrays += src GLOB.doppler_arrays += src
/obj/machinery/doppler_array/Destroy() /obj/machinery/doppler_array/Destroy()
GLOB.doppler_arrays -= src GLOB.doppler_arrays -= src
return ..() return ..()
/obj/machinery/doppler_array/process() /obj/machinery/doppler_array/process()
+11 -1
View File
@@ -51,7 +51,7 @@ Possible to do for anyone motivated enough:
var/static/list/holopads = list() var/static/list/holopads = list()
/obj/machinery/holopad/Initialize() /obj/machinery/holopad/Initialize()
..() . = ..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/holopad(null) var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/holopad(null)
B.apply_default_parts(src) B.apply_default_parts(src)
holopads += src holopads += src
@@ -112,6 +112,10 @@ Possible to do for anyone motivated enough:
return ..() return ..()
/obj/machinery/holopad/AltClick(mob/living/carbon/human/user) /obj/machinery/holopad/AltClick(mob/living/carbon/human/user)
if(isAI(user))
hangup_all_calls()
return
if(!CheckCallClose()) if(!CheckCallClose())
interact(user) 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.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
popup.open() 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) /obj/machinery/holopad/Topic(href, href_list)
if(..() || isAI(usr)) if(..() || isAI(usr))
return return
+1 -1
View File
@@ -143,7 +143,7 @@
else else
log_msg += "nothing" log_msg += "nothing"
log_msg += " [sending ? "to" : "from"] [target_x], [target_y], [z] ([A ? A.name : "null area"])" log_msg += " [sending ? "to" : "from"] [target_x], [target_y], [z] ([A ? A.name : "null area"])"
investigate_log(log_msg.Join(), "telesci") investigate_log(log_msg.Join(), INVESTIGATE_TELESCI)
updateDialog() updateDialog()
//Starts in the briefcase. Don't spawn this directly, or it will runtime when closing. //Starts in the briefcase. Don't spawn this directly, or it will runtime when closing.
@@ -87,7 +87,9 @@
if(has_cover) if(has_cover)
cover = new /obj/machinery/porta_turret_cover(loc) cover = new /obj/machinery/porta_turret_cover(loc)
cover.parent_turret = src 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) if(!has_cover)
INVOKE_ASYNC(src, .proc/popUp) INVOKE_ASYNC(src, .proc/popUp)
@@ -227,7 +229,6 @@
update_icon() update_icon()
/obj/machinery/porta_turret/attackby(obj/item/I, mob/user, params) /obj/machinery/porta_turret/attackby(obj/item/I, mob/user, params)
if(stat & BROKEN) if(stat & BROKEN)
if(istype(I, /obj/item/weapon/crowbar)) if(istype(I, /obj/item/weapon/crowbar))
@@ -553,6 +554,7 @@
use_power = 0 use_power = 0
has_cover = 0 has_cover = 0
scan_range = 9 scan_range = 9
req_access = list(GLOB.access_syndicate)
stun_projectile = /obj/item/projectile/bullet stun_projectile = /obj/item/projectile/bullet
lethal_projectile = /obj/item/projectile/bullet lethal_projectile = /obj/item/projectile/bullet
lethal_projectile_sound = 'sound/weapons/Gunshot.ogg' lethal_projectile_sound = 'sound/weapons/Gunshot.ogg'
@@ -569,6 +571,8 @@
return 10 //Syndicate turrets shoot everything not in their faction return 10 //Syndicate turrets shoot everything not in their faction
/obj/machinery/porta_turret/syndicate/pod /obj/machinery/porta_turret/syndicate/pod
max_integrity = 40
integrity_failure = 20
obj_integrity = 40 obj_integrity = 40
stun_projectile = /obj/item/projectile/bullet/weakbullet3 stun_projectile = /obj/item/projectile/bullet/weakbullet3
lethal_projectile = /obj/item/projectile/bullet/weakbullet3 lethal_projectile = /obj/item/projectile/bullet/weakbullet3
@@ -944,6 +948,7 @@
var/atom/target var/atom/target
var/turf/target_turf var/turf/target_turf
var/warned = FALSE var/warned = FALSE
var/mouseparams
//BUCKLE HOOKS //BUCKLE HOOKS
@@ -987,8 +992,8 @@
icon = 'icons/obj/weapons.dmi' icon = 'icons/obj/weapons.dmi'
icon_state = "offhand" icon_state = "offhand"
w_class = WEIGHT_CLASS_HUGE w_class = WEIGHT_CLASS_HUGE
flags = ABSTRACT | NODROP flags = ABSTRACT | NODROP | NOBLUDGEON
resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF | NOBLUDGEON resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF
var/obj/machinery/manned_turret/turret var/obj/machinery/manned_turret/turret
/obj/item/gun_control/New(obj/machinery/manned_turret/MT) /obj/item/gun_control/New(obj/machinery/manned_turret/MT)
@@ -1000,11 +1005,22 @@
/obj/item/gun_control/CanItemAutoclick() /obj/item/gun_control/CanItemAutoclick()
return 1 return 1
/obj/item/gun_control/afterattack(atom/targeted_atom, mob/user) /obj/item/gun_control/attack_obj(obj/O, mob/living/user)
user.changeNext_move(CLICK_CD_MELEE)
O.attacked_by(src, user)
/obj/item/gun_control/attack(mob/living/M, mob/living/user)
user.lastattacked = M
M.lastattacker = user
M.attacked_by(src, user)
add_fingerprint(user)
/obj/item/gun_control/afterattack(atom/targeted_atom, mob/user, flag, params)
..() ..()
var/obj/machinery/manned_turret/E = user.buckled var/obj/machinery/manned_turret/E = user.buckled
E.setDir(get_dir(E,targeted_atom)) E.setDir(get_dir(E,targeted_atom))
user.setDir(E.dir) user.setDir(E.dir)
E.mouseparams = params
switch(E.dir) switch(E.dir)
if(NORTH) if(NORTH)
E.layer = BELOW_MOB_LAYER E.layer = BELOW_MOB_LAYER
@@ -1052,15 +1068,15 @@
else else
cooldown = world.time + cooldown_duration cooldown = world.time + cooldown_duration
warned = FALSE warned = FALSE
INVOKE_ASYNC(src, /obj/machinery/manned_turret/.proc/volley) volley(user)
/obj/machinery/manned_turret/proc/volley() /obj/machinery/manned_turret/proc/volley(mob/user)
target_turf = get_turf(target) target_turf = get_turf(target)
for(var/i in 1 to number_of_shots) for(var/i in 1 to number_of_shots)
addtimer(CALLBACK(src, /obj/machinery/manned_turret/.proc/fire_helper), i*rate_of_fire) addtimer(CALLBACK(src, /obj/machinery/manned_turret/.proc/fire_helper, user), i*rate_of_fire)
/obj/machinery/manned_turret/proc/fire_helper() /obj/machinery/manned_turret/proc/fire_helper(mob/user)
if(!src) if(!src)
return return
var/turf/targets_from = get_turf(src) var/turf/targets_from = get_turf(src)
@@ -1069,11 +1085,10 @@
var/obj/item/projectile/P = new projectile_type(targets_from) var/obj/item/projectile/P = new projectile_type(targets_from)
P.current = targets_from P.current = targets_from
P.starting = targets_from P.starting = targets_from
P.firer = src P.firer = user
P.original = target P.original = target
playsound(src, 'sound/weapons/Gunshot_smg.ogg', 75, 1) playsound(src, 'sound/weapons/Gunshot_smg.ogg', 75, 1)
P.yo = target.y - targets_from.y + rand(-1,1) P.preparePixelProjectile(target, target_turf, user, mouseparams, rand(-9, 9))
P.xo = target.x - targets_from.x + rand(-1,1)
P.fire() P.fire()
/obj/machinery/manned_turret/ultimate // Admin-only proof of concept for autoclicker automatics /obj/machinery/manned_turret/ultimate // Admin-only proof of concept for autoclicker automatics
+1 -1
View File
@@ -154,7 +154,7 @@
M.forceMove(loc) M.forceMove(loc)
if(prob(30)) if(prob(30))
explosion(get_turf(loc), 0, 0, 1, 3) explosion(get_turf(loc), 0, 0, 1, 3)
if(wreckage) if(wreckage)
var/obj/structure/mecha_wreckage/WR = new wreckage(loc, AI) var/obj/structure/mecha_wreckage/WR = new wreckage(loc, AI)
+1
View File
@@ -10,6 +10,7 @@
/obj/effect/forcefield/cult /obj/effect/forcefield/cult
desc = "An unholy shield that blocks all attacks." desc = "An unholy shield that blocks all attacks."
name = "glowing wall" name = "glowing wall"
icon = 'icons/effects/cult_effects.dmi'
icon_state = "cultshield" icon_state = "cultshield"
///////////Mimewalls/////////// ///////////Mimewalls///////////
+1 -1
View File
@@ -39,7 +39,7 @@
var/range_flash = 3 var/range_flash = 3
/obj/effect/mine/explosive/mineEffect(mob/victim) /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 /obj/effect/mine/stun
+10 -3
View File
@@ -632,7 +632,14 @@ GLOBAL_LIST_EMPTY(PDAs)
L = get(src, /mob/living/silicon) L = get(src, /mob/living/silicon)
if(L && L.stat != UNCONSCIOUS) if(L && L.stat != UNCONSCIOUS)
to_chat(L, "\icon[src] <b>Message from [source.owner] ([source.ownjob]), </b>\"[msg.message]\"[msg.get_photo_ref()] (<a href='byond://?src=\ref[src];choice=Message;skiprefresh=1;target=\ref[source]'>Reply</a>)")
var/hrefstart
var/hrefend
if (isAI(L))
hrefstart = "<a href='?src=\ref[L];track=[html_encode(source.owner)]'>"
hrefend = "</a>"
to_chat(L, "\icon[src.icon] <b>Message from [hrefstart][source.owner] ([source.ownjob])[hrefend], </b>\"[msg.message]\"[msg.get_photo_ref()] (<a href='byond://?src=\ref[src];choice=Message;skiprefresh=1;target=\ref[source]'>Reply</a>)")
update_icon() update_icon()
add_overlay(icon_alert) add_overlay(icon_alert)
@@ -890,9 +897,9 @@ GLOBAL_LIST_EMPTY(PDAs)
if(T) if(T)
T.hotspot_expose(700,125) T.hotspot_expose(700,125)
if(istype(cartridge, /obj/item/weapon/cartridge/syndicate)) if(istype(cartridge, /obj/item/weapon/cartridge/syndicate))
explosion(T, -1, 1, 3, 4) explosion(T, -1, 1, 3, 4)
else else
explosion(T, -1, -1, 2, 3) explosion(T, -1, -1, 2, 3)
qdel(src) qdel(src)
return return
+8 -9
View File
@@ -10,15 +10,14 @@
resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE
/obj/item/device/paicard/Initialize() /obj/item/device/paicard/Initialize()
..()
SSpai.pai_card_list += src SSpai.pai_card_list += src
add_overlay("pai-off") add_overlay("pai-off")
return ..()
/obj/item/device/paicard/Destroy() /obj/item/device/paicard/Destroy()
//Will stop people throwing friend pAIs into the singularity so they can respawn //Will stop people throwing friend pAIs into the singularity so they can respawn
SSpai.pai_card_list -= src SSpai.pai_card_list -= src
if(!isnull(pai)) QDEL_NULL(pai)
pai.death(0)
return ..() return ..()
/obj/item/device/paicard/attack_self(mob/user) /obj/item/device/paicard/attack_self(mob/user)
@@ -26,9 +25,9 @@
return return
user.set_machine(src) user.set_machine(src)
var/dat = "<TT><B>Personal AI Device</B><BR>" 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)
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 += "Installed Personality: [pai.name]<br>"
dat += "Prime directive: <br>[pai.laws.zeroth]<br>" dat += "Prime directive: <br>[pai.laws.zeroth]<br>"
for(var/slaws in pai.laws.supplied) 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='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='userdanger'>Your mental faculties leave you.</span>")
to_chat(pai, "<span class='rose'>oblivion... </span>") to_chat(pai, "<span class='rose'>oblivion... </span>")
pai.death(0) removePersonality()
if(href_list["wires"]) if(href_list["wires"])
var/wire = text2num(href_list["wires"]) var/wire = text2num(href_list["wires"])
if(pai.radio) if(pai.radio)
@@ -119,9 +118,9 @@
audible_message("\The [src] plays a cheerful startup noise!") audible_message("\The [src] plays a cheerful startup noise!")
/obj/item/device/paicard/proc/removePersonality() /obj/item/device/paicard/proc/removePersonality()
src.pai = null QDEL_NULL(pai)
src.cut_overlays() cut_overlays()
src.add_overlay("pai-off") add_overlay("pai-off")
/obj/item/device/paicard/proc/setEmotion(emotion) /obj/item/device/paicard/proc/setEmotion(emotion)
if(pai) if(pai)

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