diff --git a/_maps/RandomRuins/SpaceRuins/BlueMoon/ninja_zen.dmm b/_maps/RandomRuins/SpaceRuins/BlueMoon/ninja_zen.dmm new file mode 100644 index 0000000000000..1244849b9f503 --- /dev/null +++ b/_maps/RandomRuins/SpaceRuins/BlueMoon/ninja_zen.dmm @@ -0,0 +1,4246 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +// Ninja dojo extracted from Paradise SS220 CentComm.dmm + +"mVX" = ( +/turf/space, +/area/space) + +"mNj" = ( +/turf/simulated/wall/indestructible/rock, +/area/space) + +"ykS" = ( +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"emN" = ( +/obj/structure/flora/rock/icy, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"sQx" = ( +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"tdj" = ( +/obj/structure/flora/grass/both, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"rns" = ( +/obj/structure/flora/tree/dead, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"kQk" = ( +/obj/structure/flora/grass/brown, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"ycO" = ( +/obj/structure/flora/tree/pine{ + pixel_x = 1 + }, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"adW" = ( +/obj/structure/energy_caltrops/noselfdestroy, +/obj/structure/flora/grass/both, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"awu" = ( +/obj/structure/energy_caltrops/noselfdestroy, +/obj/structure/flora/grass/both, +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"axc" = ( +/obj/structure/energy_caltrops/noselfdestroy, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"hGJ" = ( +/obj/structure/flora/grass/both, +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"aIz" = ( +/obj/structure/flora/grass/both, +/obj/structure/flora/tree/pine{ + pixel_x = 1 + }, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"jSw" = ( +/turf/simulated/wall/indestructible/rock, +/area/ruin/space/ninja_zen) + +"dMb" = ( +/turf/simulated/wall/indestructible/rock/dark, +/area/ruin/space/ninja_zen) + +"aYy" = ( +/obj/structure/flora/tree/pine{ + pixel_x = 1 + }, +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"bRM" = ( +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"nhl" = ( +/obj/machinery/door/airlock/survival_pod{ + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"bhg" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/ruin/space/ninja_zen) + +"bht" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/indestructible{ + icon_state = "floor" + }, +/area/ruin/space/ninja_zen) + +"bhL" = ( +/obj/structure/showcase{ + desc = "This one is empty"; + icon = 'icons/obj/ninjaobjects.dmi'; + icon_state = "ninjastasis-none"; + name = "Suit energy supply"; + pixel_x = 10 + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"bDR" = ( +/obj/structure/railing, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/ruin/space/ninja_zen) + +"bEB" = ( +/obj/structure/showcase{ + desc = "This one has an old damaged suit in it. Not working..."; + icon = 'icons/obj/ninjaobjects.dmi'; + icon_state = "ninjastasis-m"; + name = "Suit energy supply" + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"bGZ" = ( +/obj/machinery/power/smes/magical{ + color = "#444455"; + desc = "Может показаться, что он сломан и не работает, но на самом деле он специально настроен для подзарядки костюма посредством использования на нём перчаток"; + name = "SpiderClan power storage unit"; + resistance_flags = 371 + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"bHo" = ( +/obj/effect/turf_decal/box, +/obj/structure/ninjatele{ + pixel_y = 25 + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"bHR" = ( +/obj/machinery/ninja_mindscan_machine, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"bJL" = ( +/obj/structure/ninjatele{ + pixel_y = 25 + }, +/obj/effect/turf_decal/box, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"eFv" = ( +/obj/effect/turf_decal{ + icon = 'icons/obj/ninjaobjects.dmi'; + icon_state = "wallkatana"; + name = "Katanas" + }, +/turf/simulated/wall/indestructible/reinforced/rusted, +/area/ruin/space/ninja_zen) + +"ceS" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/indestructible{ + icon_state = "floor" + }, +/area/ruin/space/ninja_zen) + +"bRx" = ( +/turf/simulated/floor/indestructible{ + icon_state = "floor" + }, +/area/ruin/space/ninja_zen) + +"nWf" = ( +/turf/simulated/wall/indestructible/reinforced/rusted, +/area/ruin/space/ninja_zen) + +"cfa" = ( +/obj/item/grown/log/tree{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grown/log/tree, +/obj/item/grown/log/tree{ + pixel_x = -3; + pixel_y = 3 + }, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"buy" = ( +/obj/structure/chair/stool, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"chj" = ( +/obj/structure/bookcase, +/obj/item/book/manual, +/obj/item/book/manual, +/obj/item/book/manual, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"cig" = ( +/obj/structure/railing/corner, +/obj/machinery/light/small{ + dir = 4; + tag = "icon-bulb1 (EAST)" + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"civ" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/simulated/floor/indestructible{ + icon_state = "floor" + }, +/area/ruin/space/ninja_zen) + +"bBY" = ( +/obj/machinery/door/airlock/survival_pod{ + }, +/turf/simulated/floor/indestructible{ + icon_state = "floor" + }, +/area/ruin/space/ninja_zen) + +"cjy" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"cjQ" = ( +/obj/machinery/door/window/brigdoor{ + color = "#00f700"; + dir = 8; +; + icon_state = "rightsecure"; + name = "Riot Control" + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"ckq" = ( +/obj/item/grown/log/tree{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/grown/log/tree, +/obj/item/grown/log/tree{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/hatchet/wooden, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"ckC" = ( +/obj/structure/chair/stool, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"hxT" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"cli" = ( +/obj/item/shard, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"pqv" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"bYb" = ( +/obj/structure/chair/stool, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"byG" = ( +/obj/structure/flora/grass/both, +/obj/item/storage/fancy/cigarettes/cigpack_robustgold, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"cBU" = ( +/obj/machinery/hydroponics/soil, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"cCT" = ( +/obj/structure/bookcase, +/obj/item/book/manual, +/obj/item/book/manual, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"cDk" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"cDU" = ( +/obj/item/flag/ninja, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"cEg" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-34"; + tag = "icon-plant-34" + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"byZ" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"bAh" = ( +/obj/machinery/light/small{ + dir = 4; + tag = "icon-bulb1 (EAST)" + }, +/obj/structure/sign/poster/contraband/hacking_guide{ + pixel_x = 32 + }, +/turf/simulated/floor/indestructible{ + icon_state = "floor" + }, +/area/ruin/space/ninja_zen) + +"gVw" = ( +/obj/item/radio/intercom/syndicate/directional/west, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"nEN" = ( +/obj/effect/baseturf_helper/asteroid/snow{ + baseturf = /turf/simulated/floor/indestructible/snow; + name = "snow baseturf editor" + }, +/turf/simulated/wall/indestructible/reinforced/rusted, +/area/ruin/space/ninja_zen) + +"cES" = ( +/obj/structure/window/plasmareinforced{ + color = "#00f700"; + dir = 8 + }, +/obj/machinery/ninja_clonepod{ + pixel_x = 3 + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"cHK" = ( +/obj/item/broken_bottle, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"cHT" = ( +/obj/structure/bonfire/dense, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"kQT" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"cQF" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 4; + tag = "icon-bulb1 (EAST)" + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"cQJ" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"cRm" = ( +/obj/structure/table/abductor{ + color = "#99ff99"; + name = "table" + }, +/obj/structure/sign/poster/contraband/cc64k_ad{ + pixel_y = 32 + }, +/obj/machinery/ninja_bloodscan_machine, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"bGP" = ( +/obj/structure/table/abductor{ + color = "#99ff99"; + name = "table" + }, +/obj/item/toy/figure/ninja{ + pixel_x = 8; + pixel_y = 14 + }, +/obj/item/storage/box/syringes{ + pixel_x = -1; + pixel_y = 12 + }, +/obj/item/storage/fancy/vials, +/turf/simulated/floor/indestructible{ + icon_state = "floor" + }, +/area/ruin/space/ninja_zen) + +"bNc" = ( +/obj/machinery/door/window/brigdoor{ + color = "#00f700"; + dir = 8; +; + name = "Riot Control" + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"cRn" = ( +/obj/item/lighter/zippo/ninja, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"ova" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"cUD" = ( +/obj/effect/turf_decal/weather/snow/corner, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"cVb" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/obj/item/shard, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"diG" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"diH" = ( +/obj/machinery/hydroponics/soil, +/obj/item/seeds/wheat/rice, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"dmv" = ( +/obj/effect/turf_decal/sand{ + alpha = 128 + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"cmJ" = ( +/obj/effect/turf_decal/sand{ + alpha = 128 + }, +/turf/simulated/floor/plating/asteroid{ + icon_state = "asteroidfloor"; + name = "floor" + }, +/area/ruin/space/ninja_zen) + +"qDI" = ( +/obj/effect/turf_decal{ + dir = 1; + icon = 'icons/obj/ninjaobjects.dmi'; + icon_state = "wallkatana"; + name = "Katanas" + }, +/turf/simulated/wall/indestructible/reinforced/rusted, +/area/ruin/space/ninja_zen) + +"dnL" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"dov" = ( +/obj/structure/chair/stool, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"drh" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"drz" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"dsX" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/ruin/space/ninja_zen) + +"coI" = ( +/obj/machinery/door/airlock/survival_pod{ + }, +/obj/effect/turf_decal/sand{ + alpha = 128 + }, +/turf/simulated/floor/plating/asteroid{ + icon_state = "asteroidfloor"; + name = "floor" + }, +/area/ruin/space/ninja_zen) + +"dtK" = ( +/turf/simulated/floor/plating/asteroid{ + icon_state = "asteroidfloor"; + name = "floor" + }, +/area/ruin/space/ninja_zen) + +"dtL" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/turf/simulated/floor/plating/asteroid{ + icon_state = "asteroidplating"; + name = "floor" + }, +/area/ruin/space/ninja_zen) + +"duf" = ( +/obj/item/tank/internals/oxygen/ninja{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/tank/internals/oxygen/ninja, +/obj/item/tank/internals/oxygen/ninja{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/structure/rack, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"cqi" = ( +/obj/structure/table/abductor{ + color = "#99ff99"; + name = "table" + }, +/obj/item/storage/box/manacles{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/storage/box/manacles{ + pixel_x = -3; + pixel_y = 2 + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"duk" = ( +/obj/structure/sign/poster/official/air2{ + pixel_y = -32 + }, +/obj/machinery/portable_atmospherics/canister/oxygen{ + maximum_pressure = 50000 + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"dum" = ( +/obj/structure/rack, +/obj/item/tank/internals/emergency_oxygen/double/ninja{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/tank/internals/emergency_oxygen/double/ninja, +/obj/item/tank/internals/emergency_oxygen/double/ninja{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/simulated/floor/indestructible{ + icon_state = "floorgrime" + }, +/area/ruin/space/ninja_zen) + +"cxG" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"kjK" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"dvt" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 5 + }, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"dEs" = ( +/obj/structure/flora/straw_bail, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"cMD" = ( +/obj/machinery/door/airlock/survival_pod{ + }, +/turf/simulated/floor/plating/asteroid{ + icon_state = "asteroidwarning"; + name = "floor" + }, +/area/ruin/space/ninja_zen) + +"gGY" = ( +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"dLF" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 9 + }, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"dRA" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/turf/simulated/floor/wood/cherry, +/area/ruin/space/ninja_zen) + +"dYC" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/turf/simulated/floor/wood/cherry, +/area/ruin/space/ninja_zen) + +"dMC" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"dGF" = ( +/mob/living/simple_animal/hostile/carp/koi, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"dJG" = ( +/obj/effect/mapping_helpers/light{ + light_power = 3 + }, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"lpu" = ( +/obj/effect/turf_decal/weather/snow/corner, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"dSA" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"dTy" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"dKH" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/obj/effect/mapping_helpers/light{ + light_power = 3 + }, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"dVZ" = ( +/obj/effect/mapping_helpers/light{ + light_power = 3 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"dTO" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"dUz" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 1 + }, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"dXa" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"dYY" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"eaU" = ( +/obj/effect/turf_decal/weather/snow/corner, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"eia" = ( +/obj/effect/turf_decal/weather/snow/corner, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"ejI" = ( +/obj/structure/flora/grass/both, +/mob/living/simple_animal/pet/penguin/emperor, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"ejV" = ( +/mob/living/simple_animal/pet/penguin/baby, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"ekh" = ( +/obj/structure/flora/tree/dead, +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"eph" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow/corner, +/turf/simulated/floor/indestructible/beach/water/deep/dense, +/area/ruin/space/ninja_zen) + +"epx" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/simulated/floor/wood/cherry, +/area/ruin/space/ninja_zen) + +"eqJ" = ( +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/flora/grass/both, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"hFk" = ( +/turf/simulated/wall/mineral/wood, +/area/ruin/space/ninja_zen) + +"hDU" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/structure/mineral_door/wood/paperframe, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "sepia" + }, +/area/ruin/space/ninja_zen) + +"ery" = ( +/obj/effect/mapping_helpers/light{ + light_power = 3 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"eLT" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-34"; + tag = "icon-plant-34" + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"eNb" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"esx" = ( +/obj/machinery/light{ + dir = 1; + switchcount = 50 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"euF" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"nXT" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/mineral_door/wood/paperframe, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "sepia" + }, +/area/ruin/space/ninja_zen) + +"eyD" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"nYn" = ( +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"fCS" = ( +/turf/simulated/floor/carpet/blue, +/area/ruin/space/ninja_zen) + +"eKi" = ( +/obj/machinery/light{ + dir = 1; + switchcount = 50 + }, +/turf/simulated/floor/carpet/blue, +/area/ruin/space/ninja_zen) + +"eyZ" = ( +/obj/item/flag/ninja, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"eAy" = ( +/obj/item/storage/firstaid/brute{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/firstaid/regular, +/obj/structure/table/wood/fancy/royalblue, +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"eAK" = ( +/obj/structure/rack, +/obj/item/toy/katana{ + desc = "Not really usefull in a real fight"; + name = "training katana" + }, +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"eBc" = ( +/obj/structure/rack, +/obj/item/twohanded/bostaff, +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"eCv" = ( +/obj/structure/rack, +/obj/item/twohanded/bamboospear, +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"eFk" = ( +/obj/structure/rack, +/obj/item/oar{ + desc = "Редко можно увидеть весло с именем. В чём его тайна? Почему его зовут так? Может это связано с некой древней легендой? Или лодочник, что владел им раньше просто оставил на нём свою подпись? Эта информация сокрыта за туманом времени..."; + name = "Миямото Мусаси" + }, +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"eHj" = ( +/obj/item/storage/firstaid/ancient{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/storage/firstaid/fire, +/obj/structure/table/wood/fancy/royalblue, +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"eIx" = ( +/obj/item/flag/ninja, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"eIy" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"fbH" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"gwP" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/flag/ninja, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"nIG" = ( +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"eKa" = ( +/obj/effect/turf_decal/siding/wood/corner, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"hnm" = ( +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"fwi" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood/corner, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"fCu" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/machinery/light/small{ + brightness_range = 2; + light_range = 2; + nightshift_light_range = 2; + tag = "icon-bulb1 (WEST)"; + throw_range = 2 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"fFD" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"glc" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"nct" = ( +/obj/structure/window/full/paperframe, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-cherry" + }, +/area/ruin/space/ninja_zen) + +"tcW" = ( +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"nFg" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-34"; + tag = "icon-plant-34" + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"nPr" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 4; + tag = "icon-bulb1 (EAST)" + }, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"ncR" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/structure/mineral_door/wood/paperframe, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "sepia" + }, +/area/ruin/space/ninja_zen) + +"eOx" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood/corner, +/obj/structure/mineral_door/wood/paperframe, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "sepia" + }, +/area/ruin/space/ninja_zen) + +"eOI" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"ePJ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"eQT" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"eRw" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"eTW" = ( +/obj/machinery/light/small{ + dir = 4; + tag = "icon-bulb1 (EAST)" + }, +/turf/simulated/floor/carpet/blue, +/area/ruin/space/ninja_zen) + +"ggg" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"feM" = ( +/obj/structure/flora/grass/both, +/obj/effect/mapping_helpers/light{ + light_power = 3 + }, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"fhO" = ( +/obj/effect/mapping_helpers/light{ + light_power = 3 + }, +/obj/structure/flora/tree/pine{ + pixel_x = 1 + }, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"fiS" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"fjA" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 9 + }, +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"fjX" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"fkF" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/obj/machinery/light{ + dir = 1; + switchcount = 50 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"fnn" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/obj/effect/landmark/ninja_spawn, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"fom" = ( +/obj/structure/bed, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 5 + }, +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/obj/item/bedsheet/black, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"nsA" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"nyJ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"idL" = ( +/obj/structure/chair/sofa/corp/left{ + dir = 4 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"foD" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"foG" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"eRk" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"fqF" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 9 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "tatami"; + name = "Tatami" + }, +/area/ruin/space/ninja_zen) + +"fsX" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "tatami"; + name = "Tatami" + }, +/area/ruin/space/ninja_zen) + +"fts" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 5 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "tatami"; + name = "Tatami" + }, +/area/ruin/space/ninja_zen) + +"kfM" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"fvn" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"gyV" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-34"; + tag = "icon-plant-34" + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"gEA" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"fxA" = ( +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 10 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"fxY" = ( +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/obj/structure/table/abductor{ + color = "#99ff99"; + name = "table" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"fxZ" = ( +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/obj/structure/table/abductor{ + color = "#99ff99"; + name = "table" + }, +/obj/item/storage/box/lights/mixed, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"gFq" = ( +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"fCL" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 6 + }, +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/obj/structure/dresser, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"gSH" = ( +/obj/structure/chair/sofa/corp/right{ + dir = 4 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"fCP" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/drinkingglass/devilskiss{ + pixel_x = -6 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"gLj" = ( +/obj/effect/turf_decal/siding/wood/corner, +/obj/structure/railing/corner, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"hbV" = ( +/obj/effect/turf_decal/siding/wood, +/obj/structure/railing, +/turf/simulated/floor/carpet/blue, +/area/ruin/space/ninja_zen) + +"gQs" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"pOr" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "tatami_nolines"; + name = "Tatami" + }, +/area/ruin/space/ninja_zen) + +"fnh" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "tatami_nolines"; + name = "Tatami" + }, +/area/ruin/space/ninja_zen) + +"hSY" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "tatami_nolines"; + name = "Tatami" + }, +/area/ruin/space/ninja_zen) + +"gXC" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/railing/corner, +/obj/effect/turf_decal/siding/wood/corner, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"hlQ" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/flag/ninja, +/obj/effect/turf_decal/siding/wood/corner, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"fCQ" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"fDl" = ( +/obj/structure/flora/grass/green, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"mUx" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/mineral_door/wood/paperframe, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "sepia" + }, +/area/ruin/space/ninja_zen) + +"hfX" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/ruin/space/ninja_zen) + +"fDZ" = ( +/obj/effect/turf_decal/siding/thinplating{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/ruin/space/ninja_zen) + +"mhh" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-34"; + tag = "icon-plant-34" + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"mhN" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"mGy" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "tatami"; + name = "Tatami" + }, +/area/ruin/space/ninja_zen) + +"fzw" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "tatami"; + name = "Tatami" + }, +/area/ruin/space/ninja_zen) + +"mHR" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "tatami"; + name = "Tatami" + }, +/area/ruin/space/ninja_zen) + +"fER" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"fFf" = ( +/obj/machinery/chem_dispenser/beer/upgraded, +/obj/structure/table/wood/poker, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"fGm" = ( +/obj/machinery/chem_dispenser/soda/upgraded, +/obj/structure/table/wood/poker, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"fGE" = ( +/obj/machinery/vending/boozeomat, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"fJE" = ( +/obj/structure/fermenting_barrel, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"kuh" = ( +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"hIm" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-34"; + tag = "icon-plant-34" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"ggC" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 9 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "sepia" + }, +/area/ruin/space/ninja_zen) + +"fLb" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 5 + }, +/obj/structure/safe/floor, +/obj/item/reagent_containers/food/snacks/chinese/rice, +/obj/item/reagent_containers/food/snacks/chinese/rice, +/obj/item/reagent_containers/food/snacks/chinese/rice, +/obj/item/reagent_containers/food/snacks/grown/rice, +/obj/item/reagent_containers/food/snacks/grown/rice, +/obj/item/reagent_containers/food/snacks/grown/rice, +/obj/item/seeds/wheat/rice, +/obj/item/seeds/wheat/rice, +/obj/item/seeds/wheat/rice, +/obj/item/seeds/wheat/rice, +/obj/item/clothing/head/rice_hat, +/obj/item/reagent_containers/food/condiment/rice, +/obj/item/reagent_containers/food/condiment/rice, +/obj/item/reagent_containers/food/condiment/rice, +/obj/item/reagent_containers/food/condiment/rice, +/obj/item/reagent_containers/food/condiment/rice, +/obj/item/reagent_containers/food/snacks/grown/rice, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "sepia" + }, +/area/ruin/space/ninja_zen) + +"mEY" = ( +/obj/structure/flora/junglebush, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"fNY" = ( +/obj/effect/turf_decal/siding/green{ + dir = 4 + }, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"fPl" = ( +/obj/structure/flora/junglebush, +/obj/effect/turf_decal/siding/green{ + dir = 8 + }, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"hLh" = ( +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"maD" = ( +/obj/item/flag/ninja, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"hVd" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"hXp" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/simulated/floor/carpet/cyan, +/area/ruin/space/ninja_zen) + +"fQx" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/simulated/floor/carpet/cyan, +/area/ruin/space/ninja_zen) + +"fRd" = ( +/obj/structure/chair/sofa/corp/right{ + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"fUp" = ( +/obj/structure/flora/grass/both, +/obj/structure/flora/grass/green, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"nVI" = ( +/obj/effect/mapping_helpers/light{ + light_power = 3 + }, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"qim" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"huE" = ( +/obj/item/flag/ninja, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"ico" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 10 + }, +/obj/structure/toilet{ + dir = 1; + layer = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "sepia" + }, +/area/ruin/space/ninja_zen) + +"fVE" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 6 + }, +/obj/structure/mirror{ + pixel_y = -30 + }, +/obj/structure/sink{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "sepia" + }, +/area/ruin/space/ninja_zen) + +"igq" = ( +/obj/structure/flora/junglebush, +/obj/structure/flora/rock/pile/largejungle{ + icon_state = "rocks1" + }, +/obj/structure/flora/tree/jungle/small, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"iiB" = ( +/obj/effect/turf_decal/siding/green{ + dir = 4 + }, +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"uQK" = ( +/obj/effect/mapping_helpers/light{ + light_power = 3 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"fYV" = ( +/obj/effect/turf_decal/siding/green{ + dir = 8 + }, +/obj/structure/flora/ausbushes/reedbush, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"fGl" = ( +/obj/structure/flora/rock/pile/largejungle{ + icon_state = "rocks2" + }, +/obj/structure/flora/tree/jungle/small, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"ipE" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"fNy" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"fZi" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/simulated/floor/carpet/cyan, +/area/ruin/space/ninja_zen) + +"hJH" = ( +/obj/structure/railing/corner, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/simulated/floor/carpet/cyan, +/area/ruin/space/ninja_zen) + +"fZo" = ( +/obj/structure/chair/sofa/corp/left{ + dir = 8 + }, +/obj/structure/railing, +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"iDq" = ( +/obj/machinery/light/small{ + dir = 4; + tag = "icon-bulb1 (EAST)" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-34"; + tag = "icon-plant-34" + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"xKJ" = ( +/obj/effect/turf_decal/siding/green, +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/flora/junglebush, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"iEE" = ( +/obj/effect/turf_decal/siding/green, +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/flora/ausbushes/fernybush, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"iFV" = ( +/obj/effect/turf_decal/siding/green{ + dir = 6 + }, +/obj/structure/flora/ausbushes/ppflowers, +/obj/structure/flora/junglebush, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"gaR" = ( +/obj/structure/flora/junglebush, +/obj/effect/turf_decal/siding/green{ + dir = 10 + }, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"gbQ" = ( +/obj/structure/flora/junglebush, +/obj/effect/turf_decal/siding/green, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"gcK" = ( +/obj/effect/turf_decal/siding/green, +/obj/structure/flora/ausbushes/palebush, +/obj/structure/flora/junglebush, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"tdM" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/light/small{ + brightness_range = 2; + dir = 8; + light_range = 2; + nightshift_light_range = 2; + tag = "icon-bulb1 (WEST)"; + throw_range = 2 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/item/radio/intercom/syndicate/directional/west, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"gdi" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 4; + tag = "icon-bulb1 (EAST)" + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"jOk" = ( +/obj/structure/table/abductor{ + color = "#99ff99"; + name = "table" + }, +/obj/item/stack/nanopaste{ + pixel_x = -7 + }, +/obj/item/storage/toolbox/surgery, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel/freezer, +/area/ruin/space/ninja_zen) + +"lkT" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/simulated/floor/carpet/cyan, +/area/ruin/space/ninja_zen) + +"gfR" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/carpet/cyan, +/area/ruin/space/ninja_zen) + +"ggV" = ( +/obj/effect/baseturf_helper/asteroid/snow{ + baseturf = /turf/simulated/floor/indestructible/snow; + name = "snow baseturf editor" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"ghk" = ( +/obj/structure/table/wood/fancy/green, +/obj/item/reagent_containers/food/snacks/chinese/chowmein{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/reagent_containers/food/snacks/chinese/tao, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"ghl" = ( +/obj/structure/table/wood/fancy/green, +/obj/item/reagent_containers/food/snacks/ricepudding, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"glB" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"gAs" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/radio/intercom/syndicate/directional/north, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"gmb" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"gnr" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/ruin/space/ninja_zen) + +"goz" = ( +/obj/effect/baseturf_helper/asteroid/snow{ + baseturf = /turf/simulated/floor/indestructible/snow; + name = "snow baseturf editor" + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"gpp" = ( +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/ruin/space/ninja_zen) + +"lbe" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/mineral_door/wood/paperframe, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "sepia" + }, +/area/ruin/space/ninja_zen) + +"gAV" = ( +/mob/living/carbon/human/lesser/wolpin, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "tatami"; + name = "Tatami" + }, +/area/ruin/space/ninja_zen) + +"eWL" = ( +/obj/machinery/defibrillator_mount/loaded{ + pixel_x = -30 + }, +/obj/machinery/optable, +/obj/machinery/shower{ + pixel_y = 20 + }, +/turf/simulated/floor/plasteel/freezer, +/area/ruin/space/ninja_zen) + +"fqO" = ( +/turf/simulated/floor/plasteel/freezer, +/area/ruin/space/ninja_zen) + +"gpK" = ( +/obj/structure/table/wood/fancy/green, +/obj/item/reagent_containers/food/snacks/chimichanga, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"kag" = ( +/obj/structure/table/wood/fancy/green, +/obj/item/reagent_containers/food/drinks/tea{ + desc = "Don't drink it with sugar!"; + name = "Green tea"; + pixel_y = 7 + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"ksB" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"gtO" = ( +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"gud" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood/corner, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"gvL" = ( +/obj/structure/railing, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/ruin/space/ninja_zen) + +"eSC" = ( +/obj/structure/railing, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "rampbottom"; + tag = "icon-stage_stairs" + }, +/area/ruin/space/ninja_zen) + +"foC" = ( +/obj/machinery/computer/operating, +/turf/simulated/floor/plasteel/freezer, +/area/ruin/space/ninja_zen) + +"gvQ" = ( +/obj/structure/closet/crate/medical, +/obj/item/reagent_containers/glass/bottle/morphine, +/obj/item/storage/box/beakers, +/obj/item/robot_parts/l_arm, +/obj/item/robot_parts/r_arm, +/obj/item/clothing/mask/surgical, +/obj/item/reagent_containers/iv_bag/bloodsynthetic/oxygenis, +/obj/item/tank/internals/anesthetic, +/obj/item/clothing/mask/breath/medical, +/obj/item/robot_parts/l_leg, +/obj/item/robot_parts/r_leg, +/turf/simulated/floor/plasteel/freezer, +/area/ruin/space/ninja_zen) + +"lIw" = ( +/obj/effect/mapping_helpers/light{ + light_power = 3 + }, +/obj/structure/flora/ausbushes/brflowers, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"gxr" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"lKY" = ( +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"gyg" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"gza" = ( +/obj/machinery/light/small{ + dir = 4; + tag = "icon-bulb1 (EAST)" + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-34"; + tag = "icon-plant-34" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"dCF" = ( +/obj/effect/turf_decal/siding/green{ + dir = 1 + }, +/obj/structure/flora/ausbushes/brflowers, +/obj/structure/flora/bush, +/obj/structure/flora/junglebush, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"dHT" = ( +/obj/structure/flora/junglebush, +/obj/effect/turf_decal/siding/green{ + dir = 1 + }, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"gzb" = ( +/obj/structure/flora/junglebush, +/obj/effect/turf_decal/siding/green{ + dir = 5 + }, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"lVo" = ( +/obj/structure/flora/rock/jungle, +/obj/effect/turf_decal/siding/green{ + dir = 9 + }, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"gzT" = ( +/obj/effect/turf_decal/siding/green{ + dir = 1 + }, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"ebp" = ( +/obj/effect/turf_decal/siding/green{ + dir = 1 + }, +/obj/structure/flora/ausbushes/sunnybush, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"evL" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/light/small{ + brightness_range = 2; + dir = 8; + light_range = 2; + nightshift_light_range = 2; + tag = "icon-bulb1 (WEST)"; + throw_range = 2 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"gLb" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/railing/corner, +/obj/machinery/light/small{ + dir = 4; + tag = "icon-bulb1 (EAST)" + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"gLh" = ( +/obj/machinery/bodyscanner{ + dir = 4; + layer = 3.5 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/simulated/floor/plasteel/freezer, +/area/ruin/space/ninja_zen) + +"gLX" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"gNB" = ( +/obj/effect/mapping_helpers/light{ + light_power = 3 + }, +/obj/structure/flora/grass/both, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"gPe" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 9 + }, +/obj/structure/toilet, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "sepia" + }, +/area/ruin/space/ninja_zen) + +"mfb" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 5 + }, +/obj/structure/mirror{ + pixel_y = 30 + }, +/obj/structure/sink{ + pixel_y = 25 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "sepia" + }, +/area/ruin/space/ninja_zen) + +"gQr" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"gQL" = ( +/obj/structure/flora/rock/pile/largejungle{ + icon_state = "rocks3" + }, +/obj/structure/flora/tree/jungle/small, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"gAB" = ( +/obj/structure/flora/junglebush, +/obj/effect/turf_decal/siding/green{ + dir = 4 + }, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"rMi" = ( +/obj/effect/turf_decal/siding/green{ + dir = 8 + }, +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/flora/junglebush, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"dFC" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"gUj" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/simulated/floor/carpet/cyan, +/area/ruin/space/ninja_zen) + +"mqz" = ( +/obj/structure/chair/sofa/corp/right{ + dir = 8 + }, +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"wFR" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/machinery/vending/chinese, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"jen" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/vending/snack, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"nfS" = ( +/obj/machinery/light, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/vending/cola, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"mzP" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood/corner, +/obj/structure/table/wood/poker, +/obj/item/deck/cards/black, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"mDX" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-34"; + tag = "icon-plant-34" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"hdn" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 10 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "sepia" + }, +/area/ruin/space/ninja_zen) + +"mEn" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 6 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "sepia" + }, +/area/ruin/space/ninja_zen) + +"smo" = ( +/obj/structure/flora/ausbushes/brflowers, +/obj/structure/flora/junglebush, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"dQw" = ( +/obj/structure/flora/bush, +/turf/simulated/floor/indestructible/grass, +/area/ruin/space/ninja_zen) + +"mQp" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/simulated/floor/carpet/cyan, +/area/ruin/space/ninja_zen) + +"mRT" = ( +/obj/structure/chair/sofa/corp/left{ + dir = 8 + }, +/turf/simulated/floor/carpet/black, +/area/ruin/space/ninja_zen) + +"hdz" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "rampbottom" + }, +/area/ruin/space/ninja_zen) + +"heo" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "rampbottom" + }, +/area/ruin/space/ninja_zen) + +"hiM" = ( +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 9 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"njt" = ( +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/obj/structure/table/abductor{ + color = "#99ff99"; + name = "table" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"hlC" = ( +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/obj/structure/table/abductor{ + color = "#99ff99"; + name = "table" + }, +/obj/item/storage/box/lights/mixed, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"hnC" = ( +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 1 + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"hqm" = ( +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 5 + }, +/obj/structure/dresser, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"hqp" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/drinkingglass/devilskiss{ + pixel_x = -6; + pixel_y = 7 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"eeN" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"gmt" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/railing{ + dir = 1 + }, +/turf/simulated/floor/carpet/red, +/area/ruin/space/ninja_zen) + +"rGt" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"hsS" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"nlx" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/flag/ninja, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"nly" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"htL" = ( +/obj/structure/flora/grass/brown, +/obj/structure/flora/grass/both, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"lLo" = ( +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"hua" = ( +/obj/machinery/light, +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"nnl" = ( +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/obj/effect/landmark/ninja_spawn, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"euj" = ( +/obj/effect/turf_decal/tile{ + alpha = 128; + color = "#363636"; + icon_state = "diagonal_edge" + }, +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 6 + }, +/obj/structure/bed, +/obj/item/bedsheet/black, +/turf/simulated/floor/plasteel, +/area/ruin/space/ninja_zen) + +"huw" = ( +/obj/machinery/light/small{ + brightness_range = 2; + light_range = 2; + nightshift_light_range = 2; + tag = "icon-bulb1 (WEST)"; + throw_range = 2 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"nzn" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"okZ" = ( +/turf/simulated/floor/carpet/red, +/area/ruin/space/ninja_zen) + +"huG" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 10 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "tatami_nolines"; + name = "Tatami" + }, +/area/ruin/space/ninja_zen) + +"jHk" = ( +/obj/effect/turf_decal/siding{ + color = "#444444" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "tatami_nolines"; + name = "Tatami" + }, +/area/ruin/space/ninja_zen) + +"hvD" = ( +/obj/effect/turf_decal/siding{ + color = "#444444"; + dir = 6 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "tatami_nolines"; + name = "Tatami" + }, +/area/ruin/space/ninja_zen) + +"hwh" = ( +/obj/structure/flora/tree/pine{ + pixel_x = 1 + }, +/obj/structure/flora/grass/both, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"hES" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/structure/mineral_door/wood/paperframe, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "sepia" + }, +/area/ruin/space/ninja_zen) + +"ePB" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/structure/mineral_door/wood/paperframe, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "sepia" + }, +/area/ruin/space/ninja_zen) + +"hFV" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"hJr" = ( +/obj/machinery/light/small{ + dir = 4; + tag = "icon-bulb1 (EAST)" + }, +/turf/simulated/floor/carpet/red, +/area/ruin/space/ninja_zen) + +"hZr" = ( +/obj/structure/flora/grass/brown, +/obj/structure/flora/grass/brown, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"hmH" = ( +/obj/structure/flora/ausbushes/ywflowers, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"ibG" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"iCc" = ( +/obj/machinery/light, +/obj/effect/turf_decal/siding/wood, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"fwy" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"iFF" = ( +/obj/machinery/light, +/turf/simulated/floor/carpet/red, +/area/ruin/space/ninja_zen) + +"oaT" = ( +/obj/item/flag/ninja, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"obR" = ( +/obj/structure/table/wood/fancy/red, +/obj/item/storage/firstaid/brute{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/storage/firstaid/regular, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"oha" = ( +/obj/structure/rack, +/obj/item/oar, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"oiF" = ( +/obj/structure/rack, +/obj/item/twohanded/bamboospear, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"iKK" = ( +/obj/structure/rack, +/obj/item/twohanded/bostaff, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"iLk" = ( +/obj/structure/rack, +/obj/machinery/light, +/obj/item/toy/katana{ + desc = "Говорят тому, кто будет орудовать этой катаной в настоящей битве — не светит победы даже в бою с пьяницей вооружённым веслом"; + name = "Сасаки Кадзиро" + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"iMb" = ( +/obj/structure/table/wood/fancy/red, +/obj/item/storage/firstaid/ancient{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/storage/firstaid/fire, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"iMF" = ( +/obj/item/flag/ninja, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/simulated/floor/wood{ + icon_state = "fancy-wood-oak" + }, +/area/ruin/space/ninja_zen) + +"iNj" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"ooz" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/turf/simulated/floor/carpet/green, +/area/ruin/space/ninja_zen) + +"knG" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-34"; + tag = "icon-plant-34" + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"gmQ" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-34"; + tag = "icon-plant-34" + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"kKo" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/flag/ninja, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"oQl" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/item/flag/ninja, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"kSn" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-34"; + tag = "icon-plant-34" + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"kSU" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-34"; + tag = "icon-plant-34" + }, +/turf/simulated/floor/wood/fancy/light, +/area/ruin/space/ninja_zen) + +"plK" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-22"; + tag = "icon-plant-22" + }, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"meN" = ( +/obj/structure/flora/grass/both, +/obj/structure/flora/grass/both, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"mfc" = ( +/obj/structure/marker_beacon{ + icon_state = "markerjade-on" + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"mfn" = ( +/obj/structure/marker_beacon{ + icon_state = "markerjade-on" + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"myy" = ( +/obj/effect/mapping_helpers/light{ + light_power = 3 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 6 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"eul" = ( +/turf/simulated/floor/shuttle/transparent_floor, +/area/shuttle/ninja) + +"myE" = ( +/obj/effect/mapping_helpers/light{ + light_power = 3 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 10 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"mBj" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 4 + }, +/turf/simulated/floor/indestructible/asteroid, +/area/ruin/space/ninja_zen) + +"whe" = ( +/turf/simulated/wall/shuttle/nosmooth{ + dir = 9; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_corners" + }, +/area/shuttle/ninja) + +"tlW" = ( +/obj/structure/shuttle/engine/huge{ + dir = 1; + opacity = 0 + }, +/turf/simulated/floor/shuttle/transparent_floor, +/area/shuttle/ninja) + +"rug" = ( +/turf/simulated/wall/shuttle/nosmooth{ + dir = 5; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_corners" + }, +/area/shuttle/ninja) + +"xDA" = ( +/turf/simulated/wall/shuttle/nosmooth{ + dir = 10; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_corners" + }, +/area/shuttle/ninja) + +"tbW" = ( +/turf/simulated/wall/shuttle/nosmooth{ + dir = 1; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_T_alt" + }, +/area/shuttle/ninja) + +"gLw" = ( +/turf/simulated/wall/shuttle/nosmooth{ + dir = 4; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_direction" + }, +/area/shuttle/ninja) + +"kgk" = ( +/obj/machinery/door/airlock/hatch{ +; + frequency = 1331; + id_tag = "ninja_outer"; + name = "Ship External Access" + }, +/obj/structure/fans/tiny/invisible, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"uHf" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1331; + master_tag = "ninja_airlock"; + name = "interior access button"; + pixel_x = -12 + }, +/turf/simulated/wall/shuttle/nosmooth{ + dir = 8; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_direction" + }, +/area/shuttle/ninja) + +"vNF" = ( +/turf/simulated/wall/shuttle/nosmooth{ + dir = 4; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_T_alt" + }, +/area/shuttle/ninja) + +"mCK" = ( +/obj/structure/shuttle/engine/platform{ + layer = 2.9 + }, +/turf/simulated/floor/shuttle/transparent_floor, +/area/shuttle/ninja) + +"tIe" = ( +/obj/structure/shuttle/engine/platform{ + layer = 2.9 + }, +/obj/structure/shuttle/engine/large{ + dir = 1; + opacity = 0 + }, +/turf/simulated/floor/shuttle/transparent_floor, +/area/shuttle/ninja) + +"bpJ" = ( +/turf/simulated/wall/shuttle/nosmooth{ + dir = 8; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_T_alt" + }, +/area/shuttle/ninja) + +"uNo" = ( +/obj/machinery/access_button{ + command = "cycle_exterior"; + frequency = 1331; + master_tag = "ninja_airlock"; + name = "interior access button"; + pixel_x = 10 + }, +/turf/simulated/wall/shuttle/nosmooth{ + dir = 4; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_direction" + }, +/area/shuttle/ninja) + +"xaJ" = ( +/obj/machinery/door/airlock/hatch{ +; + frequency = 1331; + id_tag = "ninja_outer"; + name = "Ship External Access" + }, +/obj/docking_port/mobile{ + dheight = 2; + dir = 2; + dwidth = 4; + height = 10; + id = "ombra"; + name = "Spider Clan Ombra"; + port_direction = 2; + preferred_direction = 2; + roundstart_move = "ombra_home"; + width = 21 + }, +/obj/structure/fans/tiny/invisible, +/obj/docking_port/stationary{ + area_type = /area/ruin/space/ninja_zen; + dheight = 2; + dir = 2; + dwidth = 4; + height = 10; + id = "ombra_home"; + name = "Spider Clan Facility"; + turf_type = /turf/simulated/floor/indestructible/snow; + width = 21 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"rAu" = ( +/turf/simulated/wall/shuttle/nosmooth{ + dir = 8; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_direction" + }, +/area/shuttle/ninja) + +"bQF" = ( +/turf/simulated/wall/shuttle/nosmooth{ + dir = 6; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_corners" + }, +/area/shuttle/ninja) + +"xfs" = ( +/turf/simulated/wall/shuttle/nosmooth/interior{ + dir = 5; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_corners"; + underlay_floor_icon = 'icons/turf/shuttle/floors.dmi'; + underlay_floor_icon_state = "floor13" + }, +/area/shuttle/ninja) + +"xhP" = ( +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"kMS" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/airlock_sensor{ + frequency = 1331; + id_tag = "ninja_sensor"; + pixel_x = -12; + pixel_y = 25; + req_access = list(150) + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"hNg" = ( +/turf/simulated/wall/shuttle/nosmooth{ + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_direction" + }, +/area/shuttle/ninja) + +"xIi" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1; + icon_state = "heater3x3_side_inv"; + tag = "icon-heater (NORTH)" + }, +/obj/structure/shuttle/engine/platform{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/plasmareinforced{ + color = "#00f700" + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/ninja) + +"aTQ" = ( +/obj/structure/shuttle/engine/heater{ + dir = 1; + icon_state = "heater3x3"; + tag = "icon-heater (NORTH)" + }, +/obj/structure/shuttle/engine/platform{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/plasmareinforced{ + color = "#00f700" + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/ninja) + +"uLd" = ( +/obj/structure/shuttle/engine/platform{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/plasmareinforced{ + color = "#00f700" + }, +/obj/structure/shuttle/engine/heater{ + dir = 1; + icon_state = "heater3x3_side"; + tag = "icon-heater (NORTH)" + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/ninja) + +"rCS" = ( +/obj/structure/shuttle/engine/platform{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/plasmareinforced{ + color = "#00f700" + }, +/obj/structure/shuttle/engine/heater{ + dir = 1; + icon_state = "heater2x2"; + tag = "icon-heater (NORTH)" + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/ninja) + +"mBi" = ( +/obj/structure/shuttle/engine/platform{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/plasmareinforced{ + color = "#00f700" + }, +/obj/structure/shuttle/engine/heater{ + dir = 1; + icon_state = "heater2x2_side"; + tag = "icon-heater (NORTH)" + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/ninja) + +"sIh" = ( +/obj/structure/shuttle/engine/platform{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/plasmareinforced{ + color = "#00f700" + }, +/obj/structure/shuttle/engine/heater{ + dir = 1; + icon_state = "heater3x3_side_inv"; + tag = "icon-heater (NORTH)" + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/ninja) + +"pyh" = ( +/obj/structure/shuttle/engine/platform{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/plasmareinforced{ + color = "#00f700" + }, +/obj/structure/shuttle/engine/heater{ + dir = 1; + icon_state = "heater3x3"; + tag = "icon-heater (NORTH)" + }, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/ninja) + +"oyc" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/airlock_sensor{ + frequency = 1331; + id_tag = "ninja_sensor"; + pixel_x = 12; + pixel_y = 25; + req_access = list(150) + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"bYi" = ( +/turf/simulated/wall/shuttle/nosmooth/interior{ + dir = 9; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_corners"; + underlay_floor_icon = 'icons/turf/shuttle/floors.dmi'; + underlay_floor_icon_state = "floor13" + }, +/area/shuttle/ninja) + +"mFm" = ( +/obj/structure/marker_beacon{ + icon_state = "markerjade-on" + }, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +"dUN" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 4; + frequency = 1331; + id_tag = "ninja_pump" + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1331; + master_tag = "ninja_airlock"; + name = "interior access button"; + pixel_x = 23; + pixel_y = 25 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"uFB" = ( +/obj/machinery/door/airlock/hatch{ +; + frequency = 1331; + id_tag = "ninja_inner"; + locked = 1; + name = "Ship External Access" + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/structure/fans/tiny/invisible, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"nzK" = ( +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1331; + master_tag = "ninja_airlock"; + name = "interior access button"; + pixel_x = -25; + pixel_y = 25 + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"lrJ" = ( +/obj/machinery/atmospherics/pipe/manifold/visible{ + dir = 1 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"ubF" = ( +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/machinery/suit_storage_unit/standard_unit{ + req_access = null + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"uFn" = ( +/obj/structure/table/abductor{ + color = "#99ff99"; + name = "table" + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/machinery/embedded_controller/radio/airlock/airlock_controller{ + frequency = 1331; + id_tag = "ninja_airlock"; + pixel_y = 3; + tag_airpump = "ninja_pump"; + tag_chamber_sensor = "ninja_sensor"; + tag_exterior_door = "ninja_outer"; + tag_interior_door = "ninja_inner" + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"bLb" = ( +/obj/structure/table/abductor{ + color = "#99ff99"; + name = "table" + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/obj/item/tank/internals/emergency_oxygen/double/ninja, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"wos" = ( +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1331; + master_tag = "ninja_airlock"; + name = "interior access button"; + pixel_x = 23; + pixel_y = 25 + }, +/obj/machinery/atmospherics/pipe/simple/visible{ + dir = 4 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"pUJ" = ( +/obj/machinery/atmospherics/unary/vent_pump/high_volume{ + dir = 8; + frequency = 1331; + id_tag = "ninja_pump" + }, +/obj/machinery/access_button{ + command = "cycle_interior"; + frequency = 1331; + master_tag = "ninja_airlock"; + name = "interior access button"; + pixel_x = -25; + pixel_y = 25 + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"wQF" = ( +/turf/simulated/wall/shuttle/nosmooth{ + dir = 1; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_direction" + }, +/area/shuttle/ninja) + +"wSF" = ( +/obj/structure/window/plasmareinforced{ + color = "#00f700"; + dir = 4 + }, +/obj/structure/window/plasmareinforced{ + color = "#00f700"; + dir = 1 + }, +/obj/structure/chair/comfy/shuttle/dark, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"iVW" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"byl" = ( +/obj/structure/window/plasmareinforced{ + color = "#00f700"; + dir = 1 + }, +/obj/structure/window/plasmareinforced{ + color = "#00f700"; + dir = 8 + }, +/obj/structure/chair/comfy/shuttle/dark, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"fAv" = ( +/obj/machinery/door/window/brigdoor{ + color = "#00f700"; +; + name = "Riot Control" + }, +/obj/machinery/light/spot{ + dir = 8; + tag = "icon-tube1 (WEST)" + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"lxP" = ( +/obj/machinery/door/window/brigdoor{ + color = "#00f700"; + dir = 8; +; + name = "Riot Control" + }, +/obj/machinery/light/spot{ + dir = 4; + tag = "icon-tube1 (EAST)" + }, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"odX" = ( +/obj/machinery/atmospherics/unary/tank/air/ninja{ + dir = 1 + }, +/turf/simulated/wall/shuttle/nosmooth/interior{ + dir = 5; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_corners"; + underlay_floor_icon = 'icons/turf/shuttle/floors.dmi'; + underlay_floor_icon_state = "floor13" + }, +/area/shuttle/ninja) + +"pvn" = ( +/obj/structure/chair/comfy/shuttle/dark, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"acK" = ( +/obj/machinery/atmospherics/unary/tank/air/ninja{ + dir = 1 + }, +/turf/simulated/wall/shuttle/nosmooth/interior{ + dir = 9; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_corners"; + underlay_floor_icon = 'icons/turf/shuttle/floors.dmi'; + underlay_floor_icon_state = "floor13" + }, +/area/shuttle/ninja) + +"gfP" = ( +/turf/simulated/wall/shuttle/nosmooth{ + dir = 4; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_corners" + }, +/area/shuttle/ninja) + +"cHW" = ( +/obj/machinery/computer/shuttle/ninja, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"psd" = ( +/obj/machinery/computer/camera_advanced/shuttle_docker/ninja, +/turf/simulated/floor/shuttle{ + icon_state = "floor13" + }, +/area/shuttle/ninja) + +"rgH" = ( +/turf/simulated/wall/shuttle/nosmooth{ + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_corners" + }, +/area/shuttle/ninja) + +"mll" = ( +/turf/simulated/wall/shuttle/nosmooth{ + dir = 6; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_T_alt" + }, +/area/shuttle/ninja) + +"pYK" = ( +/obj/structure/grille, +/obj/structure/window/full/shuttle/ninja, +/turf/simulated/floor/shuttle/plating, +/area/shuttle/ninja) + +"htX" = ( +/turf/simulated/wall/shuttle/nosmooth{ + dir = 10; + icon = 'icons/turf/walls/shuttle/ninja_shuttle_wall.dmi'; + icon_state = "ninja_walls_T_alt" + }, +/area/shuttle/ninja) + +"nQm" = ( +/obj/structure/flora/tree/dead, +/obj/structure/flora/grass/both, +/turf/simulated/floor/indestructible/snow, +/area/ruin/space/ninja_zen) + +(1,1,1) = {" +mVXmVXmVXmVXmVXmVXmVXmVXmVXmNjmNjykSykSykSykSykSykSemNykSsQxykSykSykSykSykSykSykSykStdjtdjykSykSrnstdjkQkykSmNjmNjmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmNjmNjykSykSykSycOykSadWawuaxcykSycOykSykSadWaxcykSykSrnssQxadWykSadWhGJykSadWykSykSkQkmNjmNjmNjmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmNjykSadWykSadWykSadWykSykSrnsykSadWadWadWykSycOykSadWykSykSykSaIzykStdjtdjykSadWykSykSykSemNmNjmNjmVXmVXmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmNjtdjykSykSykSykStdjykSykStdjykSjSwjSwjSwjSwjSwjSwjSwjSwjSwykStdjtdjykStdjsQxhGJaIzhGJawutdjykSmNjmNjmVXmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmNjykStdjadWadWykSsQxrnstdjadWjSwjSwdMbdMbdMbdMbdMbdMbdMbjSwjSwjSwjSwjSwjSwjSwtdjykSadWkQkkQkaYyykSmNjmNjmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmNjemNykSycOykSykSadWykSadWjSwjSwdMbdMbbRMnhlbhgbhtbhLdMbdMbdMbdMbdMbdMbdMbjSwjSwykSadWykStdjykStdjtdjmNjmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmNjykSykSadWykStdjykSykSjSwjSwdMbdMbbRMbRMnhlbDRbRMbEBdMbbGZbHobHRbHRbJLdMbdMbjSwkQkycOykSykSadWtdjykSmNjmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmNjykSadWsQxadWykSadWykSjSwdMbdMbbRMbRMbRMdMbdMbnhldMbdMbeFvceSbRxbRMbRMnWfdMbjSwcfatdjtdjbuytdjrnsykSmNjmNjmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmNjtdjtdjtdjtdjawuykSadWjSwdMbchjbRMcigdMbdMbdMbcivbRMbBYbhgbRxcjycjybRMcjQdMbjSwckqckChxTclipqvbYbykSbyGmNjmNjmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmNjykSadWykStdjsQxcBUcBUjSwdMbcCTbRMcDkcDUdMbcEgbyZbAhnWfnWfgVwnWfnENbRxcESdMbjSwtdjykScHKcHTkQTbYbycOykStdjmNjmNjmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmNjykSrnsykSrnstdjtdjykSjSwdMbcCTbRMcQFdMbdMbdMbcQJbRMbBYbDRbRMcRmbGPbRMbNcdMbjSwcRnbYbovacUDcVbykSykStdjycOtdjmNjmNjmNjmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmNjmNjykSykSdiGadWykScBUdiHjSwdMbdMbdmvdmvcmJdMbdMbdMbdMbdMbqDIdnLbRMbRxbRMnWfdMbjSwtdjykSdovbYbykSrnstdjykSykStdjemNtdjmNjmNjmNjmVX +mVXmVXmVXmVXmVXmVXmNjmNjykSykSdrhdrzykSykSykStdjjSwjSwdMbdMbcmJcmJdsXcoIdtKdtLdMbdMbdufcqidukdumdMbdMbjSwtdjykSykSykScxGkjKkjKkjKkjKdvttdjykSrnsemNmNjmVX +mVXmVXmVXmVXmVXmNjmNjykSykSdrhkQTykSykSemNcBUcBUdEsjSwjSwdMbdMbdMbdMbdMbcMDcMDdMbdMbdMbdMbdMbdMbdMbjSwjSwykScxGkjKkjKgGYgGYgGYgGYgGYgGYkjKkjKkjKkjKmNjmVX +mVXmVXmVXmVXmNjmNjykSykSdLFdRAdYCdMCkjKkjKkjKkjKkjKdvtjSwjSwjSwjSwjSwjSwdRAdYCjSwjSwjSwjSwjSwjSwjSwjSwcxGkjKgGYgGYdGFdJGgGYlpulpulpugGYdJGgGYgGYgGYmNjmVX +mVXmVXmVXmNjmNjykSykScxGdSAdRAdYCdTygGYgGYdJGgGYdGFgGYdKHkjKkjKkjKdVZdTOdRAdYCdUzdVZkjKkjKkjKdVZkjKkjKgGYdJGdGFgGYgGYlpudXaykStdjykSdYYlpulpulpulpumNjmVX +mVXmVXmNjmNjykScxGkjKgGYdSAdRAdYCeaUlpulpulpulpulpulpulpulpulpulpulpueiadRAdYCeaUlpulpulpulpulpulpulpulpulpulpulpudXaemNejIejVekhtdjtdjykSsQxycOtdjmNjmVX +mVXmNjmNjcxGkjKgGYdJGgGYephdRAepxeqJhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhDUhDUhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkykSykSemNmNjmVX +mNjmNjgGYgGYdGFgGYgGYdXaykSovaerytdjhFkeLTeNbeNbeNbeNbesxeNbeNbeuFnXTeyDnYnnYneyDnXTfCSfCSeKieyZeAyeAKeBceCveFkeHjeIxeKifCSfCSnXTeIyfbHhFkykStdjtdjmNjmNj +mNjgGYdJGgGYgGYlpudXaykStdjovakQTykShFkgwPnIGeKahnmhnmhnmhnmhnmfwinXTfCunYnnYnfCunXTfCSfCSfCSfCSfCSfCSfCSfCSfCSfCSfCSfCSfCSfCSnXTfFDglcncttdjykSykStdjmNj +lpulpulpulpudXaykSykSemNdrhtcWdrzykShFknFgnIGnPrhFkhFkhFkhFkhFkhFkhFkhFkncReOxhFkhFkhFkhFkfCSeOIePJePJePJePJePJeQTeRweTWhFkhFkhFkgggglcnctykSfeMykStdjykS +emNtdjykStdjykSykSykStdjovadrzfhOykShFkgwPnIGfiSeuFnXTfjAfjXfkFfnnfomhFknsAnyJhFkidLfoDfoGfCSeRkfqFfsXfsXfsXfsXftskfMfCSncteLTeNbfvnglcncttdjykStdjykStdj +tdjykSykStdjykSykSykSdrhkQTtdjykSykShFkgyVnIGnIGgEAnXTfxAfxYfxZgFqfCLhFknsAnyJhFkgSHfCPgLjhbVgQspOrfnhfnhfnhfnhhSYgXChbVncthlQnIGnIGfCQhFkykSykSsQxycOykS +ykSrnstdjykSykSykSfDlovadrzhFkhFkhFkhFkhFkmUxmUxhFkhFkhDUhFkhFknctncthFkhfXfDZhFknctncthFkmhhmhNmGyfzwfzwfzwfzwmHRfERmhhhFkhFkeOxncRhFkhFkykSrnssQxykSemN +ykStdjtdjemNycOfDldrhdrztdjhFkfFffGmfGEfJEkuhkuhhImhFkggCfLbnctmEYmEYfNYtcWtcWfPlhLhmEYnctmaDmhNpOrfnhfnhfnhfnhhSYfERmaDncthVdhXpfQxfRdhFkykShGJtdjykSmNj +ykStdjykSfDlfUpdrhdrznVItdjhFkqimkuhkuhkuhkuhkuhhuEhFkicofVEnctmEYigqiiBtcWuQKfYVfGlipEnctmhhmhNmGyfzwfzwfzwfzwmHRfERmhhnctfNyfZihJHfZohFkykSykSykSmNjmNj +ykSykSfDltdjdrhkQTtdjykSykSnctqimeOIePJePJeRwkuhiDqhFkhFkhFkhFkxKJiEEiFVtcWtcWgaRgbQgcKhFkhFktdMpOrfnhfnhfnhfnhhSYgdihFkhFkjOklkTgfRmaDncttdjsQxemNmNjmVX +mNjykSykStdjovakQTrnsykSykSnctggVeRkghkghlkfMkuhglBgAsgmbnXTgnrtcWuQKtcWgoztcWtcWtcWtcWgpplbeeRkmGyfzwgAVfzwfzwmHRkfMhFkeWLfqOlkTgfRmhhncttdjnVImNjmNjmVX +mNjmNjrnstdjovakQTykSykSykSnctqimeRkgpKkagkfMkuhksBgtOgudnXTgvLtcWtcWtcWtcWtcWtcWuQKtcWeSClbeeRkpOrfnhfnhfnhfnhhSYkfMhFkfoCgvQlkTgfRmhhncttdjlIwmNjmVXmVX +mVXmNjmNjtdjovakQTtdjykSykSnctqimgxrlKYlKYgygkuhgzahFkhFkhFkhFkdCFdHTgzbtcWtcWlVogzTebphFkhFkevLmGyfzwfzwfzwfzwmHRgLbhFkhFkgLhlkTgfRmaDnctykStdjmNjmVXmVX +mVXmVXmNjtdjgLXtcWpqvgNBykShFkqimkuhkuhkuhkuhkuhhuEhFkgPemfbnctgQrgQLgABuQKtcWrMigQLipEnctmhhmhNpOrfnhfnhfnhfnhhSYfERmhhnctdFChXpgUjmqzhFkykSykSmNjmNjmVX +mVXmNjmNjkQkykSgLXtcWpqvykShFkwFRjennfSmzPkuhkuhmDXhFkhdnmEnnctmEYsmogABtcWtcWfPldQwmEYnctmaDmhNmGyfzwfzwfzwfzwmHRfERmaDncthVdfZimQpmRThFktdjykSykSmNjmVX +mVXmNjykSykSkQkrnsovakQTykShFkhFkhFkhFkhFkmUxmUxhFkhFkmUxhFkhFknctncthFkhdzheohFknctncthFkmhhmhNpOrfnhfnhfnhfnhhSYfERmhhhFkhFkeOxncRhFkhFkykSycOykSmNjmNj +mNjmNjykSykSykSkQkovakQTtdjykSykSykShFkeLTnIGnIGeIynXThiMnjthlChnChqmhFknsAnyJhFkidLhqpeeNgmtrGtmGyfzwfzwfzwfzwmHRhsSgmtnctnlxnIGnIGnlyhFksQxtdjtdjykSmNj +mNjykSycOhtLtdjkQkovakQTykSykSnVIykShFkgwPnIGeKahnmnXTfxAlLohuannleujhFknsAnyJhFkgSHhuwnznokZeRkhuGjHkjHkjHkjHkhvDkfMokZnctgyVhnmfFDglcnctykStdjhGJykSmNj +ykSykSykSykSykStdjovakQThwhykSykSykShFknFgnIGnPrhFkhFkhFkhFkhFkhFkhFkhFkhESePBhFkhFkhFkhFkokZgxrlKYlKYlKYlKYlKYhFVgyghJrhFkhFkhFkgggglcnctykSnVItdjykSmNj +ykSykSykSfDlykShZrovakQTykSykShmHykShFkgwPnIGfiSeNbeNbeNbeNbeNbeuFnXTibGnYnnYnibGnXTokZokZokZokZokZokZokZokZokZokZokZokZokZokZnXTfvnglcnctykSykSykSykSemN +ykSrnsykSykSkQkykSovakQTykSykSykSykShFkgyVhnmhnmhnmhnmiCchnmhnmfwinXTfwynYnnYnfwynXTokZokZiFFoaTobRohaoiFiKKiLkiMbiMFiFFokZokZnXTiNjoozhFkykStdjrnstdjykS +fDlykSemNykSykSrnsovakQTykSykSykSykShFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhDUhDUhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFkhFktdjykStdjykSykS +ykSfDlykSykSykStdjovakQTtdjrnssQxnVIykSykSykSykSykSykSykSykSykSykShFkhFknYnnYnhFkhFkykStdjykSykSykStdjykStdjykSykSykSykSycOykSykSykSykSykSykSykSykSykSmNj +ykSykSykStdjykStdjgLXtcWpqvykSykSykSsQxhmHemNykSykSykSsQxykSykSykShFkknGnYnnYngmQhFkykStdjykStdjtdjykStdjtdjycOykSnVIykSykStdjhGJnVIykStdjykStdjsQxykSmNj +ykSykSykSycOykSykSykSgLXtcWhxThxTpqvtdjykSykShmHykSykSnVIykSsQxykSnctkKonYnnYnoQlncttdjtdjykSnVIykStdjykStdjykStdjtdjtdjykSsQxykSykSsQxykSykStdjykSmNjmNj +mNjykStdjykSykSfDlykSrnsgLXcUDcUDtcWhxTpqvtdjykSykSykShmHykSykSykShFkkSnnYnnYnkSUhFkykSykSykStdjykSykSsQxtdjykStdjycOykSykStdjtdjrnsykSykSykSsQxmNjmNjmVX +mNjmNjykStdjykSfDlykSykSykStdjtdjgLXcUDtcWhxTpqvykSykSsQxemNykSykShFkhFknYnnYnhFkhFkykStdjykSykSycOykSykStdjykShGJykStdjykStdjtdjtdjemNykStdjmNjmNjmVXmVX +mVXmNjmNjmNjykSemNykSfDlykSykSykStdjtdjgLXcUDtcWpqvtdjykSykSykSykSykShFkhDUhDUhFkykSykSykSykStdjykSykSykSykSykSsQxykStdjsQxykStdjykSykStdjmNjmNjmVXmVXmVX +mVXmVXmVXmNjmNjykSykSykSfDlkQkykSykSykSykStdjgLXtcWpqvtdjykSrnsykSykSplKhfXfDZplKykSykSrnsykSsQxtdjykSykStdjykSycOykSykStdjykSykSykSmNjmNjmNjmVXmVXmVXmVX +mVXmVXmVXmVXmNjmNjmNjykSykSykSykSykSykSkQkykSrnsgLXtcWpqvykSdrhhxThxThxTtcWtcWhxThxThxTpqvykSykSykStdjykSykSsQxsQxtdjykStdjtdjykSmNjmNjmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmNjmNjykSykSykSykSykSykSykSkQktdjgLXtcWhxTtcWcUDcUDcUDcUDcUDcUDcUDcUDtcWpqvykSykSykSykSrnsykSykSykSykSykSykSmNjmNjmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmNjmNjmNjycOykSmeNtdjykSykSkQktdjovatcWmfcykSykSykSykSykSykSykSykSmfntcWpqvykSykSykSykSykSykStdjykSmNjmNjmNjmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmVXmNjykSykStdjykSykSykSykSykSovamyyykSeuleuleulykSykSeuleuleulykSmyEkQTykSykStdjtdjykSykSykSykSmNjmVXmVXmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmVXmNjtdjykSykSykSykSykSykSykSmBjykSwheeultlWeuleuleuleultlWeulrugykSmBjykSykSykSykStdjycOykStdjmNjmVXmVXmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmVXmNjykSycOtdjykSnVIxDAtbWgLwkgkuHfvNFmCKmCKmCKtIemCKmCKmCKmCKbpJuNoxaJrAutbWbQFnVItdjykSykSykSmNjmVXmVXmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmVXmNjtdjtdjtdjykSykSykSxDAxfsxhPkMShNgxIiaTQuLdrCSmBisIhpyhuLdhNgoycxhPbYibQFykSykSmFmykStdjykSmNjmVXmVXmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmVXmNjtdjtdjykSmFmykSykSykSxDAxfsdUNuFBnzKlrJubFuFnbLbubFlrJwosuFBpUJbYibQFykSykSykSykSykSykSykSmNjmVXmVXmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmVXmNjykStdjtdjykSykSykSykSnVIxDAxfswQFwSFiVWxhPxhPxhPxhPiVWbylwQFbYibQFnVIykSykSykSykSykStdjtdjmNjmVXmVXmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmVXmNjykStdjtdjykSykSykSmFmykSykSxDAvNFfAviVWxhPxhPxhPxhPiVWlxPbpJbQFykSykSmFmykSykSykStdjtdjykSmNjmVXmVXmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmVXmNjtdjtdjykSykSykSykSykSykSykSykSxDAtbWodXxhPpvnpvnxhPacKtbWbQFykSykSykSykSykSykStdjykSykSykSmNjmVXmVXmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmVXmNjtdjemNtdjykSykStdjtdjtdjykSykSnVIxDAgfPxfscHWpsdbYirgHbQFnVIykSykSykSykSykSykStdjykStdjemNmNjmVXmVXmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmVXmNjykSykStdjtdjrnsykSykSykSykSmFmykSykSxDAmllpYKpYKhtXbQFykSykSmFmykSykSykSykSrnsykStdjtdjykSmNjmVXmVXmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmVXmNjmNjykSemNykSykStdjtdjykSrnsykSykSykSykSykStdjykSykSykSykSykSykSrnsykSykSykStdjykSykSykSmNjmNjmVXmVXmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmNjmNjykSykSykSykSykSykSykStdjtdjykSrnsykSykSykSykSnQmykStdjykSykSykSykSykSykSykSykSmNjmNjmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmNjmNjykSykStdjtdjykStdjykSykSykSykSykStdjykSykSykSykSykStdjykStdjykSykStdjykSmNjmNjmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmNjmNjykSykSykSykSemNtdjtdjtdjykStdjykStdjemNtdjykSykStdjykSemNykSykSykSmNjmNjmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVX +mVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmNjmNjykSykSykSykSykSykSykSykSykSykSykSykSykSykSykStdjykSykSykSykSmNjmNjmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVXmVX +"} diff --git a/_maps/RandomRuins/SpaceRuins/ninja_zen.dmm b/_maps/RandomRuins/SpaceRuins/ninja_zen.dmm new file mode 100644 index 0000000000000..e41970697e71f --- /dev/null +++ b/_maps/RandomRuins/SpaceRuins/ninja_zen.dmm @@ -0,0 +1,41 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +// Minimal Ninja Dojo - only types that exist in BlueMoon. Like Wizard's Den (space ruin, always placed). + +"a" = ( +/turf/open/space, +/area/space) + +"b" = ( +/turf/closed/indestructible/rock, +/area/ruin/space/ninja_zen) + +"c" = ( +/turf/open/floor/plasteel, +/area/ruin/space/ninja_zen) + +"d" = ( +/obj/effect/landmark/ninja_spawn, +/turf/open/floor/plasteel, +/area/ruin/space/ninja_zen) + +"e" = ( +/obj/effect/landmark/ninja_spawn, +/turf/open/floor/plasteel, +/area/ruin/space/ninja_zen) + +"f" = ( +/obj/machinery/cryopod/ninja, +/turf/open/floor/plasteel, +/area/ruin/space/ninja_zen) + +(1,1,1) = {"aaaaaaaaaaa", +"abbbbbbbbba", +"abcccccccba", +"abcccccccba", +"abcdcecccba", +"abcccccccba", +"abcccccccba", +"abccccfccba", +"abcccccccba", +"abbbbbbbbba", +"aaaaaaaaaaa"} diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 783d23729540b..4b34e5ebfc675 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -12,6 +12,31 @@ "aad" = ( /turf/open/space, /area/space) +"nJA" = ( +/turf/open/space, +/area/space) +"nJB" = ( +/turf/closed/indestructible/rock, +/area/ninja/outpost) +"nJC" = ( +/turf/open/floor/plasteel, +/area/ninja/outpost) +"nJD" = ( +/obj/effect/landmark/ninja_spawn, +/turf/open/floor/plasteel, +/area/ninja/outpost) +"nJE" = ( +/obj/effect/landmark/ninja_spawn, +/turf/open/floor/plasteel, +/area/ninja/outpost) +"nJF" = ( +/obj/machinery/cryopod/ninja, +/turf/open/floor/plasteel, +/area/ninja/outpost) +"nJG" = ( +/obj/structure/ninjatele, +/turf/open/floor/plasteel, +/area/ninja/outpost) "aae" = ( /obj/structure/window/reinforced{ dir = 4 @@ -41072,6 +41097,149 @@ aaa aaa aaa "} +(45,195,1) = {" +nJB +nJB +nJB +nJB +nJB +nJB +nJB +nJB +nJB +nJB +nJB +"} +(46,195,1) = {" +nJB +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJB +"} +(47,195,1) = {" +nJB +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJB +"} +(48,195,1) = {" +nJB +nJC +nJD +nJG +nJC +nJC +nJC +nJE +nJC +nJC +nJB +"} +(49,195,1) = {" +nJB +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJB +"} +(50,195,1) = {" +nJB +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJB +"} +(51,195,1) = {" +nJB +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJB +"} +(52,195,1) = {" +nJB +nJC +nJC +nJC +nJC +nJC +nJC +nJF +nJC +nJC +nJB +"} +(53,195,1) = {" +nJB +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJB +"} +(54,195,1) = {" +nJB +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJC +nJB +"} +(55,195,1) = {" +nJB +nJB +nJB +nJB +nJB +nJB +nJB +nJB +nJB +nJB +nJB +"} (36,1,1) = {" aaa aaa diff --git a/code/__BLUEMOONCODE/_DEFINES/gamemode.dm b/code/__BLUEMOONCODE/_DEFINES/gamemode.dm index 2be27cb81a907..7f2560892afba 100644 --- a/code/__BLUEMOONCODE/_DEFINES/gamemode.dm +++ b/code/__BLUEMOONCODE/_DEFINES/gamemode.dm @@ -7,3 +7,6 @@ #define ROUNDTYPE_EXTENDED "Extended" #define ROUNDTYPE_MAX_COMBO 2 + +// Space Ninja (SS220 port) +#define SPECIAL_ROLE_SPACE_NINJA "Space Ninja" diff --git a/code/__DEFINES/ninja_ss220.dm b/code/__DEFINES/ninja_ss220.dm new file mode 100644 index 0000000000000..18b385fc936f3 --- /dev/null +++ b/code/__DEFINES/ninja_ss220.dm @@ -0,0 +1,31 @@ +//ninjacost() extraCheckFlag defines +#define N_STEALTH_CANCEL 1 +#define N_ADRENALINE 2 +#define N_HEAL 3 + +#define NINJA_INIT_LOCK_PHASE 6 +#define NINJA_INIT_ICON_GENERATE_PHASE 8 +#define NINJA_INIT_MODULES_PHASE 9 +#define NINJA_INIT_COMPLETE_PHASE 14 + +#define NINJA_DEINIT_LOGOFF_PHASE 1 +#define NINJA_DEINIT_MODULES_PHASE 4 +#define NINJA_DEINIT_ICON_REGENERATE_PHASE 7 +#define NINJA_DEINIT_UNLOCK_PHASE 9 +#define NINJA_DEINIT_COMPLETE_PHASE 13 + +//ninja alpha defines +#define NINJA_ALPHA_NORMAL 255 +#define NINJA_ALPHA_SPIRIT_FORM 64 +// not actually invisible anymore +#define NINJA_ALPHA_INVISIBILITY 20 + +//ninja suit tgui related flags +#define NINJA_TGUI_MAIN_SCREEN_STATE 0 +#define NINJA_TGUI_LOADING_STATE 1 + +//ninjaDrainAct() defines for non numerical returns +#define INVALID_DRAIN "INVALID" //This one is if the drain proc needs to cancel, eg missing variables, etc, it's important. +#define DRAIN_RD_HACK_FAILED "RDHACKFAIL" +#define DRAIN_MOB_SHOCK "MOBSHOCK" +#define DRAIN_MOB_SHOCK_FAILED "MOBSHOCKFAIL" diff --git a/code/__DEFINES/space_ninja_ss220.dm b/code/__DEFINES/space_ninja_ss220.dm new file mode 100644 index 0000000000000..a4ed04cbe5da4 --- /dev/null +++ b/code/__DEFINES/space_ninja_ss220.dm @@ -0,0 +1,6 @@ +// Used to determine objectives preset for the ninja +#define NINJA_TYPE_GENERIC "generic" +#define NINJA_TYPE_PROTECTOR "protector" +#define NINJA_TYPE_HACKER "hacker" +#define NINJA_TYPE_KILLER "killer" + diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm index f9067dc3b2789..39d9132083cfd 100644 --- a/code/_globalvars/lists/mapping.dm +++ b/code/_globalvars/lists/mapping.dm @@ -24,6 +24,7 @@ GLOBAL_LIST_EMPTY(generic_event_spawns) //list of all spawns for events GLOBAL_LIST_EMPTY(jobspawn_overrides) //These will take precedence over normal spawnpoints if created. GLOBAL_LIST_EMPTY(wizardstart) +GLOBAL_LIST_EMPTY(ninjastart) GLOBAL_LIST_EMPTY(nukeop_start) GLOBAL_LIST_EMPTY(nukeop_leader_start) GLOBAL_LIST_EMPTY(syndiop_start) diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm index 749916485c986..6cd9b47e98d92 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_midround.dm @@ -1014,24 +1014,23 @@ cost = 10 requirements = list(101,101,101,101,60,50,30,20,10,10) //BLUEMOON CHANGES repeatable = TRUE - var/list/spawn_locs = list() -/datum/dynamic_ruleset/midround/from_ghosts/space_ninja/execute() - for(var/obj/effect/landmark/carpspawn/carp_spawn in GLOB.landmarks_list) - if(!isturf(carp_spawn.loc)) - stack_trace("Carp spawn found not on a turf: [carp_spawn.type] on [isnull(carp_spawn.loc) ? "null" : carp_spawn.loc.type]") - continue - spawn_locs += carp_spawn.loc - if(!spawn_locs.len) - message_admins("No valid spawn locations found, aborting...") - return MAP_ERROR +/datum/dynamic_ruleset/midround/from_ghosts/space_ninja/ready(forced = FALSE) + if(required_candidates > (dead_players.len + list_observers.len)) + return FALSE + if(!length(GLOB.ninjastart)) + log_admin("Cannot accept Space Ninja ruleset. No ninja spawn points (Ninja Dojo on CentCom may not have loaded).") + message_admins("Cannot accept Space Ninja ruleset. No ninja spawn points.") + return FALSE return ..() +/datum/dynamic_ruleset/midround/from_ghosts/space_ninja/finish_setup(mob/new_character, index) + ..() + new_character.forceMove(pick(GLOB.ninjastart)) + /datum/dynamic_ruleset/midround/from_ghosts/space_ninja/generate_ruleset_body(mob/applicant) - var/mob/living/carbon/human/ninja = create_space_ninja(pick(spawn_locs)) + var/mob/living/carbon/human/ninja = create_space_ninja(pick(GLOB.ninjastart)) ninja.key = applicant.key - ninja.mind.add_antag_datum(/datum/antagonist/ninja) - message_admins("[ADMIN_LOOKUPFLW(ninja)] has been made into a Space Ninja by the midround ruleset.") log_game("DYNAMIC: [key_name(ninja)] was spawned as a Space Ninja by the midround ruleset.") return ninja diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 90cdf080a9899..4b88252366093 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -55,6 +55,9 @@ /// Associative list of current players, in order: living players, living antagonists, dead players and observers. var/list/list/current_players = list(CURRENT_LIVING_PLAYERS = list(), CURRENT_LIVING_ANTAGS = list(), CURRENT_DEAD_PLAYERS = list(), CURRENT_OBSERVERS = list()) + /// Space ninja gamemode: list of ninja minds (SS220 port). + var/list/datum/mind/space_ninjas = list() + /datum/game_mode/proc/announce() //Shows the gamemode's name and a fast description. to_chat(world, "The gamemode is: [name]!") to_chat(world, "[announce_text]") diff --git a/code/game/gamemodes/spaceninja/space_ninja.dm b/code/game/gamemodes/spaceninja/space_ninja.dm new file mode 100644 index 0000000000000..902b519e39c8d --- /dev/null +++ b/code/game/gamemodes/spaceninja/space_ninja.dm @@ -0,0 +1,115 @@ +/datum/game_mode/space_ninja + name = "Space Ninja" + config_tag = "space-ninja" + required_players = 25 + required_enemies = 1 + recommended_enemies = 1 + var/finished = FALSE + var/but_wait_theres_more = FALSE + var/datum/mind/pre_ninja + +/datum/game_mode/space_ninja/announce() + to_chat(world, ">Текущий игровой режим — Космический Ниндзя!") + to_chat(world, "На станцию проник опасный наёмник из клана Паука. Более известный как Космический Ниндзя. Какие бы он не преследовал цели, станция в опасности!") + +/datum/game_mode/space_ninja/can_start() + if(!..()) + return FALSE + if(!length(GLOB.ninjastart)) + stack_trace("A starting location for ninja could not be found, please report this bug!") + return FALSE + var/list/datum/mind/possible_ninjas = get_players_for_role(ROLE_NINJA) + if(!length(possible_ninjas)) + return FALSE + pre_ninja = pick(possible_ninjas) + return TRUE + +/datum/game_mode/space_ninja/pre_setup() + space_ninjas |= pre_ninja + pre_ninja.assigned_role = SPECIAL_ROLE_SPACE_NINJA //So they aren't chosen for other jobs. + pre_ninja.special_role = SPECIAL_ROLE_SPACE_NINJA + pre_ninja.offstation_role = TRUE //ninja can't be targeted as a victim for some pity traitors + pre_ninja.set_original_mob(pre_ninja.current) + pre_ninja?.current.loc = pick(GLOB.ninjastart) + ..() + return TRUE + +/datum/game_mode/space_ninja/post_setup() + var/datum/antagonist/ninja/ninja_datum = new + ninja_datum.change_species(pre_ninja.current) + pre_ninja?.add_antag_datum(ninja_datum) + ..() + +// Checks if the game should end due to all Ninjas being dead, or MMI'd/Borged +/datum/game_mode/space_ninja/check_finished() + var/ninjas_alive = 0 + + for(var/datum/mind/ninja in space_ninjas) + if(!iscarbon(ninja.current)) + continue + if(ninja.current.stat == DEAD) + continue + if(is_mmi(ninja.current)) // ninja is in an MMI, don't count them as alive + continue + ninjas_alive++ + + if(ninjas_alive || but_wait_theres_more) + return ..() + else + finished = TRUE + return TRUE + +/datum/game_mode/space_ninja/declare_completion(ragin = FALSE) + if(finished && !ragin) + SSticker.mode_result = "ninja loss - ninja killed" + to_chat(world, span_warning(span_bold(span_fontsize3(" Ниндзя был[(length(space_ninjas)>1)?"и":""] убит[(length(space_ninjas)>1)?"ы":""] экипажем! Клан Паука ещё не скоро отмоется от этого позора!")))) + ..() + return TRUE + +/datum/game_mode/proc/auto_declare_completion_ninja() + if(!length(space_ninjas)) + return FALSE + + var/list/text = list(span_bold(span_fontsize3("
Космическим[(length(space_ninjas) > 1)?"и":""] Ниндзя был[(length(space_ninjas) > 1)?"и":""]:"))) + + for(var/datum/mind/ninja in space_ninjas) + + text += "
[ninja.get_display_key()] был [ninja.name] (" + if(ninja.current) + if(ninja.current.stat == DEAD) + text += "Умер" + else + text += "Выжил" + if(ninja.current.real_name != ninja.name) + text += " как [ninja.current.real_name]" + else + text += "Тело уничтожено" + text += ")" + text += "
" + + var/datum/antagonist/ninja/ninja_datum = ninja.has_antag_datum(/datum/antagonist/ninja) + if(ninja_datum) + text += "Выбранные способности: [ninja_datum.purchased_abilities]" + + var/count = 1 + var/ninjawin = TRUE + for(var/datum/objective/objective in ninja.get_all_objectives()) + if(objective.check_completion()) + text += "
Цель #[count]: [objective.explanation_text] Успех!" + SSblackbox.record_feedback("nested tally", "ninja_objective", 1, list("[objective.type]", "SUCCESS")) + else + text += "
Цель #[count]: [objective.explanation_text] Провал." + SSblackbox.record_feedback("nested tally", "ninja_objective", 1, list("[objective.type]", "FAIL")) + ninjawin = FALSE + count++ + + if(ninja.current && ninja.current.stat != DEAD && ninjawin) + text += "
Ниндзя успешно выполнил свои задачи!" + SSblackbox.record_feedback("tally", "ninja_success", 1, "SUCCESS") + else + text += "
Ниндзя провалился!" + SSblackbox.record_feedback("tally", "ninja_success", 1, "FAIL") + text += "
" + + return text.Join("") + diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index 680f1fb16bfc7..7800364e48760 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -26,6 +26,7 @@ Make CentCom Response Team (Requires Ghosts)
Make Abductor Team (Requires Ghosts)
Make Revenant (Requires Ghost)
+ Make Ninja (Requires Ghost)
"} //Make Qareen (Requires Ghost)
Temporary removed. - Gardelin0 @@ -353,7 +354,9 @@ return TRUE /datum/admins/proc/makeSpaceNinja() - new /datum/round_event/ghost_role/space_ninja() + var/datum/round_event_control/space_ninja/C = locate(/datum/round_event_control/space_ninja) in SSevents.control + if(C) + C.runEvent(random = FALSE, admin_forced = TRUE) return TRUE // DEATH SQUADS diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index f789b58bdff31..3ce93689230cc 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -429,8 +429,7 @@ Traitors and the like can also be revived with the previous role mostly intact. var/list/ninja_spawn = list() for(var/obj/effect/landmark/carpspawn/L in GLOB.landmarks_list) ninja_spawn += L - var/datum/antagonist/ninja/ninjadatum = new_character.mind.has_antag_datum(/datum/antagonist/ninja) - ninjadatum.equip_space_ninja() + new_character.mind.add_antag_datum(/datum/antagonist/ninja) if(ninja_spawn.len) new_character.forceMove(pick(ninja_spawn)) diff --git a/code/modules/antagonists/space_ninja/machinery/ninja_teleporter.dm b/code/modules/antagonists/space_ninja/machinery/ninja_teleporter.dm new file mode 100644 index 0000000000000..128bf7b17d474 --- /dev/null +++ b/code/modules/antagonists/space_ninja/machinery/ninja_teleporter.dm @@ -0,0 +1,82 @@ +// Консоль в додзё: телепорт на станцию в случайную точку из списка (как scroll of teleportation) и кнопка «Убраться прочь» после выполнения остальных целей. + +/proc/ninja_other_objectives_complete(mob/living/carbon/human/ninja) + if(!ninja?.mind) + return FALSE + var/list/objectives = ninja.mind.get_all_objectives() + if(!length(objectives)) + return FALSE + for(var/datum/objective/O in objectives) + if(istype(O, /datum/objective/ninja_leave)) + continue + if(!O.completed && !O.check_completion()) + return FALSE + return TRUE + +/// TRUE, если выполнено не менее min_count целей (цель «Убраться прочь» не учитывается). +/proc/ninja_completed_objectives_count(mob/living/carbon/human/ninja, min_count = 3) + if(!ninja?.mind || min_count <= 0) + return FALSE + var/completed = 0 + for(var/datum/objective/O in ninja.mind.get_all_objectives()) + if(istype(O, /datum/objective/ninja_leave)) + continue + if(O.completed || O.check_completion()) + completed++ + if(completed >= min_count) + return TRUE + return FALSE + +/obj/structure/ninjatele + name = "Терминал внедрения" + desc = "Консоль для телепортации на станцию в случайное место из сетки сканов (как свиток телепортации)." + icon = 'icons/obj/ninjaobjects.dmi' + icon_state = "teleconsole" + anchored = TRUE + +/obj/structure/ninjatele/attack_hand(mob/user, list/params) + if(!is_ninja(user)) + return + var/mob/living/carbon/human/ninja = user + var/choice = tgui_alert(ninja, "Телепортироваться на станцию в случайную точку?", "Терминал внедрения", list("Телепорт на станцию", "Отмена")) + if(choice != "Телепорт на станцию" || !ninja.can_interact_with(src)) + return + add_fingerprint(ninja) + ninja_teleport_to_station(ninja) + +/obj/structure/ninjatele/proc/ninja_teleport_to_station(mob/living/carbon/human/ninja) + if(!length(GLOB.teleportlocs)) + to_chat(ninja, span_warning("Сетка сканов станции недоступна.")) + return + var/area_name = pick(GLOB.teleportlocs) + var/area/thearea = GLOB.teleportlocs[area_name] + var/list/L = list() + for(var/turf/T in get_area_turfs(thearea.type)) + if(!is_blocked_turf(T)) + L += T + if(!length(L)) + to_chat(ninja, span_warning("Не удалось найти подходящую точку в выбранной зоне.")) + return + var/turf/dest = pick(L) + var/turf/T = get_turf(ninja) + if(do_teleport(ninja, dest, forceMove = TRUE, channel = TELEPORT_CHANNEL_MAGIC, forced = TRUE)) + ninja.log_message("Ninja VOID-shifted from [COORD(T)] to [COORD(ninja)].", LOG_GAME) + playsound(ninja.loc, 'sound/effects/phasein.ogg', 25, TRUE) + playsound(ninja.loc, 'sound/effects/sparks2.ogg', 50, TRUE) + new /obj/effect/temp_visual/dir_setting/ninja/phase(get_turf(ninja), ninja.dir) + to_chat(ninja, span_boldnotice("Телепортация на станцию успешна.")) + +/// Вызывается из способности костюма «Убраться прочь» или при необходимости из консоли. Завершает раунд для ниндзя. +/proc/ninja_leave_round(mob/living/carbon/human/ninja) + if(!ninja?.mind) + return + var/datum/objective/ninja_leave/leave_obj = locate(/datum/objective/ninja_leave) in ninja.mind.get_all_objectives() + if(leave_obj) + leave_obj.completed = TRUE + ninja.visible_message(span_boldnotice("[ninja] растворяется в дыму и исчезает в никуда!")) + playsound(ninja, 'sound/effects/smoke.ogg', 30, TRUE) + var/turf/T = get_turf(ninja) + new /obj/effect/particle_effect/smoke(T) + ninja.log_message("Ninja left the round (all objectives complete).", LOG_GAME) + ninja.ghostize(FALSE, penalize = FALSE, voluntary = TRUE) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), ninja), 1) diff --git a/code/modules/antagonists/space_ninja/ninja_zen.dm b/code/modules/antagonists/space_ninja/ninja_zen.dm new file mode 100644 index 0000000000000..e3f92d1f9b42b --- /dev/null +++ b/code/modules/antagonists/space_ninja/ninja_zen.dm @@ -0,0 +1,71 @@ +// Личный додзё космического ниндзя: консоль телепорта на станцию (в случайную точку из списка как scroll) и кнопка «Убраться прочь» после выполнения всех целей. + +// Область додзё (основная комната со спавном). +/area/ninja/outpost + name = "SpiderClan Dojo" + icon_state = "ninja_dojo" + ambientsounds = list('sound/ambience/ambifailure.ogg', 'sound/ambience/ambigen4.ogg', 'sound/ambience/ambimaint2.ogg', 'sound/ambience/ambimystery.ogg', 'sound/ambience/ambitech2.ogg') + requires_power = FALSE + has_gravity = STANDARD_GRAVITY + sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR + +// Область «холдинга» / пещеры (криопод для модуля «второй шанс», оборудование под цели). +/area/ninja/holding + name = "SpiderClan Holding Facility" + icon_state = "ninja_holding" + ambientsounds = list('sound/ambience/ambifailure.ogg', 'sound/ambience/ambigen4.ogg', 'sound/ambience/ambimaint2.ogg', 'sound/ambience/ambimystery.ogg', 'sound/ambience/ambitech2.ogg') + requires_power = FALSE + has_gravity = STANDARD_GRAVITY + sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR + +// Внешняя территория клана (космос/астероиды вокруг аутпоста). +/area/ninja/outside + name = "SpiderClan Territory" + icon_state = "ninja_outside" + sound_environment = SOUND_AREA_ASTEROID + +// Совместимость: телепорт призрака ищет и эту область. +/area/ruin/space/ninja_zen + name = "Ninja Dojo" + icon_state = "ninja_dojo" + requires_power = FALSE + has_gravity = STANDARD_GRAVITY + sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR + +// Криопод для выхода ниндзя из раунда и капсула «второй шанс» (вики SS220). +/obj/machinery/cryopod/ninja + name = "крио-стазис Клана Паука" + desc = "Капсула долговременной заморозки. Позволяет покинуть раунд и вернуться к Клану после выполнения целей. Только для космических ниндзя." + icon_state = "cryopod-open" + tele = TRUE + time_till_despawn = 15 SECONDS + on_store_message = "отбыл к Клану Паука." + on_store_name = "Клан Паука" + +/obj/machinery/cryopod/ninja/close_machine(atom/movable/target) + if(isliving(target) && !is_ninja(target)) + to_chat(target, span_warning("Только космический ниндзя может использовать эту капсулу.")) + return + return ..() + +/obj/machinery/cryopod/ninja/MouseDrop_T(mob/living/target, mob/user) + if(isliving(target)) + if(target == user && !is_ninja(user)) + to_chat(user, span_warning("Только космический ниндзя может использовать эту капсулу.")) + return + if(target != user && !is_ninja(target)) + to_chat(user, span_warning("В капсулу Клана можно поместить только ниндзя.")) + return + return ..() + +// Ландмарк точки спавна ниндзя в додзё (по аналогии с wizardstart). +/obj/effect/landmark/ninja_spawn + name = "ninja spawn" + icon_state = "snukeop_spawn" + +/obj/effect/landmark/ninja_spawn/Initialize(mapload) + . = ..() + GLOB.ninjastart += get_turf(src) + return INITIALIZE_HINT_QDEL + +// Додзё на карте ЦК (CentCom.dmm): область area/ninja/outpost, спавны, криопод, терминал внедрения (телепорт как у scroll + «Убраться прочь» после выполнения целей). diff --git a/code/modules/antagonists/space_ninja/space_ninja.dm b/code/modules/antagonists/space_ninja/space_ninja.dm index 02a271aae5f4f..d8dbeeda308dc 100644 --- a/code/modules/antagonists/space_ninja/space_ninja.dm +++ b/code/modules/antagonists/space_ninja/space_ninja.dm @@ -49,6 +49,7 @@ /datum/antagonist/ninja/proc/addMemories() antag_memory += "Я - элитный наёмник Клана Паука. КОСМИЧЕСКИЙ НИНДЗЯ!
" antag_memory += "Сюрприз - моё оружие. Тени - мой доспех. Без них я ничто. (//чтобы использовать свой костюм, подключите его с помощью кнопки на вашем UI)!
" + antag_memory += "У меня есть личный корабль (додзё) в космосе с крио-стазисом: после выполнения целей могу вернуться на корабль и уйти в крио, чтобы покинуть раунд.
" /datum/objective/cyborg_hijack explanation_text = "Конвертируйте одного станционного робота в киборга-саботёра с помощью ваших перчаток." @@ -66,6 +67,12 @@ /datum/objective/terror_message explanation_text = "Взломайте консоль капитана, используя перчатки, чтобы наслать на станцию ещё одну угрозу. ИИ получит уведомление в тот момент, когда вы начнёте!" +/datum/objective/ninja_leave + explanation_text = "Уберитесь прочь со станции после выполнения остальных целей." + +/datum/objective/ninja_leave/check_completion() + return completed + /** * Proc that adds all the ninja's objectives to the antag datum. * @@ -108,15 +115,16 @@ var/datum/objective/communicationobjective = new /datum/objective/terror_message() objectives += communicationobjective - //Survival until end - var/datum/objective/survival = new /datum/objective/survive() - survival.owner = owner - objectives += survival + // Убраться прочь со станции после выполнения всех 6 целей (способность в костюме) + var/datum/objective/ninja_leave/leaveobjective = new /datum/objective/ninja_leave() + leaveobjective.owner = owner + objectives += leaveobjective /datum/antagonist/ninja/greet() SEND_SOUND(owner.current, sound('sound/ambience/antag/ninja_greeting.ogg')) to_chat(owner.current, "Я - элитный наёмник могучего Клана Паука. КОСМИЧЕСКИЙ НИНДЗЯ!") to_chat(owner.current, "Сюрприз - моё оружие. Тени - мой доспех. Без них я ничто. (//чтобы использовать свой костюм, подключите его с помощью кнопки на вашем UI)!") + to_chat(owner.current, span_notice("Твой личный корабль (додзё) — в космосе. На нём есть крио-стазис: после выполнения целей вернись на корабль и ляг в капсулу, чтобы покинуть раунд.")) owner.announce_objectives() /datum/antagonist/ninja/on_gain() diff --git a/code/modules/antagonists/space_ninja_backup/space_ninja.dm b/code/modules/antagonists/space_ninja_backup/space_ninja.dm new file mode 100644 index 0000000000000..858e537143780 --- /dev/null +++ b/code/modules/antagonists/space_ninja_backup/space_ninja.dm @@ -0,0 +1,168 @@ +/datum/antagonist/ninja + name = "Space Ninja" + antagpanel_category = "Space Ninja" + job_rank = ROLE_NINJA + antag_hud_type = ANTAG_HUD_NINJA + antag_hud_name = "space_ninja" + show_name_in_check_antagonists = TRUE + show_to_ghosts = TRUE + antag_moodlet = /datum/mood_event/focused + ///Whether or not this ninja will obtain objectives + var/give_objectives = TRUE + ///Whether or not this ninja receives the standard equipment + var/give_equipment = FALSE + /// + var/ninja_outfit + +/proc/is_ninja(mob/living/M) + return M && M.mind && M.mind.has_antag_datum(/datum/antagonist/ninja) + +/datum/antagonist/ninja/apply_innate_effects(mob/living/mob_override) + var/mob/living/ninja = mob_override || owner.current + add_antag_hud(antag_hud_type, antag_hud_name, ninja) + +/datum/antagonist/ninja/remove_innate_effects(mob/living/mob_override) + var/mob/living/ninja = mob_override || owner.current + remove_antag_hud(antag_hud_type, ninja) + +/** + * Proc that equips the space ninja outfit on a given individual. By default this is the owner of the antagonist datum. + * + * Proc that equips the space ninja outfit on a given individual. By default this is the owner of the antagonist datum. + * Arguments: + * * ninja - The human to receive the gear + * * Returns a proc call on the given human which will equip them with all the gear. + */ + +/datum/antagonist/ninja/proc/equip_space_ninja_pre(mob/living/carbon/human/ninja = owner.current) // Ниндзя спавнится в космосе. Значит, экипируем его в первичный комплект заранее, чтобы не сдулся. + if(!isobserver(ninja)) + ninja.equipOutfit(/datum/outfit/ninja_pre) + +/datum/antagonist/ninja/proc/equip_space_ninja(mob/living/carbon/human/ninja = owner.current) + return ninja.equipOutfit(ninja_outfit) + +/** + * Proc that adds the proper memories to the antag datum + * + * Proc that adds the ninja starting memories to the owner of the antagonist datum. + */ +/datum/antagonist/ninja/proc/addMemories() + antag_memory += "Я - элитный наёмник Клана Паука. КОСМИЧЕСКИЙ НИНДЗЯ!
" + antag_memory += "Сюрприз - моё оружие. Тени - мой доспех. Без них я ничто. (//чтобы использовать свой костюм, подключите его с помощью кнопки на вашем UI)!
" + antag_memory += "У меня есть личный корабль (додзё) в космосе с крио-стазисом: после выполнения целей могу вернуться на корабль и уйти в крио, чтобы покинуть раунд.
" + +/datum/objective/cyborg_hijack + explanation_text = "Конвертируйте одного станционного робота в киборга-саботёра с помощью ваших перчаток." + +/datum/objective/door_jack + ///How many doors that need to be opened using the gloves to pass the objective + var/doors_required = 0 + +/datum/objective/plant_explosive + var/area/detonation_location + +/datum/objective/security_scramble + explanation_text = "Взломайте консоль охраны, используя перчатки, чтобы установить арест на весь экипаж. ИИ получит уведомление в тот момент, когда вы начнёте!" + +/datum/objective/terror_message + explanation_text = "Взломайте консоль капитана, используя перчатки, чтобы наслать на станцию ещё одну угрозу. ИИ получит уведомление в тот момент, когда вы начнёте!" + +/** + * Proc that adds all the ninja's objectives to the antag datum. + * + * Proc that adds all the ninja's objectives to the antag datum. Called when the datum is gained. + */ +/datum/antagonist/ninja/proc/addObjectives() + //Cyborg Hijack: Flag set to complete in the DrainAct in ninjaDrainAct.dm + var/datum/objective/hijack = new /datum/objective/cyborg_hijack() + objectives += hijack + + //Research stealing + var/datum/objective/download/research = new /datum/objective/download() + research.owner = owner + research.gen_amount_goal() + objectives += research + + //Door jacks, flag will be set to complete on when the last door is hijacked + var/datum/objective/door_jack/doorobjective = new /datum/objective/door_jack() + doorobjective.doors_required = rand(15,40) + doorobjective.explanation_text = "Взломайте [doorobjective.doors_required] станционных шлюзов с помощью ваших перчаток." + objectives += doorobjective + + //Explosive plant, the bomb will register its completion on priming + var/datum/objective/plant_explosive/bombobjective = new /datum/objective/plant_explosive() + for(var/sanity in 1 to 100) // 100 checks at most. + var/area/selected_area = pick(GLOB.sortedAreas) + if(!is_station_level(selected_area.z) || !selected_area.area_flags == VALID_TERRITORY) + continue + bombobjective.detonation_location = selected_area + break + if(bombobjective.detonation_location) + bombobjective.explanation_text = "Детонируйте взрывпакет в локации: [bombobjective.detonation_location]. В других местах взрывчатка не будет работать!" + objectives += bombobjective + + //Security Scramble, set to complete upon using your gloves on a security console + var/datum/objective/securityobjective = new /datum/objective/security_scramble() + objectives += securityobjective + + //Message of Terror, set to complete upon using your gloves a communication console + var/datum/objective/communicationobjective = new /datum/objective/terror_message() + objectives += communicationobjective + + //Survival until end + var/datum/objective/survival = new /datum/objective/survive() + survival.owner = owner + objectives += survival + +/datum/antagonist/ninja/greet() + SEND_SOUND(owner.current, sound('sound/ambience/antag/ninja_greeting.ogg')) + to_chat(owner.current, "Я - элитный наёмник могучего Клана Паука. КОСМИЧЕСКИЙ НИНДЗЯ!") + to_chat(owner.current, "Сюрприз - моё оружие. Тени - мой доспех. Без них я ничто. (//чтобы использовать свой костюм, подключите его с помощью кнопки на вашем UI)!") + to_chat(owner.current, span_notice("Твой личный корабль (додзё) — в космосе. На нём есть крио-стазис: после выполнения целей вернись на корабль и ляг в капсулу, чтобы покинуть раунд.")) + owner.announce_objectives() + +/datum/antagonist/ninja/on_gain() + if(give_objectives) + addObjectives() + addMemories() + + equip_space_ninja_pre() + choosePath() + + + owner.current.mind.assigned_role = ROLE_NINJA + owner.current.mind.special_role = ROLE_NINJA + var/mob/living/carbon/human/H = owner.current + var/load_character = alert(H.client, "Желаете загрузить текущего своего выбранного персонажа?", "Играть своим персонажем!", "Да", "Нет") + if(load_character == "Да") + H.load_client_appearance(H.client) + return ..() + +/datum/antagonist/ninja/admin_add(datum/mind/new_owner,mob/admin) + new_owner.assigned_role = ROLE_NINJA + new_owner.special_role = ROLE_NINJA + new_owner.add_antag_datum(src) + message_admins("[key_name_admin(admin)] has ninja'ed [key_name_admin(new_owner)].") + log_admin("[key_name(admin)] has ninja'ed [key_name(new_owner)].") + + +/datum/antagonist/ninja/proc/choosePath(mob/living/carbon/human/ninja = owner.current) + if(!isobserver(ninja)) + //var/type = tgui_alert(ninja, "Выберите предпочительную экипировку", "Космический ниндзя", list("Путь Ёкая", "Путь Паука", "Путь Мудрости")) + var/choices = list("Путь Ёкая", "Путь Паука", "Путь Мудрости") + var/choice = input(ninja, "Выберите предпочительную экипировку", "Космический ниндзя") in choices + switch(choice) + if("Путь Ёкая") + give_equipment = TRUE + ninja_outfit = /datum/outfit/ninja_ronin + if("Путь Паука") + give_equipment = TRUE + ninja_outfit = /datum/outfit/ninja + if("Путь Мудрости") + give_equipment = TRUE + ninja_outfit = /datum/outfit/ninja_wisdom + + if(give_equipment) + ninja.delete_equipment() + equip_space_ninja(ninja) + diff --git a/code/modules/events/ninja_ss220.dm b/code/modules/events/ninja_ss220.dm new file mode 100644 index 0000000000000..b4359f5524c57 --- /dev/null +++ b/code/modules/events/ninja_ss220.dm @@ -0,0 +1,26 @@ +/datum/event/space_ninja + name = "Космический ниндзя" + +/datum/event/space_ninja/proc/get_ninja() + var/image/I = new('icons/mob/ninja_previews.dmi', "ninja_preview_new_hood_green") + var/list/candidates = SSghost_spawns.poll_candidates("Do you wish to be considered for the position of a Spider Clan Assassin'?", ROLE_NINJA, source = I) + if(length(candidates)) + var/mob/dead/observer/selected = pick(candidates) + candidates -= selected + var/mob/living/carbon/human/new_character = makeBody(selected) + new_character.mind.make_Space_Ninja() + return TRUE + else + return FALSE + +/datum/event/space_ninja/start() + processing = 0 //so it won't fire again in next tick + var/list/check_list = num_station_players() + for(var/mob/new_player/lobby_player in check_list) + check_list -= lobby_player + if(length(check_list) < 25) + message_admins("Space Ninja event failed to start. Not enough players.") + return + if(!get_ninja()) + message_admins("Space Ninja event failed to find players. Retrying in 30s.") + addtimer(CALLBACK(src, PROC_REF(get_ninja)), 5 SECONDS) diff --git a/code/modules/events/space_ninja.dm b/code/modules/events/space_ninja.dm index 8ae8c1bd1f233..e76f5c3805331 100644 --- a/code/modules/events/space_ninja.dm +++ b/code/modules/events/space_ninja.dm @@ -4,7 +4,7 @@ max_occurrences = 1 weight = 10 earliest_start = 45 MINUTES - min_players = 35 + min_players = 0 dynamic_should_hijack = TRUE category = EVENT_CATEGORY_INVASION description = "A space ninja infiltrates the station." @@ -14,17 +14,11 @@ role_name = "Space Ninja" /datum/round_event/ghost_role/space_ninja/spawn_role() - var/list/spawn_locs = list() - for(var/obj/effect/landmark/carpspawn/carp_spawn in GLOB.landmarks_list) - if(!isturf(carp_spawn.loc)) - stack_trace("Carp spawn found not on a turf: [carp_spawn.type] on [isnull(carp_spawn.loc) ? "null" : carp_spawn.loc.type]") - continue - spawn_locs += carp_spawn.loc - if(!spawn_locs.len) - message_admins("No valid spawn locations found, aborting...") + // Додзё на уровне ЦК (CentCom.dmm), точки в GLOB.ninjastart заполняются при загрузке карты. + if(!length(GLOB.ninjastart)) + message_admins("Ninja Dojo has no spawn points (CentCom may not have loaded).") return MAP_ERROR - //selecting a candidate player var/list/candidates = get_candidates(ROLE_NINJA, null, ROLE_NINJA) if(!candidates.len) return NOT_ENOUGH_PLAYERS @@ -32,8 +26,7 @@ var/mob/dead/selected_candidate = pick(candidates) var/key = selected_candidate.key - //spawn the ninja and assign the candidate - var/mob/living/carbon/human/ninja = create_space_ninja(pick(spawn_locs)) + var/mob/living/carbon/human/ninja = create_space_ninja(pick(GLOB.ninjastart)) ninja.key = key ninja.mind.add_antag_datum(/datum/antagonist/ninja) spawned_mobs += ninja diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index e78136bd1fc3d..834a5f265943f 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -492,7 +492,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/list/L = list() for(var/turf/T in get_area_turfs(thearea.type)) - L+=T + L += T if(!L || !L.len) to_chat(usr, "No area available.") diff --git a/code/modules/ninja/suit/ninja_equipment_actions/ninja_leave_round.dm b/code/modules/ninja/suit/ninja_equipment_actions/ninja_leave_round.dm new file mode 100644 index 0000000000000..5ac09094a191c --- /dev/null +++ b/code/modules/ninja/suit/ninja_equipment_actions/ninja_leave_round.dm @@ -0,0 +1,17 @@ +// Способность «Убраться прочь» выдаётся костюмом после выполнения всех целей (кроме одноимённой). Появляется в панели способностей с оповещением в чат. + +/datum/action/item_action/ninja_leave_round + name = "Убраться прочь" + desc = "Покинуть станцию и завершить миссию. Доступно после выполнения всех 6 целей." + button_icon_state = "ninja_exit" + icon_icon = 'icons/mob/actions/actions_ninja.dmi' + background_icon_state = "background_green" + +/datum/action/item_action/ninja_leave_round/Trigger(trigger_flags) + . = ..() + if(!. || !iscarbon(owner)) + return + var/mob/living/carbon/human/ninja = owner + if(!ninja?.mind) + return + ninja_leave_round(ninja) diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm index da1eab6343aa7..19226a666e9d9 100644 --- a/code/modules/ninja/suit/suit.dm +++ b/code/modules/ninja/suit/suit.dm @@ -58,6 +58,8 @@ var/s_busy = FALSE ///Whether or not the adrenaline boost ability is available var/a_boost = TRUE + /// Выдана ли способность «Убраться прочь» (появляется после выполнения всех целей, кроме одноимённой) + var/leave_ability_granted = FALSE /obj/item/clothing/suit/space/space_ninja/examine(mob/user) . = ..() if(!s_initialized) @@ -113,6 +115,12 @@ else cell.charge = 0 cancel_stealth() + // Способность «Убраться прочь» появляется после выполнения всех 6 целей (кроме цели «Убраться прочь») + if(!leave_ability_granted && ninja_completed_objectives_count(affecting, 6)) + leave_ability_granted = TRUE + var/datum/action/item_action/ninja_leave_round/A = new(target = src) + A.Grant(affecting) + to_chat(affecting, span_boldnotice("Все 6 целей выполнены. Доступна способность «Убраться прочь» — покиньте станцию и завершите миссию.")) /obj/item/clothing/suit/space/space_ninja/ui_action_click(mob/user, action) if(IS_NINJA_SUIT_INITIALIZATION(action)) diff --git a/icons/obj/ninjaobjects.dmi b/icons/obj/ninjaobjects.dmi index 31d00b5936914..773068125619a 100644 Binary files a/icons/obj/ninjaobjects.dmi and b/icons/obj/ninjaobjects.dmi differ diff --git a/tgstation.dme b/tgstation.dme index a0db1c74b1829..ec94d643b1ec1 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2084,6 +2084,8 @@ #include "code\modules\antagonists\slaughter\slaughterevent.dm" #include "code\modules\antagonists\space_dragon\space_dragon.dm" #include "code\modules\antagonists\space_ninja\space_ninja.dm" +#include "code\modules\antagonists\space_ninja\ninja_zen.dm" +#include "code\modules\antagonists\space_ninja\machinery\ninja_teleporter.dm" #include "code\modules\antagonists\survivalist\survivalist.dm" #include "code\modules\antagonists\swarmer\swarmer.dm" #include "code\modules\antagonists\swarmer\swarmer_event.dm" @@ -3476,6 +3478,7 @@ #include "code\modules\ninja\suit\ninja_equipment_actions\ninja_status_read.dm" #include "code\modules\ninja\suit\ninja_equipment_actions\ninja_stealth.dm" #include "code\modules\ninja\suit\ninja_equipment_actions\ninja_suit_initialisation.dm" +#include "code\modules\ninja\suit\ninja_equipment_actions\ninja_leave_round.dm" #include "code\modules\ninja\suit\ninja_equipment_actions\ninja_sword_recall.dm" #include "code\modules\NTNet\netdata.dm" #include "code\modules\NTNet\network.dm"