diff --git a/_maps/RandomRuins/SpaceRuins/hellfactory.dmm b/_maps/RandomRuins/SpaceRuins/hellfactory.dmm new file mode 100644 index 00000000000..6e973667359 --- /dev/null +++ b/_maps/RandomRuins/SpaceRuins/hellfactory.dmm @@ -0,0 +1,1773 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/template_noop) +"ab" = ( +/turf/closed/wall, +/area/ruin/space/has_grav/hellfactory) +"ac" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/has_grav/hellfactory) +"ad" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ + dir = 4 + }, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/hellfactory) +"ae" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/visible{ + dir = 4 + }, +/obj/structure/closet/secure_closet/freezer/meat, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/hellfactory) +"af" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer1{ + dir = 4 + }, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/hellfactory) +"ag" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer1{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer3{ + dir = 1 + }, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/hellfactory) +"ah" = ( +/turf/closed/indestructible{ + icon = 'icons/turf/walls/reinforced_wall.dmi'; + icon_state = "r_wall" + }, +/area/ruin/space/has_grav/hellfactoryoffice) +"ai" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer1{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/junction/layer3{ + dir = 8 + }, +/turf/closed/indestructible{ + icon = 'icons/turf/walls/reinforced_wall.dmi'; + icon_state = "r_wall" + }, +/area/ruin/space/has_grav/hellfactoryoffice) +"aj" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/visible{ + dir = 4 + }, +/obj/structure/fluff/hedge/opaque, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"ak" = ( +/obj/machinery/atmospherics/components/unary/tank/oxygen{ + gas_type = /datum/gas/water_vapor + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"al" = ( +/obj/structure/table/reinforced, +/obj/item/storage/cans/sixbeer, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"am" = ( +/obj/machinery/paystand, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"an" = ( +/obj/effect/decal/remains/human, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"ao" = ( +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"ap" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/security/wooden_tv, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"aq" = ( +/obj/item/pressure_plate/hologrid{ + name = "bossman's hologrid"; + reward = /obj/item/stack/spacecash/c10000 + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"ar" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal/five, +/obj/item/grenade/firecracker, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"as" = ( +/obj/structure/holobox, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"at" = ( +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/obj/item/reagent_containers/glass/beaker/large, +/obj/item/reagent_containers/glass/beaker/large, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"au" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer3{ + dir = 6 + }, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/hellfactory) +"av" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1{ + dir = 4 + }, +/obj/structure/holobox, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/hellfactory) +"aw" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer3{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/turf/closed/wall, +/area/ruin/space/has_grav/hellfactory) +"ax" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/manifold/layer3{ + dir = 4 + }, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/hellfactory) +"ay" = ( +/obj/structure/fluff/hedge/opaque, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"az" = ( +/obj/item/trash/raisins, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"aA" = ( +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"aB" = ( +/turf/open/floor/plasteel/checker, +/area/ruin/space/has_grav/hellfactory) +"aC" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer3, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/hellfactory) +"aD" = ( +/obj/structure/holobox, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/hellfactory) +"aE" = ( +/obj/machinery/photocopier, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"aF" = ( +/obj/item/trash/can, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"aG" = ( +/obj/structure/table/reinforced, +/obj/item/storage/cans/sixsoda, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"aH" = ( +/obj/structure/table/reinforced, +/obj/item/trash/popcorn, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"aI" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"aJ" = ( +/obj/structure/table/reinforced, +/obj/item/trash/candle, +/obj/structure/cable, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"aK" = ( +/obj/structure/table/reinforced, +/obj/item/rsf, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"aL" = ( +/turf/closed/wall/rust, +/area/ruin/space/has_grav/hellfactory) +"aM" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer3{ + dir = 5 + }, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/hellfactory) +"aN" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer3{ + dir = 4 + }, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/hellfactory) +"aO" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer3{ + dir = 9 + }, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/hellfactory) +"aP" = ( +/obj/structure/filingcabinet, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"aQ" = ( +/obj/item/trash/can, +/obj/item/trash/can, +/obj/structure/closet/crate/bin, +/obj/item/trash/chips, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"aR" = ( +/obj/item/ammo_casing/spent, +/obj/item/ammo_casing/spent{ + pixel_x = 3; + pixel_y = 5 + }, +/obj/item/ammo_casing/spent{ + pixel_x = 4; + pixel_y = -10 + }, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"aS" = ( +/obj/structure/closet/crate, +/obj/item/stack/packageWrap, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"aT" = ( +/obj/effect/mine/gas/water_vapor, +/obj/machinery/door/window, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/hellfactory) +"aU" = ( +/turf/open/floor/plastic, +/area/ruin/space/has_grav/hellfactory) +"aV" = ( +/obj/effect/mine/gas/water_vapor, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/hellfactory) +"aW" = ( +/turf/closed/wall/r_wall/rust, +/area/ruin/space/has_grav/hellfactory) +"aX" = ( +/obj/item/ammo_casing/spent{ + pixel_x = -10; + pixel_y = -4 + }, +/obj/item/ammo_casing/spent, +/obj/structure/cable, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"aY" = ( +/obj/structure/extinguisher_cabinet, +/turf/closed/wall, +/area/ruin/space/has_grav/hellfactory) +"aZ" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/checker, +/area/ruin/space/has_grav/hellfactory) +"ba" = ( +/obj/structure/plasticflaps, +/obj/machinery/conveyor/auto, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bb" = ( +/obj/structure/window/reinforced/fulltile, +/obj/structure/grille, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bc" = ( +/obj/structure/plasticflaps, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bd" = ( +/obj/structure/sign/warning/coldtemp{ + name = "\improper BLAST FREEZER" + }, +/turf/closed/wall/r_wall, +/area/ruin/space/has_grav/hellfactory) +"be" = ( +/obj/structure/table, +/obj/item/paper_bin/carbon, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"bf" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/item/chair/plastic{ + pixel_y = 4 + }, +/obj/item/chair/plastic{ + pixel_y = 8 + }, +/obj/item/chair/plastic{ + pixel_y = 12 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"bg" = ( +/obj/machinery/modular_computer/console/preset/civilian, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"bh" = ( +/obj/item/pressure_plate/hologrid{ + reward = /obj/item/keycard/office + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bi" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bj" = ( +/obj/structure/grille, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bk" = ( +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/plasteel/checker, +/area/ruin/space/has_grav/hellfactory) +"bl" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/conveyor/auto, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bm" = ( +/obj/structure/table, +/obj/item/stamp/denied, +/obj/item/stamp{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/structure/window{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"bn" = ( +/obj/structure/closet/crate/trashcart, +/obj/item/soap/nanotrasen, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"bo" = ( +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bp" = ( +/obj/structure/chair/plastic, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"bq" = ( +/obj/structure/extinguisher_cabinet, +/turf/closed/wall/r_wall/rust, +/area/ruin/space/has_grav/hellfactory) +"br" = ( +/obj/machinery/door/keycard/stockroom, +/obj/structure/cable, +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/hellfactory) +"bs" = ( +/obj/machinery/conveyor/auto, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bt" = ( +/obj/structure/holobox, +/obj/machinery/conveyor/auto{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bu" = ( +/obj/structure/fermenting_barrel, +/obj/machinery/conveyor/auto{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bv" = ( +/obj/machinery/conveyor/auto{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bw" = ( +/obj/structure/table, +/obj/structure/window{ + dir = 8 + }, +/obj/item/pen/fourcolor, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"bx" = ( +/obj/structure/table, +/obj/item/storage/toolbox/mechanical, +/obj/structure/window{ + dir = 8 + }, +/obj/structure/window, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"by" = ( +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bz" = ( +/obj/structure/closet/crate, +/obj/item/reagent_containers/glass/beaker/large, +/obj/item/reagent_containers/glass/beaker/large, +/obj/item/reagent_containers/glass/beaker/large, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"bA" = ( +/obj/structure/closet/crate, +/obj/item/stack/packageWrap, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"bB" = ( +/obj/structure/fermenting_barrel, +/obj/machinery/conveyor/auto, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bC" = ( +/obj/structure/ore_box, +/obj/machinery/conveyor/auto{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bD" = ( +/obj/effect/turf_decal/arrows, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bE" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bF" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bG" = ( +/obj/structure/closet/crate, +/obj/machinery/conveyor/auto, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/item/reagent_containers/food/drinks/flask, +/obj/item/stack/sheet/glass, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bI" = ( +/obj/structure/fermenting_barrel, +/obj/machinery/conveyor/auto{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bJ" = ( +/obj/effect/turf_decal/delivery, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bK" = ( +/obj/machinery/light, +/obj/structure/rack, +/obj/item/book/manual/random, +/obj/item/poster/random_contraband, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"bL" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"bM" = ( +/obj/structure/grille/broken, +/obj/item/pressure_plate/hologrid{ + reward = /obj/item/stack/spacecash/c500 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bN" = ( +/obj/structure/ore_box, +/obj/machinery/conveyor/auto, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bO" = ( +/obj/structure/closet/crate, +/obj/machinery/conveyor/auto{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/item/stack/sheet/mineral/wood/fifty, +/obj/item/plunger, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bP" = ( +/obj/effect/turf_decal/arrows{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bQ" = ( +/obj/structure/mirror, +/turf/closed/wall/rust, +/area/ruin/space/has_grav/hellfactory) +"bR" = ( +/obj/item/pressure_plate/hologrid{ + reward = /obj/item/keycard/stockroom + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bS" = ( +/obj/item/pressure_plate/hologrid{ + reward = /obj/item/stack/arcadeticket/thirty + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bT" = ( +/obj/machinery/conveyor/auto{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bU" = ( +/obj/structure/closet/crate/large, +/obj/machinery/conveyor/auto{ + dir = 4 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bV" = ( +/obj/structure/closet/crate, +/obj/machinery/conveyor/auto{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/item/reagent_containers/food/drinks/shaker, +/obj/item/stack/sheet/cardboard, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bW" = ( +/obj/machinery/conveyor/auto{ + dir = 1 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bX" = ( +/obj/structure/sign/warning/chemdiamond, +/turf/closed/wall, +/area/ruin/space/has_grav/hellfactory) +"bY" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"bZ" = ( +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"ca" = ( +/obj/machinery/door/airlock, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"cb" = ( +/obj/machinery/light/small, +/obj/structure/curtain, +/turf/open/floor/holofloor/wood, +/area/ruin/space/has_grav/hellfactory) +"cc" = ( +/obj/structure/bed, +/obj/item/bedsheet/dorms, +/turf/open/floor/holofloor/wood, +/area/ruin/space/has_grav/hellfactory) +"cd" = ( +/obj/machinery/plumbing/synthesizer{ + desc = "Produces a single chemical at a given volume. This one appears to have been hotwired to generate universal enzyme."; + dir = 2; + dispensable_reagents = list(/datum/reagent/consumable/enzyme); + reagent_id = /datum/reagent/consumable/enzyme + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"ce" = ( +/obj/machinery/plumbing/synthesizer{ + desc = "Produces a single chemical at a given volume. This one appears to have been hotwired to generate honey."; + dir = 2; + dispensable_reagents = list(/datum/reagent/consumable/honey); + reagent_id = /datum/reagent/consumable/honey + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"cf" = ( +/obj/machinery/plumbing/synthesizer{ + desc = "Produces a single chemical at a given volume. This one seems to have been hotwired to produce... blood?"; + dir = 2; + dispensable_reagents = list(/datum/reagent/blood); + reagent_id = /datum/reagent/blood + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"cg" = ( +/obj/structure/closet/crate, +/obj/item/stack/ore/glass, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"ch" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/plumbing/tank, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"ci" = ( +/obj/machinery/light/small, +/obj/effect/decal/remains/human, +/obj/structure/curtain, +/turf/open/floor/holofloor/wood, +/area/ruin/space/has_grav/hellfactory) +"cj" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/cloth/five, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"ck" = ( +/obj/machinery/plumbing/tank, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"cl" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"cm" = ( +/obj/structure/cable, +/obj/machinery/power/apc/highcap/ten_k{ + dir = 1 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"cn" = ( +/obj/machinery/plumbing/output{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"co" = ( +/obj/effect/turf_decal/box/white/corners{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"cp" = ( +/obj/effect/turf_decal/box/white/corners, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"cq" = ( +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"cr" = ( +/obj/structure/closet/crate/trashcart, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"cs" = ( +/obj/structure/fermenting_barrel, +/obj/effect/turf_decal/box/white, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"ct" = ( +/obj/machinery/light/built, +/obj/structure/marker_beacon{ + icon_state = "markerburgundy-on" + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"cu" = ( +/obj/effect/turf_decal{ + dir = 9 + }, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, +/area/ruin/space/has_grav/hellfactory) +"cv" = ( +/obj/effect/turf_decal{ + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear/white, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"cw" = ( +/obj/effect/turf_decal{ + dir = 1 + }, +/obj/item/stack/tile/plasteel, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"cx" = ( +/obj/effect/turf_decal{ + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear/white, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, +/area/ruin/space/has_grav/hellfactory) +"cy" = ( +/obj/effect/turf_decal{ + dir = 5 + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"cz" = ( +/obj/machinery/light/broken, +/obj/structure/marker_beacon{ + icon_state = "markerburgundy-on" + }, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"cA" = ( +/obj/item/trash/raisins, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"cB" = ( +/obj/item/stack/tile/plasteel, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"cC" = ( +/obj/structure/sign/warning/vacuum, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"cD" = ( +/obj/structure/ore_box, +/obj/effect/turf_decal/delivery/white, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"cE" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall/rust, +/area/ruin/space/has_grav/hellfactory) +"cF" = ( +/obj/effect/turf_decal/delivery/white, +/obj/machinery/door/poddoor, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, +/area/ruin/space/has_grav/hellfactory) +"cG" = ( +/obj/effect/turf_decal/delivery/white, +/obj/effect/turf_decal/delivery/red, +/obj/item/stack/tile/plasteel, +/obj/machinery/door/poddoor, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, +/area/ruin/space/has_grav/hellfactory) +"cH" = ( +/obj/effect/turf_decal/delivery/white, +/obj/structure/grille/broken, +/obj/machinery/door/poddoor, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, +/area/ruin/space/has_grav/hellfactory) +"cI" = ( +/obj/effect/turf_decal/delivery/white, +/obj/effect/turf_decal/delivery/red, +/obj/machinery/door/poddoor, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, +/area/ruin/space/has_grav/hellfactory) +"cJ" = ( +/obj/effect/turf_decal/delivery/white, +/obj/item/stack/tile/plasteel, +/obj/machinery/door/poddoor, +/turf/open/floor/plating{ + broken = 1; + icon_state = "platingdmg1" + }, +/area/ruin/space/has_grav/hellfactory) +"cK" = ( +/obj/machinery/power/port_gen/pacman, +/obj/structure/cable, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"cL" = ( +/obj/item/bedsheet/brown, +/obj/structure/bed, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"cM" = ( +/obj/item/storage/toolbox/emergency/old, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"cN" = ( +/obj/machinery/door/keycard/entry, +/obj/machinery/door/airlock/public, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"cO" = ( +/obj/structure/holobox, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"cQ" = ( +/obj/structure/lattice/catwalk, +/turf/open/space/basic, +/area/ruin/space/has_grav/hellfactory) +"cR" = ( +/obj/structure/lattice/catwalk, +/obj/structure/marker_beacon{ + icon_state = "markerburgundy-on" + }, +/turf/open/space/basic, +/area/ruin/space/has_grav/hellfactory) +"cS" = ( +/obj/structure/lattice/catwalk, +/obj/item/keycard/entry, +/turf/open/space/basic, +/area/ruin/space/has_grav/hellfactory) +"cU" = ( +/obj/machinery/door/keycard/office, +/turf/open/floor/plasteel/dark, +/area/ruin/space/has_grav/hellfactoryoffice) +"cV" = ( +/obj/structure/table, +/obj/item/stack/ducts/fifty, +/obj/structure/window, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"fj" = ( +/obj/structure/cable, +/turf/closed/indestructible{ + icon = 'icons/turf/walls/reinforced_wall.dmi'; + icon_state = "r_wall" + }, +/area/ruin/space/has_grav/hellfactoryoffice) +"hv" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/hellfactory) +"lv" = ( +/obj/structure/cable, +/obj/structure/cable, +/turf/closed/wall/r_wall, +/area/ruin/space/has_grav/hellfactory) +"lR" = ( +/obj/machinery/light/floor, +/obj/effect/turf_decal/bot_white/right, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"nT" = ( +/obj/structure/rack, +/obj/item/stack/wrapping_paper, +/obj/item/stack/packageWrap, +/obj/effect/spawner/lootdrop/donkpockets, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"oH" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plasteel/checker, +/area/ruin/space/has_grav/hellfactory) +"qB" = ( +/obj/item/pressure_plate/hologrid{ + reward = /obj/item/skub + }, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"ry" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/floor, +/obj/effect/turf_decal/bot_white/left, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"rC" = ( +/obj/structure/sign/poster/random, +/turf/closed/wall/rust, +/area/ruin/space/has_grav/hellfactory) +"uL" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/floor, +/obj/effect/turf_decal/bot_white/right, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"wv" = ( +/obj/machinery/power/apc/highcap/ten_k{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"xK" = ( +/obj/structure/bed, +/obj/item/bedsheet/dorms, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/holofloor/wood, +/area/ruin/space/has_grav/hellfactory) +"zI" = ( +/obj/structure/cable, +/turf/closed/wall/r_wall/rust, +/area/ruin/space/has_grav/hellfactory) +"BC" = ( +/obj/machinery/light/floor, +/obj/effect/turf_decal/bot_white/left, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"EP" = ( +/obj/structure/cable, +/turf/closed/wall/r_wall, +/area/ruin/space/has_grav/hellfactory) +"Fs" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table, +/obj/machinery/microwave, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"Gs" = ( +/obj/structure/cable, +/obj/structure/cable, +/turf/closed/wall/r_wall/rust, +/area/ruin/space/has_grav/hellfactory) +"GE" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plasteel/checker, +/area/ruin/space/has_grav/hellfactory) +"Mv" = ( +/obj/structure/sign/poster/random, +/turf/closed/wall, +/area/ruin/space/has_grav/hellfactory) +"MR" = ( +/obj/item/pressure_plate/hologrid, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"OJ" = ( +/obj/machinery/atmospherics/pipe/heat_exchanging/simple, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer1, +/obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer3, +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plastic, +/area/ruin/space/has_grav/hellfactory) +"PO" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"Sz" = ( +/obj/effect/decal/cleanable/oil, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) +"UK" = ( +/obj/effect/decal/cleanable/oil/streak, +/turf/open/floor/plasteel, +/area/ruin/space/has_grav/hellfactory) +"UN" = ( +/obj/structure/cable, +/turf/open/floor/plasteel/grimy, +/area/ruin/space/has_grav/hellfactoryoffice) +"Wh" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/plating, +/area/ruin/space/has_grav/hellfactory) + +(1,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(2,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(3,1,1) = {" +aa +aa +aW +ac +aW +aW +ac +ac +aW +ac +ac +ac +aW +ac +ac +ac +ac +aW +aW +ac +aW +aW +aW +aa +aa +"} +(4,1,1) = {" +aa +aa +aW +ad +au +aC +aM +aT +ba +bl +bl +bs +bB +bG +bN +bT +cd +ch +ck +ck +cs +cD +aW +aa +aa +"} +(5,1,1) = {" +aa +aa +ac +ae +av +ab +aN +hv +bb +aA +bL +bt +bb +bb +bb +bU +ce +aA +bL +aA +cn +cs +aW +aa +aa +"} +(6,1,1) = {" +aa +aa +aW +af +aw +aD +aN +aU +bb +bL +aA +bu +bb +bb +bb +bV +cf +aA +aA +UK +bL +cs +aW +aa +aa +"} +(7,1,1) = {" +aa +aa +aW +ag +ax +OJ +aO +aV +bc +bL +bL +bv +bC +bI +bO +bW +aA +aA +bL +aA +aA +cs +aW +cQ +aa +"} +(8,1,1) = {" +aa +aa +ah +ai +ah +ah +ah +ah +bd +aA +aA +aA +bD +bJ +bP +bX +aA +aA +bL +aA +ct +cE +aW +cR +cQ +"} +(9,1,1) = {" +aa +aa +ah +aj +az +aF +aQ +ah +be +bm +bw +bx +bE +by +by +bY +by +by +by +co +cu +cF +aa +aa +aa +"} +(10,1,1) = {" +aa +aa +ah +ak +ao +ao +aF +ah +bf +aA +bp +cV +by +Wh +BC +by +Wh +ry +by +by +cv +cG +aa +aa +aa +"} +(11,1,1) = {" +aa +aa +ah +al +ao +aG +ao +ah +bg +aA +bL +aA +Wh +Wh +by +by +by +by +Wh +by +cw +cH +aa +aa +aa +"} +(12,1,1) = {" +aa +aa +ah +am +ao +aH +ao +ah +ac +ac +bq +by +by +by +lR +by +by +uL +by +Wh +cx +cI +aa +aa +aa +"} +(13,1,1) = {" +aa +aa +ah +an +ao +aI +aR +cU +bh +qB +MR +by +bF +by +by +bZ +by +bZ +cl +cp +cy +cJ +aa +aa +aa +"} +(14,1,1) = {" +aa +aa +ah +wv +UN +aJ +aX +fj +EP +zI +lv +by +by +bK +aL +ca +aL +ca +aL +by +cz +cE +ac +cR +cQ +"} +(15,1,1) = {" +aa +aa +ah +ap +ao +aK +ao +ah +aA +bn +zI +by +Wh +Fs +bQ +cb +bQ +ci +aL +cm +cq +cK +aW +cS +aa +"} +(16,1,1) = {" +aa +aa +ah +aq +ao +ao +ao +ah +aB +bL +br +by +by +nT +aL +cc +aL +xK +Gs +EP +aW +ac +aW +aa +aa +"} +(17,1,1) = {" +aa +aa +ah +ay +aE +aP +aP +ah +bi +aB +Gs +EP +EP +zI +EP +zI +EP +zI +lv +cr +cA +cC +ab +aa +aa +"} +(18,1,1) = {" +aa +aa +ah +ah +ah +ah +ah +ah +bj +bo +aL +bz +Mv +aB +bR +PO +ab +as +aL +cr +cB +cL +ab +aa +aa +"} +(19,1,1) = {" +aa +aa +ac +ar +aA +aB +aS +aL +bk +aB +ab +bA +aA +aB +ab +GE +cg +cj +by +Sz +by +cM +cN +aa +aa +"} +(20,1,1) = {" +aa +aa +aW +ab +bL +aB +aB +aY +aA +aB +ab +ab +ab +bM +ab +ab +rC +ab +Mv +Wh +Wh +by +ab +aa +aa +"} +(21,1,1) = {" +aa +aa +ac +as +aA +Mv +aB +aA +bL +aB +aB +aB +oH +aB +ab +aB +bL +aA +by +Wh +by +by +ab +aa +aa +"} +(22,1,1) = {" +aa +aa +ac +at +GE +aL +GE +aZ +aB +aB +aL +by +ab +aA +bS +aB +ab +as +aL +by +cl +cO +ab +aa +aa +"} +(23,1,1) = {" +aa +aa +aW +aW +aW +aW +aW +ac +aW +ac +ac +aW +aW +ac +ac +ac +ac +aW +aW +ab +ab +ab +ab +aa +aa +"} +(24,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} +(25,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +"} diff --git a/code/__DEFINES/radio.dm b/code/__DEFINES/radio.dm index bfba80a80cb..af6a9ac51b1 100644 --- a/code/__DEFINES/radio.dm +++ b/code/__DEFINES/radio.dm @@ -65,6 +65,7 @@ #define FREQ_ENGINEERING 1357 // Engineering comms frequency, orange #define FREQ_SECURITY 1359 // Security comms frequency, red +#define FREQ_HOLOGRID_SOLUTION 1433 #define FREQ_STATUS_DISPLAYS 1435 #define FREQ_ATMOS_ALARMS 1437 // air alarms <-> alert computers #define FREQ_ATMOS_CONTROL 1439 // air alarms <-> vents and scrubbers diff --git a/code/datums/martial/krav_maga.dm b/code/datums/martial/krav_maga.dm index 7ab9e3587f8..dc95d24ea37 100644 --- a/code/datums/martial/krav_maga.dm +++ b/code/datums/martial/krav_maga.dm @@ -89,12 +89,14 @@ /datum/martial_art/krav_maga/proc/leg_sweep(mob/living/carbon/human/A, mob/living/carbon/human/D) if(D.stat || D.IsParalyzed()) return 0 + var/obj/item/bodypart/affecting = D.get_bodypart(BODY_ZONE_CHEST) + var/armor_block = D.run_armor_check(affecting, "melee") D.visible_message("[A] leg sweeps [D]!", \ "Your legs are sweeped by [A]!", "You hear a sickening sound of flesh hitting flesh!", null, A) to_chat(A, "You leg sweep [D]!") playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, TRUE, -1) - D.apply_damage(5, BRUTE) - D.Paralyze(40) + D.apply_damage(rand(20,30), STAMINA, affecting, armor_block) + D.Knockdown(60) log_combat(A, D, "leg sweeped") return 1 @@ -130,12 +132,14 @@ if(check_streak(A,D)) return 1 log_combat(A, D, "punched") + var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected)) + var/armor_block = D.run_armor_check(affecting, "melee") var/picked_hit_type = pick("punch", "kick") - var/bonus_damage = 10 + var/bonus_damage = 0 if(!(D.mobility_flags & MOBILITY_STAND)) bonus_damage += 5 picked_hit_type = "stomp" - D.apply_damage(bonus_damage, A.dna.species.attack_type) + D.apply_damage(rand(5,10) + bonus_damage, A.dna.species.attack_type, affecting, armor_block) if(picked_hit_type == "kick" || picked_hit_type == "stomp") A.do_attack_animation(D, ATTACK_EFFECT_KICK) playsound(get_turf(D), 'sound/effects/hit_kick.ogg', 50, TRUE, -1) @@ -151,22 +155,27 @@ /datum/martial_art/krav_maga/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) if(check_streak(A,D)) return 1 - var/obj/item/I = null - if(prob(60)) - I = D.get_active_held_item() - if(I) - if(D.temporarilyRemoveItemFromInventory(I)) - A.put_in_hands(I) - D.visible_message("[A] disarms [D]!", \ - "You're disarmed by [A]!", "You hear aggressive shuffling!", COMBAT_MESSAGE_RANGE, A) - to_chat(A, "You disarm [D]!") - playsound(D, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1) - else - D.visible_message("[A] fails to disarm [D]!", \ - "You're nearly disarmed by [A]!", "You hear a swoosh!", COMBAT_MESSAGE_RANGE, A) - to_chat(A, "You fail to disarm [D]!") - playsound(D, 'sound/weapons/punchmiss.ogg', 25, TRUE, -1) - log_combat(A, D, "disarmed (Krav Maga)", "[I ? " removing \the [I]" : ""]") + var/obj/item/bodypart/affecting = D.get_bodypart(ran_zone(A.zone_selected)) + var/armor_block = D.run_armor_check(affecting, "melee") + if((D.mobility_flags & MOBILITY_STAND)) + D.visible_message("[A] reprimands [D]!", \ + "You're slapped by [A]!", "You hear a sickening sound of flesh hitting flesh!", COMBAT_MESSAGE_RANGE, A) + to_chat(A, "You jab [D]!") + A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) + playsound(D, 'sound/effects/hit_punch.ogg', 50, TRUE, -1) + D.apply_damage(rand(5,10), STAMINA, affecting, armor_block) + log_combat(A, D, "punched nonlethally") + if(!(D.mobility_flags & MOBILITY_STAND)) + D.visible_message("[A] reprimands [D]!", \ + "You're manhandled by [A]!", "You hear a sickening sound of flesh hitting flesh!", COMBAT_MESSAGE_RANGE, A) + to_chat(A, "You stomp [D]!") + A.do_attack_animation(D, ATTACK_EFFECT_KICK) + playsound(D, 'sound/effects/hit_punch.ogg', 50, TRUE, -1) + D.apply_damage(rand(10,15), STAMINA, affecting, armor_block) + log_combat(A, D, "stomped nonlethally") + if(prob(D.getStaminaLoss())) + D.visible_message("[D] sputters and recoils in pain!", "You recoil in pain as you are jabbed in a nerve!") + D.drop_all_held_items() return 1 //Krav Maga Gloves diff --git a/code/datums/ruins/space.dm b/code/datums/ruins/space.dm index f718b15ca45..52548423a7a 100644 --- a/code/datums/ruins/space.dm +++ b/code/datums/ruins/space.dm @@ -296,8 +296,14 @@ allow_duplicates = FALSE unpickable = TRUE -datum/map_template/ruin/space/forgottenship +/datum/map_template/ruin/space/forgottenship id = "forgottenship" suffix = "forgottenship.dmm" name = "Syndicate Forgotten Ship" description = "Seemingly abandoned ship went of course right into NT controlled space. It seems that malfunction caused most systems to turn off, except for sleepers." + +/datum/map_template/ruin/space/hellfactory + id = "hellfactory" + suffix = "hellfactory.dmm" + name = "Heck Brewery" + description = "An abandoned warehouse and brewing facility, which has been recently rediscovered. Reports claim that the security system entered an ultra-hard lockdown, but these reports are inconclusive." diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index 853587888ff..c69d13d1792 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -128,7 +128,7 @@ /datum/quirk/phobia/post_add() var/mob/living/carbon/human/H = quirk_holder - H.gain_trauma(new /datum/brain_trauma/mild/phobia(H.client.prefs.phobia), TRAUMA_RESILIENCE_ABSOLUTE) + H.gain_trauma(new /datum/brain_trauma/mild/phobia(H.client?.prefs.phobia), TRAUMA_RESILIENCE_ABSOLUTE) /datum/quirk/phobia/remove() var/mob/living/carbon/human/H = quirk_holder diff --git a/code/game/area/areas/ruins/space.dm b/code/game/area/areas/ruins/space.dm index da0ee2cfadc..9f171b15a3a 100644 --- a/code/game/area/areas/ruins/space.dm +++ b/code/game/area/areas/ruins/space.dm @@ -419,3 +419,13 @@ /area/ruin/space/has_grav/powered/ancient_shuttle name = "Ancient Shuttle" icon_state = "yellow" + +//HELL'S FACTORY OPERATING FACILITY +/area/ruin/space/has_grav/hellfactory + name = "Hell Factory" + icon_state = "yellow" + +/area/ruin/space/has_grav/hellfactoryoffice + name = "Hell Factory Office" + icon_state = "red" + noteleport = TRUE diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 2aeabfbad58..c6461b6baac 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -39,9 +39,10 @@ if(hotspot && istype(T) && T.air) qdel(hotspot) var/datum/gas_mixture/G = T.air - var/plas_amt = min(30,G.gases[/datum/gas/plasma][MOLES]) //Absorb some plasma - G.gases[/datum/gas/plasma][MOLES] -= plas_amt - absorbed_plasma += plas_amt + if(G.gases[/datum/gas/plasma]) + var/plas_amt = min(30,G.gases[/datum/gas/plasma][MOLES]) //Absorb some plasma + G.gases[/datum/gas/plasma][MOLES] -= plas_amt + absorbed_plasma += plas_amt if(G.temperature > T20C) G.temperature = max(G.temperature/2,T20C) G.garbage_collect() diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 32998fbfd9e..30f28343fff 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -78,6 +78,11 @@ gas_type = "n2o" +/obj/effect/mine/gas/water_vapor + name = "chilled vapor mine" + gas_amount = 500 + gas_type = "water_vapor" + /obj/effect/mine/sound name = "honkblaster 1000" var/sound = 'sound/items/bikehorn.ogg' diff --git a/code/game/objects/items/devices/pressureplates.dm b/code/game/objects/items/devices/pressureplates.dm index 202bdcede17..60fa1fbadb4 100644 --- a/code/game/objects/items/devices/pressureplates.dm +++ b/code/game/objects/items/devices/pressureplates.dm @@ -1,13 +1,14 @@ - /obj/item/pressure_plate name = "pressure plate" - desc = "An electronic device that triggers when stepped on." - icon = 'icons/obj/device.dmi' + desc = "An electronic device that triggers when stepped on. Ctrl-Click to toggle the pressure plate off and on." + icon = 'icons/obj/puzzle_small.dmi' item_state = "flash" icon_state = "pressureplate" level = 1 + layer = LOW_OBJ_LAYER var/trigger_mob = TRUE var/trigger_item = FALSE + var/specific_item = null var/trigger_silent = FALSE var/sound/trigger_sound = 'sound/effects/pressureplate.ogg' var/obj/item/assembly/signaler/sigdev = null @@ -20,6 +21,7 @@ var/image/tile_overlay = null var/can_trigger = TRUE var/trigger_delay = 10 + var/protected = FALSE /obj/item/pressure_plate/Initialize() . = ..() @@ -35,6 +37,8 @@ . = ..() if(!can_trigger || !active) return + if(trigger_item && !istype(AM, specific_item)) + return if(trigger_mob && isliving(AM)) var/mob/living/L = AM to_chat(L, "You feel something click beneath you!") @@ -62,6 +66,16 @@ sigdev = null return ..() +/obj/item/pressure_plate/CtrlClick(mob/user) + if(protected) + to_chat(user, "You can't quite seem to turn this pressure plate off...") + return + active = !active + if (active == TRUE) + to_chat(user, "You turn [src] on.") + else + to_chat(user, "You turn [src] off.") + /obj/item/pressure_plate/hide(yes) if(yes) invisibility = INVISIBILITY_MAXIMUM diff --git a/code/game/objects/items/puzzle_pieces.dm b/code/game/objects/items/puzzle_pieces.dm new file mode 100644 index 00000000000..5e0dbc421a1 --- /dev/null +++ b/code/game/objects/items/puzzle_pieces.dm @@ -0,0 +1,135 @@ +//************** +//*****Keys******************* +//************** ** ** +/obj/item/keycard + name = "security keycard" + desc = "This feels like it belongs to a door." + icon = 'icons/obj/puzzle_small.dmi' + icon_state = "keycard" + force = 0 + throwforce = 0 + w_class = WEIGHT_CLASS_TINY + throw_speed = 1 + throw_range = 7 + resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF + var/puzzle_id = null + +//Two test keys for use alongside the two test doors. +/obj/item/keycard/cheese + name = "cheese keycard" + desc = "Look, I still don't understand the reference. What the heck is a keyzza?" + color = "#f0da12" + puzzle_id = "cheese" + +/obj/item/keycard/swordfish + name = "titanic keycard" + desc = "Smells like it was at the bottom of a harbor." + color = "#3bbbdb" + puzzle_id = "swordfish" + +//*************** +//*****Doors***** +//*************** + +/obj/machinery/door/keycard + name = "locked door" + desc = "This door only opens when a keycard is swiped. It looks virtually indestructable." + icon = 'icons/obj/doors/doorpuzzle.dmi' + icon_state = "door_closed" + explosion_block = 3 + heat_proof = TRUE + max_integrity = 600 + armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) + resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF + damage_deflection = 70 + var/puzzle_id = null //Make sure that the key has the same puzzle_id as the keycard door! + +//Standard Expressions to make keycard doors basically un-cheeseable +/obj/machinery/door/keycard/Bumped(atom/movable/AM) + return !density && ..() + +/obj/machinery/door/keycard/emp_act(severity) + return + +/obj/machinery/door/keycard/ex_act(severity, target) + return + +/obj/machinery/door/keycard/try_to_activate_door(mob/user) + add_fingerprint(user) + if(operating) + return + +/obj/machinery/door/keycard/attackby(obj/item/I, mob/user, params) + . = ..() + if(istype(I,/obj/item/keycard)) + var/obj/item/keycard/key = I + if((!puzzle_id || puzzle_id == key.puzzle_id) && density) + to_chat(user, "The door beeps, and slides opens.") + open() + return + else if(puzzle_id != key.puzzle_id) + to_chat(user, "[src] buzzes. This must not be the right key.") + return + else + to_chat(user, "This door doesn't appear to close.") + return + +//Test doors. Gives admins a few doors to use quickly should they so choose. +/obj/machinery/door/keycard/cheese + name = "blue airlock" + desc = "Smells like... pizza?" + puzzle_id = "cheese" + +/obj/machinery/door/keycard/swordfish + name = "blue airlock" + desc = "If nautical nonsense be something you wish." + puzzle_id = "swordfish" + +//************************* +//***Box Pushing Puzzles*** +//************************* +//We're working off a subtype of pressureplates, which should work just a BIT better now. +/obj/structure/holobox + name = "holobox" + desc = "A hard-light box, containing a secure decryption key." + icon = 'icons/obj/puzzle_small.dmi' + icon_state = "laserbox" + density = TRUE + resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF + +//Uses the pressure_plate settings for a pretty basic custom pattern that waits for a specific item to trigger. Easy enough to retool for mapping purposes or subtypes. +/obj/item/pressure_plate/hologrid + name = "hologrid" + desc = "A high power, electronic input port for a holobox, which can unlock the hologrid's storage compartment. Safe to stand on." + icon = 'icons/obj/puzzle_small.dmi' + icon_state = "lasergrid" + anchored = TRUE + trigger_mob = FALSE + trigger_item = TRUE + specific_item = /obj/structure/holobox + removable_signaller = FALSE //Being a pressure plate subtype, this can also use signals. + roundstart_signaller_freq = FREQ_HOLOGRID_SOLUTION //Frequency is kept on it's own default channel however. + active = TRUE + trigger_delay = 10 + protected = TRUE + resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF + var/reward = /obj/item/reagent_containers/food/snacks/cookie + var/claimed = FALSE + +/obj/item/pressure_plate/hologrid/examine(mob/user) + . = ..() + if(claimed) + . += "This one appears to be spent already." + +/obj/item/pressure_plate/hologrid/trigger() + reward = new reward(loc) + flick("lasergrid_a",src) + icon_state = "lasergrid_full" + +/obj/item/pressure_plate/hologrid/Crossed(atom/movable/AM) + . = ..() + if(trigger_item && istype(AM, specific_item) && !claimed) + claimed = TRUE + flick("laserbox_burn", AM) + sleep(15) + qdel(AM) diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 0d7fb018a32..f76f2725173 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -516,6 +516,7 @@ new /obj/item/clothing/mask/chameleon/broken(src) new /obj/item/clothing/neck/chameleon/broken(src) new /obj/item/storage/backpack/chameleon/broken(src) + new /obj/item/storage/belt/chameleon/broken(src) new /obj/item/radio/headset/chameleon/broken(src) new /obj/item/stamp/chameleon/broken(src) new /obj/item/pda/chameleon/broken(src) diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index a3267218453..1631adaf37a 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -487,15 +487,17 @@ name = "explosive lance" var/obj/item/grenade/explosive = null -/obj/item/twohanded/spear/explosive/Initialize(mapload, obj/item/grenade/G) +/obj/item/twohanded/spear/explosive/Initialize(mapload) . = ..() - if (!G) - G = new /obj/item/grenade/iedcasing() //For admin-spawned explosive lances + set_explosive(new /obj/item/grenade/iedcasing()) //For admin-spawned explosive lances + + +/obj/item/twohanded/spear/explosive/proc/set_explosive(obj/item/grenade/G) + if(explosive) + QDEL_NULL(explosive) G.forceMove(src) explosive = G desc = "A makeshift spear with [G] attached to it" - update_icon() - /obj/item/twohanded/spear/explosive/CheckParts(list/parts_list) var/obj/item/grenade/G = locate() in parts_list @@ -507,7 +509,7 @@ icon_prefix = lancePart.icon_prefix parts_list -= G parts_list -= lancePart - Initialize(src.loc, G) + set_explosive(G) qdel(lancePart) ..() diff --git a/code/modules/antagonists/blob/blobstrains/networked_fibers.dm b/code/modules/antagonists/blob/blobstrains/networked_fibers.dm index 649ca4d44c4..67f47a4b806 100644 --- a/code/modules/antagonists/blob/blobstrains/networked_fibers.dm +++ b/code/modules/antagonists/blob/blobstrains/networked_fibers.dm @@ -34,5 +34,5 @@ /datum/reagent/blob/networked_fibers/reaction_mob(mob/living/M, method=TOUCH, reac_volume, show_message, touch_protection, mob/camera/blob/O) reac_volume = ..() M.apply_damage(0.6*reac_volume, BRUTE) - if(M) + if(!QDELETED(M)) M.apply_damage(0.6*reac_volume, BURN) diff --git a/code/modules/events/wizard/rpgloot.dm b/code/modules/events/wizard/rpgloot.dm index 8c98ba1dd68..b2719c03a78 100644 --- a/code/modules/events/wizard/rpgloot.dm +++ b/code/modules/events/wizard/rpgloot.dm @@ -10,7 +10,7 @@ for(var/obj/item/I in world) CHECK_TICK - if(!(I.flags_1 & INITIALIZED_1)) + if(!(I.flags_1 & INITIALIZED_1) || QDELETED(I)) continue I.AddComponent(/datum/component/fantasy) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index d80ba3effcd..fc70e23645c 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -154,9 +154,8 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER) /mob/dead/observer/Destroy() // Update our old body's medhud since we're abandoning it - if(mind) - var/mob/living/carbon/current = mind.current - current.med_hud_set_status() + if(mind && mind.current) + mind.current.med_hud_set_status() GLOB.ghost_images_default -= ghostimage_default QDEL_NULL(ghostimage_default) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index ccbe8a06461..cf087e4eb8d 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -959,7 +959,7 @@ . = UI_INTERACTIVE /obj/machinery/power/apc/ui_act(action, params) - if(..() || !can_use(usr, 1) || (locked && !usr.has_unlimited_silicon_privilege && !failure_timer)) + if(..() || !can_use(usr, 1) || (locked && !usr.has_unlimited_silicon_privilege && !failure_timer && action != "toggle_nightshift")) return switch(action) if("lock") diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 3f537e4364e..989bdd03833 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -90,6 +90,8 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) critical_machine = TRUE + //If we ever start to care about all gasses, make this based on type and apply it as a for loop + var/list/gas_trans = list("PL" = PLASMA_TRANSMIT_MODIFIER, "O2" = OXYGEN_TRANSMIT_MODIFIER, "TRIT" = TRITIUM_TRANSMIT_MODIFIER, "PLX" = PLUOXIUM_TRANSMIT_MODIFIER, "BZ" = BZ_TRANSMIT_MODIFIER) var/gasefficency = 0.15 var/base_icon_state = "darkmatter" @@ -114,15 +116,15 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) var/lastwarning = 0 // Time in 1/10th of seconds since the last sent warning var/power = 0 + var/gas_change_rate = 0.05 var/n2comp = 0 // raw composition of each gas in the chamber, ranges from 0 to 1 - var/plasmacomp = 0 var/o2comp = 0 var/co2comp = 0 - var/pluoxiumcomp = 0 + var/n2ocomp = 0 var/tritiumcomp = 0 var/bzcomp = 0 - var/n2ocomp = 0 + var/pluoxiumcomp = 0 var/pluoxiumbonus = 0 @@ -354,7 +356,6 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) var/datum/gas_mixture/env = T.return_air() var/datum/gas_mixture/removed - if(produces_gas) //Remove gas from surrounding area removed = env.remove(gasefficency * env.total_moles()) @@ -400,17 +401,18 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) //This is more error prevention, according to all known laws of atmos, gas_mix.remove() should never make negative mol values. //But this is tg - //Lets get the proportions of the gasses in the mix + //Lets get the proportions of the gasses in the mix and then slowly move our comp to that value + //Can cause an overestimation of mol count, should stabalize things though. + //Prevents huge bursts of gas/heat when a large amount of something is introduced //They range between 0 and 1 - plasmacomp = max(removed.gases[/datum/gas/plasma][MOLES]/combined_gas, 0) - o2comp = max(removed.gases[/datum/gas/oxygen][MOLES]/combined_gas, 0) - co2comp = max(removed.gases[/datum/gas/carbon_dioxide][MOLES]/combined_gas, 0) - pluoxiumcomp = max(removed.gases[/datum/gas/pluoxium][MOLES]/combined_gas, 0) - tritiumcomp = max(removed.gases[/datum/gas/tritium][MOLES]/combined_gas, 0) - bzcomp = max(removed.gases[/datum/gas/bz][MOLES]/combined_gas, 0) - - n2ocomp = max(removed.gases[/datum/gas/nitrous_oxide][MOLES]/combined_gas, 0) - n2comp = max(removed.gases[/datum/gas/nitrogen][MOLES]/combined_gas, 0) + plasmacomp += CLAMP(max(removed.gases[/datum/gas/plasma][MOLES]/combined_gas, 0) - plasmacomp, -1, gas_change_rate) + o2comp += CLAMP(max(removed.gases[/datum/gas/oxygen][MOLES]/combined_gas, 0) - o2comp, -1, gas_change_rate) + co2comp += CLAMP(max(removed.gases[/datum/gas/carbon_dioxide][MOLES]/combined_gas, 0) - co2comp, -1, gas_change_rate) + pluoxiumcomp += CLAMP(max(removed.gases[/datum/gas/pluoxium][MOLES]/combined_gas, 0) - pluoxiumcomp, -1, gas_change_rate) + tritiumcomp += CLAMP(max(removed.gases[/datum/gas/tritium][MOLES]/combined_gas, 0) - tritiumcomp, -1, gas_change_rate) + bzcomp += CLAMP(max(removed.gases[/datum/gas/bz][MOLES]/combined_gas, 0) - bzcomp, -1, gas_change_rate) + n2ocomp += CLAMP(max(removed.gases[/datum/gas/nitrous_oxide][MOLES]/combined_gas, 0) - n2ocomp, -1, gas_change_rate) + n2comp += CLAMP(max(removed.gases[/datum/gas/nitrogen][MOLES]/combined_gas, 0) - n2comp, -1, gas_change_rate) //We're concerned about pluoxium being too easy to abuse at low percents, so we make sure there's a substantial amount. if(pluoxiumcomp >= 0.15) @@ -425,7 +427,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal) //Value between 6 and 1 dynamic_heat_resistance = max((n2ocomp * N2O_HEAT_RESISTANCE) + ((pluoxiumcomp * PLUOXIUM_HEAT_RESISTANCE) * pluoxiumbonus), 1) //Value between 30 and -5, used to determine radiation output as it concerns things like collecters - power_transmission_bonus = (plasmacomp * PLASMA_TRANSMIT_MODIFIER) + (o2comp * OXYGEN_TRANSMIT_MODIFIER) + (bzcomp * BZ_TRANSMIT_MODIFIER) + (tritiumcomp * TRITIUM_TRANSMIT_MODIFIER) + ((pluoxiumcomp * PLUOXIUM_TRANSMIT_MODIFIER) * pluoxiumbonus) + power_transmission_bonus = (plasmacomp * gas_trans["PL"]) + (o2comp * gas_trans["O2"]) + (bzcomp * gas_trans["BZ"]) + (tritiumcomp * gas_trans["TRIT"]) + ((pluoxiumcomp * gas_trans["PLX"]) * pluoxiumbonus) //more moles of gases are harder to heat than fewer, so let's scale heat damage around them mole_heat_penalty = max(combined_gas / MOLE_HEAT_PENALTY, 0.25) diff --git a/code/modules/ruins/spaceruin_code/hellfactory.dm b/code/modules/ruins/spaceruin_code/hellfactory.dm new file mode 100644 index 00000000000..6f992fbff52 --- /dev/null +++ b/code/modules/ruins/spaceruin_code/hellfactory.dm @@ -0,0 +1,32 @@ +/obj/machinery/door/keycard/office + name = "management airlock" + desc = "The boss man gets the best stuff. Always and forever." + puzzle_id = "factory1" + +/obj/item/keycard/office + name = "management keycard" + desc = "The Brewzone, first rate brewing and packaging. This one is labeled 'office'." + color = "#f05812" + puzzle_id = "factory1" + +/obj/machinery/door/keycard/stockroom + name = "stockroom airlock" + desc = "The boss man gets the best stuff. Always and forever." + puzzle_id = "factory2" + +/obj/item/keycard/stockroom + name = "stockroom keycard" + desc = "The Heck Brewzone, first rate brewing and packaging. This one is labeled 'stockroom'." + color = "#1272f0" + puzzle_id = "factory2" + +/obj/machinery/door/keycard/entry + name = "secure airlock" + desc = "The boss man gets the best stuff. Always and forever." + puzzle_id = "factory3" + +/obj/item/keycard/entry + name = "secure keycard" + desc = "The Heck Brewzone, first rate brewing and packaging. This one is labeled 'front door'." + color = "#12f049" + puzzle_id = "factory3" diff --git a/code/modules/spells/spell_types/godhand.dm b/code/modules/spells/spell_types/godhand.dm index 6f2513c9050..0cb92807c2b 100644 --- a/code/modules/spells/spell_types/godhand.dm +++ b/code/modules/spells/spell_types/godhand.dm @@ -33,7 +33,8 @@ . = ..() if(!proximity) return - user.say(catchphrase, forced = "spell") + if(catchphrase) + user.say(catchphrase, forced = "spell") playsound(get_turf(user), on_use_sound,50,TRUE) charges-- if(charges <= 0) diff --git a/html/changelog.html b/html/changelog.html index 2956c411f63..a4a449f13be 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -51,6 +51,54 @@ -->