diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d456e8d2ddd2..950887721316 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -24,9 +24,9 @@ /code/modules/food_and_drinks/drinks/drinks/breakawayflask.dm @FalloutFalcon /code/modules/food_and_drinks/food/ration.dm @FalloutFalcon /code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @FalloutFalcon -/code/modules/projectiles @FalloutFalcon +/code/modules/projectiles/ @FalloutFalcon /code/modules/reagents/chemistry/reagents/trickwine_reagents.dm @FalloutFalcon -/code/modules/unit_tests/icons @FalloutFalcon +/code/modules/unit_tests/icons/ @FalloutFalcon # MarkSuckerberg diff --git a/Dockerfile b/Dockerfile index 0d759e966811..6cefd0618365 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # syntax=docker/dockerfile:1 -FROM beestation/byond:515.1616 as base +FROM beestation/byond:515.1633 as base # Install the tools needed to compile our rust dependencies FROM base as rust-build @@ -11,9 +11,9 @@ COPY dependencies.sh . RUN dpkg --add-architecture i386 \ && apt-get update \ && apt-get install -y --no-install-recommends \ - curl ca-certificates gcc-multilib clang \ - g++-multilib libc6-i386 zlib1g-dev:i386 \ - libssl-dev:i386 pkg-config:i386 git \ + curl ca-certificates gcc-multilib \ + clang g++-multilib libc6-i386 \ + zlib1g-dev:i386 pkg-config:i386 git \ && /bin/bash -c "source dependencies.sh \ && curl https://sh.rustup.rs | sh -s -- -y -t i686-unknown-linux-gnu --no-modify-path --profile minimal --default-toolchain \$RUST_VERSION" \ && rm -rf /var/lib/apt/lists/* @@ -25,7 +25,7 @@ RUN git init \ && /bin/bash -c "source dependencies.sh \ && git fetch --depth 1 origin \$RUST_G_VERSION" \ && git checkout FETCH_HEAD \ - && cargo build --release --all-features --target i686-unknown-linux-gnu + && cargo build --release --target i686-unknown-linux-gnu # Build auxmos FROM rust-build as auxmos diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_ashwalker_shrine.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_ashwalker_shrine.dmm deleted file mode 100644 index b3d7e439a805..000000000000 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ashwalker_shrine.dmm +++ /dev/null @@ -1,3692 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ad" = ( -/obj/structure/fence{ - dir = 4 - }, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"aw" = ( -/obj/structure/stone_tile/block{ - dir = 8 - }, -/obj/item/melee/transforming/energy/sword/saber/red, -/obj/effect/mob_spawn/human/corpse/nanotrasenassaultsoldier, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"aA" = ( -/turf/template_noop, -/area/template_noop) -"aG" = ( -/obj/item/circuitboard/computer/operating, -/obj/item/storage/backpack/duffelbag/syndie/surgery, -/obj/structure/closet/supplypod, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"bm" = ( -/obj/structure/stone_tile/slab, -/obj/structure/table/wood, -/obj/item/storage/toolbox/syndicate, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"cm" = ( -/obj/structure/stone_tile/block, -/obj/structure/stone_tile/slab{ - pixel_y = -16 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"cv" = ( -/obj/structure/bonfire, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"cx" = ( -/obj/structure/stone_tile/slab, -/obj/item/ammo_casing/shotgun/buckshot, -/obj/effect/mob_spawn/human/corpse{ - mob_species = /datum/species/lizard/ashwalker - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"cA" = ( -/obj/structure/stone_tile/block{ - dir = 4 - }, -/obj/structure/stone_tile/block{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"cR" = ( -/obj/structure/stone_tile/slab, -/obj/item/ammo_casing/shotgun/buckshot, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"dg" = ( -/obj/structure/stone_tile/block{ - pixel_x = -16 - }, -/obj/structure/stone_tile{ - dir = 8 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"dn" = ( -/obj/structure/stone_tile/block{ - dir = 8 - }, -/obj/structure/stone_tile/block{ - dir = 4 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"dv" = ( -/obj/item/ammo_casing/shotgun/buckshot, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"dD" = ( -/turf/closed/indestructible/riveted/boss, -/area/overmap_encounter/planetoid/lava/explored) -"dM" = ( -/obj/structure/stone_tile/slab, -/turf/open/lava/smooth/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"dY" = ( -/obj/structure/fence/door{ - dir = 4 - }, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"ee" = ( -/obj/structure/stone_tile/slab/burnt, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"ej" = ( -/obj/structure/stone_tile/surrounding_tile/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/center/cracked, -/obj/structure/stone_tile/surrounding_tile, -/obj/structure/stone_tile/surrounding_tile{ - dir = 1 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"ek" = ( -/obj/structure/stone_tile/block{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"eq" = ( -/obj/item/storage/bag/plants/portaseeder, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"ew" = ( -/obj/structure/stone_tile/block, -/obj/structure/mineral_door/sandstone, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"eH" = ( -/obj/structure/stone_tile/center, -/obj/structure/stone_tile/surrounding_tile, -/obj/structure/stone_tile/surrounding_tile{ - dir = 8 - }, -/obj/structure/stone_tile/surrounding_tile{ - dir = 4 - }, -/obj/structure/stone_tile/surrounding_tile{ - dir = 1 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"eZ" = ( -/obj/structure/stone_tile/surrounding_tile/cracked, -/obj/structure/stone_tile/center, -/obj/structure/stone_tile/surrounding_tile{ - dir = 1 - }, -/obj/structure/stone_tile/surrounding_tile{ - dir = 8 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"fd" = ( -/obj/structure/stone_tile/slab/cracked{ - dir = 10 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"fe" = ( -/obj/structure/closet/crate/radiation, -/obj/item/flashlight/lantern, -/obj/item/flashlight/lantern, -/obj/item/flashlight/lantern, -/obj/item/flashlight/flare, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"fU" = ( -/obj/structure/stone_tile/block{ - dir = 4; - pixel_y = -16 - }, -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"fV" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken4" - }, -/area/overmap_encounter/planetoid/lava/explored) -"gl" = ( -/obj/structure/stone_tile/block, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"gp" = ( -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile/block{ - dir = 8; - pixel_y = 16 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"gM" = ( -/obj/item/stack/cable_coil/red, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"ha" = ( -/obj/structure/stone_tile/slab/cracked{ - dir = 6 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"hd" = ( -/obj/structure/stone_tile, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"hk" = ( -/obj/structure/rack, -/obj/item/stack/sheet/mineral/wood{ - amount = 18 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"ie" = ( -/obj/structure/table/wood, -/obj/item/seeds/cannabis, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"ik" = ( -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"il" = ( -/obj/structure/table/wood, -/obj/item/spear/bonespear, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"im" = ( -/obj/structure/fence{ - dir = 8 - }, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"iw" = ( -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"je" = ( -/obj/structure/stone_tile/block{ - dir = 1; - pixel_x = 16 - }, -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 1 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"jl" = ( -/turf/open/lava/smooth/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"ke" = ( -/obj/machinery/hydroponics/soil, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"kz" = ( -/obj/structure/stone_tile/block{ - dir = 8; - pixel_y = 16 - }, -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"kD" = ( -/obj/structure/stone_tile/block{ - dir = 1 - }, -/obj/item/ammo_casing/shotgun/buckshot, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"kT" = ( -/obj/structure/stone_tile/block{ - dir = 4 - }, -/obj/structure/mineral_door/sandstone, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"kV" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken2" - }, -/area/overmap_encounter/planetoid/lava/explored) -"kZ" = ( -/obj/structure/stone_tile/surrounding_tile{ - dir = 4 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"lc" = ( -/obj/structure/stone_tile/slab, -/obj/structure/table/wood, -/obj/item/instrument/trombone, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"lh" = ( -/obj/structure/table/wood, -/obj/item/storage/firstaid/fire, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"ln" = ( -/obj/machinery/the_singularitygen, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"lt" = ( -/mob/living/simple_animal/hostile/asteroid/gutlunch, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"lx" = ( -/obj/structure/fence, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"lO" = ( -/obj/structure/stone_tile/slab{ - pixel_y = -16 - }, -/obj/structure/stone_tile/block, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"mg" = ( -/obj/structure/stone_tile/slab, -/obj/structure/mineral_door/sandstone, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"nh" = ( -/obj/effect/mob_spawn/human/corpse{ - mob_species = /datum/species/lizard/ashwalker - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"nr" = ( -/obj/structure/stone_tile/block{ - dir = 1 - }, -/obj/structure/mineral_door/sandstone, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"ny" = ( -/obj/structure/stone_tile/block{ - dir = 1 - }, -/obj/structure/stone_tile/block, -/obj/structure/chair/wood/wings{ - dir = 4 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"ox" = ( -/obj/structure/stone_tile/slab, -/obj/effect/gibspawner/human, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"oF" = ( -/obj/structure/stone_tile/block, -/obj/structure/stone_tile/block{ - dir = 1 - }, -/obj/structure/chair/wood/wings, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"oO" = ( -/obj/structure/fence/door, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"oY" = ( -/obj/structure/stone_tile/surrounding_tile/cracked, -/obj/structure/stone_tile/surrounding_tile/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/center, -/obj/structure/stone_tile/surrounding_tile{ - dir = 8 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"px" = ( -/obj/item/seeds/potato, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"pJ" = ( -/mob/living/simple_animal/hostile/human/nanotrasen/ranged/smg, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"pT" = ( -/obj/structure/table/wood, -/obj/item/seeds/ambrosia, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"pZ" = ( -/obj/structure/fence/corner{ - dir = 6 - }, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"qq" = ( -/obj/structure/stone_tile/slab/cracked{ - dir = 5 - }, -/obj/structure/bonfire, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"qw" = ( -/obj/effect/gibspawner/human, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"qy" = ( -/obj/structure/stone_tile/slab/burnt, -/obj/item/ammo_casing/shotgun/buckshot, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"qG" = ( -/obj/structure/stone_tile/surrounding, -/obj/structure/stone_tile/center, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"rc" = ( -/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"rk" = ( -/obj/structure/stone_tile/block{ - dir = 1 - }, -/obj/structure/stone_tile/block, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"rm" = ( -/obj/structure/stone_tile/slab, -/obj/structure/chair/wood/wings{ - dir = 4 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"rp" = ( -/obj/structure/rack, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"ru" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/overmap_encounter/planetoid/lava/explored) -"rx" = ( -/obj/structure/stone_tile/block, -/obj/effect/mob_spawn/human/corpse{ - mob_species = /datum/species/lizard/ashwalker - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"rD" = ( -/obj/structure/stone_tile/slab, -/obj/effect/mob_spawn/human/corpse{ - mob_species = /datum/species/lizard/ashwalker - }, -/obj/item/spear/bonespear, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"rH" = ( -/obj/structure/stone_tile/surrounding_tile{ - dir = 8 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"rJ" = ( -/obj/structure/stone_tile/slab, -/obj/item/paper{ - desc = "A hastily written note, written in the Lizard language."; - default_raw_text = "To all brethren who may read this, we are sorry. We failed to defend the Necropolis, and those from the sky destroyed our home. I write this in my last dying breath, to warn you to not make our mistakes. Don't let them fool you with their actions, all of those who come from the sky are not your friends. They wish to loot and pillage your villages. Please do not make our same mistakes." - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"sc" = ( -/obj/structure/stone_tile/block{ - dir = 8 - }, -/obj/effect/mob_spawn/human/corpse{ - mob_species = /datum/species/lizard/ashwalker - }, -/obj/item/spear/bonespear, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"ss" = ( -/obj/structure/stone_tile/slab, -/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"sM" = ( -/obj/item/seeds/tower, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"tR" = ( -/obj/structure/table/wood, -/obj/item/seeds/cotton/durathread, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"uc" = ( -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile/block{ - dir = 8; - pixel_y = 16 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"uH" = ( -/obj/structure/stone_tile/block, -/obj/effect/gibspawner/human, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"uJ" = ( -/obj/structure/bed, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"uK" = ( -/turf/closed/wall/mineral/wood/nonmetal, -/area/overmap_encounter/planetoid/lava/explored) -"vd" = ( -/obj/structure/stone_tile/block, -/obj/structure/stone_tile/block{ - dir = 1 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"vm" = ( -/obj/structure/stone_tile/block{ - dir = 4 - }, -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"vu" = ( -/obj/structure/stone_tile/surrounding, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"vH" = ( -/obj/structure/stone_tile/block, -/obj/effect/mob_spawn/human/corpse{ - mob_species = /datum/species/lizard/ashwalker - }, -/obj/item/spear/bonespear, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"vN" = ( -/obj/structure/stone_tile/block{ - dir = 8; - pixel_y = 16 - }, -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"vU" = ( -/obj/effect/mob_spawn/human/corpse{ - mob_species = /datum/species/lizard/ashwalker - }, -/obj/item/spear/bonespear, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"vW" = ( -/obj/structure/stone_tile/center, -/obj/structure/stone_tile/surrounding/burnt, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"wi" = ( -/mob/living/simple_animal/hostile/asteroid/gutlunch, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"wt" = ( -/obj/structure/bed, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"wz" = ( -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile/block, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"wO" = ( -/mob/living/simple_animal/hostile/asteroid/gutlunch/guthen, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"wV" = ( -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"xa" = ( -/obj/structure/stone_tile/block{ - dir = 4 - }, -/obj/effect/gibspawner/human, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"xt" = ( -/obj/structure/stone_tile/slab, -/obj/structure/table/wood, -/obj/item/weldingtool/experimental, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"xT" = ( -/obj/structure/stone_tile/slab, -/obj/structure/stone_tile/slab, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"xZ" = ( -/obj/structure/stone_tile/slab, -/mob/living/simple_animal/hostile/asteroid/gutlunch/guthen, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"yp" = ( -/obj/structure/stone_tile/block, -/mob/living/simple_animal/hostile/asteroid/gutlunch, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"yD" = ( -/obj/structure/stone_tile/slab, -/mob/living/simple_animal/hostile/asteroid/gutlunch/grublunch, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"yJ" = ( -/obj/structure/stone_tile/slab, -/mob/living/simple_animal/hostile/human/nanotrasen/ranged/assault, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"zG" = ( -/obj/structure/table/wood, -/obj/structure/stone_tile/slab, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"zJ" = ( -/obj/structure/sink/puddle, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"zW" = ( -/obj/item/ammo_casing/shotgun/buckshot, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/overmap_encounter/planetoid/lava/explored) -"zY" = ( -/obj/structure/stone_tile/block{ - dir = 1; - pixel_x = 16 - }, -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/effect/mob_spawn/human/corpse{ - mob_species = /datum/species/lizard/ashwalker - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"An" = ( -/obj/structure/fence/corner{ - dir = 8 - }, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"At" = ( -/obj/structure/table/wood, -/obj/item/seeds/garlic, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"AG" = ( -/obj/item/seeds/peas, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"AI" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 4 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"AY" = ( -/obj/structure/stone_tile/block{ - dir = 4 - }, -/obj/effect/mob_spawn/human/corpse{ - mob_species = /datum/species/lizard/ashwalker - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Bv" = ( -/obj/item/seeds/glowshroom/glowcap, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"BF" = ( -/obj/machinery/hydroponics/soil, -/obj/item/seeds/tower, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"Cr" = ( -/obj/structure/fence/door{ - dir = 4 - }, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"CE" = ( -/obj/structure/stone_tile{ - dir = 8 - }, -/obj/structure/stone_tile/slab{ - pixel_y = -16 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"CM" = ( -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"CP" = ( -/obj/machinery/smartfridge/drying_rack, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"CT" = ( -/obj/structure/stone_tile/slab, -/obj/structure/table/wood, -/obj/item/reagent_containers/food/snacks/soup/blood, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"CU" = ( -/obj/structure/stone_tile/slab, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Dk" = ( -/obj/structure/stone_tile{ - dir = 4 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"DF" = ( -/obj/item/clothing/head/welding, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Eh" = ( -/obj/structure/stone_tile/slab, -/obj/structure/table/wood, -/obj/item/reagent_containers/glass/bowl/mushroom_bowl, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Eq" = ( -/obj/structure/stone_tile/block{ - dir = 8 - }, -/obj/effect/mob_spawn/human/corpse{ - mob_species = /datum/species/lizard/ashwalker - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Ez" = ( -/obj/structure/stone_tile/slab, -/obj/structure/table/wood, -/obj/item/reagent_containers/glass/bowl/mushroom_bowl, -/obj/item/reagent_containers/food/snacks/soup/wish, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Fk" = ( -/obj/structure/stone_tile/block{ - dir = 4 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Fo" = ( -/obj/structure/stone_tile/slab, -/obj/structure/table/wood, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"FS" = ( -/obj/structure/table/wood, -/obj/item/seeds/ambrosia, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"Gr" = ( -/obj/item/ammo_casing/shotgun/buckshot, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"GD" = ( -/obj/structure/stone_tile/surrounding_tile/cracked{ - dir = 8 - }, -/obj/structure/stone_tile/center, -/obj/structure/stone_tile/surrounding_tile{ - dir = 1 - }, -/obj/structure/stone_tile/surrounding_tile{ - dir = 4 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"HL" = ( -/obj/effect/mob_spawn/human/corpse{ - mob_species = /datum/species/lizard/ashwalker - }, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"HP" = ( -/obj/structure/mineral_door/sandstone, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Ii" = ( -/obj/structure/stone_tile/surrounding_tile, -/obj/structure/stone_tile/surrounding_tile{ - pixel_x = 17; - pixel_y = -17 - }, -/obj/structure/stone_tile/surrounding_tile{ - dir = 1; - pixel_x = 17; - pixel_y = -17 - }, -/obj/structure/stone_tile/surrounding_tile{ - dir = 4; - pixel_x = 17; - pixel_y = -17 - }, -/obj/structure/stone_tile/surrounding_tile{ - dir = 8; - pixel_x = 17; - pixel_y = -17 - }, -/obj/structure/stone_tile/center{ - pixel_x = 17; - pixel_y = -17 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"IF" = ( -/obj/structure/stone_tile/block{ - dir = 1 - }, -/obj/item/kinetic_crusher, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"IO" = ( -/obj/structure/stone_tile/block/cracked, -/turf/open/lava/smooth/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Jd" = ( -/mob/living/simple_animal/hostile/asteroid/gutlunch/gubbuck, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"Jk" = ( -/obj/structure/stone_tile/block{ - dir = 4; - pixel_y = -16 - }, -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Jv" = ( -/obj/structure/stone_tile/block{ - dir = 1 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"JA" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken3" - }, -/area/overmap_encounter/planetoid/lava/explored) -"JL" = ( -/obj/structure/table/wood, -/obj/item/seeds/cotton, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"JM" = ( -/obj/structure/table/wood, -/obj/item/seeds/cabbage, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"JR" = ( -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/effect/mob_spawn/human/corpse{ - mob_species = /datum/species/lizard/ashwalker - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"JV" = ( -/obj/structure/table/wood, -/obj/item/seeds/cherry, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"JZ" = ( -/obj/structure/stone_tile/slab, -/obj/structure/fluff/drake_statue, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Kd" = ( -/obj/structure/stone_tile/slab/cracked{ - dir = 1 - }, -/obj/structure/table/wood, -/obj/item/stack/sheet/mineral/wood/fifty, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Ku" = ( -/obj/structure/table/wood, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"KR" = ( -/obj/item/storage/firstaid/regular, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"KS" = ( -/obj/structure/stone_tile/block{ - dir = 4 - }, -/obj/item/ammo_casing/shotgun/buckshot, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Lj" = ( -/obj/structure/stone_tile/block{ - dir = 4 - }, -/obj/effect/mob_spawn/human/corpse{ - mob_species = /datum/species/lizard/ashwalker - }, -/obj/item/spear/bonespear, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"LG" = ( -/mob/living/simple_animal/hostile/asteroid/gutlunch/guthen, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"LL" = ( -/obj/structure/stone_tile/slab, -/obj/effect/mob_spawn/human/corpse{ - mob_species = /datum/species/lizard/ashwalker - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"LS" = ( -/obj/item/seeds/plump, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"MX" = ( -/obj/structure/stone_tile/slab/cracked{ - dir = 10 - }, -/obj/item/ammo_casing/shotgun/buckshot, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Nf" = ( -/obj/structure/stone_tile/block{ - dir = 1 - }, -/obj/structure/stone_tile/block, -/obj/structure/chair/wood/wings{ - dir = 1 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Np" = ( -/obj/item/seeds/wheat, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"Nt" = ( -/obj/structure/bonfire, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"NA" = ( -/obj/structure/table/wood, -/obj/item/clothing/head/welding, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"ND" = ( -/obj/structure/stone_tile/block, -/obj/structure/stone_tile/slab{ - pixel_y = -16 - }, -/obj/structure/mineral_door/sandstone, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"NE" = ( -/obj/structure/stone_tile/block{ - dir = 1 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"OB" = ( -/obj/structure/table/optable, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Pi" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 1 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Qv" = ( -/obj/structure/sink/puddle, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"QT" = ( -/obj/structure/fence/corner{ - dir = 5 - }, -/turf/open/floor/plating/ashplanet/ash, -/area/overmap_encounter/planetoid/lava/explored) -"QW" = ( -/obj/structure/closet/crate/medical, -/obj/item/storage/firstaid/regular, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/lizard, -/obj/item/reagent_containers/blood/lizard, -/obj/item/stack/sheet/cotton/cloth/ten, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Sa" = ( -/obj/structure/stone_tile/slab/cracked{ - dir = 4 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"SJ" = ( -/obj/effect/mob_spawn/human/corpse{ - mob_species = /datum/species/lizard/ashwalker - }, -/obj/structure/stone_tile/block{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"SO" = ( -/obj/structure/closet/crate, -/obj/item/flashlight/lantern, -/obj/item/flashlight/lantern, -/obj/item/flashlight/lantern, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Td" = ( -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Ty" = ( -/obj/structure/stone_tile/slab/cracked, -/mob/living/simple_animal/hostile/human/nanotrasen/ranged, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"TX" = ( -/obj/structure/stone_tile{ - dir = 8 - }, -/obj/structure/stone_tile/block{ - dir = 1 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Ua" = ( -/obj/structure/stone_tile/surrounding_tile{ - dir = 1 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Us" = ( -/obj/structure/stone_tile/slab, -/obj/structure/table/wood, -/obj/item/spear/bonespear, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Ux" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/overmap_encounter/planetoid/lava/explored) -"Uy" = ( -/obj/structure/stone_tile/block{ - dir = 8 - }, -/obj/structure/mineral_door/sandstone, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"UB" = ( -/obj/structure/stone_tile{ - dir = 1 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"UF" = ( -/obj/structure/table/wood, -/obj/item/spear/bonespear, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"Vb" = ( -/obj/structure/stone_tile/block{ - dir = 4 - }, -/obj/item/clothing/head/welding, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"VT" = ( -/obj/structure/stone_tile/block{ - dir = 4 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"WJ" = ( -/obj/structure/table/wood, -/obj/item/melee/transforming/energy/sword/saber/red, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"WM" = ( -/obj/item/storage/firstaid/tactical, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Xe" = ( -/obj/machinery/hydroponics/soil, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Xw" = ( -/obj/structure/mineral_door/sandstone, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"Yg" = ( -/obj/structure/stone_tile/slab/cracked{ - dir = 5 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Yh" = ( -/obj/structure/stone_tile/slab/cracked, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"YC" = ( -/obj/structure/table/wood, -/obj/item/storage/firstaid/ancient, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"YI" = ( -/obj/structure/table/wood, -/obj/item/stack/sheet/mineral/wood/fifty, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"YT" = ( -/obj/structure/stone_tile/block/cracked, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Zc" = ( -/obj/structure/stone_tile/block{ - dir = 1 - }, -/obj/structure/stone_tile/block, -/obj/structure/chair/wood/wings, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"Zj" = ( -/obj/machinery/iv_drip, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/turf/open/floor/wood, -/area/overmap_encounter/planetoid/lava/explored) -"ZL" = ( -/obj/structure/stone_tile/block{ - dir = 8 - }, -/obj/effect/gibspawner/human, -/turf/open/lava/smooth/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) -"ZX" = ( -/obj/structure/table/wood, -/obj/item/storage/box/rxglasses, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/lava/explored) - -(1,1,1) = {" -Td -Td -Td -Td -Td -Td -Td -Td -Td -Td -Td -Td -Td -Td -Td -dD -uK -dD -uK -Td -dD -uK -dD -Td -Td -Td -Td -gl -Td -Td -Td -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -"} -(2,1,1) = {" -Td -An -lx -lx -lx -lx -lx -lx -dD -uK -Td -dD -Td -Td -uK -dD -pT -wV -CP -Td -wV -ie -dD -uK -Td -Td -Td -Td -CU -Td -Td -aA -aA -aA -aA -aA -aA -aA -Td -Td -Td -Td -aA -aA -aA -aA -aA -aA -aA -aA -"} -(3,1,1) = {" -Td -ad -px -Np -CM -LS -CM -sM -Td -iw -iw -uK -uK -Td -dD -Td -Td -iw -iw -iw -iw -iw -iw -dD -Td -Td -Td -gl -Td -Jv -Td -Td -Td -Td -Td -Td -Td -Td -Gr -gl -ee -Td -Td -aA -aA -aA -aA -aA -aA -aA -"} -(4,1,1) = {" -Td -ad -CM -BF -ke -ke -ke -CM -oO -iw -iw -iw -dD -Td -Td -Td -iw -Td -Td -iw -JL -JV -wV -dD -Td -Td -Td -gl -CU -Jv -Td -Td -Td -uK -dD -uK -Td -uK -dD -YT -CU -Jv -Td -aA -aA -aA -aA -aA -aA -aA -"} -(5,1,1) = {" -Td -ad -CM -ke -ke -BF -ke -Bv -dD -iw -iw -iw -Td -Td -dD -Td -wV -tR -Td -Td -JM -wV -wV -Td -Td -Td -Td -gl -CU -Td -Td -Td -dD -dD -iw -iw -Td -pJ -dD -gl -Yh -Jv -Td -Gr -Td -aA -aA -aA -aA -aA -"} -(6,1,1) = {" -Td -ad -Np -AG -sM -CM -sM -zJ -dD -eq -iw -wt -uK -Td -uK -iw -iw -At -iw -Td -iw -iw -iw -dD -Td -Td -Td -gl -CU -Jv -Td -Td -Td -Td -iw -HL -iw -Td -uK -YT -CU -Pi -Td -Td -Td -Td -Td -dD -dD -Td -"} -(7,1,1) = {" -Td -QT -lx -lx -Cr -lx -lx -lx -uK -dD -iw -uK -dD -Td -dD -hk -rp -Ku -iw -Td -wV -Ku -FS -uK -Td -Td -Td -gl -CU -Jv -Td -Td -dD -iw -Td -Td -Td -Td -dD -gl -cR -Jv -Td -dD -dD -dD -uK -dD -uK -dD -"} -(8,1,1) = {" -Td -Td -Td -Td -Td -Td -Td -Td -Td -Jv -CU -gl -Td -Td -dD -Td -uK -dD -HP -HP -dD -uK -Td -dD -Td -Td -Td -gl -CU -Jv -Td -Td -uK -UF -iw -iw -cv -iw -Xw -Td -ee -Jv -gM -uK -Td -uK -Td -uK -Td -dD -"} -(9,1,1) = {" -Td -Td -Td -cA -cA -cA -cA -Fk -Fk -Fk -CU -Fk -Fk -Fk -Fk -Fk -Fk -VT -CU -CU -vm -Fk -Fk -Fk -Fk -Fk -Fk -hd -CU -Jv -Td -Td -dD -il -iw -Td -iw -HL -uK -gl -CU -UB -Fk -Fk -AY -eZ -AI -ej -Td -uK -"} -(10,1,1) = {" -Td -Td -CU -CU -CU -CU -CU -CU -CU -CU -CU -CU -CU -CU -lO -Jv -CU -lO -Jv -CU -lO -Jv -lO -Jv -lO -Jv -lO -Jv -CU -Jv -Td -Td -dD -dD -iw -iw -iw -iw -dD -gl -ee -CU -CU -Ty -rJ -IO -jl -NE -WM -Td -"} -(11,1,1) = {" -Td -CU -CU -CU -CU -CU -CU -CU -CU -CU -CU -CU -CU -CU -lO -Jv -CU -lO -Jv -CU -lO -Jv -lO -Jv -lO -Jv -lO -Jv -CU -Jv -Td -Td -Td -dD -iw -iw -SO -dD -uK -gl -Yh -Dk -SJ -ek -aw -oY -ZL -GD -Td -uK -"} -(12,1,1) = {" -Td -Td -ek -ek -dn -dn -dn -ek -ek -ek -ek -ek -ek -ek -ek -ek -ek -ek -TX -CU -wz -ek -ek -ek -ek -ek -ek -ik -CU -Jv -Td -Td -Td -dD -Td -uK -uK -dD -Xe -YT -qy -Jv -Td -cv -uK -Td -Td -nh -dD -dD -"} -(13,1,1) = {" -aA -Td -Td -Td -Td -Td -Td -Td -Td -Td -Td -Td -Td -Td -Td -Td -Td -dD -vd -CU -rk -dD -Td -wV -wV -Xw -dD -gl -CU -Jv -Td -Td -Td -Td -Td -Td -Td -Td -Xe -gl -CU -Jv -Td -Td -Td -dD -uK -uK -Td -uK -"} -(14,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -uK -oF -CT -Nf -dD -iw -iw -iw -Td -uK -uH -CU -Jv -Td -Td -Td -Td -Td -Td -Td -Td -Xe -gl -CU -kD -DF -Xe -Qv -Td -uK -dD -cv -Td -"} -(15,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -uK -oF -Eh -Nf -wV -Td -iw -iw -iw -dD -gl -CU -Jv -Td -Td -Td -Td -dD -dD -uK -Qv -Td -gl -CU -Pi -qw -Xe -uK -dD -Ux -dD -uK -Td -"} -(16,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -Td -vd -CU -Zc -wV -iw -iw -iw -iw -uK -gl -CU -Jv -Td -uK -dD -wV -Td -YI -uK -dD -Td -YT -ee -IF -Td -dD -uK -iw -iw -iw -uK -uK -"} -(17,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -dD -oF -Ez -Nf -wV -iw -iw -iw -iw -dD -gl -CU -Jv -Td -Xw -JA -iw -Td -Td -iw -HP -Gr -rx -CU -Pi -Td -aG -Yh -iw -MX -iw -iw -uK -"} -(18,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -uK -vd -rm -ny -Xw -iw -iw -iw -Td -Td -gl -CU -Jv -Td -dD -SO -nh -Nt -Td -lh -dD -Td -gl -Yh -kD -Td -dD -Yg -Ux -iw -JA -iw -Ux -"} -(19,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -dD -dD -zG -zG -dD -iw -Td -wt -dD -Td -gl -xT -Jv -Td -iw -SO -iw -fV -iw -iw -uK -Td -gl -CU -Pi -Td -uK -ha -iw -Td -HL -ha -uK -"} -(20,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -Td -uK -Td -dD -uK -Td -dD -dD -uK -Td -gl -CU -Jv -Td -dD -uK -dD -uJ -iw -dD -uK -qw -gl -ee -Jv -uK -uK -iw -kV -iw -iw -Yh -uK -"} -(21,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -Td -Td -Td -Td -Td -Td -Td -nh -Td -Td -Td -Td -gl -CU -Jv -Td -Td -Td -Td -dD -Td -dD -Td -Td -gl -cR -UB -Xw -dv -iw -iw -qq -iw -iw -dD -"} -(22,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -CU -Fk -Fk -Fk -Fk -Fk -Fk -Fk -Fk -Lj -Fk -Fk -hd -CU -UB -Fk -Fk -Fk -Fk -Fk -Fk -KS -Fk -Vb -hd -CU -JR -Td -iw -Td -Ux -iw -ru -iw -dD -"} -(23,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -gl -CU -CU -CU -CU -CU -ox -CU -CU -CU -CU -CU -CU -vu -CU -CU -CU -CU -CU -cx -Yh -CU -ee -CU -yJ -vW -Jv -uK -dD -iw -zW -ha -Td -WJ -uK -"} -(24,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -gl -CU -Td -ek -ek -ek -ik -rD -Dk -ek -Eq -ek -ik -CU -Dk -ek -ek -ek -ik -CU -Dk -ek -ek -ek -ik -ee -Jv -Td -uK -iw -Sa -iw -iw -NA -dD -"} -(25,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -gl -CU -Jv -dD -dD -dD -ew -mg -nr -dD -dD -dD -gl -CU -Jv -eH -Jk -vN -eH -CU -qG -Jk -vN -eH -gl -CU -Pi -Td -uK -iw -Kd -wV -Td -YC -dD -"} -(26,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -rx -CU -Jv -dD -Fo -Fo -gl -CU -Jv -lc -Fo -dD -gl -CU -Jv -je -Ii -Ua -je -CU -je -Ii -Ua -je -YT -Yh -kD -Td -uK -dD -dD -dD -Ux -uK -dD -"} -(27,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -gl -CU -Jv -dD -Fo -CU -yp -CU -Jv -ss -Fo -dD -gl -CU -Jv -dg -rH -kZ -dg -CU -dg -rH -kZ -dg -gl -CU -Jv -Td -Td -Td -Td -Td -Td -Td -Td -"} -(28,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -gl -CU -vU -kT -xa -Fk -eZ -AI -ej -Fk -Fk -kT -hd -LL -UB -eH -Jk -gp -eH -CU -eH -fU -uc -eH -hd -CU -Jv -Td -Td -Td -Td -Td -Td -Td -Td -"} -(29,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -vU -gl -CU -CU -mg -CU -xZ -IO -jl -NE -CU -CU -mg -CU -vu -CU -CU -LL -CU -CU -JZ -CU -dM -dM -CU -CU -CU -Jv -Td -dD -dD -uK -dD -dD -Td -dD -"} -(30,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -gl -LL -Td -Uy -ek -ek -oY -ZL -GD -ek -ek -Uy -ik -CU -Dk -eH -Jk -vN -eH -CU -eH -fU -kz -eH -ik -CU -Jv -Td -uK -ln -fe -iw -iw -Td -uK -"} -(31,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -gl -CU -Jv -dD -Us -CU -gl -yD -Jv -CU -xt -dD -gl -CU -Jv -zY -Ii -Ua -je -CU -je -Ii -Ua -je -uH -CU -UB -Fk -dD -iw -Td -Td -iw -iw -uK -"} -(32,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -qw -gl -CU -Jv -dD -Us -Us -gl -CU -Jv -bm -Fo -dD -vH -CU -Jv -dg -rH -kZ -dg -CU -dg -rH -kZ -dg -gl -CU -CU -CU -Xw -Td -Td -Td -iw -iw -dD -"} -(33,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -gl -CU -Jv -dD -dD -dD -ew -mg -nr -dD -dD -dD -gl -CU -Jv -eH -Jk -gp -eH -CU -eH -Jk -gp -eH -gl -CU -Dk -ek -uK -iw -iw -iw -iw -Td -uK -"} -(34,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -gl -CU -Td -AY -Fk -Fk -hd -CU -UB -Fk -Fk -Fk -hd -CU -UB -Fk -Fk -Fk -hd -CU -UB -Fk -Fk -Fk -hd -CU -Jv -Td -dD -dD -iw -Td -dD -wt -dD -"} -(35,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -gl -CU -CU -CU -CU -CU -CU -LL -CU -LL -CU -CU -CU -CU -CU -CU -CU -CU -CU -CU -CU -CU -CU -CU -CU -CU -Jv -Td -uK -uK -dY -dD -dD -dD -uK -"} -(36,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -CU -ek -ek -ek -ek -sc -ek -ek -ek -ek -ek -CE -Dk -ek -ek -ek -ek -ek -CE -Dk -ek -ek -ek -ek -ik -CU -Jv -Td -im -Jd -CM -uK -iw -wO -dD -"} -(37,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -Td -Td -Td -Td -Td -Td -Td -Td -qw -Td -Td -cm -Jv -Td -Td -qw -dD -Td -cm -Jv -Td -Td -Td -Td -gl -CU -Jv -Td -im -CM -CM -dD -iw -CM -uK -"} -(38,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -Td -uK -dD -uK -cm -Jv -dD -uK -dD -uK -uK -ND -Jv -dD -dD -uK -Td -gl -CU -Jv -Td -oO -CM -CM -lt -iw -iw -uK -"} -(39,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -uK -uK -uK -Td -iw -Td -iw -iw -uK -KR -iw -Td -Ku -ZX -Ku -dD -Td -gl -CU -Jv -Td -im -LG -CM -uK -uK -rc -uK -"} -(40,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -uK -dD -Td -Td -Td -iw -iw -iw -uK -Td -Td -Td -Td -Td -iw -uK -Td -gl -CU -Jv -Td -im -CM -CM -CM -dD -uK -dD -"} -(41,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -Td -uK -Td -iw -Td -Td -Td -iw -dD -iw -Td -Td -Td -iw -iw -dD -Td -gl -CU -Jv -Td -im -CM -Jd -CM -CM -CM -im -"} -(42,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -uK -dD -wt -uJ -uJ -uJ -wt -uK -OB -Zj -Td -iw -QW -uK -dD -Td -gl -CU -Jv -Td -im -wi -CM -LG -CM -LG -im -"} -(43,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -Td -uK -uK -dD -dD -uK -uK -dD -uK -dD -uK -dD -uK -dD -Td -Td -gl -Yg -Jv -Td -QT -lx -lx -lx -lx -lx -pZ -"} -(44,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -Td -Td -dD -uK -Td -Td -uK -uK -Td -uK -uK -Td -uK -Td -Td -gl -fd -Jv -Td -Td -Td -Td -Td -Td -aA -aA -"} -(45,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -Td -Td -Td -Td -Td -Td -Td -Td -Td -Td -uK -Td -Td -Td -YT -Td -YT -Td -Td -Td -Td -aA -aA -aA -aA -"} -(46,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -vd -Td -Jv -Td -Td -aA -aA -aA -aA -aA -aA -"} -(47,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -vd -CU -rk -Td -aA -aA -aA -aA -aA -aA -aA -"} -(48,1,1) = {" -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -aA -Td -vd -CU -rk -Td -aA -aA -aA -aA -aA -aA -aA -"} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm new file mode 100644 index 000000000000..e5756e7dbdf5 --- /dev/null +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm @@ -0,0 +1,5795 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"at" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/center/cracked, +/obj/structure/stone_tile/surrounding_tile/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"aD" = ( +/obj/structure/flora/rock/hell, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"aP" = ( +/obj/structure/flora/ausbushes/sparsegrass/hell, +/turf/open/floor/plating/moss, +/area/overmap_encounter/planetoid/cave/explored) +"be" = ( +/obj/item/reagent_containers/food/snacks/grown/apple{ + pixel_x = 12 + }, +/turf/open/floor/plating/grass/lava, +/area/ruin/unpowered/buried_shrine) +"bp" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 10 + }, +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = 6 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"bW" = ( +/obj/structure/flora/ausbushes/sparsegrass/hell, +/turf/open/floor/plating/grass/lava/orange, +/area/overmap_encounter/planetoid/lava/explored) +"bY" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/center/burnt, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"ch" = ( +/obj/structure/destructible/tribal_torch{ + pixel_y = 13 + }, +/obj/structure/stone_tile/surrounding, +/obj/structure/stone_tile/center, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"cn" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 6 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/ruin/unpowered/buried_shrine) +"co" = ( +/obj/structure/stone_tile/surrounding/cracked, +/obj/item/stack/ore/gold, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"cv" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/glass/bottle/potion, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"cA" = ( +/obj/structure/stone_tile/surrounding, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"cD" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 6 + }, +/obj/structure/destructible/tribal_torch, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"cN" = ( +/obj/item/stack/sheet/bone, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"df" = ( +/obj/structure/stone_tile/block/cracked, +/obj/item/stack/sheet/mineral/wood, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"dg" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"di" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/center/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"dn" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"dA" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_x = 5 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"dB" = ( +/obj/structure/stone_tile/block/cracked, +/obj/structure/stone_tile/center{ + pixel_y = -6 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"dD" = ( +/turf/closed/indestructible/riveted/boss, +/area/overmap_encounter/planetoid/lava/explored) +"dF" = ( +/turf/open/floor/plating/moss, +/area/overmap_encounter/planetoid/cave/explored) +"dG" = ( +/obj/structure/table/wood, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/item/stack/ore/gold{ + amount = 10 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"dQ" = ( +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding/cracked{ + dir = 4 + }, +/obj/structure/destructible/tribal_torch{ + pixel_y = 13 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"dS" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = 10; + pixel_x = 6 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"dX" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = -8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"ee" = ( +/turf/open/lava/smooth/lava_land_surface, +/area/overmap_encounter/planetoid/lava/explored) +"ef" = ( +/obj/structure/stone_tile/surrounding/cracked, +/obj/structure/stone_tile/center/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"em" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = 7; + pixel_x = -2 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"eI" = ( +/turf/open/floor/plating/grass/lava, +/area/ruin/unpowered/buried_shrine) +"eJ" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"eZ" = ( +/obj/structure/table/wood, +/obj/item/clothing/head/hooded/cloakhood/bone, +/obj/structure/stone_tile/slab, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"ff" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/item/stack/ore/gold, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"fh" = ( +/obj/item/clothing/suit/armor/curator, +/obj/item/clothing/head/fedora/curator{ + pixel_y = 16 + }, +/obj/effect/decal/remains/human{ + pixel_y = 8 + }, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/ash/large{ + pixel_y = -8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"fq" = ( +/obj/structure/destructible/tribal_torch{ + pixel_y = 13 + }, +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"fx" = ( +/obj/structure/destructible/tribal_torch, +/obj/structure/stone_tile/slab/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"fB" = ( +/obj/structure/flora/rock/pile/lava, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"fL" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_x = 7; + pixel_y = -5 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"fY" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/effect/decal/cleanable/ash{ + pixel_x = 6; + pixel_y = 11 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"gt" = ( +/obj/structure/flora/ash/stem_shroom, +/turf/open/floor/plating/moss, +/area/overmap_encounter/planetoid/cave/explored) +"gz" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"gE" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"gH" = ( +/obj/structure/stone_tile/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"gW" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_x = 10 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"ha" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 6 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"hn" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"hp" = ( +/obj/structure/flora/ausbushes/ywflowers/hell, +/turf/open/floor/plating/grass/lava, +/area/ruin/unpowered/buried_shrine) +"hz" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"hW" = ( +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 8 + }, +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 5 + }, +/obj/structure/stone_tile/surrounding_tile/cracked, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"ic" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"ii" = ( +/obj/structure/chair/pew{ + dir = 1 + }, +/obj/structure/stone_tile/slab, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"iw" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"iB" = ( +/obj/structure/stone_tile/block/burnt{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 6 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"iK" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"iL" = ( +/obj/structure/stone_tile/surrounding_tile/cracked, +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = -8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"iX" = ( +/obj/structure/flora/rock/pile, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/cave/explored) +"jo" = ( +/obj/item/reagent_containers/food/snacks/grown/apple{ + pixel_y = 12; + pixel_x = 11 + }, +/turf/open/floor/plating/grass/lava, +/area/ruin/unpowered/buried_shrine) +"jt" = ( +/obj/structure/flora/rock/pile, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"jy" = ( +/obj/structure/stone_tile/block/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"jI" = ( +/obj/structure/flora/ash/tall_shroom, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"jJ" = ( +/obj/structure/flora/ash/tall_shroom, +/turf/open/floor/plating/moss, +/area/overmap_encounter/planetoid/cave/explored) +"jM" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"jY" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = -3 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"kp" = ( +/obj/structure/table_frame/wood, +/obj/structure/stone_tile/slab, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"kt" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"kC" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = -2; + pixel_x = 2 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"kJ" = ( +/obj/structure/stone_tile/surrounding/cracked, +/obj/structure/stone_tile/center/cracked, +/obj/structure/destructible/tribal_torch{ + pixel_y = 13 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"kW" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"kZ" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"ld" = ( +/obj/structure/table/wood, +/obj/item/stack/ore/diamond, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"lo" = ( +/obj/structure/flora/ausbushes/fullgrass/hell, +/turf/open/floor/plating/moss, +/area/overmap_encounter/planetoid/cave/explored) +"lJ" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"lO" = ( +/obj/structure/flora/ausbushes/sparsegrass/hell, +/turf/open/floor/plating/moss, +/area/overmap_encounter/planetoid/lava/explored) +"me" = ( +/obj/structure/stone_tile/surrounding_tile, +/obj/structure/stone_tile/surrounding_tile{ + pixel_x = 17; + pixel_y = -17 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 1; + pixel_x = 17; + pixel_y = -17 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 4; + pixel_x = 17; + pixel_y = -17 + }, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8; + pixel_x = 17; + pixel_y = -17 + }, +/obj/structure/stone_tile/center{ + pixel_x = 17; + pixel_y = -17 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"mn" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"mr" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"mv" = ( +/obj/structure/stone_tile/block/burnt{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile/burnt, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"mM" = ( +/obj/structure/stone_tile/surrounding, +/obj/structure/fluff/drake_statue, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"nh" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"nk" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"nq" = ( +/obj/structure/stone_tile/surrounding, +/mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"nz" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 5 + }, +/obj/item/stack/ore/gold, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"nP" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = 6 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"nX" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"oi" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"ol" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = 8; + pixel_x = -8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"om" = ( +/obj/structure/table_frame/wood, +/obj/item/reagent_containers/food/snacks/grown/ash_flora/fireblossom, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"on" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"oH" = ( +/obj/structure/stone_tile/surrounding, +/obj/structure/stone_tile/center/cracked, +/obj/structure/destructible/tribal_torch{ + pixel_y = 14 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"oL" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_x = 9; + pixel_y = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"pu" = ( +/mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient, +/turf/open/floor/plating/moss, +/area/ruin/unpowered/buried_shrine) +"pK" = ( +/obj/structure/stone_tile/slab, +/mob/living/simple_animal/hostile/asteroid/brimdemon, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"qh" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"qi" = ( +/obj/structure/stone_tile/surrounding, +/obj/structure/stone_tile/center/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"qp" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 9 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 6 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"qt" = ( +/obj/structure/stone_tile/center/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"qw" = ( +/obj/structure/stone_tile/block/burnt{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile/burnt, +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"qO" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 5 + }, +/obj/structure/chair/wood, +/mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"qT" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_x = -7; + pixel_y = 3 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"qV" = ( +/obj/structure/destructible/tribal_torch, +/obj/structure/stone_tile/slab, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"rh" = ( +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"rk" = ( +/obj/structure/stone_tile/slab/cracked, +/obj/item/pickaxe/rusted{ + pixel_x = 3 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"rp" = ( +/obj/structure/stone_tile/surrounding, +/obj/structure/stone_tile/center, +/obj/item/clothing/suit/hooded/cloak/bone{ + pixel_y = -4 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"rt" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/item/stack/sheet/bone, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/ruin/unpowered/buried_shrine) +"rA" = ( +/obj/structure/flora/ash/cacti, +/turf/open/floor/plating/moss, +/area/ruin/unpowered/buried_shrine) +"rD" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_x = 9 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"rH" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/cave/explored) +"rM" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = -6 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"rP" = ( +/obj/structure/flora/ash/leaf_shroom, +/turf/open/floor/plating/moss, +/area/overmap_encounter/planetoid/lava/explored) +"su" = ( +/obj/item/stack/ore/gold, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"sv" = ( +/obj/structure/flora/ash/tall_shroom, +/turf/open/floor/plating/moss, +/area/ruin/unpowered/buried_shrine) +"sy" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_x = 6; + pixel_y = -8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"sB" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"sD" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"sJ" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 6 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"sL" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = -1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"sS" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 4 + }, +/obj/item/stack/sheet/mineral/wood, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"ta" = ( +/obj/structure/stone_tile/block, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"td" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"tA" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"tE" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/glass/mortar/mushroom{ + pixel_x = -5 + }, +/obj/item/pestle{ + pixel_y = 5 + }, +/obj/item/reagent_containers/food/snacks/grown/ash_flora/mushroom_stem{ + pixel_x = -11; + pixel_y = 10 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"tL" = ( +/obj/structure/stone_tile/slab, +/obj/structure/destructible/tribal_torch, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"uf" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 10 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"uK" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"uN" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/item/stack/ore/gold, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"uP" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 8 + }, +/obj/structure/stone_tile/center, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"uS" = ( +/obj/structure/table_frame/wood, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"vg" = ( +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"vi" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/glass/bottle/potion, +/obj/item/reagent_containers/glass/bottle/potion{ + pixel_x = -10; + pixel_y = 9 + }, +/obj/item/reagent_containers/glass/bottle/potion{ + pixel_x = 10; + pixel_y = 9 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"vo" = ( +/obj/structure/table/wood, +/obj/item/gun/ballistic/bow/ashen, +/obj/structure/stone_tile/slab, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"vJ" = ( +/obj/structure/flora/ash/stem_shroom, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"vO" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/center/burnt, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"vR" = ( +/obj/item/stack/sheet/bone, +/obj/structure/stone_tile/slab/cracked{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"wj" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"wl" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"wt" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 4 + }, +/mob/living/simple_animal/hostile/asteroid/brimdemon, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"wy" = ( +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 6 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"wM" = ( +/obj/structure/stone_tile/slab, +/mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"wS" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 4 + }, +/turf/closed/mineral/random/volcanic, +/area/ruin/unpowered/buried_shrine) +"xe" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"xs" = ( +/obj/structure/stone_tile/block/burnt{ + dir = 4 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"xJ" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 10 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"xT" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/obj/structure/chair/wood, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"yb" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = 6; + pixel_x = -4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"yt" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 5 + }, +/obj/structure/stone_tile/center, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"yv" = ( +/obj/structure/stone_tile/surrounding, +/obj/item/stack/ore/gold, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"yy" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"yz" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"yF" = ( +/obj/structure/flora/ausbushes/fullgrass/hell, +/turf/open/floor/plating/grass/lava, +/area/ruin/unpowered/buried_shrine) +"yJ" = ( +/turf/open/floor/plating/grass/lava/orange, +/area/overmap_encounter/planetoid/lava/explored) +"yM" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"zg" = ( +/obj/structure/stone_tile, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"zB" = ( +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 6 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"zL" = ( +/obj/structure/flora/rock/lava, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"zM" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/item/stack/ore/gold, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"zN" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile/block{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"zQ" = ( +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile/burnt, +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 4 + }, +/obj/structure/stone_tile/center/burnt, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Ab" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Ad" = ( +/obj/structure/stone_tile/slab, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Aw" = ( +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Ay" = ( +/obj/structure/flora/ausbushes/fernybush/hell, +/turf/open/floor/plating/grass/lava/orange, +/area/overmap_encounter/planetoid/lava/explored) +"AY" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/item/stack/ore/gold, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Ba" = ( +/obj/structure/stone_tile/block/burnt{ + dir = 4 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 5 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Bc" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 10 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Bm" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Bz" = ( +/obj/structure/table_frame/wood, +/obj/item/stack/sheet/bone, +/obj/structure/stone_tile/slab, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"BA" = ( +/obj/structure/destructible/tribal_torch{ + pixel_y = 13 + }, +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding/cracked{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"BF" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 6 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"BZ" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Cm" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 5 + }, +/obj/structure/stone_tile/center/burnt, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Cv" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 4 + }, +/obj/item/chair/wood/wings{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"CD" = ( +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"CE" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"CF" = ( +/obj/structure/chair/pew/left{ + dir = 1 + }, +/obj/structure/stone_tile/slab, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"CM" = ( +/obj/structure/stone_tile/center, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"CT" = ( +/obj/structure/table/wood, +/obj/item/candle, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"CU" = ( +/mob/living/simple_animal/hostile/asteroid/goliath/pup{ + pixel_x = 0 + }, +/turf/open/floor/plating/moss, +/area/ruin/unpowered/buried_shrine) +"Do" = ( +/obj/structure/flora/ausbushes/hell, +/turf/open/floor/plating/grass/lava/orange, +/area/overmap_encounter/planetoid/lava/explored) +"Dp" = ( +/obj/structure/flora/ash/fireblossom, +/turf/open/floor/plating/grass/lava/orange, +/area/overmap_encounter/planetoid/lava/explored) +"DB" = ( +/obj/structure/flora/ausbushes/fullgrass/hell, +/turf/open/floor/plating/grass/lava/orange, +/area/overmap_encounter/planetoid/lava/explored) +"Ee" = ( +/obj/structure/chair/pew/left, +/obj/structure/stone_tile/slab, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Ef" = ( +/obj/structure/flora/ash/fern, +/turf/open/floor/plating/moss, +/area/overmap_encounter/planetoid/cave/explored) +"Eh" = ( +/turf/closed/mineral/random/volcanic, +/area/overmap_encounter/planetoid/lava/explored) +"Eu" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 5 + }, +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 6 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Ez" = ( +/obj/structure/stone_tile/block{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"EE" = ( +/obj/structure/stone_tile/center/burnt, +/obj/structure/stone_tile/surrounding/burnt, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Fo" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Fq" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Fw" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 1 + }, +/obj/structure/chair/wood/wings, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"FC" = ( +/obj/item/reagent_containers/food/snacks/grown/apple{ + pixel_y = 16 + }, +/turf/open/floor/plating/grass/lava, +/area/ruin/unpowered/buried_shrine) +"FD" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_x = 1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Gm" = ( +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 9 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Go" = ( +/obj/structure/stone_tile/surrounding_tile/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"GB" = ( +/obj/structure/stone_tile/block{ + dir = 8 + }, +/obj/effect/decal/cleanable/ash{ + pixel_x = -8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"GL" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/stone_tile/block/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"GT" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Hg" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 4 + }, +/obj/item/stack/ore/gold, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Hh" = ( +/obj/structure/stone_tile/surrounding_tile, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Ht" = ( +/obj/structure/stone_tile/surrounding/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Hv" = ( +/obj/structure/flora/tree/dead/hell, +/turf/open/floor/plating/grass/lava, +/area/ruin/unpowered/buried_shrine) +"Hw" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = 6 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"HN" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_x = -3 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Ii" = ( +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/ruin/unpowered/buried_shrine) +"Iz" = ( +/obj/structure/destructible/tribal_torch{ + pixel_y = 14 + }, +/obj/structure/stone_tile/surrounding/cracked, +/obj/structure/stone_tile/center, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"IL" = ( +/obj/structure/stone_tile/slab/cracked, +/obj/item/stack/sheet/mineral/wood, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Ja" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = 2; + pixel_x = 7 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Jc" = ( +/obj/structure/stone_tile/block/burnt{ + dir = 8 + }, +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Jh" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 9 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Jk" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"Jr" = ( +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"Jv" = ( +/mob/living/simple_animal/hostile/asteroid/goliath/pup{ + pixel_x = 0 + }, +/obj/structure/flora/ausbushes/sparsegrass/hell, +/turf/open/floor/plating/moss, +/area/ruin/unpowered/buried_shrine) +"Jw" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile/block{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"JE" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 1 + }, +/obj/item/stack/ore/gold, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"JJ" = ( +/obj/structure/stone_tile{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"JL" = ( +/obj/structure/flora/ausbushes/ywflowers/hell, +/turf/open/floor/plating/grass/lava/orange, +/area/overmap_encounter/planetoid/lava/explored) +"Ka" = ( +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 8 + }, +/obj/structure/stone_tile/surrounding_tile/burnt, +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding_tile/burnt{ + dir = 4 + }, +/obj/structure/stone_tile/center/burnt, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Kt" = ( +/obj/structure/stone_tile/surrounding_tile/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Kz" = ( +/obj/structure/flora/ash/cap_shroom, +/turf/open/floor/plating/moss, +/area/overmap_encounter/planetoid/cave/explored) +"KD" = ( +/obj/structure/stone_tile/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"Lu" = ( +/obj/structure/flora/ash/leaf_shroom, +/turf/open/floor/plating/moss, +/area/overmap_encounter/planetoid/cave/explored) +"Lx" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = 1; + pixel_x = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"LC" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"LJ" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/grown/ambrosia/gaia{ + pixel_y = 6 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"LK" = ( +/turf/open/floor/plating/moss, +/area/overmap_encounter/planetoid/lava/explored) +"LL" = ( +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"LP" = ( +/obj/structure/table/wood, +/obj/item/ammo_casing/caseless/arrow/bone, +/obj/item/ammo_casing/caseless/arrow/bone{ + pixel_y = -4 + }, +/obj/item/ammo_casing/caseless/arrow/bone{ + pixel_y = 4 + }, +/obj/item/ammo_casing/caseless/arrow/bone{ + pixel_y = 8 + }, +/obj/item/ammo_casing/caseless/arrow/bone{ + pixel_y = 12 + }, +/obj/structure/stone_tile/slab, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"LW" = ( +/obj/structure/destructible/tribal_torch{ + pixel_y = 13 + }, +/obj/structure/stone_tile/surrounding, +/obj/structure/stone_tile/center/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"LZ" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = 5; + pixel_x = 6 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Mc" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile/slab, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Md" = ( +/obj/structure/stone_tile/surrounding_tile/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"Mt" = ( +/obj/structure/flora/ausbushes/genericbush/hell, +/turf/open/floor/plating/grass/lava, +/area/ruin/unpowered/buried_shrine) +"Mw" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_x = -7; + pixel_y = -8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Mx" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"MJ" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 8 + }, +/obj/item/stack/ore/gold, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"MQ" = ( +/turf/template_noop, +/area/template_noop) +"Ni" = ( +/obj/structure/table/wood, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Nk" = ( +/obj/structure/table_frame/wood, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"NK" = ( +/obj/structure/flora/ash/cacti, +/turf/open/floor/plating/grass/lava, +/area/ruin/unpowered/buried_shrine) +"NN" = ( +/obj/structure/stone_tile/center, +/obj/structure/stone_tile/surrounding/cracked{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"NY" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 9 + }, +/obj/structure/stone_tile/block/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Ok" = ( +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/item/stack/ore/gold, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Ot" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = 8; + pixel_x = -1 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"OO" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/surrounding/cracked{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"OT" = ( +/obj/structure/flora/ausbushes/fullgrass/hell, +/turf/open/floor/plating/moss, +/area/overmap_encounter/planetoid/lava/explored) +"Ps" = ( +/obj/structure/flora/rock/hell, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/cave/explored) +"Qb" = ( +/obj/structure/flora/ausbushes/sparsegrass/hell, +/turf/open/floor/plating/grass/lava, +/area/ruin/unpowered/buried_shrine) +"Qf" = ( +/obj/structure/stone_tile/cracked{ + dir = 1 + }, +/mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"QR" = ( +/obj/structure/flora/tree/dead/tall/grey, +/turf/open/floor/plating/grass/lava/orange, +/area/overmap_encounter/planetoid/lava/explored) +"Rd" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/ruin/unpowered/buried_shrine) +"Rl" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"RK" = ( +/obj/structure/stone_tile/center/cracked, +/mob/living/simple_animal/hostile/asteroid/brimdemon, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"RN" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Sa" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"Sj" = ( +/obj/structure/flora/ausbushes/sparsegrass/hell, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"Sn" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/grown/ash_flora/fireblossom, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"So" = ( +/obj/structure/stone_tile/block/cracked, +/obj/structure/stone_tile/block/cracked{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Sw" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_x = -9 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"SA" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/glass/bowl/mushroom_bowl, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"SJ" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = 2; + pixel_x = 4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"SV" = ( +/obj/structure/chair/pew/right{ + dir = 1 + }, +/obj/structure/stone_tile/slab, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Td" = ( +/obj/structure/stone_tile/slab/cracked, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Tp" = ( +/obj/structure/stone_tile/cracked{ + dir = 8 + }, +/obj/structure/stone_tile, +/obj/structure/stone_tile{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/ruin/unpowered/buried_shrine) +"Tu" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/item/chair/wood{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Ty" = ( +/obj/item/stack/sheet/bluespace_crystal/five{ + pixel_x = -7 + }, +/obj/item/stack/sheet/mineral/gold/five{ + pixel_y = 3 + }, +/obj/item/stack/sheet/mineral/diamond/five{ + pixel_x = 8 + }, +/obj/structure/closet/crate/necropolis, +/obj/structure/stone_tile/slab/cracked{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"TO" = ( +/turf/closed/mineral/random/volcanic, +/area/ruin/unpowered/buried_shrine) +"Ua" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/effect/decal/cleanable/ash{ + pixel_x = 6; + pixel_y = 11 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Uf" = ( +/obj/structure/chair/pew, +/obj/structure/stone_tile/slab, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Uw" = ( +/obj/structure/flora/ausbushes/sparsegrass/hell, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/cave/explored) +"UB" = ( +/obj/structure/flora/ausbushes/genericbush/hell, +/obj/item/reagent_containers/food/snacks/grown/apple{ + pixel_x = -10; + pixel_y = -6 + }, +/turf/open/floor/plating/grass/lava, +/area/ruin/unpowered/buried_shrine) +"UF" = ( +/obj/structure/stone_tile/block, +/obj/item/claymore/bone{ + pixel_x = 8; + pixel_y = 21 + }, +/obj/item/shield/riot/goliath{ + pixel_x = -12; + pixel_y = 16 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Vt" = ( +/obj/structure/flora/ash/leaf_shroom, +/turf/open/floor/plating/moss, +/area/ruin/unpowered/buried_shrine) +"VG" = ( +/obj/structure/table/wood, +/obj/item/kitchen/knife/combat/bone, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Wd" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Ws" = ( +/turf/open/floor/plating/moss, +/area/ruin/unpowered/buried_shrine) +"WD" = ( +/obj/structure/flora/tree/dead/barren, +/turf/open/floor/plating/grass/lava/orange, +/area/overmap_encounter/planetoid/lava/explored) +"WG" = ( +/obj/structure/stone_tile/slab/burnt, +/obj/item/gem/amber, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"WP" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/overmap_encounter/planetoid/lava/explored) +"WZ" = ( +/turf/closed/indestructible/riveted/boss, +/area/ruin/unpowered/buried_shrine) +"Xh" = ( +/obj/structure/flora/ash/cap_shroom, +/turf/open/floor/plating/moss, +/area/ruin/unpowered/buried_shrine) +"Xn" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/ruin/unpowered/buried_shrine) +"Xr" = ( +/obj/structure/stone_tile/cracked, +/obj/structure/stone_tile/cracked{ + dir = 4 + }, +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/ruin/unpowered/buried_shrine) +"Xv" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 4 + }, +/obj/structure/stone_tile/center, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"XA" = ( +/turf/closed/indestructible/riveted/boss, +/area/overmap_encounter/planetoid/cave/explored) +"Ye" = ( +/obj/structure/chair/pew/right, +/obj/structure/stone_tile/slab, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Yf" = ( +/obj/structure/stone_tile/block/cracked{ + dir = 9 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Yh" = ( +/obj/structure/stone_tile/block, +/obj/structure/stone_tile{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Yp" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = -7; + pixel_x = -4 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"YK" = ( +/obj/structure/flora/ausbushes/sparsegrass/hell, +/turf/open/floor/plating/moss, +/area/ruin/unpowered/buried_shrine) +"Zk" = ( +/obj/structure/stone_tile{ + dir = 8 + }, +/obj/structure/stone_tile{ + dir = 1 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Zl" = ( +/obj/structure/stone_tile/surrounding_tile{ + dir = 8 + }, +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = -8 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"Zo" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 10 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"ZE" = ( +/obj/structure/stone_tile/surrounding/cracked{ + dir = 1 + }, +/obj/structure/stone_tile/center/burnt, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"ZK" = ( +/obj/structure/stone_tile/block{ + dir = 1 + }, +/obj/structure/stone_tile, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/ruin/unpowered/buried_shrine) +"ZV" = ( +/obj/structure/stone_tile/slab/cracked{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, +/area/ruin/unpowered/buried_shrine) +"ZX" = ( +/obj/structure/stone_tile/center/burnt{ + fall_on_cross = 1; + pixel_y = 7; + pixel_x = 9 + }, +/turf/open/lava/smooth/lava_land_surface, +/area/ruin/unpowered/buried_shrine) + +(1,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +nh +nh +nh +nh +nh +nh +nh +nh +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(2,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +nh +nh +MQ +MQ +MQ +nh +jt +Eh +Eh +lO +LK +aD +nh +LK +Sj +nh +nh +jt +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(3,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +jt +nh +nh +nh +nh +nh +nh +nh +Eh +Eh +gt +dF +jJ +nh +nh +nh +nh +LK +nh +nh +nh +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(4,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +nh +nh +aD +nh +nh +nh +nh +aD +nh +nh +Eh +dF +lo +dF +dF +aP +dF +LK +nh +aD +nh +Sj +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(5,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +nh +lO +nh +nh +lO +Eh +Eh +nh +nh +Eh +Eh +Eh +Eh +dF +aP +dF +dF +jJ +dF +lO +LK +lO +nh +nh +MQ +MQ +nh +nh +nh +nh +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(6,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +nh +nh +aD +nh +nh +LK +nh +nh +Eh +nh +Sj +nh +Eh +Eh +Eh +Eh +Eh +Eh +Kz +dF +dF +Eh +Eh +Eh +Eh +nh +nh +nh +nh +nh +nh +aD +nh +nh +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(7,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +Eh +Eh +nh +Sj +nh +nh +LK +rP +LK +Eh +Eh +nh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +lo +dF +jJ +Eh +Eh +Eh +Eh +aD +nh +Sj +nh +Eh +nh +Sj +nh +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(8,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +jt +nh +Eh +nh +nh +nh +nh +Eh +dF +aP +aP +dF +Eh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +dF +dF +dF +Eh +Eh +Eh +Eh +Eh +nh +Eh +Eh +Eh +nh +nh +jt +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(9,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +nh +Eh +Eh +jt +nh +Eh +Eh +lo +dF +Kz +dF +Eh +Eh +Eh +WZ +WZ +WZ +WZ +WZ +Eh +Eh +gt +aP +dF +Ef +Eh +Eh +Eh +Eh +nh +Eh +Eh +nh +nh +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(10,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +Sj +nh +Eh +Eh +Eh +Eh +dF +dF +dF +aP +Eh +Eh +WZ +WZ +WZ +vg +vg +vg +WZ +WZ +WZ +Eh +Eh +lo +aP +Kz +Eh +Eh +Eh +Eh +Eh +nh +aD +nh +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(11,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +nh +nh +Eh +Eh +Eh +jJ +aP +aP +dF +Eh +Eh +WZ +WZ +vg +vg +vg +yF +hp +Qb +TO +WZ +WZ +Eh +jJ +dF +lo +Eh +Eh +Eh +Eh +Eh +nh +nh +nh +nh +nh +nh +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(12,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +aD +Eh +Eh +XA +Ef +dF +lo +dF +Eh +Eh +WZ +WZ +TO +hp +eI +be +jo +Mt +TO +TO +TO +WZ +WZ +Eh +dF +dF +dF +Eh +Eh +Eh +Eh +Eh +Eh +Eh +jt +nh +nh +nh +MQ +MQ +MQ +MQ +MQ +MQ +"} +(13,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +nh +nh +Eh +XA +XA +dF +dF +aP +gt +Eh +Eh +WZ +TO +Qb +Mt +eI +Hv +FC +Qb +hp +NK +TO +vg +WZ +Eh +Eh +aP +lo +Eh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +Sj +nh +nh +MQ +MQ +MQ +MQ +MQ +MQ +"} +(14,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +Sj +nh +nh +Eh +XA +lo +aP +dF +dF +Eh +Eh +Eh +WZ +TO +NK +WZ +WZ +UB +Qb +yF +WZ +WZ +Td +vg +WZ +Eh +Eh +dF +gt +dF +Eh +Eh +Eh +Eh +Eh +Eh +Eh +nh +aD +nh +MQ +MQ +MQ +MQ +MQ +MQ +"} +(15,1,1) = {" +MQ +MQ +MQ +MQ +MQ +nh +nh +nh +nh +nh +nh +nh +Sj +dF +dF +dF +Kz +dF +Eh +Eh +WZ +WZ +TO +TO +WZ +WZ +TO +TO +hp +WZ +WZ +cN +vg +WZ +WZ +Eh +Eh +dF +aP +Eh +Eh +Eh +Eh +XA +XA +Eh +Eh +nh +nh +MQ +MQ +MQ +MQ +MQ +MQ +"} +(16,1,1) = {" +MQ +MQ +MQ +MQ +nh +nh +Eh +Eh +jt +nh +Eh +Eh +Eh +jJ +lo +dF +XA +XA +Eh +Eh +WZ +vg +TO +TO +TO +TO +TO +TO +Qb +TO +TO +hn +vg +vg +WZ +Eh +Eh +XA +XA +Eh +Eh +Eh +Eh +Eh +XA +XA +Eh +nh +nh +MQ +MQ +MQ +MQ +MQ +MQ +"} +(17,1,1) = {" +MQ +MQ +MQ +MQ +MQ +nh +nh +Eh +Eh +Eh +Eh +Eh +XA +dF +dF +aP +XA +XA +Eh +Eh +WZ +vg +on +Fq +Ht +TO +TO +TO +TO +TO +Wd +Fq +cN +vg +WZ +Eh +Eh +XA +XA +Eh +Eh +Eh +Eh +Eh +gt +XA +nh +nh +nh +jt +MQ +MQ +MQ +MQ +MQ +"} +(18,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +nh +nh +Eh +Eh +XA +XA +XA +dF +Lu +dF +Eh +Eh +Eh +Eh +WZ +vg +hn +cN +Fq +yz +TO +TO +TO +TO +TO +TO +TO +vg +WZ +Eh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +aP +XA +XA +nh +Sj +nh +MQ +MQ +MQ +MQ +MQ +"} +(19,1,1) = {" +MQ +MQ +MQ +nh +nh +nh +nh +jt +Eh +XA +XA +aP +dF +dF +dF +Eh +Eh +Eh +Eh +Eh +WZ +WZ +WZ +WZ +Td +TO +TO +TO +TO +TO +TO +WZ +WZ +WZ +WZ +Eh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +lo +jJ +XA +aD +nh +nh +MQ +MQ +MQ +MQ +MQ +"} +(20,1,1) = {" +MQ +MQ +MQ +aD +nh +Eh +nh +Eh +Eh +XA +lo +dF +aP +dF +Eh +Eh +Eh +Eh +WZ +WZ +WZ +me +Ab +WZ +WZ +WZ +TO +TO +TO +WZ +WZ +WZ +me +Ab +WZ +WZ +WZ +Eh +Eh +Eh +Eh +Eh +Eh +Eh +dF +aP +XA +XA +nh +nh +nh +MQ +MQ +MQ +MQ +"} +(21,1,1) = {" +MQ +MQ +MQ +nh +Sj +Eh +Eh +Eh +XA +XA +Kz +dF +dF +Eh +Eh +Eh +Eh +Eh +TO +on +lJ +RN +wj +WZ +TO +TO +TO +Fq +Tp +Mx +CF +WZ +RN +wj +ta +oi +WZ +WZ +Eh +Eh +Eh +Eh +Eh +Eh +lo +dF +aP +XA +nh +nh +nh +MQ +MQ +MQ +MQ +"} +(22,1,1) = {" +MQ +MQ +jt +nh +nh +nh +Eh +Eh +XA +dF +dF +aP +jJ +Eh +Eh +Eh +Eh +TO +TO +BF +oi +wl +wl +WZ +IL +ta +Wd +Xr +Tp +lJ +ii +WZ +wl +wl +yz +Ad +OO +WZ +WZ +Eh +Eh +Eh +Eh +Eh +Eh +Ef +aP +XA +nh +nh +nh +MQ +MQ +MQ +MQ +"} +(23,1,1) = {" +MQ +MQ +nh +nh +nh +Eh +Eh +Eh +XA +dF +dF +dF +Eh +Eh +Eh +Eh +Eh +TO +qh +JJ +Rl +yz +WZ +WZ +sS +df +Ii +sB +Td +lJ +SV +WZ +WZ +lJ +Ad +nq +Ad +TO +WZ +WZ +Eh +Eh +Eh +Eh +Eh +gt +lo +XA +Sj +nh +jt +nh +MQ +MQ +MQ +"} +(24,1,1) = {" +MQ +MQ +nh +nh +Eh +Eh +Eh +jJ +lo +aP +dF +Eh +Eh +Eh +Eh +Eh +Eh +TO +Qf +Ad +JJ +TO +WZ +BA +Wd +Tp +yz +Ad +JE +Ii +on +kJ +WZ +oi +on +Ad +yz +TO +TO +WZ +Eh +Eh +Eh +Eh +Eh +Eh +dF +lo +nh +lO +nh +Sj +MQ +MQ +MQ +"} +(25,1,1) = {" +MQ +MQ +nh +LK +Eh +Eh +aP +dF +dF +gt +Eh +Eh +Eh +Eh +WZ +WZ +WZ +TO +Ht +Aw +Ad +TO +WZ +TO +BF +vJ +Ad +cA +Ad +yz +Fq +Fq +WZ +Aw +Fq +ff +Fo +WZ +WZ +WZ +WZ +Eh +Eh +Eh +Eh +Eh +dF +dF +nh +nh +nh +nh +MQ +MQ +MQ +"} +(26,1,1) = {" +MQ +nh +nh +lO +Lu +dF +dF +aP +Eh +Eh +Eh +Eh +Eh +Eh +WZ +ld +WZ +WZ +WZ +yz +Fq +TO +TO +TO +Xr +Ht +Td +pK +on +Ii +Tp +Xr +Fq +kW +BZ +kW +CE +WZ +uS +Sn +WZ +Eh +Eh +Eh +Eh +Eh +aP +dF +LK +nh +aD +nh +MQ +MQ +MQ +"} +(27,1,1) = {" +MQ +aD +nh +nh +dF +lo +dF +Eh +Eh +dD +dD +Eh +Eh +Eh +WZ +Fq +ta +kW +td +kZ +Td +TO +TO +TO +TO +Tp +hn +Ii +Ht +Tp +Hg +BF +Ii +Ad +Ad +Ad +TO +WZ +zg +CE +WZ +Eh +Eh +Eh +XA +XA +Kz +aP +nh +lO +nh +nh +MQ +MQ +MQ +"} +(28,1,1) = {" +MQ +nh +nh +nh +aP +Kz +Eh +Eh +Eh +dD +dD +Eh +Eh +WZ +WZ +Td +lJ +nz +jy +hn +CE +WZ +WZ +TO +TO +TO +Wd +GL +Ad +Fq +Xr +Ii +WZ +WZ +TO +TO +TO +TO +Aw +nk +WZ +WZ +Eh +Eh +XA +XA +lo +Eh +Eh +aD +nh +nh +nh +MQ +MQ +"} +(29,1,1) = {" +MQ +nh +Sj +nh +aP +Eh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +WZ +CT +Fq +jy +wl +lJ +fq +WZ +WZ +WZ +WZ +WZ +TO +BF +qi +TO +wS +WZ +WZ +WZ +WZ +WZ +TO +TO +Ad +ta +zg +Fo +WZ +Eh +Eh +Eh +Eh +Eh +Eh +nh +nh +nh +jI +jt +MQ +MQ +"} +(30,1,1) = {" +MQ +nh +nh +LK +dF +Eh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +WZ +Nk +Fq +TO +TO +TO +WZ +WZ +tE +vi +qp +WZ +WZ +Ad +Fq +TO +WZ +WZ +iK +GB +nX +WZ +WZ +Fq +Wd +ta +oi +Fq +WZ +Eh +Eh +Eh +Eh +nh +aD +nh +nh +nh +nh +nh +nh +MQ +"} +(31,1,1) = {" +nh +nh +LK +OT +Eh +Eh +Eh +Eh +Eh +WZ +WZ +WZ +WZ +WZ +WZ +WZ +TO +TO +WZ +WZ +WZ +Td +ic +xJ +TO +WZ +Ad +Bc +yz +WZ +TO +Ua +rp +UF +WZ +WZ +WZ +Ad +BF +WZ +WZ +WZ +WZ +WZ +WZ +WZ +Sj +nh +jI +Sj +nh +nh +Sj +nh +MQ +"} +(32,1,1) = {" +nh +nh +lO +Eh +Eh +Eh +Eh +Eh +WZ +WZ +Ad +Ad +cD +WZ +yy +TO +TO +Fq +wl +CD +WZ +So +ZE +vg +TO +WZ +Ba +vO +Jc +WZ +TO +zQ +fY +Hh +WZ +Go +ch +Mc +sD +Fq +TO +WZ +TO +TO +zB +WZ +WZ +jt +nh +Jk +nh +aD +nh +nh +MQ +"} +(33,1,1) = {" +jt +Sj +Sj +Eh +Eh +Eh +Eh +WZ +WZ +yy +Cv +Ni +lJ +WZ +ta +su +Mx +uP +ta +AY +WZ +WZ +Mw +FD +oL +WZ +vg +jY +vg +WZ +vg +Hw +TO +WZ +WZ +Ht +kW +nP +iL +Fq +TO +WZ +TO +yz +Yf +fx +WZ +WZ +rh +xe +dD +nh +nh +nh +Sj +"} +(34,1,1) = {" +nh +nh +aD +nh +Eh +Eh +Eh +WZ +Ad +xT +SA +Nk +sJ +Ad +wy +kW +yz +Ad +hn +kW +ZK +WZ +TO +vg +dA +vg +vg +dX +gW +Ja +SJ +HN +ZX +WZ +qw +wl +qt +mn +lJ +Fq +rk +fh +Ad +GT +Ad +on +Rd +ta +tA +WP +Sa +Jr +nh +nh +nh +"} +(35,1,1) = {" +nh +nh +nh +Eh +Eh +ee +Eh +WZ +dQ +qO +cv +LJ +ta +NN +ta +Xv +Ad +mM +Ad +yt +lJ +WZ +TO +vg +dX +Sw +rD +EE +vg +vg +vg +vg +LZ +WZ +Ka +dB +RK +uP +di +zN +Ad +Td +Ad +BF +yz +td +Ht +ZV +kt +ha +ha +Sj +nh +nh +nh +"} +(36,1,1) = {" +Sj +nh +Eh +Eh +ee +ee +ee +WZ +Wd +Tu +Nk +VG +uf +Td +Zk +wl +Td +Ad +yz +wl +gE +WZ +vg +vg +qT +TO +vg +Bm +vg +vg +sy +kC +em +WZ +mv +kW +CM +jy +lJ +TO +Ad +TO +Wd +wl +Ad +uK +wl +cn +Md +dn +dg +KD +nh +nh +nh +"} +(37,1,1) = {" +nh +nh +Eh +ee +ee +ee +ee +WZ +WZ +Yh +Fw +SA +lJ +WZ +ta +Fq +lJ +Xv +jy +lJ +WZ +WZ +TO +fL +ol +WZ +vg +rM +vg +WZ +sL +vg +vg +WZ +WZ +on +wl +bp +Zl +TO +TO +WZ +td +Td +td +qV +WZ +WZ +eJ +LL +dD +nh +Sj +nh +nh +"} +(38,1,1) = {" +nh +nh +Eh +Eh +nh +ee +ee +ee +WZ +WZ +yz +wM +tL +WZ +Yh +kW +Fq +vJ +kW +Gm +WZ +CE +Cm +yb +vg +WZ +xs +bY +iB +WZ +Yp +Lx +Ot +dS +WZ +Kt +Iz +ta +lJ +Fq +TO +WZ +hz +Fq +at +WZ +WZ +Eh +Eh +Eh +Eh +nh +nh +nh +MQ +"} +(39,1,1) = {" +MQ +nh +nh +nh +nh +zL +ee +ee +ee +WZ +WZ +WZ +WZ +WZ +WZ +WZ +MJ +Ht +WZ +WZ +WZ +on +JJ +vg +vg +WZ +Ad +NY +yz +WZ +vg +vg +vg +Hw +WZ +WZ +WZ +hn +Ad +WZ +WZ +WZ +WZ +WZ +WZ +WZ +Eh +Eh +Eh +Eh +jt +nh +nh +nh +MQ +"} +(40,1,1) = {" +MQ +nh +jt +nh +nh +nh +ee +ee +ee +Eh +Eh +Eh +Eh +WZ +Nk +wy +wl +wl +mr +WZ +WZ +Ty +yM +uf +WZ +WZ +hn +td +Ad +WZ +WZ +Eu +WG +hW +WZ +WZ +vJ +Ad +ta +Ok +JJ +WZ +Eh +Eh +Eh +Eh +Eh +Eh +nh +nh +nh +nh +nh +MQ +MQ +"} +(41,1,1) = {" +MQ +nh +nh +nh +Sj +nh +ee +ee +Eh +Eh +Eh +Eh +Eh +WZ +CT +Fq +uf +kW +Mx +BA +WZ +WZ +WZ +WZ +WZ +TO +Wd +ef +BF +TO +WZ +WZ +WZ +WZ +WZ +oH +uN +Wd +Yh +oi +nk +WZ +Eh +Eh +Eh +Eh +Eh +nh +nh +nh +aD +nh +nh +MQ +MQ +"} +(42,1,1) = {" +MQ +MQ +nh +nh +nh +nh +ee +ee +Eh +dD +dD +Eh +Eh +WZ +WZ +Td +lJ +wt +ta +TO +TO +WZ +WZ +TO +TO +TO +Ad +Jw +Ad +TO +TO +TO +WZ +WZ +Fq +nk +Td +yy +nk +oi +WZ +WZ +ee +Eh +dD +dD +jt +nh +Sj +nh +nh +nh +MQ +MQ +MQ +"} +(43,1,1) = {" +MQ +MQ +MQ +nh +nh +nh +ee +ee +ee +dD +dD +Eh +Eh +Eh +WZ +Yf +jy +LC +TO +TO +TO +TO +TO +TO +gH +Xr +zg +Tp +on +zM +Tp +TO +TO +Ad +Ad +Ad +Ez +WZ +JJ +mr +WZ +ee +ee +Eh +dD +dD +nh +nh +nh +jI +nh +nh +MQ +MQ +MQ +"} +(44,1,1) = {" +MQ +MQ +MQ +nh +jt +nh +zL +ee +ee +ee +Eh +Eh +Eh +Eh +WZ +om +WZ +WZ +WZ +TO +TO +BF +TO +Xr +uK +Fo +Ht +Ad +Td +Tp +Wd +TO +TO +TO +iw +wl +CE +WZ +dG +CT +WZ +ee +ee +ee +ee +fB +nh +nh +nh +nh +nh +MQ +MQ +MQ +MQ +"} +(45,1,1) = {" +MQ +MQ +MQ +Sj +nh +nh +nh +Eh +ee +ee +ee +Eh +Eh +Eh +WZ +WZ +WZ +TO +TO +TO +Wd +gH +WZ +su +Tp +yz +Ad +yv +Ad +Fo +Xr +TO +WZ +TO +CE +kW +Aw +WZ +WZ +WZ +WZ +ee +ee +ee +Sj +nh +jI +nh +nh +nh +nh +MQ +MQ +MQ +MQ +"} +(46,1,1) = {" +MQ +MQ +MQ +MQ +nh +nh +nh +Eh +Eh +ee +Eh +Eh +Eh +Eh +Eh +WZ +TO +TO +Zo +Ad +zg +on +WZ +fq +uK +JJ +yz +Ad +hn +Tp +Fq +LW +WZ +Aw +Ht +Ad +hn +TO +TO +WZ +ee +ee +ee +ee +zL +nh +nh +nh +nh +Sj +nh +MQ +MQ +MQ +MQ +"} +(47,1,1) = {" +MQ +MQ +MQ +MQ +MQ +nh +nh +nh +Eh +Eh +Eh +nh +Eh +Eh +Eh +WZ +WZ +Td +yz +hn +co +Wd +WZ +WZ +Ee +ta +yM +Fq +yz +lJ +CF +WZ +WZ +lJ +Ad +nq +TO +TO +WZ +WZ +ee +Eh +Eh +Eh +Eh +nh +nh +jt +nh +nh +nh +MQ +MQ +MQ +MQ +"} +(48,1,1) = {" +MQ +MQ +MQ +MQ +MQ +nh +nh +Sj +nh +nh +nh +nh +nh +Eh +Eh +Eh +WZ +WZ +Ad +Jh +nk +kW +kW +WZ +Uf +ta +BF +Tp +jM +lJ +ii +WZ +kW +gz +Td +Ad +TO +TO +Eh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +nh +nh +nh +MQ +MQ +MQ +MQ +"} +(49,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +aD +nh +nh +MQ +MQ +MQ +nh +nh +Eh +Eh +Eh +WZ +WZ +Td +lJ +me +Ab +WZ +Ye +ta +hn +Xn +Ht +lJ +SV +WZ +me +Ab +ta +TO +TO +Eh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +nh +Eh +nh +nh +MQ +MQ +MQ +MQ +MQ +"} +(50,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +MQ +MQ +MQ +nh +nh +jt +Eh +Eh +Eh +Eh +WZ +WZ +WZ +RN +wj +WZ +WZ +WZ +vJ +Fq +Tp +WZ +WZ +WZ +RN +wj +WZ +WZ +WZ +Eh +Eh +Eh +Eh +Eh +Eh +nh +nh +nh +nh +nh +nh +MQ +MQ +MQ +MQ +MQ +MQ +"} +(51,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +Sj +Eh +Eh +Eh +Eh +Eh +Eh +Eh +WZ +WZ +WZ +WZ +TO +Wd +Fq +BF +gH +hn +TO +WZ +WZ +WZ +WZ +Eh +Eh +Eh +Eh +Eh +Eh +Eh +nh +Sj +nh +aD +nh +nh +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(52,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +nh +Eh +Eh +nh +Eh +Eh +Eh +Eh +Eh +WZ +Bz +TO +TO +TO +TO +Xr +hn +Xr +TO +TO +TO +Wd +kp +WZ +Eh +Eh +Eh +Eh +DB +yJ +Eh +Eh +nh +nh +nh +nh +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(53,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +nh +nh +nh +nh +nh +Eh +XA +XA +Eh +Eh +WZ +eZ +vR +TO +TO +TO +TO +TO +TO +TO +TO +TO +TO +LP +WZ +Eh +Eh +dD +dD +bW +bW +Eh +Eh +aD +nh +nh +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(54,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +aD +MQ +MQ +MQ +nh +Eh +XA +XA +Eh +Eh +WZ +Bz +Xr +TO +TO +TO +TO +TO +TO +TO +TO +TO +TO +vo +WZ +Eh +Eh +dD +dD +yJ +JL +Do +Eh +Eh +Eh +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(55,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +Eh +Eh +rH +rH +Eh +WZ +WZ +BF +TO +WZ +WZ +TO +TO +TO +WZ +WZ +TO +TO +WZ +WZ +Eh +yJ +yJ +yJ +DB +Dp +yJ +yJ +Eh +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(56,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +Eh +Eh +Ps +rH +Eh +Eh +WZ +rt +TO +WZ +WZ +Xh +YK +YK +WZ +WZ +TO +Fq +WZ +DB +yJ +bW +yJ +bW +bW +yJ +yJ +bW +yJ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(57,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +Sj +nh +nh +Eh +Eh +rH +rH +Eh +WZ +WZ +TO +TO +TO +Ws +YK +Jv +Ws +Xh +TO +TO +WZ +yJ +yJ +yJ +yJ +WD +yJ +bW +yJ +bW +DB +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(58,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +nh +nh +Eh +Eh +rH +iX +Eh +Eh +WZ +TO +CU +sv +Ws +pu +sv +YK +YK +Vt +WZ +WZ +Dp +Do +bW +bW +yJ +Ay +JL +yJ +yJ +JL +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(59,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +nh +nh +nh +Eh +rH +Uw +Eh +Eh +Eh +WZ +WZ +rA +Ws +Jv +YK +Ws +YK +CU +WZ +WZ +yJ +yJ +JL +yJ +DB +yJ +yJ +yJ +yJ +QR +yJ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(60,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +jt +Sj +nh +nh +rH +rH +Eh +Eh +Eh +Eh +WZ +WZ +WZ +Vt +YK +rA +WZ +WZ +WZ +yJ +bW +yJ +yJ +yJ +yJ +yJ +yJ +yJ +DB +bW +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(61,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +nh +nh +nh +nh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +WZ +WZ +WZ +WZ +WZ +yJ +yJ +bW +bW +Ay +yJ +bW +bW +yJ +Do +bW +bW +yJ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(62,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +nh +nh +nh +nh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +Eh +DB +yJ +yJ +Do +yJ +DB +yJ +yJ +yJ +bW +yJ +yJ +Dp +yJ +yJ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(63,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +nh +nh +nh +nh +Eh +Eh +Eh +Eh +Eh +Eh +yJ +Ay +bW +yJ +yJ +yJ +Dp +bW +bW +yJ +JL +yJ +bW +yJ +yJ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(64,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +Sj +nh +Eh +Eh +bW +Eh +Eh +Eh +Eh +yJ +bW +yJ +yJ +yJ +WD +yJ +yJ +yJ +yJ +yJ +QR +bW +bW +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(65,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +aD +nh +nh +Eh +bW +bW +yJ +Dp +DB +Do +bW +bW +Ay +bW +JL +yJ +Do +yJ +yJ +DB +yJ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(66,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +nh +nh +Eh +Eh +JL +Ay +yJ +WD +JL +yJ +yJ +DB +bW +bW +bW +yJ +yJ +yJ +bW +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} +(67,1,1) = {" +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +nh +nh +MQ +MQ +MQ +MQ +bW +bW +bW +yJ +QR +yJ +bW +DB +yJ +bW +DB +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +MQ +"} diff --git a/_maps/map_catalogue.txt b/_maps/map_catalogue.txt index ca3748b4c94c..e7b6ca5db5d3 100644 --- a/_maps/map_catalogue.txt +++ b/_maps/map_catalogue.txt @@ -126,9 +126,9 @@ Find the key for using this catalogue in "map_catalogue_key.txt" Size = (x = 11)(y = 16)(z = 1) Tags = "Minor Combat Challenge", "Medium Loot", "Inhospitable" - File Name = "_maps\RandomRuins\LavaRuins\lavaland_surface_ashwalker_shrine.dmm" - Size = (x = 48)(y = 50)(z = 1) - Tags = "No Combat", "Minor Loot", "Inhospitable" + File Name = "_maps\RandomRuins\LavaRuins\lavaland_surface_buried_shrine.dmm" + Size = (x = 67)(y = 55)(z = 1) + Tags = "Medium Combat", "Medium Loot", "Hazardous", "Lava", "Inhospitable" File Name = "_maps\RandomRuins\LavaRuins\lavaland_surface_biodome_winter.dmm" Size = (x = 46)(y = 42)(z = 1) diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 7df3a453acfb..e5683140933f 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -140,13 +140,14 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(/obj/item/gun))) #define WEAPON_MEDIUM 2 /// You must wield the gun to fire this gun #define WEAPON_HEAVY 3 +/// You must FULLY wield (wait the full wield delay) the gun to fire this gun +#define WEAPON_VERY_HEAVY 4 //Gun trigger guards #define TRIGGER_GUARD_ALLOW_ALL -1 #define TRIGGER_GUARD_NONE 0 #define TRIGGER_GUARD_NORMAL 1 //Gun bolt types -///Gun has a bolt, it stays closed while not cycling. The gun must be racked to have a bullet chambered when a mag is inserted. -/// Example: c20, shotguns, m90 +///The gun has a closed bolt, when resting it's closed, and must be racked to get a bullet from a magazine. see: Every Fucking Videogame Gun Ever #define BOLT_TYPE_STANDARD 1 ///Gun has a bolt, it is open when ready to fire. The gun can never have a chambered bullet with no magazine, but the bolt stays ready when a mag is removed. /// Example: Some SMGs, the L6 diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 42f21252213c..f7267a7af8d3 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -774,6 +774,10 @@ /// send when enabling/diabling an autofire component #define COMSIG_GUN_DISABLE_AUTOFIRE "disable_autofire" #define COMSIG_GUN_ENABLE_AUTOFIRE "enable_autofire" +#define COMSIG_GUN_SET_AUTOFIRE_SPEED "set_autofire_speed" + +///sent when guns need to notify the gun hud to update. mostly for revolvers. +#define COMSIG_UPDATE_AMMO_HUD "update_ammo_hud" ///called in /obj/item/gun/process_chamber (src) #define COMSIG_GUN_CHAMBER_PROCESSED "gun_chamber_processed" diff --git a/code/__DEFINES/guns.dm b/code/__DEFINES/guns.dm index 0256ed11bedd..556a9ff0e35c 100644 --- a/code/__DEFINES/guns.dm +++ b/code/__DEFINES/guns.dm @@ -14,3 +14,9 @@ #define MANUFACTURER_DONKCO "the Donk! Co. logo" #define MANUFACTURER_PGF "the Etherbor Industries emblem" #define MANUFACTURER_IMPORT "Lanchester Import Co." + +#define FIREMODE_SEMIAUTO "single" +#define FIREMODE_BURST "burst" +#define FIREMODE_FULLAUTO "auto" +#define FIREMODE_OTHER "other" +#define FIREMODE_OTHER_TWO "other2" diff --git a/code/datums/action.dm b/code/datums/action.dm index ff03b689085d..de13fc002dde 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -207,6 +207,7 @@ /datum/action/item_action/toggle_firemode name = "Toggle Firemode" + icon_icon = 'icons/mob/actions/actions_items.dmi' /datum/action/item_action/rcl_col name = "Change Cable Color" diff --git a/code/datums/components/fullauto.dm b/code/datums/components/fullauto.dm index 177093a49fef..f3050c7ab76c 100644 --- a/code/datums/components/fullauto.dm +++ b/code/datums/components/fullauto.dm @@ -8,7 +8,7 @@ var/turf/target_loc //For dealing with locking on targets due to BYOND engine limitations (the mouse input only happening when mouse moves). var/autofire_stat = AUTOFIRE_STAT_IDLE var/mouse_parameters - var/autofire_shot_delay = 0.3 SECONDS //Time between individual shots. + var/autofire_shot_delay = 0.1 SECONDS //Time between individual shots. var/mouse_status = AUTOFIRE_MOUSEUP //This seems hacky but there can be two MouseDown() without a MouseUp() in between if the user holds click and uses alt+tab, printscreen or similar. var/enabled = TRUE @@ -22,6 +22,7 @@ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(wake_up)) RegisterSignal(parent, COMSIG_GUN_DISABLE_AUTOFIRE, PROC_REF(disable_autofire)) RegisterSignal(parent, COMSIG_GUN_ENABLE_AUTOFIRE, PROC_REF(enable_autofire)) + RegisterSignal(parent, COMSIG_GUN_SET_AUTOFIRE_SPEED, PROC_REF(set_autofire_speed)) if(_autofire_shot_delay) autofire_shot_delay = _autofire_shot_delay if(autofire_stat == AUTOFIRE_STAT_IDLE && ismob(gun.loc)) @@ -161,7 +162,7 @@ if(isgun(parent)) var/obj/item/gun/shoota = parent - if(!shoota.on_autofire_start(shooter)) //This is needed because the minigun has a do_after before firing and signals are async. + if(!shoota.on_autofire_start(shooter=shooter)) //This is needed because the minigun has a do_after before firing and signals are async. stop_autofiring() return if(autofire_stat != AUTOFIRE_STAT_FIRING) @@ -242,12 +243,12 @@ // Gun procs. -/obj/item/gun/proc/on_autofire_start(mob/living/shooter) - if(semicd || shooter.stat || !can_trigger_gun(shooter)) - return FALSE - if(!can_shoot()) - shoot_with_empty_chamber(shooter) +/obj/item/gun/proc/on_autofire_start(datum/source, atom/target, mob/living/shooter, params) + if(current_cooldown || shooter.stat) return FALSE + if(!can_shoot()) //we call pre_fire so bolts/slides work correctly + INVOKE_ASYNC(src, PROC_REF(do_autofire_shot), source, target, shooter, params) + return NONE if(weapon_weight == WEAPON_HEAVY && (!wielded)) to_chat(shooter, "You need a more secure grip to fire [src]!") return FALSE @@ -262,32 +263,29 @@ /obj/item/gun/proc/do_autofire(datum/source, atom/target, mob/living/shooter, params) SIGNAL_HANDLER - if(semicd || shooter.incapacitated()) + if(current_cooldown || shooter.incapacitated()) return NONE if(weapon_weight == WEAPON_HEAVY && (!wielded)) to_chat(shooter, "You need a more secure grip to fire [src]!") return NONE - if(!can_shoot()) - shoot_with_empty_chamber(shooter) + if(!can_shoot()) //we stop if we cant shoot but also calling pre_fire so the bolt works correctly if it's a weird open bolt weapon. + INVOKE_ASYNC(src, PROC_REF(do_autofire_shot), source, target, shooter, params) return NONE INVOKE_ASYNC(src, PROC_REF(do_autofire_shot), source, target, shooter, params) return COMPONENT_AUTOFIRE_SHOT_SUCCESS //All is well, we can continue shooting. /obj/item/gun/proc/do_autofire_shot(datum/source, atom/target, mob/living/shooter, params) - var/obj/item/gun/akimbo_gun = shooter.get_inactive_held_item() - var/bonus_spread = 0 - if(istype(akimbo_gun) && weapon_weight < WEAPON_MEDIUM) - if(akimbo_gun.weapon_weight < WEAPON_MEDIUM && akimbo_gun.can_trigger_gun(shooter)) - bonus_spread = dual_wield_spread - addtimer(CALLBACK(akimbo_gun, TYPE_PROC_REF(/obj/item/gun, process_fire), target, shooter, TRUE, params, null, bonus_spread), 1) - process_fire(target, shooter, TRUE, params, null, bonus_spread) - -/datum/component/automatic_fire/proc/disable_autofire() + pre_fire(target, shooter, TRUE, params, null) //dual wielding is handled here + +/datum/component/automatic_fire/proc/disable_autofire(datum/source) enabled = FALSE -/datum/component/automatic_fire/proc/enable_autofire() +/datum/component/automatic_fire/proc/enable_autofire(datum/source) enabled = TRUE +/datum/component/automatic_fire/proc/set_autofire_speed(datum/source, newspeed) + autofire_shot_delay = newspeed + #undef AUTOFIRE_MOUSEUP #undef AUTOFIRE_MOUSEDOWN diff --git a/code/datums/components/gunpoint.dm b/code/datums/components/gunpoint.dm index 0aa1a5a1e8cc..85701e9c7626 100644 --- a/code/datums/components/gunpoint.dm +++ b/code/datums/components/gunpoint.dm @@ -126,7 +126,7 @@ if(weapon.chambered && weapon.chambered.BB) weapon.chambered.BB.damage *= damage_mult - weapon.process_fire(target, shooter) + weapon.pre_fire(target, shooter) qdel(src) /datum/component/gunpoint/proc/cancel() diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm index 9944cb00fe55..bb4bcf74b31c 100644 --- a/code/datums/ruins/lavaland.dm +++ b/code/datums/ruins/lavaland.dm @@ -92,11 +92,11 @@ suffix = "lavaland_surface_dwarffortress.dmm" allow_duplicates = FALSE -/datum/map_template/ruin/lavaland/ashwalker_shrine - name = "Ashwalker shrine" - id = "ashwalker_shrine" - description = "A destroyed ashwalker village. What even happened here?" - suffix = "lavaland_surface_ashwalker_shrine.dmm" +/datum/map_template/ruin/lavaland/buried_shrine + name = "Buried Shrine" + id = "buried_shrine" + description = "An ancient temple belonging to some long-gone inhabitants, wrecked and buried by the volcanic activity of it's home planet." + suffix = "lavaland_surface_buried_shrine.dmm" /datum/map_template/ruin/lavaland/spookycrash name = "Spooky Crash" diff --git a/code/game/area/areas/ruins/lavaland.dm b/code/game/area/areas/ruins/lavaland.dm index 5e8e706a319d..c4d3f75f8fb7 100644 --- a/code/game/area/areas/ruins/lavaland.dm +++ b/code/game/area/areas/ruins/lavaland.dm @@ -112,3 +112,8 @@ /area/ruin/unpowered/scorched_hut name = "Scorched Hut" icon_state = "red" + +/area/ruin/unpowered/buried_shrine + name = "Buried Shrine" + icon_state = "red" + diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 2720443d2424..b0e030206a0f 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -21,6 +21,7 @@ /obj/item/ammo_box/magazine/recharge, /obj/item/modular_computer, /obj/item/gun/ballistic/automatic/powered, + /obj/item/gun/ballistic/automatic/assault/e40, )) /obj/machinery/recharger/RefreshParts() diff --git a/code/game/objects/items/chrono_eraser.dm b/code/game/objects/items/chrono_eraser.dm index f63a5e9dd45a..baa541662e20 100644 --- a/code/game/objects/items/chrono_eraser.dm +++ b/code/game/objects/items/chrono_eraser.dm @@ -51,7 +51,7 @@ item_flags = DROPDEL ammo_type = list(/obj/item/ammo_casing/energy/chrono_beam) can_charge = FALSE - fire_delay = 50 + fire_delay = 5 SECONDS var/obj/item/chrono_eraser/TED = null var/obj/structure/chrono_field/field = null var/turf/startpos = null diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index bf08b704beb0..61486cf07bf2 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -85,7 +85,7 @@ pai.master_dna = M.dna.unique_enzymes to_chat(pai, "You have been bound to a new master.") pai.laws.set_zeroth_law("Serve your master.") - pai.emittersemicd = FALSE + pai.emittercurrent_cooldown = FALSE if(href_list["wipe"]) var/confirm = input("Are you CERTAIN you wish to delete the current personality? This action cannot be undone.", "Personality Wipe") in list("Yes", "No") if(confirm == "Yes") diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index c8c9a0f96b96..e386420462d6 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -191,7 +191,7 @@ /obj/item/kitchen/knife/combat/Initialize() . = ..() - AddElement(/datum/element/world_icon, null, icon, 'icons/obj/kitchen.dmi') + AddElement(/datum/element/world_icon, null, icon, 'icons/obj/item/knife.dmi') /obj/item/kitchen/knife/combat/survival name = "survival knife" diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm index bb5d6f7311c0..4866dbfb3f60 100644 --- a/code/game/turfs/closed/_closed.dm +++ b/code/game/turfs/closed/_closed.dm @@ -239,7 +239,7 @@ return TRUE /turf/closed/indestructible/riveted/boss - name = "necropolis wall" + name = "thick stone wall" desc = "A thick, seemingly indestructible stone wall." icon = 'icons/turf/walls/boss_wall.dmi' icon_state = "boss_wall-0" diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index 1245e2585462..5bce8014babe 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -384,7 +384,7 @@ ammo_type = list(/obj/item/ammo_casing/energy/shrink) item_state = "shrink_ray" icon_state = "shrink_ray" - fire_delay = 30 + fire_delay = 3 SECONDS selfcharge = 1//shot costs 200 energy, has a max capacity of 1000 for 5 shots. self charge returns 25 energy every couple ticks, so about 1 shot charged every 12~ seconds trigger_guard = TRIGGER_GUARD_ALLOW_ALL// variable-size trigger, get it? (abductors need this to be set so the gun is usable for them) diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index f32c0dcc215b..68e0d514ad3a 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -245,7 +245,7 @@ fire_sound = 'sound/effects/splat.ogg' force = 0 max_charges = 1 - fire_delay = 1 + fire_delay = 0.1 SECONDS throwforce = 0 //Just to be on the safe side throw_range = 0 throw_speed = 0 diff --git a/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm b/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm index 8832729e58af..83740509f2d7 100644 --- a/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm +++ b/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm @@ -122,8 +122,8 @@ pair_item = /datum/blackmarket_item/weapon/e40_mag price_min = 7000 - price_max = 13000 - stock = 1 + price_max = 15000 + stock_max = 2 availability_prob = 20 /datum/blackmarket_item/weapon/e40_mag @@ -134,7 +134,7 @@ price_min = 750 price_max = 1250 stock_min = 2 - stock_max = 4 + stock_max = 6 availability_prob = 0 /datum/blackmarket_item/weapon/e50 diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 36d556bc5f42..88e1d066024f 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -957,6 +957,7 @@ return COMPONENT_NO_ATTACK_OBJ //A version of the Cave Story refrence that a deranged scientist got their hands on. Better? Not really. Different? Definitely. +//TODO: replace with a proper polar star and spur, not to mention a proper sprite /obj/item/gun/energy/spur name = "Slowpoke" desc = "The work of a truly genius gunsmith, altered and \"improved\" by a truly deranged Nanotrasen scientist, using components from a kinetic accelerator and beam rifle. Draw, partner!" @@ -965,11 +966,10 @@ righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' icon_state = "spur" item_state = "spur" - fire_delay = 0.5 //BRATATAT! This is a cowboy's six-shooter after all. selfcharge = 1 charge_delay = 1 slot_flags = ITEM_SLOT_BELT - fire_delay = 1 + fire_delay = 0.1 SECONDS recoil = 1 cell_type = /obj/item/stock_parts/cell/gun ammo_type = list(/obj/item/ammo_casing/energy/spur) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 1f574f08a450..9f3b85fd4a92 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -74,7 +74,7 @@ var/emitterregen = 0.25 var/emittercd = 50 var/emitteroverloadcd = 100 - var/emittersemicd = FALSE + var/emittercurrent_cooldown = FALSE var/overload_ventcrawl = 0 var/overload_bulletblock = 0 //Why is this a good idea? @@ -125,7 +125,7 @@ . = ..() - emittersemicd = TRUE + emittercurrent_cooldown = TRUE addtimer(CALLBACK(src, PROC_REF(emittercool)), 600) if(!holoform) diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm index 31a807b319b2..8d50f4a389f4 100644 --- a/code/modules/mob/living/silicon/pai/pai_shell.dm +++ b/code/modules/mob/living/silicon/pai/pai_shell.dm @@ -12,11 +12,11 @@ . = fold_in(force) return - if(emittersemicd) + if(emittercurrent_cooldown) to_chat(src, "Error: Holochassis emitters recycling. Please try again later.") return FALSE - emittersemicd = TRUE + emittercurrent_cooldown = TRUE addtimer(CALLBACK(src, PROC_REF(emittercool)), emittercd) REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, PAI_FOLDED) REMOVE_TRAIT(src, TRAIT_HANDS_BLOCKED, PAI_FOLDED) @@ -42,10 +42,10 @@ holoform = TRUE /mob/living/silicon/pai/proc/emittercool() - emittersemicd = FALSE + emittercurrent_cooldown = FALSE /mob/living/silicon/pai/proc/fold_in(force = FALSE) - emittersemicd = TRUE + emittercurrent_cooldown = TRUE if(!force) addtimer(CALLBACK(src, PROC_REF(emittercool)), emittercd) else diff --git a/code/modules/mob/living/simple_animal/hostile/human/survivors.dm b/code/modules/mob/living/simple_animal/hostile/human/survivors.dm index 3c4ba08ed16d..f7abea96b222 100644 --- a/code/modules/mob/living/simple_animal/hostile/human/survivors.dm +++ b/code/modules/mob/living/simple_animal/hostile/human/survivors.dm @@ -12,11 +12,11 @@ move_force = MOVE_FORCE_DEFAULT move_resist = MOVE_RESIST_DEFAULT pull_force = PULL_FORCE_DEFAULT + ..() /* if(prob(15)) new /obj/item/mob_trophy/shiny(loc) visible_message("You notice a glimmering nugget of shiny metal.") - ..() */ /mob/living/simple_animal/hostile/human/hermit/survivor diff --git a/code/modules/projectiles/ammunition/_firing.dm b/code/modules/projectiles/ammunition/_firing.dm index f96cea991f27..3f46281dbd50 100644 --- a/code/modules/projectiles/ammunition/_firing.dm +++ b/code/modules/projectiles/ammunition/_firing.dm @@ -16,12 +16,8 @@ AddComponent(/datum/component/pellet_cloud, projectile_type, pellets) SEND_SIGNAL(src, COMSIG_PELLET_CLOUD_INIT, target, user, fired_from, randomspread, spread, zone_override, params, distro) - if(user) - if(click_cooldown_override) - user.changeNext_move(click_cooldown_override) - else - user.changeNext_move(CLICK_CD_RANGE) - user.newtonian_move(get_dir(target, user)) + if(click_cooldown_override && user) + user.changeNext_move(click_cooldown_override) update_appearance() return TRUE diff --git a/code/modules/projectiles/ammunition/ballistic/rifle.dm b/code/modules/projectiles/ammunition/ballistic/rifle.dm index 57592185aff6..b3875292fba2 100644 --- a/code/modules/projectiles/ammunition/ballistic/rifle.dm +++ b/code/modules/projectiles/ammunition/ballistic/rifle.dm @@ -106,4 +106,4 @@ icon_state = "caseless" caliber = ".299 caseless" projectile_type = /obj/projectile/bullet/c299 - bullet_per_box = 80 + bullet_per_box = 100 diff --git a/code/modules/projectiles/ammunition/caseless/_caseless.dm b/code/modules/projectiles/ammunition/caseless/_caseless.dm index 0d364cc93f5a..9e9dafb8d806 100644 --- a/code/modules/projectiles/ammunition/caseless/_caseless.dm +++ b/code/modules/projectiles/ammunition/caseless/_caseless.dm @@ -3,8 +3,10 @@ firing_effect_type = null heavy_metal = FALSE -/obj/item/ammo_casing/caseless/on_eject(atom/shooter) - qdel(src) +/obj/item/ammo_casing/caseless/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread, atom/fired_from) + . = ..() + if(.) + qdel(src) // Overridden; caseless ammo does not distinguish between "live" and "empty"/"spent" icon states (because it has no casing). /obj/item/ammo_casing/caseless/update_icon_state() diff --git a/code/modules/projectiles/ammunition/energy/laser.dm b/code/modules/projectiles/ammunition/energy/laser.dm index 6320cb24b0c6..d0334e8d8acc 100644 --- a/code/modules/projectiles/ammunition/energy/laser.dm +++ b/code/modules/projectiles/ammunition/energy/laser.dm @@ -31,7 +31,7 @@ projectile_type = /obj/projectile/beam/laser/weak/negative_ap e_cost = 799 //12 shots with a normal power cell, 25 with an upgraded select_name = "kill" - delay = 0.1 SECONDS + delay = 0.13 SECONDS /obj/item/ammo_casing/energy/lasergun/old projectile_type = /obj/projectile/beam/laser diff --git a/code/modules/projectiles/ammunition/energy/stun.dm b/code/modules/projectiles/ammunition/energy/stun.dm index 917e1c8c8189..1f74196eb83b 100644 --- a/code/modules/projectiles/ammunition/energy/stun.dm +++ b/code/modules/projectiles/ammunition/energy/stun.dm @@ -46,4 +46,4 @@ /obj/item/ammo_casing/energy/disabler/smg projectile_type = /obj/projectile/beam/disabler/weak/negative_ap e_cost = 330 - delay = 0.1 SECONDS + delay = 0.13 SECONDS diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 892a914b88c5..9948e8dbf329 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -1,4 +1,3 @@ - #define DUALWIELD_PENALTY_EXTRA_MULTIPLIER 1.6 /obj/item/gun @@ -27,25 +26,55 @@ var/vary_fire_sound = TRUE var/fire_sound_volume = 50 var/dry_fire_sound = 'sound/weapons/gun/general/dry_fire.ogg' - var/dry_fire_text = "click" //change this on non-gun things - var/suppressed = null //whether or not a message is displayed when fired + ///Text showed when attempting to fire with no round or empty round. + var/dry_fire_text = "click" + ///whether or not a message is displayed when fired + var/suppressed = null var/can_suppress = FALSE var/suppressed_sound = 'sound/weapons/gun/general/heavy_shot_suppressed.ogg' var/suppressed_volume = 60 var/can_unsuppress = TRUE var/obj/item/ammo_casing/chambered = null - trigger_guard = TRIGGER_GUARD_NORMAL //trigger guard on the weapon, hulks can't fire them with their big meaty fingers - var/sawn_desc = null //description change if weapon is sawn-off + ///trigger guard on the weapon. Used for hulk mutations and ashies. I honestly dont know how usefult his is, id avoid touching it + trigger_guard = TRIGGER_GUARD_NORMAL + ///Set the description of the gun to this when sawed off + var/sawn_desc = null + ///This triggers some sprite behavior in shotguns and prevents further sawoff, note that can_be_sawn_off is on gun/ballistic and not here, wtf. var/sawn_off = FALSE - var/burst_size = 1 //how large a burst is - var/fire_delay = 0 //rate of fire for burst firing and semi auto - var/firing_burst = 0 //Prevent the weapon from firing again while already firing - var/semicd = 0 //cooldown handler + + /// how many shots per burst, Ex: most machine pistols, M90, some ARs are 3rnd burst, while others like the GAR and laser minigun are 2 round burst. + var/burst_size = 3 + ///The rate of fire when firing in a burst. Not the delay between bursts + var/burst_delay = 0.15 SECONDS + ///The rate of fire when firing full auto and semi auto, and between bursts; for bursts its fire delay + burst_delay after every burst + var/fire_delay = 0.2 SECONDS + + /// after initializing, we set the firemode to this + var/default_firemode = FIREMODE_SEMIAUTO + ///Firemode index, due to code shit this is the currently selected firemode + var/firemode_index + /// Our firemodes, subtract and add to this list as needed. NOTE that the autofire component is given on init when FIREMODE_FULLAUTO is here. + var/list/gun_firemodes = list(FIREMODE_SEMIAUTO, FIREMODE_BURST, FIREMODE_FULLAUTO, FIREMODE_OTHER, FIREMODE_OTHER_TWO) + /// A acoc list that determines the names of firemodes. Use if you wanna be weird and set the name of say, FIREMODE_OTHER to "Underbarrel grenade launcher" for example. + var/list/gun_firenames = list(FIREMODE_SEMIAUTO = "single", FIREMODE_BURST = "burst fire", FIREMODE_FULLAUTO = "full auto", FIREMODE_OTHER = "misc. fire", FIREMODE_OTHER_TWO = "very misc. fire") + ///BASICALLY: the little button you select firing modes from? this is jsut the prefix of the icon state of that. For example, if we set it as "laser", the fire select will use "laser_single" and so on. + var/fire_select_icon_state_prefix = "" + ///If true, we put "safety_" before fire_select_icon_state_prefix's prefix. ex. "safety_laser_single" + var/adjust_fire_select_icon_state_on_safety = FALSE + + ///Are we firing a burst? If so, dont fire again until burst is done + var/currently_firing_burst = FALSE + ///This prevents gun from firing until the coodown is done, affected by lag + var/current_cooldown = 0 + ///affects if you can fire it unwielded or even dual wield it. LIGHT means dual wield allowed, HEAVY and higher means you have to wield to fire var/weapon_weight = WEAPON_LIGHT - var/dual_wield_spread = 24 //additional spread when dual wielding - var/randomspread = 1 //Set to 0 for shotguns. This is used for weapons that don't fire all their bullets at once. + ///If dual wielding, add this to the spread + var/dual_wield_spread = 24 + /// ???, no clue what this is. Original desc: //Set to 0 for shotguns. This is used for weapons that don't fire all their bullets at once. + var/randomspread = 1 - var/projectile_damage_multiplier = 1 //Alters projectile damage multiplicatively based on this value. Use it for "better" or "worse" weapons that use the same ammo. + ///Alters projectile damage multiplicatively based on this value. Use it for "better" or "worse" weapons that use the same ammo. + var/projectile_damage_multiplier = 1 lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi' @@ -127,6 +156,7 @@ alight = new(src) muzzle_flash = new(src, muzzleflash_iconstate) build_zooming() + build_firemodes() /obj/item/gun/ComponentInitialize() . = ..() @@ -152,8 +182,10 @@ ) ) wielded_fully = TRUE + return TRUE else wielded_fully = TRUE + return TRUE /obj/item/gun/proc/is_wielded() return wielded @@ -217,6 +249,51 @@ if(zoomed && user.get_active_held_item() != src) zoom(user, user.dir, FALSE) //we can only stay zoomed in if it's in our hands //yeah and we only unzoom if we're actually zoomed using the gun!! +/obj/item/gun/attack(mob/M as mob, mob/user) + if(user.a_intent == INTENT_HARM) //Flogging + if(bayonet) + M.attackby(bayonet, user) + return + else + return ..() + return + +/obj/item/gun/attack_obj(obj/O, mob/user) + if(user.a_intent == INTENT_HARM) + if(bayonet) + O.attackby(bayonet, user) + return + return ..() + +/obj/item/gun/attackby(obj/item/I, mob/user, params) + if(user.a_intent == INTENT_HARM) + return ..() + else if(istype(I, /obj/item/flashlight/seclite)) + if(!can_flashlight) + return ..() + var/obj/item/flashlight/seclite/S = I + if(!gun_light) + if(!user.transferItemToLoc(I, src)) + return + to_chat(user, "You click [S] into place on [src].") + set_gun_light(S) + update_gunlight() + alight = new(src) + if(loc == user) + alight.Grant(user) + else if(istype(I, /obj/item/kitchen/knife)) + var/obj/item/kitchen/knife/K = I + if(!can_bayonet || !K.bayonet || bayonet) //ensure the gun has an attachment point available, and that the knife is compatible with it. + return ..() + if(!user.transferItemToLoc(I, src)) + return + to_chat(user, "You attach [K] to [src]'s bayonet lug.") + bayonet = K + update_appearance() + + else + return ..() + //called after the gun has successfully fired its chambered ammo. /obj/item/gun/proc/process_chamber(atom/shooter) SEND_SIGNAL(src, COMSIG_GUN_CHAMBER_PROCESSED) @@ -229,252 +306,277 @@ return FALSE return TRUE -/obj/item/gun/proc/shoot_with_empty_chamber(mob/living/user as mob|obj) - if(!safety) - to_chat(user, "*[dry_fire_text]*") - playsound(src, dry_fire_sound, 30, TRUE) - return - to_chat(user, "Safeties are active on the [src]! Turn them off to fire!") - - -/obj/item/gun/proc/shoot_live_shot(mob/living/user, pointblank = 0, atom/pbtarget = null, message = 1) - var/actual_angle = get_angle_with_scatter((user || get_turf(src)), pbtarget, rand(-recoil_deviation, recoil_deviation) + 180) - var/muzzle_angle = Get_Angle(get_turf(src), pbtarget) - if(muzzle_flash && !muzzle_flash.applied) - handle_muzzle_flash(user, muzzle_angle) - - if(wielded_fully) - simulate_recoil(user, recoil, actual_angle) - else if(!wielded_fully) - simulate_recoil(user, recoil_unwielded, actual_angle) - - if(suppressed) - playsound(user, suppressed_sound, suppressed_volume, vary_fire_sound, ignore_walls = FALSE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0) - else - playsound(user, fire_sound, fire_sound_volume, vary_fire_sound) - if(message) - if(pointblank) - user.visible_message( - span_danger("[user] fires [src] point blank at [pbtarget]!"), - span_danger("You fire [src] point blank at [pbtarget]!"), - span_hear("You hear a gunshot!"), COMBAT_MESSAGE_RANGE, pbtarget - ) - to_chat(pbtarget, "[user] fires [src] point blank at you!") - if(pb_knockback > 0 && ismob(pbtarget)) - var/mob/PBT = pbtarget - var/atom/throw_target = get_edge_target_turf(PBT, user.dir) - PBT.throw_at(throw_target, pb_knockback, 2) - else - user.visible_message( - span_danger("[user] fires [src]!"), - blind_message = span_hear("You hear a gunshot!"), - vision_distance = COMBAT_MESSAGE_RANGE, - ignored_mobs = user - ) - /obj/item/gun/emp_act(severity) . = ..() if(!(. & EMP_PROTECT_CONTENTS)) for(var/obj/O in contents) O.emp_act(severity) + +/obj/item/gun/proc/recharge_newshot() + return + /obj/item/gun/afterattack(atom/target, mob/living/user, flag, params) . = ..() + //No target? Why are we even firing anyways... if(!target) return - if(firing_burst) + //If we are burst firing, don't fire, obviously + if(currently_firing_burst) return - if(flag) //It's adjacent, is the user, or is on the user's person + //This var happens when we are either clicking someone next to us or ourselves. Check if we don't want to fire... + if(flag) if(target in user.contents) //can't shoot stuff inside us. return if(!ismob(target) || user.a_intent == INTENT_HARM) //melee attack return if(target == user && user.zone_selected != BODY_ZONE_PRECISE_MOUTH) //so we can't shoot ourselves (unless mouth selected) return +/* TODO: gunpointing is very broken, port the old skyrat gunpointing? its much better, usablity wise and rp wise? if(ismob(target) && user.a_intent == INTENT_GRAB) if(user.GetComponent(/datum/component/gunpoint)) to_chat(user, "You are already holding someone up!") return user.AddComponent(/datum/component/gunpoint, target, src) return +*/ + // Good job, but we have exta checks to do... + return pre_fire(target, user, TRUE, flag, params, null) + +/obj/item/gun/proc/pre_fire(atom/target, mob/living/user, message = TRUE, flag, params = null, zone_override = "", bonus_spread = 0, dual_wielded_gun = FALSE) + add_fingerprint(user) - if(istype(user))//Check if the user can use the gun, if the user isn't alive(turrets) assume it can. - var/mob/living/L = user - if(!can_trigger_gun(L)) + // If we have a cooldown, don't do anything, obviously + if(current_cooldown) + return + + //We check if the user can even use the gun, if not, we assume the user isn't alive(turrets) so we go ahead. + if(istype(user)) + var/mob/living/living_user = user + if(!can_trigger_gun(living_user)) return + //If targetting the mouth, we do suicide instead. if(flag) if(user.zone_selected == BODY_ZONE_PRECISE_MOUTH) handle_suicide(user, target, params) return - if(!can_shoot()) //Just because you can pull the trigger doesn't mean it can shoot. + //Just because we can pull the trigger doesn't mean it can fire. Mostly for safties. + if(!can_shoot()) shoot_with_empty_chamber(user) return + //we then check our weapon weight vs if we are being wielded... + if(weapon_weight == WEAPON_VERY_HEAVY && (!wielded_fully)) + to_chat(user, "You need a fully secure grip to fire [src]!") + return + if(weapon_weight == WEAPON_HEAVY && (!wielded)) to_chat(user, "You need a more secure grip to fire [src]!") return - //DUAL (or more!) WIELDING - var/bonus_spread = 0 + //If we have the pacifist trait and a chambered round, don't fire. Honestly, pacifism quirk is pretty stupid, and as such we check again in process_fire() anyways + if(chambered) + if(HAS_TRAIT(user, TRAIT_PACIFISM)) // If the user has the pacifist trait, then they won't be able to fire [src] if the round chambered inside of [src] is lethal. + if(chambered.harmful) // Is the bullet chambered harmful? + to_chat(user, "[src] is lethally chambered! You don't want to risk harming anyone...") + return + + //Dual wielding handling. Not the biggest fan of this, but it's here. Dual berettas not included var/loop_counter = 0 - if(ishuman(user) && user.a_intent == INTENT_HARM) - var/mob/living/carbon/human/H = user - for(var/obj/item/gun/G in H.held_items) - if(G == src || G.weapon_weight >= WEAPON_MEDIUM) + if(ishuman(user) && user.a_intent == INTENT_HARM && !dual_wielded_gun) + var/mob/living/carbon/human/our_cowboy = user + for(var/obj/item/gun/found_gun in our_cowboy.held_items) + if(found_gun == src || found_gun.weapon_weight >= WEAPON_MEDIUM) continue - else if(G.can_trigger_gun(user)) + else if(found_gun.can_trigger_gun(user)) bonus_spread += dual_wield_spread loop_counter++ - addtimer(CALLBACK(G, TYPE_PROC_REF(/obj/item/gun, process_fire), target, user, TRUE, params, null, bonus_spread), loop_counter) + addtimer(CALLBACK(found_gun, TYPE_PROC_REF(/obj/item/gun, pre_fire), target, user, TRUE, params, null, bonus_spread), loop_counter) + //get current firemode + var/current_firemode = gun_firemodes[firemode_index] + //FIREMODE_OTHER and its sister directs you to another proc for special handling + if(current_firemode == FIREMODE_OTHER) + return process_other(target, user, message, flag, params, zone_override, bonus_spread) + if(current_firemode == FIREMODE_OTHER_TWO) + return process_other_two(target, user, message, flag, params, zone_override, bonus_spread) + + //if all of that succeded, we finally get to process firing return process_fire(target, user, TRUE, params, null, bonus_spread) -/obj/item/gun/proc/recharge_newshot() - return +/obj/item/gun/proc/process_other(atom/target, mob/living/user, message = TRUE, flag, params = null, zone_override = "", bonus_spread = 0) + return //use this for 'underbarrels!! + +/obj/item/gun/proc/process_other_two(atom/target, mob/living/user, message = TRUE, flag, params = null, zone_override = "", bonus_spread = 0) + return //reserved in case another fire mode is needed, if you need special behavior, put it here then call process_fire, or call process_fire and have the special behavior there + +/** + * Handles everything involving firing. + * * gun.dm is still a fucking mess, and I will document everything next time i get to it... for now this will suffice. + * + * Returns TRUE or FALSE depending on if it actually fired a shot. + * Arguments: + * * target - The atom we are trying to hit. + * * user - The living mob firing the gun, if any. + * * message - Do we show the usual messages? eg. "x fires the y!" + * * params - Is the params string from byond [/atom/proc/Click] code, see that documentation. + * * zone_override - The bodypart we attempt to hit, sometimes hits another. + * * bonus_spread - Adds this value to spread, in this case used by dual wielding. + * * burst_firing - Not to be confused with currently_firing_burst. This var is TRUE when we are doing a burst except for the first shot in a burst, as to override the spam burst checks. + * * spread_override - Bullet spread is forcibly set to this. This is usually because of bursts attempting to share the same burst trajectory. + * * iteration - Which shot in a burst are we in. + */ +/obj/item/gun/proc/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0, burst_firing = FALSE, spread_override = 0, iteration = 0) + //OKAY, this prevents us from firing until our cooldown is done + if(!burst_firing) //if we're firing a burst, dont interfere to avoid issues + if(current_cooldown) + return FALSE -/obj/item/gun/proc/process_burst(mob/living/user, atom/target, message = TRUE, params=null, zone_override = "", sprd = 0, randomized_gun_spread = 0, randomized_bonus_spread = 0, rand_spr = 0, iteration = 0) - if(!user || !firing_burst) - firing_burst = FALSE + //Check one last time for safeties... + if(!can_shoot()) + shoot_with_empty_chamber(user) + currently_firing_burst = FALSE return FALSE - if(!issilicon(user)) - if(iteration > 1 && !(user.is_holding(src))) //for burst firing - firing_burst = FALSE + + //special hahnding for burst firing + if(burst_firing) + if(!user || !currently_firing_burst) + currently_firing_burst = FALSE return FALSE - if(chambered && chambered.BB) + if(!issilicon(user)) + //If we aren't holding the gun, what are we doing, stop firing! + if(iteration > 1 && !(user.is_holding(src))) + currently_firing_burst = FALSE + return FALSE + + //Do we have a round? If not, stop the whole chain, and if we do, check if the gun is chambered. Pacisim is pretty lame anyways. + if(chambered) if(HAS_TRAIT(user, TRAIT_PACIFISM)) // If the user has the pacifist trait, then they won't be able to fire [src] if the round chambered inside of [src] is lethal. if(chambered.harmful) // Is the bullet chambered harmful? to_chat(user, "[src] is lethally chambered! You don't want to risk harming anyone...") - return - if(randomspread) - sprd = round((rand() - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread)) - else //Smart spread - sprd = round((((rand_spr/burst_size) * iteration) - (0.5 + (rand_spr * 0.25))) * (randomized_gun_spread + randomized_bonus_spread)) - before_firing(target,user) - if(!chambered.fire_casing(target, user, params, ,suppressed, zone_override, sprd, src)) - shoot_with_empty_chamber(user) - firing_burst = FALSE - return FALSE - else - if(get_dist(user, target) <= 1) //Making sure whether the target is in vicinity for the pointblank shot - shoot_live_shot(user, 1, target, message) - else - shoot_live_shot(user, 0, target, message) - if (iteration >= burst_size) - firing_burst = FALSE + currently_firing_burst = FALSE //no burst 4 u + return FALSE + else + shoot_with_empty_chamber(user) + currently_firing_burst = FALSE + return FALSE + + // we hold the total spread in this var + var/sprd + // if we ARE burst firing and don't have "randomspread", we add the burst's penalty on top of it. + if(burst_firing && !randomspread) + bonus_spread += burst_size * iteration + + //override spread? usually happens only in bursts + if(spread_override && !randomspread) + sprd = spread_override else + //Calculate spread + sprd = calculate_spread(user, bonus_spread) + + before_firing(target,user) + //If we cant fire the round, just end the proc here. Otherwise, continue + if(!chambered.fire_casing(target, user, params, , suppressed, zone_override, sprd, src)) shoot_with_empty_chamber(user) - firing_burst = FALSE + currently_firing_burst = FALSE return FALSE + //Are we PBing someone? If so, set pointblank to TRUE + shoot_live_shot(user, (get_dist(user, target) <= 1), target, message) //Making sure whether the target is in vicinity for the pointblank shot + + //process the chamber... process_chamber(shooter = user) update_appearance() - return TRUE - -/obj/item/gun/proc/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) + //get our current firemode... + var/current_firemode = gun_firemodes[firemode_index] + + //If we are set to burst fire, then we burst fire! + if(burst_size > 1 && (current_firemode == FIREMODE_BURST) && !burst_firing) + currently_firing_burst = TRUE + for(var/i = 2 to burst_size) //we fire the first burst normally, hence why its 2 + addtimer(CALLBACK(src, PROC_REF(process_fire), target, user, message, params, zone_override, 0, TRUE, sprd, i), burst_delay * (i - 1)) + + //if we have a fire delay, set up a cooldown + if(fire_delay && (!burst_firing && !currently_firing_burst)) + current_cooldown = TRUE + addtimer(CALLBACK(src, PROC_REF(reset_current_cooldown)), fire_delay) + if(burst_firing && iteration >= burst_size) + current_cooldown = TRUE + addtimer(CALLBACK(src, PROC_REF(reset_current_cooldown)), fire_delay+burst_delay) + currently_firing_burst = FALSE + + // update our inhands... if(user) - SEND_SIGNAL(user, COMSIG_MOB_FIRED_GUN, user, target, params, zone_override) + user.update_inv_hands() - add_fingerprint(user) + SSblackbox.record_feedback("tally", "gun_fired", 1, type) + return TRUE - if(semicd) +/obj/item/gun/proc/reset_current_cooldown() + current_cooldown = FALSE +/obj/item/gun/proc/shoot_with_empty_chamber(mob/living/user as mob|obj) + if(!safety) + to_chat(user, "*[dry_fire_text]*") + playsound(src, dry_fire_sound, 30, TRUE) return + to_chat(user, "Safeties are active on the [src]! Turn them off to fire!") - var/sprd = 0 - var/randomized_gun_spread = 0 - var/rand_spr = rand() - if(wielded_fully && spread) - randomized_gun_spread = rand(0,spread) - else if(!wielded_fully && spread_unwielded) - randomized_gun_spread = rand(0,spread_unwielded) +/obj/item/gun/proc/shoot_live_shot(mob/living/user, pointblank = FALSE, atom/pbtarget = null, message = TRUE) + var/actual_angle = get_angle_with_scatter((user || get_turf(src)), pbtarget, rand(-recoil_deviation, recoil_deviation) + 180) + var/muzzle_angle = Get_Angle(get_turf(src), pbtarget) - if(HAS_TRAIT(user, TRAIT_POOR_AIM)) //nice shootin' tex - bonus_spread += 25 - var/randomized_bonus_spread = rand(0, bonus_spread) + user.changeNext_move(clamp(fire_delay, 0, CLICK_CD_RANGE)) - if(burst_size > 1) - firing_burst = TRUE - for(var/i = 1 to burst_size) - addtimer(CALLBACK(src, PROC_REF(process_burst), user, target, message, params, zone_override, sprd, randomized_gun_spread, randomized_bonus_spread, rand_spr, i), fire_delay * (i - 1)) + if(muzzle_flash && !muzzle_flash.applied) + handle_muzzle_flash(user, muzzle_angle) + + if(wielded_fully) + simulate_recoil(user, recoil, actual_angle) + else if(!wielded_fully) + simulate_recoil(user, recoil_unwielded, actual_angle) + + if(suppressed) + playsound(user, suppressed_sound, suppressed_volume, vary_fire_sound, ignore_walls = FALSE, extrarange = SILENCED_SOUND_EXTRARANGE, falloff_distance = 0) else - if(chambered) - if(HAS_TRAIT(user, TRAIT_PACIFISM)) // If the user has the pacifist trait, then they won't be able to fire [src] if the round chambered inside of [src] is lethal. - if(chambered.harmful) // Is the bullet chambered harmful? - to_chat(user, "[src] is lethally chambered! You don't want to risk harming anyone...") - return - sprd = round((rand() - 0.5) * DUALWIELD_PENALTY_EXTRA_MULTIPLIER * (randomized_gun_spread + randomized_bonus_spread)) - sprd = calculate_spread(user, sprd) - - before_firing(target,user) - if(!chambered.fire_casing(target, user, params, , suppressed, zone_override, sprd, src)) - shoot_with_empty_chamber(user) - return + playsound(user, fire_sound, fire_sound_volume, vary_fire_sound) + if(message) + if(pointblank) + user.visible_message( + span_danger("[user] fires [src] point blank at [pbtarget]!"), + span_danger("You fire [src] point blank at [pbtarget]!"), + span_hear("You hear a gunshot!"), COMBAT_MESSAGE_RANGE, pbtarget + ) + to_chat(pbtarget, "[user] fires [src] point blank at you!") + if(pb_knockback > 0 && ismob(pbtarget)) + var/mob/PBT = pbtarget + var/atom/throw_target = get_edge_target_turf(PBT, user.dir) + PBT.throw_at(throw_target, pb_knockback, 2) else - if(get_dist(user, target) <= 1) //Making sure whether the target is in vicinity for the pointblank shot - shoot_live_shot(user, TRUE, target, message) - else - shoot_live_shot(user, FALSE, target, message) - else - shoot_with_empty_chamber(user) - return - process_chamber(shooter = user) - update_appearance() - if(fire_delay) - semicd = TRUE - addtimer(CALLBACK(src, PROC_REF(reset_semicd)), fire_delay) + user.visible_message( + span_danger("[user] fires [src]!"), + blind_message = span_hear("You hear a gunshot!"), + vision_distance = COMBAT_MESSAGE_RANGE, + ignored_mobs = user + ) - if(user) - user.update_inv_hands() - SSblackbox.record_feedback("tally", "gun_fired", 1, type) - return TRUE + //cloudy sent a meme in the discord. i dont know if its true, but i made this piece of code in honor of it + var/mob/living/carbon/human/living_human = user + if(istype(living_human)) + if(!living_human.wear_neck) + return //if nothing on the neck, don't do anything + var/current_month = text2num(time2text(world.timeofday, "MM")) + var/static/regex/bian = regex("(?:^\\W*lesbian)", "i") -/obj/item/gun/proc/reset_semicd() - semicd = FALSE + if(current_month == JUNE) + return //if it isn't june, don't do this easter egg -/obj/item/gun/attack(mob/M as mob, mob/user) - if(user.a_intent == INTENT_HARM) //Flogging - if(bayonet) - M.attackby(bayonet, user) - return - else - return ..() - return + if(!findtext(bian, living_human.generic_adjective)) + return //dont bother if we already are affected by it -/obj/item/gun/attack_obj(obj/O, mob/user) - if(user.a_intent == INTENT_HARM) - if(bayonet) - O.attackby(bayonet, user) - return - return ..() - -/obj/item/gun/attackby(obj/item/I, mob/user, params) - if(user.a_intent == INTENT_HARM) - return ..() - else if(istype(I, /obj/item/flashlight/seclite)) - if(!can_flashlight) - return ..() - var/obj/item/flashlight/seclite/S = I - if(!gun_light) - if(!user.transferItemToLoc(I, src)) - return - to_chat(user, "You click [S] into place on [src].") - set_gun_light(S) - update_gunlight() - alight = new(src) - if(loc == user) - alight.Grant(user) - else if(istype(I, /obj/item/kitchen/knife)) - var/obj/item/kitchen/knife/K = I - if(!can_bayonet || !K.bayonet || bayonet) //ensure the gun has an attachment point available, and that the knife is compatible with it. - return ..() - if(!user.transferItemToLoc(I, src)) - return - to_chat(user, "You attach [K] to [src]'s bayonet lug.") - bayonet = K - update_appearance() - - else - return ..() + if(istype(living_human.wear_neck, /obj/item/clothing/neck/tie/lesbian) || living_human.wear_neck.icon_state == "lesbian") + var/use_space = "[living_human.generic_adjective ? " " : ""]" + living_human.generic_adjective = "lesbian[use_space][living_human.generic_adjective]" //i actually don't remember the meme. it was something like lesbians will stop working if they see another with a gun. or something. /obj/item/gun/CtrlClick(mob/user) . = ..() @@ -666,7 +768,7 @@ if(!ishuman(user) || !ishuman(target)) return - if(semicd) + if(current_cooldown) return if(!can_shoot()) //Just because you can pull the trigger doesn't mean it can shoot. @@ -680,7 +782,7 @@ target.visible_message(span_warning("[user] points [src] at [target]'s head, ready to pull the trigger..."), \ span_userdanger("[user] points [src] at your head, ready to pull the trigger...")) - semicd = TRUE + current_cooldown = TRUE if(!bypass_timer && (!do_after(user, 100, target) || user.zone_selected != BODY_ZONE_PRECISE_MOUTH)) if(user) @@ -688,17 +790,18 @@ user.visible_message(span_notice("[user] decided not to shoot.")) else if(target && target.Adjacent(user)) target.visible_message(span_notice("[user] has decided to spare [target]."), span_notice("[user] has decided to spare your life!")) - semicd = FALSE + current_cooldown = FALSE return - semicd = FALSE + current_cooldown = FALSE target.visible_message(span_warning("[user] pulls the trigger!"), span_userdanger("[(user == target) ? "You pull" : "[user] pulls"] the trigger!")) if(chambered && chambered.BB && can_trigger_gun(user)) chambered.BB.damage *= 3 //Check is here for safeties and such, brain will be removed after - process_fire(target, user, TRUE, params, BODY_ZONE_HEAD) + if(!pre_fire(target, user, TRUE, params, BODY_ZONE_HEAD)) + return var/obj/item/organ/brain/brain_to_blast = target.getorganslot(ORGAN_SLOT_BRAIN) if(brain_to_blast) @@ -732,10 +835,55 @@ // We do it like this in case theres some specific gun behavior for adjusting spread, like bipods or folded stocks /obj/item/gun/proc/calculate_spread(mob/user, bonus_spread) - return bonus_spread + ///our final spread value + var/sprd = 0 + ///our randomized value after checking if we are wielded or not + var/randomized_gun_spread = 0 + ///bonus + var/randomized_bonus_spread + // do we have poor aim + var/poor_aim = FALSE + + //do we have bonus_spread ? If so, set sprd to it because it means a subtype's proc messed with it + sprd += bonus_spread + + //reset bonus_spread for poor aim... + bonus_spread = 0 + + // if we have poor aim, we fuck the shooter over + if(HAS_TRAIT(user, TRAIT_POOR_AIM)) + bonus_spread += 25 + poor_aim = TRUE + // then we randomize the bonus spread + randomized_bonus_spread = rand(poor_aim ? 10 : 0, bonus_spread) //poor aim is no longer just a nusiance + + //then, we mutiply previous bonus spread as it means dual wielding usually, it also means poor aim is also even more severe + randomized_bonus_spread *= DUALWIELD_PENALTY_EXTRA_MULTIPLIER + + // we will then calculate gun spread depending on if we are fully wielding (after do_after) the gun or not + randomized_gun_spread = rand(0, wielded_fully ? spread : spread_unwielded) + + //finally, we put it all together including if sprd has a value + sprd += randomized_gun_spread + randomized_bonus_spread + + //clamp it down to avoid guns with negative spread to have worse recoil... + sprd = clamp(sprd, 0, INFINITY) + + // im not sure what this does, i beleive its meant to make it so bullet spread goes in the opposite direction? get back to me on this - update,i have commented it out, however it appears be dapening spread. weird. + //sprd *= (rand() - 0.5) + + //coin flip if we mutiply output by -1 so spread isn't JUST to the right + if(prob(50)) + sprd *= -1 + + // then we round it up and send it! + sprd = round(sprd) + + return sprd /obj/item/gun/proc/simulate_recoil(mob/living/user, recoil_bonus = 0, firing_angle) var/total_recoil = calculate_recoil(user, recoil_bonus) + total_recoil = clamp(total_recoil, 0 , INFINITY) var/actual_angle = firing_angle + rand(-recoil_deviation, recoil_deviation) + 180 if(actual_angle > 360) @@ -747,6 +895,7 @@ /obj/item/gun/proc/handle_muzzle_flash(mob/living/user, firing_angle) var/atom/movable/flash_loc = user var/prev_light = light_range + if(!light_on && (light_range <= muzzle_flash_lum)) set_light_range(muzzle_flash_lum) set_light_color(muzzle_flash_color) @@ -895,4 +1044,60 @@ azoom = new() azoom.gun = src +/obj/item/gun/proc/build_firemodes() + if(FIREMODE_FULLAUTO in gun_firemodes) + AddComponent(/datum/component/automatic_fire, fire_delay) + SEND_SIGNAL(src, COMSIG_GUN_DISABLE_AUTOFIRE) + var/datum/action/item_action/our_action + + if(gun_firemodes.len > 1) + our_action = new /datum/action/item_action/toggle_firemode(src) + + for(var/i=1, i <= gun_firemodes.len+1, i++) + if(default_firemode == gun_firemodes[i]) + firemode_index = i + if(gun_firemodes[i] == FIREMODE_FULLAUTO) + SEND_SIGNAL(src, COMSIG_GUN_ENABLE_AUTOFIRE) + if(our_action) + our_action.UpdateButtonIcon() + return + + firemode_index = 1 + CRASH("default_firemode isn't in the gun_firemodes list of [src.type]!! Defaulting to 1!!") + +/obj/item/gun/ui_action_click(mob/user, actiontype) + if(istype(actiontype, /datum/action/item_action/toggle_firemode)) + fire_select(user) + else + ..() + +/obj/item/gun/proc/fire_select(mob/living/carbon/human/user) + + //gun_firemodes = list(FIREMODE_SEMIAUTO, FIREMODE_BURST, FIREMODE_FULLAUTO, FIREMODE_OTHER) + + firemode_index++ + if(firemode_index > gun_firemodes.len) + firemode_index = 1 //reset to the first index if it's over the limit. Byond arrays start at 1 instead of 0, hence why its set to 1. + + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode == FIREMODE_FULLAUTO) + SEND_SIGNAL(src, COMSIG_GUN_ENABLE_AUTOFIRE) + else + SEND_SIGNAL(src, COMSIG_GUN_DISABLE_AUTOFIRE) +//wawa + to_chat(user, "Switched to [gun_firenames[current_firemode]].") + playsound(user, 'sound/weapons/gun/general/selector.ogg', 100, TRUE) + update_appearance() + for(var/datum/action/current_action as anything in actions) + current_action.UpdateButtonIcon() + +/datum/action/item_action/toggle_firemode/UpdateButtonIcon(status_only = FALSE, force = FALSE) + var/obj/item/gun/our_gun = target + + var/current_firemode = our_gun.gun_firemodes[our_gun.firemode_index] + //tldr; if we have adjust_fire_select_icon_state_on_safety as true, we append "safety_" to the prefix, otherwise nothing. + var/safety_prefix = "[our_gun.adjust_fire_select_icon_state_on_safety ? "[our_gun.safety ? "safety_" : ""]" : ""]" + button_icon_state = "[safety_prefix][our_gun.fire_select_icon_state_prefix][current_firemode]" + return ..() + #undef DUALWIELD_PENALTY_EXTRA_MULTIPLIER diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 37b8ceea801c..e5345c0eab45 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -58,9 +58,9 @@ ///Compatible magazines with the gun var/mag_type = /obj/item/ammo_box/magazine/m10mm //Removes the need for max_ammo and caliber info ///Whether the sprite has a visible magazine or not - var/mag_display = FALSE + var/show_magazine_on_sprite = FALSE ///Whether the sprite has a visible ammo display or not - var/mag_display_ammo = FALSE + var/show_magazine_on_sprite_ammo = FALSE ///Whether the sprite has a visible indicator for being empty or not. var/empty_indicator = FALSE ///Whether the gun alarms when empty or not. @@ -68,7 +68,7 @@ ///Do we eject the magazine upon runing out of ammo? var/empty_autoeject = FALSE ///Whether the gun supports multiple special mag types - var/special_mags = FALSE + var/unique_mag_sprites_for_variants = FALSE ///The bolt type of the gun, affects quite a bit of functionality, see combat.dm defines for bolt types: BOLT_TYPE_STANDARD; BOLT_TYPE_LOCKING; BOLT_TYPE_OPEN; BOLT_TYPE_NO_BOLT var/bolt_type = BOLT_TYPE_STANDARD ///Used for locking bolt and open bolt guns. Set a bit differently for the two but prevents firing when true for both. @@ -126,7 +126,7 @@ if (suppressed) . += "[icon_state]_suppressor" if (magazine) - if (special_mags) + if (unique_mag_sprites_for_variants) . += "[icon_state]_mag_[magazine.base_icon_state]" if (!magazine.ammo_count()) . += "[icon_state]_mag_empty" @@ -191,6 +191,7 @@ else playsound(src, rack_sound, rack_sound_volume, rack_sound_vary) update_appearance() + SEND_SIGNAL(src, COMSIG_UPDATE_AMMO_HUD) ///Drops the bolt from a locked position /obj/item/gun/ballistic/proc/drop_bolt(mob/user = null) @@ -217,6 +218,7 @@ if (bolt_type == BOLT_TYPE_OPEN && !bolt_locked) chamber_round(TRUE) update_appearance() + SEND_SIGNAL(src, COMSIG_UPDATE_AMMO_HUD) return TRUE else to_chat(user, "You cannot seem to get \the [src] out of your hands!") @@ -237,6 +239,7 @@ if (display_message) to_chat(user, "You pull the [magazine_wording] out of \the [src].") update_appearance() + SEND_SIGNAL(src, COMSIG_UPDATE_AMMO_HUD) if (tac_load) if(do_after(user, tactical_reload_delay, TRUE, src)) if (insert_magazine(user, tac_load, FALSE)) @@ -249,6 +252,7 @@ if(user) user.put_in_hands(old_mag) update_appearance() + SEND_SIGNAL(src, COMSIG_UPDATE_AMMO_HUD) /obj/item/gun/ballistic/can_shoot() if(safety) @@ -303,11 +307,6 @@ return return FALSE -/obj/item/gun/ballistic/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) - if (sawn_off) - bonus_spread += SAWN_OFF_ACC_PENALTY - . = ..() - ///Installs a new suppressor, assumes that the suppressor is already in the contents of src /obj/item/gun/ballistic/proc/install_suppressor(obj/item/suppressor/S) suppressed = S @@ -351,8 +350,11 @@ bolt_locked = TRUE update_appearance() -/obj/item/gun/ballistic/afterattack() +/obj/item/gun/ballistic/pre_fire(atom/target, mob/living/user, message = TRUE, flag, params = null, zone_override = "", bonus_spread = 0, dual_wielded_gun = FALSE) prefire_empty_checks() + return ..() + +/obj/item/gun/ballistic/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0, burst_firing = FALSE, spread_override = 0, iteration = 0) . = ..() //The gun actually firing postfire_empty_checks(.) diff --git a/code/modules/projectiles/guns/ballistic/assault.dm b/code/modules/projectiles/guns/ballistic/assault.dm index d0b69480a106..9d97dc627bd4 100644 --- a/code/modules/projectiles/guns/ballistic/assault.dm +++ b/code/modules/projectiles/guns/ballistic/assault.dm @@ -1,10 +1,10 @@ /obj/item/gun/ballistic/automatic/assault - burst_size = 1 - actions_types = list() - wield_delay = 0.7 SECONDS + gun_firemodes = list(FIREMODE_SEMIAUTO, FIREMODE_FULLAUTO) + default_firemode = FIREMODE_SEMIAUTO + wield_delay = 0.8 SECONDS wield_slowdown = 0.6 - fire_delay = 1 + fire_delay = 0.2 SECONDS load_sound = 'sound/weapons/gun/rifle/ar_reload.ogg' load_empty_sound = 'sound/weapons/gun/rifle/ar_reload.ogg' @@ -17,18 +17,20 @@ /obj/item/gun/ballistic/automatic/assault/calculate_recoil(mob/user, recoil_bonus = 0) var/gunslinger_bonus = 2 var/total_recoil = recoil_bonus + if(HAS_TRAIT(user, TRAIT_GUNSLINGER)) //gunslinger penalty total_recoil += gunslinger_bonus - total_recoil = clamp(total_recoil,0,INFINITY) - return total_recoil + + return ..(user, total_recoil) /obj/item/gun/ballistic/automatic/assault/calculate_spread(mob/user, bonus_spread) - var/gunslinger_bonus = 8 + var/gunslinger_bonus = 16 var/total_spread = bonus_spread + if(HAS_TRAIT(user, TRAIT_GUNSLINGER)) //gunslinger penalty total_spread += gunslinger_bonus - total_spread = clamp(total_spread,0,INFINITY) - return total_spread + + return ..(user, total_spread) /obj/item/gun/ballistic/automatic/assault/skm name = "\improper SKM-24" @@ -44,8 +46,8 @@ icon_state = "skm" item_state = "skm" - mag_display = TRUE - special_mags = TRUE + show_magazine_on_sprite = TRUE + unique_mag_sprites_for_variants = TRUE weapon_weight = WEAPON_MEDIUM w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK @@ -55,9 +57,7 @@ spread = 1 wield_delay = 0.7 SECONDS -/obj/item/gun/ballistic/automatic/assault/skm/ComponentInitialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.2 SECONDS) + fire_delay = 0.2 SECONDS /obj/item/gun/ballistic/automatic/assault/skm/pirate name = "\improper Chopper" @@ -82,22 +82,21 @@ fire_sound = 'sound/weapons/gun/rifle/m16.ogg' icon_state = "p16" item_state = "p16" - mag_display = TRUE + show_magazine_on_sprite = TRUE w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK mag_type = /obj/item/ammo_box/magazine/p16 spread = 2 wield_delay = 0.5 SECONDS + + fire_delay = 0.18 SECONDS + rack_sound = 'sound/weapons/gun/rifle/m16_cocked.ogg' load_sound = 'sound/weapons/gun/rifle/m16_reload.ogg' load_empty_sound = 'sound/weapons/gun/rifle/m16_reload.ogg' eject_sound = 'sound/weapons/gun/rifle/m16_unload.ogg' eject_empty_sound = 'sound/weapons/gun/rifle/m16_unload.ogg' -/obj/item/gun/ballistic/automatic/assault/p16/ComponentInitialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.2 SECONDS) - /obj/item/gun/ballistic/automatic/assault/p16/minutemen name = "\improper CM-16" desc = "The standard-issue rifle of CLIP and an extensively modified reproduction of the P-16. Chambered in 5.56mm." @@ -106,72 +105,56 @@ /obj/item/gun/ballistic/automatic/assault/swiss_cheese name = "\improper Swiss Cheese" - desc = "An ancient longarm famous for its boxy, modular design. The DMA on this unit is, sadly, broken. Uses 5.56mm ammunition for Matter mode." + desc = "An ancient longarm famous for its boxy, modular design. Mass produced by the Terran Confederation in ages past, these often mutiple century old designs have survied due to their sheer ruggedness. The DMA on this unit is sadly broken, but these rifles are known for their excellent burst fire. Uses 5.56mm ammunition for Matter mode." icon = 'icons/obj/guns/48x32guns.dmi' fire_sound = 'sound/weapons/gun/rifle/swiss.ogg' icon_state = "swiss" item_state = "swiss" - mag_display = TRUE + show_magazine_on_sprite = TRUE empty_indicator = TRUE burst_size = 3 - fire_delay = 1.5 + burst_delay = 0.08 SECONDS + fire_delay = 0.25 SECONDS spread = 8 weapon_weight = WEAPON_MEDIUM + gun_firenames = list(FIREMODE_SEMIAUTO = "matter semi-auto", FIREMODE_BURST = "matter burst fire", FIREMODE_FULLAUTO = "matter full auto", FIREMODE_OTHER = "hybrid") + gun_firemodes = list(FIREMODE_SEMIAUTO, FIREMODE_BURST, FIREMODE_FULLAUTO, FIREMODE_OTHER) + + fire_select_icon_state_prefix = "swisschesse_" + w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK mag_type = /obj/item/ammo_box/magazine/swiss - actions_types = list(/datum/action/item_action/toggle_firemode) manufacturer = MANUFACTURER_SOLARARMORIES spread = 8 spread_unwielded = 15 -/obj/item/gun/ballistic/automatic/assault/swiss_cheese/ComponentInitialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.65 SECONDS) - -/obj/item/gun/ballistic/automatic/assault/swiss_cheese/afterattack(atom/target, mob/living/user, flag, params) - if(select == 2) - to_chat(user, "You hear a strange sound from the DMA unit. It doesn't appear to be operational.") - return - else - return ..() - -/obj/item/gun/ballistic/automatic/assault/swiss_cheese/burst_select() - var/mob/living/carbon/human/user = usr - switch(select) - if(1) - select = 2 - to_chat(user, "You switch to Hybrid.") - if(2) - select = 1 - burst_size = initial(burst_size) - fire_delay = initial(fire_delay) - to_chat(user, "You switch to [burst_size]-rnd Matter.") - - playsound(user, 'sound/weapons/gun/general/selector.ogg', 100, TRUE) - update_appearance() - for(var/datum/action/action as anything in actions) - action.UpdateButtonIcon() - -#define E40_BALLISTIC_MODE 1 -#define E40_LASER_MODE 2 +/obj/item/gun/ballistic/automatic/assault/swiss_cheese/process_other(atom/target, mob/living/user, message = TRUE, flag, params = null, zone_override = "", bonus_spread = 0) + to_chat(user, "You hear a strange sound from the DMA unit. It doesn't appear to be operational.") /obj/item/gun/ballistic/automatic/assault/e40 name = "\improper E-40 Hybrid Rifle" - desc = "A Hybrid Assault Rifle, best known for being having a dual ballistic and laser system. Chambered in .229 Eoehoma caseless, and uses energy for lasers." + desc = "A Hybrid Assault Rifle, best known for being having a dual ballistic/laser system along with an advanced ammo counter. Once an icon for bounty hunters, age has broken most down, so these end up in collector's hands or as shoddy Frontiersmen laser SMG conversions when in their inheritted stockpiles. But if one were to find one in working condition, it would be just as formidable as back then. Chambered in .229 Eoehoma caseless, and uses energy for lasers." icon = 'icons/obj/guns/48x32guns.dmi' icon_state = "e40" item_state = "e40" mag_type = /obj/item/ammo_box/magazine/e40 can_suppress = FALSE - actions_types = list(/datum/action/item_action/toggle_firemode) var/obj/item/gun/energy/laser/e40_laser_secondary/secondary + fire_select_icon_state_prefix = "e40_" + + fire_delay = 0.18 SECONDS + recoil_unwielded = 3 + + gun_firenames = list(FIREMODE_FULLAUTO = "full auto ballistic", FIREMODE_OTHER = "full auto laser") + gun_firemodes = list(FIREMODE_FULLAUTO, FIREMODE_OTHER) + default_firemode = FIREMODE_OTHER weapon_weight = WEAPON_MEDIUM w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK - mag_display = TRUE + show_magazine_on_sprite = TRUE empty_indicator = TRUE fire_sound = 'sound/weapons/gun/laser/e40_bal.ogg' manufacturer = MANUFACTURER_EOEHOMA @@ -179,56 +162,84 @@ /obj/item/gun/ballistic/automatic/assault/e40/Initialize() . = ..() secondary = new /obj/item/gun/energy/laser/e40_laser_secondary(src) - AddComponent(/datum/component/automatic_fire, 0.2 SECONDS) RegisterSignal(secondary, COMSIG_ATOM_UPDATE_ICON, PROC_REF(secondary_update_icon)) SEND_SIGNAL(secondary, COMSIG_GUN_DISABLE_AUTOFIRE) update_appearance() +/obj/item/gun/ballistic/automatic/assault/e40/ComponentInitialize() + . = ..() + AddComponent(/datum/component/ammo_hud/eoehoma) // at long last... the ammo counter on the side of the sprite is functional... + /obj/item/gun/ballistic/automatic/assault/e40/do_autofire(datum/source, atom/target, mob/living/shooter, params) - if(select == E40_LASER_MODE) - secondary.do_autofire(source, target, shooter, params) - else + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode != FIREMODE_OTHER) return ..() + return secondary.do_autofire(source, target, shooter, params) /obj/item/gun/ballistic/automatic/assault/e40/do_autofire_shot(datum/source, atom/target, mob/living/shooter, params) - if(select == E40_LASER_MODE) - secondary.do_autofire_shot(source, target, shooter, params) - else + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode != FIREMODE_OTHER) return ..() + return secondary.do_autofire_shot(source, target, shooter, params) /obj/item/gun/ballistic/automatic/assault/e40/process_fire(atom/target, mob/living/user, message, params, zone_override, bonus_spread) - if(select == E40_LASER_MODE) - secondary.process_fire(target, user, message, params, zone_override, bonus_spread) - else + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode != FIREMODE_OTHER) return ..() + return secondary.process_fire(target, user, message, params, zone_override, bonus_spread) /obj/item/gun/ballistic/automatic/assault/e40/can_shoot() - if(select == E40_LASER_MODE) - return secondary.can_shoot() - else + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode != FIREMODE_OTHER) return ..() + return secondary.can_shoot() /obj/item/gun/ballistic/automatic/assault/e40/afterattack(atom/target, mob/living/user, flag, params) - if(select == E40_LASER_MODE) - secondary.afterattack(target, user, flag, params) - else + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode != FIREMODE_OTHER) return ..() + return secondary.afterattack(target, user, flag, params) /obj/item/gun/ballistic/automatic/assault/e40/attackby(obj/item/attack_obj, mob/user, params) if(istype(attack_obj, /obj/item/stock_parts/cell/gun)) - secondary.attackby(attack_obj, user, params) + return secondary.attackby(attack_obj, user, params) if(istype(attack_obj, /obj/item/screwdriver)) - secondary.screwdriver_act(user, attack_obj,) - else - ..() + return secondary.screwdriver_act(user, attack_obj,) + return ..() + /obj/item/gun/ballistic/automatic/assault/e40/can_shoot() - if(select == E40_LASER_MODE) - return secondary.can_shoot() - return ..() + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode != FIREMODE_OTHER) + return ..() + return secondary.can_shoot() + +/obj/item/gun/ballistic/automatic/assault/e40/on_wield(obj/item/source, mob/user) + wielded = TRUE + secondary.wielded = TRUE + INVOKE_ASYNC(src, .proc.do_wield, user) + +/obj/item/gun/ballistic/automatic/assault/e40/do_wield(mob/user) + . = ..() + secondary.wielded_fully = wielded_fully + +/// triggered on unwield of two handed item +/obj/item/gun/ballistic/automatic/assault/e40/on_unwield(obj/item/source, mob/user) + . = ..() + secondary.wielded_fully = FALSE + secondary.wielded = FALSE + /obj/item/gun/ballistic/automatic/assault/e40/proc/secondary_update_icon() - update_icon() + update_appearance() + SEND_SIGNAL(src, COMSIG_UPDATE_AMMO_HUD) + +/obj/item/gun/ballistic/automatic/assault/e40/process_other(atom/target, mob/living/user, message = TRUE, flag, params = null, zone_override = "", bonus_spread = 0) + secondary.pre_fire(target, user, message, flag, params, zone_override, bonus_spread) + + +/obj/item/gun/ballistic/automatic/powered/get_cell() + return cell /obj/item/gun/ballistic/automatic/assault/e40/update_overlays() . = ..() @@ -244,41 +255,33 @@ . += "[icon_state]_cell" -/obj/item/gun/ballistic/automatic/assault/e40/burst_select() - var/mob/living/carbon/human/user = usr - switch(select) - if(NONE) - select = E40_BALLISTIC_MODE - to_chat(user, "You switch to full automatic ballistic.") - if(E40_BALLISTIC_MODE) - select = E40_LASER_MODE - to_chat(user, "You switch to full auto laser.") - SEND_SIGNAL(src, COMSIG_GUN_DISABLE_AUTOFIRE) - SEND_SIGNAL(secondary, COMSIG_GUN_ENABLE_AUTOFIRE) - if(E40_LASER_MODE) - select = E40_BALLISTIC_MODE - to_chat(user, "You switch to full automatic ballistic.") - SEND_SIGNAL(src, COMSIG_GUN_ENABLE_AUTOFIRE) - SEND_SIGNAL(secondary, COMSIG_GUN_DISABLE_AUTOFIRE) - playsound(user, 'sound/weapons/empty.ogg', 100, TRUE) - update_icon() - return - - - /obj/item/gun/ballistic/automatic/assault/e40/toggle_safety(mob/user, silent=FALSE) . = ..() secondary.toggle_safety(user, silent=TRUE) +/obj/item/gun/ballistic/automatic/assault/e40/fire_select(mob/living/carbon/human/user) + . = ..() + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode == FIREMODE_OTHER) + SEND_SIGNAL(src, COMSIG_GUN_ENABLE_AUTOFIRE) + SEND_SIGNAL(src, COMSIG_GUN_SET_AUTOFIRE_SPEED, secondary.fire_delay) + else + SEND_SIGNAL(src, COMSIG_GUN_SET_AUTOFIRE_SPEED, fire_delay) + SEND_SIGNAL(src, COMSIG_UPDATE_AMMO_HUD) + //laser /obj/item/gun/energy/laser/e40_laser_secondary name = "secondary e40 laser gun" - desc = "The laser component of a E-40 Hybrid Rifle. You probably shouldn't see this." + desc = "The laser component of a E-40 Hybrid Rifle. You probably shouldn't see this. If you can though, you should probably know lorewise, this is primary, the ballistic compontent in universe is secondary. Unfortunately, we cannot simulate this, So codewise this is secondary." fire_sound = 'sound/weapons/gun/laser/e40_las.ogg' w_class = WEIGHT_CLASS_NORMAL ammo_type = list(/obj/item/ammo_casing/energy/laser/assault) - fire_delay = 2 + fire_delay = 0.2 SECONDS + gun_firemodes = list(FIREMODE_FULLAUTO) + default_firemode = FIREMODE_FULLAUTO + + spread_unwielded = 20 //techinically a battle rifle, i'm putting it here for organisation sake @@ -294,12 +297,13 @@ internal_magazine = TRUE mag_type = /obj/item/ammo_box/magazine/internal/vickland fire_sound = 'sound/weapons/gun/rifle/vickland.ogg' - burst_size = 0 actions_types = list() manufacturer = MANUFACTURER_HUNTERSPRIDE rack_sound = 'sound/weapons/gun/rifle/ar_cock.ogg' + fire_delay = 0.4 SECONDS + spread_unwielded = 25 recoil = 0 recoil_unwielded = 4 diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm index abc0bcbc9bcb..c0ccf71d513e 100644 --- a/code/modules/projectiles/guns/ballistic/automatic.dm +++ b/code/modules/projectiles/guns/ballistic/automatic.dm @@ -1,10 +1,10 @@ + /obj/item/gun/ballistic/automatic w_class = WEIGHT_CLASS_NORMAL - var/select = 1 can_suppress = TRUE - burst_size = 3 - fire_delay = 2 - actions_types = list(/datum/action/item_action/toggle_firemode) + + gun_firemodes = list(FIREMODE_SEMIAUTO) + default_firemode = FIREMODE_SEMIAUTO semi_auto = TRUE fire_sound = 'sound/weapons/gun/smg/shot.ogg' fire_sound_volume = 90 @@ -14,6 +14,7 @@ weapon_weight = WEAPON_MEDIUM pickup_sound = 'sound/items/handling/rifle_pickup.ogg' + fire_delay = 0.4 SECONDS wield_delay = 1 SECONDS spread = 0 spread_unwielded = 13 @@ -21,36 +22,6 @@ recoil_unwielded = 4 wield_slowdown = 0.35 -/obj/item/gun/ballistic/automatic/update_overlays() - . = ..() - if(!select) - . += "[initial(icon_state)]_semi" - if(select == 1) - . += "[initial(icon_state)]_burst" - -/obj/item/gun/ballistic/automatic/ui_action_click(mob/user, actiontype) - if(istype(actiontype, /datum/action/item_action/toggle_firemode)) - burst_select() - else - ..() - -/obj/item/gun/ballistic/automatic/proc/burst_select() - var/mob/living/carbon/human/user = usr - select = !select - if(!select) - burst_size = 1 - fire_delay = 0 - to_chat(user, "You switch to semi-automatic.") - else - burst_size = initial(burst_size) - fire_delay = initial(fire_delay) - to_chat(user, "You switch to [burst_size]-rnd burst.") - - playsound(user, 'sound/weapons/gun/general/selector.ogg', 100, TRUE) - update_appearance() - for(var/X in actions) - var/datum/action/A = X - A.UpdateButtonIcon() // SNIPER // @@ -68,7 +39,6 @@ recoil = 2 weapon_weight = WEAPON_HEAVY mag_type = /obj/item/ammo_box/magazine/sniper_rounds - fire_delay = 40 burst_size = 1 w_class = WEIGHT_CLASS_NORMAL zoomable = TRUE @@ -76,13 +46,13 @@ zoom_out_amt = 5 slot_flags = ITEM_SLOT_BACK actions_types = list() - mag_display = TRUE + show_magazine_on_sprite = TRUE manufacturer = MANUFACTURER_SCARBOROUGH spread = -5 spread_unwielded = 20 - recoil = 0 - recoil_unwielded = 4 + recoil = 5 + recoil_unwielded = 50 wield_slowdown = 1 wield_delay = 1.3 SECONDS @@ -96,38 +66,36 @@ EMPTY_GUN_HELPER(automatic/sniper_rifle/syndicate) // Old Semi-Auto Rifle // -/obj/item/gun/ballistic/automatic/surplus +/obj/item/gun/ballistic/automatic/surplus //TODO: NEEDS TO BE REPLACED WITH PISTOL CARBINES OR LOWCAL SEMI-AUTO RIFLES name = "surplus rifle" desc = "One of countless cheap, obsolete rifles found throughout the Frontier. Its lack of lethality renders it mostly a deterrent. Chambered in 10mm." icon_state = "surplus" item_state = "moistnugget" weapon_weight = WEAPON_HEAVY mag_type = /obj/item/ammo_box/magazine/m10mm/rifle - fire_delay = 10 + fire_delay = 0.5 SECONDS burst_size = 1 can_unsuppress = TRUE can_suppress = TRUE w_class = WEIGHT_CLASS_HUGE slot_flags = ITEM_SLOT_BACK - actions_types = list() - mag_display = TRUE + show_magazine_on_sprite = TRUE // Laser rifle (rechargeable magazine) // -/obj/item/gun/ballistic/automatic/laser +/obj/item/gun/ballistic/automatic/laser //TODO: REMOVE name = "laser rifle" desc = "Though sometimes mocked for the relatively weak firepower of their energy weapons, the logistic miracle of rechargeable ammunition has given Nanotrasen a decisive edge over many a foe." icon_state = "oldrifle" item_state = "arg" mag_type = /obj/item/ammo_box/magazine/recharge - fire_delay = 2 + fire_delay = 0.2 SECONDS can_suppress = FALSE burst_size = 0 - actions_types = list() fire_sound = 'sound/weapons/laser.ogg' casing_ejector = FALSE -/obj/item/gun/ballistic/automatic/ebr +/obj/item/gun/ballistic/automatic/ebr //fuck this gun, its getting wiped soon enough name = "\improper M514 EBR" desc = "A reliable, high-powered battle rifle often found in the hands of Syndicate personnel and remnants, chambered in .308. Effective against personnel and armor alike." icon = 'icons/obj/guns/48x32guns.dmi' @@ -136,13 +104,12 @@ EMPTY_GUN_HELPER(automatic/sniper_rifle/syndicate) icon_state = "ebr" item_state = "ebr" zoomable = TRUE - mag_display = TRUE + show_magazine_on_sprite = TRUE weapon_weight = WEAPON_MEDIUM w_class = WEIGHT_CLASS_BULKY mag_type = /obj/item/ammo_box/magazine/ebr fire_sound = 'sound/weapons/gun/rifle/shot_alt2.ogg' burst_size = 0 - actions_types = list() manufacturer = MANUFACTURER_SCARBOROUGH wield_slowdown = 2 @@ -158,7 +125,7 @@ EMPTY_GUN_HELPER(automatic/ebr) icon_state = "gal" item_state = "gal" zoomable = TRUE - mag_display = TRUE + show_magazine_on_sprite = TRUE weapon_weight = WEAPON_MEDIUM w_class = WEIGHT_CLASS_BULKY mag_type = /obj/item/ammo_box/magazine/gal @@ -169,6 +136,8 @@ EMPTY_GUN_HELPER(automatic/ebr) wield_slowdown = 2 spread = -4 + fire_select_icon_state_prefix = "clip_" + adjust_fire_select_icon_state_on_safety = TRUE /obj/item/gun/ballistic/automatic/gal/inteq name = "\improper SsG-04" @@ -185,5 +154,5 @@ EMPTY_GUN_HELPER(automatic/ebr) can_suppress = FALSE actions_types = list() can_bayonet = FALSE - mag_display = TRUE + show_magazine_on_sprite = TRUE weapon_weight = WEAPON_LIGHT diff --git a/code/modules/projectiles/guns/ballistic/gauss.dm b/code/modules/projectiles/guns/ballistic/gauss.dm index 8fce353d8b22..c50f906e4eba 100644 --- a/code/modules/projectiles/guns/ballistic/gauss.dm +++ b/code/modules/projectiles/guns/ballistic/gauss.dm @@ -9,9 +9,9 @@ load_sound = 'sound/weapons/gun/gauss/rifle_reload.ogg' can_suppress = FALSE burst_size = 1 - fire_delay = 3 + fire_delay = 0.3 SECONDS spread = 0 - mag_display = TRUE + show_magazine_on_sprite = TRUE empty_indicator = TRUE weapon_weight = WEAPON_MEDIUM w_class = WEIGHT_CLASS_BULKY @@ -25,6 +25,7 @@ recoil_unwielded = 4 wield_slowdown = 0.75 wield_delay = 1 SECONDS + fire_select_icon_state_prefix = "pellet_" /obj/item/gun/ballistic/automatic/powered/gauss/modelh name = "Model H" @@ -37,14 +38,15 @@ cell_type = /obj/item/stock_parts/cell/gun/solgov slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL - fire_delay = 0 //pistol - mag_display = FALSE + fire_delay = 0.6 SECONDS //pistol, but heavy caliber. + show_magazine_on_sprite = FALSE empty_indicator = FALSE manufacturer = MANUFACTURER_SOLARARMORIES - recoil = 1 + recoil = 2 recoil_unwielded = 4 - spread = 3 + spread = 6 spread_unwielded = 12 + fire_select_icon_state_prefix = "slug_" /obj/item/gun/ballistic/automatic/powered/gauss/modelh/suns desc = "A standard-issue pistol exported from the Solarian Confederation. It fires slow flesh-rending ferromagnetic slugs at a high energy cost, however they are ineffective on any armor. It is painted in the colors of SUNS." @@ -62,13 +64,13 @@ fire_sound = 'sound/weapons/gun/gauss/claris.ogg' load_sound = 'sound/weapons/gun/gauss/sniper_reload.ogg' cell_type = /obj/item/stock_parts/cell/gun/solgov - fire_delay = 2 + fire_delay = 0.4 SECONDS bolt_type = BOLT_TYPE_NO_BOLT internal_magazine = TRUE - casing_ejector = FALSE - mag_display = FALSE + show_magazine_on_sprite = FALSE empty_indicator = FALSE manufacturer = MANUFACTURER_SOLARARMORIES + fire_select_icon_state_prefix = "pellet_" /obj/item/gun/ballistic/automatic/powered/gauss/claris/suns desc = "An antiquated Solarian rifle. Chambered in ferromagnetic pellets, just as the founding Solarians intended. Evidently, SUNS' founders echo the sentiment, as it appears to be painted in their colors." @@ -85,17 +87,19 @@ fire_sound = 'sound/weapons/gun/gauss/gar.ogg' load_sound = 'sound/weapons/gun/gauss/rifle_reload.ogg' cell_type = /obj/item/stock_parts/cell/gun/solgov - burst_size = 2 - fire_delay = 1 + burst_size = 1 + + fire_delay = 0.2 SECONDS + actions_types = list() empty_indicator = FALSE manufacturer = MANUFACTURER_SOLARARMORIES - wield_delay = 0.7 SECONDS + gun_firemodes = list(FIREMODE_SEMIAUTO, FIREMODE_FULLAUTO) + default_firemode = FIREMODE_SEMIAUTO -/obj/item/gun/ballistic/automatic/powered/gauss/gar/ComponentInitialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.2 SECONDS) + wield_delay = 0.7 SECONDS + fire_select_icon_state_prefix = "lance_" /obj/item/gun/ballistic/automatic/powered/gauss/gar/suns desc = "A Solarian carbine, unusually modern for its producers. It's just modern enough for SUNS, however, who have painted the weapon in their colors. Launches ferromagnetic lances at alarming speeds." diff --git a/code/modules/projectiles/guns/ballistic/hmg.dm b/code/modules/projectiles/guns/ballistic/hmg.dm index 359a9e13e31e..4e9abd0cd70c 100644 --- a/code/modules/projectiles/guns/ballistic/hmg.dm +++ b/code/modules/projectiles/guns/ballistic/hmg.dm @@ -7,7 +7,10 @@ burst_size = 1 actions_types = list(/datum/action/item_action/deploy_bipod) //this is on hmg, as I need the same mechanics for a future gun. ideally, this would be an attachment, but that's still pending drag_slowdown = 1.5 - fire_delay = 1 + fire_delay = 0.1 SECONDS + + gun_firemodes = list(FIREMODE_FULLAUTO) + default_firemode = FIREMODE_FULLAUTO spread = 4 spread_unwielded = 80 @@ -114,24 +117,26 @@ retract_bipod(user=user) /obj/item/gun/ballistic/automatic/hmg/calculate_recoil(mob/user, recoil_bonus = 0) - var/gunslinger_bonus = 1 + var/gunslinger_bonus = 2 var/total_recoil = recoil_bonus + if(bipod_deployed) total_recoil += deploy_recoil_bonus if(HAS_TRAIT(user, TRAIT_GUNSLINGER)) //gunslinger penalty total_recoil += gunslinger_bonus - total_recoil = clamp(total_recoil,0,INFINITY) - return total_recoil + + return ..(user, total_recoil) /obj/item/gun/ballistic/automatic/hmg/calculate_spread(mob/user, bonus_spread) - var/gunslinger_bonus = 4 + var/gunslinger_bonus = 20 var/total_spread = bonus_spread + if(bipod_deployed) total_spread += deploy_spread_bonus if(HAS_TRAIT(user, TRAIT_GUNSLINGER)) //gunslinger penalty total_spread += gunslinger_bonus - total_spread = clamp(total_spread,0,INFINITY) - return total_spread + + return ..(user, total_spread) /obj/item/gun/ballistic/automatic/hmg/update_icon_state() @@ -155,9 +160,12 @@ mag_type = /obj/item/ammo_box/magazine/mm712x82 can_suppress = FALSE spread = 7 + + fire_delay = 0.1 SECONDS + bolt_type = BOLT_TYPE_OPEN - mag_display = TRUE - mag_display_ammo = TRUE + show_magazine_on_sprite = TRUE + show_magazine_on_sprite_ammo = TRUE tac_reloads = FALSE fire_sound = 'sound/weapons/gun/l6/shot.ogg' rack_sound = 'sound/weapons/gun/l6/l6_rack.ogg' @@ -165,10 +173,6 @@ manufacturer = MANUFACTURER_SCARBOROUGH var/cover_open = FALSE -/obj/item/gun/ballistic/automatic/hmg/l6_saw/ComponentInitialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.1 SECONDS) - /obj/item/gun/ballistic/automatic/hmg/l6_saw/examine(mob/user) . = ..() . += "alt + click to [cover_open ? "close" : "open"] the dust cover." @@ -217,16 +221,17 @@ item_state = "arg" mag_type = /obj/item/ammo_box/magazine/rifle47x33mm spread = 7 + + fire_delay = 0.1 SECONDS + + fire_select_icon_state_prefix = "caseless_" + can_suppress = FALSE can_bayonet = FALSE - mag_display = TRUE + show_magazine_on_sprite = TRUE w_class = WEIGHT_CLASS_BULKY manufacturer = MANUFACTURER_SOLARARMORIES -/obj/item/gun/ballistic/automatic/hmg/solar/ComponentInitialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.1 SECONDS) - /obj/item/gun/ballistic/automatic/hmg/skm_lmg name = "\improper SKM-24u" desc = "What appears to be a standard SKM-24 at first glance is actually a light machine gun conversion, with an extended, heavy barrel and overhauled internals. Its weight, bulk, and robust fire rate make it difficult to handle without using the bipod in a prone position or against appropriate cover such as a table. Chambered in 7.62x40mm CLIP." @@ -242,15 +247,18 @@ eject_sound = 'sound/weapons/gun/rifle/skm_unload.ogg' eject_empty_sound = 'sound/weapons/gun/rifle/skm_unload.ogg' + gun_firemodes = list(FIREMODE_SEMIAUTO, FIREMODE_FULLAUTO) + default_firemode = FIREMODE_SEMIAUTO - mag_display = TRUE - special_mags = TRUE + show_magazine_on_sprite = TRUE + unique_mag_sprites_for_variants = TRUE weapon_weight = WEAPON_MEDIUM w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK manufacturer = MANUFACTURER_IMPORT mag_type = /obj/item/ammo_box/magazine/skm_762_40 + fire_delay = 0.13 SECONDS spread = 7 //you can hipfire, but why? spread_unwielded = 25 @@ -265,7 +273,6 @@ /obj/item/gun/ballistic/automatic/hmg/skm_lmg/ComponentInitialize() . = ..() - AddComponent(/datum/component/automatic_fire, 0.13 SECONDS) //slower than other lmgs but faster than skm and most smgs AddElement(/datum/element/update_icon_updates_onmob) /obj/item/gun/ballistic/automatic/hmg/skm_lmg/extended //spawns with the proper extended magazine, for erts diff --git a/code/modules/projectiles/guns/ballistic/launchers.dm b/code/modules/projectiles/guns/ballistic/launchers.dm index 01644cd6e9bb..5619b039d488 100644 --- a/code/modules/projectiles/guns/ballistic/launchers.dm +++ b/code/modules/projectiles/guns/ballistic/launchers.dm @@ -11,7 +11,11 @@ fire_sound = 'sound/weapons/gun/general/grenade_launch.ogg' w_class = WEIGHT_CLASS_NORMAL bolt_type = BOLT_TYPE_NO_BOLT - fire_delay = 10 + fire_delay = 1 SECONDS + semi_auto = TRUE + has_safety = FALSE + safety = FALSE + gate_offset = 0 /obj/item/gun/ballistic/revolver/grenadelauncher/attackby(obj/item/A, mob/user, params) ..() @@ -35,7 +39,7 @@ fire_sound = 'sound/weapons/gun/general/grenade_launch.ogg' mag_type = /obj/item/ammo_box/magazine/m75 burst_size = 1 - fire_delay = 0 + fire_delay = 0.4 SECONDS actions_types = list() casing_ejector = FALSE @@ -50,7 +54,7 @@ w_class = WEIGHT_CLASS_BULKY can_suppress = FALSE burst_size = 1 - fire_delay = 0 + fire_delay = 0.4 SECONDS casing_ejector = FALSE weapon_weight = WEAPON_HEAVY bolt_type = BOLT_TYPE_NO_BOLT diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm index 11aad5203361..160067b6d250 100644 --- a/code/modules/projectiles/guns/ballistic/pistol.dm +++ b/code/modules/projectiles/guns/ballistic/pistol.dm @@ -5,8 +5,6 @@ w_class = WEIGHT_CLASS_SMALL mag_type = /obj/item/ammo_box/magazine/m10mm can_suppress = TRUE - burst_size = 1 - fire_delay = 0 //spam it as fast as you can actions_types = list() bolt_type = BOLT_TYPE_LOCKING fire_sound = 'sound/weapons/gun/pistol/shot.ogg' @@ -24,12 +22,16 @@ bolt_wording = "slide" weapon_weight = WEAPON_LIGHT pickup_sound = 'sound/items/handling/gun_pickup.ogg' - fire_delay = 1 manufacturer = MANUFACTURER_SCARBOROUGH + recoil = 0.5 // apogee wants bloom, this is a placeholder until then to simulate the same concept. + recoil_unwielded = 3 + recoil_backtime_multiplier = 1 + wield_delay = 0.2 SECONDS - spread = 2 - spread_unwielded = 5 + fire_delay = 0.2 SECONDS + spread = 5 + spread_unwielded = 7 wield_slowdown = 0.15 muzzleflash_iconstate = "muzzle_flash_light" @@ -62,7 +64,6 @@ EMPTY_GUN_HELPER(automatic/pistol) load_empty_sound = 'sound/weapons/gun/pistol/candor_reload.ogg' eject_sound = 'sound/weapons/gun/pistol/candor_unload.ogg' eject_empty_sound = 'sound/weapons/gun/pistol/candor_unload.ogg' - recoil = -2 EMPTY_GUN_HELPER(automatic/pistol/candor) @@ -89,7 +90,7 @@ EMPTY_GUN_HELPER(automatic/pistol/candor/factory) force = 14 mag_type = /obj/item/ammo_box/magazine/m50 can_suppress = FALSE - mag_display = TRUE + show_magazine_on_sprite = TRUE fire_sound = 'sound/weapons/gun/pistol/deagle.ogg' rack_sound = 'sound/weapons/gun/pistol/rack.ogg' lock_back_sound = 'sound/weapons/gun/pistol/slide_lock.ogg' @@ -99,11 +100,13 @@ EMPTY_GUN_HELPER(automatic/pistol/candor/factory) load_empty_sound = 'sound/weapons/gun/pistol/deagle_reload.ogg' eject_sound = 'sound/weapons/gun/pistol/deagle_unload.ogg' eject_empty_sound = 'sound/weapons/gun/pistol/deagle_unload.ogg' - fire_delay = 0.7 SECONDS - recoil = 1 - recoil_unwielded = 2 - spread = 4 - spread_unwielded = 7 + fire_delay = 0.6 SECONDS + recoil = 2 + recoil_unwielded = 5 + recoil_backtime_multiplier = 2 + + spread = 7 + spread_unwielded = 14 /obj/item/gun/ballistic/automatic/pistol/deagle/gold desc = "A gold-plated Desert Eagle folded over a million times by superior Martian gunsmiths. Uses .50 AE ammo." @@ -123,8 +126,11 @@ EMPTY_GUN_HELPER(automatic/pistol/candor/factory) mag_type = /obj/item/ammo_box/magazine/pistolm9mm can_suppress = FALSE burst_size = 3 - fire_delay = 2 - actions_types = list(/datum/action/item_action/toggle_firemode) + burst_delay = 0.1 SECONDS + fire_delay = 0.4 SECONDS + gun_firemodes = list(FIREMODE_SEMIAUTO, FIREMODE_BURST) + default_firemode = FIREMODE_SEMIAUTO + /obj/item/gun/ballistic/automatic/pistol/stickman name = "flat gun" @@ -236,6 +242,8 @@ EMPTY_GUN_HELPER(automatic/pistol/commander/inteq) eject_sound = 'sound/weapons/gun/pistol/mag_release.ogg' eject_empty_sound = 'sound/weapons/gun/pistol/mag_release.ogg' + fire_select_icon_state_prefix = "caseless_" + /obj/item/gun/ballistic/automatic/pistol/solgov/old icon_state = "pistole-c-old" @@ -246,7 +254,7 @@ EMPTY_GUN_HELPER(automatic/pistol/commander/inteq) weapon_weight = WEAPON_LIGHT w_class = WEIGHT_CLASS_SMALL mag_type = /obj/item/ammo_box/magazine/tec9 - mag_display = TRUE + show_magazine_on_sprite = TRUE load_sound = 'sound/weapons/gun/pistol/mag_insert.ogg' load_empty_sound = 'sound/weapons/gun/pistol/mag_insert.ogg' eject_sound = 'sound/weapons/gun/pistol/mag_release.ogg' diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm index 27c3d124906a..f39382e81ea2 100644 --- a/code/modules/projectiles/guns/ballistic/revolver.dm +++ b/code/modules/projectiles/guns/ballistic/revolver.dm @@ -25,7 +25,7 @@ var/spin_delay = 10 var/recent_spin = 0 manufacturer = MANUFACTURER_SCARBOROUGH - fire_delay = 2 + fire_delay = 0.4 SECONDS spread_unwielded = 15 recoil = 0.5 recoil_unwielded = 2 @@ -35,6 +35,9 @@ dry_fire_text = "snap" wield_slowdown = 0.3 + gun_firemodes = list(FIREMODE_SEMIAUTO) + default_firemode = FIREMODE_SEMIAUTO + safety_wording = "hammer" var/gate_loaded = FALSE //for stupid wild west shit @@ -279,7 +282,8 @@ to_chat(user, "You rack the [bolt_wording] of \the [src].") playsound(src, rack_sound, rack_sound_volume, rack_sound_vary) - chamber_round(TRUE) + if((!safety && !semi_auto) || (!safety && !semi_auto)) + chamber_round(TRUE) SEND_SIGNAL(src, COMSIG_UPDATE_AMMO_HUD) update_appearance() @@ -411,11 +415,14 @@ var/fan = FALSE if(HAS_TRAIT(user, TRAIT_GUNSLINGER) && !semi_auto && !wielded && loc == user && !safety && !user.get_inactive_held_item()) fan = TRUE + fire_delay = 0 SECONDS . = ..() + fire_delay = src::fire_delay if(fan) rack() to_chat(user, "You fan the [bolt_wording] of \the [src]!") - user.changeNext_move(CLICK_CD_RAPID) + balloon_alert_to_viewers("fans revolver!") + fire_delay = 0 SECONDS /obj/item/gun/ballistic/revolver/shoot_live_shot(mob/living/user, pointblank, atom/pbtarget, message) . = ..() @@ -434,18 +441,22 @@ /obj/item/gun/ballistic/revolver/calculate_recoil(mob/user, recoil_bonus = 0) var/gunslinger_bonus = -1 var/total_recoil = recoil_bonus + if(HAS_TRAIT(user, TRAIT_GUNSLINGER)) //gunslinger bonus total_recoil += gunslinger_bonus total_recoil = clamp(total_recoil,0,INFINITY) - return total_recoil + + return ..(user, total_recoil) /obj/item/gun/ballistic/revolver/calculate_spread(mob/user, bonus_spread) - var/gunslinger_bonus = -4 + var/gunslinger_bonus = -8 var/total_spread = bonus_spread + if(HAS_TRAIT(user, TRAIT_GUNSLINGER)) //gunslinger bonus total_spread += gunslinger_bonus total_spread = clamp(total_spread,0,INFINITY) - return total_spread + + return ..(user, total_spread) /obj/item/gun/ballistic/revolver/pickup(mob/user) . = ..() @@ -454,12 +465,6 @@ /obj/item/gun/ballistic/revolver/proc/tryflip(mob/living/user) if(HAS_TRAIT(user, TRAIT_GUNSLINGER)) if(COOLDOWN_FINISHED(src, flip_cooldown)) - if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(40)) - to_chat(user, "While trying to flip the [src] you pull the trigger and accidently shoot yourself!") - var/flip_mistake = pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG, BODY_ZONE_HEAD, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_CHEST) - process_fire(user, user, FALSE, flip_mistake) - user.dropItemToGround(src, TRUE) - return COOLDOWN_START(src, flip_cooldown, 0.3 SECONDS) SpinAnimation(5,1) user.visible_message("[user] spins the [src] around their finger by the trigger. That’s pretty badass.") @@ -486,14 +491,15 @@ manufacturer = MANUFACTURER_HUNTERSPRIDE recoil = 0 //weaker than normal revolver, no recoil + fire_delay = 0.2 SECONDS EMPTY_GUN_HELPER(revolver/detective) /obj/item/gun/ballistic/revolver/detective/ComponentInitialize() . = ..() AddComponent(/datum/component/ammo_hud/revolver) //note that the hud at the moment only supports 6 round revolvers, 7 or 5 isn't supported rn - -/obj/item/gun/ballistic/revolver/detective/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) +//...why...? +/obj/item/gun/ballistic/revolver/detective/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0, burst_firing = FALSE, spread_override = 0, iteration = 0) if(magazine.caliber != initial(magazine.caliber)) if(prob(100 - (magazine.ammo_count() * 5))) //minimum probability of 70, maximum of 95 playsound(user, fire_sound, fire_sound_volume, vary_fire_sound) @@ -580,19 +586,22 @@ EMPTY_GUN_HELPER(revolver/detective) fire_sound = 'sound/weapons/gun/revolver/shot_hunting.ogg' manufacturer = MANUFACTURER_HUNTERSPRIDE gate_loaded = TRUE + fire_delay = 0.6 SECONDS wield_slowdown = 0.5 - spread_unwielded = 5 - spread = 2 + spread_unwielded = 20 + spread = 6 recoil = 2 recoil_unwielded = 4 -// A gun to play Russian Roulette! -// You can spin the chamber to randomize the position of the bullet. - /obj/item/gun/ballistic/revolver/ashhand/ComponentInitialize() . = ..() AddComponent(/datum/component/ammo_hud/revolver) +// A gun to play Russian Roulette! +// You can spin the chamber to randomize the position of the bullet. + +//TODO: this is stupid, but used in ONE fucking ruin. Remember to remove when you aren't afraid to do a ton of path changes. + /obj/item/gun/ballistic/revolver/russian name = "\improper Russian revolver" desc = "A Solarian revolver for particularly lethal drinking games. It has a mechanism requiring you to spin the chamber before each trigger pull. Uses .357 ammo." @@ -691,7 +700,7 @@ EMPTY_GUN_HELPER(revolver/detective) spread = 20 manufacturer = MANUFACTURER_HUNTERSPRIDE spread_unwielded = 50 - fire_delay = 0 + fire_delay = 0 SECONDS gate_offset = 4 semi_auto = TRUE safety_wording = "safety" @@ -717,6 +726,7 @@ EMPTY_GUN_HELPER(revolver/detective) ) recoil = 0 //weaker than normal revolver, no recoil + spread_unwielded = 10 /obj/item/gun/ballistic/revolver/shadow/ComponentInitialize() . = ..() diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm index 24cf3323048a..bdeb7a4811f3 100644 --- a/code/modules/projectiles/guns/ballistic/rifle.dm +++ b/code/modules/projectiles/guns/ballistic/rifle.dm @@ -22,8 +22,11 @@ weapon_weight = WEAPON_MEDIUM pickup_sound = 'sound/items/handling/rifle_pickup.ogg' + gun_firemodes = list(FIREMODE_SEMIAUTO) + default_firemode = FIREMODE_SEMIAUTO + spread = -1 - spread_unwielded = 12 + spread_unwielded = 48 recoil = -3 recoil_unwielded = 4 wield_slowdown = 1 @@ -89,18 +92,18 @@ /obj/item/gun/ballistic/rifle/illestren/sawoff(mob/user) . = ..() if(.) - spread = 36 - spread_unwielded = 108 + spread = 24 + spread_unwielded = 30 can_bayonet = FALSE item_state = "illestren_sawn" mob_overlay_state = item_state weapon_weight = WEAPON_MEDIUM //you can fire it onehanded, makes it worse than worse than useless onehanded, but you can /obj/item/gun/ballistic/rifle/illestren/blow_up(mob/user) - . = 0 + . = FALSE if(chambered && chambered.BB) process_fire(user, user, FALSE) - . = 1 + . = TRUE /obj/item/gun/ballistic/rifle/illestren/factory desc = "A sturdy and conventional bolt-action rifle. One of Hunter's Pride's most successful firearms, this example has been kept in excellent shape and may as well be fresh out of the workshop. Chambered in 8x50mmR." diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index 4b3d8c7687f0..90e13c82ee06 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -19,10 +19,14 @@ cartridge_wording = "shell" tac_reloads = FALSE pickup_sound = 'sound/items/handling/shotgun_pickup.ogg' - fire_delay = 7 + fire_delay = 0.7 SECONDS pb_knockback = 2 manufacturer = MANUFACTURER_HUNTERSPRIDE + gun_firemodes = list(FIREMODE_SEMIAUTO) + default_firemode = FIREMODE_SEMIAUTO + fire_select_icon_state_prefix = "sg_" + wield_slowdown = 0.45 wield_delay = 0.8 SECONDS @@ -48,7 +52,8 @@ if(HAS_TRAIT(user, TRAIT_GUNSLINGER)) //gunslinger bonus total_recoil += gunslinger_bonus total_recoil = clamp(total_recoil,0,INFINITY) - return total_recoil + + return ..(user, total_recoil) // BRIMSTONE SHOTGUN // @@ -61,18 +66,17 @@ icon_state = "brimstone" item_state = "brimstone" + gun_firemodes = list(FIREMODE_FULLAUTO) + default_firemode = FIREMODE_FULLAUTO + mag_type = /obj/item/ammo_box/magazine/internal/shot/lethal manufacturer = MANUFACTURER_HUNTERSPRIDE - fire_delay = 1 - rack_delay = 2 + fire_delay = 0.05 SECONDS //slamfire + rack_delay = 0.2 SECONDS can_be_sawn_off = TRUE -/obj/item/gun/ballistic/shotgun/brimstone/ComponentInitialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.1 SECONDS) - /obj/item/gun/ballistic/shotgun/brimstone/sawoff(mob/user) . = ..() if(.) @@ -99,7 +103,7 @@ sawn_desc = "Come with me if you want to live." can_be_sawn_off = TRUE rack_sound = 'sound/weapons/gun/shotgun/rack_alt.ogg' - fire_delay = 1 + fire_delay = 0.1 SECONDS /obj/item/gun/ballistic/shotgun/hellfire/sawoff(mob/user) . = ..() @@ -140,7 +144,7 @@ desc = "A semi-automatic shotgun with tactical furniture and six-shell capacity underneath." icon_state = "cshotgun" item_state = "shotgun_combat" - fire_delay = 5 + fire_delay = 0.5 SECONDS mag_type = /obj/item/ammo_box/magazine/internal/shot/com w_class = WEIGHT_CLASS_HUGE @@ -197,7 +201,7 @@ // Bulldog shotgun // -/obj/item/gun/ballistic/shotgun/bulldog +/obj/item/gun/ballistic/shotgun/bulldog //TODO: REPATH TO LIKE /obj/item/gun/ballistic/shotgun/automatic/bulldog name = "\improper Bulldog Shotgun" desc = "A semi-automatic, magazine-fed shotgun designed for combat in tight quarters, manufactured by Scarborough Arms. A historical favorite of various Syndicate factions, especially the Gorlex Marauders." icon = 'icons/obj/guns/48x32guns.dmi' @@ -211,13 +215,12 @@ mag_type = /obj/item/ammo_box/magazine/m12g can_suppress = FALSE burst_size = 1 - fire_delay = 0 + fire_delay = 0.4 SECONDS // this NEEDS the old delay. fire_sound = 'sound/weapons/gun/shotgun/bulldog.ogg' - actions_types = list() - mag_display = TRUE + show_magazine_on_sprite = TRUE empty_indicator = TRUE empty_alarm = TRUE - special_mags = TRUE + unique_mag_sprites_for_variants = TRUE semi_auto = TRUE internal_magazine = FALSE casing_ejector = TRUE @@ -225,6 +228,13 @@ pickup_sound = 'sound/items/handling/rifle_pickup.ogg' manufacturer = MANUFACTURER_SCARBOROUGH + load_sound = 'sound/weapons/gun/rifle/ar_reload.ogg' + load_empty_sound = 'sound/weapons/gun/rifle/ar_reload.ogg' + eject_sound = 'sound/weapons/gun/rifle/ar_unload.ogg' + eject_empty_sound = 'sound/weapons/gun/rifle/ar_unload.ogg' + + rack_sound = 'sound/weapons/gun/rifle/ar_cock.ogg' + spread = 4 spread_unwielded = 16 recoil = 1 @@ -259,8 +269,10 @@ EMPTY_GUN_HELPER(shotgun/bulldog/inteq) item_state = "cm15" empty_alarm = FALSE empty_indicator = FALSE - special_mags = FALSE + unique_mag_sprites_for_variants = FALSE manufacturer = MANUFACTURER_MINUTEMAN + fire_select_icon_state_prefix = "clip_" + adjust_fire_select_icon_state_on_safety = TRUE ///////////////////////////// // DOUBLE BARRELED SHOTGUN // @@ -548,7 +560,7 @@ EMPTY_GUN_HELPER(shotgun/bulldog/inteq) attack_verb = list("bludgeoned", "smashed") mag_type = /obj/item/ammo_box/magazine/internal/shot/sex burst_size = 6 - fire_delay = 0.8 + fire_delay = 0.08 SECONDS //?? very weird number pb_knockback = 12 unique_reskin = null recoil = 10 @@ -581,7 +593,7 @@ EMPTY_GUN_HELPER(shotgun/bulldog/inteq) base_icon_state = "shotgun_e" icon_state = "shotgun_e" burst_size = 100 - fire_delay = 0.1 + fire_delay = 0.01 SECONDS pb_knockback = 40 recoil = 100 recoil_unwielded = 200 @@ -743,10 +755,10 @@ EMPTY_GUN_HELPER(shotgun/bulldog/inteq) wield_slowdown = 0.5 wield_delay = 0.5 SECONDS - spread_unwielded = 5 //mostly the hunting revolver stats - spread = 2 + spread_unwielded = 20 //mostly the hunting revolver stats + spread = 6 recoil = 2 - recoil_unwielded = 3 + recoil_unwielded = 4 /obj/item/gun/ballistic/shotgun/doublebarrel/beacon/factory desc = "A single-shot break-action rifle made by Hunter's Pride and sold to civilian hunters. This example has been kept in excellent shape and may as well be fresh out of the workshop. Uses .45-70 ammo." diff --git a/code/modules/projectiles/guns/ballistic/smg.dm b/code/modules/projectiles/guns/ballistic/smg.dm index a6739a79776e..5e8896ab10ec 100644 --- a/code/modules/projectiles/guns/ballistic/smg.dm +++ b/code/modules/projectiles/guns/ballistic/smg.dm @@ -1,14 +1,18 @@ /obj/item/gun/ballistic/automatic/smg - burst_size = 1 + burst_size = 2 actions_types = list() - fire_delay = 1 - spread = 4 + fire_delay = 0.13 SECONDS + + spread = 6 spread_unwielded = 10 wield_slowdown = 0.35 recoil_unwielded = 4 w_class = WEIGHT_CLASS_BULKY - wield_delay = 0.4 SECONDS + gun_firemodes = list(FIREMODE_SEMIAUTO, FIREMODE_FULLAUTO) + default_firemode = FIREMODE_SEMIAUTO + + wield_delay = 0.5 SECONDS load_sound = 'sound/weapons/gun/smg/smg_reload.ogg' load_empty_sound = 'sound/weapons/gun/smg/smg_reload.ogg' @@ -16,20 +20,24 @@ eject_empty_sound = 'sound/weapons/gun/smg/smg_unload.ogg' /obj/item/gun/ballistic/automatic/smg/calculate_recoil(mob/user, recoil_bonus = 0) - var/gunslinger_bonus = 1 - var/total_recoil = recoil_bonus + var/gunslinger_bonus = 2 + var/total_recoil + if(.) + total_recoil += . if(HAS_TRAIT(user, TRAIT_GUNSLINGER)) //gunslinger penalty total_recoil += gunslinger_bonus - total_recoil = clamp(total_recoil,0,INFINITY) - return total_recoil + . = total_recoil + return ..() /obj/item/gun/ballistic/automatic/smg/calculate_spread(mob/user, bonus_spread) - var/gunslinger_bonus = 4 + var/gunslinger_bonus = 16 var/total_spread = bonus_spread + if(.) + total_spread += . if(HAS_TRAIT(user, TRAIT_GUNSLINGER)) //gunslinger penalty total_spread += gunslinger_bonus - total_spread = clamp(total_spread,0,INFINITY) - return total_spread + . = total_spread + return ..() /obj/item/gun/ballistic/automatic/smg/proto name = "\improper Nanotrasen Saber SMG" @@ -37,14 +45,11 @@ icon_state = "saber" actions_types = list() mag_type = /obj/item/ammo_box/magazine/smgm9mm + bolt_type = BOLT_TYPE_LOCKING - mag_display = TRUE + show_magazine_on_sprite = TRUE manufacturer = MANUFACTURER_NANOTRASEN_OLD -/obj/item/gun/ballistic/automatic/smg/proto/ComponentInitialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.13 SECONDS) - /obj/item/gun/ballistic/automatic/smg/c20r name = "\improper C-20r SMG" desc = "A bullpup .45 SMG designated 'C-20r.' Its buttstamp reads 'Scarborough Arms - Per falcis, per pravitas.'" @@ -55,17 +60,13 @@ can_suppress = FALSE knife_x_offset = 26 knife_y_offset = 12 - mag_display = TRUE - mag_display_ammo = TRUE + show_magazine_on_sprite = TRUE + show_magazine_on_sprite_ammo = TRUE empty_indicator = TRUE manufacturer = MANUFACTURER_SCARBOROUGH EMPTY_GUN_HELPER(automatic/smg/c20r) -/obj/item/gun/ballistic/automatic/smg/c20r/ComponentInitialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.13 SECONDS) - /obj/item/gun/ballistic/automatic/smg/c20r/Initialize() . = ..() update_appearance() @@ -89,28 +90,23 @@ EMPTY_GUN_HELPER(automatic/smg/c20r) item_state = "arg" mag_type = /obj/item/ammo_box/magazine/wt550m9 can_suppress = FALSE - burst_size = 1 actions_types = list() can_bayonet = TRUE knife_x_offset = 25 knife_y_offset = 12 - mag_display = TRUE - mag_display_ammo = TRUE + show_magazine_on_sprite = TRUE + show_magazine_on_sprite_ammo = TRUE empty_indicator = TRUE manufacturer = MANUFACTURER_NANOTRASEN_OLD fire_sound = 'sound/weapons/gun/smg/smg_heavy.ogg' -/obj/item/gun/ballistic/automatic/smg/wt550/ComponentInitialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.13 SECONDS) - /obj/item/gun/ballistic/automatic/smg/mini_uzi name = "\improper Type U3 Uzi" desc = "A lightweight submachine gun, for when you really want someone dead. Uses 9mm rounds." icon_state = "uzi" mag_type = /obj/item/ammo_box/magazine/uzim9mm bolt_type = BOLT_TYPE_OPEN - mag_display = TRUE + show_magazine_on_sprite = TRUE fire_sound = 'sound/weapons/gun/smg/uzi.ogg' rack_sound = 'sound/weapons/gun/smg/uzi_cocked.ogg' @@ -124,10 +120,7 @@ EMPTY_GUN_HELPER(automatic/smg/c20r) spread_unwielded = 8 wield_slowdown = 0.25 wield_delay = 0.2 SECONDS - -/obj/item/gun/ballistic/automatic/smg/mini_uzi/ComponentInitialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.1 SECONDS) + fire_delay = 0.1 SECONDS /obj/item/gun/ballistic/automatic/smg/vector name = "\improper Vector carbine" @@ -136,14 +129,10 @@ EMPTY_GUN_HELPER(automatic/smg/c20r) item_state = "vector" mag_type = /obj/item/ammo_box/magazine/smgm9mm //you guys remember when the autorifle was chambered in 9mm bolt_type = BOLT_TYPE_LOCKING - mag_display = TRUE + show_magazine_on_sprite = TRUE weapon_weight = WEAPON_LIGHT fire_sound = 'sound/weapons/gun/smg/vector_fire.ogg' -/obj/item/gun/ballistic/automatic/smg/vector/ComponentInitialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.13 SECONDS) - /obj/item/gun/ballistic/automatic/smg/m90 name = "\improper M-90gl Carbine" desc = "A three-round burst 5.56 toploading carbine, designated 'M-90gl'. Has an attached underbarrel grenade launcher which can be toggled on and off." @@ -151,67 +140,76 @@ EMPTY_GUN_HELPER(automatic/smg/c20r) item_state = "m90" mag_type = /obj/item/ammo_box/magazine/m556 can_suppress = FALSE - actions_types = list(/datum/action/item_action/toggle_firemode) - var/obj/item/gun/ballistic/revolver/grenadelauncher/underbarrel - burst_size = 3 - fire_delay = 2 - mag_display = TRUE + gun_firenames = list(FIREMODE_SEMIAUTO = "single", FIREMODE_BURST = "burst fire", FIREMODE_FULLAUTO = "full auto", FIREMODE_OTHER = "underbarrel grenade launcher") + gun_firemodes = list(FIREMODE_SEMIAUTO, FIREMODE_BURST, FIREMODE_OTHER) + default_firemode = FIREMODE_SEMIAUTO + var/obj/item/gun/ballistic/revolver/grenadelauncher/secondary + show_magazine_on_sprite = TRUE empty_indicator = TRUE fire_sound = 'sound/weapons/gun/rifle/shot_alt.ogg' manufacturer = MANUFACTURER_SCARBOROUGH + burst_size = 3 + burst_delay = 0.1 SECONDS + fire_delay = 0.2 SECONDS spread = 1 spread_unwielded = 8 wield_slowdown = 0.4 /obj/item/gun/ballistic/automatic/smg/m90/Initialize() . = ..() - underbarrel = new /obj/item/gun/ballistic/revolver/grenadelauncher(src) + secondary = new /obj/item/gun/ballistic/revolver/grenadelauncher(src) + RegisterSignal(secondary, COMSIG_ATOM_UPDATE_ICON, PROC_REF(secondary_update_icon)) update_appearance() +/obj/item/gun/ballistic/automatic/smg/m90/process_other(atom/target, mob/living/user, message = TRUE, flag, params = null, zone_override = "", bonus_spread = 0) + return secondary.pre_fire(target, user, message, params, zone_override, bonus_spread) + +/obj/item/gun/ballistic/automatic/smg/m90/can_shoot() + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode != FIREMODE_OTHER) + return ..() + return secondary.can_shoot() + /obj/item/gun/ballistic/automatic/smg/m90/afterattack(atom/target, mob/living/user, flag, params) - if(select == 2) - underbarrel.afterattack(target, user, flag, params) - else + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode != FIREMODE_OTHER) return ..() + return secondary.afterattack(target, user, flag, params) + +/obj/item/gun/ballistic/automatic/smg/m90/attackby(obj/item/attack_obj, mob/user, params) + if(istype(attack_obj, secondary.magazine.ammo_type)) + secondary.unique_action() + return secondary.attackby(attack_obj, user, params) + return ..() -/obj/item/gun/ballistic/automatic/smg/m90/attackby(obj/item/A, mob/user, params) - if(istype(A, /obj/item/ammo_casing)) - if(istype(A, underbarrel.magazine.ammo_type)) - underbarrel.attack_self() - underbarrel.attackby(A, user, params) - else - ..() -/obj/item/gun/ballistic/automatic/smg/m90/update_overlays() +/obj/item/gun/ballistic/automatic/smg/m90/can_shoot() + var/current_firemode = gun_firemodes[firemode_index] + if(current_firemode != FIREMODE_OTHER) + return ..() + return secondary.can_shoot() + +/obj/item/gun/ballistic/automatic/smg/m90/on_wield(obj/item/source, mob/user) + wielded = TRUE + secondary.wielded = TRUE + INVOKE_ASYNC(src, .proc.do_wield, user) + +/obj/item/gun/ballistic/automatic/smg/m90/do_wield(mob/user) . = ..() - switch(select) - if(0) - . += "[initial(icon_state)]_semi" - if(1) - . += "[initial(icon_state)]_burst" - if(2) - . += "[initial(icon_state)]_gren" - -/obj/item/gun/ballistic/automatic/smg/m90/burst_select() - var/mob/living/carbon/human/user = usr - switch(select) - if(0) - select = 1 - burst_size = initial(burst_size) - fire_delay = initial(fire_delay) - to_chat(user, "You switch to [burst_size]-rnd burst.") - if(1) - select = 2 - to_chat(user, "You switch to grenades.") - if(2) - select = 0 - burst_size = 1 - fire_delay = 0 - to_chat(user, "You switch to semi-auto.") - playsound(user, 'sound/weapons/gun/general/selector.ogg', 100, TRUE) + secondary.wielded_fully = wielded_fully + +/// triggered on unwield of two handed item +/obj/item/gun/ballistic/automatic/smg/m90/on_unwield(obj/item/source, mob/user) + . = ..() + secondary.wielded_fully = FALSE + secondary.wielded = FALSE + + +/obj/item/gun/ballistic/automatic/smg/m90/proc/secondary_update_icon() update_appearance() - return + SEND_SIGNAL(src, COMSIG_UPDATE_AMMO_HUD) + /obj/item/gun/ballistic/automatic/smg/firestorm //weapon designed by Apogee-dev name = "HP Firestorm" @@ -221,20 +219,18 @@ EMPTY_GUN_HELPER(automatic/smg/c20r) item_state = "firestorm" mag_type = /obj/item/ammo_box/magazine/c45_firestorm_mag can_suppress = FALSE - special_mags = TRUE + unique_mag_sprites_for_variants = TRUE burst_size = 1 actions_types = list() - fire_delay = 1 + fire_delay = 0.13 SECONDS + bolt_type = BOLT_TYPE_OPEN rack_sound = 'sound/weapons/gun/smg/uzi_cocked.ogg' fire_sound = 'sound/weapons/gun/smg/firestorm.ogg' + manufacturer = MANUFACTURER_HUNTERSPRIDE wield_slowdown = 0.4 -/obj/item/gun/ballistic/automatic/smg/firestorm/Initialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.13 SECONDS) - /obj/item/gun/ballistic/automatic/smg/firestorm/pan //spawns with pan magazine, can take sticks instead of just drums, not sure where this would be used, maybe erts? spawnwithmagazine = FALSE @@ -253,11 +249,10 @@ EMPTY_GUN_HELPER(automatic/smg/c20r) fire_sound = 'sound/weapons/gun/smg/smg_heavy.ogg' manufacturer = MANUFACTURER_MINUTEMAN -EMPTY_GUN_HELPER(automatic/smg/cm5) + fire_select_icon_state_prefix = "clip_" + adjust_fire_select_icon_state_on_safety = TRUE -/obj/item/gun/ballistic/automatic/smg/cm5/ComponentInitialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.13 SECONDS) +EMPTY_GUN_HELPER(automatic/smg/cm5) /obj/item/gun/ballistic/automatic/smg/cm5/compact name = "\improper CM-5c" @@ -266,15 +261,13 @@ EMPTY_GUN_HELPER(automatic/smg/cm5) spread = 25 spread_unwielded = 40 + fire_delay = 0.08 SECONDS + recoil = 1 recoil_unwielded = 2 wield_delay = 0.2 SECONDS wield_slowdown = 0.15 -/obj/item/gun/ballistic/automatic/smg/cm5/compact/ComponentInitialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.8 SECONDS) - /obj/item/gun/ballistic/automatic/smg/skm_carbine name = "\improper SKM-24v" desc = "The SKM-24v was a carbine modification of the SKM-24 during the Frontiersmen War. This, however, is just a shoddy imitation of that carbine, effectively an SKM-24 with a sawed down barrel and a folding wire stock. Can be fired with the stock folded, though accuracy suffers. Chambered in 4.6x30mm." @@ -322,7 +315,6 @@ EMPTY_GUN_HELPER(automatic/smg/cm5) /obj/item/gun/ballistic/automatic/smg/skm_carbine/ComponentInitialize() . = ..() - AddComponent(/datum/component/automatic_fire, 0.13 SECONDS) AddElement(/datum/element/update_icon_updates_onmob) /datum/action/item_action/fold_stock @@ -356,26 +348,19 @@ EMPTY_GUN_HELPER(automatic/smg/cm5) /obj/item/gun/ballistic/automatic/smg/skm_carbine/calculate_recoil(mob/user, recoil_bonus = 0) - var/gunslinger_bonus = 1 var/total_recoil = recoil_bonus if(!stock_folded) total_recoil += stock_recoil_bonus - if(HAS_TRAIT(user, TRAIT_GUNSLINGER)) //gunslinger penalty - total_recoil += gunslinger_bonus - total_recoil = clamp(total_recoil,0,INFINITY) - return total_recoil + return ..(user, total_recoil) /obj/item/gun/ballistic/automatic/smg/skm_carbine/calculate_spread(mob/user, bonus_spread) - var/gunslinger_bonus = 4 var/total_spread = bonus_spread + if(!stock_folded) total_spread += stock_spread_bonus - if(HAS_TRAIT(user, TRAIT_GUNSLINGER)) //gunslinger penalty - total_spread += gunslinger_bonus - total_spread = clamp(total_spread,0,INFINITY) - return total_spread + return ..(user, total_spread) /obj/item/gun/ballistic/automatic/smg/skm_carbine/update_icon_state() . = ..() @@ -418,8 +403,3 @@ EMPTY_GUN_HELPER(automatic/smg/cm5) unfolded_slowdown = 0.35 unfolded_wield_delay = 0.4 SECONDS - - -/obj/item/gun/ballistic/automatic/smg/skm_carbine/inteq/ComponentInitialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.13 SECONDS) diff --git a/code/modules/projectiles/guns/ballistic/toy.dm b/code/modules/projectiles/guns/ballistic/toy.dm index 5f62b8c7ca78..796a62dd9427 100644 --- a/code/modules/projectiles/guns/ballistic/toy.dm +++ b/code/modules/projectiles/guns/ballistic/toy.dm @@ -29,7 +29,7 @@ mag_type = /obj/item/ammo_box/magazine/toy/pistol fire_sound = 'sound/items/syringeproj.ogg' burst_size = 1 - fire_delay = 0 + fire_delay = 0.2 SECONDS actions_types = list() recoil = -10 //its a toy... recoil_unwielded = -10 diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 705789b3484a..d06ad71d206d 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -10,6 +10,11 @@ has_safety = TRUE safety = TRUE + gun_firemodes = list(FIREMODE_SEMIAUTO) + default_firemode = FIREMODE_SEMIAUTO + + fire_select_icon_state_prefix = "laser_" + var/obj/item/stock_parts/cell/gun/cell //What type of power cell this uses var/cell_type = /obj/item/stock_parts/cell/gun var/modifystate = 0 @@ -217,11 +222,6 @@ process_chamber() // If the gun was drained and then recharged, load a new shot. return ..() -/obj/item/gun/energy/process_burst(mob/living/user, atom/target, message = TRUE, params = null, zone_override="", sprd = 0, randomized_gun_spread = 0, randomized_bonus_spread = 0, rand_spr = 0, iteration = 0) - if(!chambered && can_shoot()) - process_chamber() // Ditto. - return ..() - /obj/item/gun/energy/proc/select_fire(mob/living/user) select++ if (select > ammo_type.len) diff --git a/code/modules/projectiles/guns/energy/energy_gun.dm b/code/modules/projectiles/guns/energy/energy_gun.dm index f2c504f07f84..f1188f76701f 100644 --- a/code/modules/projectiles/guns/energy/energy_gun.dm +++ b/code/modules/projectiles/guns/energy/energy_gun.dm @@ -52,14 +52,15 @@ w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK + gun_firemodes = list(FIREMODE_SEMIAUTO, FIREMODE_FULLAUTO) + default_firemode = FIREMODE_SEMIAUTO + + fire_delay = 0.2 SECONDS + wield_delay = 0.7 SECONDS wield_slowdown = 0.6 spread_unwielded = 20 -/obj/item/gun/energy/e_gun/hades/Initialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.2 SECONDS) - /obj/item/gun/energy/e_gun/old name = "prototype energy gun" desc = "NT-P:01 Prototype Energy Gun. Early stage development of a unique laser rifle that has a multifaceted energy lens, allowing the gun to alter the form of projectile it fires on command. The project was a dud, and Nanotrasen later acquired Sharplite to suit its laser weapon needs." @@ -224,9 +225,10 @@ charge_sections = 3 weapon_weight = WEAPON_LIGHT -/obj/item/gun/energy/e_gun/smg/Initialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.13 SECONDS) + fire_delay = 0.13 SECONDS + + gun_firemodes = list(FIREMODE_SEMIAUTO, FIREMODE_FULLAUTO) + default_firemode = FIREMODE_SEMIAUTO /obj/item/gun/energy/e_gun/iot name = "\improper E-SG 500 Second Edition" diff --git a/code/modules/projectiles/guns/energy/laser_gatling.dm b/code/modules/projectiles/guns/energy/laser_gatling.dm index b21e176b92e8..22e6e57d8817 100644 --- a/code/modules/projectiles/guns/energy/laser_gatling.dm +++ b/code/modules/projectiles/guns/energy/laser_gatling.dm @@ -105,6 +105,12 @@ icon_state = "minigun_spin" item_state = "minigun" slowdown = 1 + + fire_delay = 0.1 SECONDS + + gun_firemodes = list(FIREMODE_FULLAUTO) + default_firemode = FIREMODE_FULLAUTO + slot_flags = null w_class = WEIGHT_CLASS_HUGE custom_materials = null @@ -121,7 +127,6 @@ ammo_pack = loc AddElement(/datum/element/update_icon_blocker) - AddComponent(/datum/component/automatic_fire, 0.15 SECONDS) return ..() /obj/item/gun/energy/minigun/Destroy() diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index d84655fb5813..73d9104833fb 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -277,10 +277,14 @@ can_charge = FALSE use_cyborg_cell = TRUE + fire_delay = 0.3 SECONDS + + gun_firemodes = list(FIREMODE_FULLAUTO) + default_firemode = FIREMODE_FULLAUTO + /obj/item/gun/energy/printer/ComponentInitialize() . = ..() AddElement(/datum/element/update_icon_blocker) - AddComponent(/datum/component/automatic_fire, 0.3 SECONDS) /obj/item/gun/energy/printer/emp_act() return @@ -391,9 +395,9 @@ shaded_charge = TRUE weapon_weight = WEAPON_HEAVY -/obj/item/gun/energy/tesla_cannon/ComponentInitialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.1 SECONDS) + fire_delay = 0.1 SECONDS + gun_firemodes = list(FIREMODE_SEMIAUTO, FIREMODE_FULLAUTO) + default_firemode = FIREMODE_SEMIAUTO /obj/item/gun/energy/buster name = "replica buster cannon" diff --git a/code/modules/projectiles/guns/faction/gezena/energy_gunsword.dm b/code/modules/projectiles/guns/faction/gezena/energy_gunsword.dm index aea05fb8fe51..20a301a1396c 100644 --- a/code/modules/projectiles/guns/faction/gezena/energy_gunsword.dm +++ b/code/modules/projectiles/guns/faction/gezena/energy_gunsword.dm @@ -11,6 +11,8 @@ modifystate = TRUE + fire_delay = 0.16 SECONDS + wield_delay = 0.7 SECONDS wield_slowdown = 0.35 @@ -50,10 +52,6 @@ cell_type = /obj/item/stock_parts/cell/gun/pgf ammo_type = list(/obj/item/ammo_casing/energy/pgf , /obj/item/ammo_casing/energy/disabler/hitscan) -/obj/item/gun/energy/kalix/pgf/ComponentInitialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.16 SECONDS) - /obj/projectile/beam/hitscan/kalix/pgf name = "concentrated energy" tracer_type = /obj/effect/projectile/tracer/pgf @@ -105,6 +103,11 @@ modifystate = FALSE + gun_firemodes = list(FIREMODE_SEMIAUTO, FIREMODE_FULLAUTO) + default_firemode = FIREMODE_SEMIAUTO + + fire_delay = 0.2 SECONDS + wield_delay = 0.7 SECONDS wield_slowdown = 0.6 @@ -113,10 +116,6 @@ ammo_type = list(/obj/item/ammo_casing/energy/pgf/assault, /obj/item/ammo_casing/energy/pgf/sniper) -/obj/item/gun/energy/kalix/pgf/heavy/ComponentInitialize() - . = ..() - AddComponent(/datum/component/automatic_fire, 0.2 SECONDS) - /obj/item/ammo_casing/energy/pgf/assault select_name = "AR" projectile_type = /obj/projectile/beam/hitscan/kalix/pgf/assault diff --git a/code/modules/projectiles/guns/gunhud.dm b/code/modules/projectiles/guns/gunhud.dm index 9d1a40db8bb6..3dad98f54219 100644 --- a/code/modules/projectiles/guns/gunhud.dm +++ b/code/modules/projectiles/guns/gunhud.dm @@ -18,9 +18,6 @@ // Ammo counter #define ui_ammocounter "EAST-1:28,CENTER+1:25" -///The gun needs to update the gun hud! -#define COMSIG_UPDATE_AMMO_HUD "update_ammo_hud" - /datum/hud var/atom/movable/screen/ammo_counter @@ -233,6 +230,7 @@ /datum/component/ammo_hud/laser/cybersun prefix = "cybersun_" +//please be aware, this only supports 6 round revolvers. It is comically easy to support more or less rounds,like in game there are 7 round and 5 round revolvers, but that requires sprites, and i'm lasy /datum/component/ammo_hud/revolver prefix = "revolver_" @@ -285,3 +283,55 @@ round_images += current_bullet_image hud.update_overlays(round_images) + +/datum/component/ammo_hud/eoehoma + backing_color = "#cb001a" + +/datum/component/ammo_hud/eoehoma/update_hud() + var/obj/item/gun/ballistic/automatic/assault/e40/pew = parent + var/obj/item/gun/energy/laser/e40_laser_secondary/pew_secondary = pew.secondary + hud.maptext = null + hud.icon_state = "[prefix]backing" + + var/indicator + var/rounds = num2text(get_accurate_ammo_count(pew)) + var/oth_o + var/oth_t + var/oth_h + + var/current_firemode = pew.gun_firemodes[pew.firemode_index] + if(current_firemode == FIREMODE_FULLAUTO) + if(!pew.magazine) + hud.set_hud(backing_color, "[prefix]oe", "[prefix]te", "[prefix]he", "[prefix]no_mag") + return + if(!pew.get_ammo()) + hud.set_hud(backing_color, "[prefix]oe", "[prefix]te", "[prefix]he", "[prefix]empty_flash") + return + rounds = num2text(get_accurate_ammo_count(pew)) + indicator = "bullet" + else + if(!pew_secondary.cell) + hud.set_hud(backing_color, "[prefix]oe", "[prefix]te", "[prefix]he", "[prefix]no_mag") + return + if(!get_accurate_laser_count(pew_secondary)) + hud.set_hud(backing_color, "[prefix]oe", "[prefix]te", "[prefix]he", "[prefix]empty_flash_laser") + return + rounds = num2text(get_accurate_laser_count(pew_secondary)) + indicator = "laser" + + + switch(length(rounds)) + if(1) + oth_o = "[prefix]o[rounds[1]]" + if(2) + oth_o = "[prefix]o[rounds[2]]" + oth_t = "[prefix]t[rounds[1]]" + if(3) + oth_o = "[prefix]o[rounds[3]]" + oth_t = "[prefix]t[rounds[2]]" + oth_h = "[prefix]h[rounds[1]]" + else + oth_o = "[prefix]o9" + oth_t = "[prefix]t9" + oth_h = "[prefix]h9" + hud.set_hud(backing_color, oth_o, oth_t, oth_h, indicator) diff --git a/code/modules/projectiles/projectile/bullets/gauss.dm b/code/modules/projectiles/projectile/bullets/gauss.dm index 0955745ed798..6011adb61c88 100644 --- a/code/modules/projectiles/projectile/bullets/gauss.dm +++ b/code/modules/projectiles/projectile/bullets/gauss.dm @@ -5,7 +5,8 @@ icon_state = "gauss-pellet" damage = 25 range = 35 - light_color = COLOR_SOFT_RED + light_system = 2 + light_color = MOVABLE_LIGHT light_range = 3 // Ferromagnetic Lance (GAR AR) diff --git a/code/modules/projectiles/projectile/bullets/rifle.dm b/code/modules/projectiles/projectile/bullets/rifle.dm index ddd3319122c7..f7b963cff94b 100644 --- a/code/modules/projectiles/projectile/bullets/rifle.dm +++ b/code/modules/projectiles/projectile/bullets/rifle.dm @@ -77,5 +77,5 @@ /obj/projectile/bullet/c299 name = ".229 Eoehoma caseless bullet" - damage = 25 - armour_penetration = 20 + damage = 20 + armour_penetration = 10 diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 366fb41790ab..7cf31dc83ca6 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -745,8 +745,8 @@ bone_status = BONE_FLAG_NORMAL /obj/item/bodypart/proc/on_mob_move() - // Dont trigger if it isn't broken or if it has no owner - if(bone_status != BONE_FLAG_BROKEN || !owner) + // Dont trigger if it isn't broken or if it has no owner or is buckled to a rollerbed + if(bone_status != BONE_FLAG_BROKEN || !owner || istype(owner?.buckled, /obj/structure/bed/roller)) return if(prob(5)) diff --git a/html/changelogs/AutoChangeLog-pr-2931.yml b/html/changelogs/AutoChangeLog-pr-2931.yml new file mode 100644 index 000000000000..3ee174b3f911 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2931.yml @@ -0,0 +1,5 @@ +author: Zevotech +changes: + - {rscadd: remapped and renamed ashwalker_shrine into lavaland_surface_buried_shrine} + - {rscadd: Necropolis walls have been renamed to thick stone walls.} +delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3046.yml b/html/changelogs/AutoChangeLog-pr-3046.yml deleted file mode 100644 index 2a6fdd6b1d5e..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3046.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: FalloutFalcon -changes: - - {rscdel: Trophies can no longer be used in crushers} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3061.yml b/html/changelogs/AutoChangeLog-pr-3061.yml new file mode 100644 index 000000000000..cce63207623b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3061.yml @@ -0,0 +1,9 @@ +author: rye-rice +changes: + - {rscadd: Changing firemodes on guns now have new sprites} + - {bugfix: The E-40 now works as intended!} + - {rscadd: The E-40 now has an ammo counter} + - {balance: The P16 shoots slightly faster.} + - {balance: Two E-40s max are obtainable from the black market should it spawn. + Blank market price cap of the E-40 has also increased} +delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3065.yml b/html/changelogs/AutoChangeLog-pr-3065.yml deleted file mode 100644 index 2ce48895bc29..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3065.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: SomeguyManperson -changes: - - {bugfix: The shadow's gunslinger buff now properly provides an AP bonus} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3079.yml b/html/changelogs/AutoChangeLog-pr-3079.yml new file mode 100644 index 000000000000..7bbcaa88eb5a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3079.yml @@ -0,0 +1,4 @@ +author: Sun-Soaked +changes: + - {bugfix: combat knives and their subtypes now once again have sprites.} +delete-after: true diff --git a/html/changelogs/archive/2024-06.yml b/html/changelogs/archive/2024-06.yml index 090ed888b9b0..b6d113723f62 100644 --- a/html/changelogs/archive/2024-06.yml +++ b/html/changelogs/archive/2024-06.yml @@ -108,3 +108,13 @@ rkz, Benjamin(benbot16), Rohesie, Qustinnus, jlsnow301: - refactor: refactored do_afters to use timed_action_flags for unique args - code_imp: centralized do_mob and do_atom into do_after +2024-06-05: + FalloutFalcon: + - rscdel: Trophies can no longer be used in crushers + - bugfix: fixed CODEOWNERS, i hope + SomeguyManperson: + - bugfix: The shadow's gunslinger buff now properly provides an AP bonus + - balance: Rollerbeds stop broken bone damage ticks from occurring while buckled +2024-06-06: + SomeguyManperson: + - bugfix: melee hermits have had their immortal snail deals revoked diff --git a/icons/hud/gun_hud.dmi b/icons/hud/gun_hud.dmi index a24f7f2964f3..d108a6088e8f 100644 Binary files a/icons/hud/gun_hud.dmi and b/icons/hud/gun_hud.dmi differ diff --git a/icons/mob/actions/actions_items.dmi b/icons/mob/actions/actions_items.dmi index c52e55c475a6..9baf5cdde9b3 100644 Binary files a/icons/mob/actions/actions_items.dmi and b/icons/mob/actions/actions_items.dmi differ