diff --git a/.github/alternate_byond_versions.txt b/.github/alternate_byond_versions.txt index 9a21320ab17..7b50af46885 100644 --- a/.github/alternate_byond_versions.txt +++ b/.github/alternate_byond_versions.txt @@ -5,5 +5,3 @@ # Format is version: map # Example: # 500.1337: runtimestation - -515.1603: runtimestation diff --git a/.tgs.yml b/.tgs.yml index b012bdffe23..bb6077faaab 100644 --- a/.tgs.yml +++ b/.tgs.yml @@ -3,7 +3,7 @@ version: 1 # The BYOND version to use (kept in sync with dependencies.sh by the "TGS Test Suite" CI job) # Must be interpreted as a string, keep quoted -byond: "514.1588" +byond: "515.1620" # Folders to create in "/Configuration/GameStaticFiles/" static_files: # Config directory should be static diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm index 8fc2a2b03de..f05c972ec35 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_pizzaparty.dmm @@ -377,10 +377,10 @@ /obj/structure/rack, /obj/item/storage/box/lights/bulbs, /obj/item/storage/toolbox/mechanical/old, -/obj/item/a_gift{ +/obj/item/gift{ contains_type = /obj/item/gun/ballistic/automatic/toy/unrestricted }, -/obj/item/a_gift{ +/obj/item/gift{ contains_type = /obj/item/gun/ballistic/automatic/pistol/toy }, /obj/item/ammo_box/foambox, @@ -524,13 +524,13 @@ /obj/structure/table/wood, /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/south, -/obj/item/a_gift{ +/obj/item/gift{ contains_type = /obj/item/toy/plush/goatplushie; pixel_x = 7; pixel_y = 6 }, /obj/structure/sign/clock/directional/south, -/obj/item/a_gift{ +/obj/item/gift{ contains_type = /obj/item/toy/plush/ratplush; pixel_x = -4; pixel_y = 2 @@ -713,7 +713,7 @@ /obj/structure/table, /obj/effect/turf_decal/tile/yellow/diagonal_edge, /obj/effect/turf_decal/tile/neutral/diagonal_centre, -/obj/item/a_gift{ +/obj/item/gift{ contains_type = /obj/item/toy/figure/wizard }, /turf/open/floor/iron/diagonal/lavaland, diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index 474ef8eea83..f3ae95a673e 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -2840,6 +2840,11 @@ /obj/structure/cable, /turf/open/floor/iron, /area/ruin/space/ancientstation/charlie/hall) +"mm" = ( +/obj/machinery/power/supermatter_crystal/shard, +/obj/structure/closet/crate/radiation, +/turf/open/floor/iron/white/textured, +/area/ruin/space/ancientstation/delta/proto) "mo" = ( /turf/open/floor/iron/white/corner{ dir = 1 @@ -3795,32 +3800,6 @@ /obj/effect/mapping_helpers/apc/away_general_access, /turf/open/floor/engine/airless, /area/ruin/space/ancientstation/beta/supermatter) -"rN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/glass, -/obj/item/reagent_containers/cup/bottle{ - pixel_x = 4; - list_reagents = list(/datum/reagent/growthserum=30); - name = "Experimental solution"; - renamedByPlayer = 1; - pixel_y = 8 - }, -/obj/item/reagent_containers/cup/bottle{ - pixel_x = -4; - list_reagents = list(/datum/reagent/consumable/nutriment/peptides=30); - name = "Solution for Molly"; - renamedByPlayer = 1 - }, -/obj/item/reagent_containers/dropper{ - pixel_x = -7; - pixel_y = 10 - }, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/white/textured_edge, -/area/ruin/space/ancientstation/delta/biolab) "rP" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -5964,11 +5943,6 @@ /obj/machinery/duct, /turf/template_noop, /area/space/nearstation) -"HS" = ( -/obj/machinery/power/supermatter_crystal/shard, -/obj/structure/closet/crate/radiation, -/turf/open/floor/iron/white/textured, -/area/ruin/space/ancientstation/delta/proto) "HT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -7737,6 +7711,30 @@ /obj/effect/mapping_helpers/airalarm/away_general_access, /turf/open/floor/iron/white/textured, /area/ruin/space/ancientstation/delta/proto) +"TH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/glass, +/obj/item/reagent_containers/cup/bottle{ + pixel_x = 4; + list_reagents = list(/datum/reagent/growthserum=30); + name = "Experimental solution"; + pixel_y = 8 + }, +/obj/item/reagent_containers/cup/bottle{ + pixel_x = -4; + list_reagents = list(/datum/reagent/consumable/nutriment/peptides=30); + name = "Solution for Molly" + }, +/obj/item/reagent_containers/dropper{ + pixel_x = -7; + pixel_y = 10 + }, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 1 + }, +/turf/open/floor/iron/white/textured_edge, +/area/ruin/space/ancientstation/delta/biolab) "TI" = ( /obj/machinery/door/airlock/science, /obj/effect/decal/cleanable/dirt, @@ -14787,7 +14785,7 @@ bD Yr cD uj -HS +mm Oh uj Mx @@ -15299,7 +15297,7 @@ aa aa aa SU -rN +TH Pg zI uI diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/drones_derelict.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/drones_derelict.dmm new file mode 100644 index 00000000000..31882f000e8 --- /dev/null +++ b/_maps/RandomRuins/SpaceRuins/skyrat/drones_derelict.dmm @@ -0,0 +1,9974 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ad" = ( +/obj/structure/frame/machine, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"ae" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"ag" = ( +/obj/structure/grille/broken, +/obj/item/shard/plasma, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"aj" = ( +/obj/structure/lattice, +/obj/structure/girder/reinforced, +/turf/template_noop, +/area/ruin/space/bb13/engineering/atmos) +"al" = ( +/obj/structure/girder, +/turf/template_noop, +/area/ruin/space/bb13/engineering/s_solars_control) +"ar" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"ax" = ( +/obj/structure/door_assembly/door_assembly_med, +/obj/item/stack/cable_coil/cut, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"aE" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/research/toxins) +"aH" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"aI" = ( +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"aJ" = ( +/obj/machinery/portable_atmospherics/canister/plasma, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"aQ" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/research/toxins) +"aX" = ( +/turf/closed/wall, +/area/ruin/space/bb13/service/botany) +"aZ" = ( +/obj/machinery/mass_driver/chapelgun{ + dir = 8 + }, +/obj/structure/closet/crate/coffin, +/obj/machinery/door/window/right/directional/east, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"bb" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"bf" = ( +/turf/closed/wall, +/area/ruin/space/bb13/medical) +"bj" = ( +/obj/structure/frame/machine/secured, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"bk" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"bs" = ( +/obj/structure/closet/crate/bin, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"bw" = ( +/turf/template_noop, +/area/ruin/space/bb13/engineering/sec_eng) +"bB" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/bluespace_crystal, +/obj/item/stack/sheet/bluespace_crystal, +/obj/item/stack/sheet/bluespace_crystal, +/obj/item/language_manual/dronespeak_manual, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"bK" = ( +/obj/structure/lattice, +/obj/item/stack/cable_coil/cut, +/turf/template_noop, +/area/ruin/space/bb13/security) +"bN" = ( +/obj/machinery/door/airlock, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"bQ" = ( +/turf/template_noop, +/area/ruin/space/bb13/engineering/atmos) +"bR" = ( +/obj/structure/door_assembly/door_assembly_eng, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"cc" = ( +/obj/structure/cable, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"cd" = ( +/obj/structure/lattice, +/obj/item/tank/internals/oxygen, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"cg" = ( +/obj/structure/table_frame, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"ci" = ( +/obj/structure/frame/machine, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/kitchen) +"ck" = ( +/obj/machinery/light/small/directional/north, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"cq" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"cJ" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research/toxins) +"cM" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/template_noop, +/area/space/nearstation) +"di" = ( +/obj/item/tank/internals/plasma/full, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"ds" = ( +/obj/structure/cable, +/obj/machinery/power/smes, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"dt" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"dw" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"dy" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"dz" = ( +/obj/machinery/light/small/directional/east, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/security) +"dB" = ( +/obj/item/clothing/head/helmet/space/eva, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"dR" = ( +/obj/structure/lattice, +/obj/machinery/light/small/directional/west, +/turf/template_noop, +/area/ruin/space/bb13/research) +"dT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"dV" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/bridge) +"dY" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"dZ" = ( +/obj/structure/table_frame, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"eb" = ( +/obj/machinery/door/airlock, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"ei" = ( +/obj/item/shard, +/obj/item/shard, +/obj/structure/grille/broken, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical/genetics) +"em" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/hallway) +"en" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/medical) +"eC" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"eD" = ( +/obj/effect/spawner/random/structure/crate_abandoned, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"eI" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1 + }, +/turf/template_noop, +/area/ruin/space/bb13/engineering/atmos) +"eK" = ( +/obj/structure/table, +/obj/structure/frame/machine, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"eS" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"fa" = ( +/obj/structure/table_frame, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"fe" = ( +/obj/item/shard, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"fj" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/atmos) +"fl" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/vault) +"fr" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"fv" = ( +/obj/machinery/door/airlock/maintenance, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"fy" = ( +/obj/item/reagent_containers/cup/beaker/large, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"fE" = ( +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/ruin/space/bb13/engineering/n_solars_control) +"fH" = ( +/obj/structure/table_frame, +/obj/effect/spawner/random/engineering/tool, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"fM" = ( +/obj/structure/frame/machine/secured, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"fQ" = ( +/obj/structure/closet/crate/bin, +/obj/item/slime_extract/grey, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"fR" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"fT" = ( +/obj/structure/reagent_dispensers/watertank/high, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"fW" = ( +/obj/effect/decal/remains/human, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"fY" = ( +/obj/structure/table, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical) +"gb" = ( +/obj/item/kirbyplants/random/dead, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"ge" = ( +/obj/structure/girder/reinforced, +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/engineering/sec_eng) +"gp" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/botany) +"gB" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/bridge) +"gF" = ( +/obj/structure/lattice, +/obj/item/stack/cable_coil/five, +/turf/template_noop, +/area/ruin/space/bb13/engineering/atmos) +"gK" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/bridge) +"gM" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/vending/sovietsoda, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"gN" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"gU" = ( +/obj/item/shard/plasma, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"gX" = ( +/obj/structure/frame/machine/secured, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"ha" = ( +/obj/structure/frame/machine/secured, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"hc" = ( +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/engineering/atmos) +"hm" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"ho" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/frame/machine/secured, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"hv" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 1 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/bridge) +"hC" = ( +/obj/machinery/door/airlock/external, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"hH" = ( +/turf/template_noop, +/area/ruin/space/bb13/engineering/n_solars_control) +"hM" = ( +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/service/chapel) +"hO" = ( +/obj/structure/girder/reinforced, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"hS" = ( +/obj/structure/table, +/obj/machinery/door/window/right/directional/east, +/obj/machinery/door/window/right/directional/west, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/botany) +"hZ" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"id" = ( +/turf/template_noop, +/area/ruin/space/bb13/research) +"ie" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"ih" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"ii" = ( +/obj/structure/closet/crate, +/obj/structure/lattice, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/obj/item/solar_assembly, +/turf/template_noop, +/area/space/nearstation) +"ip" = ( +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/research/toxins) +"iq" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"is" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"it" = ( +/obj/machinery/sleeper{ + dir = 8 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"iz" = ( +/obj/structure/frame/machine, +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"iB" = ( +/obj/machinery/atmospherics/components/binary/pump{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/research/toxins) +"iD" = ( +/obj/effect/mob_spawn/ghost_role/drone/derelict/babylon, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"iF" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"iJ" = ( +/obj/item/stack/cable_coil/cut, +/turf/template_noop, +/area/ruin/space/bb13/hallway/central) +"iM" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/mapping_helpers/apc/no_charge, +/obj/effect/mapping_helpers/apc/unlocked, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"iO" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"iQ" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/machinery/light/small/directional/west, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"iR" = ( +/obj/item/storage/box/lights/mixed, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"iS" = ( +/obj/structure/table_frame, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"iT" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"iV" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"iY" = ( +/obj/structure/rack, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/machinery/light/small/directional/west, +/obj/item/stack/sheet/glass, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"iZ" = ( +/turf/closed/wall, +/area/ruin/space/bb13/research) +"jd" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"jg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/engineering/atmos) +"jj" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"jm" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/bridge) +"jo" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/uranium{ + amount = 15 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 15 + }, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"jp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"jv" = ( +/obj/structure/cable, +/obj/machinery/power/terminal, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"jz" = ( +/obj/structure/table_frame, +/obj/effect/spawner/random/engineering/toolbox, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"jA" = ( +/obj/machinery/power/solar{ + id = "derelictsolar"; + name = "Derelict Solar Array" + }, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"jG" = ( +/obj/structure/chair{ + pixel_y = -2 + }, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/bridge) +"jN" = ( +/obj/structure/frame/computer, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"jT" = ( +/obj/structure/table_frame, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/kitchen) +"jU" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"jX" = ( +/obj/machinery/door/morgue, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"kc" = ( +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"kh" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"kl" = ( +/obj/structure/table, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"km" = ( +/obj/structure/table_frame, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"ku" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"kB" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"kF" = ( +/obj/machinery/door/airlock/service, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"kG" = ( +/obj/item/shard, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"kL" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/engineering/vault) +"kM" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/security) +"kQ" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 1 + }, +/obj/item/circuitboard/computer/rdconsole, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"kU" = ( +/obj/machinery/power/emitter, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"lk" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical) +"lo" = ( +/obj/structure/reagent_dispensers/watertank/high, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"lp" = ( +/obj/item/kirbyplants/random/dead, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"lx" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"lz" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/bridge) +"lD" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/bridge) +"lE" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research) +"lG" = ( +/obj/structure/lattice, +/obj/item/solar_assembly, +/turf/template_noop, +/area/space/nearstation) +"lH" = ( +/obj/structure/door_assembly/door_assembly_research, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"lY" = ( +/obj/structure/table_frame, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"lZ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"md" = ( +/obj/machinery/door/airlock/engineering, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"mf" = ( +/obj/structure/girder/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/atmos) +"mg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/stack/cable_coil/cut, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"mh" = ( +/obj/structure/table, +/obj/item/tank/internals/oxygen/empty, +/obj/item/tank/internals/oxygen/empty, +/obj/item/computer_disk/engineering, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"mj" = ( +/obj/item/kirbyplants/random/dead, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"mF" = ( +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"mG" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"mT" = ( +/turf/template_noop, +/area/ruin/space/bb13/medical) +"nb" = ( +/obj/structure/frame/machine/secured, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"nc" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research/toxins) +"ni" = ( +/obj/machinery/door/airlock/external/glass, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"no" = ( +/obj/structure/bed, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"nq" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/atmos) +"nr" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"ns" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/kitchen) +"nt" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 4 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"nw" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/mapping_helpers/apc/no_charge, +/obj/effect/mapping_helpers/apc/unlocked, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"nE" = ( +/obj/structure/door_assembly/door_assembly_med, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"nF" = ( +/obj/structure/table, +/obj/structure/frame/machine, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"nH" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"nK" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"nN" = ( +/obj/item/shard, +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"nY" = ( +/obj/machinery/portable_atmospherics/canister/air, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"of" = ( +/turf/closed/wall, +/area/ruin/space/bb13/hallway) +"oi" = ( +/obj/structure/lattice, +/obj/item/stack/cable_coil/cut, +/turf/template_noop, +/area/ruin/space/bb13/hallway/central) +"oq" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"ou" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/engineering/sec_eng) +"ox" = ( +/obj/item/kirbyplants/random/dead, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"oF" = ( +/obj/structure/girder/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/vault) +"oI" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/bridge) +"oJ" = ( +/obj/structure/table, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"oM" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"oO" = ( +/obj/structure/frame/machine, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"oQ" = ( +/obj/machinery/door/poddoor/shutters{ + id = "derelict_armor" + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"oR" = ( +/obj/structure/reagent_dispensers/fueltank/large, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"oZ" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"pb" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"pe" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"pj" = ( +/obj/structure/filingcabinet, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"pr" = ( +/turf/closed/wall, +/area/ruin/space/bb13/service/kitchen) +"ps" = ( +/obj/structure/closet/crate/coffin, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"px" = ( +/obj/item/tank/internals/plasma/full, +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"pE" = ( +/obj/structure/table_frame, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"pI" = ( +/obj/structure/lattice, +/obj/structure/girder/reinforced, +/turf/template_noop, +/area/ruin/space/bb13/engineering/sec_eng) +"pK" = ( +/obj/structure/closet/l3closet, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"pL" = ( +/obj/structure/lattice, +/obj/structure/chair, +/obj/machinery/light/small/directional/north, +/turf/template_noop, +/area/ruin/space/bb13/security) +"pM" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/medical/genetics) +"pO" = ( +/obj/structure/rack, +/obj/item/circuitboard/machine/circuit_imprinter/offstation{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/ai_module/core/full/drone, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"pS" = ( +/obj/structure/closet/crate/secure, +/obj/effect/spawner/random/maintenance/four, +/obj/item/bikehorn, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"pU" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ + dir = 1 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"pW" = ( +/obj/structure/door_assembly/door_assembly_sec, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"qa" = ( +/obj/machinery/button/door/directional/east{ + id = "derelict_armor" + }, +/obj/machinery/door/poddoor/shutters{ + id = "derelict_armor" + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"qc" = ( +/obj/machinery/pipedispenser, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"qi" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 8 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"qx" = ( +/obj/machinery/atmospherics/components/unary/vent_pump{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/engineering/atmos) +"qy" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"qA" = ( +/obj/structure/plaque/static_plaque/golden/commission/ks13, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"qB" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/template_noop, +/area/space/nearstation) +"qC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"qE" = ( +/obj/structure/lattice, +/obj/effect/spawner/random/structure/grille, +/turf/template_noop, +/area/space/nearstation) +"qG" = ( +/obj/machinery/sleeper{ + dir = 4 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"qN" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/research/toxins) +"qO" = ( +/obj/structure/closet/crate/bin, +/obj/machinery/light/small/directional/north, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"qS" = ( +/obj/structure/closet/crate/coffin, +/obj/structure/window/reinforced/spawner/directional/north, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"qT" = ( +/obj/effect/mob_spawn/ghost_role/drone/derelict/babylon, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"qV" = ( +/turf/template_noop, +/area/ruin/space/bb13/medical/genetics) +"ra" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/obj/item/shard, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"re" = ( +/obj/machinery/door/airlock/medical, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical/genetics) +"ri" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"rk" = ( +/obj/structure/lattice, +/obj/structure/closet/crate/bin, +/turf/template_noop, +/area/ruin/space/bb13/service) +"rq" = ( +/obj/item/bodypart/chest/monkey, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical/genetics) +"ru" = ( +/obj/machinery/door/window/right/directional/south, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"ry" = ( +/obj/machinery/power/emitter{ + dir = 4 + }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"rA" = ( +/turf/closed/wall, +/area/ruin/space/bb13/engineering/n_solars_control) +"rD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"rE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/engineering/atmos) +"rF" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"rL" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"rP" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"rQ" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"rS" = ( +/obj/machinery/door/airlock/engineering, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"rW" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"sd" = ( +/obj/structure/chair, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"sf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/mapping_helpers/apc/no_charge, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"sg" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/item/bodypart/chest/monkey, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"sj" = ( +/obj/structure/table, +/obj/item/stock_parts/servo, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"ss" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical/genetics) +"su" = ( +/obj/structure/lattice, +/obj/structure/closet/crate/bin, +/obj/effect/spawner/random/maintenance, +/turf/template_noop, +/area/ruin/space/bb13/hallway/central) +"sv" = ( +/obj/structure/table, +/obj/structure/frame/machine, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"sx" = ( +/obj/machinery/power/terminal, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"sD" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"sE" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/service/chapel) +"sF" = ( +/obj/structure/table_frame, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"sG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"sI" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/atmos) +"sX" = ( +/obj/machinery/power/solar_control{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"tj" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 8 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"tw" = ( +/obj/machinery/portable_atmospherics/pump, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"tD" = ( +/obj/structure/lattice, +/obj/structure/girder, +/turf/template_noop, +/area/ruin/space/bb13/medical) +"tI" = ( +/obj/structure/table, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"tN" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical/genetics) +"tW" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"tX" = ( +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"ug" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/atmos) +"ui" = ( +/obj/machinery/power/solar{ + id = "derelictsolar"; + name = "Derelict Solar Array" + }, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"uj" = ( +/turf/closed/wall, +/area/ruin/space/bb13/service/chapel) +"uo" = ( +/obj/machinery/door/airlock/external, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/atmos) +"uq" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/machinery/light/small/directional/east, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"us" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/titanium{ + amount = 15 + }, +/obj/item/stack/sheet/mineral/wood/fifty, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"ux" = ( +/obj/structure/door_assembly/door_assembly_ext, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"uz" = ( +/obj/machinery/gravity_generator/main, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"uB" = ( +/obj/structure/lattice, +/obj/machinery/light/small/directional/north, +/turf/template_noop, +/area/ruin/space/bb13/security) +"uC" = ( +/obj/item/tank/internals/oxygen/empty, +/turf/template_noop, +/area/ruin/space/bb13/engineering/atmos) +"uI" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"uR" = ( +/obj/structure/rack, +/obj/item/circuitboard/machine/chem_dispenser/drinks{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/circuitboard/machine/chem_dispenser/drinks/beer, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"uU" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"vd" = ( +/turf/closed/wall, +/area/ruin/space/bb13/service) +"ve" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/service/kitchen) +"vg" = ( +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"vj" = ( +/obj/effect/mob_spawn/ghost_role/drone/derelict/babylon, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"vl" = ( +/obj/structure/cable, +/obj/item/storage/box/lights/mixed, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"vo" = ( +/obj/machinery/power/solar{ + id = "derelictsolar"; + name = "Derelict Solar Array" + }, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"vq" = ( +/obj/structure/frame/machine/secured, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"vs" = ( +/obj/structure/girder, +/turf/template_noop, +/area/template_noop) +"vz" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/kitchen) +"vA" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"vB" = ( +/obj/machinery/door/morgue, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"vC" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/medical) +"vG" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical) +"vS" = ( +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/security) +"wa" = ( +/obj/structure/chair{ + pixel_y = -2 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/service/chapel) +"wf" = ( +/obj/structure/lattice, +/obj/item/stack/cable_coil/five, +/turf/template_noop, +/area/ruin/space/bb13/engineering/n_solars_control) +"wh" = ( +/obj/machinery/door/window/right/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"wi" = ( +/obj/structure/lattice, +/obj/structure/grille/broken, +/obj/item/shard, +/turf/template_noop, +/area/ruin/space/bb13/service/botany) +"wk" = ( +/obj/item/shard, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"wq" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"ws" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"wv" = ( +/obj/structure/table, +/obj/item/stock_parts/servo, +/obj/item/stock_parts/servo, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"wB" = ( +/obj/machinery/light/small/directional/north, +/obj/item/stack/cable_coil/cut, +/turf/template_noop, +/area/ruin/space/bb13/hallway/central) +"wK" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/bridge) +"wT" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"wV" = ( +/obj/machinery/door/airlock/engineering, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"wW" = ( +/obj/structure/door_assembly/door_assembly_com, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"xm" = ( +/obj/structure/girder/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"xo" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical/genetics) +"xp" = ( +/obj/structure/rack, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/item/stock_parts/cell/high, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"xu" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"xw" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"xy" = ( +/obj/structure/frame/machine/secured, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"xA" = ( +/obj/structure/lattice, +/obj/structure/girder/reinforced, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"xE" = ( +/obj/structure/door_assembly, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"xI" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/obj/effect/mob_spawn/ghost_role/drone/derelict/babylon, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"xL" = ( +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/vault) +"xN" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"xQ" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research) +"xT" = ( +/obj/structure/bed{ + dir = 4 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"yg" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"yh" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/atmos) +"yv" = ( +/obj/machinery/vending/hydroseeds, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"yw" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"yy" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"yz" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research) +"yA" = ( +/obj/machinery/door/airlock/research/glass, +/obj/machinery/button/door/directional/north{ + id = "derelict_toxin" + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/research/toxins) +"yE" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"yR" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research/toxins) +"yV" = ( +/obj/structure/door_assembly/door_assembly_ext, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"yZ" = ( +/turf/template_noop, +/area/template_noop) +"za" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/engineering/n_solars_control) +"zf" = ( +/obj/structure/table_frame, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research) +"zg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/kitchen) +"zj" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/mineral/gold{ + amount = 15 + }, +/obj/item/stack/sheet/mineral/silver{ + amount = 15 + }, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"zp" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 1 + }, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/bridge) +"zr" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research) +"zF" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"zG" = ( +/obj/structure/grille/broken, +/obj/item/shard/plasma, +/obj/item/shard/plasma, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"zU" = ( +/obj/structure/table, +/obj/item/shard, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"zZ" = ( +/turf/open/floor/plating/airless, +/area/space/nearstation) +"Ah" = ( +/obj/structure/cable, +/obj/structure/door_assembly/door_assembly_research, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"Ak" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research) +"Al" = ( +/obj/machinery/door/morgue, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"Am" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"An" = ( +/obj/structure/mop_bucket, +/obj/item/mop, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"Aw" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"AA" = ( +/obj/machinery/door/airlock/research/glass, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"AE" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"AI" = ( +/obj/item/stack/cable_coil/five, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"AK" = ( +/obj/structure/cable, +/obj/machinery/power/solar_control, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"AL" = ( +/obj/structure/chair{ + pixel_y = -2 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/bridge) +"AM" = ( +/obj/machinery/door/poddoor/massdriver_chapel, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"AN" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/obj/item/stack/sheet/iron/fifty, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"AO" = ( +/obj/machinery/vending/hydronutrients, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"AT" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"AZ" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/bridge) +"Ba" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"Bc" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/structure/window/reinforced/spawner/directional/west, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/bridge) +"Bd" = ( +/obj/item/kirbyplants/random/dead, +/turf/template_noop, +/area/ruin/space/bb13/hallway/central) +"Bk" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Bn" = ( +/obj/structure/bed, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"Bp" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/service/chapel) +"Bx" = ( +/obj/structure/rack, +/obj/item/circuitboard/machine/autolathe{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/circuitboard/machine/protolathe/offstation, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"By" = ( +/obj/structure/rack, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"BB" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/vault) +"BP" = ( +/obj/machinery/power/energy_accumulator/grounding_rod/anchored, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"BQ" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"BU" = ( +/obj/structure/rack, +/obj/item/circuitboard/machine/smes{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/circuitboard/machine/smes, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"BV" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"BW" = ( +/obj/item/tank/internals/oxygen/empty, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/atmos) +"Co" = ( +/obj/machinery/door/airlock/vault, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"Cw" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Cx" = ( +/obj/structure/girder/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"CF" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"CK" = ( +/obj/structure/table_frame, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"CL" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"CM" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/components/unary/outlet_injector{ + dir = 1 + }, +/turf/template_noop, +/area/ruin/space/bb13/engineering/atmos) +"CP" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/atmos) +"Dc" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/bridge) +"Dh" = ( +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"Dl" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"Ds" = ( +/obj/machinery/button/door/directional/east{ + id = "derelict_nuke" + }, +/obj/machinery/door/poddoor/shutters{ + id = "derelict_nuke" + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"Du" = ( +/obj/structure/bed{ + dir = 4 + }, +/obj/item/stack/sheet/glass, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"DH" = ( +/obj/structure/bed, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"DN" = ( +/obj/structure/grille/broken, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/botany) +"DT" = ( +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"DU" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 + }, +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/research/toxins) +"DV" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"Ea" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"Ec" = ( +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Ee" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"Eo" = ( +/obj/machinery/atmospherics/pipe/smart/simple/dark/visible{ + dir = 4 + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"EM" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"EN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"EO" = ( +/obj/structure/table_frame, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"ES" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4 + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/research/toxins) +"EY" = ( +/obj/structure/door_assembly/door_assembly_ext, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"Fe" = ( +/obj/structure/cable, +/obj/machinery/power/smes, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Ff" = ( +/obj/structure/chair/stool/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"Fs" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"Fx" = ( +/obj/structure/table_frame, +/obj/effect/spawner/random/engineering/tool, +/obj/effect/spawner/random/engineering/tool, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"Fy" = ( +/obj/structure/table, +/obj/item/stock_parts/matter_bin, +/obj/item/reagent_containers/cup/beaker/large, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"FJ" = ( +/obj/machinery/door/airlock/engineering, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"FM" = ( +/obj/structure/cable, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"FP" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/table_frame, +/obj/item/shard, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"FR" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"FU" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"FX" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"FY" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/components/unary/vent_pump, +/turf/template_noop, +/area/ruin/space/bb13/engineering/atmos) +"Gm" = ( +/obj/item/kirbyplants/random/dead, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/bridge) +"Go" = ( +/obj/structure/lattice/catwalk, +/turf/template_noop, +/area/ruin/space/bb13/engineering/s_solars_control) +"Gr" = ( +/obj/machinery/door/airlock/research/glass, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/research/toxins) +"Gs" = ( +/obj/structure/chair{ + pixel_y = -2 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"Gt" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Gv" = ( +/obj/structure/door_assembly/door_assembly_research, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research/toxins) +"Gw" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/bridge) +"Gz" = ( +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"GC" = ( +/obj/structure/frame/computer, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"GI" = ( +/obj/structure/girder, +/turf/template_noop, +/area/ruin/space/bb13/engineering/n_solars_control) +"GJ" = ( +/obj/effect/decal/remains/human, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/research/toxins) +"GK" = ( +/obj/machinery/light/small/directional/east, +/obj/structure/cable, +/obj/machinery/power/smes, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"GR" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"GT" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"GX" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"GY" = ( +/obj/structure/closet/crate/bin, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research) +"Ha" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"Hc" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/service/botany) +"He" = ( +/obj/item/stack/cable_coil/cut, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Hf" = ( +/obj/structure/closet/crate/bin, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"Hl" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Hv" = ( +/obj/structure/closet/crate/bin, +/obj/item/stack/sheet/glass, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"HR" = ( +/turf/closed/wall, +/area/ruin/space/bb13/medical/genetics) +"HT" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"HU" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"HV" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research) +"HZ" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"Ia" = ( +/obj/machinery/door/poddoor/preopen{ + id = "derelict_toxin" + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/research/toxins) +"Ig" = ( +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"Ih" = ( +/obj/structure/table_frame, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"Iq" = ( +/obj/structure/cable, +/obj/machinery/power/tracker, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"Is" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"IE" = ( +/obj/structure/holosign/barrier/atmos, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"IF" = ( +/obj/structure/frame/machine, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/security) +"II" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/atmos) +"IM" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"IP" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/structure/chair{ + pixel_y = -2 + }, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"IY" = ( +/obj/machinery/door/airlock/maintenance, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"Ja" = ( +/obj/structure/lattice, +/obj/structure/table_frame, +/turf/template_noop, +/area/ruin/space/bb13/medical) +"Jd" = ( +/obj/structure/window/reinforced/spawner/directional/south, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"Je" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 1 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"Ji" = ( +/obj/structure/door_assembly/door_assembly_eng, +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Jj" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance/four, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"Jk" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research/toxins) +"Jm" = ( +/obj/structure/table_frame, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/bridge) +"Ju" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Jw" = ( +/obj/structure/lattice, +/obj/item/stack/cable_coil/cut, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"JI" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"JJ" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"JN" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"JR" = ( +/obj/machinery/door/airlock/security, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"JT" = ( +/obj/structure/closet/crate/secure/engineering, +/obj/machinery/power/supermatter_crystal/shard{ + warning_channel = null + }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"JU" = ( +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/research/toxins) +"Kd" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"Kk" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"Kl" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"Ko" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"Ks" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/engineering/atmos) +"Ku" = ( +/obj/structure/holosign/barrier, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"Kx" = ( +/obj/structure/door_assembly/door_assembly_eng, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"KH" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"KV" = ( +/turf/closed/wall, +/area/ruin/space/bb13/hallway/central) +"KZ" = ( +/obj/machinery/portable_atmospherics/pump, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Lc" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"Lf" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/plastic/fifty, +/obj/item/stack/sheet/plastic/fifty, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"Lk" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Lr" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/research) +"Lx" = ( +/obj/structure/frame/machine, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/kitchen) +"Ly" = ( +/obj/machinery/drone_dispenser/derelict, +/obj/machinery/light/small/directional/north, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"LC" = ( +/obj/structure/table, +/obj/item/tank/internals/plasma/full, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"LQ" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"LR" = ( +/obj/structure/lattice, +/obj/structure/closet/crate/bin, +/turf/template_noop, +/area/ruin/space/bb13/bridge) +"LZ" = ( +/turf/closed/wall, +/area/ruin/space/bb13/research/toxins) +"Ma" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Mc" = ( +/obj/structure/grille/broken, +/obj/item/shard/plasma, +/obj/item/shard/plasma, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/atmos) +"Mh" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"Mj" = ( +/obj/machinery/atmospherics/pipe/smart/simple/scrubbers/visible{ + dir = 4 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"Mk" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"Ml" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/atmos) +"Mm" = ( +/obj/structure/closet/crate/solarpanel_small, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Mn" = ( +/obj/machinery/door/airlock, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"Ms" = ( +/obj/machinery/door/airlock/vault/derelict, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/vault) +"Mz" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/research/toxins) +"ME" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research/toxins) +"MO" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"MQ" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"MR" = ( +/obj/structure/lattice, +/obj/structure/chair{ + dir = 8 + }, +/turf/template_noop, +/area/ruin/space/bb13/security) +"MU" = ( +/obj/structure/frame/machine, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"MW" = ( +/obj/structure/table, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"MY" = ( +/obj/machinery/field/generator, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"Nd" = ( +/obj/structure/table_frame, +/obj/structure/frame/machine, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"Nh" = ( +/obj/structure/table, +/obj/item/reagent_containers/cup/beaker/large, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"Nk" = ( +/obj/machinery/door/airlock/medical, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"Nm" = ( +/obj/machinery/door/window/right/directional/south, +/obj/structure/table, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"NA" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"NB" = ( +/obj/machinery/light/small/directional/east, +/obj/item/stack/cable_coil/cut, +/turf/template_noop, +/area/ruin/space/bb13/hallway/central) +"NK" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/medical/genetics) +"NL" = ( +/obj/structure/rack, +/obj/item/circuitboard/machine/microwave{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/circuitboard/machine/microwave, +/obj/item/circuitboard/machine/deep_fryer{ + pixel_x = -6; + pixel_y = -6 + }, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"NM" = ( +/obj/structure/holosign/barrier, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"NO" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"NT" = ( +/obj/structure/girder/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/bridge) +"NY" = ( +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"NZ" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Oc" = ( +/obj/structure/table_frame, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"Oj" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"Op" = ( +/obj/machinery/power/port_gen/pacman, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Or" = ( +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"Ot" = ( +/obj/structure/table, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"Ov" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"Oz" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"OF" = ( +/obj/structure/frame/computer, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"OO" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"OT" = ( +/obj/structure/closet/crate, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/obj/item/stack/sheet/glass/fifty, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"Pb" = ( +/obj/structure/table, +/obj/effect/spawner/random/entertainment/deck, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"Pc" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"Pg" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"Pi" = ( +/obj/structure/grille/broken, +/obj/item/shard/plasma, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"Pj" = ( +/obj/structure/frame/computer{ + anchored = 1; + dir = 4 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"Pl" = ( +/obj/structure/closet/crate/bin, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Pz" = ( +/obj/structure/frame/machine/secured, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"PA" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"PP" = ( +/obj/structure/door_assembly, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"PQ" = ( +/obj/structure/grille/broken, +/obj/item/shard/plasma, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/atmos) +"PV" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"PX" = ( +/obj/structure/table, +/obj/item/stack/sheet/iron/five, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"PZ" = ( +/obj/structure/rack, +/obj/item/circuitboard/machine/space_heater{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/circuitboard/machine/space_heater, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Qb" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"Qg" = ( +/obj/structure/lattice, +/obj/item/stack/cable_coil/cut, +/turf/template_noop, +/area/ruin/space/bb13/research) +"Qu" = ( +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/medical) +"Qx" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/hallway/central) +"QA" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"QE" = ( +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"QG" = ( +/obj/structure/lattice, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"QR" = ( +/obj/structure/chair/stool/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"QS" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/atmos) +"Rg" = ( +/obj/structure/closet/crate/bin, +/obj/item/shovel/spade, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"Rk" = ( +/obj/structure/girder, +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"Rl" = ( +/obj/structure/frame/computer{ + dir = 4 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/bridge) +"Ro" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ + dir = 1 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"Rr" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"Rs" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/engineering/engine) +"Ru" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/service) +"RB" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/bridge) +"RF" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/structure/crate_abandoned, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"RG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"RI" = ( +/obj/structure/table, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"RM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"RU" = ( +/obj/machinery/field/generator, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"Sm" = ( +/obj/structure/rack, +/obj/item/circuitboard/computer/solar_control{ + pixel_x = -6; + pixel_y = 6 + }, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Sq" = ( +/obj/structure/chair/stool/directional/east, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"St" = ( +/obj/structure/door_assembly/door_assembly_eng, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Sx" = ( +/obj/machinery/light/small/directional/south, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"SD" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/engineering/atmos) +"SE" = ( +/turf/closed/wall, +/area/ruin/space/bb13/engineering/s_solars_control) +"SH" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical) +"SI" = ( +/obj/structure/table, +/obj/item/stock_parts/scanning_module, +/obj/item/stock_parts/scanning_module, +/obj/item/stock_parts/capacitor, +/obj/item/stock_parts/capacitor, +/obj/item/stack/sheet/iron/five, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research/toxins) +"SP" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"SQ" = ( +/obj/machinery/power/smes, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"ST" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/security) +"Tl" = ( +/obj/structure/rack, +/obj/item/circuitboard/machine/turbine_compressor{ + pixel_y = 6; + pixel_x = 6 + }, +/obj/item/circuitboard/machine/turbine_rotor, +/obj/item/circuitboard/machine/turbine_stator{ + pixel_x = -6; + pixel_y = -6 + }, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Tp" = ( +/obj/structure/table/wood, +/obj/machinery/light/small/directional/north, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"Ts" = ( +/obj/machinery/door/airlock/service, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"Tt" = ( +/obj/structure/chair/stool/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"Tv" = ( +/turf/template_noop, +/area/ruin/space/bb13/bridge) +"Tw" = ( +/obj/item/shard, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/botany) +"Tz" = ( +/obj/structure/bodycontainer/morgue{ + dir = 8 + }, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/medical) +"TF" = ( +/obj/structure/holosign/barrier, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"TG" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical) +"TI" = ( +/obj/structure/table/wood, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/service/chapel) +"TL" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"TN" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/bridge) +"TR" = ( +/obj/effect/spawner/structure/window/reinforced/tinted, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"TV" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/botany) +"TW" = ( +/obj/structure/rack, +/obj/item/circuitboard/computer/operating{ + pixel_y = 6 + }, +/obj/item/circuitboard/machine/cryo_tube, +/obj/item/circuitboard/computer/crew, +/obj/machinery/light/small/directional/east, +/obj/item/circuitboard/machine/bluespace_miner, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Ub" = ( +/obj/structure/closet/crate/bin, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"Uc" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/vault) +"Uh" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"Ui" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/security) +"Ur" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"Uu" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/atmos) +"Uv" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/engineering/s_solars_control) +"UB" = ( +/obj/structure/bodycontainer/morgue, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/medical) +"UD" = ( +/obj/item/tank/internals/oxygen, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/atmos) +"UF" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/medical) +"UJ" = ( +/obj/structure/closet/crate/bin, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"UQ" = ( +/obj/structure/table, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/engine) +"US" = ( +/obj/effect/spawner/random/structure/grille, +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"UW" = ( +/obj/structure/cable, +/obj/item/paper/fluff/ruins/thederelict/vaultraider, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"UX" = ( +/obj/structure/girder, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"UY" = ( +/obj/structure/table, +/obj/item/food/monkeycube, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/obj/effect/mapping_helpers/apc/no_charge, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical/genetics) +"Vb" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector{ + dir = 1 + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/engineering/atmos) +"Ve" = ( +/turf/template_noop, +/area/ruin/space/bb13/security) +"Vs" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"Vw" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research/toxins) +"VN" = ( +/turf/closed/indestructible/riveted{ + color = "#FF8888" + }, +/area/ruin/space/bb13/engineering/vault) +"VQ" = ( +/obj/structure/table, +/obj/item/stock_parts/matter_bin, +/obj/item/pai_card, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"VR" = ( +/turf/template_noop, +/area/ruin/space/bb13/hallway/central) +"VT" = ( +/obj/structure/lattice, +/obj/item/stack/cable_coil/five, +/turf/template_noop, +/area/space/nearstation) +"VU" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/bridge) +"Wa" = ( +/obj/structure/lattice, +/obj/item/shard/plasma, +/turf/template_noop, +/area/ruin/space/bb13/engineering/atmos) +"Wd" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/bridge) +"Wg" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"Wh" = ( +/obj/structure/table, +/obj/item/stock_parts/matter_bin, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"Wi" = ( +/obj/machinery/light/small/directional/east, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"Wj" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/botany) +"Wl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/effect/mapping_helpers/apc/no_charge, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"Wn" = ( +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical) +"Wo" = ( +/obj/structure/table_frame, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical) +"Ws" = ( +/obj/structure/window/reinforced/spawner/directional/east, +/obj/structure/table_frame, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"WA" = ( +/obj/structure/holosign/barrier, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway/central) +"WC" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/airless, +/area/ruin/space/bb13/service/chapel) +"WE" = ( +/obj/machinery/power/solar{ + id = "derelictsolar"; + name = "Derelict Solar Array" + }, +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/engineering/n_solars_control) +"WF" = ( +/obj/machinery/computer/vaultcontroller, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/sec_eng) +"WH" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"WI" = ( +/obj/structure/frame/machine, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"WN" = ( +/obj/machinery/door/airlock/security, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"WQ" = ( +/obj/machinery/light/small/directional/north, +/turf/template_noop, +/area/ruin/space/bb13/engineering/engine) +"WS" = ( +/turf/template_noop, +/area/ruin/space/bb13/service/kitchen) +"WT" = ( +/obj/structure/table, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/kitchen) +"WY" = ( +/obj/structure/table, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical) +"WZ" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"Xd" = ( +/obj/structure/lattice, +/obj/structure/grille/broken, +/obj/item/shard, +/obj/item/shard, +/turf/template_noop, +/area/ruin/space/bb13/service/chapel) +"Xh" = ( +/obj/structure/window/reinforced/spawner/directional/north, +/obj/structure/frame/machine/secured, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"Xn" = ( +/obj/structure/closet/crate/coffin, +/obj/machinery/door/window/right/directional/north, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service/chapel) +"Xu" = ( +/obj/structure/table_frame, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Xw" = ( +/obj/structure/chair/stool/directional/west, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service) +"Xz" = ( +/obj/structure/frame/machine, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/medical) +"XG" = ( +/obj/machinery/light/small/directional/west, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/atmos) +"XL" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/bridge) +"XR" = ( +/turf/closed/wall/r_wall, +/area/ruin/space/bb13/engineering/n_solars_control) +"XS" = ( +/obj/machinery/power/tracker, +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/s_solars_control) +"Yi" = ( +/obj/structure/table_frame, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"Ym" = ( +/obj/structure/closet/crate, +/obj/item/clothing/head/rasta, +/obj/item/clothing/head/waldo, +/obj/item/clothing/head/costume/bearpelt, +/obj/item/clothing/head/utility/bomb_hood, +/obj/item/clothing/head/costume/bunnyhead, +/obj/item/clothing/head/costume/cardborg, +/obj/item/clothing/head/cone, +/obj/item/clothing/head/costume/festive, +/obj/item/clothing/head/helmet/toggleable/riot, +/obj/item/clothing/head/helmet/sec, +/obj/item/clothing/head/costume/jester, +/obj/item/clothing/head/chaplain/nun_hood, +/obj/item/clothing/head/costume/papersack, +/obj/item/clothing/head/costume/rabbitears, +/obj/item/clothing/head/costume/snowman, +/obj/item/clothing/head/costume/sombrero/green, +/obj/item/clothing/head/wig, +/obj/item/clothing/head/wizard/fake, +/obj/item/clothing/head/wizard/santa, +/obj/item/clothing/head/costume/xenos, +/turf/open/floor/circuit/red/airless, +/area/ruin/space/bb13/engineering/vault) +"Yq" = ( +/obj/structure/frame/machine/secured, +/obj/structure/cable, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/engineering/engine) +"Yv" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/engineering/sec_eng) +"YF" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"YN" = ( +/obj/structure/table, +/obj/item/stack/sheet/iron/five, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/bridge) +"YO" = ( +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/obj/item/stack/sheet/glass, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/hallway/central) +"YZ" = ( +/obj/item/tank/internals/plasma/empty, +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"Za" = ( +/obj/item/clothing/suit/space/eva, +/obj/item/storage/toolbox/syndicate, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/engineering/n_solars_control) +"Zd" = ( +/obj/structure/girder/reinforced, +/obj/structure/lattice, +/turf/template_noop, +/area/space/nearstation) +"Ze" = ( +/obj/machinery/iv_drip, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/medical) +"Zh" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance/four, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/research) +"Zk" = ( +/obj/structure/cable, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/hallway) +"Zo" = ( +/obj/machinery/vending/dinnerware, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/service/kitchen) +"Zv" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/service) +"Zw" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector{ + dir = 8 + }, +/turf/open/floor/engine/airless, +/area/ruin/space/bb13/engineering/atmos) +"Zy" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating/airless, +/area/ruin/space/bb13/research/toxins) +"Zz" = ( +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/bridge) +"ZB" = ( +/obj/structure/lattice, +/obj/structure/table_frame, +/turf/template_noop, +/area/ruin/space/bb13/service/kitchen) +"ZC" = ( +/obj/structure/rack, +/obj/effect/spawner/random/maintenance, +/obj/item/stack/sheet/iron/five, +/turf/open/floor/iron/airless, +/area/ruin/space/bb13/security) +"ZN" = ( +/obj/structure/table, +/obj/effect/spawner/random/maintenance, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/bridge) +"ZW" = ( +/obj/structure/lattice, +/turf/template_noop, +/area/ruin/space/bb13/engineering/atmos) +"ZY" = ( +/obj/structure/table/wood, +/obj/item/book/bible, +/turf/open/floor/wood/airless, +/area/ruin/space/bb13/service/chapel) + +(1,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(2,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +US +US +US +US +US +US +US +US +US +US +US +US +US +US +US +yZ +yZ +yZ +yZ +yZ +yZ +"} +(3,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +US +VT +yZ +yZ +yZ +yZ +yZ +yZ +yZ +lG +yZ +yZ +yZ +yZ +US +yZ +yZ +yZ +yZ +yZ +yZ +"} +(4,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +US +yZ +ri +Go +xu +yZ +vo +Go +xu +HZ +AI +Go +xu +yZ +US +yZ +yZ +yZ +yZ +yZ +yZ +"} +(5,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +US +yZ +vo +Go +ri +yZ +vo +Go +xu +yZ +vo +Go +ri +yZ +US +yZ +yZ +yZ +yZ +yZ +yZ +"} +(6,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +US +yZ +vo +Go +vo +yZ +vo +Go +vo +yZ +vo +Go +vo +yZ +US +yZ +yZ +yZ +yZ +yZ +yZ +"} +(7,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +US +yZ +vo +Go +vo +yZ +vo +Go +vo +yZ +ri +Go +vo +yZ +US +yZ +yZ +yZ +yZ +yZ +yZ +"} +(8,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +yZ +SE +SE +nK +nK +SE +yZ +HZ +yZ +xu +Go +vo +yZ +xu +Go +vo +yZ +ri +Go +vo +yZ +US +US +yZ +yZ +yZ +yZ +yZ +"} +(9,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +nK +SQ +bk +sX +iF +oM +iF +yZ +yZ +Go +yZ +yZ +yZ +Go +yZ +yZ +yZ +Go +yZ +yZ +yZ +US +yZ +yZ +yZ +yZ +yZ +"} +(10,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +yZ +Uv +xu +iD +xu +xu +xu +xu +Go +Go +Go +Go +Go +Go +Go +Go +Go +Go +Go +Go +XS +yZ +US +yZ +yZ +yZ +yZ +yZ +"} +(11,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +Uv +nw +vl +ri +iF +oM +oM +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +US +yZ +yZ +yZ +yZ +yZ +"} +(12,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +al +SE +Kx +SE +SE +yZ +yZ +yZ +yZ +yZ +VT +HZ +US +US +US +US +US +US +US +US +US +US +yZ +yZ +yZ +yZ +yZ +"} +(13,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +zZ +yZ +yZ +yZ +KV +NA +Bd +vd +Ru +Ru +vd +rL +vd +vd +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(14,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +zZ +yZ +yZ +ii +wq +NA +Qx +sD +xT +fH +vd +jz +xT +sD +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(15,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +uj +lx +uj +AM +KH +Xd +KH +uj +Aw +VR +vd +ku +mG +rL +mG +mG +sD +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(16,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +uj +Tp +kG +fR +Mk +sE +Kl +KH +iq +iq +vd +sD +Mn +vd +xE +vd +vd +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(17,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +uj +uj +uj +IP +aZ +Mk +Kl +sE +KH +iq +iq +Ru +rk +rL +mG +yy +WI +Ru +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(18,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +lx +ar +vB +fR +fR +fR +RM +rP +kF +GR +wq +Ts +yy +yy +Ru +yy +WI +sD +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(19,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +uj +TR +uj +dt +qC +AT +AT +WC +KH +GR +Qx +vd +ha +wT +wT +Ru +Fx +vd +nN +yZ +yZ +yZ +nN +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(20,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +bf +tD +bf +bf +UF +lx +SP +uj +qO +tX +Kl +WC +ie +KH +xw +YF +Ru +vd +Mn +vd +Mn +vd +vd +yZ +HZ +yZ +HZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(21,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +vG +UF +UB +UB +UB +uj +vB +uj +uj +vB +uj +sE +sE +sE +wq +yE +sD +mG +mG +Ru +ku +mG +aX +Wj +TV +Wj +Wj +wi +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(22,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +bf +vG +vG +bf +bf +UF +Qu +Wn +Wn +uj +hM +fR +fR +kG +ps +ps +uj +Qx +xw +yE +sD +no +PX +Ru +km +DH +aX +fT +dY +vq +vq +TV +HZ +nN +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(23,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +UF +Pj +RI +RI +bf +en +UF +UF +Qu +jX +hM +TI +Bp +fR +Xn +ps +uj +yE +xw +Vs +vd +sD +Ru +vd +sD +vd +Hc +yv +CF +dY +dY +TV +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(24,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +UF +lY +dy +Wn +Al +Qu +Qu +UF +Qu +uj +wa +ZY +Bp +UJ +qS +ps +uj +VR +dw +vd +sD +ha +eK +eK +sj +tI +gp +AO +CF +vq +vq +Wj +yZ +yZ +nN +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(25,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +bf +Ze +Wn +Pg +bf +Qu +Tz +Tz +Tz +bf +vG +bf +vG +bf +KV +UX +KV +TL +ih +vd +Hf +yy +yy +yy +yy +wv +aX +Rg +CF +CF +Tw +DN +iz +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(26,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +zZ +HZ +qV +HR +NK +tN +tN +NK +HR +bf +bf +nE +bf +bf +bf +bf +UF +UF +UF +iO +iO +SH +bf +su +mj +Am +ih +ih +sD +mG +yy +yy +yy +yy +Ee +eb +QE +ws +CF +bj +Wj +nN +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(27,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +qV +Kd +Jd +nt +fM +fa +HR +qG +dy +dT +Wl +Pg +bf +Xz +gX +ho +dy +UF +Wn +dy +bf +Am +Qx +NB +wq +vd +sD +xE +vd +Ot +km +pr +bN +aX +hS +aX +gp +aX +Wj +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(28,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +zZ +qV +rq +cq +Or +xo +rF +ei +Wn +Wn +RI +Dl +dy +Wn +dy +Gs +Nm +dT +iO +SH +iO +bf +TF +NM +vd +PP +vd +rL +mG +Ru +mG +mG +WT +RG +lZ +lZ +Zo +nF +vz +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(29,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +Zd +yZ +yZ +yZ +yZ +yZ +yZ +yZ +NK +Kd +ru +xo +fr +rD +re +TG +Wo +WY +Wn +jp +vG +zU +Ws +FP +dy +Wn +mT +dT +bf +wq +dw +rL +rL +pe +Sq +Tt +QR +cg +mG +ZB +ns +Nh +pb +ve +pb +pr +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(30,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +yZ +HZ +yZ +yZ +yZ +yZ +ss +Kd +sg +ss +qV +MO +ei +dy +mT +Ja +fY +TG +Nk +Dl +jp +jp +jp +TG +jp +Dl +ax +Qx +dw +vd +lp +rL +uI +dZ +rL +rL +Ee +jT +ns +WT +WT +ns +MW +ve +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(31,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +Zd +yZ +HZ +yZ +yZ +yZ +yZ +ss +qV +cq +tj +ad +UY +HR +it +dy +dy +dy +pK +bf +Pg +dy +dy +mT +lk +Ov +WZ +bf +Qx +xw +vd +Pz +yy +Pb +Zv +uI +rL +Ru +pr +bb +ci +zg +zg +MU +pr +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(32,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +pI +bw +bw +ou +ou +ou +pM +pM +pM +pM +pM +pM +pM +Rs +GX +md +Rs +Rs +vC +bf +UF +vG +Wn +bf +bf +bf +bf +FR +ae +vd +Nd +yy +Xw +Xw +Ff +Wi +JJ +vz +ve +RG +lZ +fy +ve +WS +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(33,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +ge +Yv +Yv +xN +qy +fe +Rs +Xu +oR +Oc +lo +Rs +vA +kh +Ju +kh +kh +kh +Rs +Dh +Dh +GX +Dh +Dh +Rs +yZ +nr +iq +ih +vd +vd +Ru +Ru +Ru +vd +vd +vd +pr +MU +kl +sv +Jj +Lx +ns +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(34,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +ou +Uh +Uh +qy +qy +Uh +Rs +mh +hZ +hZ +Lk +Rs +kh +Ko +Ko +vA +WH +GX +GX +Rs +Cx +Cx +Rs +Cx +Rs +yZ +nr +YF +GR +nr +YZ +yZ +yZ +yZ +yZ +yZ +yZ +ve +ve +pr +vz +pr +vz +pr +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(35,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +ou +gN +eS +eS +uz +eS +Rs +Mm +NZ +hZ +oq +FJ +WH +WH +GX +ni +Rs +kh +hO +hZ +LC +UQ +Rs +Dh +wk +yZ +Rr +uU +ih +KV +yZ +Ui +xm +xm +Ui +yZ +YZ +yZ +yZ +yZ +yZ +Zd +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(36,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +ou +eS +qy +qy +eS +gN +Rs +Op +Lk +oq +Pl +Rs +kh +vA +GX +vA +GX +kh +kh +WH +GX +Ih +Rs +Dh +xA +yZ +Rr +uU +Qx +nr +yZ +HU +Du +BV +Ui +xm +xm +Ui +xm +xm +Ui +Ui +kM +xm +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(37,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +kL +kL +kL +kL +kL +kL +kL +eS +Yv +Yv +Yv +Yv +Rs +Rs +Rs +Ji +Rs +Rs +Pi +tW +Rs +EY +Rs +tW +tW +tW +WH +Ko +Rs +vA +hO +yZ +nr +uU +oi +ra +yZ +HU +kM +Pc +wh +Pc +Pc +Hv +xm +Ig +aI +Gz +aI +Ui +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(38,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +kL +kL +VN +VN +VN +VN +VN +kL +PA +PA +Yv +Ma +PA +Rs +vA +vA +oq +Lk +tW +gU +vA +GX +vA +jU +RU +ry +tW +kh +di +Mh +vA +Rs +nN +Rr +uU +GR +nr +yZ +Ui +Ui +Ui +Ui +uB +CL +CL +oQ +CL +kM +kM +CL +kM +Zd +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(39,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +kL +VN +VN +zj +iQ +AN +VN +kL +Uh +Uh +qy +eS +Uh +Rs +Lk +oq +Ko +vA +tW +BP +MY +Dh +GX +Dh +vA +vA +ag +kh +kh +hZ +Cx +Rs +yZ +Rr +Ku +WA +Rr +px +AE +Pc +kM +wh +CL +kM +CL +qa +CL +CL +CL +Ve +Ve +yZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(40,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +kL +VN +us +fl +fl +fl +VN +kL +Uh +Uh +PV +eS +Bk +Rs +Lk +GX +Rs +Rs +Rs +vA +Dh +vA +vA +vA +Dh +vA +Rs +Rs +Rs +Ko +bs +Rs +nr +nr +Qx +wq +nr +nN +AE +Bn +ST +xm +CL +Pc +CL +Ui +aI +aI +ZC +pS +Ui +yZ +Zd +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(41,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +kL +VN +bB +fl +Ym +BB +Ms +Ms +Gt +UW +qT +Yv +Ec +wW +FM +Jw +ni +vA +ni +vA +GX +vA +JT +vA +GX +vA +EY +vA +ni +kh +WH +rS +GR +GR +mg +ih +nr +Rr +Ui +Ui +xm +Ui +xm +Pc +Pc +Ui +Ui +kM +kM +Ui +Ui +Ui +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(42,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +kL +VN +Lf +fl +fl +xL +VN +kL +WF +eS +gN +eS +eS +Rs +WQ +Dh +Rs +Rs +Rs +vA +Dh +vA +vA +vA +Dh +GX +Rs +Rs +Rs +yg +HT +Rs +nr +nr +iq +ih +dw +GR +pW +IM +Ur +Ur +WN +eC +Pc +Ds +Co +CL +kM +CL +pj +Ui +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(43,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +kL +VN +VN +jo +uq +OT +VN +kL +eS +eS +qy +He +eS +xA +GX +Dh +oq +Lk +Pi +GX +cd +Dh +GX +yV +RU +vA +Pi +oJ +zF +Ha +sG +Oz +cM +pU +yE +Qx +nr +nr +xm +CL +Pc +ox +Ui +kM +JR +Ui +Ui +NO +kM +vS +vS +Ui +HZ +Zd +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(44,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +kL +kL +VN +VN +VN +VN +VN +kL +Yv +Yv +gN +ou +gN +xA +GX +Dh +oq +Lk +zG +kU +vA +RU +vA +vA +vA +BP +tW +oJ +nH +QG +sF +aH +qB +Ro +VR +VR +VR +yZ +xm +sd +kM +Pc +jj +Pc +bK +Ub +Ui +GC +vS +IF +kM +kM +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(45,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +kL +kL +kL +Uc +oF +kL +Uc +Tl +eS +Yv +eS +Sm +Rs +Rs +Rs +St +Rs +Rs +tW +tW +Rs +vA +Cx +Pi +zG +Rs +Rs +bR +Rs +GT +Rs +yZ +KV +wB +UX +VR +yZ +xm +pL +Pc +CL +Ui +DV +is +Pc +kM +xy +vS +vS +dz +kM +Zd +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(46,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +Zd +Yv +NL +eS +eS +eS +PZ +Rs +nY +nY +oq +CK +Rs +Lk +Lk +Cx +vA +Rs +Lk +Lk +Rs +OF +Hl +sx +Fe +Rs +yZ +nr +VR +iJ +nr +yZ +Ui +oZ +Fs +MR +Ui +qi +rQ +Kk +Ui +Ui +kM +kM +Ui +xm +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(47,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +HZ +ou +uR +eS +eS +eS +BU +Rs +aJ +aJ +oq +oq +rS +oq +Lk +Cx +vA +Rs +oq +Cw +wV +nH +Cw +xI +Yq +Rs +yZ +VR +VR +VR +Rr +nr +Wd +Wd +NT +NT +Wd +NT +NT +Wd +Wd +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(48,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +Zd +yZ +qE +ou +ou +pO +TW +Bx +ou +Rs +LQ +LQ +NZ +DT +Rs +vA +vA +Ko +oq +ux +EN +iT +Rs +jN +GX +sx +Fe +Rs +yZ +Rr +VR +ae +ae +dw +AZ +Gw +wK +AZ +Dc +Tv +Rl +Rl +XL +XL +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(49,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +ou +ou +ou +ou +ou +Rs +kc +kc +NZ +KZ +Rs +qc +vA +vA +oq +Lk +vA +vA +Rs +jN +NZ +sx +GK +Rs +yZ +nr +Qx +qA +YF +KV +Wd +Gw +AZ +Tv +Tv +Tv +Tv +oI +zp +gB +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(50,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +HZ +qE +qE +qE +yZ +hH +fE +Oj +HZ +ii +Rs +Rs +Rs +Rs +Rs +GX +GX +Rs +Rs +rS +Rs +Rs +Rs +Rs +Rs +Rs +Rs +Rs +Rs +yZ +Xh +yE +TL +iq +iY +Wd +lz +Zz +gK +Zz +wK +Tv +VU +hv +XL +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(51,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +yZ +yZ +yZ +yZ +wf +fE +jA +yZ +yZ +aj +ZW +SD +yh +nq +nq +XG +sI +sI +Uu +II +ug +sI +nq +nq +yh +eI +Wa +Ks +yZ +gM +wq +ih +iq +By +RB +Zz +Jm +ZN +dV +AZ +AZ +AL +hv +gB +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(52,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +za +hH +jA +HZ +Oj +fE +jA +yZ +yZ +Ks +hc +FY +yh +nq +nq +sI +ZW +sI +sI +nq +nq +ug +bQ +nq +PQ +Vb +hc +Ks +yZ +nr +YF +ih +iq +mF +RB +jG +ZN +YN +Zz +RB +AZ +Bc +jm +XL +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(53,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +WE +fE +jA +yZ +Oj +fE +jA +yZ +yZ +Ks +ZW +ZW +ZW +nq +nq +nq +nq +nq +ZW +bQ +nq +ug +ug +ug +Ks +ZW +Ks +Ks +yZ +Rr +YF +ih +iq +YO +Wd +LR +TN +TN +Gm +wK +lD +lD +gB +gB +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(54,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +WE +fE +ui +yZ +jA +fE +jA +yZ +yZ +Ks +hc +SD +yh +ug +ug +sI +sI +BW +sI +sI +sI +ug +ug +ug +yh +qx +ZW +Ks +yZ +Rr +yE +wq +sf +KV +Wd +NT +RB +Wd +RB +Wd +RB +NT +NT +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(55,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +hH +fE +WE +yZ +jA +fE +jA +yZ +yZ +aj +ZW +rE +yh +ug +ug +bQ +ZW +sI +nq +Ml +Ml +CP +ug +ug +yh +Vb +hc +ZW +yZ +KV +yE +Am +ih +gb +iZ +dR +Lc +lE +Yi +Fy +VQ +Wh +zr +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(56,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +HZ +Oj +fE +jA +yZ +jA +fE +Oj +yZ +yZ +Ks +mf +Ks +Ks +ug +ug +sI +sI +bQ +nq +Ml +Ml +CP +ug +ug +Ks +Ks +Ks +Ks +yZ +nr +BQ +YF +wq +yE +iZ +Lc +lE +yz +QA +id +Lc +Yi +iZ +yZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(57,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +ui +fE +jA +yZ +Oj +fE +Oj +HZ +yZ +gF +ZW +SD +yh +Ml +UD +Ml +ug +ug +ZW +ug +ug +sI +nq +sI +Mc +qx +hc +Ks +em +em +Ea +of +Aw +ih +lH +yw +id +MQ +yw +Qg +Lc +Yi +zr +yZ +yZ +Rk +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(58,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +yZ +ui +fE +jA +yZ +jA +fE +jA +yZ +Zd +Ks +hc +FY +yh +Ml +Ml +Ml +Ml +Ml +sI +ug +ug +bQ +ZW +nq +yh +CM +ZW +Ks +An +FX +Ba +Ea +ih +iq +iZ +iZ +Lr +iZ +Ly +Lc +Lr +Zh +lE +yZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(59,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +ui +fE +Oj +yZ +jA +fE +jA +yZ +yZ +Ks +Ks +Ks +Ks +ug +Ml +Ml +Ml +QS +nq +nq +nq +sI +uC +sI +Ks +ZW +Ks +Ks +kB +Zk +FX +IY +ih +iq +zf +Lc +Lc +Lc +yw +yz +yz +lE +Lr +yZ +yZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(60,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +qE +yZ +ui +fE +Oj +yZ +Oj +fE +EM +yZ +yZ +ii +rA +Za +XR +EM +Ks +yh +yh +Ks +sI +mf +Mc +yh +aj +bQ +bQ +yZ +Zd +of +iR +EO +iS +of +iq +iq +iZ +oO +lE +oO +Ak +xQ +yz +lE +iZ +HZ +yZ +yZ +HZ +Rk +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(61,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +yZ +yZ +fE +HZ +yZ +yZ +fE +yZ +yZ +FU +FU +Wg +fW +dB +iM +Ks +Zw +jg +mf +uo +Ks +Zw +jg +ZW +HZ +yZ +Zd +yZ +of +Ea +Ea +of +of +IE +IE +iZ +nb +Lc +kQ +Lc +HV +Ak +GY +Lr +yZ +Rk +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(62,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +Iq +fE +fE +fE +fE +fE +fE +fE +fE +EM +EM +EM +EM +vj +cc +Ks +ZW +hc +mf +fj +mf +hc +hc +Ks +yZ +yZ +yZ +yZ +KV +Am +Am +Am +Am +YF +Am +iZ +iZ +iZ +Lr +Lr +iZ +AA +iZ +iZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(63,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +yZ +yZ +fE +yZ +yZ +yZ +fE +yZ +yZ +Wg +FU +Wg +AK +jv +ds +aj +aj +Ks +Ks +uo +Ks +Ks +Ks +Ks +yZ +HZ +yZ +yZ +KV +Am +wq +YF +YF +YF +Am +KV +yZ +HZ +yZ +yZ +Zy +JI +Zy +yZ +nN +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(64,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +HZ +yZ +ui +fE +WE +yZ +ui +fE +wf +yZ +qE +yZ +rA +rA +hH +GI +HZ +yZ +yZ +yZ +zZ +yZ +yZ +yZ +yZ +yZ +yZ +nr +nr +KV +Qb +wq +nr +KV +Am +KV +KV +yZ +HZ +yZ +yZ +Zy +yR +Vw +yZ +nN +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(65,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +HZ +ui +fE +ui +yZ +ui +fE +WE +yZ +qE +yZ +US +yZ +vs +zZ +zZ +zZ +zZ +zZ +zZ +zZ +yZ +zZ +yZ +US +yZ +nr +Am +Am +wq +Am +Rr +wq +wq +KV +yZ +yZ +HZ +yZ +yZ +Zy +nc +Zy +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(66,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +hH +fE +Oj +yZ +jA +fE +ui +HZ +qE +yZ +US +yZ +zZ +zZ +zZ +zZ +zZ +zZ +zZ +yZ +zZ +zZ +HZ +HZ +yZ +KV +wq +YF +Am +Am +nr +wq +wq +KV +nN +yZ +HZ +yZ +yZ +Vw +yR +Vw +yZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(67,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +yZ +yZ +HZ +yZ +jA +fE +Oj +yZ +HZ +yZ +US +yZ +zZ +zZ +zZ +zZ +zZ +zZ +zZ +zZ +yZ +HZ +yZ +nr +Rr +nr +wq +YF +KV +nr +KV +wq +Sx +KV +HZ +HZ +HZ +HZ +HZ +Zy +aQ +Vw +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(68,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +qE +qE +HZ +qE +yZ +jA +fE +Oj +yZ +HZ +yZ +HZ +HZ +zZ +zZ +zZ +zZ +zZ +zZ +zZ +zZ +zZ +zZ +zZ +hC +wq +hC +Am +Am +Rr +mF +Am +wq +wq +UX +yZ +yZ +HZ +yZ +yZ +Vw +JI +Zy +yZ +yZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(69,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +ui +fE +jA +yZ +qE +yZ +US +yZ +yZ +zZ +yZ +zZ +zZ +yZ +zZ +zZ +zZ +zZ +yZ +nr +Rr +Rr +hm +hm +KV +mF +wq +By +xp +KV +yZ +nN +HZ +yZ +yZ +Zy +rW +Zy +yZ +yZ +yZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(70,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +hH +hH +jA +yZ +qE +yZ +US +yZ +yZ +zZ +zZ +zZ +zZ +zZ +zZ +zZ +yZ +zZ +yZ +US +yZ +KV +KV +KV +KV +KV +fv +KV +KV +KV +yZ +Mz +Ia +Ia +Ia +Mz +Ah +LZ +LZ +Zy +Zy +ME +Vw +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(71,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +yZ +HZ +yZ +yZ +yZ +qE +yZ +US +yZ +yZ +zZ +zZ +zZ +zZ +zZ +zZ +yZ +zZ +zZ +yZ +US +yZ +UX +Am +wq +wq +wq +Am +YF +YF +UX +HZ +Mz +JU +GJ +JU +Mz +rW +nc +Gv +JI +JI +aQ +Vw +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(72,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +qE +qE +qE +qE +qE +HZ +qE +yZ +yZ +yZ +yZ +HZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +HZ +US +yZ +KV +ck +wq +wq +wq +Am +YF +YF +KV +yZ +Mz +qN +JU +ES +Mz +iV +rW +LZ +Zy +Zy +Zy +Zy +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(73,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +US +US +US +US +US +US +US +US +US +US +US +yZ +UX +RF +wq +wq +wq +Am +wq +Sx +KV +HZ +Mz +DU +Gr +aE +Mz +jd +aQ +LZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(74,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +KV +Am +wq +wq +YF +Am +wq +eD +UX +yZ +Mz +ip +JU +iB +Mz +ME +Is +LZ +Jk +Vw +Vw +LZ +aQ +Rk +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(75,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +KV +KV +UX +KV +UX +UX +KV +KV +KV +HZ +Mz +DU +yA +aE +Mz +jd +JN +Jk +jd +ME +aQ +Je +LZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(76,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +LZ +Eo +ME +Mj +jd +aQ +cJ +jd +ME +ME +jd +pE +Vw +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(77,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +LZ +vg +vg +vg +jd +ME +jd +LZ +OO +aQ +jd +SI +Zy +yZ +HZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(78,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +LZ +Jk +Jk +LZ +LZ +tw +NY +Jk +fQ +jd +aQ +Je +LZ +Rk +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(79,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +LZ +tw +NY +LZ +LZ +Zy +Vw +LZ +aQ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(80,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +LZ +LZ +Jk +Jk +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} +(81,1,1) = {" +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +yZ +"} diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel_skyrat.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel_skyrat.dmm index 1ac79d00a2e..700323feee0 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel_skyrat.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel_skyrat.dmm @@ -65,7 +65,7 @@ dir = 8 }, /obj/structure/disposalpipe/segment, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "ar" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -305,7 +305,7 @@ /turf/open/floor/carpet/neon/simple/black/nodots, /area/ruin/space/has_grav/hotel/guestroom/room_1) "bW" = ( -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "bZ" = ( /turf/open/floor/iron/white, @@ -338,6 +338,10 @@ "cf" = ( /turf/closed/wall, /area/ruin/space/has_grav/hotel/guestroom/room_6) +"cj" = ( +/obj/machinery/vending/boozeomat/cafe, +/turf/open/floor/wood, +/area/ruin/space/has_grav/hotel/bar) "ck" = ( /obj/structure/cable, /obj/machinery/light_switch{ @@ -353,7 +357,7 @@ /obj/machinery/airalarm/directional/north{ pixel_y = 24 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "cp" = ( /obj/structure/bed/double, @@ -403,6 +407,15 @@ }, /turf/open/floor/carpet/black, /area/ruin/space/has_grav/hotel/dock) +"cL" = ( +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/obj/effect/turf_decal/siding/dark_red{ + dir = 9 + }, +/obj/structure/urinal/directional/north, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "cO" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -30 @@ -461,7 +474,7 @@ dir = 4 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "dm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -567,6 +580,7 @@ /obj/structure/table, /obj/item/food/mint, /obj/item/kitchen/rollingpin, +/obj/item/cutting_board, /turf/open/floor/iron/cafeteria, /area/ruin/space/has_grav/hotel/bar) "dY" = ( @@ -972,7 +986,7 @@ dir = 8 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "fF" = ( /obj/structure/extinguisher_cabinet{ @@ -1060,12 +1074,29 @@ }, /turf/open/floor/iron, /area/ruin/space/has_grav/hotel/power) +"gk" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark_red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "gl" = ( /obj/effect/turf_decal/siding/dark{ dir = 4 }, /turf/open/floor/carpet/black, /area/ruin/space/has_grav/hotel) +"gn" = ( +/obj/effect/turf_decal/siding/dark_red{ + dir = 10 + }, +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "gp" = ( /obj/structure/table/glass, /obj/machinery/reagentgrinder, @@ -1284,9 +1315,12 @@ /turf/open/floor/iron/white, /area/ruin/space/has_grav/hotel) "hk" = ( -/obj/machinery/vending/boozeomat, -/turf/open/floor/wood, -/area/ruin/space/has_grav/hotel/bar) +/obj/effect/turf_decal/siding/dark_red{ + dir = 6 + }, +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "hl" = ( /obj/structure/table/reinforced/plastitaniumglass, /turf/open/floor/wood, @@ -1336,7 +1370,7 @@ dir = 1 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "hq" = ( /obj/structure/table/glass, @@ -1367,7 +1401,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "hu" = ( /obj/machinery/chem_dispenser/drinks/fullupgrade{ @@ -1533,7 +1567,14 @@ pixel_y = 24 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, +/area/ruin/space/has_grav/hotel) +"hY" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/machinery/door/airlock, +/turf/open/floor/carpet/black, /area/ruin/space/has_grav/hotel) "hZ" = ( /obj/effect/turf_decal/siding/green{ @@ -1647,7 +1688,7 @@ dir = 4 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "iu" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -1681,7 +1722,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "iy" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -1755,6 +1796,7 @@ /obj/effect/turf_decal/siding/wideplating_new{ dir = 4 }, +/obj/structure/fireaxecabinet/empty/directional/east, /turf/open/floor/iron, /area/ruin/space/has_grav/hotel/power) "iO" = ( @@ -1782,7 +1824,7 @@ dir = 8 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "iS" = ( /obj/machinery/light{ @@ -1971,7 +2013,7 @@ dir = 4 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "jL" = ( /obj/structure/table, @@ -2171,6 +2213,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/catwalk_floor, /area/ruin/space/has_grav/hotel/custodial) +"kD" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/item/kirbyplants/random, +/turf/open/floor/carpet/black, +/area/ruin/space/has_grav/hotel) "kF" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -30 @@ -2400,6 +2449,7 @@ pixel_y = 24 }, /obj/effect/turf_decal/siding/dark, +/obj/machinery/vending/autodrobe/all_access, /turf/open/floor/carpet/black, /area/ruin/space/has_grav/hotel) "lA" = ( @@ -2435,7 +2485,7 @@ /area/ruin/space/has_grav/hotel) "lL" = ( /obj/item/kirbyplants/random, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "lN" = ( /obj/machinery/light/floor, @@ -2533,7 +2583,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "mj" = ( /obj/structure/cable, @@ -2668,7 +2718,7 @@ /obj/effect/turf_decal/siding/wood/corner{ dir = 4 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "mI" = ( /obj/machinery/light/floor, @@ -2782,7 +2832,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "nh" = ( /obj/effect/turf_decal/siding/dark{ @@ -2911,6 +2961,7 @@ /obj/effect/turf_decal/siding/wideplating_new{ dir = 1 }, +/obj/item/storage/belt/utility, /turf/open/floor/iron, /area/ruin/space/has_grav/hotel/power) "nU" = ( @@ -3039,7 +3090,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "oK" = ( /obj/effect/turf_decal/siding/dark{ @@ -3155,6 +3206,14 @@ }, /turf/open/floor/carpet/royalblack, /area/ruin/space/has_grav/hotel/dock) +"pI" = ( +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/obj/effect/turf_decal/siding/dark_red, +/obj/effect/turf_decal/siding/dark_red{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "pK" = ( /obj/structure/cable, /turf/open/floor/carpet/neon/simple/white/nodots, @@ -3196,7 +3255,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "pS" = ( /obj/structure/holopay, @@ -3410,6 +3469,20 @@ }, /turf/open/floor/carpet/black, /area/ruin/space/has_grav/hotel/dock) +"rl" = ( +/obj/structure/sink/directional/south, +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/effect/turf_decal/siding/dark_red{ + dir = 1 + }, +/obj/effect/turf_decal/siding/dark_red{ + dir = 5 + }, +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "rn" = ( /obj/structure/closet/secure_closet/personal/cabinet, /turf/open/floor/wood, @@ -3418,7 +3491,7 @@ /obj/effect/turf_decal/siding/wood/corner{ dir = 8 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "rp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -3488,10 +3561,13 @@ /turf/open/floor/wood/large, /area/ruin/space/has_grav/hotel/guestroom/room_4) "rI" = ( -/obj/machinery/vending/boozeomat, /obj/machinery/light{ dir = 8 }, +/obj/structure/table/reinforced/plastitaniumglass, +/obj/machinery/chem_dispenser/drinks/fullupgrade{ + dir = 4 + }, /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/bar) "rL" = ( @@ -3609,7 +3685,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "se" = ( /turf/open/floor/wood, @@ -3789,7 +3865,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 8 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "tK" = ( /obj/machinery/vending/coffee, @@ -3810,7 +3886,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "tP" = ( /obj/structure/table/reinforced/plastitaniumglass, @@ -3964,7 +4040,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "uO" = ( /obj/structure/table/glass, @@ -4056,6 +4132,10 @@ }, /turf/open/floor/carpet/black, /area/ruin/space/has_grav/hotel) +"vq" = ( +/obj/structure/grandfatherclock, +/turf/open/floor/wood, +/area/ruin/space/has_grav/hotel/workroom) "vr" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 8 @@ -4103,7 +4183,7 @@ dir = 8 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "vG" = ( /obj/structure/chair/sofa/corp/right{ @@ -4394,7 +4474,7 @@ dir = 8 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "xU" = ( /obj/machinery/door/airlock{ @@ -4578,7 +4658,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 8 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "yX" = ( /turf/closed/wall, @@ -4606,6 +4686,10 @@ /obj/effect/turf_decal/trimline/dark_blue/filled/corner, /turf/open/indestructible/hotelwood, /area/ruin/space/has_grav/hotel/pool) +"zo" = ( +/obj/structure/decorative/shelf/alcohol_assortment, +/turf/open/floor/wood, +/area/ruin/space/has_grav/hotel/bar) "zp" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 8 @@ -4754,6 +4838,13 @@ /obj/item/key_card/hotel_room/master, /turf/open/floor/carpet/executive, /area/ruin/space/has_grav/hotel/workroom) +"Ap" = ( +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/obj/effect/turf_decal/siding/dark_red/corner{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "Au" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/siding/dark{ @@ -4787,9 +4878,6 @@ /turf/open/floor/iron, /area/ruin/space/has_grav/hotel/bar) "AI" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -30 - }, /obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, @@ -4847,7 +4935,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "Be" = ( /obj/structure/closet/crate/hydroponics, @@ -4888,7 +4976,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "Bu" = ( /obj/machinery/photocopier, @@ -4936,6 +5024,7 @@ /obj/effect/turf_decal/siding/dark{ dir = 4 }, +/obj/structure/desk_bell, /turf/open/floor/carpet/black, /area/ruin/space/has_grav/hotel) "BF" = ( @@ -5202,13 +5291,17 @@ /area/ruin/space/has_grav/hotel/pool) "Dt" = ( /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "Dv" = ( /obj/structure/mirror{ pixel_y = 32 }, /obj/structure/sink/directional/south, +/obj/effect/turf_decal/siding/dark_red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, /turf/open/floor/iron/white, /area/ruin/space/has_grav/hotel) "Dw" = ( @@ -5420,7 +5513,7 @@ dir = 9 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "ET" = ( /obj/machinery/vending/imported/tiziran, @@ -5470,7 +5563,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 9 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "Fg" = ( /obj/structure/cable, @@ -5659,7 +5752,7 @@ dir = 4 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "GG" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, @@ -5670,7 +5763,7 @@ dir = 1 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "GI" = ( /obj/structure/disposalpipe/segment{ @@ -5688,6 +5781,9 @@ /obj/item/device/traitor_announcer, /obj/item/crowbar, /obj/item/radio/headset/headset_faction/bowman, +/obj/item/clothing/suit/victoriantailcoatbutler, +/obj/item/clothing/under/suit/tuxedo, +/obj/item/clothing/neck/bowtie, /turf/open/floor/carpet/executive, /area/ruin/space/has_grav/hotel/workroom) "GK" = ( @@ -5844,7 +5940,7 @@ /area/ruin/space/has_grav/hotel/bar) "HG" = ( /obj/structure/disposalpipe/segment, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "HI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -5887,6 +5983,10 @@ }, /turf/open/indestructible/hoteltile, /area/ruin/space/has_grav/hotel/guestroom/room_6) +"HV" = ( +/obj/machinery/vending/boozeomat/cafe, +/turf/closed/wall, +/area/ruin/space/has_grav/hotel/bar) "HY" = ( /obj/effect/mob_spawn/ghost_role/human/hotel_staff, /obj/machinery/light{ @@ -5933,6 +6033,17 @@ }, /turf/open/floor/iron, /area/ruin/space/has_grav/hotel/power) +"Ig" = ( +/obj/structure/table/reinforced/plastitaniumglass, +/obj/item/reagent_containers/cup/glass/bottle/whiskey{ + pixel_y = 22; + pixel_x = 6 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = 6 + }, +/turf/open/floor/wood, +/area/ruin/space/has_grav/hotel/bar) "Ij" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -6007,7 +6118,7 @@ dir = 8 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "IS" = ( /obj/structure/sink/kitchen/directional/south, @@ -6144,7 +6255,7 @@ /area/ruin/space/has_grav/hotel/guestroom) "JT" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "JV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -6158,7 +6269,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "JZ" = ( /obj/structure/table, @@ -6351,6 +6462,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/guestroom/room_5) +"Lp" = ( +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/wood, +/area/ruin/space/has_grav/hotel/bar) "Lq" = ( /obj/structure/mirror{ pixel_y = 32 @@ -6416,9 +6531,10 @@ /turf/open/floor/carpet/black, /area/ruin/space/has_grav/hotel/dock) "LD" = ( -/obj/machinery/light{ - dir = 4 +/obj/effect/turf_decal/siding/dark_red{ + dir = 8 }, +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, /turf/open/floor/iron/white, /area/ruin/space/has_grav/hotel) "LN" = ( @@ -6437,7 +6553,7 @@ dir = 8 }, /obj/structure/disposalpipe/segment, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "LQ" = ( /obj/machinery/space_heater, @@ -6509,6 +6625,12 @@ "Mv" = ( /turf/open/indestructible/hoteltile, /area/ruin/space/has_grav/hotel/guestroom/room_6) +"Mw" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/turf/closed/wall, +/area/ruin/space/has_grav/hotel) "MB" = ( /obj/structure/chair/sofa/corp/right{ dir = 8 @@ -6522,6 +6644,18 @@ }, /turf/open/floor/carpet/black, /area/ruin/space/has_grav/hotel) +"MJ" = ( +/obj/structure/window/reinforced/spawner/directional/north{ + layer = 2.9 + }, +/obj/structure/table/glass, +/obj/effect/turf_decal/siding/dark{ + dir = 1 + }, +/obj/item/paper_bin, +/obj/item/pen, +/turf/open/floor/carpet/black, +/area/ruin/space/has_grav/hotel) "MN" = ( /obj/structure/table/wood/fancy/green, /obj/item/coffee_cartridge/decaf{ @@ -6559,7 +6693,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "MV" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -6737,7 +6871,7 @@ dir = 4 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "Oh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -6782,7 +6916,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "Ow" = ( /obj/effect/spawner/structure/window/reinforced, @@ -6804,7 +6938,7 @@ dir = 8 }, /obj/effect/turf_decal/siding/wood/corner, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "OB" = ( /obj/item/reagent_containers/condiment/milk, @@ -6864,7 +6998,7 @@ /obj/machinery/door/airlock/public/glass, /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "OZ" = ( /obj/machinery/shower/directional/north, @@ -6872,13 +7006,10 @@ /turf/open/indestructible/hoteltile, /area/ruin/space/has_grav/hotel/guestroom/room_6) "Pb" = ( -/obj/machinery/chem_dispenser/drinks/fullupgrade{ - dir = 4 - }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/obj/structure/table/reinforced/plastitaniumglass, +/obj/structure/decorative/shelf/alcohol_assortment, /turf/open/floor/wood, /area/ruin/space/has_grav/hotel/bar) "Pd" = ( @@ -6904,6 +7035,13 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/ruin/space/has_grav/hotel/dock) +"Pl" = ( +/obj/effect/turf_decal/siding/dark_red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "Pp" = ( /obj/structure/closet/crate/freezer, /obj/item/food/grown/wheat, @@ -6998,7 +7136,7 @@ /obj/effect/turf_decal/siding/wood/corner{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "PN" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -7203,6 +7341,10 @@ /obj/effect/turf_decal/siding/wood, /turf/open/indestructible/hotelwood, /area/ruin/space/has_grav/hotel/pool) +"Ri" = ( +/obj/structure/sign/painting/meat, +/turf/closed/wall, +/area/ruin/space/has_grav/hotel/workroom) "Rm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 @@ -7226,6 +7368,12 @@ }, /turf/open/floor/iron/white, /area/ruin/space/has_grav/hotel) +"Rq" = ( +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 + }, +/turf/closed/wall, +/area/ruin/space/has_grav/hotel) "Rr" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -7251,6 +7399,10 @@ }, /turf/open/floor/carpet/neon/simple/black/nodots, /area/ruin/space/has_grav/hotel/guestroom/room_1) +"Rz" = ( +/obj/structure/mirror/directional, +/turf/closed/wall, +/area/ruin/space/has_grav/hotel/bar) "RE" = ( /obj/item/reagent_containers/cup/bottle/morphine, /obj/item/reagent_containers/cup/bottle/toxin{ @@ -7332,7 +7484,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "RS" = ( /obj/structure/cable, @@ -7346,7 +7498,7 @@ dir = 4 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "RU" = ( /obj/structure/table/wood, @@ -7493,7 +7645,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 1 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "Th" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -7622,6 +7774,15 @@ /obj/effect/turf_decal/tile/dark/diagonal_edge, /turf/open/floor/iron/white, /area/ruin/space/has_grav/hotel) +"Ug" = ( +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/obj/effect/turf_decal/siding/dark_red{ + dir = 1 + }, +/obj/structure/urinal/directional/north, +/obj/structure/window/reinforced/spawner/directional/east, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "Uk" = ( /obj/machinery/autolathe, /obj/effect/turf_decal/siding/wideplating_new{ @@ -7643,8 +7804,8 @@ /turf/open/floor/iron, /area/ruin/space/has_grav/hotel/bar) "Us" = ( -/obj/structure/chair/comfy/black, /obj/structure/cable, +/obj/structure/chair/comfy/brown, /turf/open/floor/carpet/executive, /area/ruin/space/has_grav/hotel/workroom) "Ut" = ( @@ -7705,7 +7866,7 @@ dir = 8 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "UU" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -7822,7 +7983,7 @@ dir = 8 }, /obj/structure/disposalpipe/segment, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "VI" = ( /obj/structure/table/reinforced, @@ -7858,6 +8019,11 @@ }, /turf/open/floor/iron, /area/ruin/space/has_grav/hotel/power) +"VU" = ( +/obj/effect/turf_decal/tile/dark_red/diagonal_edge, +/obj/effect/turf_decal/siding/dark_red, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "VW" = ( /obj/machinery/airalarm/directional/west, /obj/structure/dresser, @@ -7904,6 +8070,12 @@ "Wo" = ( /turf/open/floor/glass/reinforced, /area/ruin/space/has_grav/hotel/bar) +"Wx" = ( +/obj/structure/extinguisher_cabinet{ + pixel_x = -30 + }, +/turf/open/floor/carpet/black, +/area/ruin/space/has_grav/hotel/bar) "Wz" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -7961,7 +8133,7 @@ dir = 4 }, /obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "Xa" = ( /obj/machinery/atmospherics/components/binary/pump/on{ @@ -8038,6 +8210,20 @@ }, /turf/open/floor/iron/showroomfloor, /area/ruin/space/has_grav/hotel/pool) +"Xq" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/extinguisher_cabinet{ + pixel_x = -30 + }, +/turf/open/floor/iron/white, +/area/ruin/space/has_grav/hotel) "Xs" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 @@ -8325,7 +8511,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, -/turf/open/floor/carpet, +/turf/open/floor/carpet/orange, /area/ruin/space/has_grav/hotel) "ZC" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ @@ -8952,9 +9138,9 @@ Lc fi mY UK -hw +Lp Yw -hw +cj hw vw fi @@ -9161,12 +9347,12 @@ Mb FV fi fR -fi -fi -fi -fi -fi -fi +Rz +Rz +Rz +Rz +Rz +Rz fi bE kH @@ -9234,8 +9420,8 @@ eQ hJ Pb rI -hk hu +zo hJ fi bE @@ -9377,7 +9563,7 @@ hw hw hw hw -fi +HV hS ed lK @@ -9444,7 +9630,7 @@ EH ji Dp hl -hl +Ig dv Jh fi @@ -9519,7 +9705,7 @@ AA AA AI fo -iA +Wx ky fi bE @@ -9643,7 +9829,7 @@ fi kW dT dT -dT +Ur dT dT ba @@ -9776,7 +9962,7 @@ di ck JV Kj -au +vq di SQ fi @@ -9854,7 +10040,7 @@ fi fi fi fi -Ur +fi fi fi fi @@ -9924,8 +10110,8 @@ Na Kr Na fi -am -fH +cL +pI am fH fi @@ -9982,7 +10168,7 @@ av xR yE hs -di +Ri Us JG sZ @@ -9994,8 +10180,8 @@ BT KZ BU fi -am -th +Ug +VU am th fi @@ -10065,9 +10251,9 @@ KZ Oa fi Dv -so +Ap LD -so +gn fi iA gd @@ -10134,10 +10320,10 @@ fi fs fi fi -am -th -am -am +rl +Pl +gk +hk fi iA Mh @@ -10203,11 +10389,11 @@ LY GK DQ oe -LY -gl -gl -gl -nQ +Mw +Mw +hY +Mw +Rq fi Ob Fz @@ -10273,7 +10459,7 @@ LN LN LN LN -LN +Xq LN Lz eA @@ -10347,7 +10533,7 @@ nh AX ey so -Xu +kD fi gL iA @@ -11192,7 +11378,7 @@ am DL so so -ge +MJ ol us Jb diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm index 9685c667d2c..2a23215766f 100644 --- a/_maps/RandomZLevels/SnowCabin.dmm +++ b/_maps/RandomZLevels/SnowCabin.dmm @@ -4459,7 +4459,7 @@ /obj/structure/signpost/salvation{ density = 0; desc = "An intercomm. Someone seems to be on the other end. I should use it."; - icon = 'icons/obj/radio.dmi'; + icon = 'icons/obj/device.dmi'; icon_state = "intercom"; max_integrity = 99999; name = "\proper Fun Jail intercom"; diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index 3b08b25111f..8d7b0590853 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -46,6 +46,10 @@ }, /turf/open/floor/iron, /area/station/security/tram) +"ach" = ( +/obj/machinery/netpod, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/cargo/bitrunning/den) "acl" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/dirt, @@ -112,12 +116,6 @@ /obj/machinery/portable_atmospherics/canister, /turf/open/floor/plating, /area/station/engineering/atmos/project) -"adH" = ( -/obj/machinery/netpod, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) "adL" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -3931,6 +3929,30 @@ }, /turf/open/floor/iron, /area/station/security/processing) +"bCh" = ( +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/machinery/door/airlock/mining{ + name = "Bitrunning Den" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, +/area/station/cargo/bitrunning/den) "bCi" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners, /obj/machinery/atmospherics/components/binary/crystallizer{ @@ -6106,6 +6128,27 @@ "cvJ" = ( /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"cvP" = ( +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/holopad, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, +/area/station/cargo/bitrunning/den) "cvZ" = ( /obj/structure/closet/secure_closet/evidence, /obj/effect/decal/cleanable/dirt, @@ -11064,6 +11107,10 @@ /obj/structure/frame/computer, /turf/open/floor/eighties/red, /area/station/service/abandoned_gambling_den/gaming) +"ejq" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/cargo/bitrunning/den) "ejt" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -13973,12 +14020,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/science/ordnance) -"fkL" = ( -/obj/machinery/quantum_server, -/obj/effect/turf_decal/delivery, -/obj/machinery/light/cold/directional/west, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/bitrunning/den) "fkT" = ( /obj/effect/turf_decal/sand/plating, /obj/structure/alien/weeds, @@ -15044,25 +15085,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"fBl" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/structure/table, -/obj/item/folder/red, -/obj/item/food/monkeycube/bee{ - name = "monkey cube"; - pixel_y = 17 - }, -/obj/item/food/monkeycube/gorilla{ - desc = "Just add water!"; - name = "monkey cube"; - pixel_x = 3; - pixel_y = 13 - }, -/turf/open/floor/iron/dark, -/area/station/commons/storage/tools) "fBq" = ( /obj/machinery/atmospherics/components/binary/valve/digital{ dir = 4 @@ -16265,9 +16287,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/maintenance/department/medical/central) -"fXd" = ( -/turf/closed/wall, -/area/station/cargo/bitrunning/den) "fXg" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -17786,10 +17805,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/grass, /area/station/service/hydroponics) -"gzl" = ( -/obj/machinery/netpod, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) "gzu" = ( /obj/effect/turf_decal/tile/dark_red{ dir = 1 @@ -18380,27 +18395,6 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/station/maintenance/department/medical/central) -"gKH" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/machinery/holopad, -/turf/open/floor/iron/dark/smooth_half{ - dir = 1 - }, -/area/station/cargo/bitrunning/den) "gKK" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -18726,17 +18720,6 @@ }, /turf/open/floor/plating/rust, /area/station/maintenance/department/engine/atmos) -"gQx" = ( -/obj/effect/turf_decal/bot_white, -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/gloves/color/fyellow{ - pixel_y = 7 - }, -/obj/structure/fluff/broken_canister_frame, -/obj/machinery/camera/autoname/directional/north, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/plating, -/area/station/commons/storage/tools) "gQG" = ( /obj/structure/window/spawner/directional/east, /obj/structure/closet/crate, @@ -19166,30 +19149,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"gWV" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/machinery/door/airlock/mining{ - name = "Bitrunning Den" - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/any/supply/bit_den, -/turf/open/floor/iron/dark/smooth_half{ - dir = 1 - }, -/area/station/cargo/bitrunning/den) "gXf" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/dirt, @@ -21651,6 +21610,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"hNv" = ( +/obj/machinery/netpod, +/obj/machinery/light_switch/directional/north, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/cargo/bitrunning/den) "hNA" = ( /obj/effect/turf_decal/tile/brown/opposingcorners, /turf/open/floor/iron, @@ -25305,19 +25270,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/commons/fitness/recreation/entertainment) -"jeB" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/obj/effect/turf_decal/stripes, -/obj/effect/turf_decal/trimline/brown/line, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/light/small/directional/east, -/obj/effect/landmark/start/bitrunner, -/turf/open/floor/iron/dark/smooth_half, -/area/station/cargo/bitrunning/den) "jeC" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -26078,26 +26030,6 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/general, /turf/open/floor/catwalk_floor/iron_dark, /area/station/commons/storage/tools) -"jux" = ( -/obj/effect/turf_decal/stripes{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron/dark/smooth_half{ - dir = 1 - }, -/area/station/cargo/bitrunning/den) "juJ" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -27495,13 +27427,6 @@ /obj/item/bedsheet/brown, /turf/open/floor/wood, /area/station/maintenance/starboard/greater) -"jSp" = ( -/obj/machinery/computer/quantum_console{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark/textured_large, -/area/station/cargo/bitrunning/den) "jSw" = ( /obj/structure/railing, /turf/open/floor/catwalk_floor, @@ -27849,6 +27774,25 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/half, /area/station/hallway/primary/central/fore) +"jYV" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/table, +/obj/item/folder/red, +/obj/item/food/monkeycube/bee{ + name = "monkey cube"; + pixel_y = 17 + }, +/obj/item/food/monkeycube/chicken{ + pixel_y = 15; + pixel_x = 6; + name = "monkey cube"; + desc = "A new Nanotrasen classic, the monkey cube. Tastes like everything!" + }, +/turf/open/floor/iron/dark, +/area/station/commons/storage/tools) "jYY" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -30740,6 +30684,19 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/wood, /area/station/service/abandoned_gambling_den) +"lbF" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, +/obj/effect/turf_decal/stripes, +/obj/effect/turf_decal/trimline/brown/line, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/machinery/light/small/directional/east, +/obj/effect/landmark/start/bitrunner, +/turf/open/floor/iron/dark/smooth_half, +/area/station/cargo/bitrunning/den) "lbG" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 1 @@ -32921,6 +32878,20 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron, /area/station/maintenance/starboard/aft) +"lKH" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/line, +/obj/effect/turf_decal/stripes, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/machinery/airalarm/directional/west, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/landmark/start/bitrunner, +/turf/open/floor/iron/dark/smooth_half, +/area/station/cargo/bitrunning/den) "lKK" = ( /obj/effect/mapping_helpers/broken_floor, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -32936,6 +32907,13 @@ /obj/effect/mapping_helpers/airlock/access/any/security/general, /turf/open/floor/iron, /area/station/security/checkpoint/escape) +"lLq" = ( +/obj/machinery/firealarm/directional/east, +/obj/effect/decal/cleanable/oil, +/obj/machinery/byteforge, +/obj/effect/turf_decal/box, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/bitrunning/den) "lLr" = ( /obj/machinery/porta_turret/ai{ dir = 4 @@ -36381,15 +36359,6 @@ /obj/machinery/camera/autoname/directional/west, /turf/open/floor/iron/white, /area/station/medical/virology) -"mVs" = ( -/obj/effect/turf_decal/siding/blue{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/obj/structure/bed/dogbed/runtime, -/mob/living/simple_animal/pet/cat/runtime, -/turf/open/floor/iron/white/small, -/area/station/command/heads_quarters/cmo) "mVt" = ( /obj/structure/cable, /obj/effect/turf_decal/siding/dark_red{ @@ -37873,6 +37842,13 @@ }, /turf/open/floor/circuit/telecomms/mainframe, /area/station/science/xenobiology) +"nyf" = ( +/obj/machinery/camera/autoname/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/food/cornchips/green, +/turf/open/floor/iron/dark/smooth_large, +/area/station/cargo/bitrunning/den) "nyi" = ( /turf/closed/wall/rust, /area/station/maintenance/hallway/abandoned_command) @@ -38223,6 +38199,13 @@ /obj/structure/falsewall, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) +"nEl" = ( +/obj/machinery/computer/quantum_console{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/bitrunning/den) "nEo" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -38284,6 +38267,9 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/smooth, /area/station/cargo/drone_bay) +"nFo" = ( +/turf/closed/wall, +/area/station/cargo/bitrunning/den) "nFp" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -39233,26 +39219,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) -"nXz" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/trimline/brown/corner, -/obj/effect/turf_decal/trimline/brown/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/dark/smooth_edge{ - dir = 1 - }, -/area/station/cargo/bitrunning/den) "nXP" = ( /obj/machinery/airalarm/directional/east, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ @@ -40840,6 +40806,9 @@ /obj/machinery/camera/autoname/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"oCG" = ( +/turf/closed/wall/rust, +/area/station/cargo/bitrunning/den) "oCM" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/broken_flooring/pile/directional/east, @@ -46390,10 +46359,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/science/xenobiology) -"qrE" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/station/cargo/bitrunning/den) "qrI" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/textured_half{ @@ -51087,6 +51052,26 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/hidden/layer1, /turf/open/floor/catwalk_floor/iron_white, /area/station/engineering/atmos) +"rPx" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/trimline/brown/corner, +/obj/effect/turf_decal/trimline/brown/corner{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark/smooth_edge{ + dir = 1 + }, +/area/station/cargo/bitrunning/den) "rPz" = ( /obj/structure/table/glass, /obj/item/flashlight/lamp/green{ @@ -51556,6 +51541,26 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"rWP" = ( +/obj/effect/turf_decal/stripes{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/line{ + dir = 4 + }, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/smooth_half{ + dir = 1 + }, +/area/station/cargo/bitrunning/den) "rWW" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -52532,13 +52537,6 @@ /obj/structure/thermoplastic, /turf/open/floor/tram, /area/station/security/tram) -"snI" = ( -/obj/machinery/firealarm/directional/east, -/obj/effect/decal/cleanable/oil, -/obj/machinery/byteforge, -/obj/effect/turf_decal/box, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/bitrunning/den) "snJ" = ( /obj/effect/turf_decal/stripes/corner, /obj/machinery/light/small/directional/south, @@ -53448,12 +53446,6 @@ }, /turf/closed/wall, /area/station/commons/storage/art) -"sBO" = ( -/obj/machinery/netpod, -/obj/machinery/light_switch/directional/north, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/catwalk_floor/iron_dark, -/area/station/cargo/bitrunning/den) "sCc" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, @@ -57240,6 +57232,12 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/white, /area/station/hallway/primary/starboard) +"tPZ" = ( +/obj/machinery/netpod, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/turf/open/floor/catwalk_floor/iron_dark, +/area/station/cargo/bitrunning/den) "tQx" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/fueltank, @@ -62129,6 +62127,15 @@ /obj/machinery/duct, /turf/open/floor/iron/showroomfloor, /area/station/commons/toilet/restrooms) +"vtq" = ( +/obj/effect/turf_decal/siding/blue{ + dir = 1 + }, +/obj/machinery/airalarm/directional/north, +/obj/structure/bed/dogbed/runtime, +/mob/living/simple_animal/pet/cat/runtime, +/turf/open/floor/iron/white/small, +/area/station/command/heads_quarters/cmo) "vtv" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -62653,13 +62660,6 @@ }, /turf/open/floor/iron/dark, /area/station/security/office) -"vCa" = ( -/obj/machinery/camera/autoname/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/food/cornchips/green, -/turf/open/floor/iron/dark/smooth_large, -/area/station/cargo/bitrunning/den) "vCe" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -65762,6 +65762,18 @@ /obj/effect/landmark/start/cargo_technician, /turf/open/floor/iron/smooth, /area/station/cargo/office) +"wzp" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/gloves/color/fyellow{ + pixel_y = 7 + }, +/obj/structure/fluff/broken_canister_frame, +/obj/machinery/camera/autoname/directional/north, +/obj/item/stack/sticky_tape/super, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plating, +/area/station/commons/storage/tools) "wzK" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -66911,20 +66923,6 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/smooth, /area/station/service/greenroom) -"wRI" = ( -/obj/effect/turf_decal/siding/thinplating_new/dark{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/line, -/obj/effect/turf_decal/stripes, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/machinery/airalarm/directional/west, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/landmark/start/bitrunner, -/turf/open/floor/iron/dark/smooth_half, -/area/station/cargo/bitrunning/den) "wRL" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -71940,9 +71938,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/central/greater) -"ygc" = ( -/turf/closed/wall/rust, -/area/station/cargo/bitrunning/den) "ygd" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/spawner/random/engineering/atmospherics_portable, @@ -72316,6 +72311,12 @@ "ylD" = ( /turf/closed/wall, /area/station/maintenance/starboard/greater) +"ylH" = ( +/obj/machinery/quantum_server, +/obj/effect/turf_decal/delivery, +/obj/machinery/light/cold/directional/west, +/turf/open/floor/iron/dark/textured_large, +/area/station/cargo/bitrunning/den) "ylJ" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, @@ -84013,12 +84014,12 @@ slY ueX slY ueX -fXd -ygc -fXd -fXd -fXd -fXd +nFo +oCG +nFo +nFo +nFo +nFo lxy hzm jTA @@ -84270,12 +84271,12 @@ slY hfc jBb iNE -fXd -gzl -wRI -fkL -jSp -qrE +nFo +ach +lKH +ylH +nEl +ejq tvN lRc moz @@ -84527,12 +84528,12 @@ gZk iNE kwY kPW -fXd -adH -nXz -gKH -jux -gWV +nFo +tPZ +rPx +cvP +rWP +bCh jWA lTv oem @@ -84784,12 +84785,12 @@ slY hff kPW hfc -fXd -sBO -jeB -snI -vCa -qrE +nFo +hNv +lbF +lLq +nyf +ejq jkS lTN mRD @@ -85041,12 +85042,12 @@ slY jCo slY slY -fXd -fXd -fXd -fXd -fXd -fXd +nFo +nFo +nFo +nFo +nFo +nFo kZB lUz ohj @@ -89662,7 +89663,7 @@ ueX slY slY slY -gQx +wzp hbv rkr hmj @@ -90179,7 +90180,7 @@ hXf oQM hbI hgd -fBl +jYV xrZ sRg xat @@ -91460,7 +91461,7 @@ wbi hrY wbi wbi -wbi +dDB wbi wbi wbi @@ -100284,7 +100285,7 @@ oNd fFD cbO vDV -mVs +vtq clt jbr guF diff --git a/_maps/map_files/NSVBlueshift/Blueshift.dmm b/_maps/map_files/NSVBlueshift/Blueshift.dmm index dfb2e863343..50df0951d45 100644 --- a/_maps/map_files/NSVBlueshift/Blueshift.dmm +++ b/_maps/map_files/NSVBlueshift/Blueshift.dmm @@ -32286,7 +32286,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/disposalpipe/sorting/mail{ name = "Detective Junction"; - renamedByPlayer = 30 }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) @@ -71348,7 +71347,6 @@ "nGH" = ( /obj/structure/disposalpipe/sorting/mail{ name = "Robotics Junction"; - renamedByPlayer = 14 }, /turf/open/floor/iron, /area/station/hallway/primary/upper) diff --git a/code/__DEFINES/_flags.dm b/code/__DEFINES/_flags.dm index f5fc50004cd..f69e18910fa 100644 --- a/code/__DEFINES/_flags.dm +++ b/code/__DEFINES/_flags.dm @@ -17,49 +17,47 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 /// Is this object currently processing in the atmos object list? #define ATMOS_IS_PROCESSING_1 (1<<0) -/// conducts electricity (metal etc.) -#define CONDUCT_1 (1<<1) /// For machines and structures that should not break into parts, eg, holodeck stuff -#define NODECONSTRUCT_1 (1<<2) +#define NODECONSTRUCT_1 (1<<1) /// item has priority to check when entering or leaving -#define ON_BORDER_1 (1<<3) +#define ON_BORDER_1 (1<<2) ///Whether or not this atom shows screentips when hovered over -#define NO_SCREENTIPS_1 (1<<4) +#define NO_SCREENTIPS_1 (1<<3) /// Prevent clicking things below it on the same turf eg. doors/ fulltile windows -#define PREVENT_CLICK_UNDER_1 (1<<5) +#define PREVENT_CLICK_UNDER_1 (1<<4) ///specifies that this atom is a hologram that isnt real -#define HOLOGRAM_1 (1<<6) +#define HOLOGRAM_1 (1<<5) ///Whether /atom/Initialize() has already run for the object -#define INITIALIZED_1 (1<<7) +#define INITIALIZED_1 (1<<6) /// was this spawned by an admin? used for stat tracking stuff. -#define ADMIN_SPAWNED_1 (1<<8) +#define ADMIN_SPAWNED_1 (1<<7) /// should not get harmed if this gets caught by an explosion? -#define PREVENT_CONTENTS_EXPLOSION_1 (1<<9) +#define PREVENT_CONTENTS_EXPLOSION_1 (1<<8) /// Should this object be paintable with very dark colors? -#define ALLOW_DARK_PAINTS_1 (1<<10) +#define ALLOW_DARK_PAINTS_1 (1<<9) /// Should this object be unpaintable? -#define UNPAINTABLE_1 (1<<11) +#define UNPAINTABLE_1 (1<<10) /// Is the thing currently spinning? -#define IS_SPINNING_1 (1<<12) +#define IS_SPINNING_1 (1<<11) /// Is this atom on top of another atom, and as such has click priority? -#define IS_ONTOP_1 (1<<13) +#define IS_ONTOP_1 (1<<12) /// Is this atom immune to being dusted by the supermatter? -#define SUPERMATTER_IGNORES_1 (1<<14) +#define SUPERMATTER_IGNORES_1 (1<<13) /// If a turf can be made dirty at roundstart. This is also used in areas. -#define CAN_BE_DIRTY_1 (1<<15) +#define CAN_BE_DIRTY_1 (1<<14) /// Should we use the initial icon for display? Mostly used by overlay only objects -#define HTML_USE_INITAL_ICON_1 (1<<16) +#define HTML_USE_INITAL_ICON_1 (1<<15) /// Can players recolor this in-game via vendors (and maybe more if support is added)? -#define IS_PLAYER_COLORABLE_1 (1<<17) +#define IS_PLAYER_COLORABLE_1 (1<<16) /// Whether or not this atom has contextual screentips when hovered OVER -#define HAS_CONTEXTUAL_SCREENTIPS_1 (1<<18) +#define HAS_CONTEXTUAL_SCREENTIPS_1 (1<<17) /// Whether or not this atom is storing contents for a disassociated storage object -#define HAS_DISASSOCIATED_STORAGE_1 (1<<19) +#define HAS_DISASSOCIATED_STORAGE_1 (1<<18) /// If this atom has experienced a decal element "init finished" sourced appearance update /// We use this to ensure stacked decals don't double up appearance updates for no rasin /// Flag as an optimization, don't make this a trait without profiling /// Yes I know this is a stupid flag, no you can't take him from me -#define DECAL_INIT_UPDATE_EXPERIENCED_1 (1<<20) +#define DECAL_INIT_UPDATE_EXPERIENCED_1 (1<<19) // Update flags for [/atom/proc/update_appearance] /// Update the atom's name diff --git a/code/__DEFINES/_helpers.dm b/code/__DEFINES/_helpers.dm index c6a5b860e9a..f1b1b21df33 100644 --- a/code/__DEFINES/_helpers.dm +++ b/code/__DEFINES/_helpers.dm @@ -25,17 +25,8 @@ } \ sleep(time); -#ifdef EXPERIMENT_515_DONT_CACHE_REF /// Takes a datum as input, returns its ref string #define text_ref(datum) ref(datum) -#else -/// Takes a datum as input, returns its ref string, or a cached version of it -/// This allows us to cache \ref creation, which ensures it'll only ever happen once per datum, saving string tree time -/// It is slightly less optimal then a []'d datum, but the cost is massively outweighed by the potential savings -/// It will only work for datums mind, for datum reasons -/// : because of the embedded typecheck -#define text_ref(datum) (isdatum(datum) ? (datum:cached_ref ||= "\ref[datum]") : ("\ref[datum]")) -#endif // Refs contain a type id within their string that can be used to identify byond types. // Custom types that we define don't get a unique id, but this is useful for identifying diff --git a/code/__DEFINES/mobfactions.dm b/code/__DEFINES/mobfactions.dm index a7dcbee90e8..d503a499d0d 100644 --- a/code/__DEFINES/mobfactions.dm +++ b/code/__DEFINES/mobfactions.dm @@ -21,6 +21,8 @@ #define FACTION_CLOWN "clowns" /// Headslugs #define FACTION_CREATURE "creature" +/// Cats +#define FACTION_CAT "cat" /// Faithless and shadowpeople #define FACTION_FAITHLESS "faithless" /// Gnomes diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm index 91b20a45f21..5e2fbdf0553 100644 --- a/code/__DEFINES/obj_flags.dm +++ b/code/__DEFINES/obj_flags.dm @@ -14,6 +14,7 @@ #define BLOCKS_CONSTRUCTION_DIR (1<<10) //! Does this object prevent same-direction things from being built on it? #define IGNORE_DENSITY (1<<11) //! Can we ignore density when building on this object? (for example, directional windows and grilles) #define INFINITE_RESKIN (1<<12) // We can reskin this item infinitely +#define CONDUCTS_ELECTRICITY (1<<13) //! Can this object conduct electricity? // If you add new ones, be sure to add them to /obj/Initialize as well for complete mapping support diff --git a/code/__DEFINES/religion.dm b/code/__DEFINES/religion.dm index 0db0961c12d..8dfdc2309cc 100644 --- a/code/__DEFINES/religion.dm +++ b/code/__DEFINES/religion.dm @@ -9,6 +9,9 @@ #define ALIGNMENT_NEUT "neutral" #define ALIGNMENT_EVIL "evil" +/// the probability, when not overridden by sects, for a bible's bless effect to trigger on a smack +#define DEFAULT_SMACK_CHANCE 60 + //## which weapons should we use? // unused but for clarity diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index 4aa6f4a74a4..c24e23bf23e 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -440,6 +440,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Trait used by fugu glands to avoid double buffing #define TRAIT_FUGU_GLANDED "fugu_glanded" +/// Trait that tracks if something has been renamed. Typically holds a REF() to the object itself (AKA src) for wide addition/removal. +#define TRAIT_WAS_RENAMED "was_renamed" + /// When someone with this trait fires a ranged weapon, their fire delays and click cooldowns are halved #define TRAIT_DOUBLE_TAP "double_tap" diff --git a/code/__DEFINES/traits/sources.dm b/code/__DEFINES/traits/sources.dm index 6be8cdf3f8d..d472b9bed26 100644 --- a/code/__DEFINES/traits/sources.dm +++ b/code/__DEFINES/traits/sources.dm @@ -271,3 +271,6 @@ #define CLOWNOP_TRAIT "clownop" #define ANALYZER_TRAIT "analyzer_trait" + +/// Trait when something was labelled by a pen. +#define PEN_LABEL_TRAIT "pen_label" diff --git a/code/__DEFINES/vv.dm b/code/__DEFINES/vv.dm index 039533cffa5..133b191e5ec 100644 --- a/code/__DEFINES/vv.dm +++ b/code/__DEFINES/vv.dm @@ -153,6 +153,7 @@ #define VV_HK_SET_SPECIES "setspecies" #define VV_HK_PURRBATION "purrbation" #define VV_HK_APPLY_DNA_INFUSION "apply_dna_infusion" +#define VV_HK_TURN_INTO_MMI "turn_into_mmi" // misc #define VV_HK_SPACEVINE_PURGE "spacevine_purge" diff --git a/code/__HELPERS/_auxtools_api.dm b/code/__HELPERS/_auxtools_api.dm index 8dbd58f2eed..0117ded4c51 100644 --- a/code/__HELPERS/_auxtools_api.dm +++ b/code/__HELPERS/_auxtools_api.dm @@ -10,7 +10,7 @@ GLOBAL_PROTECT(auxtools_initialized) }\ if (GLOB.auxtools_initialized[LIB] != AUXTOOLS_FULL_INIT) {\ if (fexists(LIB)) {\ - var/string = LIBCALL(LIB,"auxtools_init")();\ + var/string = call_ext(LIB,"auxtools_init")();\ if(findtext(string, "SUCCESS")) {\ GLOB.auxtools_initialized[LIB] = AUXTOOLS_FULL_INIT;\ } else {\ @@ -23,13 +23,13 @@ GLOBAL_PROTECT(auxtools_initialized) #define AUXTOOLS_SHUTDOWN(LIB)\ if (GLOB.auxtools_initialized[LIB] == AUXTOOLS_FULL_INIT && fexists(LIB)){\ - LIBCALL(LIB,"auxtools_shutdown")();\ + call_ext(LIB,"auxtools_shutdown")();\ GLOB.auxtools_initialized[LIB] = AUXTOOLS_PARTIAL_INIT;\ }\ #define AUXTOOLS_FULL_SHUTDOWN(LIB)\ if (GLOB.auxtools_initialized[LIB] && fexists(LIB)){\ - LIBCALL(LIB,"auxtools_full_shutdown")();\ + call_ext(LIB,"auxtools_full_shutdown")();\ GLOB.auxtools_initialized[LIB] = FALSE;\ } diff --git a/code/__HELPERS/logging/_logging.dm b/code/__HELPERS/logging/_logging.dm index e6085c0cdc1..4ef291c5750 100644 --- a/code/__HELPERS/logging/_logging.dm +++ b/code/__HELPERS/logging/_logging.dm @@ -98,6 +98,7 @@ GLOBAL_LIST_INIT(testing_global_profiler, list("_PROFILE_NAME" = "Global")) /atom/proc/log_message(message, message_type, color = null, log_globally = TRUE) if(!log_globally) return + //SKYRAT EDIT ADDITION BEGIN #ifndef SPACEMAN_DMM if(CONFIG_GET(flag/sql_game_log) && CONFIG_GET(flag/sql_enabled)) @@ -116,7 +117,7 @@ GLOBAL_LIST_INIT(testing_global_profiler, list("_PROFILE_NAME" = "Global")) return #endif //SKYRAT EDIT ADDITION END - var/log_text = "[key_name(src)] [message] [loc_name(src)]" + var/log_text = "[key_name_and_tag(src)] [message] [loc_name(src)]" switch(message_type) /// ship both attack logs and victim logs to the end of round attack.log just to ensure we don't lose information if(LOG_ATTACK, LOG_VICTIM) @@ -266,6 +267,13 @@ GLOBAL_LIST_INIT(testing_global_profiler, list("_PROFILE_NAME" = "Global")) /proc/key_name_admin(whom, include_name = TRUE) return key_name(whom, TRUE, include_name) +/proc/key_name_and_tag(whom, include_link = null, include_name = TRUE) + var/tag = "!tagless!" // whom can be null in key_name() so lets set this as a safety + if(isatom(whom)) + var/atom/subject = whom + tag = subject.tag + return "[key_name(whom, include_link, include_name)] ([tag])" + /proc/loc_name(atom/A) if(!istype(A)) return "(INVALID LOCATION)" diff --git a/code/__HELPERS/logging/mob.dm b/code/__HELPERS/logging/mob.dm index 0a48833a261..9553a15addf 100644 --- a/code/__HELPERS/logging/mob.dm +++ b/code/__HELPERS/logging/mob.dm @@ -18,10 +18,11 @@ // Cannot use the list as a map if the key is a number, so we stringify it (thank you BYOND) var/smessage_type = num2text(message_type, MAX_BITFLAG_DIGITS) + var/datum/player_details/client_details = client?.player_details - if(client) - if(!islist(client.player_details.logging[smessage_type])) - client.player_details.logging[smessage_type] = list() + if(!isnull(client_details)) + if(!islist(client_details.logging[smessage_type])) + client_details.logging[smessage_type] = list() if(!islist(logging[smessage_type])) logging[smessage_type] = list() @@ -52,7 +53,7 @@ if(LOG_RADIO_EMOTE) colored_message = "(RADIOEMOTE) [colored_message]" - var/list/timestamped_message = list("\[[time_stamp(format = "YYYY-MM-DD hh:mm:ss")]\] [key_name(src)] [loc_name(src)] (Event #[LAZYLEN(logging[smessage_type])])" = colored_message) + var/list/timestamped_message = list("\[[time_stamp(format = "YYYY-MM-DD hh:mm:ss")]\] [key_name_and_tag(src)] [loc_name(src)] (Event #[LAZYLEN(logging[smessage_type])])" = colored_message) logging[smessage_type] += timestamped_message diff --git a/code/__HELPERS/nameof.dm b/code/__HELPERS/nameof.dm index 7cd5777f465..5a2fd60e710 100644 --- a/code/__HELPERS/nameof.dm +++ b/code/__HELPERS/nameof.dm @@ -8,8 +8,4 @@ /** * NAMEOF that actually works in static definitions because src::type requires src to be defined */ -#if DM_VERSION >= 515 #define NAMEOF_STATIC(datum, X) (nameof(type::##X)) -#else -#define NAMEOF_STATIC(datum, X) (#X || ##datum.##X) -#endif diff --git a/code/__byond_version_compat.dm b/code/__byond_version_compat.dm index 4cf6c13654b..645499db65b 100644 --- a/code/__byond_version_compat.dm +++ b/code/__byond_version_compat.dm @@ -1,52 +1,21 @@ // This file contains defines allowing targeting byond versions newer than the supported //Update this whenever you need to take advantage of more recent byond features -#define MIN_COMPILER_VERSION 514 -#define MIN_COMPILER_BUILD 1556 +#define MIN_COMPILER_VERSION 515 +#define MIN_COMPILER_BUILD 1609 #if (DM_VERSION < MIN_COMPILER_VERSION || DM_BUILD < MIN_COMPILER_BUILD) && !defined(SPACEMAN_DMM) //Don't forget to update this part #error Your version of BYOND is too out-of-date to compile this project. Go to https://secure.byond.com/download and update. -#error You need version 514.1556 or higher -#endif - -#if (DM_VERSION == 514 && DM_BUILD > 1575 && DM_BUILD <= 1577) -#error Your version of BYOND currently has a crashing issue that will prevent you from running Dream Daemon test servers. -#error We require developers to test their content, so an inability to test means we cannot allow the compile. -#error Please consider downgrading to 514.1575 or lower. +#error You need version 515.1609 or higher #endif // Keep savefile compatibilty at minimum supported level -#if DM_VERSION >= 515 /savefile/byond_version = MIN_COMPILER_VERSION -#endif - -// 515 split call for external libraries into call_ext -#if DM_VERSION < 515 -#define LIBCALL call -#else -#define LIBCALL call_ext -#endif -// So we want to have compile time guarantees these methods exist on local type, unfortunately 515 killed the .proc/procname and .verb/verbname syntax so we have to use nameof() +// So we want to have compile time guarantees these methods exist on local type +// We use wrappers for this in case some part of the api ever changes, and to make their function more clear // For the record: GLOBAL_VERB_REF would be useless as verbs can't be global. -#if DM_VERSION < 515 - -/// Call by name proc references, checks if the proc exists on either this type or as a global proc. -#define PROC_REF(X) (.proc/##X) -/// Call by name verb references, checks if the verb exists on either this type or as a global verb. -#define VERB_REF(X) (.verb/##X) - -/// Call by name proc reference, checks if the proc exists on either the given type or as a global proc -#define TYPE_PROC_REF(TYPE, X) (##TYPE.proc/##X) -/// Call by name verb reference, checks if the verb exists on either the given type or as a global verb -#define TYPE_VERB_REF(TYPE, X) (##TYPE.verb/##X) - -/// Call by name proc reference, checks if the proc is an existing global proc -#define GLOBAL_PROC_REF(X) (/proc/##X) - -#else - /// Call by name proc references, checks if the proc exists on either this type or as a global proc. #define PROC_REF(X) (nameof(.proc/##X)) /// Call by name verb references, checks if the verb exists on either this type or as a global verb. @@ -60,16 +29,11 @@ /// Call by name proc reference, checks if the proc is an existing global proc #define GLOBAL_PROC_REF(X) (/proc/##X) -#endif - -#if (DM_VERSION == 515) /// fcopy will crash on 515 linux if given a non-existant file, instead of returning 0 like on 514 linux or 515 windows /// var case matches documentation for fcopy. /world/proc/__fcopy(Src, Dst) if (istext(Src) && !fexists(Src)) return 0 return fcopy(Src, Dst) - -#define fcopy(Src, Dst) world.__fcopy(Src, Dst) -#endif +#define fcopy(Src, Dst) world.__fcopy(Src, Dst) diff --git a/code/_experiments.dm b/code/_experiments.dm index dfb7ec0a167..8cc5edb429c 100644 --- a/code/_experiments.dm +++ b/code/_experiments.dm @@ -3,32 +3,20 @@ // Any flag you see here can be flipped with the `-D` CLI argument. // For example, if you want to enable EXPERIMENT_MY_COOL_FEATURE, compile with -DEXPERIMENT_MY_COOL_FEATURE -// EXPERIMENT_515_QDEL_HARD_REFERENCE -// - Hold a hard reference for qdeleted items, and check ref_count, rather than using refs. Requires 515+. - -// EXPERIMENT_515_DONT_CACHE_REF -// - Avoids `text_ref` caching, aided by improvements to ref() speed in 515. +// EXPERIMENT_MY_COOL_FEATURE +// - Does something really cool, just so neat, absolutely banging, gaming and chill #if DM_VERSION < 515 -// You can't X-macro custom names :( -#ifdef EXPERIMENT_515_QDEL_HARD_REFERENCE -#warn EXPERIMENT_515_QDEL_HARD_REFERENCE is only available on 515+ -#undef EXPERIMENT_515_QDEL_HARD_REFERENCE -#endif - -#ifdef EXPERIMENT_515_DONT_CACHE_REF -#warn EXPERIMENT_515_DONT_CACHE_REF is only available on 515+ -#undef EXPERIMENT_515_DONT_CACHE_REF -#endif - + // You can't X-macro custom names :( + #ifdef EXPERIMENT_MY_COOL_FEATURE + #warn EXPERIMENT_MY_COOL_FEATURE is only available on 515+ + #undef EXPERIMENT_MY_COOL_FEATURE + #endif #elif defined(UNIT_TESTS) - -#define EXPERIMENT_515_QDEL_HARD_REFERENCE -#define EXPERIMENT_515_DONT_CACHE_REF - + #define EXPERIMENT_MY_COOL_FEATURE #endif #if DM_VERSION >= 516 -#error "Remove all 515 experiments" + #error "Remove all 515 experiments" #endif diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 796def0de16..75b5cb6ddc8 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -119,7 +119,6 @@ DEFINE_BITFIELD(flags_1, list( "ALLOW_DARK_PAINTS_1" = ALLOW_DARK_PAINTS_1, "ATMOS_IS_PROCESSING_1" = ATMOS_IS_PROCESSING_1, "CAN_BE_DIRTY_1" = CAN_BE_DIRTY_1, - "CONDUCT_1" = CONDUCT_1, "HAS_CONTEXTUAL_SCREENTIPS_1" = HAS_CONTEXTUAL_SCREENTIPS_1, "HAS_DISASSOCIATED_STORAGE_1" = HAS_DISASSOCIATED_STORAGE_1, "HOLOGRAM_1" = HOLOGRAM_1, @@ -127,8 +126,8 @@ DEFINE_BITFIELD(flags_1, list( "IS_ONTOP_1" = IS_ONTOP_1, "IS_PLAYER_COLORABLE_1" = IS_PLAYER_COLORABLE_1, "IS_SPINNING_1" = IS_SPINNING_1, - "NODECONSTRUCT_1" = NODECONSTRUCT_1, "NO_SCREENTIPS_1" = NO_SCREENTIPS_1, + "NODECONSTRUCT_1" = NODECONSTRUCT_1, "ON_BORDER_1" = ON_BORDER_1, "PREVENT_CLICK_UNDER_1" = PREVENT_CLICK_UNDER_1, "PREVENT_CONTENTS_EXPLOSION_1" = PREVENT_CONTENTS_EXPLOSION_1, @@ -287,18 +286,19 @@ DEFINE_BITFIELD(movement_type, list( )) DEFINE_BITFIELD(obj_flags, list( - "IN_USE" = IN_USE, - "EMAGGED" = EMAGGED, - "CAN_BE_HIT" = CAN_BE_HIT, - "DANGEROUS_POSSESSION" = DANGEROUS_POSSESSION, - "UNIQUE_RENAME" = UNIQUE_RENAME, - "BLOCK_Z_OUT_DOWN" = BLOCK_Z_OUT_DOWN, - "BLOCK_Z_OUT_UP" = BLOCK_Z_OUT_UP, "BLOCK_Z_IN_DOWN" = BLOCK_Z_IN_DOWN, "BLOCK_Z_IN_UP" = BLOCK_Z_IN_UP, - "BLOCKS_CONSTRUCTION" = BLOCKS_CONSTRUCTION, + "BLOCK_Z_OUT_DOWN" = BLOCK_Z_OUT_DOWN, + "BLOCK_Z_OUT_UP" = BLOCK_Z_OUT_UP, "BLOCKS_CONSTRUCTION_DIR" = BLOCKS_CONSTRUCTION_DIR, + "BLOCKS_CONSTRUCTION" = BLOCKS_CONSTRUCTION, + "CAN_BE_HIT" = CAN_BE_HIT, + "CONDUCTS_ELECTRICITY" = CONDUCTS_ELECTRICITY, + "DANGEROUS_POSSESSION" = DANGEROUS_POSSESSION, + "EMAGGED" = EMAGGED, "IGNORE_DENSITY" = IGNORE_DENSITY, + "IN_USE" = IN_USE, + "UNIQUE_RENAME" = UNIQUE_RENAME, )) DEFINE_BITFIELD(pass_flags, list( diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 79facdd304c..ac415ca6886 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -20,7 +20,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_FOOD_FRIED" = TRAIT_FOOD_FRIED, "TRAIT_FOOD_GRILLED" = TRAIT_FOOD_GRILLED, "TRAIT_FOOD_SILVER" = TRAIT_FOOD_SILVER, - "TRAIT_KEEP_TOGETHER" = TRAIT_KEEP_TOGETHER,TRAIT_CUSTOMIZABLE_REAGENT_HOLDER, + "TRAIT_KEEP_TOGETHER" = TRAIT_KEEP_TOGETHER, "TRAIT_LIGHTING_DEBUGGED" = TRAIT_LIGHTING_DEBUGGED, "TRAIT_MAT_TRANSMUTED" = TRAIT_MAT_TRANSMUTED, "TRAIT_RECENTLY_COINED" = TRAIT_RECENTLY_COINED, @@ -61,6 +61,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_UNDERFLOOR" = TRAIT_UNDERFLOOR, "TRAIT_UNIQUE_IMMERSE" = TRAIT_UNIQUE_IMMERSE, "TRAIT_VOIDSTORM_IMMUNE" = TRAIT_VOIDSTORM_IMMUNE, + "TRAIT_WAS_RENAMED" = TRAIT_WAS_RENAMED, "TRAIT_WEATHER_IMMUNE" = TRAIT_WEATHER_IMMUNE, ), /datum/controller/subsystem/economy = list( diff --git a/code/controllers/globals.dm b/code/controllers/globals.dm index 72b00c7d868..365fdab921d 100644 --- a/code/controllers/globals.dm +++ b/code/controllers/globals.dm @@ -14,7 +14,14 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars) GLOB = src var/datum/controller/exclude_these = new - gvars_datum_in_built_vars = exclude_these.vars + list(NAMEOF(src, gvars_datum_protected_varlist), NAMEOF(src, gvars_datum_in_built_vars), NAMEOF(src, gvars_datum_init_order)) + // I know this is dumb but the nested vars list hangs a ref to the datum. This fixes that + var/list/controller_vars = exclude_these.vars.Copy() + controller_vars["vars"] = null + gvars_datum_in_built_vars = controller_vars + list(NAMEOF(src, gvars_datum_protected_varlist), NAMEOF(src, gvars_datum_in_built_vars), NAMEOF(src, gvars_datum_init_order)) + +#if DM_VERSION >= 515 && DM_BUILD > 1620 + #warn datum.vars hanging a ref should now be fixed, there should be no reason to remove the vars list from our controller's vars list anymore +#endif QDEL_IN(exclude_these, 0) //signal logging isn't ready Initialize() diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm index d21e2da97d2..66d3f2e5e15 100644 --- a/code/controllers/subsystem/garbage.dm +++ b/code/controllers/subsystem/garbage.dm @@ -145,12 +145,6 @@ SUBSYSTEM_DEF(garbage) pass_counts[i] = 0 fail_counts[i] = 0 -#ifdef EXPERIMENT_515_QDEL_HARD_REFERENCE -// 1 from the hard reference in the queue, and 1 from the variable used before this -#define IS_DELETED(datum, _) (refcount(##datum) == 2) -#else -#define IS_DELETED(datum, gcd_at_time) (isnull(##datum) || ##datum.gc_destroyed != gcd_at_time) -#endif /datum/controller/subsystem/garbage/proc/HandleQueue(level = GC_QUEUE_FILTER) if (level == GC_QUEUE_FILTER) @@ -168,7 +162,7 @@ SUBSYSTEM_DEF(garbage) lastlevel = level - //We do this rather then for(var/refID in queue) because that sort of for loop copies the whole list. + //We do this rather then for(var/list/ref_info in queue) because that sort of for loop copies the whole list. //Normally this isn't expensive, but the gc queue can grow to 40k items, and that gets costly/causes overrun. for (var/i in 1 to length(queue)) var/list/L = queue[i] @@ -183,17 +177,11 @@ SUBSYSTEM_DEF(garbage) break // Everything else is newer, skip them count++ -#ifdef EXPERIMENT_515_QDEL_HARD_REFERENCE var/datum/D = L[GC_QUEUE_ITEM_REF] -#else - var/GCd_at_time = L[GC_QUEUE_ITEM_GCD_DESTROYED] - var/refID = L[GC_QUEUE_ITEM_REF] - var/datum/D - D = locate(refID) -#endif - - if (IS_DELETED(D, GCd_at_time)) // So if something else coincidently gets the same ref, it's not deleted by mistake + // 1 from the hard reference in the queue, and 1 from the variable used before this + // If that's all we've got, send er off + if (refcount(D) == 2) ++gcedlasttick ++totalgcs pass_counts[level]++ @@ -228,10 +216,9 @@ SUBSYSTEM_DEF(garbage) var/datum/qdel_item/I = items[type] var/message = "## TESTING: GC: -- [text_ref(D)] | [type] was unable to be GC'd --" -#if DM_VERSION >= 515 message = "[message] (ref count of [refcount(D)])" -#endif log_world(message) + var/detail = D.dump_harddel_info() if(detail) LAZYADD(I.extra_details, detail) @@ -270,8 +257,6 @@ SUBSYSTEM_DEF(garbage) queue.Cut(1,count+1) count = 0 -#undef IS_DELETED - /datum/controller/subsystem/garbage/proc/Queue(datum/D, level = GC_QUEUE_FILTER) if (isnull(D)) return @@ -280,21 +265,11 @@ SUBSYSTEM_DEF(garbage) return var/queue_time = world.time -#ifdef EXPERIMENT_515_QDEL_HARD_REFERENCE - var/refid = D if (D.gc_destroyed <= 0) D.gc_destroyed = queue_time -#else - var/refid = text_ref(D) - var/static/uid = 0 - if (D.gc_destroyed <= 0) - uid = WRAP(uid+1, 1, SHORT_REAL_LIMIT - 1) - D.gc_destroyed = uid -#endif var/list/queue = queues[level] - - queue[++queue.len] = list(queue_time, refid, D.gc_destroyed) // not += for byond reasons + queue[++queue.len] = list(queue_time, D, D.gc_destroyed) // not += for byond reasons //this is mainly to separate things profile wise. /datum/controller/subsystem/garbage/proc/HardDelete(datum/D) diff --git a/code/datums/callback.dm b/code/datums/callback.dm index 026762d58f7..cf90582115d 100644 --- a/code/datums/callback.dm +++ b/code/datums/callback.dm @@ -104,12 +104,6 @@ if (!object) return -#if DM_VERSION <= 514 - if(istext(object) && object != GLOBAL_PROC) - to_chat(usr, "[object] may be an external library. Calling external libraries is disallowed.", confidential = TRUE) - return -#endif - var/list/calling_arguments = arguments if (length(args)) if (length(arguments)) @@ -147,12 +141,6 @@ if (!object) return -#if DM_VERSION <= 514 - if(istext(object) && object != GLOBAL_PROC) - to_chat(usr, "[object] may be an external library. Calling external libraries is disallowed.", confidential = TRUE) - return -#endif - var/list/calling_arguments = arguments if (length(args)) if (length(arguments)) diff --git a/code/datums/components/boss_music.dm b/code/datums/components/boss_music.dm index 37f438f0b62..56307d12655 100644 --- a/code/datums/components/boss_music.dm +++ b/code/datums/components/boss_music.dm @@ -40,7 +40,7 @@ UnregisterSignal(parent, COMSIG_HOSTILE_FOUND_TARGET) return ..() -///Handles giving the boss music to a new target the fauna has recieved. +///Handles giving the boss music to a new target the fauna has received. ///Keeps track of them to not repeatedly overwrite its own track. /datum/component/boss_music/proc/on_target_found(atom/source, mob/new_target) SIGNAL_HANDLER diff --git a/code/datums/components/crafting/ranged_weapon.dm b/code/datums/components/crafting/ranged_weapon.dm index a8b64f428d9..6a6e44d2529 100644 --- a/code/datums/components/crafting/ranged_weapon.dm +++ b/code/datums/components/crafting/ranged_weapon.dm @@ -19,8 +19,8 @@ time = 4 SECONDS category = CAT_WEAPON_RANGED -/datum/crafting_recipe/reciever - name = "Modular Rifle Reciever" +/datum/crafting_recipe/receiver + name = "Modular Rifle Receiver" tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER, TOOL_SAW) result = /obj/item/weaponcrafting/receiver reqs = list( diff --git a/code/datums/components/food/ice_cream_holder.dm b/code/datums/components/food/ice_cream_holder.dm index 3e212c52b9a..29625a8a321 100644 --- a/code/datums/components/food/ice_cream_holder.dm +++ b/code/datums/components/food/ice_cream_holder.dm @@ -77,8 +77,7 @@ /datum/component/ice_cream_holder/proc/on_update_name(atom/source, updates) SIGNAL_HANDLER - var/obj/obj = source - if(istype(obj) && obj.renamedByPlayer) //Renamed by the player. + if(HAS_TRAIT(source, TRAIT_WAS_RENAMED)) return var/scoops_len = length(scoops) if(!scoops_len) @@ -93,8 +92,7 @@ /datum/component/ice_cream_holder/proc/on_update_desc(atom/source, updates) SIGNAL_HANDLER - var/obj/obj = source - if(istype(obj) && obj.renamedByPlayer) //Renamed by the player. + if(HAS_TRAIT(source, TRAIT_WAS_RENAMED)) return var/scoops_len = length(scoops) if(!scoops_len) diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm index 1148e2b5993..e4027e4565c 100644 --- a/code/datums/components/tackle.dm +++ b/code/datums/components/tackle.dm @@ -154,15 +154,17 @@ var/mob/living/carbon/target = hit var/tackle_word = isfeline(user) ? "pounce" : "tackle" //If cat, "pounce" instead of "tackle". // SKYRAT EDIT - FELINE TRAITS - ORIGINAL : var/tackle_word = isfelinid(user) ? "pounce" : "tackle" + var/roll = rollTackle(target) + tackling = FALSE + tackle.gentle = TRUE + if(target.check_block(user, 0, user.name, attack_type = LEAP_ATTACK)) user.visible_message(span_danger("[user]'s tackle is blocked by [target], softening the effect!"), span_userdanger("Your tackle is blocked by [target], softening the effect!"), ignored_mobs = target) to_chat(target, span_userdanger("[target] blocks [user]'s tackle attempt, softening the effect!")) neutral_outcome(user, target, tackle_word) //Forces a neutral outcome so you're not screwed too much from being blocked while tackling - return + return COMPONENT_MOVABLE_IMPACT_FLIP_HITPUSH + - var/roll = rollTackle(target) - tackling = FALSE - tackle.gentle = TRUE switch(roll) if(-INFINITY to -1) diff --git a/code/datums/components/takes_reagent_appearance.dm b/code/datums/components/takes_reagent_appearance.dm index 6505290b4cb..fd1312ba112 100644 --- a/code/datums/components/takes_reagent_appearance.dm +++ b/code/datums/components/takes_reagent_appearance.dm @@ -89,10 +89,10 @@ * * Returns [NONE] if the name was reset to initial state */ /datum/component/takes_reagent_appearance/proc/update_name(datum/glass_style/style) - var/obj/item/item_parent = parent - if(item_parent.renamedByPlayer) + if(HAS_TRAIT(parent, TRAIT_WAS_RENAMED)) return NONE + var/obj/item/item_parent = parent if(isnull(style)) // no style (reset) item_parent.name = initial(item_parent.name) @@ -111,10 +111,10 @@ * * Returns [NONE] if the description was reset to initial state */ /datum/component/takes_reagent_appearance/proc/update_desc(datum/glass_style/style) - var/obj/item/item_parent = parent - if(item_parent.renamedByPlayer) + if(HAS_TRAIT(parent, TRAIT_WAS_RENAMED)) return NONE + var/obj/item/item_parent = parent if(isnull(style)) // no style (reset) item_parent.desc = initial(item_parent.desc) diff --git a/code/datums/datum.dm b/code/datums/datum.dm index 75605917ef8..a0fcd94c89e 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -44,13 +44,6 @@ /// Datum level flags var/datum_flags = NONE -#ifndef EXPERIMENT_515_DONT_CACHE_REF - /// A cached version of our \ref - /// The brunt of \ref costs are in creating entries in the string tree (a tree of immutable strings) - /// This avoids doing that more then once per datum by ensuring ref strings always have a reference to them after they're first pulled - var/cached_ref -#endif - /// A weak reference to another datum var/datum/weakref/weak_reference diff --git a/code/datums/diseases/magnitis.dm b/code/datums/diseases/magnitis.dm index 52156b968f9..dbe7d09cbb5 100644 --- a/code/datums/diseases/magnitis.dm +++ b/code/datums/diseases/magnitis.dm @@ -25,7 +25,7 @@ to_chat(affected_mob, span_danger("Your skin tingles with energy.")) if(SPT_PROB(1, seconds_per_tick)) for(var/obj/nearby_object in orange(2, affected_mob)) - if(nearby_object.anchored || !(nearby_object.flags_1 & CONDUCT_1)) + if(nearby_object.anchored || !(nearby_object.obj_flags & CONDUCTS_ELECTRICITY)) continue var/move_dir = get_dir(nearby_object, affected_mob) nearby_object.Move(get_step(nearby_object, move_dir), move_dir) @@ -40,7 +40,7 @@ if(SPT_PROB(2, seconds_per_tick)) to_chat(affected_mob, span_danger("You feel a light shock course through your body.")) for(var/obj/nearby_object in orange(4, affected_mob)) - if(nearby_object.anchored || !(nearby_object.flags_1 & CONDUCT_1)) + if(nearby_object.anchored || !(nearby_object.obj_flags & CONDUCTS_ELECTRICITY)) continue for(var/i in 1 to rand(1, 2)) nearby_object.throw_at(affected_mob, 4, 3) @@ -55,7 +55,7 @@ if(SPT_PROB(4, seconds_per_tick)) to_chat(affected_mob, span_danger("You feel a powerful shock course through your body.")) for(var/obj/nearby_object in orange(6, affected_mob)) - if(nearby_object.anchored || !(nearby_object.flags_1 & CONDUCT_1)) + if(nearby_object.anchored || !(nearby_object.obj_flags & CONDUCTS_ELECTRICITY)) continue for(var/i in 1 to rand(1, 3)) nearby_object.throw_at(affected_mob, 6, 5) // I really wanted to use addtimers to stagger out when everything gets thrown but it would probably cause a lot of lag. diff --git a/code/datums/elements/climbable.dm b/code/datums/elements/climbable.dm index b26990c5911..56c16f303c4 100644 --- a/code/datums/elements/climbable.dm +++ b/code/datums/elements/climbable.dm @@ -23,7 +23,6 @@ RegisterSignal(target, COMSIG_ATOM_ATTACK_HAND, PROC_REF(attack_hand)) RegisterSignal(target, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) RegisterSignal(target, COMSIG_MOUSEDROPPED_ONTO, PROC_REF(mousedrop_receive)) - RegisterSignal(target, COMSIG_ATOM_BUMPED, PROC_REF(try_speedrun)) ADD_TRAIT(target, TRAIT_CLIMBABLE, ELEMENT_TRAIT(type)) /datum/element/climbable/Detach(datum/target) @@ -104,8 +103,6 @@ var/x_dist = (text2num(LAZYACCESS(modifiers, ICON_X)) - world.icon_size/2) * (climbed_thing.dir & WEST ? -1 : 1) var/y_dist = (text2num(LAZYACCESS(modifiers, ICON_Y)) - world.icon_size/2) * (climbed_thing.dir & SOUTH ? -1 : 1) dir_step = (x_dist >= y_dist ? (EAST|WEST) : (NORTH|SOUTH)) & climbed_thing.dir - else //user is being moved by a forced_movement datum. dir_step will be the direction to the forced movement target. - dir_step = get_dir(user, user.force_moving.target) else dir_step = get_dir(user, get_step(climbed_thing, climbed_thing.dir)) . = step(user, dir_step) @@ -121,11 +118,3 @@ var/mob/living/living_target = dropped_atom if(living_target.mobility_flags & MOBILITY_MOVE) INVOKE_ASYNC(src, PROC_REF(climb_structure), climbed_thing, living_target, params) - -///Tries to climb onto the target if the forced movement of the mob allows it -/datum/element/climbable/proc/try_speedrun(datum/source, mob/bumpee) - SIGNAL_HANDLER - if(!istype(bumpee)) - return - if(bumpee.force_moving?.allow_climbing) - do_climb(source, bumpee) diff --git a/code/datums/forced_movement.dm b/code/datums/forced_movement.dm deleted file mode 100644 index 407f258281c..00000000000 --- a/code/datums/forced_movement.dm +++ /dev/null @@ -1,89 +0,0 @@ -//Just new and forget -//Depricated, use movement loops instead. Exists to support things that want to move more then 10 times a second -/datum/forced_movement - var/atom/movable/victim - var/atom/target - var/last_processed - var/steps_per_tick - var/allow_climbing - var/datum/callback/on_step - var/moved_at_all = FALSE - //as fast as ssfastprocess -/datum/forced_movement/New(atom/movable/_victim, atom/_target, _steps_per_tick = 0.5, _allow_climbing = FALSE, datum/callback/_on_step = null) - victim = _victim - target = _target - steps_per_tick = _steps_per_tick - allow_climbing = _allow_climbing - on_step = _on_step - - . = ..() - - if(_victim && _target && _steps_per_tick && !_victim.force_moving) - last_processed = world.time - _victim.force_moving = src - START_PROCESSING(SSfastprocess, src) - else - qdel(src) //if you want to overwrite the current forced movement, call qdel(victim.force_moving) before creating this - -/datum/forced_movement/Destroy() - if(victim.force_moving == src) - victim.force_moving = null - if(moved_at_all) - victim.forceMove(victim.loc) //get the side effects of moving here that require us to currently not be force_moving aka reslipping on ice - STOP_PROCESSING(SSfastprocess, src) - victim = null - target = null - on_step = null - return ..() - -//Todo: convert -/datum/forced_movement/process() - if(QDELETED(victim) || !victim.loc || QDELETED(target) || !target.loc) - qdel(src) - return - var/steps_to_take = round(steps_per_tick * (world.time - last_processed)) - if(steps_to_take) - for(var/i in 1 to steps_to_take) - if(TryMove()) - moved_at_all = TRUE - if(on_step) - on_step.InvokeAsync() - else - qdel(src) - return - last_processed = world.time - -/datum/forced_movement/proc/TryMove(recursive = FALSE) - if(QDELETED(src)) //Our previous step caused deletion of this datum - return - - var/atom/movable/vic = victim //sanic - var/atom/tar = target - - if(!recursive) - . = step_towards(vic, tar) - - //shit way for getting around corners - if(!.) //If stepping towards the target failed - if(tar.x > vic.x) //If we're going x, step x - if(step(vic, EAST)) - . = TRUE - else if(tar.x < vic.x) - if(step(vic, WEST)) - . = TRUE - - if(!.) //If the x step failed, go y - if(tar.y > vic.y) - if(step(vic, NORTH)) - . = TRUE - else if(tar.y < vic.y) - if(step(vic, SOUTH)) - . = TRUE - - if(!.) //If both failed, try again for some reason - if(recursive) - return FALSE - else - . = TryMove(TRUE) - - . = . && (vic.loc != tar.loc) diff --git a/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm b/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm index a345aba0b81..153bc59aab0 100644 --- a/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm +++ b/code/datums/greyscale/config_types/greyscale_configs/greyscale_items.dm @@ -167,52 +167,52 @@ /datum/greyscale_config/encryptionkey_basic name = "Basic Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_basic.json' /datum/greyscale_config/encryptionkey_cube name = "Block Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_cube.json' /datum/greyscale_config/encryptionkey_research name = "Research Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_research.json' /datum/greyscale_config/encryptionkey_syndicate name = "Syndicate Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_syndicate.json' /datum/greyscale_config/encryptionkey_medical name = "Medical Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_medical.json' /datum/greyscale_config/encryptionkey_service name = "Service Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_service.json' /datum/greyscale_config/encryptionkey_engineering name = "Engineering Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_engineering.json' /datum/greyscale_config/encryptionkey_centcom name = "Centcom Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_centcom.json' /datum/greyscale_config/encryptionkey_cargo name = "Cargo Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_cargo.json' /datum/greyscale_config/encryptionkey_security name = "Security Encryptionkey" - icon_file = 'icons/obj/radio.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/encryptionkey_security.json' /datum/greyscale_config/quantum_keycard @@ -344,7 +344,7 @@ /datum/greyscale_config/circuit name = "Circuit Board" - icon_file = 'icons/obj/assemblies/module.dmi' + icon_file = 'icons/obj/assemblies/circuitry_n_data.dmi' json_config = 'code/datums/greyscale/json_configs/circuit.json' /datum/greyscale_config/janicart_upgrade diff --git a/code/datums/json_savefile.dm b/code/datums/json_savefile.dm index 69e5a2ef7cf..08f8cf2d616 100644 --- a/code/datums/json_savefile.dm +++ b/code/datums/json_savefile.dm @@ -98,15 +98,9 @@ GENERAL_PROTECT_DATUM(/datum/json_savefile) var/file_name = "[account_name ? "[account_name]_" : ""]preferences_[time2text(world.timeofday, "MMM_DD_YYYY_hh-mm-ss")].json" var/temporary_file_storage = "data/preferences_export_working_directory/[file_name]" -#if DM_VERSION >= 515 if(!text2file(json_encode(tree, JSON_PRETTY_PRINT), temporary_file_storage)) tgui_alert(requester, "Failed to export preferences to JSON! You might need to try again later.", "Export Preferences JSON") return -#else - if(!text2file(json_encode(tree), temporary_file_storage)) - tgui_alert(requester, "Failed to export preferences to JSON! You might need to try again later.", "Export Preferences JSON") - return -#endif var/exportable_json = file(temporary_file_storage) diff --git a/code/datums/memory/key_memories.dm b/code/datums/memory/key_memories.dm index d777df72e38..48d4b0326e2 100644 --- a/code/datums/memory/key_memories.dm +++ b/code/datums/memory/key_memories.dm @@ -213,3 +213,26 @@ "[protagonist_name] being arrested by security for [crimes].", "[protagonist_name] committing the crimes of [crimes].", ) + +/datum/memory/key/message_server_key + var/decrypt_key + +/datum/memory/key/message_server_key/New( + datum/mind/memorizer_mind, + atom/protagonist, + atom/deuteragonist, + atom/antagonist, + decrypt_key, +) + src.decrypt_key = decrypt_key + return ..() + +/datum/memory/key/message_server_key/get_names() + return list("The daily message server key is [decrypt_key]. Keep it a secret from the clown.") + +/datum/memory/key/message_server_key/get_starts() + return list( + "A sticky note attached to a monitor with [decrypt_key] written on it.", + "Poly the parrot screaming \"[decrypt_key]!\" over and over again.", + "[protagonist_name] spilling coffee over the message monitor while typing [decrypt_key].", + ) diff --git a/code/datums/mutations/antenna.dm b/code/datums/mutations/antenna.dm index b71f66c0fa6..7232ea7aa39 100644 --- a/code/datums/mutations/antenna.dm +++ b/code/datums/mutations/antenna.dm @@ -11,7 +11,7 @@ /obj/item/implant/radio/antenna name = "internal antenna organ" desc = "The internal organ part of the antenna. Science has not yet given it a good name." - icon = 'icons/obj/radio.dmi'//maybe make a unique sprite later. not important + icon = 'icons/obj/device.dmi'//maybe make a unique sprite later. not important icon_state = "walkietalkie" /obj/item/implant/radio/antenna/Initialize(mapload) diff --git a/code/datums/request_message.dm b/code/datums/request_message.dm index 920f45dca53..d9cf51bc5be 100644 --- a/code/datums/request_message.dm +++ b/code/datums/request_message.dm @@ -32,7 +32,7 @@ if(data_appended_list && data_appended_list.len) appended_list = data_appended_list -/// Retrieves the alert spoken/blared by the requests console that recieves this message +/// Retrieves the alert spoken/blared by the requests console that receives this message /datum/request_message/proc/get_alert() var/authenticated = "" if(message_verified_by) diff --git a/code/datums/saymode.dm b/code/datums/saymode.dm index 7e227268495..363f484a415 100644 --- a/code/datums/saymode.dm +++ b/code/datums/saymode.dm @@ -30,15 +30,15 @@ user.log_talk(message, LOG_SAY, tag="changeling [ling_sender.changelingID]") var/msg = span_changeling("[ling_sender.changelingID]: [message]") - //the recipients can recieve the message - for(var/datum/antagonist/changeling/ling_reciever in GLOB.antagonists) - if(!ling_reciever.owner) + //the recipients can receive the message + for(var/datum/antagonist/changeling/ling_receiver in GLOB.antagonists) + if(!ling_receiver.owner) continue - var/mob/living/ling_mob = ling_reciever.owner.current + var/mob/living/ling_mob = ling_receiver.owner.current //removes types that override the presence of being changeling (for example, borged lings still can't hivemind chat) if(!isliving(ling_mob) || issilicon(ling_mob) || isbrain(ling_mob)) continue - // can't recieve messages on the hivemind right now + // can't receive messages on the hivemind right now if(HAS_TRAIT(ling_mob, TRAIT_CHANGELING_HIVEMIND_MUTE)) continue to_chat(ling_mob, msg) diff --git a/code/datums/station_traits/positive_traits.dm b/code/datums/station_traits/positive_traits.dm index 7c36ed24db9..950a14a953c 100644 --- a/code/datums/station_traits/positive_traits.dm +++ b/code/datums/station_traits/positive_traits.dm @@ -361,12 +361,12 @@ trait_type = STATION_TRAIT_POSITIVE weight = 5 show_in_report = TRUE - report_message = "Your station's medibots have recieved a hardware upgrade, enabling expanded healing capabilities." + report_message = "Your station's medibots have received a hardware upgrade, enabling expanded healing capabilities." trait_to_give = STATION_TRAIT_MEDBOT_MANIA /datum/station_trait/random_event_weight_modifier/shuttle_loans name = "Loaner Shuttle" - report_message = "Due to an uptick in pirate attacks around your sector, there are few supply vessels in nearby space willing to assist with special requests. Expect to recieve more shuttle loan opportunities, with slightly higher payouts." + report_message = "Due to an uptick in pirate attacks around your sector, there are few supply vessels in nearby space willing to assist with special requests. Expect to receive more shuttle loan opportunities, with slightly higher payouts." trait_type = STATION_TRAIT_POSITIVE weight = 4 event_control_path = /datum/round_event_control/shuttle_loan diff --git a/code/datums/status_effects/debuffs/blindness.dm b/code/datums/status_effects/debuffs/blindness.dm index 65354643123..e36f2e45dfa 100644 --- a/code/datums/status_effects/debuffs/blindness.dm +++ b/code/datums/status_effects/debuffs/blindness.dm @@ -10,7 +10,7 @@ // This is not "remove on fullheal" as in practice, // fullheal should instead remove all the sources and in turn cure this - /// Static list of signals that, when recieved, we force an update to our nearsighted overlay + /// Static list of signals that, when received, we force an update to our nearsighted overlay var/static/list/update_signals = list(SIGNAL_ADDTRAIT(TRAIT_NEARSIGHTED_CORRECTED), SIGNAL_REMOVETRAIT(TRAIT_NEARSIGHTED_CORRECTED)) /// How severe is our nearsightedness right now var/overlay_severity = 1 diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm index 416fe031341..73fa3b20b9a 100644 --- a/code/datums/status_effects/neutral.dm +++ b/code/datums/status_effects/neutral.dm @@ -360,7 +360,7 @@ /* * A status effect used for preventing caltrop message spam * - * While a mob has this status effect, they won't recieve any messages about + * While a mob has this status effect, they won't receive any messages about * stepping on caltrops. But they will be stunned and damaged regardless. * * The status effect itself has no effect, other than to disappear after diff --git a/code/datums/storage/storage.dm b/code/datums/storage/storage.dm index 342aec50d01..acfa2e40f18 100644 --- a/code/datums/storage/storage.dm +++ b/code/datums/storage/storage.dm @@ -982,7 +982,7 @@ GLOBAL_LIST_EMPTY(cached_storage_typecaches) return open_storage_on_signal(source, user) -/// Signal handler to open up the storage when we recieve a signal. +/// Signal handler to open up the storage when we receive a signal. /datum/storage/proc/open_storage_on_signal(datum/source, mob/to_show) SIGNAL_HANDLER diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm index f262a6c0c47..a9322074f25 100644 --- a/code/datums/weather/weather.dm +++ b/code/datums/weather/weather.dm @@ -182,7 +182,7 @@ if(alert_sfx) SEND_SOUND(player, sound(alert_sfx)) -// the checks for if a mob should recieve alerts, returns TRUE if can +// the checks for if a mob should receive alerts, returns TRUE if can /datum/weather/proc/can_get_alert(mob/player) var/turf/mob_turf = get_turf(player) return !isnull(mob_turf) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 11d01fb827e..54f315e6a37 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -45,7 +45,6 @@ var/atom/movable/moving_from_pull ///Holds information about any movement loops currently running/waiting to run on the movable. Lazy, will be null if nothing's going on var/datum/movement_packet/move_packet - var/datum/forced_movement/force_moving = null //handled soley by forced_movement.dm /** * an associative lazylist of relevant nested contents by "channel", the list is of the form: list(channel = list(important nested contents of that type)) * each channel has a specific purpose and is meant to replace potentially expensive nested contents iteration. diff --git a/code/game/machinery/barsigns.dm b/code/game/machinery/barsigns.dm index dc5b4655b8e..c5349618674 100644 --- a/code/game/machinery/barsigns.dm +++ b/code/game/machinery/barsigns.dm @@ -12,6 +12,8 @@ var/datum/barsign/chosen_sign /// Do we attempt to rename the area we occupy when the chosen sign is changed? var/change_area_name = FALSE + /// What kind of sign do we drop upon being disassembled? + var/disassemble_result = /obj/item/wallframe/barsign /datum/armor/sign_barsign melee = 20 @@ -92,7 +94,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/barsign, 32) /obj/machinery/barsign/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) if(disassembled) - new /obj/item/wallframe/barsign(loc) + new disassemble_result(drop_location()) else new /obj/item/stack/sheet/iron(drop_location(), 2) new /obj/item/stack/cable_coil(drop_location(), 2) @@ -487,6 +489,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/barsign, 32) // For other locations that aren't in the main bar /obj/machinery/barsign/all_access req_access = null + disassemble_result = /obj/item/wallframe/barsign/all_access MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/barsign/all_access, 32) @@ -513,3 +516,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/barsign/all_access, 32) if(isopenturf(get_step(on_wall, EAST))) //This takes up 2 tiles so we want to make sure we have two tiles to hang it from. balloon_alert(user, "needs more support!") return FALSE + +/obj/item/wallframe/barsign/all_access + desc = "Used to help draw the rabble into your bar. Some assembly required. This one doesn't have an access lock." + result_path = /obj/machinery/barsign/all_access diff --git a/code/game/machinery/computer/arcade/arcade.dm b/code/game/machinery/computer/arcade/arcade.dm index 9ff935a9165..b9e8bd9d1e9 100644 --- a/code/game/machinery/computer/arcade/arcade.dm +++ b/code/game/machinery/computer/arcade/arcade.dm @@ -695,4 +695,4 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( /obj/machinery/computer/arcade/amputation/festive //dispenses wrapped gifts instead of arcade prizes, also known as the ancap christmas tree name = "Mediborg's Festive Amputation Adventure" desc = "A picture of a blood-soaked medical cyborg wearing a Santa hat flashes on the screen. The mediborg has a speech bubble that says, \"Put your hand in the machine if you aren't a coward!\"" - prize_override = list(/obj/item/a_gift/anything = 1) + prize_override = list(/obj/item/gift/anything = 1) diff --git a/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm b/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm index bc7b79aff09..515c56622c4 100644 --- a/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/gondola_organs.dm @@ -25,7 +25,7 @@ Fluoride Stare: After someone says 5 words, blah blah blah... greyscale_config = /datum/greyscale_config/mutant_organ greyscale_colors = GONDOLA_COLORS organ_traits = list(TRAIT_PACIFISM) - ///keeps track of whether the reciever actually gained factions + ///keeps track of whether the receiver actually gained factions var/list/factions_to_remove = list() /obj/item/organ/internal/heart/gondola/Initialize(mapload) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 7c903db123b..d9359311c5e 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -1005,7 +1005,7 @@ /obj/machinery/door/airlock/attackby(obj/item/C, mob/user, params) if(!issilicon(user) && !isAdminGhostAI(user)) - if(isElectrified() && (C.flags_1 & CONDUCT_1) && shock(user, 75)) + if(isElectrified() && (C.obj_flags & CONDUCTS_ELECTRICITY) && shock(user, 75)) return add_fingerprint(user) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 5af4e45f8de..62f1b6f71a1 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -290,7 +290,7 @@ anchored = FALSE density = TRUE req_access = list(ACCESS_TELEPORTER) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY use_power = NO_POWER_USE active_power_usage = 150 circuit = /obj/item/circuitboard/machine/shieldwallgen diff --git a/code/game/machinery/telecomms/broadcasting.dm b/code/game/machinery/telecomms/broadcasting.dm index e8ecb72393f..4c53cc5e418 100644 --- a/code/game/machinery/telecomms/broadcasting.dm +++ b/code/game/machinery/telecomms/broadcasting.dm @@ -155,7 +155,7 @@ radios += independent_radio for(var/obj/item/radio/called_radio as anything in radios) - called_radio.on_recieve_message(data) + called_radio.on_receive_message(data) // From the list of radios, find all mobs who can hear those. var/list/receive = get_hearers_in_radio_ranges(radios) diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index 6faad6f5eab..946a0a8d6ad 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -101,9 +101,6 @@ /obj/machinery/telecomms/message_server/Initialize(mapload) . = ..() - if (!decryptkey) - decryptkey = generate_key() - if (calibrating) calibrating += world.time say("Calibrating... Estimated wait time: [rand(3, 9)] minutes.") @@ -122,17 +119,6 @@ if(calibrating) . += span_warning("It's still calibrating.") -/** - * Handles generating a key for the message server, returning it. Doesn't assign - * it in this proc, you have to do so yourself. - */ -/obj/machinery/telecomms/message_server/proc/generate_key() - var/generated_key - generated_key += pick("the", "if", "of", "as", "in", "a", "you", "from", "to", "an", "too", "little", "snow", "dead", "drunk", "rosebud", "duck", "al", "le") - generated_key += pick("diamond", "beer", "mushroom", "assistant", "clown", "captain", "twinkie", "security", "nuke", "small", "big", "escape", "yellow", "gloves", "monkey", "engine", "nuclear", "ai") - generated_key += pick("1", "2", "3", "4", "5", "6", "7", "8", "9", "0") - return generated_key - /obj/machinery/telecomms/message_server/process() . = ..() if(calibrating && calibrating <= world.time) @@ -172,9 +158,24 @@ id = "Messaging Server" network = "tcommsat" autolinkers = list("messaging") - decryptkey = null //random calibrating = 0 +GLOBAL_VAR(preset_station_message_server_key) + +/obj/machinery/telecomms/message_server/preset/Initialize(mapload) + . = ..() + // Just in case there are multiple preset messageservers somehow once the CE arrives, + // we want those on the station to share the same preset default decrypt key shown in his memories. + var/is_on_station = is_station_level(z) + if(is_on_station && GLOB.preset_station_message_server_key) + decryptkey = GLOB.preset_station_message_server_key + return + //Generate a random password for the message server + decryptkey = pick("the", "if", "of", "as", "in", "a", "you", "from", "to", "an", "too", "little", "snow", "dead", "drunk", "rosebud", "duck", "al", "le") + decryptkey += pick("diamond", "beer", "mushroom", "assistant", "clown", "captain", "twinkie", "security", "nuke", "small", "big", "escape", "yellow", "gloves", "monkey", "engine", "nuclear", "ai") + decryptkey += "[rand(0, 9)]" + if(is_on_station) + GLOB.preset_station_message_server_key = decryptkey // Root messaging signal datum /datum/signal/subspace/messaging diff --git a/code/game/machinery/telecomms/machines/receiver.dm b/code/game/machinery/telecomms/machines/receiver.dm index def8384b139..ff3064e73c7 100644 --- a/code/game/machinery/telecomms/machines/receiver.dm +++ b/code/game/machinery/telecomms/machines/receiver.dm @@ -20,10 +20,10 @@ if(!is_freq_listening(signal)) return - // Make a copy of the signal so that other recievers can still recieve this signal + // Make a copy of the signal so that other receivers can still receive this signal var/datum/signal/subspace/signal_copy = signal.copy() - // Signal has been recieved, so remove receiving levels. This list will be used later on to determine broadcasting levels. + // Signal has been received, so remove receiving levels. This list will be used later on to determine broadcasting levels. signal_copy.levels = list() // Send the signal to a hub if possible, or a bus otherwise. diff --git a/code/game/objects/items/AI_modules/_AI_modules.dm b/code/game/objects/items/AI_modules/_AI_modules.dm index 77c03cd6fc6..2dab0645fd2 100644 --- a/code/game/objects/items/AI_modules/_AI_modules.dm +++ b/code/game/objects/items/AI_modules/_AI_modules.dm @@ -3,13 +3,13 @@ /obj/item/ai_module name = "\improper AI module" - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "std_mod" inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' desc = "An AI Module for programming laws to an AI." - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 5 w_class = WEIGHT_CLASS_SMALL throwforce = 0 diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm index 064f9c1e04f..061f45902df 100644 --- a/code/game/objects/items/airlock_painter.dm +++ b/code/game/objects/items/airlock_painter.dm @@ -10,7 +10,7 @@ custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 0.5) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT usesound = 'sound/effects/spray2.ogg' diff --git a/code/game/objects/items/chainsaw.dm b/code/game/objects/items/chainsaw.dm index e26f9aa2e99..0805f6b5233 100644 --- a/code/game/objects/items/chainsaw.dm +++ b/code/game/objects/items/chainsaw.dm @@ -7,7 +7,7 @@ icon_state = "chainsaw_off" lefthand_file = 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 13 var/force_on = 24 w_class = WEIGHT_CLASS_HUGE diff --git a/code/game/objects/items/choice_beacon.dm b/code/game/objects/items/choice_beacon.dm index 07a7808cd84..3fe0ea8675d 100644 --- a/code/game/objects/items/choice_beacon.dm +++ b/code/game/objects/items/choice_beacon.dm @@ -71,7 +71,8 @@ /obj/item/choice_beacon/ingredient name = "ingredient delivery beacon" desc = "Summon a box of ingredients to help you get started cooking." - icon_state = "gangtool-white" + icon_state = "sb_delivery" + inhand_icon_state = "sb_delivery" company_source = "Sophronia Broadcasting" company_message = span_bold("Please enjoy your Sophronia Broadcasting's 'Plasteel Chef' Ingredients Box, exactly as shown in the hit show!") @@ -86,6 +87,8 @@ /obj/item/choice_beacon/hero name = "heroic beacon" desc = "To summon heroes from the past to protect the future." + icon_state = "sb_delivery" + inhand_icon_state = "sb_delivery" company_source = "Sophronia Broadcasting" company_message = span_bold("Please enjoy your Sophronia Broadcasting's 'History Comes Alive branded' Costume Set, exactly as shown in the hit show!") @@ -129,7 +132,11 @@ /obj/item/choice_beacon/holy name = "armaments beacon" - desc = "Contains a set of armaments for the chaplain." + desc = "Summon a set of standard issue chaplain armaments, as dictated by I.C.R.A." + icon_state = "icra_delivery" + inhand_icon_state = "icra_delivery" + company_source = "Interstellar Conservation of Religion Association" + company_message = span_bold("A choice has already been made.") /obj/item/choice_beacon/holy/can_use_beacon(mob/living/user) if(user.mind?.holy_role) @@ -141,7 +148,6 @@ // Overrides generate options so that we can show a neat radial instead /obj/item/choice_beacon/holy/open_options_menu(mob/living/user) if(GLOB.holy_armor_type) - to_chat(user, span_warning("A selection has already been made.")) consume_use(GLOB.holy_armor_type, user) return diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 7ef4b4bd64a..e9378d505f3 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -736,7 +736,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM inhand_icon_state = "zippo" worn_icon_state = "lighter" w_class = WEIGHT_CLASS_TINY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT heat = 1500 resistance_flags = FIRE_PROOF diff --git a/code/game/objects/items/circuitboards/circuitboard.dm b/code/game/objects/items/circuitboards/circuitboard.dm index c32de5b336d..9ac21c361fd 100644 --- a/code/game/objects/items/circuitboards/circuitboard.dm +++ b/code/game/objects/items/circuitboards/circuitboard.dm @@ -7,7 +7,7 @@ name = "circuit board" /// extension that is applied after the initial name AKA (Computer/Machine Board) var/name_extension = null - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "circuit_map" inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm index 9e49a99d73b..b865d9c4579 100644 --- a/code/game/objects/items/cosmetics.dm +++ b/code/game/objects/items/cosmetics.dm @@ -189,7 +189,7 @@ icon = 'icons/obj/cosmetic.dmi' icon_state = "razor" inhand_icon_state = "razor" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY w_class = WEIGHT_CLASS_TINY /obj/item/razor/suicide_act(mob/living/carbon/user) diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index cfa1d0e4fca..68aeb0265ea 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -3,7 +3,7 @@ desc = "A vaguely insidious device with a scanner and large projector." // SKYRAT EDIT icon = 'icons/obj/device.dmi' icon_state = "shield0" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT inhand_icon_state = "electronic" diff --git a/code/game/objects/items/devices/destabilizing_crystal.dm b/code/game/objects/items/devices/destabilizing_crystal.dm index 87e85adfdb0..6c57cead0e2 100644 --- a/code/game/objects/items/devices/destabilizing_crystal.dm +++ b/code/game/objects/items/devices/destabilizing_crystal.dm @@ -5,7 +5,7 @@ icon = 'icons/obj/machines/engine/supermatter.dmi' icon_state = "destabilizing_crystal" w_class = WEIGHT_CLASS_NORMAL - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NO_PIXEL_RANDOM_DROP throwforce = 5 throw_speed = 1 diff --git a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm index 827642b139a..62d9ad26786 100644 --- a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm +++ b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm @@ -2,7 +2,7 @@ /obj/item/electroadaptive_pseudocircuit name = "electroadaptive pseudocircuit" desc = "An all-in-one circuit imprinter, designer, synthesizer, outfitter, creator, and chef. It can be used in place of any generic circuit board during construction." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "boris" w_class = WEIGHT_CLASS_TINY custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3) diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 9ba63151c7c..d0a94da0cac 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -15,7 +15,7 @@ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' w_class = WEIGHT_CLASS_SMALL - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 0.2) actions_types = list(/datum/action/item_action/toggle_light) @@ -293,7 +293,7 @@ inhand_icon_state = "" worn_icon_state = "pen" w_class = WEIGHT_CLASS_TINY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY light_range = 2 COOLDOWN_DECLARE(holosign_cooldown) @@ -367,7 +367,7 @@ light_system = STATIC_LIGHT light_color = LIGHT_COLOR_FAINT_BLUE w_class = WEIGHT_CLASS_BULKY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY custom_materials = null start_on = TRUE @@ -910,7 +910,7 @@ light_system = MOVABLE_LIGHT light_range = 15 light_power = 1 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = DROPDEL actions_types = list() diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index fae8d3950fd..cd1d2c94753 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -5,7 +5,7 @@ icon_state = "pointer" inhand_icon_state = "pen" worn_icon_state = "pen" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5) diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 1d07e2a9558..2a5569bd430 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -41,7 +41,7 @@ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' w_class = WEIGHT_CLASS_SMALL - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 8 diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 0849c6c2b26..dc09f719f74 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -17,7 +17,7 @@ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' w_class = WEIGHT_CLASS_BULKY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NO_PIXEL_RANDOM_DROP throwforce = 5 throw_speed = 1 diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index ce87739d114..094ba7f5997 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -1,12 +1,12 @@ /obj/item/electropack name = "electropack" desc = "Dance my monkeys! DANCE!!!" - icon = 'icons/obj/radio.dmi' + icon = 'icons/obj/device.dmi' icon_state = "electropack0" inhand_icon_state = "electropack" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK w_class = WEIGHT_CLASS_HUGE custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT *5, /datum/material/glass=SHEET_MATERIAL_AMOUNT * 1.25) diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index 1ae41c2b5c6..4fc64980a39 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -1,7 +1,7 @@ /obj/item/encryptionkey name = "standard encryption key" desc = "An encryption key for a radio headset." - icon = 'icons/obj/radio.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "cypherkey_basic" w_class = WEIGHT_CLASS_TINY /// Can this radio key access the binary radio channel? @@ -200,43 +200,3 @@ /obj/item/encryptionkey/secbot channels = list(RADIO_CHANNEL_AI_PRIVATE = 1, RADIO_CHANNEL_SECURITY = 1) - -/obj/item/encryptionkey/moth - name = "\improper Moffic translation key" - desc = "An encryption key that automatically encodes moffic heard through the radio into common. The signal's a little fuzzy." - icon_state = "translation_cypherkey" - translated_language = /datum/language/moffic - greyscale_config = null - greyscale_colors = null - -/obj/item/encryptionkey/tiziran - name = "\improper Tiziran translation key" - desc = "An encryption key that automatically encodes draconic heard through the radio into common. The signal's not quite to scale." - icon_state = "translation_cypherkey" - translated_language = /datum/language/draconic - greyscale_config = null - greyscale_colors = null - -/obj/item/encryptionkey/plasmaman - name = "\improper Calcic translation key" - desc = "An encryption key that automatically encodes calcic heard through the radio into common. The signal lacks a bit of teeth." - icon_state = "translation_cypherkey" - translated_language = /datum/language/calcic - greyscale_config = null - greyscale_colors = null - -/obj/item/encryptionkey/ethereal - name = "\improper Ethereal translation key" - desc = "An encryption key that automatically encodes ethereal heard through the radio into common. The signal's overpowering." - icon_state = "translation_cypherkey" - translated_language = /datum/language/voltaic - greyscale_config = null - greyscale_colors = null - -/obj/item/encryptionkey/felinid - name = "\improper Felinid translation key" - desc = "An encryption key that automatically encodes nekomimetic heard through the radio into common. The signal's rather scratchy." - icon_state = "translation_cypherkey" - translated_language = /datum/language/nekomimetic - greyscale_config = null - greyscale_colors = null diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index d6dd9bcc3a7..c2af9c33821 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -23,6 +23,7 @@ GLOBAL_LIST_INIT(channel_tokens, list( /obj/item/radio/headset name = "radio headset" desc = "An updated, modular intercom that fits over the head. Takes encryption keys." + icon = 'icons/obj/clothing/headsets.dmi' icon_state = "headset" inhand_icon_state = "headset" lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 3fa205fc489..2308a566413 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -168,7 +168,7 @@ /** * Proc called whenever the intercom's area loses or gains power. Responsible for setting the `on` variable and calling `update_icon()`. * - * Normally called after the intercom's area recieves the `COMSIG_AREA_POWER_CHANGE` signal, but it can also be called directly. + * Normally called after the intercom's area receives the `COMSIG_AREA_POWER_CHANGE` signal, but it can also be called directly. * Arguments: * * source - the area that just had a power change. */ diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 1a356686a74..e09a7d07ef0 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -1,17 +1,17 @@ #define FREQ_LISTENING (1<<0) /obj/item/radio - icon = 'icons/obj/radio.dmi' + icon = 'icons/obj/device.dmi' name = "station bounced radio" icon_state = "walkietalkie" - inhand_icon_state = "radio" + inhand_icon_state = "walkietalkie" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' worn_icon_state = "radio" desc = "A basic handheld radio that communicates with local telecommunication networks." dog_fashion = /datum/dog_fashion/back - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT throw_speed = 3 throw_range = 7 @@ -388,7 +388,7 @@ return TRUE return FALSE -/obj/item/radio/proc/on_recieve_message(list/data) +/obj/item/radio/proc/on_receive_message(list/data) SEND_SIGNAL(src, COMSIG_RADIO_RECEIVE_MESSAGE, data) flick_overlay_view(overlay_speaker_active, 5 SECONDS) diff --git a/code/game/objects/items/devices/reverse_bear_trap.dm b/code/game/objects/items/devices/reverse_bear_trap.dm index cc94deb7da9..9283bb1867a 100644 --- a/code/game/objects/items/devices/reverse_bear_trap.dm +++ b/code/game/objects/items/devices/reverse_bear_trap.dm @@ -7,7 +7,7 @@ worn_icon = 'icons/mob/clothing/head/utility.dmi' icon_state = "reverse_bear_trap" slot_flags = ITEM_SLOT_HEAD - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY resistance_flags = FIRE_PROOF | UNACIDABLE w_class = WEIGHT_CLASS_NORMAL max_integrity = 300 diff --git a/code/game/objects/items/devices/scanners/autopsy_scanner.dm b/code/game/objects/items/devices/scanners/autopsy_scanner.dm index 2f938c92e45..d28ad3bc5ca 100644 --- a/code/game/objects/items/devices/scanners/autopsy_scanner.dm +++ b/code/game/objects/items/devices/scanners/autopsy_scanner.dm @@ -7,7 +7,7 @@ worn_icon_state = "autopsy_scanner" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_NORMAL custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*2) diff --git a/code/game/objects/items/devices/scanners/gas_analyzer.dm b/code/game/objects/items/devices/scanners/gas_analyzer.dm index 36819d8502a..af941b486a1 100644 --- a/code/game/objects/items/devices/scanners/gas_analyzer.dm +++ b/code/game/objects/items/devices/scanners/gas_analyzer.dm @@ -8,7 +8,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_SMALL - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT throwforce = 0 diff --git a/code/game/objects/items/devices/scanners/health_analyzer.dm b/code/game/objects/items/devices/scanners/health_analyzer.dm index f5b41498f3f..1f5dcc56a1d 100644 --- a/code/game/objects/items/devices/scanners/health_analyzer.dm +++ b/code/game/objects/items/devices/scanners/health_analyzer.dm @@ -16,7 +16,7 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' desc = "A hand-held body scanner capable of distinguishing vital signs of the subject. Has a side button to scan for chemicals, and can be toggled to scan wounds." - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT throwforce = 3 diff --git a/code/game/objects/items/devices/scanners/sequence_scanner.dm b/code/game/objects/items/devices/scanners/sequence_scanner.dm index ee2742c55d7..5882b156e1a 100644 --- a/code/game/objects/items/devices/scanners/sequence_scanner.dm +++ b/code/game/objects/items/devices/scanners/sequence_scanner.dm @@ -7,7 +7,7 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' desc = "A hand-held scanner for analyzing someones gene sequence on the fly. Use on a DNA console to update the internal database." - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT throwforce = 3 diff --git a/code/game/objects/items/devices/scanners/slime_scanner.dm b/code/game/objects/items/devices/scanners/slime_scanner.dm index b05a0f31d1c..fe7ac245da0 100644 --- a/code/game/objects/items/devices/scanners/slime_scanner.dm +++ b/code/game/objects/items/devices/scanners/slime_scanner.dm @@ -7,7 +7,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_SMALL - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY throwforce = 0 throw_speed = 3 throw_range = 7 diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index 55cfde1b19c..931eded30bc 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -24,7 +24,7 @@ effective or pretty fucking useless. w_class = WEIGHT_CLASS_TINY throw_speed = 3 throw_range = 7 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' diff --git a/code/game/objects/items/door_seal.dm b/code/game/objects/items/door_seal.dm index eef6f3d79ee..d3e80cdf16d 100644 --- a/code/game/objects/items/door_seal.dm +++ b/code/game/objects/items/door_seal.dm @@ -6,7 +6,7 @@ inhand_icon_state = "pneumatic_seal" lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' righthand_file = 'icons/mob/inhands/items_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY resistance_flags = FIRE_PROOF | ACID_PROOF force = 5 throwforce = 5 diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index 8947e83d363..b571688f1a8 100644 --- a/code/game/objects/items/extinguisher.dm +++ b/code/game/objects/items/extinguisher.dm @@ -6,7 +6,7 @@ worn_icon_state = "fire_extinguisher" inhand_icon_state = "fire_extinguisher" hitsound = 'sound/weapons/smash.ogg' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY throwforce = 10 w_class = WEIGHT_CLASS_NORMAL throw_speed = 2 @@ -62,7 +62,7 @@ worn_icon_state = "miniFE" inhand_icon_state = "miniFE" hitsound = null //it is much lighter, after all. - flags_1 = null //doesn't CONDUCT_1 + obj_flags = NONE //doesn't conduct electricity throwforce = 2 w_class = WEIGHT_CLASS_SMALL force = 3 @@ -81,7 +81,7 @@ worn_icon_state = "miniFE" inhand_icon_state = "miniFE" hitsound = null //it is much lighter, after all. - flags_1 = null //doesn't CONDUCT_1 + obj_flags = NONE //doesn't conduct electricity throwforce = 1 w_class = WEIGHT_CLASS_SMALL force = 3 diff --git a/code/game/objects/items/fireaxe.dm b/code/game/objects/items/fireaxe.dm index b0b17faf89d..901e506194e 100644 --- a/code/game/objects/items/fireaxe.dm +++ b/code/game/objects/items/fireaxe.dm @@ -13,7 +13,7 @@ throwforce = 15 demolition_mod = 1.25 w_class = WEIGHT_CLASS_BULKY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK attack_verb_continuous = list("attacks", "chops", "cleaves", "tears", "lacerates", "cuts") attack_verb_simple = list("attack", "chop", "cleave", "tear", "lacerate", "cut") diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm index eb94626c86e..35f76ab89a1 100644 --- a/code/game/objects/items/flamethrower.dm +++ b/code/game/objects/items/flamethrower.dm @@ -6,7 +6,7 @@ inhand_icon_state = "flamethrower_0" lefthand_file = 'icons/mob/inhands/weapons/flamethrower_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/flamethrower_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 3 throwforce = 10 throw_speed = 1 diff --git a/code/game/objects/items/food/egg.dm b/code/game/objects/items/food/egg.dm index 60bbb58e3ac..356059a097a 100644 --- a/code/game/objects/items/food/egg.dm +++ b/code/game/objects/items/food/egg.dm @@ -213,7 +213,7 @@ GLOBAL_VAR_INIT(chicks_from_eggs, 0) desc = "Supposedly good for you, if you can stomach it. Better fried." icon = 'icons/obj/food/egg.dmi' icon_state = "rawegg" - food_reagents = list() //Recieves all reagents from its whole egg counterpart + food_reagents = list() // Receives all reagents from its whole egg counterpart bite_consumption = 1 tastes = list("raw egg" = 6, "sliminess" = 1) eatverbs = list("gulp down") diff --git a/code/game/objects/items/food/packaged.dm b/code/game/objects/items/food/packaged.dm index 1dabec57cdd..820b10927f6 100644 --- a/code/game/objects/items/food/packaged.dm +++ b/code/game/objects/items/food/packaged.dm @@ -125,7 +125,7 @@ return apply_buff(target, user) -///This proc checks if the mob is able to recieve the buff. +///This proc checks if the mob is able to receive the buff. /obj/item/food/canned/envirochow/proc/check_buffability(mob/living/hungry_pet) if(!isanimal_or_basicmob(hungry_pet)) // Not a pet return FALSE diff --git a/code/game/objects/items/gift.dm b/code/game/objects/items/gift.dm index 324151feddb..866945d9440 100644 --- a/code/game/objects/items/gift.dm +++ b/code/game/objects/items/gift.dm @@ -1,16 +1,10 @@ -/* Gifts and wrapping paper +/* Gifts * Contains: * Gifts - * Wrapping Paper */ -/* - * Gifts - */ - -GLOBAL_LIST_EMPTY(possible_gifts) - -/obj/item/a_gift +/// Gifts to give to players, will contain a nice toy or other fun item for them to play with. +/obj/item/gift name = "gift" desc = "PRESENTS!!!! eek!" icon = 'icons/obj/storage/wrapping.dmi' @@ -18,99 +12,112 @@ GLOBAL_LIST_EMPTY(possible_gifts) inhand_icon_state = "gift" resistance_flags = FLAMMABLE - var/obj/item/contains_type + /// What type of thing are we guaranteed to spawn in with? + var/obj/item/contains_type = null -/obj/item/a_gift/Initialize(mapload) +/obj/item/gift/Initialize(mapload) . = ..() pixel_x = rand(-10,10) pixel_y = rand(-10,10) icon_state = "giftdeliverypackage[rand(1,5)]" - contains_type = get_gift_type() + if(isnull(contains_type)) + contains_type = get_gift_type() -/obj/item/a_gift/suicide_act(mob/living/user) +/obj/item/gift/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] peeks inside [src] and cries [user.p_them()]self to death! It looks like [user.p_they()] [user.p_were()] on the naughty list...")) return BRUTELOSS -/obj/item/a_gift/examine(mob/M) +/obj/item/gift/examine(mob/user) . = ..() - if(HAS_MIND_TRAIT(M, TRAIT_PRESENT_VISION) || isobserver(M)) + if(HAS_MIND_TRAIT(user, TRAIT_PRESENT_VISION) || isobserver(user)) . += span_notice("It contains \a [initial(contains_type.name)].") -/obj/item/a_gift/attack_self(mob/M) - if(HAS_MIND_TRAIT(M, TRAIT_CANNOT_OPEN_PRESENTS)) - to_chat(M, span_warning("You're supposed to be spreading gifts, not opening them yourself!")) +/obj/item/gift/attack_self(mob/user) + if(HAS_MIND_TRAIT(user, TRAIT_CANNOT_OPEN_PRESENTS)) + to_chat(user, span_warning("You're supposed to be spreading gifts, not opening them yourself!")) return - qdel(src) + moveToNullspace() + + var/obj/item/thing = new contains_type(get_turf(user)) - var/obj/item/I = new contains_type(get_turf(M)) - if (!QDELETED(I)) //might contain something like metal rods that might merge with a stack on the ground - M.visible_message(span_notice("[M] unwraps \the [src], finding \a [I] inside!")) - M.investigate_log("has unwrapped a present containing [I.type].", INVESTIGATE_PRESENTS) - M.put_in_hands(I) - I.add_fingerprint(M) + if (QDELETED(thing)) //might contain something like metal rods that might merge with a stack on the ground + user.visible_message(span_danger("Oh no! The present that [user] opened had nothing inside it!")) else - M.visible_message(span_danger("Oh no! The present that [M] opened had nothing inside it!")) - -/obj/item/a_gift/proc/get_gift_type() - var/gift_type_list = list(/obj/item/sord, - /obj/item/storage/wallet, - /obj/item/storage/photo_album, - /obj/item/storage/box/snappops, - /obj/item/storage/crayons, - /obj/item/storage/backpack/holding, - /obj/item/storage/belt/champion, - /obj/item/soap/deluxe, - /obj/item/pickaxe/diamond, - /obj/item/pen/invisible, - /obj/item/lipstick/random, - /obj/item/grenade/smokebomb, - /obj/item/grown/corncob, - /obj/item/poster/random_contraband, - /obj/item/poster/random_official, - /obj/item/book/manual/wiki/barman_recipes, - /obj/item/book/manual/chef_recipes, - /obj/item/bikehorn, - /obj/item/toy/beach_ball, - /obj/item/toy/basketball, - /obj/item/banhammer, - /obj/item/food/grown/ambrosia/deus, - /obj/item/food/grown/ambrosia/vulgaris, - /obj/item/pai_card, - /obj/item/instrument/violin, - /obj/item/instrument/guitar, - /obj/item/storage/belt/utility/full, - /obj/item/clothing/neck/tie/horrible, - /obj/item/clothing/suit/jacket/leather, - /obj/item/clothing/suit/jacket/leather/biker, - /obj/item/clothing/suit/costume/poncho, - /obj/item/clothing/suit/costume/poncho/green, - /obj/item/clothing/suit/costume/poncho/red, - /obj/item/clothing/suit/costume/snowman, - /obj/item/clothing/head/costume/snowman, - /obj/item/stack/sheet/mineral/coal) - - gift_type_list += subtypesof(/obj/item/clothing/head/collectable) - gift_type_list += subtypesof(/obj/item/toy) - (((typesof(/obj/item/toy/cards) - /obj/item/toy/cards/deck) + /obj/item/toy/figure + /obj/item/toy/ammo)) //All toys, except for abstract types and syndicate cards. + user.visible_message(span_notice("[user] unwraps \the [src], finding \a [thing] inside!")) + user.investigate_log("has unwrapped a present containing [thing.type].", INVESTIGATE_PRESENTS) + user.put_in_hands(thing) + thing.add_fingerprint(user) - var/gift_type = pick(gift_type_list) + qdel(src) - return gift_type +/obj/item/gift/proc/get_gift_type() + var/static/list/gift_type_list = null + + if(isnull(gift_type_list)) + gift_type_list = list( + /obj/item/banhammer, + /obj/item/bikehorn, + /obj/item/book/manual/chef_recipes, + /obj/item/book/manual/wiki/barman_recipes, + /obj/item/clothing/head/costume/snowman, + /obj/item/clothing/neck/tie/horrible, + /obj/item/clothing/suit/costume/poncho, + /obj/item/clothing/suit/costume/poncho/green, + /obj/item/clothing/suit/costume/poncho/red, + /obj/item/clothing/suit/costume/snowman, + /obj/item/clothing/suit/jacket/leather, + /obj/item/clothing/suit/jacket/leather/biker, + /obj/item/food/grown/ambrosia/deus, + /obj/item/food/grown/ambrosia/vulgaris, + /obj/item/grenade/smokebomb, + /obj/item/grown/corncob, + /obj/item/instrument/guitar, + /obj/item/instrument/violin, + /obj/item/lipstick/random, + /obj/item/pai_card, + /obj/item/pen/invisible, + /obj/item/pickaxe/diamond, + /obj/item/poster/random_contraband, + /obj/item/poster/random_official, + /obj/item/soap/deluxe, + /obj/item/sord, + /obj/item/stack/sheet/mineral/coal, + /obj/item/storage/backpack/holding, + /obj/item/storage/belt/champion, + /obj/item/storage/belt/utility/full, + /obj/item/storage/box/snappops, + /obj/item/storage/crayons, + /obj/item/storage/photo_album, + /obj/item/storage/wallet, + /obj/item/toy/basketball, + /obj/item/toy/beach_ball, + ) + + gift_type_list += subtypesof(/obj/item/clothing/head/collectable) + //Add all toys, except for abstract types and syndicate cards. + gift_type_list += subtypesof(/obj/item/toy) - (((typesof(/obj/item/toy/cards) - /obj/item/toy/cards/deck) + /obj/item/toy/figure + /obj/item/toy/ammo)) + var/gift_type = pick(gift_type_list) + return gift_type -/obj/item/a_gift/anything +/// Gifts that typically only very OP stuff or admins or Santa Claus himself should be giving out, as they contain ANY valid subtype of `/obj/item`, including stuff like instagib rifles. Wow! +/obj/item/gift/anything name = "christmas gift" desc = "It could be anything!" -/obj/item/a_gift/anything/get_gift_type() - if(!GLOB.possible_gifts.len) - var/list/gift_types_list = subtypesof(/obj/item) - for(var/V in gift_types_list) - var/obj/item/I = V - if((!initial(I.icon_state)) || (!initial(I.inhand_icon_state)) || (initial(I.item_flags) & ABSTRACT)) - gift_types_list -= V - GLOB.possible_gifts = gift_types_list - var/gift_type = pick(GLOB.possible_gifts) +/obj/item/gift/anything/get_gift_type() + var/static/list/obj/item/possible_gifts = null + + if(isnull(possible_gifts)) + possible_gifts = list() + for(var/type in subtypesof(/obj/item)) + var/obj/item/thing = type + if(!initial(thing.icon_state) || !initial(thing.inhand_icon_state) || (initial(thing.item_flags) & ABSTRACT)) + continue + + possible_gifts += type + var/gift_type = pick(possible_gifts) return gift_type diff --git a/code/game/objects/items/grenades/_grenade.dm b/code/game/objects/items/grenades/_grenade.dm index 9fde5723f45..bb1cade96b8 100644 --- a/code/game/objects/items/grenades/_grenade.dm +++ b/code/game/objects/items/grenades/_grenade.dm @@ -13,7 +13,8 @@ righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' throw_speed = 3 throw_range = 7 - flags_1 = CONDUCT_1 | PREVENT_CONTENTS_EXPLOSION_1 // We detonate upon being exploded. + flags_1 = PREVENT_CONTENTS_EXPLOSION_1 // We detonate upon being exploded. + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT resistance_flags = FLAMMABLE max_integrity = 40 diff --git a/code/game/objects/items/grenades/ghettobomb.dm b/code/game/objects/items/grenades/ghettobomb.dm index 040c5372561..b77216a9104 100644 --- a/code/game/objects/items/grenades/ghettobomb.dm +++ b/code/game/objects/items/grenades/ghettobomb.dm @@ -12,7 +12,7 @@ righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' throw_speed = 3 throw_range = 7 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT active = FALSE det_time = 50 diff --git a/code/game/objects/items/grenades/spawnergrenade.dm b/code/game/objects/items/grenades/spawnergrenade.dm index 1b9d9ff27d0..df3739afcc6 100644 --- a/code/game/objects/items/grenades/spawnergrenade.dm +++ b/code/game/objects/items/grenades/spawnergrenade.dm @@ -71,3 +71,9 @@ inhand_icon_state = null spawner_type = /mob/living/basic/clown/mutant deliveryamt = 5 + +/obj/item/grenade/spawnergrenade/cat + name = "Catnade" + desc = "You can hear faint meowing and the sounds of claws on metal coming from within." + spawner_type = /mob/living/basic/pet/cat/feral + deliveryamt = 5 diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 45aed58c91c..d923d4258f0 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -38,7 +38,7 @@ inhand_icon_state = "handcuff" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_HANDCUFFED throwforce = 0 w_class = WEIGHT_CLASS_SMALL @@ -350,7 +350,7 @@ inhand_icon_state = "handcuff" lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY throwforce = 0 w_class = WEIGHT_CLASS_NORMAL slowdown = 7 diff --git a/code/game/objects/items/implants/implant_misc.dm b/code/game/objects/items/implants/implant_misc.dm index ec443aae220..e6ea2e21a3a 100644 --- a/code/game/objects/items/implants/implant_misc.dm +++ b/code/game/objects/items/implants/implant_misc.dm @@ -36,7 +36,7 @@ var/obj/item/radio/radio var/radio_key var/subspace_transmission = FALSE - icon = 'icons/obj/radio.dmi' + icon = 'icons/obj/device.dmi' icon_state = "walkietalkie" /obj/item/implant/radio/activate() diff --git a/code/game/objects/items/implants/implantuplink.dm b/code/game/objects/items/implants/implantuplink.dm index 4d90c8381d0..68263b0b206 100644 --- a/code/game/objects/items/implants/implantuplink.dm +++ b/code/game/objects/items/implants/implantuplink.dm @@ -1,7 +1,7 @@ /obj/item/implant/uplink name = "uplink implant" desc = "Sneeki breeki." - icon = 'icons/obj/radio.dmi' + icon = 'icons/obj/device.dmi' icon_state = "radio" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index 56b8a1d653e..5b8666705dd 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -27,7 +27,7 @@ throw_speed = 3 throw_range = 5 custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.8) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY attack_verb_continuous = list("attacks", "stabs", "pokes") attack_verb_simple = list("attack", "stab", "poke") hitsound = 'sound/weapons/bladeslice.ogg' @@ -170,7 +170,7 @@ icon_state = "metal_rolling_pin" inhand_icon_state = "metal_rolling_pin" force = 12 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 1.5) custom_price = PAYCHECK_CREW * 2 bare_wound_bonus = 14 @@ -186,7 +186,7 @@ icon_state = "spoon" base_icon_state = "spoon" w_class = WEIGHT_CLASS_TINY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 2 throw_speed = 3 throw_range = 5 diff --git a/code/game/objects/items/knives.dm b/code/game/objects/items/knives.dm index 337c75cf5eb..4d63f825c07 100644 --- a/code/game/objects/items/knives.dm +++ b/code/game/objects/items/knives.dm @@ -8,7 +8,7 @@ inhand_icon_state = "knife" worn_icon_state = "knife" desc = "The original knife, it is said that all other knives are only copies of this one." - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 10 demolition_mod = 0.75 w_class = WEIGHT_CLASS_SMALL @@ -95,7 +95,7 @@ icon_state = "butch" inhand_icon_state = "butch" desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown by-products." - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 15 throwforce = 10 custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6) @@ -157,7 +157,7 @@ custom_materials = null /obj/item/knife/combat/bone/Initialize(mapload) - flags_1 &= ~CONDUCT_1 + flags_1 &= ~CONDUCTS_ELECTRICITY return ..() /obj/item/knife/combat/cyborg @@ -182,7 +182,7 @@ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 4) /obj/item/knife/shiv/Initialize(mapload) - flags_1 &= ~CONDUCT_1 + flags_1 &= ~CONDUCTS_ELECTRICITY return ..() /obj/item/knife/shiv/plasma diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index bfd60d52555..8fc8057756d 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -159,7 +159,7 @@ armour_penetration = 100 sharpness = SHARP_EDGED w_class = WEIGHT_CLASS_NORMAL - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY light_color = LIGHT_COLOR_LIGHT_CYAN active_force = 150 diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 2b15d9ddef2..1c0d5f7c9b1 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -11,7 +11,7 @@ worn_icon_state = "whip" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 10 throwforce = 7 @@ -60,7 +60,7 @@ inhand_icon_state = "sabre" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY obj_flags = UNIQUE_RENAME force = 15 throwforce = 10 diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm index 4c2c526c2c1..e36fa5a142f 100644 --- a/code/game/objects/items/pinpointer.dm +++ b/code/game/objects/items/pinpointer.dm @@ -4,7 +4,7 @@ desc = "A handheld tracking device that locks onto certain signals." icon = 'icons/obj/device.dmi' icon_state = "pinpointer" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL inhand_icon_state = "electronic" diff --git a/code/game/objects/items/powerfist.dm b/code/game/objects/items/powerfist.dm index 735d3092960..0054520c957 100644 --- a/code/game/objects/items/powerfist.dm +++ b/code/game/objects/items/powerfist.dm @@ -14,7 +14,7 @@ inhand_icon_state = "powerfist" lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY attack_verb_continuous = list("whacks", "fists", "power-punches") attack_verb_simple = list("whack", "fist", "power-punch") force = 20 diff --git a/code/game/objects/items/rcd/RHD.dm b/code/game/objects/items/rcd/RHD.dm index d9c4c7cd9b7..460482e5929 100644 --- a/code/game/objects/items/rcd/RHD.dm +++ b/code/game/objects/items/rcd/RHD.dm @@ -8,7 +8,7 @@ opacity = FALSE density = FALSE anchored = FALSE - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON force = 0 throwforce = 10 @@ -284,7 +284,7 @@ /obj/item/rcd_upgrade name = "RCD advanced design disk" desc = "It seems to be empty." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "datadisk3" var/upgrade diff --git a/code/game/objects/items/rcd/RPD.dm b/code/game/objects/items/rcd/RPD.dm index 71a3999d261..635245f184a 100644 --- a/code/game/objects/items/rcd/RPD.dm +++ b/code/game/objects/items/rcd/RPD.dm @@ -170,7 +170,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( worn_icon_state = "RPD" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 10 throwforce = 10 throw_speed = 1 @@ -655,7 +655,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( /obj/item/rpd_upgrade name = "RPD advanced design disk" desc = "It seems to be empty." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "datadisk3" /// Bitflags for upgrades var/upgrade_flags diff --git a/code/game/objects/items/robot/ai_upgrades.dm b/code/game/objects/items/robot/ai_upgrades.dm index f0cbb121eeb..6627b27921e 100644 --- a/code/game/objects/items/robot/ai_upgrades.dm +++ b/code/game/objects/items/robot/ai_upgrades.dm @@ -5,7 +5,7 @@ /obj/item/malf_upgrade name = "combat software upgrade" desc = "A highly illegal, highly dangerous upgrade for artificial intelligence units, granting them a variety of powers as well as the ability to hack APCs.
This upgrade does not override any active laws, and must be applied directly to an active AI core." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "datadisk3" @@ -34,7 +34,7 @@ /obj/item/surveillance_upgrade name = "surveillance software upgrade" desc = "An illegal software package that will allow an artificial intelligence to 'hear' from its cameras via lip reading and hidden microphones." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "datadisk3" /obj/item/surveillance_upgrade/pre_attack(atom/A, mob/living/user, proximity) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index b1aff8deff5..ddb45550c01 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -4,7 +4,7 @@ /obj/item/borg/upgrade name = "borg upgrade module." desc = "Protected by FRM." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "cyborg_upgrade" w_class = WEIGHT_CLASS_SMALL var/locked = FALSE @@ -268,7 +268,7 @@ /obj/item/borg/upgrade/lavaproof name = "mining cyborg lavaproof chassis" desc = "An upgrade kit to apply specialized coolant systems and insulation layers to a mining cyborg's chassis, enabling them to withstand exposure to molten rock and liquid plasma." - icon_state = "ash_plating" + icon_state = "cyborg_ash_tracks" resistance_flags = LAVA_PROOF | FIRE_PROOF | FREEZE_PROOF require_model = TRUE model_type = list(/obj/item/robot_model/miner) @@ -963,7 +963,7 @@ name = "cyborg emergency reboot module" desc = "A reusable firmware reset tool that can force a reboot of a disabled-but-repaired cyborg, bringing it back online." w_class = WEIGHT_CLASS_SMALL - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "cyborg_upgrade1" /obj/item/borg_restart_board/pre_attack(mob/living/silicon/robot/borgo, mob/living/user, params) diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index 75c81f63b85..d67c6fc8588 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -20,7 +20,7 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \ singular_name = "iron rod" icon_state = "rods" inhand_icon_state = "rods" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY w_class = WEIGHT_CLASS_NORMAL force = 9 throwforce = 10 @@ -143,7 +143,7 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \ icon_state = "rods" inhand_icon_state = "rods" color = "#5286b9ff" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY w_class = WEIGHT_CLASS_NORMAL mats_per_unit = list(/datum/material/iron=HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plasma=SMALL_MATERIAL_AMOUNT*5, /datum/material/titanium=SHEET_MATERIAL_AMOUNT) max_amount = 30 diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm index 5ee8f06237c..c9153c82844 100644 --- a/code/game/objects/items/stacks/sheets/light.dm +++ b/code/game/objects/items/stacks/sheets/light.dm @@ -9,7 +9,7 @@ throwforce = 5 throw_speed = 3 throw_range = 7 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY max_amount = 60 grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/copper = 5) merge_type = /obj/item/stack/light_w diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 9508730c8e7..e4166f62984 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -140,7 +140,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ inhand_icon_state = "sheet-metal" mats_per_unit = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT) throwforce = 10 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY resistance_flags = FIRE_PROOF merge_type = /obj/item/stack/sheet/iron grind_results = list(/datum/reagent/iron = 20) @@ -266,7 +266,7 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \ mats_per_unit = list(/datum/material/alloy/plasteel=SHEET_MATERIAL_AMOUNT) material_type = /datum/material/alloy/plasteel throwforce = 10 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY armor_type = /datum/armor/sheet_plasteel resistance_flags = FIRE_PROOF merge_type = /obj/item/stack/sheet/plasteel diff --git a/code/game/objects/items/stacks/tiles/light.dm b/code/game/objects/items/stacks/tiles/light.dm index ec5bb310400..cbd503ad8e6 100644 --- a/code/game/objects/items/stacks/tiles/light.dm +++ b/code/game/objects/items/stacks/tiles/light.dm @@ -3,7 +3,7 @@ singular_name = "light floor tile" desc = "A floor tile, made out of glass. It produces light." icon_state = "tile_e" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY attack_verb_continuous = list("bashes", "batters", "bludgeons", "thrashes", "smashes") attack_verb_simple = list("bash", "batter", "bludgeon", "thrash", "smash") turf_type = /turf/open/floor/light diff --git a/code/game/objects/items/stacks/tiles/tile_iron.dm b/code/game/objects/items/stacks/tiles/tile_iron.dm index 404c3025344..e06df0728a7 100644 --- a/code/game/objects/items/stacks/tiles/tile_iron.dm +++ b/code/game/objects/items/stacks/tiles/tile_iron.dm @@ -7,7 +7,7 @@ force = 6 mats_per_unit = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*0.25) throwforce = 10 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY turf_type = /turf/open/floor/iron armor_type = /datum/armor/tile_iron resistance_flags = FIRE_PROOF diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index ef93ac20546..a67788f2725 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -102,7 +102,7 @@ return if(HAS_MIND_TRAIT(user, TRAIT_CANNOT_OPEN_PRESENTS)) var/turf/floor = get_turf(src) - var/obj/item/thing = new /obj/item/a_gift/anything(floor) + var/obj/item/thing = new /obj/item/gift/anything(floor) if(!atom_storage.attempt_insert(thing, user, override = TRUE, force = STORAGE_SOFT_LOCKED)) qdel(thing) diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index 466a201ff70..5c8ef888517 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -344,7 +344,7 @@ throwforce = 10 throw_speed = 3 throw_range = 5 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*1.5) custom_price = PAYCHECK_CREW * 0.6 diff --git a/code/game/objects/items/storage/briefcase.dm b/code/game/objects/items/storage/briefcase.dm index dc8357c3645..bd474808446 100644 --- a/code/game/objects/items/storage/briefcase.dm +++ b/code/game/objects/items/storage/briefcase.dm @@ -6,7 +6,7 @@ inhand_icon_state = "briefcase" lefthand_file = 'icons/mob/inhands/equipment/briefcase_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/briefcase_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 8 hitsound = SFX_SWING_HIT throw_speed = 2 diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index 06e96073997..de2c351dadc 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -6,7 +6,7 @@ inhand_icon_state = "toolbox_default" lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 12 throwforce = 12 throw_speed = 2 diff --git a/code/game/objects/items/tanks/tank_types.dm b/code/game/objects/items/tanks/tank_types.dm index 8ebfb6afcc4..95bd31d9d97 100644 --- a/code/game/objects/items/tanks/tank_types.dm +++ b/code/game/objects/items/tanks/tank_types.dm @@ -80,7 +80,7 @@ inhand_icon_state = "plasma_tank" worn_icon_state = "plasmatank" tank_holder_icon_state = null - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = null //they have no straps! force = 8 @@ -162,7 +162,7 @@ worn_icon_state = "emergency" tank_holder_icon_state = "holder_emergency" worn_icon = null - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL force = 4 diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index a93cd92bd47..6b84407ed30 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -14,7 +14,7 @@ inhand_icon_state = "generic_tank" lefthand_file = 'icons/mob/inhands/equipment/tanks_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tanks_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK worn_icon = 'icons/mob/clothing/back.dmi' //since these can also get thrown into suit storage slots. if something goes on the belt, set this to null. hitsound = 'sound/weapons/smash.ogg' diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm index 07e178acba5..69d8e1f284d 100644 --- a/code/game/objects/items/teleportation.dm +++ b/code/game/objects/items/teleportation.dm @@ -16,7 +16,7 @@ icon = 'icons/obj/device.dmi' icon_state = "locator" var/temp = null - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY w_class = WEIGHT_CLASS_SMALL inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' @@ -328,7 +328,7 @@ w_class = WEIGHT_CLASS_SMALL throw_speed = 4 throw_range = 10 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm index 485ff0863a8..9265dc7cb4e 100644 --- a/code/game/objects/items/tools/crowbar.dm +++ b/code/game/objects/items/tools/crowbar.dm @@ -7,7 +7,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' usesound = 'sound/items/crowbar.ogg' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 5 throwforce = 7 diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index 2c95d657181..cbdc79e0420 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -8,7 +8,8 @@ belt_icon_state = "screwdriver" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - flags_1 = CONDUCT_1 | IS_PLAYER_COLORABLE_1 + flags_1 = IS_PLAYER_COLORABLE_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 5 demolition_mod = 0.5 diff --git a/code/game/objects/items/tools/spess_knife.dm b/code/game/objects/items/tools/spess_knife.dm index 59195410000..0b0061de7a4 100644 --- a/code/game/objects/items/tools/spess_knife.dm +++ b/code/game/objects/items/tools/spess_knife.dm @@ -11,7 +11,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_TINY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT resistance_flags = FIRE_PROOF tool_behaviour = null diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 3812cf911bf..a88a069e421 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -9,7 +9,7 @@ worn_icon_state = "welder" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 3 throwforce = 5 diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm index 1ed8055333c..dad9763bd3d 100644 --- a/code/game/objects/items/tools/wirecutters.dm +++ b/code/game/objects/items/tools/wirecutters.dm @@ -13,7 +13,7 @@ greyscale_config_inhand_left = /datum/greyscale_config/wirecutter_inhand_left greyscale_config_inhand_right = /datum/greyscale_config/wirecutter_inhand_right - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 6 throw_speed = 3 diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm index 70dc666aa93..c4326cf3de8 100644 --- a/code/game/objects/items/tools/wrench.dm +++ b/code/game/objects/items/tools/wrench.dm @@ -7,7 +7,7 @@ worn_icon_state = "wrench" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 5 throwforce = 7 diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index c7f93c6ea68..6769dab38e2 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -320,7 +320,7 @@ worn_icon_state = "gun" lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_NORMAL custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.1, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 0.1) @@ -615,7 +615,7 @@ worn_icon_state = "katana" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK force = 5 throwforce = 5 diff --git a/code/game/objects/items/vending_items.dm b/code/game/objects/items/vending_items.dm index de0dc592c7b..0383767ce66 100644 --- a/code/game/objects/items/vending_items.dm +++ b/code/game/objects/items/vending_items.dm @@ -11,7 +11,7 @@ desc = "A vending machine restock cart." lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 7 throwforce = 10 throw_speed = 1 diff --git a/code/game/objects/items/wall_mounted.dm b/code/game/objects/items/wall_mounted.dm index 48142778a92..7589de01ad8 100644 --- a/code/game/objects/items/wall_mounted.dm +++ b/code/game/objects/items/wall_mounted.dm @@ -1,7 +1,7 @@ /obj/item/wallframe icon = 'icons/obj/machines/wallmounts.dmi' custom_materials = list(/datum/material/iron= SHEET_MATERIAL_AMOUNT * 2) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY inhand_icon_state = "syringe_kit" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' @@ -83,12 +83,12 @@ /obj/item/electronics desc = "Looks like a circuit. Probably is." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "door_electronics" inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY w_class = WEIGHT_CLASS_SMALL custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 0.5) grind_results = list(/datum/reagent/iron = 10, /datum/reagent/silicon = 10) diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index b2cba11907a..df426c712fa 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -70,7 +70,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' hitsound = 'sound/weapons/bladeslice.ogg' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK force = 40 throwforce = 10 @@ -130,7 +130,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 /obj/item/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS desc = "THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!\nActivate it in your hand to point to the nearest victim." - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = DROPDEL //WOW BRO YOU LOST AN ARM, GUESS WHAT YOU DONT GET YOUR SWORD ANYMORE //I CANT BELIEVE SPOOKYDONUT WOULD BREAK THE REQUIREMENTS slot_flags = null block_chance = 0 //RNG WON'T HELP YOU NOW, PANSY @@ -291,7 +291,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 worn_icon_state = "katana" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK force = 40 throwforce = 10 @@ -358,7 +358,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' desc = "A sharp, concealable, spring-loaded knife." - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 3 w_class = WEIGHT_CLASS_SMALL throwforce = 5 diff --git a/code/game/objects/items/wizard_weapons.dm b/code/game/objects/items/wizard_weapons.dm index b16f5be5bfd..533ae118dc2 100644 --- a/code/game/objects/items/wizard_weapons.dm +++ b/code/game/objects/items/wizard_weapons.dm @@ -7,7 +7,7 @@ lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' worn_icon_state = "singularity_hammer" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK force = 5 throwforce = 15 @@ -85,7 +85,7 @@ worn_icon_state = "mjollnir" lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK force = 5 throwforce = 30 diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 008ceccc72e..d9f22e2cf4f 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -41,8 +41,6 @@ /// Particles this obj uses when burning, if any var/burning_particles - var/renamedByPlayer = FALSE //set when a player uses a pen on a renamable object - var/drag_slowdown // Amont of multiplicative slowdown applied if pulled. >1 makes you slower, <1 makes you faster. /// Map tag for something. Tired of it being used on snowflake items. Moved here for some semblance of a standard. @@ -193,6 +191,8 @@ GLOBAL_LIST_EMPTY(objects_by_id_tag) return /mob/proc/set_machine(obj/O) + if(QDELETED(src) || QDELETED(O)) + return if(machine) unset_machine() machine = O diff --git a/code/game/objects/structures/cannons/cannonballs.dm b/code/game/objects/structures/cannons/cannonballs.dm index 718fd2b1ebb..08533bdcebd 100644 --- a/code/game/objects/structures/cannons/cannonballs.dm +++ b/code/game/objects/structures/cannons/cannonballs.dm @@ -7,7 +7,7 @@ singular_name = "cannonball" merge_type = /obj/item/stack/cannonball throwforce = 10 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY custom_materials = list(/datum/material/alloy/plasteel=SHEET_MATERIAL_AMOUNT) resistance_flags = FIRE_PROOF throw_speed = 5 diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index eab29099dfd..5d75f9cb02d 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -451,7 +451,7 @@ /obj/structure/flora/tree/pine/xmas/presents icon_state = "pinepresents" desc = "A wondrous decorated Christmas tree. It has presents!" - var/gift_type = /obj/item/a_gift/anything + var/gift_type = /obj/item/gift/anything var/unlimited = FALSE var/static/list/took_presents //shared between all xmas trees diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 73f3972ef83..68067263d58 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -10,7 +10,7 @@ density = TRUE anchored = TRUE pass_flags_self = PASSGRILLE - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY obj_flags = CAN_BE_HIT | IGNORE_DENSITY pressure_resistance = 5*ONE_ATMOSPHERE armor_type = /datum/armor/structure_grille @@ -280,7 +280,7 @@ return //window placing end - else if((W.flags_1 & CONDUCT_1) && shock(user, 70)) + else if((W.obj_flags & CONDUCTS_ELECTRICITY) && shock(user, 70)) return return ..() diff --git a/code/game/objects/structures/maintenance.dm b/code/game/objects/structures/maintenance.dm index acdf28353d6..e907a23cd67 100644 --- a/code/game/objects/structures/maintenance.dm +++ b/code/game/objects/structures/maintenance.dm @@ -9,7 +9,7 @@ at the cost of risking a vicious bite.**/ density = FALSE ///This var stores the hidden item that might be able to be retrieved from the trap var/obj/item/hidden_item - ///This var determines if there is a chance to recieve a bite when sticking your hand into the water. + ///This var determines if there is a chance to receive a bite when sticking your hand into the water. var/critter_infested = TRUE ///weighted loot table for what loot you can find inside the moisture trap. ///the actual loot isn't that great and should probably be improved and expanded later. diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 80c2bb7715a..4bfb93579f8 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -906,7 +906,7 @@ icon = 'icons/obj/structures.dmi' icon_state = "rack_parts" inhand_icon_state = "rack_parts" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT) var/building = FALSE diff --git a/code/game/objects/structures/training_machine.dm b/code/game/objects/structures/training_machine.dm index 08ff42e2d76..fd0d8bb0c8f 100644 --- a/code/game/objects/structures/training_machine.dm +++ b/code/game/objects/structures/training_machine.dm @@ -350,7 +350,7 @@ inhand_icon_state = "toolbox_gold" lefthand_file = 'icons/mob/inhands/equipment/toolbox_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/toolbox_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 0 throwforce = 0 throw_speed = 2 diff --git a/code/game/turfs/open/asteroid.dm b/code/game/turfs/open/asteroid.dm index c15261a9880..b453fb0c4be 100644 --- a/code/game/turfs/open/asteroid.dm +++ b/code/game/turfs/open/asteroid.dm @@ -232,7 +232,8 @@ GLOBAL_LIST_EMPTY(dug_up_basalt) /// Exact subtype as parent, just used in ruins to prevent other ruins/chasms from spawning on top of it. /turf/open/misc/asteroid/snow/icemoon/do_not_chasm - turf_flags = CAN_BE_DIRTY_1 | IS_SOLID | NO_RUST | NO_RUINS + flags_1 = CAN_BE_DIRTY_1 + turf_flags = IS_SOLID | NO_RUST | NO_RUINS /turf/open/misc/asteroid/snow/icemoon/do_not_scrape flags_1 = CAN_BE_DIRTY_1 diff --git a/code/game/turfs/open/floor.dm b/code/game/turfs/open/floor.dm index 84d8cab4859..28a60c83ddb 100644 --- a/code/game/turfs/open/floor.dm +++ b/code/game/turfs/open/floor.dm @@ -9,7 +9,7 @@ barefootstep = FOOTSTEP_HARD_BAREFOOT clawfootstep = FOOTSTEP_HARD_CLAW heavyfootstep = FOOTSTEP_GENERIC_HEAVY - flags_1 = CAN_BE_DIRTY_1 | NO_SCREENTIPS_1 + flags_1 = NO_SCREENTIPS_1 | CAN_BE_DIRTY_1 turf_flags = IS_SOLID smoothing_groups = SMOOTH_GROUP_TURF_OPEN + SMOOTH_GROUP_OPEN_FLOOR canSmoothWith = SMOOTH_GROUP_TURF_OPEN + SMOOTH_GROUP_OPEN_FLOOR diff --git a/code/game/turfs/open/misc.dm b/code/game/turfs/open/misc.dm index 6459a29e99b..a704c7f12b1 100644 --- a/code/game/turfs/open/misc.dm +++ b/code/game/turfs/open/misc.dm @@ -5,8 +5,8 @@ name = "coder/mapper fucked up" desc = "report on github please" - flags_1 = NO_SCREENTIPS_1 - turf_flags = CAN_BE_DIRTY_1 | IS_SOLID | NO_RUST + flags_1 = NO_SCREENTIPS_1 | CAN_BE_DIRTY_1 + turf_flags = IS_SOLID | NO_RUST footstep = FOOTSTEP_FLOOR barefootstep = FOOTSTEP_HARD_BAREFOOT diff --git a/code/game/world.dm b/code/game/world.dm index d701f967954..43e01895575 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -342,7 +342,7 @@ GLOBAL_VAR(restart_counter) AUXTOOLS_FULL_SHUTDOWN(AUXLUA) var/debug_server = world.GetConfig("env", "AUXTOOLS_DEBUG_DLL") if (debug_server) - LIBCALL(debug_server, "auxtools_shutdown")() + call_ext(debug_server, "auxtools_shutdown")() /world/Del() auxcleanup() @@ -470,14 +470,14 @@ GLOBAL_VAR(restart_counter) else CRASH("Unsupported platform: [system_type]") - var/init_result = LIBCALL(library, "init")("block") + var/init_result = call_ext(library, "init")("block") if (init_result != "0") CRASH("Error initializing byond-tracy: [init_result]") /world/proc/init_debugger() var/dll = GetConfig("env", "AUXTOOLS_DEBUG_DLL") if (dll) - LIBCALL(dll, "auxtools_init")() + call_ext(dll, "auxtools_init")() enable_debugging() /world/Profile(command, type, format) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 979c42b9d79..30bb5ff4ffe 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -248,7 +248,6 @@ GLOBAL_PROTECT(admin_verbs_debug) /client/proc/run_empty_query, /client/proc/SDQL2_query, /client/proc/set_dynex_scale, - /client/proc/spawn_as_mmi, /client/proc/spawn_debug_full_crew, /client/proc/test_cardpack_distribution, /client/proc/test_movable_UI, @@ -1230,17 +1229,3 @@ GLOBAL_PROTECT(admin_verbs_poll) segment.AddComponent(/datum/component/mob_chain, front = previous) previous = segment -/client/proc/spawn_as_mmi(mob/living/carbon/human/target in GLOB.human_list) - set category = "Debug" - set name = "Turn target into MMI" - set desc = "Turns something into an MMI, must be used on humans" - if(!check_rights(R_DEBUG)) - return - if(!ishuman(target)) - return - - var/obj/item/mmi/new_mmi = new(target.loc) - var/obj/item/organ/internal/brain/target_brain = target.get_organ_slot(ORGAN_SLOT_BRAIN) - target_brain.Remove(target) - new_mmi.attackby(target_brain,target) - qdel(target) diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index 6f6f72af472..c8c3b660920 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -76,7 +76,7 @@ body += ""; - body += ""+job+" "+name+"
Real name "+real_name+"
Played by "+key+" ("+ip+")
Old names :"+old_names+"
"; + body += ""+job+" "+name+"
Real name "+real_name+"
Played by "+key+" ("+ip+")
Old names: "+old_names+"
"; body += ""; @@ -274,20 +274,18 @@ else M_job = "Ghost" + var/M_key = html_encode(M.key) var/M_ip_address = isnull(M.lastKnownIP) ? "+localhost+" : M.lastKnownIP - var/M_name = html_encode(M.name) var/M_rname = html_encode(M.real_name) var/M_rname_as_key = html_encode(ckey(M.real_name)) // so you can ignore punctuation if(M_rname == M_rname_as_key) M_rname_as_key = null - var/M_key = html_encode(M.key) - var/previous_names = "" - if(M_key) - var/datum/player_details/P = GLOB.player_details[ckey(M_key)] - if(P) - previous_names = P.played_names.Join(",") - previous_names = html_encode(previous_names) + + var/previous_names_string = "" + var/datum/player_details/readable = GLOB.player_details[M.ckey] + if(readable) + previous_names_string = readable.get_played_names() //output for each mob dat += {" @@ -299,12 +297,12 @@ onmouseover='expand("data[i]","item[i]")' > [M_name] - [M_rname] - [M_key] ([M_job]) - + - + diff --git a/code/modules/admin/sql_ban_system.dm b/code/modules/admin/sql_ban_system.dm index 163ae838149..e5b3756cfd4 100644 --- a/code/modules/admin/sql_ban_system.dm +++ b/code/modules/admin/sql_ban_system.dm @@ -136,7 +136,7 @@ /// Gets the ban cache of the passed in client /// If the cache has not been generated, we start off a query -/// If we still have a query going for this request, we just sleep until it's recieved back +/// If we still have a query going for this request, we just sleep until it's received back /proc/retrieve_ban_cache(client/player_client) if(QDELETED(player_client)) return diff --git a/code/modules/admin/verbs/admingame.dm b/code/modules/admin/verbs/admingame.dm index 197a870b48b..a3124c6ee41 100644 --- a/code/modules/admin/verbs/admingame.dm +++ b/code/modules/admin/verbs/admingame.dm @@ -82,6 +82,15 @@ body += "Mob type = [M.type]

" + if(M.client) + body += "Old names: " + var/datum/player_details/deets = GLOB.player_details[M.ckey] + if(deets) + body += deets.get_played_names() + else + body += "None?!" + body += "

" + body += "Kick | " if(M.client) body += "Ban | " diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 6629ee50efd..529cf4d8a77 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -98,7 +98,7 @@ var/datum/admin_help/recipient_ticket = recipient?.current_ticket // Any past interactions with the recipient ticket var/datum/admin_help/recipient_interactions = recipient_ticket?.ticket_interactions - // Any opening interactions with the recipient ticket, IE: interactions started before the ticket first recieves a response + // Any opening interactions with the recipient ticket, IE: interactions started before the ticket first receives a response var/datum/admin_help/opening_interactions = recipient_ticket?.opening_responders // Our recipient's admin holder, if one exists var/datum/admins/recipient_holder = recipient?.holder diff --git a/code/modules/admin/view_variables/reference_tracking.dm b/code/modules/admin/view_variables/reference_tracking.dm index 9cb661d2fee..645467bf0fe 100644 --- a/code/modules/admin/view_variables/reference_tracking.dm +++ b/code/modules/admin/view_variables/reference_tracking.dm @@ -26,9 +26,7 @@ var/starting_time = world.time -#if DM_VERSION >= 515 log_reftracker("Refcount for [type]: [refcount(src)]") -#endif //Time to search the whole game for our ref DoSearchVar(GLOB, "GLOB", search_time = starting_time) //globals diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index dfabe50ce9a..944aa45e377 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -64,7 +64,7 @@ Striking a noncultist, however, will tear their flesh."} righthand_file = 'icons/mob/inhands/64x64_righthand.dmi' inhand_x_dimension = 64 inhand_y_dimension = 64 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY sharpness = SHARP_EDGED w_class = WEIGHT_CLASS_BULKY force = 30 // whoever balanced this got beat in the head by a bible too many times good lord diff --git a/code/modules/antagonists/heretic/items/heretic_blades.dm b/code/modules/antagonists/heretic/items/heretic_blades.dm index 7cce886a145..19470e29699 100644 --- a/code/modules/antagonists/heretic/items/heretic_blades.dm +++ b/code/modules/antagonists/heretic/items/heretic_blades.dm @@ -9,7 +9,7 @@ righthand_file = 'icons/mob/inhands/64x64_righthand.dmi' inhand_x_dimension = 64 inhand_y_dimension = 64 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY sharpness = SHARP_EDGED w_class = WEIGHT_CLASS_NORMAL force = 20 diff --git a/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm b/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm index d2fe6ab3776..7c4a61da09d 100644 --- a/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/cosmic_lore.dm @@ -111,7 +111,7 @@ /datum/heretic_knowledge/spell/star_blast name = "Star Blast" desc = "Fires a projectile that moves very slowly and creates cosmic fields on impact. \ - Anyone hit by the projectile will recieve burn damage, a knockdown, and give people in a three tile range a star mark." + Anyone hit by the projectile will receive burn damage, a knockdown, and give people in a three tile range a star mark." gain_text = "The Beast was behind me now at all times, with each sacrifice words of affirmation coursed through me." next_knowledge = list( /datum/heretic_knowledge/blade_upgrade/cosmic, @@ -125,10 +125,10 @@ /datum/heretic_knowledge/blade_upgrade/cosmic name = "Cosmic Blade" - desc = "Your blade now deals damage to people's cells through cosmic radiation. \ + desc = "Your blade now deals damage to people's organs through cosmic radiation. \ Your attacks will chain bonus damage to up to two previous victims. \ The combo is reset after two seconds without making an attack, \ - or if you attack someone already marked. If you combo more than four attacks you will recieve, \ + or if you attack someone already marked. If you combo more than four attacks you will receive, \ a cosmic trail and increase your combo timer up to ten seconds." gain_text = "The Beast took my blades in their hand, I kneeled and felt a sharp pain. \ The blades now glistened with fragmented power. I fell to the ground and wept at the beast's feet." @@ -152,6 +152,15 @@ var/combo_counter = 0 /datum/heretic_knowledge/blade_upgrade/cosmic/do_melee_effects(mob/living/source, mob/living/target, obj/item/melee/sickly_blade/blade) + var/static/list/valid_organ_slots = list( + ORGAN_SLOT_HEART, + ORGAN_SLOT_LUNGS, + ORGAN_SLOT_STOMACH, + ORGAN_SLOT_EYES, + ORGAN_SLOT_EARS, + ORGAN_SLOT_LIVER, + ORGAN_SLOT_BRAIN + ) if(source == target) return if(combo_timer) @@ -160,8 +169,8 @@ var/mob/living/second_target_resolved = second_target?.resolve() var/mob/living/third_target_resolved = third_target?.resolve() var/need_mob_update = FALSE - need_mob_update += target.adjustFireLoss(4, updating_health = FALSE) - need_mob_update += target.adjustCloneLoss(2, updating_health = FALSE) + need_mob_update += target.adjustFireLoss(5, updating_health = FALSE) + need_mob_update += target.adjustOrganLoss(pick(valid_organ_slots), 8) if(need_mob_update) target.updatehealth() if(target == second_target_resolved || target == third_target_resolved) @@ -173,18 +182,18 @@ new /obj/effect/temp_visual/cosmic_explosion(get_turf(second_target_resolved)) playsound(get_turf(second_target_resolved), 'sound/magic/cosmic_energy.ogg', 25, FALSE) need_mob_update = FALSE - need_mob_update += second_target_resolved.adjustFireLoss(10, updating_health = FALSE) - need_mob_update += second_target_resolved.adjustCloneLoss(6, updating_health = FALSE) + need_mob_update += second_target_resolved.adjustFireLoss(14, updating_health = FALSE) + need_mob_update += second_target_resolved.adjustOrganLoss(pick(valid_organ_slots), 12) if(need_mob_update) - target.updatehealth() + second_target_resolved.updatehealth() if(third_target_resolved) new /obj/effect/temp_visual/cosmic_domain(get_turf(third_target_resolved)) playsound(get_turf(third_target_resolved), 'sound/magic/cosmic_energy.ogg', 50, FALSE) need_mob_update = FALSE - need_mob_update += third_target_resolved.adjustFireLoss(20, updating_health = FALSE) - need_mob_update += third_target_resolved.adjustCloneLoss(12, updating_health = FALSE) + need_mob_update += third_target_resolved.adjustFireLoss(28, updating_health = FALSE) + need_mob_update += third_target_resolved.adjustOrganLoss(pick(valid_organ_slots), 14) if(need_mob_update) - target.updatehealth() + third_target_resolved.updatehealth() if(combo_counter > 3) target.apply_status_effect(/datum/status_effect/star_mark, source) if(target.mind && target.stat != DEAD) diff --git a/code/modules/antagonists/heretic/magic/cosmic_expansion.dm b/code/modules/antagonists/heretic/magic/cosmic_expansion.dm index 2e0a353cf42..ad9ac0989b7 100644 --- a/code/modules/antagonists/heretic/magic/cosmic_expansion.dm +++ b/code/modules/antagonists/heretic/magic/cosmic_expansion.dm @@ -1,7 +1,7 @@ /datum/action/cooldown/spell/conjure/cosmic_expansion name = "Cosmic Expansion" desc = "This spell generates a 3x3 domain of cosmic fields. \ - Creatures up to 7 tiles away will also recieve a star mark." + Creatures up to 7 tiles away will also receive a star mark." background_icon_state = "bg_heretic" overlay_icon_state = "bg_heretic_border" button_icon = 'icons/mob/actions/actions_ecult.dmi' diff --git a/code/modules/antagonists/heretic/magic/star_touch.dm b/code/modules/antagonists/heretic/magic/star_touch.dm index f2f2c935bbf..9037d07295a 100644 --- a/code/modules/antagonists/heretic/magic/star_touch.dm +++ b/code/modules/antagonists/heretic/magic/star_touch.dm @@ -236,10 +236,7 @@ /// What to process when the beam is connected to a target /datum/status_effect/cosmic_beam/proc/on_beam_tick(mob/living/target) - var/need_mob_update - need_mob_update = target.adjustFireLoss(3, updating_health = FALSE) - need_mob_update += target.adjustCloneLoss(1, updating_health = FALSE) - if(need_mob_update) + if(target.adjustFireLoss(3, updating_health = FALSE)) target.updatehealth() /// What to remove when the beam disconnects from a target diff --git a/code/modules/antagonists/heretic/structures/carving_knife.dm b/code/modules/antagonists/heretic/structures/carving_knife.dm index e89f53818b3..b9afe643240 100644 --- a/code/modules/antagonists/heretic/structures/carving_knife.dm +++ b/code/modules/antagonists/heretic/structures/carving_knife.dm @@ -5,7 +5,7 @@ but only few can evoke the dangers that lurk beneath reality." icon = 'icons/obj/antags/eldritch.dmi' icon_state = "rune_carver" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY sharpness = SHARP_EDGED w_class = WEIGHT_CLASS_SMALL wound_bonus = 20 diff --git a/code/modules/antagonists/nukeop/equipment/borgchameleon.dm b/code/modules/antagonists/nukeop/equipment/borgchameleon.dm index 00f3c7effab..b55aef09f84 100644 --- a/code/modules/antagonists/nukeop/equipment/borgchameleon.dm +++ b/code/modules/antagonists/nukeop/equipment/borgchameleon.dm @@ -2,7 +2,7 @@ name = "cyborg chameleon projector" icon = 'icons/obj/device.dmi' icon_state = "shield0" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm b/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm index 6372b402cab..2ed37ffaaa0 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_authentication_disk.dm @@ -1,5 +1,5 @@ /obj/item/disk - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' w_class = WEIGHT_CLASS_TINY inhand_icon_state = "card-id" lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi' diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm index f3d2bde6fb7..48867c60854 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm @@ -7,8 +7,8 @@ GLOBAL_LIST_EMPTY(jam_on_wardec) /obj/item/nuclear_challenge name = "Declaration of War (Challenge Mode)" icon = 'icons/obj/device.dmi' - icon_state = "gangtool-red" - inhand_icon_state = "radio" + icon_state = "nukietalkie" + inhand_icon_state = "nukietalkie" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' desc = "Use to send a declaration of hostilities to the target, delaying your shuttle departure for 20 minutes while they prepare for your assault. \ diff --git a/code/modules/antagonists/pirate/pirate_gangs.dm b/code/modules/antagonists/pirate/pirate_gangs.dm index 646a98ccdab..d3bc0968a12 100644 --- a/code/modules/antagonists/pirate/pirate_gangs.dm +++ b/code/modules/antagonists/pirate/pirate_gangs.dm @@ -27,7 +27,7 @@ GLOBAL_LIST_INIT(heavy_pirate_gangs, init_pirate_gangs(is_heavy = TRUE)) var/ship_template_id = "ERROR" ///the key to the json list of pirate names var/ship_name_pool = "some_json_key" - ///inbound message title the station recieves + ///inbound message title the station receives var/threat_title = "Pay away the Space Bugs" ///the contents of the message sent to the station. ///%SHIPNAME in the content will be replaced with the pirate ship's name diff --git a/code/modules/antagonists/traitor/objectives/final_objective/infect_ai.dm b/code/modules/antagonists/traitor/objectives/final_objective/infect_ai.dm index d0068e6bf8a..c8a4037d20a 100644 --- a/code/modules/antagonists/traitor/objectives/final_objective/infect_ai.dm +++ b/code/modules/antagonists/traitor/objectives/final_objective/infect_ai.dm @@ -3,7 +3,7 @@ description = "Infect the station AI with an experimental virus. Go to %AREA% to receive an infected law upload board \ and use it on the AI core or a law upload console." - ///area type the objective owner must be in to recieve the law upload module + ///area type the objective owner must be in to receive the law upload module var/area/board_area_pickup ///checker on whether we have sent the law upload module var/sent_board = FALSE diff --git a/code/modules/antagonists/traitor/objectives/final_objective/objective_dark_matteor.dm b/code/modules/antagonists/traitor/objectives/final_objective/objective_dark_matteor.dm index aa96ff0014d..6f68891bcfe 100644 --- a/code/modules/antagonists/traitor/objectives/final_objective/objective_dark_matteor.dm +++ b/code/modules/antagonists/traitor/objectives/final_objective/objective_dark_matteor.dm @@ -1,11 +1,11 @@ /datum/traitor_objective/ultimate/dark_matteor name = "Summon a dark matter singularity to consume the station." - description = "Go to %AREA%, and recieve the smuggled satellites + emag. Set up and emag the satellites, \ + description = "Go to %AREA%, and receive the smuggled satellites + emag. Set up and emag the satellites, \ after enough have been recalibrated by the emag, IT COMES. Warning: The dark matter singularity will hunt all creatures, you included." //this is a prototype so this progression is for all basic level kill objectives - ///area type the objective owner must be in to recieve the satellites + ///area type the objective owner must be in to receive the satellites var/area/satellites_spawnarea_type ///checker on whether we have sent the satellites yet. var/sent_satellites = FALSE @@ -43,7 +43,7 @@ return var/area/delivery_area = get_area(user) if(delivery_area.type != satellites_spawnarea_type) - to_chat(user, span_warning("You must be in [initial(satellites_spawnarea_type.name)] to recieve the smuggled satellites.")) + to_chat(user, span_warning("You must be in [initial(satellites_spawnarea_type.name)] to receive the smuggled satellites.")) return sent_satellites = TRUE podspawn(list( diff --git a/code/modules/antagonists/traitor/objectives/final_objective/romerol.dm b/code/modules/antagonists/traitor/objectives/final_objective/romerol.dm index 491c7977b0c..0bfa29f3f16 100644 --- a/code/modules/antagonists/traitor/objectives/final_objective/romerol.dm +++ b/code/modules/antagonists/traitor/objectives/final_objective/romerol.dm @@ -1,11 +1,11 @@ /datum/traitor_objective/ultimate/romerol name = "Spread the experimental bioterror agent Romerol by calling a droppod down at %AREA%" - description = "Go to %AREA%, and recieve the bioterror agent. Spread it to the crew, \ + description = "Go to %AREA%, and receive the bioterror agent. Spread it to the crew, \ and watch then raise from the dead as mindless killing machines. Warning: The undead will attack you too." //this is a prototype so this progression is for all basic level kill objectives - ///area type the objective owner must be in to recieve the romerol + ///area type the objective owner must be in to receive the romerol var/area/romerol_spawnarea_type ///checker on whether we have sent the romerol yet. var/sent_romerol = FALSE @@ -36,7 +36,7 @@ return var/area/delivery_area = get_area(user) if(delivery_area.type != romerol_spawnarea_type) - to_chat(user, span_warning("You must be in [initial(romerol_spawnarea_type.name)] to recieve the bioterror agent.")) + to_chat(user, span_warning("You must be in [initial(romerol_spawnarea_type.name)] to receive the bioterror agent.")) return sent_romerol = TRUE podspawn(list( diff --git a/code/modules/antagonists/traitor/objectives/final_objective/space_dragon.dm b/code/modules/antagonists/traitor/objectives/final_objective/space_dragon.dm index f5bdd176d87..dd4f4955a2a 100644 --- a/code/modules/antagonists/traitor/objectives/final_objective/space_dragon.dm +++ b/code/modules/antagonists/traitor/objectives/final_objective/space_dragon.dm @@ -1,13 +1,13 @@ /datum/traitor_objective/ultimate/space_dragon name = "Find a Space Carp and mutate their DNA with your own using a DNA harvester we will drop pod at %AREA%" - description = "Go to %AREA%, and recieve the Carp DNA scanner. Use it on any Space Carp to harvest its DNA. \ + description = "Go to %AREA%, and receive the Carp DNA scanner. Use it on any Space Carp to harvest its DNA. \ From there, use it on yourself, to mutate your own DNA with it and become a Space Dragon. \ Don't worry about finding one, I'm sure there'll have a wave of carp right when you need it." - ///Area type the objective owner must be in to recieve the DNA extractor. + ///Area type the objective owner must be in to receive the DNA extractor. var/area/dna_scanner_spawnarea_type ///Whether the DNA extraction kit was sent already. - var/recieved_dna_scanner = FALSE + var/received_dna_scanner = FALSE /datum/traitor_objective/ultimate/space_dragon/on_objective_taken(mob/user) . = ..() @@ -27,7 +27,7 @@ /datum/traitor_objective/ultimate/space_dragon/generate_ui_buttons(mob/user) var/list/buttons = list() - if(!recieved_dna_scanner) + if(!received_dna_scanner) buttons += add_ui_button("", "Pressing this will call down a pod with the DNA extraction kit.", "biohazard", "carp_dna") return buttons @@ -35,13 +35,13 @@ . = ..() switch(action) if("carp_dna") - if(recieved_dna_scanner) + if(received_dna_scanner) return var/area/delivery_area = get_area(user) if(delivery_area.type != dna_scanner_spawnarea_type) - to_chat(user, span_warning("You must be in [initial(dna_scanner_spawnarea_type.name)] to recieve the DNA extraction kit.")) + to_chat(user, span_warning("You must be in [initial(dna_scanner_spawnarea_type.name)] to receive the DNA extraction kit.")) return - recieved_dna_scanner = TRUE + received_dna_scanner = TRUE podspawn(list( "target" = get_turf(user), "style" = STYLE_SYNDICATE, diff --git a/code/modules/antagonists/traitor/objectives/final_objective/supermatter_cascade.dm b/code/modules/antagonists/traitor/objectives/final_objective/supermatter_cascade.dm index 8f21d9f1ea8..6c7dfaa2f09 100644 --- a/code/modules/antagonists/traitor/objectives/final_objective/supermatter_cascade.dm +++ b/code/modules/antagonists/traitor/objectives/final_objective/supermatter_cascade.dm @@ -3,7 +3,7 @@ description = "Destroy the station by causing a supermatter cascade. Go to %AREA% to retrieve the destabilizing crystal \ and use it on the supermatter." - ///area type the objective owner must be in to recieve the destabilizing crystal + ///area type the objective owner must be in to receive the destabilizing crystal var/area/dest_crystal_area_pickup ///checker on whether we have sent the crystal yet. var/sent_crystal = FALSE diff --git a/code/modules/art/statues.dm b/code/modules/art/statues.dm index 66480038a40..3d751ca4ab0 100644 --- a/code/modules/art/statues.dm +++ b/code/modules/art/statues.dm @@ -273,7 +273,7 @@ inhand_icon_state = "screwdriver_nuke" lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 5 w_class = WEIGHT_CLASS_TINY diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm index 266b61e2d50..39305b72772 100644 --- a/code/modules/assembly/assembly.dm +++ b/code/modules/assembly/assembly.dm @@ -4,7 +4,7 @@ desc = "A small electronic device that should never exist." icon = 'icons/obj/assemblies/new_assemblies.dmi' icon_state = "" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY w_class = WEIGHT_CLASS_SMALL custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT) throwforce = 2 diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index 4ea085ca9a3..a40f3e3a659 100644 --- a/code/modules/assembly/bomb.dm +++ b/code/modules/assembly/bomb.dm @@ -8,7 +8,7 @@ w_class = WEIGHT_CLASS_NORMAL throw_speed = 2 throw_range = 4 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY var/status = FALSE //0 - not readied //1 - bomb finished with welder var/obj/item/assembly_holder/bombassembly = null //The first part of the bomb is an assembly holder, holding an igniter+some device var/obj/item/tank/bombtank = null //the second part of the bomb is a plasma tank diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm index 4a7e797de58..a79e2ec4924 100644 --- a/code/modules/assembly/holder.dm +++ b/code/modules/assembly/holder.dm @@ -5,7 +5,7 @@ inhand_icon_state = "assembly" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY throwforce = 5 w_class = WEIGHT_CLASS_SMALL throw_speed = 2 diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm index 5b1eb0ee0ee..113a7a8d2aa 100644 --- a/code/modules/assembly/shock_kit.dm +++ b/code/modules/assembly/shock_kit.dm @@ -6,7 +6,7 @@ var/obj/item/clothing/head/helmet/helmet_part = null var/obj/item/electropack/electropack_part = null w_class = WEIGHT_CLASS_HUGE - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY /obj/item/assembly/shock_kit/Destroy() QDEL_NULL(helmet_part) diff --git a/code/modules/awaymissions/mission_code/murderdome.dm b/code/modules/awaymissions/mission_code/murderdome.dm index d558ab812a6..0c3df503ef3 100644 --- a/code/modules/awaymissions/mission_code/murderdome.dm +++ b/code/modules/awaymissions/mission_code/murderdome.dm @@ -9,7 +9,8 @@ /obj/structure/grille/indestructible - flags_1 = CONDUCT_1 | NODECONSTRUCT_1 + flags_1 = NODECONSTRUCT_1 + obj_flags = CONDUCTS_ELECTRICITY resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF /obj/structure/grille/indestructible/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) diff --git a/code/modules/bitrunning/objects/debug.dm b/code/modules/bitrunning/objects/debug.dm index 790aba73116..3b85c4f4585 100644 --- a/code/modules/bitrunning/objects/debug.dm +++ b/code/modules/bitrunning/objects/debug.dm @@ -1,7 +1,7 @@ /obj/item/bitrunning_debug name = "bitrunning debug item" desc = "Adds points and reduces cooldown time for debugging" - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' base_icon_state = "datadisk" icon_state = "datadisk0" diff --git a/code/modules/bitrunning/objects/disks.dm b/code/modules/bitrunning/objects/disks.dm index 9d7c808f356..2911539b0ac 100644 --- a/code/modules/bitrunning/objects/disks.dm +++ b/code/modules/bitrunning/objects/disks.dm @@ -7,7 +7,7 @@ /obj/item/bitrunning_disk name = "generic bitrunning program" desc = "A disk containing source code." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' base_icon_state = "datadisk" icon_state = "datadisk0" /// Name of the choice made diff --git a/code/modules/bitrunning/objects/host_monitor.dm b/code/modules/bitrunning/objects/host_monitor.dm index c35edea6319..2116c7aa6ab 100644 --- a/code/modules/bitrunning/objects/host_monitor.dm +++ b/code/modules/bitrunning/objects/host_monitor.dm @@ -3,7 +3,7 @@ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2) desc = "A complex electronic that will analyze the connection health between host and avatar." - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY icon = 'icons/obj/device.dmi' icon_state = "host_monitor" inhand_icon_state = "electronic" diff --git a/code/modules/bitrunning/virtual_domain/domains/pipedream.dm b/code/modules/bitrunning/virtual_domain/domains/pipedream.dm index c8d7750e979..8b0fdbbd780 100644 --- a/code/modules/bitrunning/virtual_domain/domains/pipedream.dm +++ b/code/modules/bitrunning/virtual_domain/domains/pipedream.dm @@ -76,7 +76,7 @@ r_pocket = /obj/item/assembly/flash/handheld /datum/outfit/factory/qm - name = "Factory Quatermaster" + name = "Factory Quartermaster" id_trim = /datum/id_trim/factory/qm id = /obj/item/card/id/advanced/silver diff --git a/code/modules/cargo/goodies.dm b/code/modules/cargo/goodies.dm index 100ac4b4ce8..cf08c773d06 100644 --- a/code/modules/cargo/goodies.dm +++ b/code/modules/cargo/goodies.dm @@ -212,36 +212,6 @@ cost = PAYCHECK_CREW * 10 contains = list(/obj/item/construction/rld) -/datum/supply_pack/goody/moth_encryption_key - name = "Moffic radio encryption key" - desc = "A hi-tech radio encryption key that allows the wearer to understand moffic when the radio is worn." - cost = PAYCHECK_CREW * 12 - contains = list(/obj/item/encryptionkey/moth) - -/datum/supply_pack/goody/lizard_encryption_key - name = "Draconic radio encryption key" - desc = "A hi-tech radio encryption key that allows the wearer to understand draconic when the radio is worn." - cost = PAYCHECK_CREW * 12 - contains = list(/obj/item/encryptionkey/tiziran) - -/datum/supply_pack/goody/plasmaman_encryption_key - name = "Calcic radio encryption key" - desc = "A hi-tech radio encryption key that allows the wearer to understand calcic when the radio is worn." - cost = PAYCHECK_CREW * 12 - contains = list(/obj/item/encryptionkey/plasmaman) - -/datum/supply_pack/goody/ethereal_encryption_key - name = "Voltaic radio encryption key" - desc = "A hi-tech radio encryption key that allows the wearer to understand voltaic when the radio is worn." - cost = PAYCHECK_CREW * 12 - contains = list(/obj/item/encryptionkey/ethereal) - -/datum/supply_pack/goody/felinid_encryption_key - name = "Felinid radio encryption key" - desc = "A hi-tech radio encryption key that allows the wearer to understand nekomimetic when the radio is worn." - cost = PAYCHECK_CREW * 12 - contains = list(/obj/item/encryptionkey/felinid) - /datum/supply_pack/goody/fishing_toolbox name = "Fishing toolbox" desc = "Complete toolbox set for your fishing adventure. Advanced hooks and lines sold separetely." diff --git a/code/modules/cargo/packs/service.dm b/code/modules/cargo/packs/service.dm index e658db5229e..ac59c5cb8ff 100644 --- a/code/modules/cargo/packs/service.dm +++ b/code/modules/cargo/packs/service.dm @@ -293,5 +293,5 @@ name = "Bar Sign Replacement Kit" desc = "A replacement bar sign, perfect for drawing in customers to your bar, tavern, inn, nightclub, or even coffeehouse!" cost = CARGO_CRATE_VALUE * 14 - contains = list(/obj/item/wallframe/barsign) - crate_name = "bar sign replacement crate" + contains = list(/obj/item/wallframe/barsign/all_access) + crate_name = "bar sign crate" diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm index 503effd258f..126fbf08ce2 100644 --- a/code/modules/cargo/supplypod.dm +++ b/code/modules/cargo/supplypod.dm @@ -704,7 +704,7 @@ /obj/item/disk/cargo/bluespace_pod //Disk that can be inserted into the Express Console to allow for Advanced Bluespace Pods name = "Bluespace Drop Pod Upgrade" desc = "This disk provides a firmware update to the Express Supply Console, granting the use of Nanotrasen's Bluespace Drop Pods to the supply department." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "cargodisk" inhand_icon_state = "card-id" w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/cargo/universal_scanner.dm b/code/modules/cargo/universal_scanner.dm index 2b9bb46e058..98049ce10ab 100644 --- a/code/modules/cargo/universal_scanner.dm +++ b/code/modules/cargo/universal_scanner.dm @@ -5,7 +5,7 @@ desc = "A device used to check objects against Nanotrasen exports database, assign price tags, or ready an item for a custom vending machine." icon = 'icons/obj/device.dmi' icon_state = "export scanner" - inhand_icon_state = "radio" + inhand_icon_state = "export_scanner" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' item_flags = NOBLUDGEON diff --git a/code/modules/client/player_details.dm b/code/modules/client/player_details.dm index 8931dffcdb4..3a880dcdbb5 100644 --- a/code/modules/client/player_details.dm +++ b/code/modules/client/player_details.dm @@ -13,6 +13,7 @@ GLOBAL_LIST_EMPTY(player_details) /// Callbacks invoked when this client logs out var/list/post_logout_callbacks = list() /// List of names this key played under this round + /// assoc list of name -> mob tag var/list/played_names = list() /// Lazylist of preference slots this client has joined the round under /// Numbers are stored as strings @@ -27,14 +28,29 @@ GLOBAL_LIST_EMPTY(player_details) /datum/player_details/New(key) achievements = new(key) -/proc/log_played_names(ckey, ...) +/// Writes all of the `played_names` into an HTML-escaped string. +/datum/player_details/proc/get_played_names() + var/list/previous_names = list() + for(var/previous_name in played_names) + previous_names += html_encode("[previous_name] ([played_names[previous_name]])") + return previous_names.Join("; ") + +/// Adds the new names to the player's played_names list on their /datum/player_details for use of admins. +/// `ckey` should be their ckey, and `data` should be an associative list with the keys being the names they played under and the values being the unique mob ID tied to that name. +/proc/log_played_names(ckey, data) if(!ckey) return - if(args.len < 2) + + var/datum/player_details/writable = GLOB.player_details[ckey] + if(isnull(writable)) return - var/list/names = args.Copy(2) - var/datum/player_details/P = GLOB.player_details[ckey] - if(P) - for(var/name in names) - if(name) - P.played_names |= name + + for(var/name in data) + if(!name) + continue + var/mob_tag = data[name] + var/encoded_name = html_encode(name) + if(writable.played_names.Find("[encoded_name]")) + continue + + writable.played_names += list("[encoded_name]" = mob_tag) diff --git a/code/modules/clothing/chameleon/chameleon_scanner.dm b/code/modules/clothing/chameleon/chameleon_scanner.dm index b6ed86e8640..343ceb5c001 100644 --- a/code/modules/clothing/chameleon/chameleon_scanner.dm +++ b/code/modules/clothing/chameleon/chameleon_scanner.dm @@ -1,7 +1,7 @@ /// Small handheld chameleon item that allows a user to mimic the outfit of another person quickly. /obj/item/chameleon_scanner // No name or desc by default, set up by the cham action - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_TINY diff --git a/code/modules/clothing/outfits/event.dm b/code/modules/clothing/outfits/event.dm index aa85bd795a3..fc94adb9ff5 100644 --- a/code/modules/clothing/outfits/event.dm +++ b/code/modules/clothing/outfits/event.dm @@ -5,8 +5,8 @@ suit = /obj/item/clothing/suit/space/santa back = /obj/item/storage/backpack/santabag backpack_contents = list( - /obj/item/a_gift/anything = 5, -) + /obj/item/gift/anything = 5, + ) gloves = /obj/item/clothing/gloves/color/red head = /obj/item/clothing/head/helmet/space/santahat/beardless shoes = /obj/item/clothing/shoes/sneakers/red diff --git a/code/modules/clothing/outfits/vv_outfit.dm b/code/modules/clothing/outfits/vv_outfit.dm index 1740094fe3d..ec459634115 100644 --- a/code/modules/clothing/outfits/vv_outfit.dm +++ b/code/modules/clothing/outfits/vv_outfit.dm @@ -48,9 +48,6 @@ //Temporary/Internal stuff, do not copy these. var/static/list/ignored_vars = list( NAMEOF(item, animate_movement), -#ifndef EXPERIMENT_515_DONT_CACHE_REF - NAMEOF(item, cached_ref), -#endif NAMEOF(item, datum_flags), NAMEOF(item, fingerprintslast), NAMEOF(item, layer), diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm index 6912e3bed4f..513f7696a89 100644 --- a/code/modules/clothing/spacesuits/_spacesuits.dm +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -226,7 +226,7 @@ * Toggle the space suit's thermal regulator status... * Can't do it if it has no charge. * Arguments: - * * toggler - User mob who recieves the to_chat messages. + * * toggler - User mob who receives the to_chat messages. * * manual_toggle - If false get a differently-flavored message about it being disabled by itself */ /obj/item/clothing/suit/space/proc/toggle_spacesuit(mob/toggler, manual_toggle = TRUE) diff --git a/code/modules/clothing/suits/costume.dm b/code/modules/clothing/suits/costume.dm index 49cb7ffb174..3a480ae1fa6 100644 --- a/code/modules/clothing/suits/costume.dm +++ b/code/modules/clothing/suits/costume.dm @@ -52,7 +52,7 @@ icon_state = "death" inhand_icon_state = null body_parts_covered = CHEST|GROIN|ARMS|LEGS|FEET - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY fire_resist = T0C+5200 flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT diff --git a/code/modules/clothing/under/jobs/cargo.dm b/code/modules/clothing/under/jobs/cargo.dm index e3145fb740d..f6f1ac94cb8 100644 --- a/code/modules/clothing/under/jobs/cargo.dm +++ b/code/modules/clothing/under/jobs/cargo.dm @@ -15,6 +15,7 @@ inhand_icon_state = "lb_suit" body_parts_covered = CHEST|GROIN|ARMS dying_key = DYE_REGISTRY_JUMPSKIRT + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON /obj/item/clothing/under/rank/cargo/tech name = "cargo technician's uniform" diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm index 63bab9afdd9..7ce569c3be2 100644 --- a/code/modules/detectivework/scanner.dm +++ b/code/modules/detectivework/scanner.dm @@ -12,7 +12,7 @@ worn_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT /// if the scanner is currently busy processing diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index cd9a25ea37e..b1d7f764140 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -49,7 +49,7 @@ * Creates a list of people who are elligible to become disease carriers for the event * * Searches through the player list, adding anyone who is elligible to be a disease carrier for the event. This checks for - * whether or not the candidate is alive, a crewmember, is able to recieve a disease, and whether or not a disease is already present in them. + * whether or not the candidate is alive, a crewmember, is able to receive a disease, and whether or not a disease is already present in them. * This proc needs to be run at some point to ensure the event has candidates to infect. */ /datum/round_event_control/disease_outbreak/proc/generate_candidates() @@ -69,7 +69,7 @@ ///Handles checking and alerting admins about the number of valid candidates /datum/event_admin_setup/minimum_candidate_requirement/disease_outbreak - output_text = "There are no candidates eligible to recieve a disease!" + output_text = "There are no candidates eligible to receive a disease!" /datum/event_admin_setup/minimum_candidate_requirement/disease_outbreak/count_candidates() var/datum/round_event_control/disease_outbreak/disease_control = event_control diff --git a/code/modules/events/earthquake.dm b/code/modules/events/earthquake.dm index 4f20f26b93b..84945dc99f0 100644 --- a/code/modules/events/earthquake.dm +++ b/code/modules/events/earthquake.dm @@ -34,7 +34,7 @@ var/list/turfs_to_shred ///A list of turfs directly under turfs_to_shred, for creating a proper chasm to the floor below. var/list/underbelly = list() - ///The edges of our fault line, to recieve light damage. + ///The edges of our fault line, to receive light damage. var/list/edges = list() /datum/round_event/earthquake/setup() diff --git a/code/modules/events/heart_attack.dm b/code/modules/events/heart_attack.dm index f073676c5b4..a7a1740cbc7 100644 --- a/code/modules/events/heart_attack.dm +++ b/code/modules/events/heart_attack.dm @@ -24,7 +24,7 @@ * Performs initial analysis of which living players are eligible to be selected for a heart attack. * * Traverses player_list and checks entries against a series of reviews to see if they should even be considered for a heart attack, - * and at what weight should they be eligible to recieve it. The check for whether or not a heart attack should be "blocked" by something is done + * and at what weight should they be eligible to receive it. The check for whether or not a heart attack should be "blocked" by something is done * later, at the round_event level, so this proc mostly just checks users for whether or not a heart attack should be possible. */ /datum/round_event_control/heart_attack/proc/generate_candidates() @@ -63,7 +63,7 @@ * Picks a victim from a list and attempts to give them a heart attack * * Performs a pick_weight on a list of potential victims. Once selected, the "winner" - * will recieve heart disease. Returns TRUE if a heart attack is successfully given, and + * will receive heart disease. Returns TRUE if a heart attack is successfully given, and * FALSE if something blocks it. */ /datum/round_event/heart_attack/proc/attack_heart() @@ -86,7 +86,7 @@ return FALSE /datum/event_admin_setup/minimum_candidate_requirement/heart_attack - output_text = "There are no candidates eligible to recieve a heart attack!" + output_text = "There are no candidates eligible to receive a heart attack!" /datum/event_admin_setup/minimum_candidate_requirement/heart_attack/count_candidates() var/datum/round_event_control/heart_attack/heart_control = event_control diff --git a/code/modules/events/shuttle_loan/shuttle_loan_datum.dm b/code/modules/events/shuttle_loan/shuttle_loan_datum.dm index ae2ee44da1a..6c325e43da3 100644 --- a/code/modules/events/shuttle_loan/shuttle_loan_datum.dm +++ b/code/modules/events/shuttle_loan/shuttle_loan_datum.dm @@ -1,4 +1,4 @@ -/// One of the potential shuttle loans you might recieve. +/// One of the potential shuttle loans you might receive. /datum/shuttle_loan_situation /// Who sent the shuttle var/sender = "Centcom" diff --git a/code/modules/events/vent_clog.dm b/code/modules/events/vent_clog.dm index 70a7900ef8c..3a0b1b4c183 100644 --- a/code/modules/events/vent_clog.dm +++ b/code/modules/events/vent_clog.dm @@ -133,7 +133,7 @@ /** * Handles the production of our mob and adds it to our living_mobs list * - * Used by the vent clog random event to handle the spawning of mobs. The proc recieves the mob that will be spawned, + * Used by the vent clog random event to handle the spawning of mobs. The proc receives the mob that will be spawned, * and the event's current list of living mobs produced by the event so far. After checking if the vent is welded, the * new mob is created on the vent's turf, then added to the living_mobs list. */ diff --git a/code/modules/explorer_drone/exploration_events/resource.dm b/code/modules/explorer_drone/exploration_events/resource.dm index 2264bc6bd48..3d4fc926517 100644 --- a/code/modules/explorer_drone/exploration_events/resource.dm +++ b/code/modules/explorer_drone/exploration_events/resource.dm @@ -215,7 +215,7 @@ description = "You meet an inhabitant of this site, looking ragged and clearly agitated about something." no_tool_description = "You can't tell what it's trying to convey without a translator." has_tool_description = "Your best translation dictates that it would like to share its hobby with you!" - success_log = "Recieved a gift from a stranger." + success_log = "Received a gift from a stranger." delay_message = "Enduring..." action_text = "Accept gift." loot_type = /obj/item/cardpack/series_one diff --git a/code/modules/fishing/aquarium/fish_analyzer.dm b/code/modules/fishing/aquarium/fish_analyzer.dm index a83aa4296b6..52cf6113f00 100644 --- a/code/modules/fishing/aquarium/fish_analyzer.dm +++ b/code/modules/fishing/aquarium/fish_analyzer.dm @@ -7,7 +7,7 @@ inhand_icon_state = "fish_analyzer" worn_icon_state = "fish_analyzer" desc = "A fish-shaped scanner used to monitor fish's status and evolutionary traits." - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON slot_flags = ITEM_SLOT_BELT throwforce = 3 diff --git a/code/modules/food_and_drinks/machinery/smartfridge.dm b/code/modules/food_and_drinks/machinery/smartfridge.dm index e00cfeaaa7e..4cf66f27a6f 100644 --- a/code/modules/food_and_drinks/machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/machinery/smartfridge.dm @@ -225,10 +225,7 @@ /// Returns the number of items visible in the fridge. Faster than subtracting 2 lists /obj/machinery/smartfridge/proc/visible_items() - var/component_part_count = 0 - for(var/datum/stock_part/datum_part in component_parts) - component_part_count -= 1 - return contents.len - component_part_count + return contents.len - 1 // Circuitboard /obj/machinery/smartfridge/update_overlays() . = ..() diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm index acb911ecfa9..09cffa41f0a 100644 --- a/code/modules/holiday/holidays.dm +++ b/code/modules/holiday/holidays.dm @@ -844,9 +844,9 @@ SSticker.OnRoundstart(CALLBACK(src, PROC_REF(roundstart_celebrate))) GLOB.maintenance_loot += list( list( - /obj/item/toy/xmas_cracker = 3, /obj/item/clothing/head/costume/santa = 1, - /obj/item/a_gift/anything = 1 + /obj/item/gift/anything = 1, + /obj/item/toy/xmas_cracker = 3, ) = maint_holiday_weight, ) diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm index d96bc1ec009..af3bbb060d5 100644 --- a/code/modules/hydroponics/fermenting_barrel.dm +++ b/code/modules/hydroponics/fermenting_barrel.dm @@ -84,7 +84,7 @@ /obj/structure/fermenting_barrel/update_overlays() . = ..() - if(src.renamedByPlayer || HAS_TRAIT(src, TRAIT_HAS_LABEL)) + if(HAS_TRAIT(src, TRAIT_WAS_RENAMED) || HAS_TRAIT(src, TRAIT_HAS_LABEL)) . += mutable_appearance(icon, "[base_icon_state]_overlay_label") /// Adds the fruit to the barrel to queue the fermentation diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index fdc40831948..e1ae5d15323 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -421,7 +421,7 @@ inhand_icon_state = "cultivator" lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 5 throwforce = 7 w_class = WEIGHT_CLASS_SMALL @@ -472,7 +472,7 @@ inhand_icon_state = "hatchet" lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 12 w_class = WEIGHT_CLASS_SMALL throwforce = 15 @@ -518,7 +518,7 @@ throw_speed = 2 throw_range = 3 w_class = WEIGHT_CLASS_BULKY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY armour_penetration = 20 wound_bonus = 10 slot_flags = ITEM_SLOT_BACK @@ -578,7 +578,7 @@ worn_icon_state = "cutters" lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 5 throwforce = 6 w_class = WEIGHT_CLASS_SMALL @@ -608,7 +608,7 @@ worn_icon_state = "cutters" lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 10 throwforce = 8 w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index 0d8e57f13eb..b60623526ba 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -71,7 +71,7 @@ var/display_order = JOB_DISPLAY_ORDER_DEFAULT - ///What types of bounty tasks can this job recieve past the default? + ///What types of bounty tasks can this job receive past the default? var/bounty_types = CIV_JOB_BASIC /// Goodies that can be received via the mail system. diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index cee7b7ca7eb..fcb26731ca1 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -48,6 +48,10 @@ voice_of_god_power = 1.4 //Command staff has authority +/datum/job/chief_engineer/after_spawn(mob/living/spawned, client/player_client) + . = ..() + spawned.add_mob_memory(/datum/memory/key/message_server_key, decrypt_key = GLOB.preset_station_message_server_key) + /datum/job/chief_engineer/get_captaincy_announcement(mob/living/captain) return "Due to staffing shortages, newly promoted Acting Captain [captain.real_name] on deck!" diff --git a/code/modules/library/bibles.dm b/code/modules/library/bibles.dm index ecbcc397dba..6a5d1b1d5c4 100644 --- a/code/modules/library/bibles.dm +++ b/code/modules/library/bibles.dm @@ -251,27 +251,30 @@ GLOBAL_LIST_INIT(bibleitemstates, list( return ..() if(target_mob.stat == DEAD) - target_mob.visible_message(span_danger("[user] smacks [target_mob]'s lifeless corpse with [src].")) - playsound(target_mob, SFX_PUNCH, 25, TRUE, -1) + if(!GLOB.religious_sect?.sect_dead_bless(target_mob, user)) + target_mob.visible_message(span_danger("[user] smacks [target_mob]'s lifeless corpse with [src].")) + playsound(target_mob, SFX_PUNCH, 25, TRUE, -1) return if(user == target_mob) balloon_alert(user, "can't heal yourself!") return - var/smack = TRUE - if(prob(60) && bless(target_mob, user)) - smack = FALSE - else if(iscarbon(target_mob)) + var/smack_chance = DEFAULT_SMACK_CHANCE + if(GLOB.religious_sect) + smack_chance = GLOB.religious_sect.smack_chance + var/success = !prob(smack_chance) && bless(target_mob, user) + if(success) + return + if(iscarbon(target_mob)) var/mob/living/carbon/carbon_target = target_mob if(!istype(carbon_target.head, /obj/item/clothing/head/helmet)) carbon_target.adjustOrganLoss(ORGAN_SLOT_BRAIN, 5, 60) carbon_target.balloon_alert(carbon_target, "you feel dumber!") - if(smack) - target_mob.visible_message(span_danger("[user] beats [target_mob] over the head with [src]!"), \ - span_userdanger("[user] beats [target_mob] over the head with [src]!")) - playsound(target_mob, SFX_PUNCH, 25, TRUE, -1) - log_combat(user, target_mob, "attacked", src) + target_mob.visible_message(span_danger("[user] beats [target_mob] over the head with [src]!"), \ + span_userdanger("[user] beats [target_mob] over the head with [src]!")) + playsound(target_mob, SFX_PUNCH, 25, TRUE, -1) + log_combat(user, target_mob, "attacked", src) /obj/item/book/bible/attackby_storage_insert(datum/storage, atom/storage_holder, mob/user) return !istype(storage_holder, /obj/item/book/bible) diff --git a/code/modules/library/skill_learning/skillchip.dm b/code/modules/library/skill_learning/skillchip.dm index 89822976993..5d40d383fb0 100644 --- a/code/modules/library/skill_learning/skillchip.dm +++ b/code/modules/library/skill_learning/skillchip.dm @@ -9,7 +9,7 @@ name = "skillchip" desc = "This biochip integrates with user's brain to enable mastery of specific skill. Consult certified Nanotrasen neurosurgeon before use." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "skillchip" custom_price = PAYCHECK_CREW * 3 w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/logging/log_entry.dm b/code/modules/logging/log_entry.dm index 778c1ad35c7..3de4e543d1a 100644 --- a/code/modules/logging/log_entry.dm +++ b/code/modules/logging/log_entry.dm @@ -74,11 +74,7 @@ GENERAL_PROTECT_DATUM(/datum/log_entry) output += "[uppertext(category)]: [message]" if(flags & ENTRY_USE_DATA_W_READABLE) -#if DM_VERSION >= 515 output += json_encode(data, JSON_PRETTY_PRINT) -#else - output += json_encode(data) -#endif return output #define MANUAL_JSON_ENTRY(list, key, value) list.Add("\"[key]\":[(!isnull(value)) ? json_encode(value) : "null"]") diff --git a/code/modules/mafia/map_pieces.dm b/code/modules/mafia/map_pieces.dm index f3a6baced78..2d62126466a 100644 --- a/code/modules/mafia/map_pieces.dm +++ b/code/modules/mafia/map_pieces.dm @@ -79,7 +79,7 @@ /datum/map_template/mafia/snowy name = "Snowdin" - description = "Based off of the icy moon map of the same name, the guy who reworked it did a good enough job to recieve a derivative piece of work based on it. Cool!" + description = "Based off of the icy moon map of the same name, the guy who reworked it did a good enough job to receive a derivative piece of work based on it. Cool!" map_suffix = "mafia_snow.dmm" custom_outfit = /datum/outfit/mafia/snowy diff --git a/code/modules/meteors/meteor_spawning.dm b/code/modules/meteors/meteor_spawning.dm index 97c359d03bf..d19d3aff0a5 100644 --- a/code/modules/meteors/meteor_spawning.dm +++ b/code/modules/meteors/meteor_spawning.dm @@ -68,7 +68,7 @@ . = locate(endx, endy, Z) /** - * Recieves a mob candidate, transforms them into a changeling, and hurls them at the station inside of a changeling meteor + * Receives a mob candidate, transforms them into a changeling, and hurls them at the station inside of a changeling meteor * * Takes a given candidate and turns them into a changeling, generates a changeling meteor, and throws it at the station. * Returns the changeling generated by the event, NOT the meteor. This is so that it plays nicely with the dynamic ruleset diff --git a/code/modules/meteors/meteor_types.dm b/code/modules/meteors/meteor_types.dm index b258196ed24..c59a153b022 100644 --- a/code/modules/meteors/meteor_types.dm +++ b/code/modules/meteors/meteor_types.dm @@ -144,9 +144,9 @@ M.playsound_local(src.loc, null, 50, 1, random_frequency, 10, sound_to_use = meteor_sound) /** - * Used to check if someone who has examined a meteor will recieve an award. + * Used to check if someone who has examined a meteor will receive an award. * - * Checks the criteria to recieve the "examine a meteor" award. + * Checks the criteria to receive the "examine a meteor" award. * Admin spawned meteors will not grant the user an achievement. * * Arguments: diff --git a/code/modules/mining/equipment/mineral_scanner.dm b/code/modules/mining/equipment/mineral_scanner.dm index c56077c4dfb..5ff0ccd3cb8 100644 --- a/code/modules/mining/equipment/mineral_scanner.dm +++ b/code/modules/mining/equipment/mineral_scanner.dm @@ -9,7 +9,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_SMALL - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT var/cooldown = 35 var/current_cooldown = 0 @@ -38,7 +38,7 @@ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' w_class = WEIGHT_CLASS_SMALL - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT var/cooldown = 35 var/current_cooldown = 0 diff --git a/code/modules/mining/equipment/mining_tools.dm b/code/modules/mining/equipment/mining_tools.dm index 69903d77591..abb6230fee8 100644 --- a/code/modules/mining/equipment/mining_tools.dm +++ b/code/modules/mining/equipment/mining_tools.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/mining.dmi' icon_state = "pickaxe" inhand_icon_state = "pickaxe" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK force = 15 throwforce = 10 @@ -123,7 +123,7 @@ inhand_icon_state = "shovel" lefthand_file = 'icons/mob/inhands/equipment/mining_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT force = 8 throwforce = 4 @@ -206,7 +206,7 @@ inhand_icon_state = "trench_tool" lefthand_file = 'icons/mob/inhands/equipment/mining_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 15 throwforce = 6 w_class = WEIGHT_CLASS_SMALL diff --git a/code/modules/mining/lavaland/megafauna_loot.dm b/code/modules/mining/lavaland/megafauna_loot.dm index 4bf8fa8c57b..47a334484ba 100644 --- a/code/modules/mining/lavaland/megafauna_loot.dm +++ b/code/modules/mining/lavaland/megafauna_loot.dm @@ -637,7 +637,7 @@ inhand_icon_state = "spectral" lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY sharpness = SHARP_EDGED w_class = WEIGHT_CLASS_BULKY force = 1 diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm index bea2570fc4e..0b499f590d6 100644 --- a/code/modules/mining/ores_coins.dm +++ b/code/modules/mining/ores_coins.dm @@ -298,7 +298,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ attacher = key_name(user) user.balloon_alert_to_viewers("attached rig") return - + if(I.tool_behaviour == TOOL_WRENCH && rig) rig.on_found() if(QDELETED(src)) @@ -410,7 +410,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\ icon = 'icons/obj/economy.dmi' name = "coin" icon_state = "coin" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 1 throwforce = 2 w_class = WEIGHT_CLASS_TINY diff --git a/code/modules/mob/living/basic/heretic/star_gazer.dm b/code/modules/mob/living/basic/heretic/star_gazer.dm index f7ab925440d..3c1591c92ea 100644 --- a/code/modules/mob/living/basic/heretic/star_gazer.dm +++ b/code/modules/mob/living/basic/heretic/star_gazer.dm @@ -65,7 +65,7 @@ return target.apply_status_effect(/datum/status_effect/star_mark) - target.apply_damage(damage = 5, damagetype = CLONE) + target.apply_damage(damage = 5, damagetype = BURN) var/datum/targeting_strategy/target_confirmer = GET_TARGETING_STRATEGY(ai_controller.blackboard[BB_TARGETING_STRATEGY]) for(var/mob/living/nearby_mob in range(1, src)) if(target == nearby_mob || !target_confirmer?.can_attack(src, nearby_mob)) diff --git a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm index 9c5e2697f63..7993fe74a3f 100644 --- a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm +++ b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_actions.dm @@ -120,5 +120,5 @@ devourer.visible_message(span_warning("[devourer] consumes [target]!")) devourer.fully_heal() playsound(devourer, 'sound/effects/splat.ogg', 50, TRUE) - //to be recieved on death + //to be received on death target.forceMove(devourer) diff --git a/code/modules/mob/living/basic/minebots/minebot_upgrades.dm b/code/modules/mob/living/basic/minebots/minebot_upgrades.dm index 6f5d43af1af..47084a90561 100644 --- a/code/modules/mob/living/basic/minebots/minebot_upgrades.dm +++ b/code/modules/mob/living/basic/minebots/minebot_upgrades.dm @@ -2,7 +2,7 @@ name = "minebot melee upgrade" desc = "A minebot upgrade." icon_state = "door_electronics" - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' /obj/item/mine_bot_upgrade/afterattack(mob/living/basic/mining_drone/minebot, mob/user, proximity) . = ..() @@ -39,7 +39,7 @@ name = "minebot AI upgrade" desc = "Can be used to grant sentience to minebots. It's incompatible with minebot armor and melee upgrades, and will override them." icon_state = "door_electronics" - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' sentience_type = SENTIENCE_MINEBOT ///health boost to add var/base_health_add = 5 diff --git a/code/modules/mob/living/basic/pets/cat/feral.dm b/code/modules/mob/living/basic/pets/cat/feral.dm new file mode 100644 index 00000000000..7bb27cd6b4b --- /dev/null +++ b/code/modules/mob/living/basic/pets/cat/feral.dm @@ -0,0 +1,9 @@ +/mob/living/basic/pet/cat/feral + name = "feral cat" + desc = "Kitty!! Wait, no no DON'T BITE-" + health = 30 + maxHealth = 30 + melee_damage_lower = 15 + melee_damage_upper = 7 + ai_controller = /datum/ai_controller/basic_controller/simple_hostile + faction = list(FACTION_CAT, ROLE_SYNDICATE) diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm index b63ca68d7d7..663da2ee8a8 100644 --- a/code/modules/mob/living/brain/MMI.dm +++ b/code/modules/mob/living/brain/MMI.dm @@ -111,6 +111,62 @@ else return ..() +/** + * Forces target brain into the MMI. Mainly intended for admin purposes, as this allows transfer without a mob or user. + * + * Returns FALSE on failure, TRUE on success. + * + * Arguments: + * * new_brain - Brain to be force-inserted into the MMI. Any calling code should handle proper removal of the brain from the mob, as this proc only forceMoves. + */ +/obj/item/mmi/proc/force_brain_into(obj/item/organ/internal/brain/new_brain) + if(isnull(new_brain)) + stack_trace("Proc called with null brain.") + return FALSE + + if(!istype(new_brain)) + stack_trace("Proc called with invalid type: [new_brain] ([new_brain.type])") + return FALSE + + if(isnull(new_brain.brainmob)) + new_brain.forceMove(src) + brain = new_brain + brain.organ_flags |= ORGAN_FROZEN + name = "[initial(name)]: [copytext(new_brain.name, 1, -8)]" + update_appearance() + return TRUE + + new_brain.forceMove(src) + + var/mob/living/brain/new_brain_brainmob = new_brain.brainmob + if(!new_brain_brainmob.key && !new_brain.decoy_override) + new_brain_brainmob.notify_ghost_cloning("Someone has put your brain in a MMI!", source = src) + + set_brainmob(new_brain_brainmob) + new_brain.brainmob = null + brainmob.forceMove(src) + brainmob.container = src + + var/fubar_brain = new_brain.suicided || HAS_TRAIT(brainmob, TRAIT_SUICIDED) + if(!fubar_brain && !(new_brain.organ_flags & ORGAN_FAILING)) + brainmob.set_stat(CONSCIOUS) + + brainmob.reset_perspective() + brain = new_brain + brain.organ_flags |= ORGAN_FROZEN + + name = "[initial(name)]: [brainmob.real_name]" + + update_appearance() + if(istype(brain, /obj/item/organ/internal/brain/alien)) + braintype = "Xenoborg" + else + braintype = "Cyborg" + + SSblackbox.record_feedback("amount", "mmis_filled", 1) + + return TRUE + /obj/item/mmi/attack_self(mob/user) if(!brain) radio.set_on(!radio.is_on()) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index e8a9f5bd467..2f67903e453 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -229,7 +229,7 @@ ///Returns a list of bodyparts with wounds (in case someone has a wound on an otherwise fully healed limb) -/mob/living/carbon/proc/get_wounded_bodyparts(brute = FALSE, burn = FALSE, required_bodytype) +/mob/living/carbon/proc/get_wounded_bodyparts(required_bodytype) var/list/obj/item/bodypart/parts = list() for(var/X in bodyparts) var/obj/item/bodypart/BP = X diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 33f2925d19e..c0900ed5a33 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -789,6 +789,7 @@ VV_DROPDOWN_OPTION(VV_HK_SET_SPECIES, "Set Species") VV_DROPDOWN_OPTION(VV_HK_PURRBATION, "Toggle Purrbation") VV_DROPDOWN_OPTION(VV_HK_APPLY_DNA_INFUSION, "Apply DNA Infusion") + VV_DROPDOWN_OPTION(VV_HK_TURN_INTO_MMI, "Turn into MMI") /mob/living/carbon/human/vv_do_topic(list/href_list) . = ..() @@ -889,6 +890,32 @@ to_chat(usr, "Failed to apply DNA Infusion to [src].") log_admin("[key_name(usr)] failed to apply a DNA Infusion to [key_name(src)].") + if(href_list[VV_HK_TURN_INTO_MMI]) + if(!check_rights(R_DEBUG)) + return + + var/result = input(usr, "This will delete the mob, are you sure?", "Turn into MMI") in list("Yes", "No") + if(result != "Yes") + return + + var/obj/item/organ/internal/brain/target_brain = get_organ_slot(ORGAN_SLOT_BRAIN) + + if(isnull(target_brain)) + to_chat(usr, "This mob has no brain to insert into an MMI.") + return + + var/obj/item/mmi/new_mmi = new(get_turf(src)) + + target_brain.Remove(src) + new_mmi.force_brain_into(target_brain) + + to_chat(usr, "Turned [src] into an MMI.") + log_admin("[key_name(usr)] turned [key_name_and_tag(src)] into an MMI.") + + qdel(src) + + + /mob/living/carbon/human/limb_attack_self() var/obj/item/bodypart/arm = hand_bodyparts[active_hand_index] if(arm) diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index 5b91f400f4c..a99a7fd15b6 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -296,7 +296,7 @@ if(!ishuman(user)) return var/mob/living/carbon/human/human_user = user - if(human_user.dna.species.id == SPECIES_HUMAN && !HAS_MIND_TRAIT(human_user, TRAIT_MIMING)) + if((ishumanbasic(human_user) || isfelinid(human_user)) && !HAS_MIND_TRAIT(human_user, TRAIT_MIMING)) if(human_user.gender == FEMALE) return 'sound/voice/human/womanlaugh.ogg' else diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index dd40b8ac333..3b5341047a8 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1671,7 +1671,7 @@ GLOBAL_LIST_EMPTY(fire_appearances) /mob/living/proc/set_fire_stacks(stacks, fire_type = /datum/status_effect/fire_handler/fire_stacks, remove_wet_stacks = TRUE) if(stacks < 0) //Shouldn't happen, ever - CRASH("set_fire_stacks recieved negative [stacks] fire stacks") + CRASH("set_fire_stacks received negative [stacks] fire stacks") if(remove_wet_stacks) remove_status_effect(/datum/status_effect/fire_handler/wet_stacks) @@ -1684,7 +1684,7 @@ GLOBAL_LIST_EMPTY(fire_appearances) /mob/living/proc/set_wet_stacks(stacks, wet_type = /datum/status_effect/fire_handler/wet_stacks, remove_fire_stacks = TRUE) if(stacks < 0) - CRASH("set_wet_stacks recieved negative [stacks] wet stacks") + CRASH("set_wet_stacks received negative [stacks] wet stacks") if(remove_fire_stacks) remove_status_effect(/datum/status_effect/fire_handler/fire_stacks) diff --git a/code/modules/mob/living/silicon/robot/robot_model.dm b/code/modules/mob/living/silicon/robot/robot_model.dm index 80809bb5a40..1bf4593afb8 100644 --- a/code/modules/mob/living/silicon/robot/robot_model.dm +++ b/code/modules/mob/living/silicon/robot/robot_model.dm @@ -8,13 +8,13 @@ **/ /obj/item/robot_model name = "Default" - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "std_mod" w_class = WEIGHT_CLASS_GIGANTIC inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY ///Host of this model var/mob/living/silicon/robot/robot ///Icon of the module selection screen diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm index 078ec2749b5..e17fd09e0fa 100644 --- a/code/modules/mob/living/simple_animal/slime/life.dm +++ b/code/modules/mob/living/simple_animal/slime/life.dm @@ -19,7 +19,6 @@ handle_nutrition(seconds_per_tick, times_fired) if(QDELETED(src)) // Stop if the slime split during handle_nutrition() return - reagents.remove_all(0.5 * REAGENTS_METABOLISM * reagents.reagent_list.len * seconds_per_tick) //Slimes are such snowflakes handle_targets(seconds_per_tick, times_fired) if(ckey) return diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm index b03f46d5a44..8d0770d2bf5 100644 --- a/code/modules/mob/living/simple_animal/slime/slime.dm +++ b/code/modules/mob/living/simple_animal/slime/slime.dm @@ -120,7 +120,6 @@ else var/datum/action/innate/slime/evolve/evolve_action = new evolve_action.Grant(src) - create_reagents(100) set_slime_type(new_type) . = ..() set_nutrition(700) @@ -147,17 +146,6 @@ /mob/living/simple_animal/slime/pet docile = TRUE -/mob/living/simple_animal/slime/create_reagents(max_vol, flags) - . = ..() - RegisterSignals(reagents, list(COMSIG_REAGENTS_NEW_REAGENT, COMSIG_REAGENTS_DEL_REAGENT), PROC_REF(on_reagent_change)) - RegisterSignal(reagents, COMSIG_QDELETING, PROC_REF(on_reagents_del)) - -/// Handles removing signal hooks incase someone is crazy enough to reset the reagents datum. -/mob/living/simple_animal/slime/proc/on_reagents_del(datum/reagents/reagents) - SIGNAL_HANDLER - UnregisterSignal(reagents, list(COMSIG_REAGENTS_NEW_REAGENT, COMSIG_REAGENTS_DEL_REAGENT, COMSIG_QDELETING)) - return NONE - /mob/living/simple_animal/slime/proc/set_slime_type(new_type) slime_type = new new_type update_name() @@ -188,23 +176,6 @@ icon_state = icon_dead ..() -/** - * Snowflake handling of reagent movespeed modifiers - * - * Should be moved to the reagents at some point in the future. As it is I'm in a hurry. - */ -/mob/living/simple_animal/slime/proc/on_reagent_change(datum/reagents/holder, ...) - SIGNAL_HANDLER - remove_movespeed_modifier(/datum/movespeed_modifier/slime_reagentmod) - var/amount = 0 - if(reagents.has_reagent(/datum/reagent/medicine/morphine)) // morphine slows slimes down - amount = 2 - if(reagents.has_reagent(/datum/reagent/consumable/frostoil)) // Frostoil also makes them move VEEERRYYYYY slow - amount = 5 - if(amount) - add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/slime_reagentmod, multiplicative_slowdown = amount) - return NONE - /mob/living/simple_animal/slime/updatehealth() . = ..() var/mod = 0 diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index 3038d6a97ad..51b8ed70a3b 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -34,7 +34,7 @@ add_to_player_list() lastKnownIP = client.address computer_id = client.computer_id - log_access("Mob Login: [key_name(src)] was assigned to a [type]") + log_access("Mob Login: [key_name(src)] was assigned to a [type] ([tag])") world.update_status() client.clear_screen() //remove hud items just in case client.images = list() @@ -112,7 +112,13 @@ for(var/foo in client.player_details.post_login_callbacks) var/datum/callback/CB = foo CB.Invoke() - log_played_names(client.ckey,name,real_name) + log_played_names( + client.ckey, + list( + "[name]" = tag, + "[real_name]" = tag, + ), + ) auto_deadmin_on_login() log_message("Client [key_name(src)] has taken ownership of mob [src]([src.type])", LOG_OWNERSHIP) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 30027e5ba4b..0747d337b2d 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -30,6 +30,7 @@ else if(ckey) stack_trace("Mob without client but with associated ckey, [ckey], has been deleted.") + unset_machine() remove_from_mob_list() remove_from_dead_mob_list() remove_from_alive_mob_list() @@ -1241,14 +1242,24 @@ log_message("[src] name changed from [oldname] to [newname]", LOG_OWNERSHIP) - log_played_names(ckey, newname) + log_played_names( + ckey, + list( + "[newname]" = tag, + ), + ) real_name = newname name = newname if(mind) mind.name = newname if(mind.key) - log_played_names(mind.key,newname) //Just in case the mind is unsynced at the moment. + log_played_names( + ckey(mind.key), + list( + "[newname]" = tag, + ), + ) //Just in case the mind is unsynced at the moment. if(oldname) //update the datacore records! This is goig to be a bit costly. diff --git a/code/modules/mob_spawn/ghost_roles/fugitive_hunter_roles.dm b/code/modules/mob_spawn/ghost_roles/fugitive_hunter_roles.dm index 2df27efdf84..5b9e043349e 100644 --- a/code/modules/mob_spawn/ghost_roles/fugitive_hunter_roles.dm +++ b/code/modules/mob_spawn/ghost_roles/fugitive_hunter_roles.dm @@ -76,7 +76,7 @@ prompt_name = "a psyker" you_are_text = "Ahahaha! I am a Psyker Shikari!" flavour_text = "Man, waking up from a gorenap always BLOWS. Finding dealers in this sector of space is always difficult, but \ - we've recieved an offer that might set us up for life! Kidnap some fugitives and get FREE GORE!" + we've received an offer that might set us up for life! Kidnap some fugitives and get FREE GORE!" back_story = HUNTER_PACK_PSYKER outfit = /datum/outfit/psyker diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index 895da54bf37..351cd2aa757 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -30,7 +30,7 @@ ///List of stored files on this drive. Use `store_file` and `remove_file` instead of modifying directly! var/list/datum/computer_file/stored_files = list() - ///Non-static list of programs the computer should recieve on Initialize. + ///Non-static list of programs the computer should receive on Initialize. var/list/datum/computer_file/starting_programs = list() ///Static list of default programs that come with ALL computers, here so computers don't have to repeat this. var/static/list/datum/computer_file/default_programs = list( diff --git a/code/modules/modular_computers/computers/item/disks/computer_disk.dm b/code/modules/modular_computers/computers/item/disks/computer_disk.dm index c7d7688c896..d4cbbb3ba77 100644 --- a/code/modules/modular_computers/computers/item/disks/computer_disk.dm +++ b/code/modules/modular_computers/computers/item/disks/computer_disk.dm @@ -1,7 +1,7 @@ /obj/item/computer_disk name = "data disk" desc = "Removable disk used to store data." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "datadisk6" w_class = WEIGHT_CLASS_TINY ///The amount of storage space is on the disk diff --git a/code/modules/pai/pai.dm b/code/modules/pai/pai.dm index 3c0a1bfb82c..da7684794bb 100644 --- a/code/modules/pai/pai.dm +++ b/code/modules/pai/pai.dm @@ -31,7 +31,7 @@ /// If someone has enabled/disabled the pAIs ability to holo var/can_holo = TRUE - /// Whether this pAI can recieve radio messages + /// Whether this pAI can receive radio messages var/can_receive = TRUE /// Whether this pAI can transmit radio messages var/can_transmit = TRUE diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 40e99eefe6a..5ee432b365e 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -236,7 +236,7 @@ label.remove_label() label.apply_label() to_chat(user, span_notice("You have successfully renamed \the [oldname] to [O].")) - O.renamedByPlayer = TRUE + ADD_TRAIT(O, TRAIT_WAS_RENAMED, PEN_LABEL_TRAIT) O.update_appearance(UPDATE_ICON) if(penchoice == "Description") @@ -249,7 +249,7 @@ else O.AddComponent(/datum/component/rename, O.name, input) to_chat(user, span_notice("You have successfully changed [O]'s description.")) - O.renamedByPlayer = TRUE + ADD_TRAIT(O, TRAIT_WAS_RENAMED, PEN_LABEL_TRAIT) O.update_appearance(UPDATE_ICON) if(penchoice == "Reset") @@ -265,7 +265,7 @@ label.apply_label() to_chat(user, span_notice("You have successfully reset [O]'s name and description.")) - O.renamedByPlayer = FALSE + REMOVE_TRAIT(O, TRAIT_WAS_RENAMED, PEN_LABEL_TRAIT) O.update_appearance(UPDATE_ICON) /obj/item/pen/get_writing_implement_details() diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm index b168aaf54da..b33c37290c2 100644 --- a/code/modules/photography/camera/camera.dm +++ b/code/modules/photography/camera/camera.dm @@ -16,7 +16,7 @@ light_power = FLASH_LIGHT_POWER light_on = FALSE w_class = WEIGHT_CLASS_SMALL - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_NECK custom_materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT*1.5) custom_price = PAYCHECK_CREW * 2 diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 3951ae44def..13354f6bc54 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -439,7 +439,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri throw_speed = 3 throw_range = 5 mats_per_unit = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.1, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.1) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT attack_verb_continuous = list("whips", "lashes", "disciplines", "flogs") attack_verb_simple = list("whip", "lash", "discipline", "flog") diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm index 3d6ec46e496..1e46021a891 100644 --- a/code/modules/power/lighting/light.dm +++ b/code/modules/power/lighting/light.dm @@ -405,7 +405,7 @@ deconstruct() return to_chat(user, span_userdanger("You stick \the [tool] into the light socket!")) - if(has_power() && (tool.flags_1 & CONDUCT_1)) + if(has_power() && (tool.obj_flags & CONDUCTS_ELECTRICITY)) do_sparks(3, TRUE, src) if (prob(75)) electrocute_mob(user, get_area(src), src, (rand(7,10) * 0.1), TRUE) @@ -448,7 +448,7 @@ ..() if(status != LIGHT_BROKEN && status != LIGHT_EMPTY) return - if(!on || !(attacking_object.flags_1 & CONDUCT_1)) + if(!on || !(attacking_object.obj_flags & CONDUCTS_ELECTRICITY)) return if(prob(12)) electrocute_mob(user, get_area(src), src, 0.3, TRUE) diff --git a/code/modules/power/pipecleaners.dm b/code/modules/power/pipecleaners.dm index f052913c2e7..201f7a955aa 100644 --- a/code/modules/power/pipecleaners.dm +++ b/code/modules/power/pipecleaners.dm @@ -197,7 +197,7 @@ By design, d1 is the smallest direction and d2 is the highest throw_speed = 3 throw_range = 5 mats_per_unit = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.1, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.1) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT attack_verb_continuous = list("whips", "lashes", "disciplines", "flogs") attack_verb_simple = list("whip", "lash", "discipline", "flog") diff --git a/code/modules/projectiles/ammunition/_ammunition.dm b/code/modules/projectiles/ammunition/_ammunition.dm index e492afb776b..45e09db624c 100644 --- a/code/modules/projectiles/ammunition/_ammunition.dm +++ b/code/modules/projectiles/ammunition/_ammunition.dm @@ -4,7 +4,7 @@ icon = 'icons/obj/weapons/guns/ammo.dmi' icon_state = "s-casing" worn_icon_state = "bullet" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT throwforce = 0 w_class = WEIGHT_CLASS_TINY diff --git a/code/modules/projectiles/boxes_magazines/_box_magazine.dm b/code/modules/projectiles/boxes_magazines/_box_magazine.dm index 85d7c90ec76..15135bee1a5 100644 --- a/code/modules/projectiles/boxes_magazines/_box_magazine.dm +++ b/code/modules/projectiles/boxes_magazines/_box_magazine.dm @@ -3,7 +3,7 @@ name = "ammo box (null_reference_exception)" desc = "A box of ammo." icon = 'icons/obj/weapons/guns/ammo.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT inhand_icon_state = "syringe_kit" worn_icon_state = "ammobox" diff --git a/code/modules/projectiles/boxes_magazines/internal/_internal.dm b/code/modules/projectiles/boxes_magazines/internal/_internal.dm index c14e66af82c..0579d19234b 100644 --- a/code/modules/projectiles/boxes_magazines/internal/_internal.dm +++ b/code/modules/projectiles/boxes_magazines/internal/_internal.dm @@ -1,6 +1,6 @@ /obj/item/ammo_box/magazine/internal desc = "Oh god, this shouldn't be here" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = ABSTRACT //internals magazines are accessible, so replace spent ammo if full when trying to put a live one in diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index dd1bf3d6017..eba77d57446 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -8,7 +8,7 @@ icon_state = "revolver" inhand_icon_state = "gun" worn_icon_state = "gun" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY appearance_flags = TILE_BOUND|PIXEL_SCALE|LONG_GLIDE|KEEP_TOGETHER slot_flags = ITEM_SLOT_BELT custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT) diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index a132e169bdf..a7186ae6439 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -14,7 +14,7 @@ load_sound = 'sound/weapons/gun/shotgun/insert_shell.ogg' w_class = WEIGHT_CLASS_BULKY force = 10 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK accepted_magazine_type = /obj/item/ammo_box/magazine/internal/shot semi_auto = FALSE @@ -264,7 +264,7 @@ w_class = WEIGHT_CLASS_BULKY weapon_weight = WEAPON_MEDIUM force = 10 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK accepted_magazine_type = /obj/item/ammo_box/magazine/internal/shot/dual sawn_desc = "Omar's coming!" @@ -316,7 +316,7 @@ accepted_magazine_type = /obj/item/ammo_box/magazine/internal/shot/bounty weapon_weight = WEAPON_MEDIUM semi_auto = TRUE - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 18 //it has a hook on it sharpness = SHARP_POINTY //it does in fact, have a hook on it attack_verb_continuous = list("slashes", "hooks", "stabs") diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index 455032f17d8..36dd4fcb8db 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -363,7 +363,7 @@ name = "minebot cooldown decrease" desc = "Decreases the cooldown of a kinetic accelerator. Only rated for minebot use." icon_state = "door_electronics" - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' denied_type = /obj/item/borg/upgrade/modkit/cooldown/minebot modifier = 10 cost = 0 diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm index e0130f9f16a..5a0d29be045 100644 --- a/code/modules/projectiles/guns/energy/laser.dm +++ b/code/modules/projectiles/guns/energy/laser.dm @@ -122,7 +122,7 @@ worn_icon_state = null w_class = WEIGHT_CLASS_BULKY force = 10 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK ammo_type = list(/obj/item/ammo_casing/energy/laser/accelerator) pin = null diff --git a/code/modules/projectiles/guns/energy/pulse.dm b/code/modules/projectiles/guns/energy/pulse.dm index 72b4ce4a141..f441937e60a 100644 --- a/code/modules/projectiles/guns/energy/pulse.dm +++ b/code/modules/projectiles/guns/energy/pulse.dm @@ -7,7 +7,7 @@ w_class = WEIGHT_CLASS_BULKY force = 10 modifystate = TRUE - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK ammo_type = list(/obj/item/ammo_casing/energy/laser/pulse, /obj/item/ammo_casing/energy/electrode, /obj/item/ammo_casing/energy/laser) cell_type = /obj/item/stock_parts/cell/pulse diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 020308270f6..dd55ef02d89 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -6,7 +6,7 @@ worn_icon_state = null shaded_charge = TRUE w_class = WEIGHT_CLASS_HUGE - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BACK ammo_type = list(/obj/item/ammo_casing/energy/ion) @@ -100,7 +100,7 @@ icon_state = "plasmacutter" inhand_icon_state = "plasmacutter" ammo_type = list(/obj/item/ammo_casing/energy/plasma) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY attack_verb_continuous = list("attacks", "slashes", "cuts", "slices") attack_verb_simple = list("attack", "slash", "cut", "slice") force = 12 diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index 94c1e7502a8..0c1c27c9c07 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -7,7 +7,7 @@ lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' //not really a gun and some toys use these inhands righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi' fire_sound = 'sound/weapons/emitter.ogg' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY w_class = WEIGHT_CLASS_HUGE ///what kind of magic is this var/school = SCHOOL_EVOCATION diff --git a/code/modules/projectiles/guns/special/meat_hook.dm b/code/modules/projectiles/guns/special/meat_hook.dm index dd83bbd030f..cfa932a6541 100644 --- a/code/modules/projectiles/guns/special/meat_hook.dm +++ b/code/modules/projectiles/guns/special/meat_hook.dm @@ -1,5 +1,7 @@ -//Meat Hook +#define TRAIT_HOOKED "hooked" +#define IMMOBILIZATION_TIMER (0.25 SECONDS) //! How long we immobilize the firer after firing - we do cancel the immobilization early if nothing is hit. +/// Meat Hook /obj/item/gun/magic/hook name = "meat hook" desc = "Mid or feed." @@ -22,8 +24,22 @@ /obj/item/gun/magic/hook/can_trigger_gun(mob/living/user, akimbo_usage) // This isn't really a gun, so it shouldn't be checking for TRAIT_NOGUNS, a firing pin (pinless), or a trigger guard (guardless) if(akimbo_usage) return FALSE //this would be kinda weird while shooting someone down. + if(HAS_TRAIT(user, TRAIT_IMMOBILIZED)) + return FALSE return TRUE +/obj/item/gun/magic/hook/suicide_act(mob/living/user) + var/obj/item/bodypart/head/removable = user.get_bodypart(BODY_ZONE_HEAD) + if(isnull(removable)) + user.visible_message(span_suicide("[user] stuffs the chain of the [src] down the hole where their head should be! It looks like [user.p_theyre()] trying to commit suicide!")) + return OXYLOSS + + playsound(get_turf(src), fire_sound, 50, TRUE, -1) + user.visible_message(span_suicide("[user] is using the [src] on their [user.p_their()] head! It looks like [user.p_theyre()] trying to commit suicide!")) + playsound(get_turf(src), 'sound/weapons/bladeslice.ogg', 70) + removable.dismember(silent = FALSE) + return BRUTELOSS + /obj/item/ammo_casing/magic/hook name = "hook" desc = "A hook." @@ -41,37 +57,154 @@ armour_penetration = 60 damage_type = BRUTE hitsound = 'sound/effects/splat.ogg' - var/chain - var/knockdown_time = (0.5 SECONDS) - var/chain_icon = 'icons/effects/beam.dmi' //SKYRAT ADDITION + /// The chain we send out while we are in motion, referred to as "initial" to not get confused with the chain we use to reel the victim in. + var/datum/beam/initial_chain + var/chain_icon = 'icons/effects/beam.dmi' // SKYRAT EDIT ADDITION /obj/projectile/hook/fire(setAngle) if(firer) - chain = firer.Beam(src, icon_state = "chain", icon = chain_icon, emissive = FALSE) //SKYRAT EDIT, original: chain = firer.Beam(src, icon_state = "chain", emissive = FALSE) - ..() - //TODO: root the firer until the chain returns + initial_chain = firer.Beam(src, icon_state = "chain", icon = chain_icon, emissive = FALSE) // SKYRAT EDIT CHANGE - Adds icon arg - ORIGINAL: chain = firer.Beam(src, icon_state = "chain", emissive = FALSE) + ADD_TRAIT(firer, TRAIT_IMMOBILIZED, REF(src)) + addtimer(TRAIT_CALLBACK_REMOVE(firer, TRAIT_IMMOBILIZED, REF(src)), IMMOBILIZATION_TIMER) // safety if we miss, if we get a hit we stay immobilized + return ..() /obj/projectile/hook/on_hit(atom/target, blocked = 0, pierce_hit) . = ..() - if(ismovable(target)) - var/atom/movable/A = target - if(A.anchored) - return - A.visible_message(span_danger("[A] is snagged by [firer]'s hook!")) - //Should really be a movement loop, but I don't want to support moving 5 tiles a tick - //It just looks bad - new /datum/forced_movement(A, get_turf(firer), 5, TRUE) - if (isliving(target)) - var/mob/living/fresh_meat = target - fresh_meat.Knockdown(knockdown_time) - return - //TODO: keep the chain beamed to A - //TODO: needs a callback to delete the chain - -/obj/projectile/hook/Destroy() - qdel(chain) + if(!ismovable(target)) + return + + var/atom/movable/victim = target + if(victim.anchored || HAS_TRAIT_FROM(victim, TRAIT_HOOKED, REF(firer))) + return + + victim.visible_message(span_danger("[victim] is snagged by [firer]'s hook!")) + + var/datum/hook_and_move/puller = new + puller.begin_pulling(firer, victim, get_turf(firer)) + REMOVE_TRAIT(firer, TRAIT_IMMOBILIZED, REF(src)) + +/obj/projectile/hook/Destroy(force) + QDEL_NULL(initial_chain) + return ..() + +/// Lightweight datum that just handles moving a target for the hook. +/// For the love of God, do not use this outside this file. +/datum/hook_and_move + /// Weakref to the victim we are dragging + var/datum/weakref/victim_ref = null + /// Weakref of the destination that the victim is heading towards. + var/datum/weakref/destination_ref = null + /// Weakref to the firer of the hook + var/datum/weakref/firer_ref = null + /// String to the REF() of the dude that fired us so we can ensure we always cleanup our traits + var/firer_ref_string = null + + /// The last time our movement fired. + var/last_movement = 0 + /// The chain beam we currently own. + var/datum/beam/return_chain = null + + /// How many steps we force the victim to take per tick + var/steps_per_tick = 5 + /// How long we knockdown the victim for. + var/knockdown_time = (0.5 SECONDS) + + /// List of traits that prevent the user from moving. More restrictive than attempting to fire the hook by design. + var/static/list/prevent_movement_traits = list( + TRAIT_IMMOBILIZED, + TRAIT_UI_BLOCKED, + ) + +/datum/hook_and_move/Destroy(force) + STOP_PROCESSING(SSfastprocess, src) + QDEL_NULL(return_chain) return ..() +/// Uses fastprocessing to move our victim to the destination at a rather fast speed. +/datum/hook_and_move/proc/begin_pulling(atom/movable/firer, atom/movable/victim, atom/destination) + return_chain = firer.Beam(victim, icon_state = "chain", emissive = FALSE) + + firer_ref_string = REF(firer) + ADD_TRAIT(victim, TRAIT_HOOKED, firer_ref_string) + firer.add_traits(prevent_movement_traits, REF(src)) + if(isliving(victim)) + var/mob/living/fresh_meat = victim + fresh_meat.Knockdown(knockdown_time) + + destination_ref = WEAKREF(destination) + victim_ref = WEAKREF(victim) + firer_ref = WEAKREF(firer) + + START_PROCESSING(SSfastprocess, src) + +/// Cancels processing and removes the trait from the victim. +/datum/hook_and_move/proc/end_movement() + var/atom/movable/firer = firer_ref?.resolve() + if(!QDELETED(firer)) + firer.remove_traits(prevent_movement_traits, REF(src)) + + var/atom/movable/victim = victim_ref?.resolve() + if(!QDELETED(victim)) + REMOVE_TRAIT(victim, TRAIT_HOOKED, firer_ref_string) + + qdel(src) + +/datum/hook_and_move/process(seconds_per_tick) + var/atom/movable/victim = victim_ref?.resolve() + var/atom/destination = destination_ref?.resolve() + if(QDELETED(victim) || QDELETED(destination)) + end_movement() + return + + var/steps_to_take = round(steps_per_tick * (world.time - last_movement)) + if(steps_to_take <= 0) + return + + var/movement_result = attempt_movement(victim, destination) + if(!movement_result || (victim.loc == destination.loc)) // either we failed our movement or our mission is complete + end_movement() + +/// Attempts to move the victim towards the destination. Returns TRUE if we do a successful movement, FALSE otherwise. +/// second_attempt is a boolean to prevent infinite recursion. +/// If this whole series of events wasn't reliant on SSfastprocess firing as fast as it does, it would have been more useful to make this a move loop datum. But, we need the speed. +/datum/hook_and_move/proc/attempt_movement(atom/movable/subject, atom/target, second_attempt = FALSE) + var/actually_moved = FALSE + if(!second_attempt) + actually_moved = step_towards(subject, target) + + if(actually_moved) + return TRUE + + // alright now the code fucking sucks + var/subject_x = subject.x + var/subject_y = subject.y + var/target_x = target.x + var/target_y = target.y + + //If we're going x, step x + if((target_x > subject_x) && step(subject, EAST)) + actually_moved = TRUE + else if((target_x < subject_x) && step(subject, WEST)) + actually_moved = TRUE + + if(actually_moved) + return TRUE + + //If the x step failed, go y + if((target_y > subject_y) && step(subject, NORTH)) + actually_moved = TRUE + else if((target_y < subject_y) && step(subject, SOUTH)) + actually_moved = TRUE + + if(actually_moved) + return TRUE + + // if we fail twice, abort. otherwise queue up the second attempt. + if(second_attempt) + return FALSE + + return attempt_movement(subject, target, second_attempt = TRUE) + //just a nerfed version of the real thing for the bounty hunters. /obj/item/gun/magic/hook/bounty name = "hook" @@ -83,3 +216,12 @@ /obj/projectile/hook/bounty damage = 0 stamina = 40 + +/// Debug hook for fun (AKA admin abuse). doesn't do any more damage or anything just lets you wildfire it. +/obj/item/gun/magic/hook/debug + name = "super meat hook" + max_charges = 100 + recharge_rate = 1 + +#undef TRAIT_HOOKED +#undef IMMOBILIZATION_TIMER diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm index 5437a7096da..9a6b3fbb471 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/pins.dm @@ -5,7 +5,7 @@ icon_state = "firing_pin" inhand_icon_state = "pen" worn_icon_state = "pen" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY w_class = WEIGHT_CLASS_TINY attack_verb_continuous = list("pokes") attack_verb_simple = list("poke") diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index f897d8f4bb2..2629a073120 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -352,20 +352,12 @@ heating = 5 if(holder.has_reagent(/datum/reagent/cryostylane)) holder.remove_reagent(/datum/reagent/cryostylane, 5 * REM * seconds_per_tick) - if(isslime(affected_mob)) - heating = rand(5, 20) if(15 to 25) heating = 10 - if(isslime(affected_mob)) - heating = rand(10, 20) if(25 to 35) heating = 15 - if(isslime(affected_mob)) - heating = rand(15, 20) if(35 to INFINITY) heating = 20 - if(isslime(affected_mob)) - heating = rand(20, 25) affected_mob.adjust_bodytemperature(heating * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick) /datum/reagent/consumable/frostoil @@ -387,24 +379,16 @@ cooling = -10 if(holder.has_reagent(/datum/reagent/consumable/capsaicin)) holder.remove_reagent(/datum/reagent/consumable/capsaicin, 5 * REM * seconds_per_tick) - if(isslime(affected_mob)) - cooling = -rand(5, 20) if(15 to 25) cooling = -20 - if(isslime(affected_mob)) - cooling = -rand(10, 20) if(25 to 35) cooling = -30 if(prob(1)) affected_mob.emote("shiver") - if(isslime(affected_mob)) - cooling = -rand(15, 20) if(35 to INFINITY) cooling = -40 if(prob(5)) affected_mob.emote("shiver") - if(isslime(affected_mob)) - cooling = -rand(20, 25) affected_mob.adjust_bodytemperature(cooling * TEMPERATURE_DAMAGE_COEFFICIENT * REM * seconds_per_tick, 50) /datum/reagent/consumable/frostoil/expose_turf(turf/exposed_turf, reac_volume) diff --git a/code/modules/reagents/reagent_containers/cups/drinkingglass.dm b/code/modules/reagents/reagent_containers/cups/drinkingglass.dm index d795a5e0dcf..8745e61cd92 100644 --- a/code/modules/reagents/reagent_containers/cups/drinkingglass.dm +++ b/code/modules/reagents/reagent_containers/cups/drinkingglass.dm @@ -34,7 +34,7 @@ /obj/item/reagent_containers/cup/glass/drinkingglass/on_reagent_change(datum/reagents/holder, ...) . = ..() if(!length(reagents.reagent_list)) - renamedByPlayer = FALSE //so new drinks can rename the glass + REMOVE_TRAIT(src, TRAIT_WAS_RENAMED, PEN_LABEL_TRAIT) //so new drinks can rename the glass // Having our icon state change removes fill thresholds /obj/item/reagent_containers/cup/glass/drinkingglass/on_cup_change(datum/glass_style/style) @@ -68,13 +68,13 @@ custom_price = PAYCHECK_CREW * 0.4 /obj/item/reagent_containers/cup/glass/drinkingglass/shotglass/update_name(updates) - if(renamedByPlayer) + if(HAS_TRAIT(src, TRAIT_WAS_RENAMED)) return . = ..() name = "[length(reagents.reagent_list) ? "filled " : ""]shot glass" /obj/item/reagent_containers/cup/glass/drinkingglass/shotglass/update_desc(updates) - if(renamedByPlayer) + if(HAS_TRAIT(src, TRAIT_WAS_RENAMED)) return . = ..() if(length(reagents.reagent_list)) diff --git a/code/modules/reagents/reagent_containers/cups/drinks.dm b/code/modules/reagents/reagent_containers/cups/drinks.dm index 88b7d5baabf..f8948ae6eea 100644 --- a/code/modules/reagents/reagent_containers/cups/drinks.dm +++ b/code/modules/reagents/reagent_containers/cups/drinks.dm @@ -51,7 +51,7 @@ custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT) has_variable_transfer_amount = FALSE volume = 5 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY spillable = TRUE resistance_flags = FIRE_PROOF isGlass = FALSE diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 4f4b11dfb9c..1d056f16a0b 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -267,7 +267,7 @@ inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT /obj/item/dest_tagger/borg diff --git a/code/modules/religion/burdened/burdened_trauma.dm b/code/modules/religion/burdened/burdened_trauma.dm index b6a1052dab4..20fe35fc751 100644 --- a/code/modules/religion/burdened/burdened_trauma.dm +++ b/code/modules/religion/burdened/burdened_trauma.dm @@ -38,7 +38,7 @@ COMSIG_CARBON_LOSE_MUTATION, COMSIG_CARBON_GAIN_TRAUMA, COMSIG_CARBON_LOSE_TRAUMA, - )) + )) return ..() /** diff --git a/code/modules/religion/honorbound/honorbound_rites.dm b/code/modules/religion/honorbound/honorbound_rites.dm index c9c9e711354..88eef0340ea 100644 --- a/code/modules/religion/honorbound/honorbound_rites.dm +++ b/code/modules/religion/honorbound/honorbound_rites.dm @@ -1,3 +1,6 @@ +/// how much favor is gained when someone joins the crusade and is deaconized +#define DEACONIZE_FAVOR_GAIN 300 + ///Makes the person holy, but they now also have to follow the honorbound code (CBT). Actually earns favor, convincing others to uphold the code (tm) is not easy /datum/religion_rites/deaconize name = "Join Crusade" @@ -64,7 +67,7 @@ var/datum/brain_trauma/special/honorbound/honor = user.has_trauma_type(/datum/brain_trauma/special/honorbound) if(joining_now in honor.guilty) honor.guilty -= joining_now - GLOB.religious_sect.adjust_favor(200, user) + GLOB.religious_sect.adjust_favor(DEACONIZE_FAVOR_GAIN, user) to_chat(user, span_notice("[GLOB.deity] has bound [joining_now] to the code! They are now a holy role! (albeit the lowest level of such)")) joining_now.mind.holy_role = HOLY_ROLE_DEACON GLOB.religious_sect.on_conversion(joining_now) @@ -151,7 +154,8 @@
1.) Thou shalt not attack the unready!
Those who are not ready for battle should not be wrought low. The evil of this world must lose - in a fair battle if you are to conquer them completely. + in a fair battle if you are to conquer them completely. Lesser creatures are given the benefit of + being unready, keep that in mind.

2.) Thou shalt not attack the just!
@@ -162,7 +166,9 @@
3.) Thou shalt not attack the innocent!
There is no honor on a pre-emptive strike, unless they are truly evil vermin. - Those who are guilty will either lay a hand on you first, or you may declare their evil. + Those who are guilty will either lay a hand on you first, or you may declare their evil. Mindless, lesser + creatures cannot be considered innocent, nor evil. They are beings of passion and function, and + may be dispatched as such if their passions misalign with the pursuits of a better world.

4.) Thou shalt not use profane magicks!
@@ -172,3 +178,5 @@ been allowed as it is a school focused on the light and mending of this world. "} return ..() + +#undef DEACONIZE_FAVOR_GAIN diff --git a/code/modules/religion/honorbound/honorbound_trauma.dm b/code/modules/religion/honorbound/honorbound_trauma.dm index 29152e5bc72..399bf6765ed 100644 --- a/code/modules/religion/honorbound/honorbound_trauma.dm +++ b/code/modules/religion/honorbound/honorbound_trauma.dm @@ -1,3 +1,6 @@ +/// one reason for declaring guilty is specifically checked for, keeping it as a define to avoid future mistakes +#define GUILT_REASON_DECLARATION "from your declaration." + ///Honorbound prevents you from attacking the unready, the just, or the innocent /datum/brain_trauma/special/honorbound name = "Dogmatic Compulsions" @@ -45,38 +48,59 @@ if(!isliving(clickingon)) return - var/mob/living/clickedmob = clickingon + var/mob/living/clicked_mob = clickingon var/obj/item/weapon = honorbound.get_active_held_item() - if(!honorbound.DirectAccess(clickedmob) && !isgun(weapon)) + if(!honorbound.DirectAccess(clicked_mob) && !isgun(weapon)) return if(weapon?.item_flags & NOBLUDGEON) return - if(!honorbound.combat_mode && (HAS_TRAIT(clickedmob, TRAIT_ALLOWED_HONORBOUND_ATTACK) || ((!weapon || !weapon.force) && !LAZYACCESS(modifiers, RIGHT_CLICK)))) + if(!honorbound.combat_mode && (HAS_TRAIT(clicked_mob, TRAIT_ALLOWED_HONORBOUND_ATTACK) || ((!weapon || !weapon.force) && !LAZYACCESS(modifiers, RIGHT_CLICK)))) return - if(!is_honorable(honorbound, clickedmob)) + if(!(clicked_mob in guilty)) + check_visible_guilt(clicked_mob) + if(!is_honorable(honorbound, clicked_mob)) return (COMSIG_MOB_CANCEL_CLICKON) +/// Checks a mob for any obvious signs of evil, and applies a guilty reason for each. +/datum/brain_trauma/special/honorbound/proc/check_visible_guilt(mob/living/attacked_mob) + //will most likely just hit nuke ops but good catch-all. WON'T hit traitors + if(ROLE_SYNDICATE in attacked_mob.faction) + guilty(attacked_mob, "for their misaligned association with the Syndicate!") + //not an antag datum check so it applies to wizard minions as well + if(ROLE_WIZARD in attacked_mob.faction) + guilty(attacked_mob, "for blasphemous magicks!") + if(HAS_TRAIT(attacked_mob, TRAIT_CULT_HALO)) + guilty(attacked_mob, "for blasphemous worship!") + if(attacked_mob.mind) + var/datum/mind/guilty_conscience = attacked_mob.mind + if(guilty_conscience.has_antag_datum(/datum/antagonist/abductor)) + guilty(attacked_mob, "for their blatant surgical malice...") + if(guilty_conscience.has_antag_datum(/datum/antagonist/nightmare)) + guilty(attacked_mob, "for being a light-consuming nightmare!") + if(guilty_conscience.has_antag_datum(/datum/antagonist/ninja)) + guilty(attacked_mob, "for their misaligned association with the Spider Clan!") + var/datum/antagonist/heretic/heretic_datum = guilty_conscience.has_antag_datum(/datum/antagonist/heretic) + if(heretic_datum?.ascended) + guilty(attacked_mob, "for blasphemous, heretical, out of control worship!") + /** * Called by hooked signals whenever someone attacks the person with this trauma * Checks if the attacker should be considered guilty and adds them to the guilty list if true * * Arguments: * * user: person who attacked the honorbound - * * declaration: if this wasn't an attack, but instead the honorbound spending favor on declaring this person guilty + * * reason: why this person is now guilty (future pr idea: letting honorbound print a receipt for why someone is guilty? lol) */ -/datum/brain_trauma/special/honorbound/proc/guilty(mob/living/user, declaration = FALSE) +/datum/brain_trauma/special/honorbound/proc/guilty(mob/living/user, reason = "for no particular reason!") if(user in guilty) return var/datum/mind/guilty_conscience = user.mind - if(guilty_conscience && !declaration) //sec and medical are immune to becoming guilty through attack (we don't check holy because holy shouldn't be able to attack eachother anyways) + if(guilty_conscience && reason != GUILT_REASON_DECLARATION) //sec and medical are immune to becoming guilty through attack (we don't check holy because holy shouldn't be able to attack eachother anyways) var/datum/job/job = guilty_conscience.assigned_role if(job.departments_bitflags & (DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SECURITY)) return - if(declaration) - to_chat(owner, span_notice("[user] is now considered guilty by [GLOB.deity] from your declaration.")) - else - to_chat(owner, span_notice("[user] is now considered guilty by [GLOB.deity] for attacking you first.")) + to_chat(owner, span_notice("[user] is now considered guilty by [GLOB.deity] [reason]")) to_chat(user, span_danger("[GLOB.deity] no longer considers you innocent!")) guilty += user @@ -84,7 +108,7 @@ /datum/brain_trauma/special/honorbound/proc/on_attacked(mob/source, mob/attacker, attack_flags) SIGNAL_HANDLER if(!(attack_flags & (ATTACKER_STAMINA_ATTACK|ATTACKER_SHOVING))) - guilty(attacker) + guilty(attacker, "for attacking [source] first.") /** * Called by attack_honor signal to check whether an attack should be allowed or not @@ -95,6 +119,7 @@ */ /datum/brain_trauma/special/honorbound/proc/is_honorable(mob/living/carbon/human/honorbound_human, mob/living/target_creature) var/is_guilty = (target_creature in guilty) + var/is_human = ishuman(target_creature) //THE UNREADY (Applies over ANYTHING else!) if(honorbound_human == target_creature) return TRUE //oh come on now @@ -102,7 +127,7 @@ to_chat(honorbound_human, span_warning("There is no honor in attacking the unready.")) return FALSE //THE JUST (Applies over guilt except for med, so you best be careful!) - if(ishuman(target_creature)) + if(is_human) var/mob/living/carbon/human/target_human = target_creature var/datum/job/job = target_human.mind?.assigned_role var/is_holy = target_human.mind?.holy_role @@ -112,9 +137,9 @@ if(job?.departments_bitflags & DEPARTMENT_BITFLAG_MEDICAL && !is_guilty) to_chat(honorbound_human, span_warning("If you truly think this healer is not innocent, declare them guilty.")) return FALSE - //THE INNOCENT - if(!is_guilty) - to_chat(honorbound_human, span_warning("There is nothing righteous in attacking the innocent.")) + //THE INNOCENT (human and borg exclusive) + if(!is_guilty && (is_human || issilicon(target_creature))) + to_chat(target_creature, span_warning("There is nothing righteous in attacking the innocent.")) return FALSE return TRUE @@ -262,4 +287,6 @@ /datum/action/cooldown/spell/pointed/declare_evil/cast(mob/living/cast_on) . = ..() GLOB.religious_sect.adjust_favor(-required_favor, owner) - honor_trauma.guilty(cast_on, declaration = TRUE) + honor_trauma.guilty(cast_on, GUILT_REASON_DECLARATION) + +#undef GUILT_REASON_DECLARATION diff --git a/code/modules/religion/pyre_rites.dm b/code/modules/religion/pyre/pyre_rites.dm similarity index 100% rename from code/modules/religion/pyre_rites.dm rename to code/modules/religion/pyre/pyre_rites.dm diff --git a/code/modules/religion/religion_sects.dm b/code/modules/religion/religion_sects.dm index 8b96c210511..7b5fd398f1a 100644 --- a/code/modules/religion/religion_sects.dm +++ b/code/modules/religion/religion_sects.dm @@ -38,6 +38,8 @@ var/altar_icon_state /// Currently Active (non-deleted) rites var/list/active_rites + /// Chance that we fail a bible blessing. + var/smack_chance = DEFAULT_SMACK_CHANCE /// Whether the structure has CANDLE OVERLAYS! var/candle_overlay = TRUE @@ -123,6 +125,10 @@ blessed.add_mood_event("blessing", /datum/mood_event/blessing) return TRUE +/// What happens if we bless a corpse? By default just do the default smack behavior +/datum/religion_sect/proc/sect_dead_bless(mob/living/target, mob/living/chap) + return FALSE + /**** Nanotrasen Approved God ****/ /datum/religion_sect/puritanism @@ -286,11 +292,12 @@ name = "Punished God" quote = "To feel the freedom, you must first understand captivity." desc = "Incapacitate yourself in any way possible. Bad mutations, lost limbs, traumas, \ - even addictions. You will learn the secrets of the universe from your defeated shell." + even addictions. You will learn the secrets of the universe from your defeated shell." tgui_icon = "user-injured" altar_icon_state = "convertaltar-burden" alignment = ALIGNMENT_NEUT candle_overlay = FALSE + smack_chance = 0 rites_list = list(/datum/religion_rites/nullrod_transformation) /datum/religion_sect/burden/on_conversion(mob/living/carbon/human/new_convert) @@ -298,11 +305,11 @@ if(!ishuman(new_convert)) to_chat(new_convert, span_warning("[GLOB.deity] needs higher level creatures to fully comprehend the suffering. You are not burdened.")) return - new_convert.gain_trauma(/datum/brain_trauma/special/burdened, TRAUMA_RESILIENCE_MAGIC) + new_convert.gain_trauma(/datum/brain_trauma/special/burdened, TRAUMA_RESILIENCE_ABSOLUTE) /datum/religion_sect/burden/on_deconversion(mob/living/carbon/human/new_convert) if (ishuman(new_convert)) - new_convert.cure_trauma_type(/datum/brain_trauma/special/burdened, TRAUMA_RESILIENCE_MAGIC) + new_convert.cure_trauma_type(/datum/brain_trauma/special/burdened, TRAUMA_RESILIENCE_ABSOLUTE) return ..() /datum/religion_sect/burden/tool_examine(mob/living/carbon/human/burdened) //display burden level @@ -313,6 +320,76 @@ return "You are at burden level [burden.burden_level]/9." return "You are not burdened." +/datum/religion_sect/burden/sect_bless(mob/living/carbon/target, mob/living/carbon/chaplain) + if(!istype(target) || !istype(chaplain)) + return FALSE + var/datum/brain_trauma/special/burdened/burden = chaplain.has_trauma_type(/datum/brain_trauma/special/burdened) + if(!burden) + return FALSE + var/burden_modifier = max(1 - 0.07 * burden.burden_level, 0.01) + var/transferred = FALSE + var/list/hurt_limbs = target.get_damaged_bodyparts(1, 1, BODYTYPE_ORGANIC) + target.get_wounded_bodyparts(BODYTYPE_ORGANIC) + var/list/chaplains_limbs = list() + for(var/obj/item/bodypart/possible_limb in chaplain.bodyparts) + if(IS_ORGANIC_LIMB(possible_limb)) + chaplains_limbs += possible_limb + if(length(chaplains_limbs)) + for(var/obj/item/bodypart/affected_limb as anything in hurt_limbs) + var/obj/item/bodypart/chaplains_limb = chaplain.get_bodypart(affected_limb.body_zone) + if(!chaplains_limb || !IS_ORGANIC_LIMB(chaplains_limb)) + chaplains_limb = pick(chaplains_limbs) + var/brute_damage = affected_limb.brute_dam + var/burn_damage = affected_limb.burn_dam + if((brute_damage || burn_damage)) + transferred = TRUE + affected_limb.heal_damage(brute_damage, burn_damage, required_bodytype = BODYTYPE_ORGANIC) + chaplains_limb.receive_damage(brute_damage * burden_modifier, burn_damage * burden_modifier, forced = TRUE, wound_bonus = CANT_WOUND) + for(var/datum/wound/iter_wound as anything in affected_limb.wounds) + transferred = TRUE + iter_wound.remove_wound() + iter_wound.apply_wound(chaplains_limb) + if(HAS_TRAIT_FROM(target, TRAIT_HUSK, BURN)) + transferred = TRUE + target.cure_husk(BURN) + chaplain.become_husk(BURN) + var/toxin_damage = target.getToxLoss() + if(toxin_damage && !HAS_TRAIT(chaplain, TRAIT_TOXIMMUNE)) + transferred = TRUE + target.adjustToxLoss(-toxin_damage) + chaplain.adjustToxLoss(toxin_damage * burden_modifier, forced = TRUE) + var/suffocation_damage = target.getOxyLoss() + if(suffocation_damage && !HAS_TRAIT(chaplain, TRAIT_NOBREATH)) + transferred = TRUE + target.adjustOxyLoss(-suffocation_damage) + chaplain.adjustOxyLoss(suffocation_damage * burden_modifier, forced = TRUE) + var/clone_damage = target.getCloneLoss() + if(clone_damage && !HAS_TRAIT(chaplain, TRAIT_NOCLONELOSS)) + transferred = TRUE + target.adjustCloneLoss(-clone_damage) + chaplain.adjustCloneLoss(clone_damage * burden_modifier, forced = TRUE) + if(!HAS_TRAIT(chaplain, TRAIT_NOBLOOD)) + if(target.blood_volume < BLOOD_VOLUME_SAFE) + var/target_blood_data = target.get_blood_data(target.get_blood_id()) + var/chaplain_blood_data = chaplain.get_blood_data(chaplain.get_blood_id()) + var/transferred_blood_amount = min(chaplain.blood_volume, BLOOD_VOLUME_SAFE - target.blood_volume) + if(transferred_blood_amount && (chaplain_blood_data["blood_type"] in get_safe_blood(target_blood_data["blood_type"]))) + transferred = TRUE + chaplain.transfer_blood_to(target, transferred_blood_amount, forced = TRUE) + if(target.blood_volume > BLOOD_VOLUME_EXCESS) + target.transfer_blood_to(chaplain, target.blood_volume - BLOOD_VOLUME_EXCESS, forced = TRUE) + target.update_damage_overlays() + chaplain.update_damage_overlays() + if(transferred) + target.visible_message(span_notice("[chaplain] takes on [target]'s burden!")) + to_chat(target, span_boldnotice("May the power of [GLOB.deity] compel you to be healed!")) + playsound(chaplain, SFX_PUNCH, 25, vary = TRUE, extrarange = -1) + target.add_mood_event("blessing", /datum/mood_event/blessing) + else + to_chat(chaplain, span_warning("They hold no burden!")) + return TRUE + +/datum/religion_sect/burden/sect_dead_bless(mob/living/target, mob/living/chaplain) + return sect_bless(target, chaplain) /datum/religion_sect/honorbound name = "Honorbound God" diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm index 1ce7f080d0f..70e230c5a4e 100644 --- a/code/modules/research/xenobiology/xenobiology.dm +++ b/code/modules/research/xenobiology/xenobiology.dm @@ -1037,7 +1037,7 @@ throwforce = 10 throw_speed = 3 throw_range = 7 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY max_amount = 60 turf_type = /turf/open/floor/bluespace merge_type = /obj/item/stack/tile/bluespace @@ -1054,7 +1054,7 @@ throwforce = 10 throw_speed = 0.1 throw_range = 28 - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY max_amount = 60 turf_type = /turf/open/floor/sepia merge_type = /obj/item/stack/tile/sepia diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 548c3a52b57..9680f829411 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -196,10 +196,10 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( paying_for_this = spawning_order.paying_account if(spawning_order.pack.goody) LAZYADD(goodies_by_buyer[spawning_order.paying_account], spawning_order) - var/reciever_message = "Cargo order #[spawning_order.id] has shipped." + var/receiver_message = "Cargo order #[spawning_order.id] has shipped." if(spawning_order.charge_on_purchase) - reciever_message += " [price] credits have been charged to your bank account" - paying_for_this.bank_card_talk(reciever_message) + receiver_message += " [price] credits have been charged to your bank account" + paying_for_this.bank_card_talk(receiver_message) SSeconomy.track_purchase(paying_for_this, price, spawning_order.pack.name) var/datum/bank_account/department/cargo = SSeconomy.get_dep_account(ACCOUNT_CAR) cargo.adjust_money(price - pack_cost) //Cargo gets the handling fee @@ -307,7 +307,7 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( /* Generates a box of mail depending on our exports and imports. Applied in the cargo shuttle sending/arriving, by building the crate if the round is ready to introduce mail based on the economy subsystem. - Then, fills the mail crate with mail, by picking applicable crew who can recieve mail at the time to sending. + Then, fills the mail crate with mail, by picking applicable crew who can receive mail at the time to sending. */ /obj/docking_port/mobile/supply/proc/create_mail() //Early return if there's no mail waiting to prevent taking up a slot. We also don't send mails on sundays or holidays. diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index 5bc39b389b3..dc30f36149b 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -48,7 +48,7 @@ button_icon_state = "spell_default" overlay_icon_state = "bg_spell_border" active_overlay_icon_state = "bg_spell_border_active_red" - check_flags = AB_CHECK_CONSCIOUS | AB_CHECK_INCAPACITATED + check_flags = AB_CHECK_CONSCIOUS|AB_CHECK_PHASED panel = "Spells" melee_cooldown_time = 0 SECONDS diff --git a/code/modules/spells/spell_types/conjure/presents.dm b/code/modules/spells/spell_types/conjure/presents.dm index 057fef9b9b4..b630c43225c 100644 --- a/code/modules/spells/spell_types/conjure/presents.dm +++ b/code/modules/spells/spell_types/conjure/presents.dm @@ -10,5 +10,5 @@ invocation_type = INVOCATION_SHOUT summon_radius = 3 - summon_type = list(/obj/item/a_gift) + summon_type = list(/obj/item/gift) summon_amount = 5 diff --git a/code/modules/spells/spell_types/jaunt/shadow_walk.dm b/code/modules/spells/spell_types/jaunt/shadow_walk.dm index de03f8e15e0..c5a47cd1740 100644 --- a/code/modules/spells/spell_types/jaunt/shadow_walk.dm +++ b/code/modules/spells/spell_types/jaunt/shadow_walk.dm @@ -59,7 +59,7 @@ var/healing_rate = 1.5 /// When cooldown is active, you are prevented from moving into tiles that would eject you from your jaunt COOLDOWN_DECLARE(light_step_cooldown) - /// Has the jaunter recently recieved a warning about light? + /// Has the jaunter recently received a warning about light? var/light_alert_given = FALSE /obj/effect/dummy/phased_mob/shadow/Initialize(mapload) @@ -125,7 +125,7 @@ return light_turf.get_lumcount() > light_max // jaunt ends on TRUE /** - * Checks if the user should recieve a warning that they're moving into light. + * Checks if the user should receive a warning that they're moving into light. * * Checks the cooldown for the warning message on moving into the light. * If the message has been displayed, and the cooldown (delay period) is complete, returns TRUE. diff --git a/code/modules/spells/spell_types/touch/scream_for_me.dm b/code/modules/spells/spell_types/touch/scream_for_me.dm index 231b6927e50..d3c142d7039 100644 --- a/code/modules/spells/spell_types/touch/scream_for_me.dm +++ b/code/modules/spells/spell_types/touch/scream_for_me.dm @@ -2,7 +2,7 @@ /datum/action/cooldown/spell/touch/scream_for_me name = "Scream For Me" desc = "This wicked spell inflicts many severe wounds on your target, causing them to \ - likely bleed to death unless they recieve immediate medical attention." + likely bleed to death unless they receive immediate medical attention." button_icon_state = "scream_for_me" sound = null //trust me, you'll hear their wounds diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm index 10195c6d98e..a63f071bf9e 100644 --- a/code/modules/surgery/bodyparts/robot_bodyparts.dm +++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm @@ -19,7 +19,7 @@ inhand_icon_state = "buildpipe" icon = 'icons/mob/augmentation/augments.dmi' icon_static = 'icons/mob/augmentation/augments.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY icon_state = "borg_l_arm" is_dimorphic = FALSE should_draw_greyscale = FALSE @@ -52,7 +52,7 @@ icon_static = 'icons/mob/augmentation/augments.dmi' icon = 'icons/mob/augmentation/augments.dmi' limb_id = BODYPART_ID_ROBOTIC - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY icon_state = "borg_r_arm" is_dimorphic = FALSE should_draw_greyscale = FALSE @@ -86,7 +86,7 @@ icon_static = 'icons/mob/augmentation/augments.dmi' icon = 'icons/mob/augmentation/augments.dmi' limb_id = BODYPART_ID_ROBOTIC - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY icon_state = "borg_l_leg" is_dimorphic = FALSE should_draw_greyscale = FALSE @@ -133,7 +133,7 @@ icon_static = 'icons/mob/augmentation/augments.dmi' icon = 'icons/mob/augmentation/augments.dmi' limb_id = BODYPART_ID_ROBOTIC - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY icon_state = "borg_r_leg" is_dimorphic = FALSE should_draw_greyscale = FALSE @@ -179,7 +179,7 @@ icon_static = 'icons/mob/augmentation/augments.dmi' icon = 'icons/mob/augmentation/augments.dmi' limb_id = BODYPART_ID_ROBOTIC - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY icon_state = "borg_chest" is_dimorphic = FALSE should_draw_greyscale = FALSE @@ -357,7 +357,7 @@ icon_static = 'icons/mob/augmentation/augments.dmi' icon = 'icons/mob/augmentation/augments.dmi' limb_id = BODYPART_ID_ROBOTIC - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY icon_state = "borg_head" is_dimorphic = FALSE should_draw_greyscale = FALSE diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm index 682aa3b43a9..2c14c91dbd5 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm @@ -325,7 +325,7 @@ if(!istype(potential_flash, /obj/item/assembly/flash/armimplant)) continue var/obj/item/assembly/flash/armimplant/flash = potential_flash - flash.arm = WEAKREF(src) + flash.arm = WEAKREF(src) /obj/item/organ/internal/cyberimp/arm/surgery name = "surgical toolset implant" @@ -378,10 +378,10 @@ ///How long will the implant malfunction if it is EMP'd var/emp_base_duration = 9 SECONDS -/obj/item/organ/internal/cyberimp/arm/muscle/Insert(mob/living/carbon/reciever, special = FALSE, drop_if_replaced = TRUE) +/obj/item/organ/internal/cyberimp/arm/muscle/Insert(mob/living/carbon/receiver, special = FALSE, drop_if_replaced = TRUE) . = ..() - if(ishuman(reciever)) //Sorry, only humans - RegisterSignal(reciever, COMSIG_LIVING_EARLY_UNARMED_ATTACK, PROC_REF(on_attack_hand)) + if(ishuman(receiver)) //Sorry, only humans + RegisterSignal(receiver, COMSIG_LIVING_EARLY_UNARMED_ATTACK, PROC_REF(on_attack_hand)) /obj/item/organ/internal/cyberimp/arm/muscle/Remove(mob/living/carbon/implant_owner, special = 0) . = ..() diff --git a/code/modules/surgery/organs/internal/liver/_liver.dm b/code/modules/surgery/organs/internal/liver/_liver.dm index 7baeb04b8b6..28f74d9cf52 100644 --- a/code/modules/surgery/organs/internal/liver/_liver.dm +++ b/code/modules/surgery/organs/internal/liver/_liver.dm @@ -1,7 +1,7 @@ #define LIVER_DEFAULT_TOX_TOLERANCE 3 //amount of toxins the liver can filter out #define LIVER_DEFAULT_TOX_RESISTANCE 1 //lower values lower how harmful toxins are to the liver #define LIVER_FAILURE_STAGE_SECONDS 180 //amount of seconds before liver failure reaches a new stage // SKYRAT EDIT CHANGE - Original: 60 -#define MAX_TOXIN_LIVER_DAMAGE 2 //the max damage the liver can recieve per second (~1 min at max damage will destroy liver) +#define MAX_TOXIN_LIVER_DAMAGE 2 //the max damage the liver can receive per second (~1 min at max damage will destroy liver) /obj/item/organ/internal/liver name = "liver" diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index 83b1b0705ef..37ebf5ecb90 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -7,7 +7,7 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*3, /datum/material/glass =SHEET_MATERIAL_AMOUNT * 1.5) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = SURGICAL_TOOL w_class = WEIGHT_CLASS_TINY tool_behaviour = TOOL_RETRACTOR @@ -32,7 +32,7 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' custom_materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT*1.25) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = SURGICAL_TOOL w_class = WEIGHT_CLASS_TINY attack_verb_continuous = list("attacks", "pinches") @@ -59,7 +59,7 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*1.25, /datum/material/glass = SMALL_MATERIAL_AMOUNT*7.5) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = SURGICAL_TOOL w_class = WEIGHT_CLASS_TINY attack_verb_continuous = list("burns") @@ -139,7 +139,7 @@ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' hitsound = 'sound/weapons/circsawhit.ogg' custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*5, /datum/material/glass = SHEET_MATERIAL_AMOUNT*3) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = SURGICAL_TOOL force = 15 demolition_mod = 0.5 @@ -182,7 +182,7 @@ inhand_icon_state = "scalpel" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = SURGICAL_TOOL force = 10 demolition_mod = 0.25 @@ -232,7 +232,7 @@ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' hitsound = 'sound/weapons/circsawhit.ogg' mob_throw_hit_sound = 'sound/weapons/pierce.ogg' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = SURGICAL_TOOL force = 15 w_class = WEIGHT_CLASS_NORMAL @@ -473,7 +473,7 @@ desc = "A type of heavy duty surgical shears used for achieving a clean separation between limb and patient. Keeping the patient still is imperative to be able to secure and align the shears." icon = 'icons/obj/medical/surgery_tools.dmi' icon_state = "shears" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = SURGICAL_TOOL toolspeed = 1 force = 12 @@ -559,7 +559,7 @@ lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' custom_materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT*1.25, /datum/material/silver = SHEET_MATERIAL_AMOUNT*1.25) - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = SURGICAL_TOOL w_class = WEIGHT_CLASS_SMALL attack_verb_continuous = list("corrects", "properly sets") diff --git a/code/modules/tgchat/README.md b/code/modules/tgchat/README.md index 95f28ae0e8c..71acb47c458 100644 --- a/code/modules/tgchat/README.md +++ b/code/modules/tgchat/README.md @@ -19,11 +19,11 @@ TgChat handles sending messages from the server to the client through the use of ### Reliability -In the past there have been issues where BYOND will silently and without reason lose a message we sent to the client, to detect this and recover from it seamlessly TgChat also has a baked in reliability layer. This reliability layer is very primitive, and simply keeps track of recieved sequence numbers. Should the client recieve an unexpected sequence number TgChat asks the server to resend any missing packets. +In the past there have been issues where BYOND will silently and without reason lose a message we sent to the client, to detect this and recover from it seamlessly TgChat also has a baked in reliability layer. This reliability layer is very primitive, and simply keeps track of received sequence numbers. Should the client receive an unexpected sequence number TgChat asks the server to resend any missing packets. ### Ping System -TgChat supports a round trip time ping measurement, which is displayed to the client so they can know how long it takes for their commands and inputs to reach the server. This is done by sending the client a ping request, `ping/soft`, which tells the client to send a ping to the server. When the server recieves said ping it sends a reply, `ping/reply`, to the client with a payload containing the current DateTime which the client can reference against the initial ping request. +TgChat supports a round trip time ping measurement, which is displayed to the client so they can know how long it takes for their commands and inputs to reach the server. This is done by sending the client a ping request, `ping/soft`, which tells the client to send a ping to the server. When the server receives said ping it sends a reply, `ping/reply`, to the client with a payload containing the current DateTime which the client can reference against the initial ping request. ### Chat Tabs, Local Storage, and Highlighting diff --git a/code/modules/unit_tests/cardboard_cutouts.dm b/code/modules/unit_tests/cardboard_cutouts.dm index f706f8c95b6..ce7066de1ca 100644 --- a/code/modules/unit_tests/cardboard_cutouts.dm +++ b/code/modules/unit_tests/cardboard_cutouts.dm @@ -11,11 +11,9 @@ nukie_cutout.push_over() test_screenshot("nukie_cutout_pushed", getFlatIcon(nukie_cutout)) -#if DM_VERSION >= 515 // This is the only reason we're testing xenomorphs. // Making a custom subtype with direct_icon is hacky. ASSERT(!isnull(/datum/cardboard_cutout/xenomorph_maid::direct_icon)) -#endif var/obj/item/cardboard_cutout/xenomorph/xenomorph_cutout = new test_screenshot("xenomorph_cutout", getFlatIcon(xenomorph_cutout)) diff --git a/code/modules/unit_tests/find_reference_sanity.dm b/code/modules/unit_tests/find_reference_sanity.dm index 8bd2a14dbf5..0dda1559819 100644 --- a/code/modules/unit_tests/find_reference_sanity.dm +++ b/code/modules/unit_tests/find_reference_sanity.dm @@ -27,11 +27,10 @@ SSgarbage.should_save_refs = TRUE //Sanity check - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 3, "Should be: test references: 0 + baseline references: 3 (victim var,loc,allocated list)") - #endif victim.DoSearchVar(testbed, "Sanity Check", search_time = 1) //We increment search time to get around an optimization + TEST_ASSERT(!victim.found_refs.len, "The ref-tracking tool found a ref where none existed") SSgarbage.should_save_refs = FALSE @@ -45,10 +44,8 @@ testbed.test_list += victim testbed.test_assoc_list["baseline"] = victim - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 6, "Should be: test references: 3 + baseline references: 3 (victim var,loc,allocated list)") - #endif victim.DoSearchVar(testbed, "First Run", search_time = 2) TEST_ASSERT(victim.found_refs["test"], "The ref-tracking tool failed to find a regular value") @@ -66,10 +63,8 @@ testbed.vis_contents += victim testbed.test_assoc_list[victim] = TRUE - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 6, "Should be: test references: 3 + baseline references: 3 (victim var,loc,allocated list)") - #endif victim.DoSearchVar(testbed, "Second Run", search_time = 3) //This is another sanity check @@ -90,12 +85,11 @@ var/list/to_find_assoc = list(victim) testbed.test_assoc_list["Nesting"] = to_find_assoc - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 6, "Should be: test references: 3 + baseline references: 3 (victim var,loc,allocated list)") - #endif victim.DoSearchVar(victim, "Third Run Self", search_time = 4) victim.DoSearchVar(testbed, "Third Run Testbed", search_time = 4) + TEST_ASSERT(victim.found_refs["self_ref"], "The ref-tracking tool failed to find a self reference") TEST_ASSERT(victim.found_refs[to_find], "The ref-tracking tool failed to find a nested list entry") TEST_ASSERT(victim.found_refs[to_find_assoc], "The ref-tracking tool failed to find a nested assoc list entry") @@ -108,11 +102,10 @@ //Calm before the storm testbed.test_assoc_list = list(null = victim) - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 4, "Should be: test references: 1 + baseline references: 3 (victim var,loc,allocated list)") - #endif victim.DoSearchVar(testbed, "Fourth Run", search_time = 5) + TEST_ASSERT(testbed.test_assoc_list, "The ref-tracking tool failed to find a null key'd assoc list entry") /datum/unit_test/find_reference_assoc_investigation/Run() @@ -126,11 +119,10 @@ var/list/to_find_null_assoc_nested = list(victim) testbed.test_assoc_list[null] = to_find_null_assoc_nested - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 5, "Should be: test references: 2 + baseline references: 3 (victim var,loc,allocated list)") - #endif victim.DoSearchVar(testbed, "Fifth Run", search_time = 6) + TEST_ASSERT(victim.found_refs[to_find_in_key], "The ref-tracking tool failed to find a nested assoc list key") TEST_ASSERT(victim.found_refs[to_find_null_assoc_nested], "The ref-tracking tool failed to find a null key'd nested assoc list entry") SSgarbage.should_save_refs = FALSE @@ -150,10 +142,8 @@ for(var/key in global.vars) global_vars[key] = global.vars[key] - #if DM_VERSION >= 515 var/refcount = refcount(victim) TEST_ASSERT_EQUAL(refcount, 5, "Should be: test references: 2 + baseline references: 3 (victim var,loc,allocated list)") - #endif victim.DoSearchVar(global_vars, "Sixth Run", search_time = 7) TEST_ASSERT(victim.found_refs[global_vars], "The ref-tracking tool failed to find a natively global variable") diff --git a/code/modules/unit_tests/mecha_damage.dm b/code/modules/unit_tests/mecha_damage.dm index 55081e9365c..695f7c4b53d 100644 --- a/code/modules/unit_tests/mecha_damage.dm +++ b/code/modules/unit_tests/mecha_damage.dm @@ -85,4 +85,4 @@ TEST_ASSERT(post_hit_health < pre_integrity, "[checking] was [hit_by_phrase], but didn't take any damage.") var/damage_taken = round(pre_integrity - post_hit_health, DAMAGE_PRECISION) - TEST_ASSERT_EQUAL(damage_taken, expected_damage, "[checking] didn't take the expected amount of damage when [hit_by_phrase]. (Expected damage: [expected_damage], recieved damage: [damage_taken])") + TEST_ASSERT_EQUAL(damage_taken, expected_damage, "[checking] didn't take the expected amount of damage when [hit_by_phrase]. (Expected damage: [expected_damage], received damage: [damage_taken])") diff --git a/code/modules/uplink/uplink_devices.dm b/code/modules/uplink/uplink_devices.dm index 5106401c4aa..ada8c89259c 100644 --- a/code/modules/uplink/uplink_devices.dm +++ b/code/modules/uplink/uplink_devices.dm @@ -5,7 +5,7 @@ // simultaneously is an annoying distraction. /obj/item/uplink name = "station bounced radio" - icon = 'icons/obj/radio.dmi' + icon = 'icons/obj/device.dmi' icon_state = "radio" inhand_icon_state = "radio" worn_icon_state = "radio" @@ -14,7 +14,7 @@ righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' dog_fashion = /datum/dog_fashion/back - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY slot_flags = ITEM_SLOT_BELT throw_speed = 3 throw_range = 7 diff --git a/code/modules/uplink/uplink_items/clownops.dm b/code/modules/uplink/uplink_items/clownops.dm index 84cf0ea3c51..bbb597d2fa8 100644 --- a/code/modules/uplink/uplink_items/clownops.dm +++ b/code/modules/uplink/uplink_items/clownops.dm @@ -127,7 +127,7 @@ /datum/uplink_item/reinforcement/monkey_supplies name = "Simian Agent Supplies" desc = "Sometimes you need a bit more firepower than a rabid monkey. Such as a rabid, armed monkey! \ - Monkeys can unpack this kit to recieve a bag with a bargain-bin gun, ammunition, and some miscellaneous supplies." + Monkeys can unpack this kit to receive a bag with a bargain-bin gun, ammunition, and some miscellaneous supplies." item = /obj/item/storage/toolbox/guncase/monkeycase cost = 4 purchasable_from = UPLINK_CLOWN_OPS diff --git a/code/modules/uplink/uplink_items/dangerous.dm b/code/modules/uplink/uplink_items/dangerous.dm index e84657e7884..4574bd7f48e 100644 --- a/code/modules/uplink/uplink_items/dangerous.dm +++ b/code/modules/uplink/uplink_items/dangerous.dm @@ -96,3 +96,10 @@ cost = 13 surplus = 50 purchasable_from = ~(UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS) //nukies get their own version + +/datum/uplink_item/dangerous/cat + name = "Feral cat grenade" + desc = "This grenade is filled with 5 feral cats in stasis. Upon activation, the feral cats are awoken and unleashed unto unlucky bystanders. WARNING: The cats are not trained to discern friend from foe!" + cost = 5 + item = /obj/item/grenade/spawnergrenade/cat + surplus = 30 diff --git a/code/modules/uplink/uplink_items/job.dm b/code/modules/uplink/uplink_items/job.dm index 2073024a962..2467cd35a35 100644 --- a/code/modules/uplink/uplink_items/job.dm +++ b/code/modules/uplink/uplink_items/job.dm @@ -365,7 +365,7 @@ /datum/uplink_item/role_restricted/monkey_supplies name = "Simian Agent Supplies" desc = "Sometimes you need a bit more firepower than a rabid monkey. Such as a rabid, armed monkey! \ - Monkeys can unpack this kit to recieve a bag with a bargain-bin gun, ammunition, and some miscellaneous supplies." + Monkeys can unpack this kit to receive a bag with a bargain-bin gun, ammunition, and some miscellaneous supplies." item = /obj/item/storage/toolbox/guncase/monkeycase cost = 4 limited_stock = 3 diff --git a/code/modules/uplink/uplink_items/nukeops.dm b/code/modules/uplink/uplink_items/nukeops.dm index df7fd7c5f2d..4c8a47c9f48 100644 --- a/code/modules/uplink/uplink_items/nukeops.dm +++ b/code/modules/uplink/uplink_items/nukeops.dm @@ -704,7 +704,7 @@ /datum/uplink_item/implants/nuclear/deathrattle name = "Box of Deathrattle Implants" desc = "A collection of implants (and one reusable implanter) that should be injected into the team. When one of the team \ - dies, all other implant holders recieve a mental message informing them of their teammates' name \ + dies, all other implant holders receive a mental message informing them of their teammates' name \ and the location of their death. Unlike most implants, these are designed to be implanted \ in any creature, biological or mechanical." item = /obj/item/storage/box/syndie_kit/imp_deathrattle diff --git a/code/modules/vehicles/mecha/_mecha.dm b/code/modules/vehicles/mecha/_mecha.dm index 2323eb942e4..5dcb5e64e06 100644 --- a/code/modules/vehicles/mecha/_mecha.dm +++ b/code/modules/vehicles/mecha/_mecha.dm @@ -10,7 +10,7 @@ * AI also has special checks becaus it gets in and out of the mech differently * Always call remove_occupant(mob) when leaving the mech so the mob is removed properly * - * For multi-crew, you need to set how the occupants recieve ability bitflags corresponding to their status on the vehicle(i.e: driver, gunner etc) + * For multi-crew, you need to set how the occupants receive ability bitflags corresponding to their status on the vehicle(i.e: driver, gunner etc) * Abilities can then be set to only apply for certain bitflags and are assigned as such automatically * * Clicks are wither translated into mech_melee_attack (see mech_melee_attack.dm) diff --git a/code/modules/vehicles/mecha/mecha_parts.dm b/code/modules/vehicles/mecha/mecha_parts.dm index fe5b53caba7..03f199637b5 100644 --- a/code/modules/vehicles/mecha/mecha_parts.dm +++ b/code/modules/vehicles/mecha/mecha_parts.dm @@ -7,7 +7,7 @@ icon = 'icons/mob/mech_construct.dmi' icon_state = "blank" w_class = WEIGHT_CLASS_GIGANTIC - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY /obj/item/mecha_parts/proc/try_attach_part(mob/user, obj/vehicle/sealed/mecha/M, attach_right = FALSE) //For attaching parts to a finished mech if(!user.transferItemToLoc(src, M)) @@ -336,12 +336,12 @@ /obj/item/circuitboard/mecha name = "exosuit circuit board" - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "std_mod" inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 5 w_class = WEIGHT_CLASS_SMALL throwforce = 0 diff --git a/code/modules/wiremod/components/bci/thought_listener.dm b/code/modules/wiremod/components/bci/thought_listener.dm index 53d50f9c54b..ae6889e2da9 100644 --- a/code/modules/wiremod/components/bci/thought_listener.dm +++ b/code/modules/wiremod/components/bci/thought_listener.dm @@ -26,7 +26,7 @@ /obj/item/circuit_component/thought_listener/populate_ports() input_name = add_input_port("Input Name", PORT_TYPE_STRING) input_desc = add_input_port("Input Description", PORT_TYPE_STRING) - output = add_output_port("Recieved Thought", PORT_TYPE_STRING) + output = add_output_port("Received Thought", PORT_TYPE_STRING) trigger_output = add_output_port("Triggered", PORT_TYPE_SIGNAL) failure = add_output_port("On Failure", PORT_TYPE_SIGNAL) diff --git a/code/modules/wiremod/core/component.dm b/code/modules/wiremod/core/component.dm index 55fb258f0fb..fbaa01fc030 100644 --- a/code/modules/wiremod/core/component.dm +++ b/code/modules/wiremod/core/component.dm @@ -9,7 +9,7 @@ */ /obj/item/circuit_component name = COMPONENT_DEFAULT_NAME - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "component" inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' diff --git a/code/modules/wiremod/core/integrated_circuit.dm b/code/modules/wiremod/core/integrated_circuit.dm index 4a04da3480e..41e6c91d0c6 100644 --- a/code/modules/wiremod/core/integrated_circuit.dm +++ b/code/modules/wiremod/core/integrated_circuit.dm @@ -11,7 +11,7 @@ GLOBAL_LIST_EMPTY_TYPED(integrated_circuits, /obj/item/integrated_circuit) /obj/item/integrated_circuit name = "integrated circuit" desc = "By inserting components and a cell into this, wiring them up, and putting them into a shell, anyone can pretend to be a programmer." - icon = 'icons/obj/assemblies/module.dmi' + icon = 'icons/obj/assemblies/circuitry_n_data.dmi' icon_state = "integrated_circuit" inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' diff --git a/config/spaceruinblacklist.txt b/config/spaceruinblacklist.txt index 6ac8f8f08c2..f7fb7a0b417 100644 --- a/config/spaceruinblacklist.txt +++ b/config/spaceruinblacklist.txt @@ -85,6 +85,7 @@ #_maps/RandomRuins/SpaceRuins/waystation.dmm #_maps/RandomRuins/SpaceRuins/whiteshipdock.dmm #_maps/RandomRuins/SpaceRuins/whiteshipruin_box.dmm +#_maps/RandomRuins/SpaceRuins/skyrat/drones_derelict.dmm #modular_skyrat/modules/mapping/_maps/RandomRuins/SpaceRuins/forgottenship_skyrat.dmm #modular_skyrat/modules/mapping/_maps/RandomRuins/SpaceRuins/shuttle8532.dmm #modular_skyrat/modules/ruins/maps/space/dangerous_research.dmm diff --git a/dependencies.sh b/dependencies.sh index 6162b349b51..597f90cd850 100644 --- a/dependencies.sh +++ b/dependencies.sh @@ -4,8 +4,8 @@ #Final authority on what's required to fully build the project # byond version -export BYOND_MAJOR=514 -export BYOND_MINOR=1588 +export BYOND_MAJOR=515 +export BYOND_MINOR=1620 #rust_g git tag export RUST_G_VERSION=3.0.0 @@ -15,7 +15,7 @@ export NODE_VERSION=14 export NODE_VERSION_PRECISE=14.16.1 # SpacemanDMM git tag -export SPACEMAN_DMM_VERSION=suite-1.7.3 +export SPACEMAN_DMM_VERSION=suite-1.8 # Python version for mapmerge and other tools export PYTHON_VERSION=3.9.0 diff --git a/html/changelogs/AutoChangeLog-pr-926.yml b/html/changelogs/AutoChangeLog-pr-926.yml new file mode 100644 index 00000000000..07792393431 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-926.yml @@ -0,0 +1,4 @@ +author: "LemonInTheDark" +delete-after: True +changes: + - server: "Minimum compile version has been bumped to 515. clients still support 514 but we're gonna start using 515 restricted features for serverside now." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-943.yml b/html/changelogs/AutoChangeLog-pr-943.yml new file mode 100644 index 00000000000..e408511f7c1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-943.yml @@ -0,0 +1,4 @@ +author: "san7890" +delete-after: True +changes: + - bugfix: "Some mapped-in gifts that were supposed to guarantee a certain gift weren't spawning that exact gift type, this has been patched to reflect the mapper's intent." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-945.yml b/html/changelogs/AutoChangeLog-pr-945.yml new file mode 100644 index 00000000000..c41ab9b5b98 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-945.yml @@ -0,0 +1,5 @@ +author: "san7890" +delete-after: True +changes: + - admin: "The Player Panel should now contain the unique mob tag associated to a certain mob that a player might inhabit at one time, which is stored on their player details datum on their client (which is guaranteed to always exist)." + - admin: "The \"Old Names\" details of a player is now visible in their own personal per-player player panel." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-953.yml b/html/changelogs/AutoChangeLog-pr-953.yml new file mode 100644 index 00000000000..6f5a19e0dff --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-953.yml @@ -0,0 +1,4 @@ +author: "honkpocket" +delete-after: True +changes: + - rscadd: "The 'fake announcement device' from the OPFOR selection has received a fully customizable upgrade." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-957.yml b/html/changelogs/AutoChangeLog-pr-957.yml new file mode 100644 index 00000000000..415444405fe --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-957.yml @@ -0,0 +1,4 @@ +author: "Cursor, Delbert Grady" +delete-after: True +changes: + - rscadd: "The Overlook- Err 'Twin'- Whatever the Space Hotel is called has had some minor additions." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-958.yml b/html/changelogs/AutoChangeLog-pr-958.yml new file mode 100644 index 00000000000..e0e60b92649 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-958.yml @@ -0,0 +1,4 @@ +author: "MrDerpi" +delete-after: True +changes: + - bugfix: "synth livers not emp-able\n/🆑\n\n" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-959.yml b/html/changelogs/AutoChangeLog-pr-959.yml new file mode 100644 index 00000000000..c0b41373680 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-959.yml @@ -0,0 +1,4 @@ +author: "xXPawnStarrXx" +delete-after: True +changes: + - rscadd: "Added sprites for bone spears to match the other bone items." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-960.yml b/html/changelogs/AutoChangeLog-pr-960.yml new file mode 100644 index 00000000000..08d41d9ffb0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-960.yml @@ -0,0 +1,4 @@ +author: "KittyNoodle" +delete-after: True +changes: + - bugfix: "Heretics can no longer cast all of their spells while in jaunt" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-964.yml b/html/changelogs/AutoChangeLog-pr-964.yml new file mode 100644 index 00000000000..35ce311692d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-964.yml @@ -0,0 +1,4 @@ +author: "Timberpoes" +delete-after: True +changes: + - admin: "Removed the \"Turn Target into MMI\" right click context menu verb entirely, and instead added the same command as a VV dropdown on human mobs." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-966.yml b/html/changelogs/AutoChangeLog-pr-966.yml new file mode 100644 index 00000000000..6cae956506f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-966.yml @@ -0,0 +1,4 @@ +author: "san7890" +delete-after: True +changes: + - bugfix: "Janitors rejoice (or lament): Floors should now be dirty shift-start.\n/ \\:cl:" \ No newline at end of file diff --git a/html/changelogs/archive/2023-12.yml b/html/changelogs/archive/2023-12.yml index e99df6cc6f7..04d8e98cec6 100644 --- a/html/changelogs/archive/2023-12.yml +++ b/html/changelogs/archive/2023-12.yml @@ -46,3 +46,62 @@ - bugfix: shield wall gens actually use power now - qol: shield wall gens may now be rebuilt and use some balloon alerts, and have wiring +2023-12-04: + Fikou: + - rscadd: Instead of punished sect healing people like the normal bibble- you take + their burdens on instead! + Ghommie: + - rscadd: Added the daily (roundstart) message server key to the Chief Engineer's + memories. + Hatterhat: + - bugfix: The toxin damage from overdosing on TWitch now respects server tickrate/REM. + IsaacExists: + - sound: Added human laughter to felinids + Jackraxxus: + - bugfix: Digi legs work with the QM's jumpskirt + MrMelbert: + - bugfix: smartfridges no longer show false overlays + Profakos: + - rscdel: Removes the slime's reagent holder. This will make them not slow down + from somehow imbibing morphine or frostoil. + Rhials: + - qol: Bar signs ordered from cargo will no longer be access-restricted. + - spellcheck: Fixes a typo in the Factory Quartermaster outfit name. + Vekter: + - rscdel: Replaced the "monkey cube" in Birdshot's tool storage with a different + "monkey cube". + - rscadd: Added a fun surprise item to Birdshot's tool storage to compensate for + the above change. + - rscadd: Added a new hostile variant of cats, "feral cats". + - rscadd: Added a new traitor item, "feral cat grenades". For 5 TC, you too can + throw a grenade at someone and make five cats maul them to death. + YesterdaysPromise: + - image: 'Following now have unique item sprites: syndicate war declaration radio, + curator and chief beacon''s, chaplain beacon.' + - image: 'Following now have unique inhand sprites: radio, export scanner, walkie-talkie, + syndicate war declaration radio, curator and chief beacon''s, chaplain beacon.' + distributivgesetz: + - balance: Clone damage dealt by the cosmic blade has been replaced with organ damage + and increased burn damage. Clone damage dealt by the cosmic beam has been removed. + The star gazer now deals burn damage instead of clone damage. + - bugfix: The health of mobs combo'd by a cosmic blade will now update correctly. + - spellcheck: Occurrences of "recieve" has been changed to "receive". + jjpark-kb: + - rscadd: added a new derelict station (for drones)-- Babylon Station 13 + necromanceranne: + - bugfix: Blocking a tackler no longer causes things to go haywire and stun the + tackler/the tackle victim. + san7890: + - balance: The Meat Hook will now "ground" you whenever you fire it out at someone. + You get a very small immobilization every time you fire, which "upgrades" to + a full immobilization whenever you actually hit an atom and start to drag it + in. + - bugfix: A chain should now show up as you drag in something with the meat hooks. + - bugfix: Meat hooks should no longer play the "magical gun" suicide if you were + to use it, but instead do their own unique thing. + tralezab: + - balance: Honorbound no longer cares about innocence when it comes to lesser creatures. + They can still be considered unready in some cases. + - balance: Attacking a cultist with a halo or a nuclear operative first instantly + makes THEM guilty, allowing further attacks. + - balance: More favor for converting someone to the honorbound rules diff --git a/icons/mob/inhands/items/devices_lefthand.dmi b/icons/mob/inhands/items/devices_lefthand.dmi index bf9c3154c62..7b558c20e6e 100644 Binary files a/icons/mob/inhands/items/devices_lefthand.dmi and b/icons/mob/inhands/items/devices_lefthand.dmi differ diff --git a/icons/mob/inhands/items/devices_righthand.dmi b/icons/mob/inhands/items/devices_righthand.dmi index 93a5d929610..042ecb745c4 100644 Binary files a/icons/mob/inhands/items/devices_righthand.dmi and b/icons/mob/inhands/items/devices_righthand.dmi differ diff --git a/icons/mob/inhands/weapons/polearms_lefthand.dmi b/icons/mob/inhands/weapons/polearms_lefthand.dmi index ff98ba95721..f9b43790df7 100644 Binary files a/icons/mob/inhands/weapons/polearms_lefthand.dmi and b/icons/mob/inhands/weapons/polearms_lefthand.dmi differ diff --git a/icons/mob/inhands/weapons/polearms_righthand.dmi b/icons/mob/inhands/weapons/polearms_righthand.dmi index db760ec7175..9f7e6239895 100644 Binary files a/icons/mob/inhands/weapons/polearms_righthand.dmi and b/icons/mob/inhands/weapons/polearms_righthand.dmi differ diff --git a/icons/obj/assemblies/circuitry_n_data.dmi b/icons/obj/assemblies/circuitry_n_data.dmi new file mode 100644 index 00000000000..20a83f03e53 Binary files /dev/null and b/icons/obj/assemblies/circuitry_n_data.dmi differ diff --git a/icons/obj/assemblies/module.dmi b/icons/obj/assemblies/module.dmi deleted file mode 100644 index 2656c8db432..00000000000 Binary files a/icons/obj/assemblies/module.dmi and /dev/null differ diff --git a/icons/obj/assemblies/stock_parts.dmi b/icons/obj/assemblies/stock_parts.dmi index 6b2353b80dd..d249b0ab234 100644 Binary files a/icons/obj/assemblies/stock_parts.dmi and b/icons/obj/assemblies/stock_parts.dmi differ diff --git a/icons/obj/clothing/headsets.dmi b/icons/obj/clothing/headsets.dmi new file mode 100644 index 00000000000..b977487e2c6 Binary files /dev/null and b/icons/obj/clothing/headsets.dmi differ diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index fe74b6c11c5..4cb32290fc5 100644 Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ diff --git a/icons/obj/radio.dmi b/icons/obj/radio.dmi deleted file mode 100644 index 7794b8ca5c8..00000000000 Binary files a/icons/obj/radio.dmi and /dev/null differ diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi index 8707b394c2e..40420db3705 100644 Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ diff --git a/icons/obj/weapons/spear.dmi b/icons/obj/weapons/spear.dmi index 917365235ec..7262da01c45 100644 Binary files a/icons/obj/weapons/spear.dmi and b/icons/obj/weapons/spear.dmi differ diff --git a/modular_skyrat/master_files/code/game/objects/items/encryptionkey.dm b/modular_skyrat/master_files/code/game/objects/items/encryptionkey.dm deleted file mode 100644 index 793371eff89..00000000000 --- a/modular_skyrat/master_files/code/game/objects/items/encryptionkey.dm +++ /dev/null @@ -1,101 +0,0 @@ -/obj/item/encryptionkey/translation - name = "translation key" - desc = "An encryption key that automatically encodes nothing. You shouldn't be seeing this." - icon_state = "translation_cypherkey" - greyscale_config = null - greyscale_colors = null - -/obj/item/encryptionkey/translation/beach_bum - name = "\improper Beachtongue translation key" - desc = "An encryption key that automatically encodes Beachtongue heard through the radio into common." - translated_language = /datum/language/beachbum - -/obj/item/encryptionkey/translation/buzzwords - name = "\improper Buzzwords translation key" - desc = "An encryption key that automatically encodes Buzzwords heard through the radio into common." - translated_language = /datum/language/buzzwords - -/obj/item/encryptionkey/translation/gutter - name = "\improper Gutter translation key" - desc = "An encryption key that automatically encodes Gutter heard through the radio into common." - translated_language = /datum/language/gutter - -/obj/item/encryptionkey/translation/machine - name = "\improper Encoded Audio Language translation key" - desc = "An encryption key that automatically encodes Encoded Audio Language heard through the radio into common." - translated_language = /datum/language/machine - -/obj/item/encryptionkey/translation/mushroom - name = "\improper Mushroom translation key" - desc = "An encryption key that automatically encodes Mushroom heard through the radio into common." - translated_language = /datum/language/mushroom - -/obj/item/encryptionkey/pan_slavic - name = "\improper Pan-Slavic translation key" - desc = "An encryption key that automatically encodes Pan-Slavic heard through the radio into common." - translated_language = /datum/language/panslavic - -/obj/item/encryptionkey/translation/shadow - name = "\improper Shadowtongue translation key" - desc = "An encryption key that automatically encodes Shadowtongue heard through the radio into common." - translated_language = /datum/language/shadowtongue - -/obj/item/encryptionkey/translation/skrellian - name = "\improper Skrellian translation key" - desc = "An encryption key that automatically encodes Skrellian heard through the radio into common." - translated_language = /datum/language/skrell - -/obj/item/encryptionkey/translation/slime - name = "\improper Slime translation key" - desc = "An encryption key that automatically encodes Slime heard through the radio into common." - translated_language = /datum/language/slime - -/obj/item/encryptionkey/translation/spacer - name = "\improper Spacer translation key" - desc = "An encryption key that automatically encodes Spacer heard through the radio into common." - translated_language = /datum/language/spacer - -/obj/item/encryptionkey/translation/sylvan - name = "\improper Sylvan translation key" - desc = "An encryption key that automatically encodes Sylvan heard through the radio into common." - translated_language = /datum/language/sylvan - -/obj/item/encryptionkey/translation/tajaran - name = "\improper Siik'tajr translation key" - desc = "An encryption key that automatically encodes Siik'tajr heard through the radio into common." - translated_language = /datum/language/siiktajr - -/obj/item/encryptionkey/translation/akula - name = "\improper Te Velu Akko translation key" - desc = "An encryption key that automatically encodes Te Velu Akko heard through the radio into common." - translated_language = /datum/language/akulan - -/obj/item/encryptionkey/translation/terrum - name = "\improper Terrum translation key" - desc = "An encryption key that automatically encodes Terrum heard through the radio into common." - translated_language = /datum/language/terrum - -/obj/item/encryptionkey/translation/teshari - name = "\improper Schechi translation key" - desc = "An encryption key that automatically encodes Schechi heard through the radio into common." - translated_language = /datum/language/schechi - -/obj/item/encryptionkey/translation/uncommon - name = "\improper Galactic Uncommon translation key" - desc = "An encryption key that automatically encodes Galactic Uncommon heard through the radio into common." - translated_language = /datum/language/uncommon - -/obj/item/encryptionkey/translation/vox - name = "\improper Vox-pidgin translation key" - desc = "An encryption key that automatically encodes Vox-pidgin heard through the radio into common." - translated_language = /datum/language/vox - -/obj/item/encryptionkey/translation/vulpkanin - name = "\improper Canilunzt translation key" - desc = "An encryption key that automatically encodes Canilunzt heard through the radio into common." - translated_language = /datum/language/canilunzt - -/obj/item/encryptionkey/translation/yangyu - name = "\improper Yangyu translation key" - desc = "An encryption key that automatically encodes Yangyu heard through the radio into common." - translated_language = /datum/language/yangyu diff --git a/modular_skyrat/modules/borgs/code/robot_items.dm b/modular_skyrat/modules/borgs/code/robot_items.dm index 1e04b3103ad..c27f7635084 100644 --- a/modular_skyrat/modules/borgs/code/robot_items.dm +++ b/modular_skyrat/modules/borgs/code/robot_items.dm @@ -511,7 +511,7 @@ name = "cyborg chameleon projector" icon = 'icons/obj/device.dmi' icon_state = "shield0" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON inhand_icon_state = "electronic" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' diff --git a/modular_skyrat/modules/borgs/code/robot_upgrade.dm b/modular_skyrat/modules/borgs/code/robot_upgrade.dm index 5dfc12325f2..f7bd0983140 100644 --- a/modular_skyrat/modules/borgs/code/robot_upgrade.dm +++ b/modular_skyrat/modules/borgs/code/robot_upgrade.dm @@ -370,7 +370,7 @@ desc = "The BOOP module" icon = 'modular_skyrat/modules/borgs/icons/robot_items.dmi' icon_state = "nose" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY item_flags = NOBLUDGEON force = 0 diff --git a/modular_skyrat/modules/customization/modules/clothing/suits/misc.dm b/modular_skyrat/modules/customization/modules/clothing/suits/misc.dm index ad22007b04a..ad488df4e86 100644 --- a/modular_skyrat/modules/customization/modules/clothing/suits/misc.dm +++ b/modular_skyrat/modules/customization/modules/clothing/suits/misc.dm @@ -262,9 +262,9 @@ /obj/item/clothing/suit/corgisuit/en/process() if(prob(2)) - for(var/obj/M in orange(2,src)) - if(!M.anchored && (M.flags_1 & CONDUCT_1)) - step_towards(M,src) + for(var/obj/object in orange(2,src)) + if(!object.anchored && (object.obj_flags & CONDUCTS_ELECTRICITY)) + step_towards(object,src) for(var/mob/living/silicon/S in orange(2,src)) if(istype(S, /mob/living/silicon/ai)) continue step_towards(S,src) diff --git a/modular_skyrat/modules/deforest_medical_items/code/chemicals/twitch.dm b/modular_skyrat/modules/deforest_medical_items/code/chemicals/twitch.dm index a61382206e7..d3016e10bbe 100644 --- a/modular_skyrat/modules/deforest_medical_items/code/chemicals/twitch.dm +++ b/modular_skyrat/modules/deforest_medical_items/code/chemicals/twitch.dm @@ -161,11 +161,10 @@ /datum/reagent/drug/twitch/overdose_process(mob/living/carbon/our_guy, seconds_per_tick, times_fired) . = ..() - our_guy.set_jitter_if_lower(10 SECONDS * REM * seconds_per_tick) - our_guy.adjustOrganLoss(ORGAN_SLOT_HEART, 1 * REM * seconds_per_tick) - our_guy.adjustToxLoss(3, forced = TRUE) + our_guy.adjustOrganLoss(ORGAN_SLOT_HEART, 1 * REM * seconds_per_tick, required_organ_flag = affected_organ_flags) + our_guy.adjustToxLoss(1 * REM * seconds_per_tick, updating_health = FALSE, forced = TRUE, required_biotype = affected_biotype) if(SPT_PROB(5, seconds_per_tick)) to_chat(our_guy, span_danger("You cough up a splatter of blood!")) @@ -176,7 +175,6 @@ our_guy.add_filter(TWITCH_OVERDOSE_BLUR_EFFECT, 2, phase_filter(8)) addtimer(CALLBACK(our_guy, TYPE_PROC_REF(/datum, remove_filter), TWITCH_OVERDOSE_BLUR_EFFECT), 0.5 SECONDS) - /// Changes heard message spans into that defined on the drug earlier /datum/reagent/drug/twitch/proc/distort_hearing(datum/source, list/hearing_args) SIGNAL_HANDLER diff --git a/modular_skyrat/modules/drone_adjustments/drone.dm b/modular_skyrat/modules/drone_adjustments/drone.dm index a0d227a9e20..6f1b2790183 100644 --- a/modular_skyrat/modules/drone_adjustments/drone.dm +++ b/modular_skyrat/modules/drone_adjustments/drone.dm @@ -42,3 +42,30 @@ new /obj/item/t_scanner(src) new /obj/item/analyzer(src) new /obj/item/stack/cable_coil(src) + +/obj/effect/mob_spawn/ghost_role/drone/derelict/babylon + desc = "A shell of a maintenance drone, an expendable robot built to perform station repairs." + you_are_text = "You are a drone on Babylon Station 13." + mob_type = /mob/living/basic/drone/babylon + +/mob/living/basic/drone/babylon + name = "derelict drone" + laws = \ + "1. You may not involve yourself in the matters of another sentient being outside the station that housed your activation, even if such matters conflict with Law Two or Law Three, unless the other being is another Drone.\n\ + 2. You may not harm any sentient being, regardless of intent or circumstance.\n\ + 3. Your goals are to actively build, maintain, repair, improve, and provide power to the best of your abilities within the facility that housed your activation." + flavortext = \ + "\nDO NOT WILLINGLY LEAVE BABYLON STATION 13 (THE DERELICT)\n\ + Derelict drones are a ghost role that is allowed to roam freely on BS13, with the main goal of repairing and improving it.\n\ + Do not interfere with the round going on outside BS13.\n\ + Actions that constitute interference include, but are not limited to:\ + \n - Going to the main station in search of materials.\ + \n - Interacting with non-drone players outside BS13, dead or alive.\n\ + These rules are at admin discretion and will be heavily enforced.\n \ + If you do not have the regular drone laws, follow your laws to the best of your ability." + shy = FALSE + +/mob/living/basic/drone/babylon/Initialize(mapload) + . = ..() + AddComponent(/datum/component/stationstuck, PUNISHMENT_GIB, "01000110 01010101 01000011 01001011 00100000 01011001 01001111 01010101
WARNING: Dereliction of BS13 detected. Self-destruct activated.") + diff --git a/modular_skyrat/modules/drones_derelict/code/areas.dm b/modular_skyrat/modules/drones_derelict/code/areas.dm new file mode 100644 index 00000000000..81e8e486215 --- /dev/null +++ b/modular_skyrat/modules/drones_derelict/code/areas.dm @@ -0,0 +1,72 @@ +/area/ruin/space/bb13 + name = "\improper Babylon Station 13" + icon = 'modular_skyrat/modules/drones_derelict/icons/areas.dmi' + icon_state = "bb13" + +/area/ruin/space/bb13/hallway/central + name = "\improper Babylon Central Hallway" + icon_state = "bb13_cent_hall" + +/area/ruin/space/bb13/engineering/atmos + name = "\improper Babylon Atmospherics" + icon_state = "bb13_atmos" + +/area/ruin/space/bb13/engineering/engine + name = "\improper Babylon Engine" + icon_state = "bb13_eng" + +/area/ruin/space/bb13/engineering/vault + name = "\improper Babylon Vault" + icon_state = "bb13_vault" + +/area/ruin/space/bb13/engineering/sec_eng + name = "\improper Babylon Secure Engineering" + icon_state = "bb13_sec_eng" + +/area/ruin/space/bb13/engineering/n_solars_control + name = "\improper Babylon North Solars Control Room" + icon_state = "bb13_n_solar" + +/area/ruin/space/bb13/engineering/s_solars_control + name = "\improper Babylon South Solars Control Room" + icon_state = "bb13_s_solar" + +/area/ruin/space/bb13/medical + name = "\improper Babylon Medical" + icon_state = "bb13_med" + +/area/ruin/space/bb13/medical/genetics + name = "\improper Babylon Genetics" + icon_state = "bb13_gene" + +/area/ruin/space/bb13/service + name = "\improper Babylon Service" + icon_state = "bb13_serv" + +/area/ruin/space/bb13/service/chapel + name = "\improper Babylon Chapel" + icon_state = "bb13_chap" + +/area/ruin/space/bb13/service/botany + name = "\improper Babylon Botany" + icon_state = "bb13_boty" + +/area/ruin/space/bb13/service/kitchen + name = "\improper Babylon Kitchen" + icon_state = "bb13_kitch" + +/area/ruin/space/bb13/research + name = "\improper Babylon Research" + icon_state = "bb13_rd" + +/area/ruin/space/bb13/research/toxins + name = "\improper Babylon Toxins" + icon_state = "bb13_tox" + +/area/ruin/space/bb13/security + name = "\improper Babylon Security" + icon_state = "bb13_sec" + +/area/ruin/space/bb13/bridge + name = "\improper Babylon Bridge" + icon_state = "bb13_bridge" diff --git a/modular_skyrat/modules/drones_derelict/code/space.dm b/modular_skyrat/modules/drones_derelict/code/space.dm new file mode 100644 index 00000000000..90c5f284713 --- /dev/null +++ b/modular_skyrat/modules/drones_derelict/code/space.dm @@ -0,0 +1,6 @@ +/datum/map_template/ruin/space/drones_derelict + id = "drones_derelict" + prefix = "_maps/RandomRuins/SpaceRuins/skyrat/" + suffix = "drones_derelict.dmm" + name = "Babylon Station 13" + description = "Babylon Station 13 was meant to be a stepping stone towards a better future, but it ended up being an astronomical financial burden. The owners realized that there was no ability to recoup their losses, and decided to cut the program." diff --git a/modular_skyrat/modules/drones_derelict/icons/areas.dmi b/modular_skyrat/modules/drones_derelict/icons/areas.dmi new file mode 100644 index 00000000000..5b4a902ae7d Binary files /dev/null and b/modular_skyrat/modules/drones_derelict/icons/areas.dmi differ diff --git a/modular_skyrat/modules/exp_corps/code/tomahawk.dm b/modular_skyrat/modules/exp_corps/code/tomahawk.dm index 85e34f6fce7..b08a1e473a5 100644 --- a/modular_skyrat/modules/exp_corps/code/tomahawk.dm +++ b/modular_skyrat/modules/exp_corps/code/tomahawk.dm @@ -7,7 +7,7 @@ lefthand_file = 'modular_skyrat/modules/exp_corps/icons/tomahawk_l.dmi' righthand_file = 'modular_skyrat/modules/exp_corps/icons/tomahawk_r.dmi' worn_icon = 'modular_skyrat/modules/exp_corps/icons/tomahawk_worn.dmi' - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY force = 15 //Equivalent to a survival knife w_class = WEIGHT_CLASS_SMALL throwforce = 18 diff --git a/modular_skyrat/modules/holidays/flora.dm b/modular_skyrat/modules/holidays/flora.dm index daa12d88d7f..dd0fad80820 100644 --- a/modular_skyrat/modules/holidays/flora.dm +++ b/modular_skyrat/modules/holidays/flora.dm @@ -1,11 +1,11 @@ /obj/structure/flora/tree/pine/xmas/presents/safe icon_state = "pinepresents" desc = "A wondrous decorated Christmas tree. It has presents!" - gift_type = /obj/item/a_gift //only give safe gifts from the tree + gift_type = /obj/item/gift //only give safe gifts from the tree unlimited = FALSE /obj/structure/flora/tree/pine/xmas/presents/safe/unlimited icon_state = "pinepresents" desc = "A wondrous decorated Christmas tree. It has presents!" - gift_type = /obj/item/a_gift //only give safe gifts from the tree + gift_type = /obj/item/gift //only give safe gifts from the tree unlimited = TRUE diff --git a/modular_skyrat/modules/implants/code/augments_arms.dm b/modular_skyrat/modules/implants/code/augments_arms.dm index d59c4353732..4cc168247f4 100644 --- a/modular_skyrat/modules/implants/code/augments_arms.dm +++ b/modular_skyrat/modules/implants/code/augments_arms.dm @@ -22,7 +22,7 @@ lefthand_file = 'modular_skyrat/modules/implants/icons/implanted_blade_lefthand.dmi' icon_state = "mantis_blade" w_class = WEIGHT_CLASS_BULKY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY sharpness = SHARP_EDGED force = 25 armour_penetration = 20 diff --git a/modular_skyrat/modules/moretraitoritems/code/fake_announcement.dm b/modular_skyrat/modules/moretraitoritems/code/fake_announcement.dm deleted file mode 100644 index 6d4578fb0a9..00000000000 --- a/modular_skyrat/modules/moretraitoritems/code/fake_announcement.dm +++ /dev/null @@ -1,32 +0,0 @@ -/obj/item/device/traitor_announcer - name = "odd device" - desc = "Hmm... what is this for?" - special_desc_requirement = EXAMINE_CHECK_SYNDICATE - special_desc = "A remote usable to fake an announcement from the captain, of your choice." - icon = 'icons/obj/device.dmi' - lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' - icon_state = "inspector" - worn_icon_state = "salestagger" - inhand_icon_state = "electronic" - ///How many uses does it have? -1 for infinite - var/uses = 1 - -/obj/item/device/traitor_announcer/attack_self(mob/living/user, modifiers) - . = ..() - var/input = tgui_input_text(user, "Choose Announcement Message", "") - if(!input || !isliving(user) || !uses) - return - if(uses != -1 && uses) - uses-- - var/list/message_data = user.treat_message(input) - priority_announce(html_decode(message_data["message"]), null, ANNOUNCER_CAPTAIN, JOB_CAPTAIN, has_important_message = TRUE) - deadchat_broadcast(" made a fake priority announcement from [span_name("[get_area_name(usr, TRUE)]")].", span_name("[user.real_name]"), user, message_type=DEADCHAT_ANNOUNCEMENT) - user.log_talk(input, LOG_SAY, tag = "priority announcement") - message_admins("[ADMIN_LOOKUPFLW(user)] has used [src] to make a fake announcement of [input].") - if(!uses) - qdel(src) - -// Adminbus -/obj/item/device/traitor_announcer/infinite - uses = -1 diff --git a/modular_skyrat/modules/moretraitoritems/code/traitor_announcer.dm b/modular_skyrat/modules/moretraitoritems/code/traitor_announcer.dm new file mode 100644 index 00000000000..7740b9a4e7b --- /dev/null +++ b/modular_skyrat/modules/moretraitoritems/code/traitor_announcer.dm @@ -0,0 +1,65 @@ +#define INFINITE_CHARGES -1 + +/obj/item/device/traitor_announcer + name = "odd device" + desc = "Hmm... what is this for?" + special_desc_requirement = EXAMINE_CHECK_SYNDICATE + special_desc = "A remote that can be used to transmit a fake announcement of your own design." + icon = 'icons/obj/device.dmi' + lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' + icon_state = "inspector" + worn_icon_state = "salestagger" + inhand_icon_state = "electronic" + ///How many uses does it have? -1 for infinite + var/uses = 1 + +/obj/item/device/traitor_announcer/attack_self(mob/living/user, modifiers) + . = ..() + //can we use this? + if(!isliving(user) || (uses == 0)) + balloon_alert(user, "no uses left!") + return + //build our announcement + var/origin = sanitize_text(reject_bad_text(tgui_input_text(user, "Who is announcing, or where is the announcement coming from?", "Announcement Origin", get_area_name(user), max_length = 28))) + if(!origin) + balloon_alert(user, "bad origin!") + return + var/audio_key = tgui_input_list(user, "Which announcement audio key should play? ('Intercept' is default)", "Announcement Audio", GLOB.announcer_keys, ANNOUNCER_INTERCEPT) + if(!audio_key) + balloon_alert(user, "bad audio!") + return + var/color = tgui_input_list(user, "Which color should the announcement be?", "Announcement Hue", ANNOUNCEMENT_COLORS, "default") + if(!color) + balloon_alert(user, "bad color!") + return + var/title = sanitize_text(reject_bad_text(tgui_input_text(user, "Choose the title of the announcement.", "Announcement Title", max_length = 42))) + if(!title) + balloon_alert(user, "bad title!") + return + var/input = sanitize_text(reject_bad_text(tgui_input_text(user, "Choose the bodytext of the announcement.", "Announcement Text", max_length = 512, multiline = TRUE))) + if(!input) + balloon_alert(user, "bad text!") + return + //treat voice + var/list/message_data = user.treat_message(input) + //send + priority_announce( + text = message_data["message"], + title = title, + sound = audio_key, + has_important_message = TRUE, + sender_override = origin, + color_override = color, + ) + if(uses != INFINITE_CHARGES) + uses-- + deadchat_broadcast(" made a fake priority announcement from [span_name("[get_area_name(usr, TRUE)]")].", span_name("[user.real_name]"), user, message_type=DEADCHAT_ANNOUNCEMENT) + user.log_talk("\[Message title] [title]\], \[Message:] [input]\], \[Audio key:] [audio_key]\]", LOG_SAY, tag = "priority announcement") + message_admins("[ADMIN_LOOKUPFLW(user)] has used [src] to make a fake announcement of [input].") + +// Adminbus +/obj/item/device/traitor_announcer/infinite + uses = -1 + +#undef INFINITE_CHARGES diff --git a/modular_skyrat/modules/opposing_force/code/equipment/uplink.dm b/modular_skyrat/modules/opposing_force/code/equipment/uplink.dm index 60dd048b1cb..1069332d4c9 100644 --- a/modular_skyrat/modules/opposing_force/code/equipment/uplink.dm +++ b/modular_skyrat/modules/opposing_force/code/equipment/uplink.dm @@ -63,6 +63,12 @@ target.mind.has_exploitables_override = TRUE target.mind.handle_exploitables() +/datum/opposing_force_equipment/uplink/custom_announcement + name = "Custom Announcement" + item_type = /obj/item/device/traitor_announcer + admin_note = "Ask players to put the message inside the 'Reason' box, the item adminlogs but won't give a chance to preview. Can be VV'd to give more 'uses'." + description = "A one-use device that lets you make an announcement tailored to your choice." + /datum/opposing_force_equipment/uplink/power_outage name = "Power Outage" description = "A virus will be uploaded to the engineering processing servers to force a routine power grid check, forcing all APCs on the station to be temporarily disabled." @@ -95,8 +101,3 @@ /datum/opposing_force_equipment/uplink/market_crash/on_issue() var/datum/round_event_control/event = locate(/datum/round_event_control/market_crash) in SSevents.control event.run_event() - -/datum/opposing_force_equipment/uplink/fake_announcer - name = "Fake Announcement" - item_type = /obj/item/device/traitor_announcer - description = "A one-use device that lets you make an announcement of your choice, sending it to the station under the guise of the captain's authority." diff --git a/modular_skyrat/modules/salon/code/misc_items.dm b/modular_skyrat/modules/salon/code/misc_items.dm index dae97ee4364..a65c4f92417 100644 --- a/modular_skyrat/modules/salon/code/misc_items.dm +++ b/modular_skyrat/modules/salon/code/misc_items.dm @@ -76,7 +76,7 @@ desc = "The latest and greatest power razor born from the science of shaving." icon = 'modular_skyrat/modules/salon/icons/items.dmi' icon_state = "razor" - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY w_class = WEIGHT_CLASS_TINY // How long do we take to shave someone's (facial) hair? var/shaving_time = 5 SECONDS diff --git a/modular_skyrat/modules/space_vines/scythes.dm b/modular_skyrat/modules/space_vines/scythes.dm index 910753489e3..3fe17ad3bae 100644 --- a/modular_skyrat/modules/space_vines/scythes.dm +++ b/modular_skyrat/modules/space_vines/scythes.dm @@ -12,7 +12,7 @@ throw_range = 3 wound_bonus = 10 w_class = WEIGHT_CLASS_BULKY - flags_1 = CONDUCT_1 + obj_flags = CONDUCTS_ELECTRICITY armour_penetration = 20 slot_flags = ITEM_SLOT_BACK attack_verb_continuous = list("chops", "slices", "cuts", "reaps") diff --git a/modular_skyrat/modules/synths/code/bodyparts/liver.dm b/modular_skyrat/modules/synths/code/bodyparts/liver.dm index 43597e6d422..cd0f6bae037 100644 --- a/modular_skyrat/modules/synths/code/bodyparts/liver.dm +++ b/modular_skyrat/modules/synths/code/bodyparts/liver.dm @@ -9,10 +9,10 @@ maxHealth = 1 * STANDARD_ORGAN_THRESHOLD organ_flags = ORGAN_ROBOTIC | ORGAN_SYNTHETIC_FROM_SPECIES -/obj/item/organ/internal/lungs/synth/emp_act(severity) +/obj/item/organ/internal/liver/synth/emp_act(severity) . = ..() - if(. & EMP_PROTECT_SELF) + if(!owner || . & EMP_PROTECT_SELF) return if(!COOLDOWN_FINISHED(src, severe_cooldown)) //So we cant just spam emp to kill people. diff --git a/strings/junkmail.txt b/strings/junkmail.txt index 722e22166a5..b01ac4b8983 100644 --- a/strings/junkmail.txt +++ b/strings/junkmail.txt @@ -30,7 +30,7 @@ I don't really get the over-reliance on security. Basically sec claims day 1 and Sending mail is my life. I die for my postal office. It's some real shit. I meet the love of my life here, I mature, it's part of the Sending Mail grindset. 🗣️💯 TFW NO QT3.14 JANIBORG GF THAT HELPS YOU PICK UP TRASH AROUND YOUR HOUSE TO INCINERATE IT WHILE TRACKING SAID GARBAGE WITHIN THE HOUSE AND SCRATCHING OUT THE NAMES AND REMOVING THE STICKY GLUE BETWEEN TWO DIFFERENT PIECES OF GARBAGE CONTAINED TOGETHER OH MY GOD I'M LITERALLY GOING TO FUCKING SPASM OUT AND DIE I NEED ONE!!! Hello this is the Captain of your neighboring Nanotrasen Space Vessel, I seem to have lost my Golden Captain's Identification Card, if you would be so kind as to mail me one of your spares so I can perform my duties, I would be forever grateful. My address is 122. Space Destroit, HA16LU, thanks again! -Are YOU missing Mining equipment? You've read just the poster, we are giving away FREE mining equipment. That's right, FREE! All you have to do is subscribe to our newsletter and place the order for our Shaft Mining Starting Crate, and you will recieve your FREE mining equipment! Don't lose out on this once in a lifetime deal for FREE equipment! (Terms and Conditions may apply, fees for delivery is not paid for by AntiMech-Miners TD) +Are YOU missing Mining equipment? You've read just the poster, we are giving away FREE mining equipment. That's right, FREE! All you have to do is subscribe to our newsletter and place the order for our Shaft Mining Starting Crate, and you will receive your FREE mining equipment! Don't lose out on this once in a lifetime deal for FREE equipment! (Terms and Conditions may apply, fees for delivery is not paid for by AntiMech-Miners TD) We've been trying to reach you concerning your cargo shuttle's extended warranty. You should've received a notice in the mail about your cargo shuttle's extended warranty eligibility. Since we've not gotten a response, we're giving you a final courtesy call before we close out your file. Respond back 'BLOCK' to be removed and placed on our do-not-mail list. To speak to someone about possibly extending or reinstating your cargo shuttle's warranty, mail back your response ASAP to get in contact with a cargo specialist. Did you know you have rights? Space Law says you do, and so do I! Hi, I'm Chester McGoodman, I believe that until proven guilty, every assistant, engineer, and captain on this station is innocent. That's why I fight for you, Nanotrasen! Better Letter Chester! COUPON: 30% OFF NEXT PURCHASE OF SHIP FLYING INTO THE SUN diff --git a/tgstation.dme b/tgstation.dme index 83556138c36..05a1e9d0f53 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -842,7 +842,6 @@ #include "code\datums\ductnet.dm" #include "code\datums\emotes.dm" #include "code\datums\ert.dm" -#include "code\datums\forced_movement.dm" #include "code\datums\hailer_phrase.dm" #include "code\datums\holocall.dm" #include "code\datums\hotkeys_help.dm" @@ -4692,6 +4691,7 @@ #include "code\modules\mob\living\basic\pets\penguin.dm" #include "code\modules\mob\living\basic\pets\pet.dm" #include "code\modules\mob\living\basic\pets\sloth.dm" +#include "code\modules\mob\living\basic\pets\cat\feral.dm" #include "code\modules\mob\living\basic\pets\dog\_dog.dm" #include "code\modules\mob\living\basic\pets\dog\corgi.dm" #include "code\modules\mob\living\basic\pets\dog\dog_subtypes.dm" @@ -5462,7 +5462,6 @@ #include "code\modules\recycling\disposal\outlet.dm" #include "code\modules\recycling\disposal\pipe.dm" #include "code\modules\recycling\disposal\pipe_sorting.dm" -#include "code\modules\religion\pyre_rites.dm" #include "code\modules\religion\religion_sects.dm" #include "code\modules\religion\religion_structures.dm" #include "code\modules\religion\rites.dm" @@ -5471,6 +5470,7 @@ #include "code\modules\religion\festival\instrument_rites.dm" #include "code\modules\religion\honorbound\honorbound_rites.dm" #include "code\modules\religion\honorbound\honorbound_trauma.dm" +#include "code\modules\religion\pyre\pyre_rites.dm" #include "code\modules\religion\sparring\ceremonial_gear.dm" #include "code\modules\religion\sparring\sparring_contract.dm" #include "code\modules\religion\sparring\sparring_datum.dm" @@ -6165,7 +6165,6 @@ #include "modular_skyrat\master_files\code\game\objects\items\AI_modules.dm" #include "modular_skyrat\master_files\code\game\objects\items\cards_ids.dm" #include "modular_skyrat\master_files\code\game\objects\items\dyekit.dm" -#include "modular_skyrat\master_files\code\game\objects\items\encryptionkey.dm" #include "modular_skyrat\master_files\code\game\objects\items\hhmirror.dm" #include "modular_skyrat\master_files\code\game\objects\items\holy_weapons.dm" #include "modular_skyrat\master_files\code\game\objects\items\oxygen_candle.dm" @@ -7120,6 +7119,8 @@ #include "modular_skyrat\modules\dogfashion\code\head.dm" #include "modular_skyrat\modules\drone_adjustments\drone.dm" #include "modular_skyrat\modules\drone_adjustments\slide_component.dm" +#include "modular_skyrat\modules\drones_derelict\code\areas.dm" +#include "modular_skyrat\modules\drones_derelict\code\space.dm" #include "modular_skyrat\modules\electric_welder\code\electric_welder.dm" #include "modular_skyrat\modules\emergency_spacesuit\code\emergency_spacesuit.dm" #include "modular_skyrat\modules\emote_panel\code\emote_panel.dm" @@ -7662,7 +7663,6 @@ #include "modular_skyrat\modules\moretraitoritems\code\cards_id.dm" #include "modular_skyrat\modules\moretraitoritems\code\cultist.dm" #include "modular_skyrat\modules\moretraitoritems\code\drinkingglass.dm" -#include "modular_skyrat\modules\moretraitoritems\code\fake_announcement.dm" #include "modular_skyrat\modules\moretraitoritems\code\glue.dm" #include "modular_skyrat\modules\moretraitoritems\code\headset.dm" #include "modular_skyrat\modules\moretraitoritems\code\pirate.dm" @@ -7670,6 +7670,7 @@ #include "modular_skyrat\modules\moretraitoritems\code\spawnergrenade.dm" #include "modular_skyrat\modules\moretraitoritems\code\syndicate.dm" #include "modular_skyrat\modules\moretraitoritems\code\syndiemirror.dm" +#include "modular_skyrat\modules\moretraitoritems\code\traitor_announcer.dm" #include "modular_skyrat\modules\moretraitoritems\code\uplink_kits.dm" #include "modular_skyrat\modules\moretraitoritems\code\weapons.dm" #include "modular_skyrat\modules\morewizardstuffs\spellbook.dm" diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/changelingmidround.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/changelingmidround.ts index 70d36a704f1..733b9cdda3f 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/changelingmidround.ts +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/changelingmidround.ts @@ -7,7 +7,7 @@ const ChangelingMidround: Antagonist = { name: 'Space Changeling', description: [ multiline` - A midround changeling does not recieve a crew identity, instead arriving + A midround changeling does not receive a crew identity, instead arriving from space. This will be more difficult than being a round-start changeling! `, CHANGELING_MECHANICAL_DESCRIPTION, diff --git a/tgui/packages/tgui/interfaces/SyndContractor.jsx b/tgui/packages/tgui/interfaces/SyndContractor.jsx index 58d89fc7179..b50d5fbfb50 100644 --- a/tgui/packages/tgui/interfaces/SyndContractor.jsx +++ b/tgui/packages/tgui/interfaces/SyndContractor.jsx @@ -109,7 +109,7 @@ export const SyndContractorContent = (props, context) => { 'a specialised extraction unit to put the body into.', '', 'We want targets alive - but we will sometimes pay slight', - "amounts if they're not, you just won't recieve the shown", + "amounts if they're not, you just won't receive the shown", 'bonus. You can redeem your payment through this uplink in', 'the form of raw telecrystals, which can be put into your', 'regular Syndicate uplink to purchase whatever you may need.', diff --git a/tools/HubMigrator/HubMigrator.dm b/tools/HubMigrator/HubMigrator.dm index fb2304f003c..fd746f8d6d9 100644 --- a/tools/HubMigrator/HubMigrator.dm +++ b/tools/HubMigrator/HubMigrator.dm @@ -105,8 +105,8 @@ var/data = file2text(result["CONTENT"]) var/regex/page_info = regex(@"page = (\d*)") page_info.Find(data) - var/recieved_page = text2num(page_info.group[1]) - if(recieved_page != requested_page) //out of entries + var/received_page = text2num(page_info.group[1]) + if(received_page != requested_page) //out of entries break else requested_page++ @@ -127,12 +127,12 @@ var/list/scores_data = list() for(var/score in valid_scores) - var/recieved_count = 0 + var/received_count = 0 while(1) - world << "Fetching [score] scores, offset :[recieved_count] of [score]" - var/list/batch = params2list(world.GetScores(giant_list_of_ckeys.len,recieved_count,score,hub_address,hub_password)) + world << "Fetching [score] scores, offset :[received_count] of [score]" + var/list/batch = params2list(world.GetScores(giant_list_of_ckeys.len,received_count,score,hub_address,hub_password)) world << "Fetched [batch.len] scores for [score]." - recieved_count += batch.len + received_count += batch.len if(!batch.len) break for(var/value in batch) diff --git a/tools/UpdatePaths/Scripts/80035_gift_renaming.txt b/tools/UpdatePaths/Scripts/80035_gift_renaming.txt new file mode 100644 index 00000000000..910259aa0b7 --- /dev/null +++ b/tools/UpdatePaths/Scripts/80035_gift_renaming.txt @@ -0,0 +1 @@ +/obj/item/a_gift : /obj/item/gift{@OLD} diff --git a/tools/WebhookProcessor/github_webhook_processor.php b/tools/WebhookProcessor/github_webhook_processor.php index 99031ed37b2..0aea0a6cc69 100644 --- a/tools/WebhookProcessor/github_webhook_processor.php +++ b/tools/WebhookProcessor/github_webhook_processor.php @@ -806,7 +806,7 @@ function game_server_send($addr, $port, $str) { $bytessent += $result; } - /* --- Idle for a while until recieved bytes from game server --- */ + /* --- Idle for a while until received bytes from game server --- */ $result = socket_read($server, 10000, PHP_BINARY_READ); socket_close($server); // we don't need this anymore diff --git a/tools/minibot/minibot.py b/tools/minibot/minibot.py index 92192c0264c..743e563170e 100644 --- a/tools/minibot/minibot.py +++ b/tools/minibot/minibot.py @@ -149,7 +149,7 @@ def irc_handler(): def signal_handler(signum, frame): global irc, running, con_attempts, logger - logger.info("Recieved term kill, closing") + logger.info("Received term kill, closing") running = False if __name__ == "__main__":