diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index fdacf17bccac..3716c76a94b1 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -26,7 +26,6 @@ jobs: run: exit 0 run_linters: - if: ( !contains(github.event.head_commit.message, '[ci skip]') ) name: Run Linters needs: start_gate runs-on: ubuntu-22.04 @@ -130,7 +129,6 @@ jobs: ./DMCompiler_linux-x64/DMCompiler shiptest.dme --suppress-unimplemented --define=CIBUILDING | bash tools/ci/annotate_od.sh compile_all_maps: - if: ( !contains(github.event.head_commit.message, '[ci skip]') ) name: Compile Maps needs: start_gate runs-on: ubuntu-latest @@ -155,7 +153,6 @@ jobs: tools/build/build --ci dm -DCIBUILDING -DCITESTING -DALL_MAPS -DFULL_INIT run_all_tests: - if: ( !contains(github.event.head_commit.message, '[ci skip]') ) name: Integration Tests needs: start_gate strategy: diff --git a/_maps/RandomRuins/BeachRuins/beach_gunsmith.dmm b/_maps/RandomRuins/BeachRuins/beach_gunsmith.dmm index 370b7aa21904..37b2375384e9 100644 --- a/_maps/RandomRuins/BeachRuins/beach_gunsmith.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_gunsmith.dmm @@ -3677,10 +3677,7 @@ /turf/open/floor/concrete/tiles, /area/ruin/beach/gunsmith) "Mb" = ( -/obj/item/gun/energy/plasmacutter{ - pixel_x = -16; - pixel_y = 11 - }, +/obj/item/plasmacutter, /obj/effect/decal/cleanable/oil/slippery, /mob/living/simple_animal/hostile/human/ramzi/civilian{ wander = 0 diff --git a/_maps/RandomRuins/JungleRuins/jungle_bombed_starport.dmm b/_maps/RandomRuins/JungleRuins/jungle_bombed_starport.dmm index 9baa2c9081f8..55633e430790 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_bombed_starport.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_bombed_starport.dmm @@ -3813,7 +3813,7 @@ req_access = list(150,10); populate = 0 }, -/obj/item/gun/energy/plasmacutter, +/obj/item/plasmacutter, /obj/item/clothing/gloves/color/yellow, /obj/item/storage/belt/utility/syndicate, /obj/item/clothing/under/syndicate/gec, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm b/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm index 532ab190c40a..2eaea4034464 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm @@ -1236,7 +1236,7 @@ pixel_x = 6; pixel_y = 5 }, -/obj/item/storage/box/ammo/a357{ +/obj/item/ammo_box/a357{ pixel_y = 6 }, /turf/open/floor/plasteel/dark, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_SPOOKYCRASH.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_SPOOKYCRASH.dmm deleted file mode 100644 index 8af11782c7fd..000000000000 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_SPOOKYCRASH.dmm +++ /dev/null @@ -1,459 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/closed/mineral/random/volcanic, -/area/overmap_encounter/planetoid/cave/explored) -"b" = ( -/obj/effect/decal/cleanable/blood, -/obj/machinery/light/broken/directional/south, -/obj/item/stack/tile/mineral/titanium/blue, -/obj/item/storage/book/bible, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/cave/explored) -"c" = ( -/obj/item/ectoplasm, -/obj/effect/decal/cleanable/blood/drip{ - pixel_x = 11; - pixel_y = -3 - }, -/turf/open/floor/mineral/titanium, -/area/overmap_encounter/planetoid/cave/explored) -"d" = ( -/turf/closed/wall/mineral/titanium, -/area/overmap_encounter/planetoid/cave/explored) -"e" = ( -/obj/effect/decal/cleanable/blood/gibs, -/turf/open/floor/mineral/plastitanium/red, -/area/overmap_encounter/planetoid/cave/explored) -"h" = ( -/obj/item/stack/tile/mineral/plastitanium/red, -/obj/effect/decal/cleanable/blood/drip{ - pixel_y = -3 - }, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/cave/explored) -"j" = ( -/obj/machinery/power/shuttle/engine/electric{ - dir = 1 - }, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/cave/explored) -"k" = ( -/obj/item/stack/tile/mineral/titanium, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/cave/explored) -"l" = ( -/obj/structure/grille/broken, -/obj/effect/decal/cleanable/glass, -/obj/item/shard, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/cave/explored) -"m" = ( -/obj/structure/table, -/obj/item/storage/belt/chameleon, -/obj/item/toy/plush/lizardplushie, -/obj/machinery/light/broken/directional/north, -/obj/structure/window/reinforced/spawner, -/obj/machinery/door/window/brigdoor/westright, -/obj/item/clothing/head/wizard/black, -/obj/item/clothing/suit/wizrobe/black, -/turf/open/floor/mineral/plastitanium/red, -/area/overmap_encounter/planetoid/cave/explored) -"n" = ( -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/glass, -/obj/item/stack/rods, -/obj/item/stack/tile/mineral/titanium/blue, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/cave/explored) -"o" = ( -/obj/item/shard, -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/blood/drip{ - pixel_x = 8; - pixel_y = 1 - }, -/turf/open/floor/mineral/titanium, -/area/overmap_encounter/planetoid/cave/explored) -"q" = ( -/obj/effect/decal/cleanable/blood/drip{ - pixel_x = 13; - pixel_y = 8 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/cave/explored) -"t" = ( -/obj/item/stack/tile/mineral/plastitanium/red, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/cave/explored) -"u" = ( -/obj/structure/window/reinforced/tinted, -/obj/structure/closet/crate{ - name = "emergency supplies" - }, -/obj/item/pickaxe/emergency, -/obj/item/storage/firstaid/medical, -/obj/item/storage/toolbox/emergency, -/obj/item/flashlight/flare, -/turf/open/floor/mineral/titanium, -/area/overmap_encounter/planetoid/cave/explored) -"v" = ( -/obj/structure/closet/crate/coffin{ - icon_state = "coffinopen"; - opened = 1 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/overmap_encounter/planetoid/cave/explored) -"w" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood, -/obj/item/stack/tile/mineral/plastitanium/red, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/cave/explored) -"A" = ( -/obj/effect/decal/cleanable/blood, -/mob/living/simple_animal/hostile/asteroid/hivelord/legion, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/cave/explored) -"C" = ( -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/mineral/titanium, -/area/overmap_encounter/planetoid/cave/explored) -"D" = ( -/obj/structure/frame/computer, -/obj/item/circuitboard/computer/shuttle/helm, -/obj/item/shard, -/turf/open/floor/mineral/titanium/blue, -/area/overmap_encounter/planetoid/cave/explored) -"E" = ( -/obj/effect/decal/cleanable/blood/drip{ - pixel_y = 10 - }, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/cave/explored) -"F" = ( -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/cave/explored) -"G" = ( -/obj/machinery/light/broken/directional/north, -/obj/effect/decal/cleanable/blood/splatter, -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/overmap_encounter/planetoid/cave/explored) -"I" = ( -/obj/effect/mob_spawn/human/corpse/damaged, -/obj/effect/decal/cleanable/blood, -/obj/item/clothing/suit/armor/riot/knight/red, -/obj/item/clothing/head/helmet/knight/red, -/obj/item/claymore/weak{ - desc = "Comically rusted to the point of near uselessness."; - force = 6; - name = "rusted claymore" - }, -/turf/open/floor/mineral/plastitanium/red, -/area/overmap_encounter/planetoid/cave/explored) -"J" = ( -/obj/structure/girder/displaced, -/obj/item/stack/sheet/mineral/titanium, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/cave/explored) -"K" = ( -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/cave/explored) -"L" = ( -/obj/item/grenade/chem_grenade/ghostbuster, -/turf/open/floor/mineral/titanium, -/area/overmap_encounter/planetoid/cave/explored) -"M" = ( -/obj/structure/table, -/obj/item/paper/crumpled{ - default_raw_text = "Objective is to locate and secure the reliquary holding the supernatural items, then swing them back to HQ for containment. Simple job for Mystery Inc."; - name = "Mission Statement"; - pixel_x = -5 - }, -/obj/item/toy/figure/chaplain{ - pixel_x = 6 - }, -/turf/open/floor/mineral/titanium/blue, -/area/overmap_encounter/planetoid/cave/explored) -"N" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/structure/grille, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/cave/explored) -"O" = ( -/obj/effect/mob_spawn/human/corpse/damaged, -/obj/item/clothing/shoes/jackboots, -/obj/item/clothing/glasses/welding/ghostbuster, -/obj/item/clothing/glasses/welding/ghostbuster, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/mineral/plastitanium/red, -/area/overmap_encounter/planetoid/cave/explored) -"Q" = ( -/obj/structure/girder, -/obj/item/stack/sheet/mineral/titanium, -/turf/open/floor/plating, -/area/overmap_encounter/planetoid/cave/explored) -"R" = ( -/obj/machinery/power/smes/shuttle, -/obj/structure/window/reinforced/tinted, -/turf/open/floor/mineral/titanium, -/area/overmap_encounter/planetoid/cave/explored) -"T" = ( -/obj/structure/window/reinforced/tinted, -/obj/effect/decal/cleanable/blood, -/obj/structure/bed/dogbed, -/mob/living/simple_animal/pet/dog/pug{ - health = 5; - name = "Gooby-Moo" - }, -/turf/open/floor/mineral/titanium, -/area/overmap_encounter/planetoid/cave/explored) -"U" = ( -/obj/effect/decal/cleanable/blood, -/turf/open/floor/mineral/plastitanium/red, -/area/overmap_encounter/planetoid/cave/explored) -"V" = ( -/obj/structure/closet/crate{ - name = "DANGER: PARANORMAL ARTEFACTS" - }, -/obj/item/reagent_containers/food/snacks/muffin/booberry, -/obj/item/instrument/trombone, -/obj/item/reagent_containers/food/snacks/grown/ghost_chili, -/obj/item/clothing/head/hardhat/pumpkinhead, -/obj/item/nullrod/scythe/talking, -/obj/item/clothing/head/helmet/skull, -/turf/open/floor/mineral/plastitanium/red, -/area/overmap_encounter/planetoid/cave/explored) -"W" = ( -/obj/machinery/door/airlock/shuttle, -/obj/effect/mapping_helpers/airlock/locked, -/turf/open/floor/mineral/titanium/blue, -/area/overmap_encounter/planetoid/cave/explored) -"X" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 - }, -/obj/effect/mob_spawn/human/corpse/damaged, -/obj/item/clothing/under/rank/civilian/chaplain, -/obj/item/clothing/head/witchunter, -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/mineral/titanium/blue, -/area/overmap_encounter/planetoid/cave/explored) -"Y" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/mineral/plastitanium/red, -/area/overmap_encounter/planetoid/cave/explored) -"Z" = ( -/obj/machinery/door/airlock/shuttle, -/obj/structure/fans/tiny, -/turf/open/floor/mineral/plastitanium/red, -/area/overmap_encounter/planetoid/cave/explored) - -(1,1,1) = {" -a -a -a -a -a -a -a -a -F -F -F -F -F -F -a -a -"} -(2,1,1) = {" -a -a -a -a -a -a -a -a -a -a -F -F -F -F -a -a -"} -(3,1,1) = {" -a -a -a -a -a -a -a -Q -d -d -d -F -F -F -F -A -"} -(4,1,1) = {" -a -a -d -a -d -d -G -w -Y -V -R -j -F -F -E -a -"} -(5,1,1) = {" -a -a -N -M -b -d -O -U -U -e -u -F -F -F -F -a -"} -(6,1,1) = {" -a -a -l -D -X -W -L -c -C -k -T -F -F -q -F -a -"} -(7,1,1) = {" -a -a -a -a -n -J -t -U -h -I -o -K -F -F -F -a -"} -(8,1,1) = {" -a -a -a -d -d -d -m -e -v -v -R -j -F -F -F -F -"} -(9,1,1) = {" -a -a -a -a -a -d -d -Z -d -d -d -F -F -F -F -F -"} -(10,1,1) = {" -a -a -a -a -a -a -a -a -a -a -F -F -F -F -F -a -"} -(11,1,1) = {" -a -a -a -a -a -a -a -a -F -F -F -F -F -F -F -F -"} 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 4a84606b5340..000000000000 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_ashwalker_shrine.dmm +++ /dev/null @@ -1,5737 +0,0 @@ -//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) -"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) -"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) -"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/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/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) -"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 - }, -/obj/item/crusher_trophy/brimdemon_fang{ - pixel_x = 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) -"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) -"wb" = ( -/obj/structure/flora/rock/pile/lava, -/turf/open/lava/smooth/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) -"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) -"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) -"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/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/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) -"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) -"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) -"MQ" = ( -/turf/template_noop, -/area/template_noop) -"Ni" = ( -/obj/structure/table/wood, -/obj/item/crusher_trophy/legion_skull, -/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) -"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, -/mob/living/simple_animal/hostile/human/nanotrasen/ranged, -/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/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 -wb -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 -wb -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 -wb -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 -hn -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 -wl -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 -yM -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 -sB -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 -Fq -Mx -uP -ta -lJ -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 -uK -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 -JJ -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 -nk -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 -Fo -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 -Fq -Tp -yz -Ad -cA -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 -Ht -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/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm index 6d315bdb48d8..dbd2a278e777 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm @@ -1829,10 +1829,7 @@ pixel_x = 8; pixel_y = 21 }, -/obj/item/shield/riot/goliath{ - pixel_x = -12; - pixel_y = 16 - }, +/obj/item/shield/buckler, /turf/open/floor/plating/asteroid/basalt/lava_land_surface, /area/ruin/unpowered/buried_shrine) "Vt" = ( diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm index 68e9022534f0..3f87d232f470 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm @@ -1836,7 +1836,6 @@ /area/ruin/lavaland/factory/manager_office) "rj" = ( /obj/effect/turf_decal/siding/wood, -/mob/living/simple_animal/pet/cat/space/alta, /turf/open/floor/wood, /area/ruin/lavaland/factory/adminstrative) "rk" = ( diff --git a/_maps/RandomRuins/MoonRuins/moon_moonbase.dmm b/_maps/RandomRuins/MoonRuins/moon_moonbase.dmm index 52665f51ce58..7b44a882e64c 100644 --- a/_maps/RandomRuins/MoonRuins/moon_moonbase.dmm +++ b/_maps/RandomRuins/MoonRuins/moon_moonbase.dmm @@ -351,7 +351,7 @@ /area/ruin/moon/moonbase/refinery) "cM" = ( /obj/structure/closet/toolcloset/empty, -/obj/item/gun/energy/plasmacutter, +/obj/item/plasmacutter, /obj/item/storage/toolbox/electrical, /obj/item/storage/toolbox/mechanical, /obj/item/clothing/glasses/welding, diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_camp_saloon.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_camp_saloon.dmm index 095b961ace01..848707c4b496 100644 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_camp_saloon.dmm +++ b/_maps/RandomRuins/SandRuins/whitesands_surface_camp_saloon.dmm @@ -1026,13 +1026,7 @@ /obj/structure/closet/cabinet, /obj/effect/spawner/random/maintenance/two, /obj/effect/decal/cleanable/dirt, -/obj/item/gun/energy/plasmacutter{ - icon_state = "pulse_carbine"; - name = "pulse rifle"; - desc = "A supposedly heavy-duty, multifaceted energy rifle. The barrel looks off and the casing seems to be made of plastic"; - item_state = "pulse"; - icon = 'icons/obj/guns/manufacturer/nanotrasen_sharplite/48x32.dmi' - }, +/obj/item/plasmacutter, /turf/open/floor/wood, /area/ruin/whitesands/saloon) "EY" = ( diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_conveniencestore.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_conveniencestore.dmm deleted file mode 100644 index 968d36690457..000000000000 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_conveniencestore.dmm +++ /dev/null @@ -1,592 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aX" = ( -/obj/structure/rack, -/obj/item/instrument/guitar{ - pixel_x = 2; - pixel_y = 4 - }, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"bd" = ( -/obj/machinery/door/airlock/public{ - dir = 4 - }, -/obj/structure/fans/tiny, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"by" = ( -/obj/item/cigbutt{ - pixel_x = -9; - pixel_y = -2 - }, -/turf/open/floor/plating/asteroid/whitesands, -/area/overmap_encounter/planetoid/sand/explored) -"cD" = ( -/obj/item/chair{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"cJ" = ( -/obj/item/trash/can{ - pixel_x = -3; - pixel_y = -6 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"fd" = ( -/obj/structure/sign/poster/official/bless_this_spess, -/turf/closed/wall/material, -/area/ruin/unpowered) -"ff" = ( -/turf/open/floor/plating/asteroid/whitesands, -/area/overmap_encounter/planetoid/sand/explored) -"fo" = ( -/obj/structure/rack, -/obj/item/toy/plush/moth{ - pixel_x = -4 - }, -/obj/item/toy/plush/lizardplushie{ - pixel_x = 8; - pixel_y = -1 - }, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"kN" = ( -/obj/structure/rack, -/obj/machinery/light/broken/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"lu" = ( -/obj/structure/sign/poster/contraband/donut_corp, -/turf/closed/wall/material, -/area/ruin/unpowered) -"lS" = ( -/turf/closed/wall/material, -/area/ruin/unpowered) -"mF" = ( -/obj/structure/table, -/obj/structure/window{ - dir = 8 - }, -/obj/item/reagent_containers/food/drinks/bottle/sarsaparilla, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"nB" = ( -/mob/living/basic/cockroach, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"pd" = ( -/obj/item/melee/knife/kitchen{ - pixel_x = 6; - pixel_y = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"rk" = ( -/obj/item/cigbutt, -/obj/item/cigbutt{ - pixel_x = -8; - pixel_y = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, -/mob/living/basic/cockroach, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"sP" = ( -/obj/structure/rack, -/obj/item/melee/knife/plastic{ - pixel_x = -5 - }, -/obj/item/kitchen/spoon/plastic{ - pixel_x = 15 - }, -/obj/item/kitchen/fork/plastic{ - pixel_x = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"sQ" = ( -/obj/item/trash/popcorn{ - pixel_x = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"tJ" = ( -/obj/structure/rack, -/obj/item/cane, -/obj/item/clothing/head/bowler{ - pixel_x = -5; - pixel_y = 4 - }, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"ut" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/toy/plush/slimeplushie{ - pixel_x = -5; - pixel_y = -2 - }, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"ux" = ( -/turf/template_noop, -/area/template_noop) -"uM" = ( -/obj/effect/spawner/random/vending/snack, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"wd" = ( -/obj/structure/table, -/obj/machinery/light/small/directional/north, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/spacecash/bundle/c100{ - pixel_x = 1; - pixel_y = 10 - }, -/obj/item/spacecash/bundle/c100{ - pixel_x = 1 - }, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"wp" = ( -/obj/structure/sign/poster/contraband/energy_swords, -/turf/closed/wall/material, -/area/ruin/unpowered) -"xo" = ( -/obj/item/cigbutt{ - pixel_x = -11; - pixel_y = -2 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"xv" = ( -/obj/structure/rack, -/obj/item/paicard{ - pixel_y = 2 - }, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"yQ" = ( -/obj/structure/rack, -/obj/item/food/syndicake{ - pixel_x = -1; - pixel_y = 4 - }, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"yX" = ( -/obj/structure/rack, -/obj/item/poster/random_retro, -/obj/item/poster/random_retro{ - pixel_x = 1; - pixel_y = 8 - }, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"zP" = ( -/obj/machinery/door/airlock, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"BK" = ( -/obj/item/trash/can{ - icon_state = "shamblers"; - pixel_x = -6; - pixel_y = 4 - }, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"Cy" = ( -/obj/structure/table, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"FT" = ( -/turf/closed/wall, -/area/ruin/unpowered) -"FX" = ( -/obj/effect/spawner/random/vending/cola, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"Gr" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/trash/candy{ - pixel_x = 1; - pixel_y = 5 - }, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"GO" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/broken/directional/west, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"IJ" = ( -/obj/effect/decal/remains/human{ - pixel_x = 1 - }, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"Kr" = ( -/obj/structure/rack, -/obj/item/toy/plush/hornet/gay, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"KZ" = ( -/obj/structure/sign/poster/contraband/starkist, -/turf/closed/wall/material, -/area/ruin/unpowered) -"LZ" = ( -/obj/structure/rack, -/obj/item/clothing/mask/gas/clown_hat{ - pixel_y = 6 - }, -/obj/item/clothing/mask/gas/clown_hat, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"Mu" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/structure/barricade/wooden/crude, -/turf/open/floor/plating, -/area/ruin/unpowered) -"MZ" = ( -/obj/structure/rack, -/obj/item/clothing/under/pants/khaki{ - pixel_y = 2 - }, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"Qd" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/vomit/old, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"Tr" = ( -/obj/structure/table, -/obj/structure/window, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"Uk" = ( -/obj/structure/rack, -/obj/item/bikehorn{ - pixel_x = -6; - pixel_y = 6 - }, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"UZ" = ( -/obj/structure/table, -/obj/structure/window, -/obj/structure/window{ - dir = 8 - }, -/obj/item/food/pizzaslice{ - pixel_x = -1; - pixel_y = 3 - }, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"VD" = ( -/obj/item/cigbutt{ - pixel_x = -7; - pixel_y = 10 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/directional/north, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"We" = ( -/obj/item/trash/chips{ - pixel_x = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"Wp" = ( -/obj/structure/sign/poster/contraband/smoke, -/turf/closed/wall, -/area/ruin/unpowered) -"Wr" = ( -/obj/structure/rack, -/obj/item/toy/sword{ - pixel_x = 4; - pixel_y = 6 - }, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"Wt" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"WJ" = ( -/obj/machinery/door/window/southright, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"WU" = ( -/obj/item/trash/pistachios, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"Xd" = ( -/obj/structure/rack, -/obj/item/food/canned/beans{ - pixel_x = 1; - pixel_y = 9 - }, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"XR" = ( -/obj/structure/rack, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"Yd" = ( -/obj/effect/decal/cleanable/dirt/dust, -/mob/living/basic/cockroach, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"Yf" = ( -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"YE" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/crate/bin, -/obj/machinery/light/broken/directional/south, -/obj/item/toy/plush/among, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"Zu" = ( -/obj/structure/rack, -/obj/item/reagent_containers/food/drinks/waterbottle{ - pixel_x = 9; - pixel_y = 4 - }, -/obj/item/reagent_containers/food/drinks/waterbottle{ - pixel_x = -9; - pixel_y = 4 - }, -/obj/item/reagent_containers/food/drinks/waterbottle{ - pixel_y = 4 - }, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) -"ZA" = ( -/obj/structure/rack, -/obj/item/lighter/greyscale{ - pixel_x = -4 - }, -/obj/item/lighter/greyscale{ - pixel_x = 5 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/white, -/area/ruin/unpowered) - -(1,1,1) = {" -ux -ux -ux -ux -ux -ux -ux -ux -ux -ux -ux -ux -ux -"} -(2,1,1) = {" -ux -ux -ux -ux -ff -ff -ff -by -ff -ux -ux -ux -ux -"} -(3,1,1) = {" -ux -lS -lS -lS -Mu -Mu -bd -Mu -Mu -lS -lS -FT -ux -"} -(4,1,1) = {" -ux -fd -XR -Yf -WU -Wt -Yf -Wt -Yf -GO -fo -Wp -ux -"} -(5,1,1) = {" -ux -lS -yX -Wt -aX -nB -Wt -sQ -Xd -ut -Kr -lS -ux -"} -(6,1,1) = {" -ux -lS -kN -Wt -xv -Qd -MZ -Wt -yQ -Yf -Wr -wp -ux -"} -(7,1,1) = {" -ux -lS -ZA -Gr -tJ -Yf -cJ -Wt -Zu -Wt -Uk -FT -ux -"} -(8,1,1) = {" -ux -lS -sP -Yd -Wt -Wt -Wt -Yf -Wt -Yd -LZ -FT -ux -"} -(9,1,1) = {" -ux -lS -lS -lS -lu -mF -Cy -UZ -Yf -We -YE -lS -ux -"} -(10,1,1) = {" -ux -lS -wd -pd -lS -VD -rk -Tr -Wt -Yf -uM -lS -ux -"} -(11,1,1) = {" -ux -lS -cD -IJ -zP -xo -Yf -WJ -BK -Wt -FX -FT -ux -"} -(12,1,1) = {" -ux -lS -lS -lS -lS -lS -lS -lS -lS -KZ -lS -lS -ux -"} -(13,1,1) = {" -ux -ux -ux -ux -ux -ux -ux -ux -ux -ux -ux -ux -ux -"} diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_waterplant.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_waterplant.dmm deleted file mode 100644 index 41115a94920d..000000000000 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_waterplant.dmm +++ /dev/null @@ -1,3148 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ab" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"ao" = ( -/obj/effect/gibspawner, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel/white/airless, -/area/ruin/powered) -"au" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"aF" = ( -/obj/structure/bed, -/obj/item/bedsheet/brown, -/turf/open/floor/plasteel, -/area/ruin/powered) -"aU" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel, -/area/ruin/powered) -"aX" = ( -/obj/structure/bed, -/obj/item/bedsheet/brown, -/turf/open/floor/plating, -/area/ruin/powered) -"aY" = ( -/obj/machinery/door/airlock/public/glass, -/turf/open/floor/plasteel, -/area/ruin/powered) -"bn" = ( -/obj/machinery/door/airlock/vault, -/obj/structure/fans/tiny, -/turf/open/floor/plating, -/area/ruin/powered) -"bt" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"bx" = ( -/obj/structure/table, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/fancy/donut_box, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"bE" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible, -/turf/closed/wall/r_wall/rust, -/area/ruin/powered) -"bQ" = ( -/obj/machinery/door/airlock/vault, -/turf/open/floor/plating, -/area/ruin/powered) -"cl" = ( -/turf/closed/wall/r_wall/rust, -/area/ruin/powered) -"ct" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/mechanical/old, -/obj/item/storage/toolbox/electrical{ - icon_state = "toolbox_blue_old"; - name = "rusty old electrical toolbox"; - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/multitool/old, -/obj/item/screwdriver/old, -/turf/open/floor/plating, -/area/ruin/powered) -"cU" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/ruin/powered) -"cV" = ( -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel/white/airless, -/area/ruin/powered) -"dc" = ( -/obj/structure/table, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/assembly/flash/handheld, -/turf/open/floor/plating, -/area/ruin/powered) -"dd" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/closed/wall/r_wall/rust, -/area/ruin/powered) -"dx" = ( -/obj/effect/turf_decal/corner/opaque/green{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"dD" = ( -/obj/structure/chair/office, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"eh" = ( -/turf/open/floor/plating/asteroid/whitesands, -/area/ruin/powered) -"et" = ( -/obj/item/chair/stool, -/turf/open/floor/plating, -/area/ruin/powered) -"eC" = ( -/obj/structure/grille, -/turf/closed/wall/r_wall, -/area/ruin/powered) -"eV" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"ff" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/plasteel, -/area/ruin/powered) -"fn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"fo" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"fv" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/plasteel, -/area/ruin/powered) -"fH" = ( -/obj/structure/frame/computer, -/turf/open/floor/plating, -/area/ruin/powered) -"gm" = ( -/obj/machinery/hydroponics/constructable, -/turf/open/floor/plating, -/area/ruin/powered) -"gr" = ( -/obj/effect/turf_decal/industrial/loading{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel, -/area/ruin/powered) -"gW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"ha" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/ruin/powered) -"hk" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plating, -/area/ruin/powered) -"hs" = ( -/obj/structure/reagent_dispensers/water_cooler, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"hy" = ( -/obj/structure/statue/bronze/masson_kills, -/turf/open/floor/wood, -/area/ruin/powered) -"hC" = ( -/obj/machinery/computer/crew, -/turf/open/floor/plating, -/area/ruin/powered) -"hI" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/ruin/powered) -"ih" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/office{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"il" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/portable_atmospherics/canister/water_vapor, -/turf/open/floor/plasteel, -/area/ruin/powered) -"io" = ( -/obj/effect/turf_decal/number/zero, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"iY" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/turf_decal/corner/opaque/green, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"jc" = ( -/obj/structure/table, -/obj/item/pen/red{ - pixel_x = -4; - pixel_y = -3 - }, -/obj/item/pen/blue, -/obj/item/pen/fountain/solgov{ - pixel_x = 1; - pixel_y = 4 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"ji" = ( -/obj/machinery/atmospherics/pipe/manifold/general{ - dir = 4 - }, -/turf/open/floor/engine, -/area/ruin/powered) -"jo" = ( -/obj/effect/overlay/palmtree_l, -/mob/living/simple_animal/parrot, -/turf/open/floor/plating/asteroid/whitesands, -/area/ruin/powered) -"jt" = ( -/obj/structure/sign/poster/official/safety_report{ - pixel_y = 32 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"jw" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 5 - }, -/turf/closed/wall/r_wall/rust, -/area/ruin/powered) -"jz" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"jR" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"kr" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/water_vapor, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"kD" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 10 - }, -/turf/closed/wall, -/area/ruin/powered) -"kG" = ( -/turf/closed/wall/rust, -/area/ruin/powered) -"kZ" = ( -/obj/structure/chair/comfy/beige, -/turf/open/floor/carpet, -/area/ruin/powered) -"le" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"ll" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plating, -/area/ruin/powered) -"ln" = ( -/obj/structure/fluff/paper/stack{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"lu" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/closed/wall/rust, -/area/ruin/powered) -"ly" = ( -/obj/machinery/power/compressor{ - comp_id = "incineratorturbine"; - dir = 1; - luminosity = 2 - }, -/turf/open/floor/engine/vacuum, -/area/ruin/powered) -"lA" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"lF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall/rust, -/area/ruin/powered) -"lN" = ( -/obj/structure/table/wood/fancy, -/obj/item/food/cakeslice/lime, -/turf/open/floor/carpet, -/area/ruin/powered) -"lQ" = ( -/obj/effect/turf_decal/industrial/loading{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"mc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/ruin/powered) -"mi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"mj" = ( -/obj/machinery/door/airlock/security/glass{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"mr" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"mP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"mQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"ne" = ( -/obj/item/reagent_containers/glass/bucket{ - pixel_x = -2; - pixel_y = 3 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/powered) -"nh" = ( -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"ni" = ( -/obj/item/reagent_containers/food/drinks/bottle/sarsaparilla, -/turf/open/floor/plating/asteroid/whitesands, -/area/ruin/powered) -"np" = ( -/obj/structure/table, -/obj/item/storage/firstaid{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/storage/firstaid/brute, -/obj/item/storage/firstaid/fire{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/white/airless, -/area/ruin/powered) -"nE" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"nJ" = ( -/obj/effect/turf_decal/industrial/loading{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/ruin/powered) -"nZ" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"oo" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plasteel, -/area/ruin/powered) -"op" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/security/glass{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"oq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/ruin/powered) -"oy" = ( -/obj/effect/turf_decal/corner/opaque/green{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"oB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"oE" = ( -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"oK" = ( -/obj/structure/table, -/obj/item/healthanalyzer, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/turf/open/floor/plasteel/white/airless, -/area/ruin/powered) -"oT" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/powered) -"pf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"pl" = ( -/obj/structure/bed, -/obj/machinery/iv_drip, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/turf/open/floor/plasteel/white/airless, -/area/ruin/powered) -"pI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/plasteel, -/area/ruin/powered) -"qi" = ( -/obj/machinery/atmospherics/components/binary/volume_pump, -/turf/open/floor/plasteel, -/area/ruin/powered) -"qn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/closed/wall/r_wall/rust, -/area/ruin/powered) -"qo" = ( -/obj/machinery/atmospherics/components/unary/tank/air{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"qs" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Break Room"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"qv" = ( -/obj/structure/table/wood/fancy, -/obj/item/food/cakeslice/chocolate, -/turf/open/floor/carpet, -/area/ruin/powered) -"qC" = ( -/obj/structure/rack, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/white/airless, -/area/ruin/powered) -"qD" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/plasteel, -/area/ruin/powered) -"qI" = ( -/obj/structure/closet/crate/bin, -/obj/structure/sign/poster/official/random{ - pixel_x = 32 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"qK" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/rust, -/area/ruin/powered) -"qL" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel, -/area/ruin/powered) -"re" = ( -/obj/structure/chair/stool, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"rh" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"ri" = ( -/obj/structure/sink/puddle, -/turf/open/floor/plating/asteroid/whitesands, -/area/ruin/powered) -"rr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"rK" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"rX" = ( -/turf/open/floor/plasteel, -/area/ruin/powered) -"sf" = ( -/obj/machinery/atmospherics/components/trinary/filter/on{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/powered) -"sD" = ( -/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior, -/obj/machinery/atmospherics/pipe/simple/general/visible, -/turf/open/floor/engine, -/area/ruin/powered) -"sE" = ( -/obj/structure/table, -/obj/item/flashlight/lamp, -/obj/effect/turf_decal/corner/opaque/green, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"sK" = ( -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/ruin/powered) -"sR" = ( -/obj/effect/turf_decal/industrial/loading{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"ti" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/visible, -/turf/closed/wall, -/area/ruin/powered) -"tk" = ( -/obj/effect/turf_decal/dept{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"to" = ( -/obj/structure/rack, -/obj/item/paper/pamphlet/centcom, -/turf/open/floor/plasteel, -/area/ruin/powered) -"tu" = ( -/obj/structure/chair/stool, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"tF" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor/northright{ - dir = 4; - name = "Warden's Desk"; - req_access_txt = "3" - }, -/obj/machinery/door/window/westleft{ - name = "Warden's Desk" - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"tI" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible, -/turf/closed/wall/r_wall, -/area/ruin/powered) -"tL" = ( -/obj/machinery/door/airlock/vault, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating/asteroid/whitesands, -/area/ruin/powered) -"tY" = ( -/obj/effect/turf_decal/corner/opaque/green{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"ue" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"ul" = ( -/obj/item/plant_analyzer, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/powered) -"ux" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/ruin/powered) -"uL" = ( -/obj/machinery/door/airlock/public/glass{ - dir = 4 - }, -/obj/structure/fans/tiny, -/turf/open/floor/plasteel, -/area/ruin/powered) -"uO" = ( -/obj/effect/turf_decal/arrows, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/ruin/powered) -"uZ" = ( -/obj/machinery/door/airlock/public/glass{ - dir = 8 - }, -/obj/structure/fans/tiny, -/turf/open/floor/plating, -/area/ruin/powered) -"vW" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"wh" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"wk" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 6 - }, -/turf/closed/wall, -/area/ruin/powered) -"wo" = ( -/obj/structure/table, -/obj/item/paper, -/obj/item/pen, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"wt" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"wx" = ( -/obj/effect/turf_decal/arrows, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"wD" = ( -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/large/empty, -/obj/structure/closet/crate, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"wJ" = ( -/obj/machinery/door/airlock/security/glass, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/ruin/powered) -"wR" = ( -/obj/effect/gibspawner, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/turf/open/floor/plasteel/white/airless, -/area/ruin/powered) -"wW" = ( -/obj/machinery/hydroponics/constructable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/powered) -"xc" = ( -/obj/item/reagent_containers/glass/bucket{ - pixel_x = -2; - pixel_y = 3 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"xe" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"xh" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/general/visible, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/ruin/powered) -"xv" = ( -/obj/effect/turf_decal/number/two, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"xG" = ( -/obj/machinery/door/window/westleft, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"xN" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/portable_atmospherics/canister/toxins, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"xV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"yH" = ( -/obj/structure/geyser{ - reagent_id = /datum/reagent/water - }, -/obj/machinery/plumbing/liquid_pump, -/turf/open/floor/plating/asteroid/whitesands, -/area/ruin/powered) -"yQ" = ( -/obj/item/chair/stool, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"zq" = ( -/obj/machinery/door/airlock/engineering{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, -/turf/open/floor/plating, -/area/ruin/powered) -"zA" = ( -/obj/structure/sign/poster/official/random{ - pixel_x = 32 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"zJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Aj" = ( -/obj/structure/table/wood/fancy, -/obj/item/food/cakeslice/cheese, -/turf/open/floor/carpet, -/area/ruin/powered) -"AC" = ( -/obj/structure/closet/secure_closet/brig, -/turf/open/floor/plasteel, -/area/ruin/powered) -"AE" = ( -/obj/item/reagent_containers/glass/bucket{ - pixel_x = -2; - pixel_y = 3 - }, -/turf/open/floor/plating/asteroid/whitesands, -/area/ruin/powered) -"AM" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/ruin/powered) -"AT" = ( -/obj/effect/turf_decal/corner/opaque/red, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Bb" = ( -/obj/structure/chair/comfy/orange/directional/south, -/turf/open/floor/carpet, -/area/ruin/powered) -"Bs" = ( -/obj/item/toy/beach_ball, -/obj/structure/geyser{ - reagent_id = /datum/reagent/water - }, -/obj/machinery/plumbing/liquid_pump, -/turf/open/floor/plating/asteroid/whitesands, -/area/ruin/powered) -"Bx" = ( -/obj/machinery/door/airlock/public/glass, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Bz" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/ruin/powered) -"BQ" = ( -/obj/effect/turf_decal/industrial/loading{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"BV" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"Ci" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/ruin/powered) -"Cm" = ( -/obj/structure/sign/poster/official/work_for_a_future, -/turf/closed/wall/r_wall, -/area/ruin/powered) -"Cq" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible, -/turf/open/floor/engine, -/area/ruin/powered) -"Ct" = ( -/obj/effect/turf_decal/corner/opaque/green{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Cu" = ( -/obj/effect/turf_decal/industrial/loading{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Cw" = ( -/obj/structure/sign/warning/securearea, -/turf/closed/wall/r_wall, -/area/ruin/powered) -"Dd" = ( -/obj/effect/turf_decal/industrial/loading{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Do" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Dp" = ( -/obj/structure/table, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/restraints/handcuffs, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Dz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/ruin/powered) -"DT" = ( -/obj/structure/chair/comfy/blue/directional/south, -/turf/open/floor/carpet, -/area/ruin/powered) -"DU" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/general/visible, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"Eb" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plasteel, -/area/ruin/powered) -"En" = ( -/obj/structure/rack, -/obj/item/reagent_containers/food/drinks/waterbottle/large{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/structure/sign/poster/official/random{ - pixel_x = 32 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"EW" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Fg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Fn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"Fw" = ( -/obj/structure/sign/poster/official/random{ - pixel_x = -32 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/ruin/powered) -"FF" = ( -/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, -/turf/open/floor/engine, -/area/ruin/powered) -"FT" = ( -/obj/effect/decal/cleanable/blood/gibs/limb, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/white/airless, -/area/ruin/powered) -"FW" = ( -/obj/structure/fluff/paper/stack{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Gu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"GA" = ( -/obj/structure/chair, -/turf/open/floor/plasteel, -/area/ruin/powered) -"GL" = ( -/obj/machinery/door/poddoor/shutters{ - dir = 4 - }, -/obj/structure/fans/tiny, -/turf/open/floor/plating, -/area/ruin/powered) -"Hc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"Hm" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Cell 2"; - req_access_txt = "2"; - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Hs" = ( -/obj/structure/chair, -/obj/structure/sign/poster/official/random{ - pixel_x = 32 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"HH" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"HJ" = ( -/obj/machinery/atmospherics/pipe/manifold/general{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/powered) -"HL" = ( -/obj/structure/table/reinforced, -/obj/item/organ/tongue, -/obj/item/organ/tongue{ - pixel_y = 5 - }, -/obj/item/organ/tongue/lizard{ - pixel_x = -4 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"HQ" = ( -/obj/effect/turf_decal/arrows, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Ij" = ( -/obj/structure/sign/warning/securearea, -/turf/closed/wall/r_wall/rust, -/area/ruin/powered) -"It" = ( -/turf/closed/wall/r_wall, -/area/ruin/powered) -"Iy" = ( -/obj/structure/sign/poster/official/work_for_a_future, -/turf/closed/wall, -/area/ruin/powered) -"IB" = ( -/obj/structure/table, -/obj/item/folder/blue, -/obj/item/folder/red, -/obj/item/folder/yellow, -/obj/effect/turf_decal/corner/opaque/green, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"IL" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"IO" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible, -/turf/closed/wall, -/area/ruin/powered) -"IR" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/ruin/powered) -"Ja" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Jb" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/powered) -"Jv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"JK" = ( -/obj/effect/turf_decal/radiation, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"JT" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Kd" = ( -/obj/structure/bed, -/obj/machinery/iv_drip, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/turf/open/floor/plasteel/white/airless, -/area/ruin/powered) -"KB" = ( -/obj/machinery/door/airlock/security/glass, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Li" = ( -/obj/structure/sign/poster/official/random{ - pixel_x = 32 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"LE" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger, -/obj/item/clothing/glasses/hud/health, -/turf/open/floor/plasteel, -/area/ruin/powered) -"LK" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"LM" = ( -/obj/machinery/power/shuttle/engine/turbine{ - dir = 2 - }, -/turf/open/floor/plating/asteroid/whitesands, -/area/overmap_encounter/planetoid/sand/explored) -"LN" = ( -/obj/structure/rack, -/obj/item/reagent_containers/food/drinks/waterbottle/large{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/reagent_containers/food/drinks/waterbottle/large, -/obj/item/reagent_containers/food/drinks/waterbottle/large{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"LS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Me" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/ruin/powered) -"My" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/office, -/turf/open/floor/plasteel, -/area/ruin/powered) -"MQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plating, -/area/ruin/powered) -"MR" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"MW" = ( -/obj/item/reagent_containers/glass/bucket, -/obj/effect/decal/remains/human, -/obj/structure/fluff/beach_umbrella, -/turf/open/floor/plating/asteroid/whitesands, -/area/ruin/powered) -"MZ" = ( -/obj/structure/sign/poster/official/nanotrasen_logo{ - pixel_x = 32 - }, -/turf/template_noop, -/area/template_noop) -"Nk" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Nn" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"NM" = ( -/obj/effect/turf_decal/box, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"NP" = ( -/obj/effect/decal/cleanable/blood/gibs/limb, -/turf/open/floor/plasteel/white/airless, -/area/ruin/powered) -"NS" = ( -/obj/effect/turf_decal/arrows, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"NT" = ( -/turf/closed/wall, -/area/ruin/powered) -"NX" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/whitesands, -/area/overmap_encounter/planetoid/sand/explored) -"NZ" = ( -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Ok" = ( -/obj/structure/sign/poster/official/work_for_a_future, -/turf/closed/wall/r_wall/rust, -/area/ruin/powered) -"Oo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"Ow" = ( -/obj/item/storage/bottles/sandblast, -/turf/open/floor/wood{ - icon_state = "wood-broken2" - }, -/area/ruin/powered) -"Oz" = ( -/obj/machinery/hydroponics/constructable, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"OC" = ( -/obj/effect/turf_decal/dept{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Pc" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"Pk" = ( -/obj/effect/turf_decal/corner/opaque/red, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Pm" = ( -/obj/machinery/door/airlock/security/glass{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"Ps" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plating, -/area/ruin/powered) -"Pu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Py" = ( -/obj/structure/grille, -/turf/open/floor/plating, -/area/ruin/powered) -"PF" = ( -/obj/machinery/atmospherics/components/trinary/filter/on{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Qh" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Cell 1"; - req_access_txt = "2"; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Qq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/engine/vacuum, -/area/ruin/powered) -"Qr" = ( -/obj/structure/table, -/obj/item/storage/backpack/duffelbag/sec/surgery, -/obj/item/bodypart/leg/left{ - pixel_y = 5 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red, -/turf/open/floor/plasteel/white/airless, -/area/ruin/powered) -"Qw" = ( -/obj/item/kirbyplants/random, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Qy" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"QK" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Cell 3"; - req_access_txt = "2"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"QO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating, -/area/ruin/powered) -"QU" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/white/airless, -/area/ruin/powered) -"QY" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"Re" = ( -/obj/structure/table, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/recharger, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"Ru" = ( -/mob/living/simple_animal/crab, -/turf/open/floor/plating/asteroid/whitesands, -/area/ruin/powered) -"RH" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"RR" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"RU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/ruin/powered) -"RW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/closed/wall/r_wall, -/area/ruin/powered) -"RX" = ( -/obj/machinery/computer/arcade, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Su" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"SE" = ( -/turf/open/floor/plating, -/area/ruin/powered) -"SW" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/turf/open/floor/plasteel/white/airless, -/area/ruin/powered) -"SZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Ta" = ( -/obj/machinery/biogenerator, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Tc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"Te" = ( -/obj/machinery/door/airlock/security/glass{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Ty" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Tz" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"TB" = ( -/obj/item/cultivator, -/obj/item/shovel/spade{ - pixel_x = -5; - pixel_y = -11 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"TG" = ( -/obj/machinery/door/airlock/security/glass{ - req_access_txt = "3"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"TH" = ( -/obj/machinery/igniter/incinerator_atmos, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/engine/vacuum, -/area/ruin/powered) -"TO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/door/airlock/security/glass{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Ug" = ( -/obj/effect/turf_decal/corner/opaque/red, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Up" = ( -/obj/structure/table, -/obj/machinery/microwave{ - pixel_y = 2 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Uu" = ( -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/wood, -/area/ruin/powered) -"UG" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"Va" = ( -/turf/template_noop, -/area/template_noop) -"Vc" = ( -/obj/machinery/seed_extractor, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Vr" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"Vs" = ( -/obj/effect/turf_decal/corner/opaque/red, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Vv" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input{ - dir = 1 - }, -/turf/open/floor/engine/vacuum, -/area/ruin/powered) -"VF" = ( -/obj/effect/turf_decal/number/one, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"VG" = ( -/obj/structure/closet/crate/large, -/obj/structure/reagent_dispensers/watertank/high, -/turf/open/floor/plasteel, -/area/ruin/powered) -"VP" = ( -/obj/structure/fans/tiny, -/obj/machinery/door/poddoor/shutters{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"VS" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"VT" = ( -/obj/structure/table, -/obj/item/paper, -/obj/item/pen, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/powered) -"Wa" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/office{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Ww" = ( -/obj/item/reagent_containers/glass/bucket{ - pixel_x = -4; - pixel_y = -6 - }, -/turf/open/floor/plating/asteroid/whitesands, -/area/ruin/powered) -"WD" = ( -/obj/structure/sign/poster/official/random{ - pixel_x = 32 - }, -/obj/effect/decal/cleanable/dirt, -/turf/closed/wall, -/area/ruin/powered) -"WF" = ( -/obj/machinery/door/airlock/public/glass, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/ruin/powered) -"WV" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"WY" = ( -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 6 - }, -/turf/open/floor/engine, -/area/ruin/powered) -"Xg" = ( -/obj/effect/turf_decal/box, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Xy" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/powered) -"XA" = ( -/obj/machinery/door/airlock/security/glass{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/white, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 - }, -/turf/open/floor/plasteel/airless, -/area/ruin/powered) -"XR" = ( -/obj/structure/table, -/obj/item/paper, -/obj/item/pen, -/turf/open/floor/plating, -/area/ruin/powered) -"XY" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Yt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"YC" = ( -/obj/structure/table, -/obj/item/mmi, -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 4 - }, -/turf/open/floor/plasteel/white/airless, -/area/ruin/powered) -"YV" = ( -/obj/effect/turf_decal/corner/opaque/red{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/red{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"YW" = ( -/obj/structure/table, -/obj/item/storage/box/cups, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"YY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel/white/airless, -/area/ruin/powered) -"Zh" = ( -/obj/effect/turf_decal/corner/opaque/red, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Zs" = ( -/obj/structure/table, -/obj/effect/turf_decal/corner/opaque/green, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Zt" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/ruin/powered) -"Zv" = ( -/obj/effect/turf_decal/number/zero, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/ruin/powered) -"ZE" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/powered) -"ZH" = ( -/obj/effect/overlay/palmtree_r, -/turf/open/floor/plating/asteroid/whitesands, -/area/ruin/powered) -"ZJ" = ( -/obj/effect/turf_decal/number/three, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/powered) -"ZV" = ( -/obj/structure/sign/poster/official/random{ - pixel_x = 32 - }, -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/plasteel, -/area/ruin/powered) - -(1,1,1) = {" -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -"} -(2,1,1) = {" -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -MZ -Va -Va -Va -Va -MZ -cl -It -cl -cl -It -cl -It -It -cl -Va -"} -(3,1,1) = {" -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -NT -NT -NT -kG -ha -uL -uZ -ha -kG -NT -xN -HJ -qi -tI -Cq -bE -Vv -cl -Va -"} -(4,1,1) = {" -Va -Va -Va -kG -GL -VP -VP -VP -VP -VP -VP -NT -GA -lA -Ty -to -SE -ZE -to -Ty -kG -Ja -EW -Jb -FF -WY -sD -TH -ly -LM -"} -(5,1,1) = {" -Va -Va -Va -kG -SE -Jb -OC -Jb -SE -tk -il -kG -Hs -ZE -SE -FW -ZE -ZE -ln -SE -wk -JT -sf -PF -tI -ji -tI -Qq -cl -Va -"} -(6,1,1) = {" -Va -Va -Va -kG -Jb -Jb -tk -SE -Jb -Jb -il -kG -NT -NT -Zs -jc -iY -sE -IB -xG -lu -qo -fv -kr -cl -cl -cl -It -It -Va -"} -(7,1,1) = {" -Va -Va -Va -kG -Jb -SE -SE -SE -SE -tk -oo -kG -oy -Jb -YW -dx -XY -tY -Jb -Ct -lu -wD -aU -MQ -oq -Nk -rX -SE -cl -Va -"} -(8,1,1) = {" -Va -Va -Va -kG -NM -SE -ZE -Xg -Xg -SE -oo -kG -SE -rX -ll -rr -SZ -xV -rX -SE -kD -qK -IO -IO -DU -zq -xh -ti -jw -Va -"} -(9,1,1) = {" -Va -Va -Va -kG -lQ -sR -mQ -BQ -nJ -Dz -Dz -Bx -Me -Me -QO -Do -Ci -Dz -Me -Dz -WF -Fg -Fw -mP -Ps -gr -ZE -SE -AM -Va -"} -(10,1,1) = {" -Va -Va -Va -kG -Jb -Jb -bt -ue -SE -VG -rX -aY -ZE -SE -SE -rX -rX -SE -rX -zA -aY -Jb -ZE -bt -ue -JK -rX -rX -AM -Va -"} -(11,1,1) = {" -kG -kG -kG -NT -ZE -SE -ZE -SE -Jb -ZE -SE -kG -SE -qI -Eb -En -LN -En -hs -NT -kG -ZV -WD -NT -ha -Pm -ha -NT -AM -Va -"} -(12,1,1) = {" -It -It -It -It -cl -cl -It -cl -cl -It -It -It -cl -cl -It -It -cl -It -It -It -It -cl -cl -Fn -Me -Zt -Jb -ZE -dd -Va -"} -(13,1,1) = {" -cl -SE -Ug -Su -sK -Vs -QO -Me -BV -mc -sK -UG -AT -Jv -sK -nh -QO -Pk -sK -xe -oE -Vs -wJ -Zh -Jb -rK -rh -SE -AM -Va -"} -(14,1,1) = {" -It -Tz -vW -eV -Jb -RR -Jb -Jb -au -bt -SE -le -vW -mr -Tz -ab -Tz -Vr -nZ -wh -mr -Hc -KB -ih -dc -Re -Wa -rX -dd -Va -"} -(15,1,1) = {" -cl -ha -XA -WV -NT -NT -fo -ZE -Oo -nE -cl -lF -Qh -RW -cl -lF -Hm -RW -cl -RU -QK -qn -It -jt -Dp -bx -Jb -ZE -dd -Va -"} -(16,1,1) = {" -It -Kd -FT -YY -qC -ha -SE -SE -RH -Jb -It -mi -ab -yQ -cl -LS -et -QY -cl -bt -Pc -MR -cl -wt -YV -IL -ZE -rX -AM -Va -"} -(17,1,1) = {" -It -SW -ao -QY -cV -ha -ha -tF -TG -ha -cl -aF -Gu -XR -Cm -aX -rX -VT -Cm -aX -pf -XR -It -pI -Li -zJ -My -ZE -AM -Va -"} -(18,1,1) = {" -It -pl -NP -QU -wR -ha -ct -ZE -gW -qD -It -It -op -It -It -It -Te -It -cl -cl -TO -It -It -cl -NT -qs -kG -NT -AM -Va -"} -(19,1,1) = {" -cl -Qr -YC -np -oK -ha -hC -SE -dD -HL -ha -Qw -Cu -oB -Jb -ZE -lQ -rX -Jb -oB -Dd -SE -ff -It -hy -Bz -DT -qv -AM -Va -"} -(20,1,1) = {" -cl -It -cl -cl -It -cl -fH -ZE -Qy -LE -ha -ZE -io -NS -HQ -HQ -Zv -HQ -uO -wx -Tc -ZE -ZE -ha -Ow -IR -Bb -Aj -dd -Va -"} -(21,1,1) = {" -Va -cl -Py -Py -Py -cl -NZ -SE -Xy -AC -ha -ff -VF -QY -ZE -Jb -xv -SE -ZE -HH -ZJ -Jb -Qw -It -Uu -ux -kZ -lN -dd -Va -"} -(22,1,1) = {" -cl -Py -It -cl -It -It -VS -LK -It -It -cl -It -Ok -It -cl -cl -Iy -NT -NT -NT -mj -NT -NT -cl -cl -cl -It -It -AM -Va -"} -(23,1,1) = {" -It -Py -cl -yH -eh -ni -eh -yH -cl -Py -cl -Nn -Nn -Nn -Nn -Nn -It -RX -jR -Up -Yt -rX -rX -It -Va -Va -Va -Va -NX -Va -"} -(24,1,1) = {" -It -Py -It -Ru -eh -jo -MW -eh -cl -It -Cw -xc -ne -xc -ZE -xc -Cw -Nn -ZE -fn -re -hI -tu -It -Va -Va -Va -Va -Va -Va -"} -(25,1,1) = {" -cl -Py -cl -eh -eh -ri -eh -eh -bn -SE -bQ -ZE -qL -cU -hk -Me -tL -Dz -Me -Pu -jz -wo -QY -cl -Va -Va -Va -Va -Va -Va -"} -(26,1,1) = {" -cl -Py -cl -eh -ZH -Ww -AE -eh -cl -It -Ij -ne -ZE -xc -xc -Jb -Cw -gm -ul -Oz -ZE -yQ -rX -It -Va -Va -Va -Va -Va -Va -"} -(27,1,1) = {" -It -Py -cl -Bs -eh -Ru -eh -yH -It -Py -It -Nn -oT -Nn -Eb -Nn -It -Oz -TB -wW -Vc -Ta -ff -cl -Va -Va -Va -Va -Va -Va -"} -(28,1,1) = {" -cl -Py -It -cl -cl -It -cl -cl -It -eC -It -It -cl -cl -It -cl -It -It -cl -It -It -cl -It -cl -Va -Va -Va -Va -Va -Va -"} -(29,1,1) = {" -Va -cl -eC -Py -Py -Py -Py -Py -Py -cl -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -"} -(30,1,1) = {" -Va -Va -cl -It -It -cl -cl -It -It -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -Va -"} diff --git a/_maps/RandomRuins/SpaceRuins/power_puzzle.dmm b/_maps/RandomRuins/SpaceRuins/power_puzzle.dmm deleted file mode 100644 index eeb20dc26f2f..000000000000 --- a/_maps/RandomRuins/SpaceRuins/power_puzzle.dmm +++ /dev/null @@ -1,5117 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ac" = ( -/obj/structure/bed, -/obj/structure/curtain/cloth/grey, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/spawner/random/bedsheet, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"ae" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"ah" = ( -/turf/closed/mineral/random, -/area/ruin/space/has_grav) -"ai" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/obj/structure/fluff/hedge, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"ak" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/railing, -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"al" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 9 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"an" = ( -/obj/structure/fluff/paper/stack{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"ao" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 5 - }, -/obj/structure/table, -/obj/item/stamp{ - pixel_x = 7; - pixel_y = 7 - }, -/obj/item/stamp/denied{ - pixel_x = 7 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"ap" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/structure/table, -/obj/machinery/microwave, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"au" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/door/airlock, -/obj/effect/mapping_helpers/airlock/locked, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"av" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"ax" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/warning, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/obj/structure/holosign/barrier, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"ay" = ( -/obj/structure/fluff/paper/stack{ - dir = 8 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"aB" = ( -/obj/effect/turf_decal/industrial/warning, -/mob/living/simple_animal/hostile/carp/megacarp, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/powerpuzzle) -"aC" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 8 - }, -/obj/structure/table, -/obj/item/folder/red, -/obj/structure/railing{ - dir = 1 - }, -/obj/item/pen, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"aD" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/line, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"aE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"aH" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/line, -/obj/structure/table, -/obj/item/flashlight/lamp, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"aI" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 9 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/chair/comfy/grey/directional/north, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"aJ" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"aK" = ( -/turf/open/floor/plasteel/showroomfloor{ - name = "bathroom floor" - }, -/area/ruin/space/has_grav/powerpuzzle) -"aM" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/chair/comfy/orange/directional/north, -/turf/open/floor/wood, -/area/ruin/space/has_grav/powerpuzzle/secure) -"aO" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"aS" = ( -/obj/effect/mob_spawn/human/corpse/cargo_tech, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"aT" = ( -/turf/closed/wall/r_wall/rust, -/area/ruin/space/has_grav/powerpuzzle) -"aU" = ( -/obj/structure/rack, -/obj/item/tank/internals/oxygen, -/obj/item/tank/internals/oxygen{ - pixel_x = 3 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"aW" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/industrial/warning{ - dir = 2 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"aX" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"aY" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/chair/sofa/brown/left/directional/west, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/sign/poster/contraband/space_up{ - pixel_x = 32 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"aZ" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 10 - }, -/obj/structure/chair/office{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"bb" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating/asteroid, -/area/ruin/space/has_grav) -"bc" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 5 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"bd" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/falsewall/reinforced, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle) -"be" = ( -/obj/structure/chair, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/ruin/space/has_grav) -"bf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/door/airlock/vault/derelict{ - id_tag = "vaultdoor" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"bi" = ( -/obj/structure/table, -/obj/item/pen/fountain{ - pixel_x = -6; - pixel_y = 4 - }, -/obj/item/holosign_creator/security{ - pixel_x = 12; - pixel_y = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"bk" = ( -/obj/structure/chair, -/obj/structure/sign/poster/official/cohiba_robusto_ad{ - pixel_y = 32 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"bl" = ( -/turf/closed/wall, -/area/ruin/space/has_grav/powerpuzzle) -"bp" = ( -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"br" = ( -/obj/structure/closet/crate, -/obj/effect/spawner/random/maintenance/two, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/spawner/random/clothing/kittyears_or_rabbitears, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"bt" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"bx" = ( -/obj/machinery/door/airlock/vault/derelict{ - id_tag = "vaultdoor" - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"by" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/effect/mob_spawn/human/sec, -/obj/effect/decal/cleanable/blood/splatter{ - pixel_x = -4; - pixel_y = 8 - }, -/obj/effect/decal/cleanable/blood/gibs{ - pixel_y = 4 - }, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4; - pixel_y = 5 - }, -/obj/effect/turf_decal/trimline/opaque/red/filled/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"bz" = ( -/obj/structure/table, -/obj/item/storage/fancy/cigarettes, -/obj/item/lighter/greyscale{ - pixel_x = 7 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"bC" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/chair, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"bD" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/fakelattice, -/turf/open/floor/plasteel/elevatorshaft, -/area/ruin/space/has_grav/powerpuzzle/secure) -"bE" = ( -/obj/item/trash/syndi_cakes, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating/asteroid, -/area/ruin/space/has_grav) -"bG" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"bH" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 4 - }, -/obj/structure/closet/crate/bin, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"bK" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/railing, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"bQ" = ( -/obj/structure/table, -/obj/item/flashlight/lamp{ - pixel_y = 6 - }, -/obj/effect/turf_decal/trimline/transparent/solgovgold/filled/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"bS" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/chair/comfy/orange/directional/south, -/turf/open/floor/wood, -/area/ruin/space/has_grav/powerpuzzle/secure) -"bT" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"bX" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 5 - }, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4; - pixel_y = 5 - }, -/obj/structure/chair/office, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"ca" = ( -/obj/machinery/mech_bay_recharge_port{ - dir = 2 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"cc" = ( -/obj/machinery/computer/mech_bay_power_console{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"cd" = ( -/obj/effect/decal/cleanable/blood/tracks{ - dir = 8 - }, -/obj/effect/decal/cleanable/blood/splatter{ - pixel_x = -4; - pixel_y = 8 - }, -/obj/effect/decal/cleanable/blood/splatter{ - dir = 4; - icon_state = "trails_2" - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"ce" = ( -/obj/item/kirbyplants{ - name = "Emergency Oxygen Giver" - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/secure) -"cg" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"ch" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/warning, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/airlock/security, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/secure) -"ci" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/machinery/door/airlock/engineering/glass{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/structure/barricade/wooden, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"cj" = ( -/turf/closed/wall/r_wall, -/area/ruin/space/has_grav/powerpuzzle) -"ck" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/line, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"cl" = ( -/obj/structure/table, -/obj/machinery/computer/security/telescreen{ - desc = "The vault is engulfed in darkness, you can only make out the faint glow of the bolt lights across the room."; - name = "\improper Vault Telescreen"; - network = list("vault"); - pixel_y = 2 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/secure) -"cm" = ( -/obj/machinery/computer/monitor, -/obj/effect/turf_decal/trimline/transparent/solgovgold/filled/line{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"cp" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/machinery/suit_storage_unit/standard_unit, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"cs" = ( -/obj/machinery/light/broken/directional/north, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 6 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"ct" = ( -/obj/item/stack/cable_coil/cut/red, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"cu" = ( -/obj/structure/table, -/obj/structure/sign/poster/contraband/power{ - pixel_y = -30 - }, -/obj/effect/turf_decal/trimline/transparent/solgovgold/filled/line, -/obj/item/multitool{ - pixel_y = 5 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"cv" = ( -/obj/structure/flora/rock/pile, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/space/has_grav/powerpuzzle/secure) -"cw" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"cy" = ( -/obj/effect/decal/cleanable/vomit, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/warning/corner, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"cB" = ( -/obj/effect/spawner/random/maintenance/two, -/obj/effect/decal/cleanable/generic, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/closet/crate/secure, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"cD" = ( -/obj/effect/spawner/random/decoration/glowstick, -/obj/effect/decal/cleanable/glass, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"cE" = ( -/obj/machinery/photocopier, -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/camera/autoname{ - dir = 6; - network = list("vault") - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"cH" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"cI" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/item/clipboard{ - pixel_y = 12 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"cJ" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/turf/open/floor/plasteel/stairs{ - dir = 8 - }, -/area/ruin/space/has_grav/powerpuzzle/secure) -"cM" = ( -/obj/effect/decal/cleanable/oil/slippery, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/railing{ - dir = 6 - }, -/obj/structure/table, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"cN" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/chair/office, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"cO" = ( -/obj/structure/closet/crate/engineering/electrical{ - name = "robotics crate" - }, -/obj/effect/decal/cleanable/generic, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/decal/cleanable/greenglow, -/obj/item/stack/ore/salvage/scrapuranium, -/obj/item/bodypart/l_arm/robot, -/obj/effect/spawner/random/maintenance, -/obj/item/assembly/prox_sensor, -/obj/item/stack/ore/salvage/scrapuranium{ - pixel_x = -4; - pixel_y = -4 - }, -/obj/item/mecha_parts/mecha_equipment/drill, -/obj/item/mecha_parts/mecha_equipment/hydraulic_clamp, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"cP" = ( -/obj/structure/railing, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/box, -/obj/structure/rack, -/obj/item/circuitboard/machine/cell_charger, -/obj/item/stock_parts/cell/high, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"cQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/solgovgold/diagonal, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"cR" = ( -/obj/structure/fireplace{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 8 - }, -/obj/effect/decal/cleanable/blood/splatter{ - dir = 4; - icon_state = "trails_2" - }, -/turf/open/floor/wood, -/area/ruin/space/has_grav/powerpuzzle/secure) -"cS" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/solgovgold/diagonal, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 6 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"cU" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/shieldwallgen/atmos/roundstart{ - dir = 4; - id = "cargoshield" - }, -/obj/machinery/door/poddoor/shutters{ - id = "cargobay" - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/conveyor{ - id = "CargoC1" - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle) -"cV" = ( -/obj/effect/decal/cleanable/oil, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/poddoor/shutters{ - id = "cargobay" - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle) -"cW" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/effect/turf_decal/trimline/transparent/solgovgold/filled/warning{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"cZ" = ( -/obj/structure/railing{ - dir = 10 - }, -/turf/open/floor/plating/airless{ - light_range = 2 - }, -/area/ruin/space/has_grav/powerpuzzle) -"da" = ( -/obj/effect/decal/cleanable/greenglow, -/obj/effect/decal/fakelattice, -/turf/open/floor/plasteel/elevatorshaft, -/area/ruin/space/has_grav/powerpuzzle/secure) -"dm" = ( -/obj/structure/railing{ - dir = 6 - }, -/turf/open/floor/plating/airless{ - light_range = 2 - }, -/area/ruin/space/has_grav/powerpuzzle) -"dr" = ( -/obj/structure/table, -/obj/item/hand_tele{ - pixel_x = -2; - pixel_y = 3 - }, -/obj/machinery/door/poddoor/shutters{ - id = "vaultshutters1" - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"du" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/bed{ - icon_state = "dirty_mattress" - }, -/obj/item/storage/toolbox/mechanical, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/ruin/space/has_grav) -"dU" = ( -/obj/machinery/firealarm/directional/north, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/trimline/transparent/solgovgold/filled/warning{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"dW" = ( -/obj/structure/sign/warning/securearea{ - pixel_y = 30 - }, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"ec" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/glass, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"eS" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"eX" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"fd" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 2 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"fE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/structure/sink{ - dir = 1 - }, -/obj/structure/mirror{ - pixel_y = -32 - }, -/turf/open/floor/plasteel/showroomfloor{ - name = "bathroom floor" - }, -/area/ruin/space/has_grav/powerpuzzle) -"fZ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel/stairs, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"gk" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 1 - }, -/obj/machinery/light/broken/directional/north, -/obj/structure/chair/office{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"gp" = ( -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"gD" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/industrial/warning, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"gG" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/structure/sign/warning/vacuum/external{ - pixel_y = 27 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"gH" = ( -/obj/structure/catwalk/over, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/structure/railing{ - climbable = 0 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/secure) -"gI" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/light/floor, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/powerpuzzle) -"gM" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/spawner/random/maintenance/six, -/obj/structure/closet/crate/secure, -/obj/machinery/light/dim/directional/north, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"gS" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"gX" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/ruin/space/has_grav) -"hj" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"hp" = ( -/turf/closed/mineral/random{ - light_range = 2 - }, -/area/ruin/space/has_grav) -"hv" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/item/kirbyplants/random, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"hB" = ( -/obj/structure/railing{ - climbable = 0 - }, -/obj/effect/turf_decal/siding/wideplating/dark, -/obj/effect/decal/fakelattice, -/turf/open/floor/plasteel/elevatorshaft, -/area/ruin/space/has_grav/powerpuzzle/secure) -"hL" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/railing{ - dir = 10 - }, -/obj/item/hand_labeler{ - pixel_y = 15 - }, -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/flashlight/lamp{ - pixel_x = 15; - pixel_y = 6 - }, -/obj/item/pen, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"hU" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/wood, -/area/ruin/space/has_grav/powerpuzzle/secure) -"ik" = ( -/obj/structure/sign/warning/vacuum/external{ - pixel_x = -31 - }, -/turf/open/floor/plasteel/stairs, -/area/ruin/space/has_grav/powerpuzzle) -"iw" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"iN" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/mob_spawn/human/corpse/cargo_tech, -/obj/item/crowbar/red, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"jg" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 4 - }, -/obj/structure/chair/office{ - dir = 8 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"jy" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"jA" = ( -/turf/closed/indestructible/reinforced, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"jQ" = ( -/obj/machinery/vending/engivend, -/obj/effect/turf_decal/trimline/transparent/solgovgold/filled/warning{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"ks" = ( -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 2 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"ku" = ( -/obj/machinery/mech_bay_recharge_port{ - dir = 8 - }, -/obj/machinery/door/poddoor/shutters{ - id = "vaultshutters2" - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"kv" = ( -/turf/closed/indestructible/reinforced, -/area/ruin/space/has_grav/powerpuzzle) -"kz" = ( -/obj/structure/closet/toolcloset, -/obj/effect/turf_decal/trimline/transparent/solgovgold/filled/line{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"kA" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/obj/structure/railing, -/obj/effect/turf_decal/trimline/opaque/red/filled/corner{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"kD" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel/stairs{ - dir = 1 - }, -/area/ruin/space/has_grav/powerpuzzle) -"kV" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/machinery/light/built/directional/north, -/obj/item/light/tube/broken{ - pixel_x = 5; - pixel_y = 2 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"kY" = ( -/obj/machinery/camera/autoname, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"lA" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"lG" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 8 - }, -/turf/open/floor/wood, -/area/ruin/space/has_grav/powerpuzzle/secure) -"lL" = ( -/obj/structure/toilet, -/obj/machinery/shower{ - dir = 4 - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plasteel/showroomfloor{ - name = "bathroom floor" - }, -/area/ruin/space/has_grav/powerpuzzle) -"lZ" = ( -/obj/structure/chair, -/obj/structure/sign/poster/official/wtf_is_co2{ - pixel_y = 32 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"mf" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/solgovgold/diagonal, -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"mg" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"mj" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 5 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"mk" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/mug, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"mw" = ( -/obj/machinery/camera/autoname{ - dir = 1 - }, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/space/has_grav/powerpuzzle/secure) -"mF" = ( -/obj/machinery/door/window{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"mV" = ( -/obj/item/toy/plush/moth{ - name = "Wall Moth" - }, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/powerpuzzle) -"nm" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 10 - }, -/obj/item/kirbyplants/random, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"nw" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/structure/fans/tiny, -/obj/machinery/door/airlock/external{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"nG" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"nS" = ( -/obj/effect/decal/cleanable/glass, -/obj/structure/table/reinforced, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 9 - }, -/obj/item/reagent_containers/food/drinks/mug, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"nW" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/closet/crate, -/obj/item/poster/random_retro{ - pixel_x = 2; - pixel_y = 4 - }, -/obj/effect/spawner/random/maintenance, -/obj/machinery/light/broken/directional/south, -/obj/item/poster/random_official, -/obj/item/poster/random_official, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"ob" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/filingcabinet, -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"oc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"oo" = ( -/obj/structure/table/wood, -/obj/item/storage/fancy/cigarettes/cigars/havana{ - pixel_y = 6 - }, -/obj/item/lighter, -/turf/open/floor/wood, -/area/ruin/space/has_grav/powerpuzzle/secure) -"oT" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/machinery/door/airlock/external/glass{ - dir = 4 - }, -/obj/structure/fans/tiny, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle) -"pj" = ( -/obj/machinery/light/small/directional/west, -/obj/structure/railing{ - climbable = 0 - }, -/obj/effect/turf_decal/siding/wideplating/dark, -/obj/effect/decal/fakelattice, -/turf/open/floor/plasteel/elevatorshaft, -/area/ruin/space/has_grav/powerpuzzle/secure) -"pr" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"pD" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"pK" = ( -/obj/machinery/light/small/broken/directional/west, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/space/has_grav/powerpuzzle/secure) -"pO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"pX" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel/stairs, -/area/ruin/space/has_grav/powerpuzzle) -"qa" = ( -/obj/machinery/light/small/directional/south, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/space/has_grav/powerpuzzle/secure) -"qi" = ( -/obj/effect/decal/cleanable/vomit, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"qr" = ( -/obj/machinery/light/dim/directional/west, -/obj/effect/turf_decal/trimline/transparent/green/filled/warning, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"qx" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/shieldwallgen/atmos/roundstart{ - dir = 8; - id = "cargoshield" - }, -/obj/machinery/door/poddoor/shutters{ - id = "cargobay" - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/conveyor{ - dir = 1; - id = "CargoC2" - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle) -"qW" = ( -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle) -"qX" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/conveyor{ - id = "CargoC1" - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle) -"rb" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/mob_spawn/human/corpse/cargo_tech{ - outfit = /datum/outfit/job/nanotrasen/engineer - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"rc" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/secure) -"rf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/transparent/green/filled/warning{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"rq" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/spawner/random/decoration/glowstick, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"rI" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"rJ" = ( -/obj/structure/table, -/obj/item/radio/intercom/directional/east, -/obj/machinery/camera/autoname{ - dir = 8; - network = list("vault") - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"rV" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/sign/warning/vacuum/external{ - pixel_y = -27 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/machinery/conveyor_switch/oneway{ - id = "CargoC2"; - name = "Internal"; - pixel_x = -10; - pixel_y = 5 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"rY" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 10 - }, -/obj/machinery/light/dim/directional/north, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"sb" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"sc" = ( -/obj/effect/mob_spawn/human/corpse/cargo_tech, -/obj/item/food/cakeslice/birthday, -/obj/effect/decal/cleanable/confetti, -/obj/machinery/light/small/broken/directional/east, -/obj/structure/toilet, -/obj/machinery/shower{ - dir = 4 - }, -/turf/open/floor/plasteel/showroomfloor{ - name = "bathroom floor" - }, -/area/ruin/space/has_grav/powerpuzzle) -"sd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/chair/office{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"sj" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/machinery/light/dim/directional/east, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"sk" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"su" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"sW" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"sZ" = ( -/obj/structure/railing{ - climbable = 0 - }, -/obj/effect/turf_decal/siding/wideplating/dark, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/fakelattice, -/turf/open/floor/plasteel/elevatorshaft, -/area/ruin/space/has_grav/powerpuzzle/secure) -"tc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 8 - }, -/obj/machinery/door/window{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"tq" = ( -/obj/structure/sign/poster/official/moth/hardhats{ - pixel_x = -30 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/obj/structure/railing, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/item/stack/ore/salvage/scrapuranium/five, -/obj/effect/spawner/random/maintenance/two, -/obj/structure/closet/crate/engineering, -/obj/effect/turf_decal/box, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"tH" = ( -/obj/structure/closet/crate{ - name = "Ration Crate" - }, -/obj/item/reagent_containers/food/drinks/waterbottle/empty, -/obj/item/reagent_containers/food/drinks/waterbottle/empty, -/obj/item/reagent_containers/food/drinks/waterbottle, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/effect/spawner/random/food_or_drink/ration, -/obj/item/food/sosjerky, -/obj/item/food/sosjerky, -/obj/item/stack/medical/gauze/improvised, -/obj/item/stack/medical/gauze/improvised, -/obj/item/trash/sosjerky{ - pixel_x = 7; - pixel_y = 6 - }, -/obj/item/trash/sosjerky{ - pixel_x = -6; - pixel_y = 2 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/secure) -"tJ" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"tX" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/fans/tiny, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/external, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"ud" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/machinery/door/airlock{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plasteel/showroomfloor{ - name = "bathroom floor" - }, -/area/ruin/space/has_grav/powerpuzzle) -"ui" = ( -/obj/structure/sink{ - dir = 1 - }, -/obj/structure/mirror{ - pixel_y = -32 - }, -/turf/open/floor/plasteel/showroomfloor{ - name = "bathroom floor" - }, -/area/ruin/space/has_grav/powerpuzzle) -"un" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/dim/directional/north, -/obj/structure/table, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/item/trash/plate, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"up" = ( -/obj/machinery/atmospherics/components/unary/tank/air, -/obj/machinery/door/window, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"uu" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"uy" = ( -/obj/structure/tank_dispenser, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"uD" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/closet/crate/secure/exo, -/obj/item/storage/backpack/duffelbag/mining_conscript, -/obj/item/storage/backpack/duffelbag/mining_conscript, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"uN" = ( -/obj/structure/railing, -/obj/machinery/button/door{ - id = "cargobay"; - name = "Cargo Bay Shutters"; - pixel_x = -5; - pixel_y = 27 - }, -/obj/machinery/button/shieldwallgen{ - id = "cargoshield"; - name = "Cargo Bay Holoshield"; - pixel_x = 7; - pixel_y = 27 - }, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/powerpuzzle) -"uT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/machinery/light/small/directional/east, -/obj/item/kirbyplants{ - icon_state = "plant-02" - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"uX" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"vy" = ( -/obj/effect/decal/cleanable/generic, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/railing{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"vC" = ( -/obj/machinery/light/small/broken/directional/north, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"vE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 5 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"vJ" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/door/poddoor/shutters{ - id = "cargobay" - }, -/obj/machinery/power/shieldwallgen/atmos/roundstart{ - dir = 4; - id = "cargoshield" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/conveyor{ - id = "CargoC1" - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle) -"vQ" = ( -/turf/template_noop, -/area/template_noop) -"wa" = ( -/obj/effect/turf_decal/trimline/transparent/green/filled/warning{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"wf" = ( -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/powerpuzzle) -"wm" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"ws" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"wt" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"wO" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/poddoor/shutters{ - id = "cargobay" - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle) -"wQ" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/bottle/whiskey{ - pixel_x = -6; - pixel_y = 7 - }, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ - pixel_x = 6; - pixel_y = 6 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"wZ" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/railing{ - dir = 6 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"xf" = ( -/obj/structure/door_assembly/door_assembly_sec{ - anchored = 1; - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/secure) -"xi" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 10 - }, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 - }, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"xl" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/industrial/warning{ - dir = 5 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"xS" = ( -/obj/machinery/light/small/broken/directional/south, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/space/has_grav/powerpuzzle/secure) -"ye" = ( -/obj/structure/table, -/obj/structure/railing{ - dir = 1 - }, -/obj/item/ammo_casing/c9mm/surplus{ - pixel_x = -6 - }, -/obj/item/ammo_casing/c9mm/surplus{ - pixel_x = 6 - }, -/obj/item/storage/box/ammo/c9mm_surplus, -/obj/item/ammo_casing/c9mm/surplus{ - pixel_x = 3; - pixel_y = 5 - }, -/obj/item/ammo_casing/c9mm/surplus{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/item/ammo_casing/c9mm/surplus{ - pixel_y = 11 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"yo" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/mecha/working/ripley/cargo, -/turf/open/floor/mech_bay_recharge_floor, -/area/ruin/space/has_grav/powerpuzzle) -"yq" = ( -/obj/structure/table, -/obj/machinery/button/door{ - dir = 8; - id = "vaultdoor"; - name = "Emergency Lockdown"; - normaldoorcontrol = 1; - pixel_x = -4; - pixel_y = 8; - specialfunctions = 4 - }, -/obj/machinery/button/door{ - dir = 8; - id = "vaultshutters1"; - name = "Vault Shutters"; - pixel_x = 5; - pixel_y = 8 - }, -/obj/machinery/button/door{ - dir = 8; - id = "vaultshutters2"; - name = "Vault Shutters"; - pixel_x = 5; - pixel_y = -2 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"yu" = ( -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"yW" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel/showroomfloor{ - name = "bathroom floor" - }, -/area/ruin/space/has_grav/powerpuzzle) -"yX" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/stairs, -/area/ruin/space/has_grav/powerpuzzle) -"yZ" = ( -/obj/machinery/light/small/directional/east, -/obj/effect/decal/fakelattice, -/turf/open/floor/plasteel/elevatorshaft, -/area/ruin/space/has_grav/powerpuzzle/secure) -"zL" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"Af" = ( -/obj/structure/filingcabinet, -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 5 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Ag" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 6 - }, -/obj/structure/closet/crate/bin, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/clothing/neck/stethoscope, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Aj" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Ao" = ( -/obj/effect/decal/cleanable/ash, -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"AM" = ( -/obj/structure/table, -/obj/item/assembly/signaler/anomaly/bluespace, -/obj/machinery/door/poddoor/shutters{ - id = "vaultshutters1" - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"AO" = ( -/turf/open/floor/plating/asteroid/airless{ - light_range = 2 - }, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"AW" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 10 - }, -/obj/machinery/light/broken/directional/north, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"Bb" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/dim/directional/north, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 10 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"Bp" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile/indestructible, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Bq" = ( -/obj/effect/turf_decal/sand/plating, -/mob/living/simple_animal/hostile/carp, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"BD" = ( -/obj/machinery/computer/camera_advanced{ - dir = 8; - networks = list("vault") - }, -/obj/machinery/light/broken/directional/east, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"BF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"BS" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"Cx" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"CD" = ( -/obj/effect/decal/cleanable/glass, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/railing{ - dir = 9 - }, -/obj/structure/closet/crate/internals, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/obj/item/tank/internals/emergency_oxygen, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"CQ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/transparent/green/filled/warning, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"CT" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/turf/closed/indestructible/reinforced, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Dh" = ( -/obj/structure/railing{ - dir = 5 - }, -/obj/machinery/power/port_gen/pacman/super, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"Dx" = ( -/obj/structure/closet/firecloset/full, -/obj/machinery/light/dim/directional/south, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"Dy" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"DA" = ( -/obj/item/trash/pistachios, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating/asteroid, -/area/ruin/space/has_grav) -"DR" = ( -/obj/structure/bed, -/obj/structure/curtain/cloth/grey, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/spawner/random/bedsheet, -/obj/machinery/light/small/broken/directional/north, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"DS" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"Ea" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Ec" = ( -/obj/machinery/light/small/directional/east, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 9 - }, -/obj/effect/mob_spawn/human/corpse/cargo_tech{ - outfit = /datum/outfit/job/nanotrasen/engineer - }, -/obj/item/wirecutters{ - pixel_y = 15 - }, -/obj/effect/turf_decal/corner/transparent/solgovgold/diagonal, -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"EK" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"EO" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"EQ" = ( -/obj/machinery/light/small/directional/east, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/conveyor{ - dir = 1; - id = "CargoC2" - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle) -"EW" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"Ft" = ( -/obj/machinery/suit_storage_unit/independent/engineering, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"FC" = ( -/obj/effect/mob_spawn/human/corpse/cargo_tech, -/obj/item/storage/pill_bottle/floorpill/full, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating/asteroid, -/area/ruin/space/has_grav) -"FJ" = ( -/turf/open/floor/plasteel/stairs{ - dir = 1 - }, -/area/ruin/space/has_grav/powerpuzzle) -"FM" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"FQ" = ( -/obj/item/stack/ore/bluespace_crystal/refined, -/obj/structure/table, -/obj/machinery/door/poddoor/shutters{ - id = "vaultshutters1" - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"FW" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/closet/crate/medical, -/obj/item/reagent_containers/pill/floorpill, -/obj/item/storage/box/pillbottles, -/obj/item/storage/pill_bottle/happy{ - pixel_x = -2; - pixel_y = -2 - }, -/obj/item/storage/pill_bottle/happy{ - pixel_x = 7; - pixel_y = 2 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"Gi" = ( -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"GL" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 9 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"GM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 10 - }, -/obj/structure/sign/poster/ripped{ - pixel_x = 32 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"GP" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle) -"Hl" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/chair/sofa/brown/right/directional/west, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/sign/poster/contraband/space_cops{ - pixel_y = 32 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"HA" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/table, -/obj/item/stack/packageWrap{ - pixel_x = 3 - }, -/obj/item/stack/packageWrap{ - pixel_y = 10 - }, -/obj/item/export_scanner, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"HO" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Ib" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"Ie" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/east{ - start_charge = 0 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/table, -/obj/item/paper_bin, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Ii" = ( -/obj/structure/closet/crate/secure/weapon{ - name = "Ammo Crate" - }, -/obj/item/storage/box/ammo/c9mm_surplus, -/obj/item/storage/box/ammo/c9mm_surplus, -/obj/item/ammo_box/magazine/co9mm, -/obj/item/ammo_box/magazine/co9mm, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Ik" = ( -/turf/closed/wall{ - light_range = 2 - }, -/area/ruin/space/has_grav/powerpuzzle) -"Im" = ( -/obj/structure/door_assembly{ - anchored = 1; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"In" = ( -/turf/closed/indestructible/reinforced, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Ir" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/power/terminal{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"It" = ( -/obj/machinery/firealarm/directional/north, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"IB" = ( -/turf/open/floor/plating/asteroid/airless, -/area/ruin/space/has_grav/powerpuzzle/secure) -"IC" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"IW" = ( -/obj/structure/railing, -/obj/structure/sign/warning/docking{ - pixel_y = 33 - }, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/powerpuzzle) -"Jk" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel/stairs{ - dir = 4 - }, -/area/ruin/space/has_grav/powerpuzzle) -"Jq" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/airlock/engineering{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"Jx" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"JO" = ( -/turf/closed/wall/r_wall, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"JU" = ( -/obj/structure/catwalk, -/turf/open/space/basic, -/area/ruin/space/has_grav/powerpuzzle) -"JZ" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"KA" = ( -/obj/docking_port/stationary{ - dir = 2; - height = 15; - width = 15; - dwidth = 8 - }, -/turf/template_noop, -/area/template_noop) -"KJ" = ( -/obj/structure/sink{ - dir = 1 - }, -/obj/structure/mirror{ - pixel_y = -32 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel/showroomfloor{ - name = "bathroom floor" - }, -/area/ruin/space/has_grav/powerpuzzle) -"KS" = ( -/turf/open/floor/plasteel/stairs, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"KU" = ( -/obj/structure/rack, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/item/clothing/head/helmet/space/eva{ - pixel_x = -4 - }, -/obj/item/clothing/suit/space/eva, -/obj/item/tank/internals/oxygen, -/obj/item/clothing/head/helmet/space/eva{ - pixel_x = 7; - pixel_y = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"KY" = ( -/obj/effect/decal/fakelattice, -/turf/open/floor/plasteel/elevatorshaft, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Lp" = ( -/turf/open/floor/plating/asteroid/airless, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"LV" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Mg" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 1 - }, -/obj/structure/filingcabinet, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Mh" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"Mm" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"Ms" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 1 - }, -/obj/structure/table, -/obj/item/clipboard, -/obj/item/paper, -/obj/item/pen{ - pixel_y = 2 - }, -/obj/item/stamp/ce{ - name = "engineering rubber stamp"; - pixel_x = 15; - pixel_y = 5 - }, -/obj/effect/turf_decal/trimline/transparent/solgovgold/filled/line{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"MB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/structure/catwalk/over, -/obj/structure/railing{ - climbable = 0 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/secure) -"MJ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/machinery/conveyor{ - dir = 1; - id = "CargoC2" - }, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"ML" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel/showroomfloor{ - name = "bathroom floor" - }, -/area/ruin/space/has_grav/powerpuzzle) -"MO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel/showroomfloor{ - name = "bathroom floor" - }, -/area/ruin/space/has_grav/powerpuzzle) -"MU" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/shieldwallgen/atmos/roundstart{ - dir = 8; - id = "cargoshield" - }, -/obj/machinery/door/poddoor/shutters{ - id = "cargobay" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/conveyor{ - dir = 1; - id = "CargoC2" - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle) -"MY" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 10 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Nt" = ( -/obj/machinery/light/small/directional/west, -/obj/effect/decal/fakelattice, -/turf/open/floor/plasteel/elevatorshaft, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Nv" = ( -/obj/structure/flora/rock/pile, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"NJ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/fluff/paper/stack{ - dir = 1 - }, -/obj/item/spacecash/bundle/c200{ - pixel_x = 7; - pixel_y = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"NK" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/fluff/paper/stack, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"NT" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/broken/directional/east, -/obj/structure/chair/sofa/brown/left/directional/west, -/obj/effect/turf_decal/trimline/transparent/green/filled/warning, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"NZ" = ( -/obj/structure/sign/warning/securearea{ - pixel_y = 32 - }, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Ol" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"Oz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 9 - }, -/obj/structure/chair/sofa/brown/right/directional/west, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"OL" = ( -/obj/machinery/door/airlock{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"OM" = ( -/obj/machinery/light/broken/directional/west, -/turf/open/floor/plasteel/showroomfloor{ - name = "bathroom floor" - }, -/area/ruin/space/has_grav/powerpuzzle) -"OO" = ( -/obj/structure/table, -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/paper_bin, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"OP" = ( -/obj/machinery/firealarm/directional/east, -/turf/open/floor/plasteel/showroomfloor{ - name = "bathroom floor" - }, -/area/ruin/space/has_grav/powerpuzzle) -"OQ" = ( -/obj/structure/railing/corner, -/obj/machinery/light/floor, -/turf/open/floor/plating/airless, -/area/ruin/space/has_grav/powerpuzzle) -"OY" = ( -/obj/structure/chair/sofa/brown/right/directional/east, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"Pc" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/remains/human, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 5 - }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Pf" = ( -/obj/machinery/button/door{ - dir = 4; - id = "vaultdoor"; - name = "Emergency Lockdown"; - normaldoorcontrol = 1; - pixel_x = -27; - specialfunctions = 4 - }, -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/mob_spawn/human/corpse/cargo_tech{ - outfit = /datum/outfit/job/quartermaster - }, -/obj/item/gun/ballistic/automatic/pistol/challenger/no_mag{ - pixel_x = 6; - pixel_y = 4 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Pg" = ( -/obj/machinery/light/small/directional/east, -/obj/structure/railing{ - climbable = 0 - }, -/obj/effect/decal/fakelattice, -/turf/open/floor/plasteel/elevatorshaft, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Pm" = ( -/obj/structure/table, -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/computer/secure_data/laptop{ - dir = 1; - pixel_y = 5 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Pt" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"PB" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"PD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/door/airlock/security{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/secure) -"PF" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/obj/structure/chair/comfy/grey/directional/east, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"PL" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/bottle/rum{ - pixel_x = 6; - pixel_y = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"PU" = ( -/obj/item/clothing/head/beret/qm{ - pixel_x = -9; - pixel_y = 7 - }, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 8 - }, -/obj/effect/decal/cleanable/blood/splatter{ - dir = 4; - icon_state = "trails_2" - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/secure) -"PZ" = ( -/obj/structure/sign/poster/contraband/grey_tide{ - pixel_y = 32 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"Qu" = ( -/obj/structure/bed, -/obj/structure/curtain/cloth/grey, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/spawner/random/bedsheet, -/obj/machinery/light/small/broken/directional/south, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"QN" = ( -/obj/machinery/power/smes/engineering{ - charge = 0 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"QQ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/decal/remains/human, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"QS" = ( -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"QT" = ( -/obj/machinery/firealarm/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/structure/sign/warning/securearea{ - pixel_y = 32 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"QV" = ( -/obj/effect/decal/cleanable/blood/tracks{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Ri" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"Rn" = ( -/obj/structure/mecha_wreckage/phazon, -/obj/item/mecha_parts/mecha_equipment/thrusters/ion, -/obj/machinery/door/poddoor/shutters{ - id = "vaultshutters2" - }, -/turf/open/floor/mech_bay_recharge_floor, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Rw" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 6 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Ry" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/stairs, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"RI" = ( -/obj/machinery/power/floodlight{ - anchored = 1 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/ruin/space/has_grav) -"RX" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"Sd" = ( -/obj/structure/table, -/obj/item/trash/sosjerky{ - pixel_y = 5 - }, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating, -/area/ruin/space/has_grav) -"Sj" = ( -/obj/structure/table, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"Sx" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/railing{ - dir = 5 - }, -/obj/structure/closet/crate/critter, -/mob/living/simple_animal/pet/dog/corgi/exoticcorgi, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"SA" = ( -/turf/open/floor/plasteel/stairs, -/area/ruin/space/has_grav/powerpuzzle) -"SC" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/machinery/conveyor{ - id = "CargoC1" - }, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"SJ" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/industrial/warning{ - dir = 6 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"SQ" = ( -/obj/structure/chair, -/obj/machinery/light/broken/directional/north, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"SR" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 9 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"SY" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/chair/sofa/brown/left/directional/east, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"Tl" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 10 - }, -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"TB" = ( -/obj/structure/table/reinforced, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 4 - }, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"TP" = ( -/obj/machinery/shower{ - dir = 4 - }, -/obj/structure/toilet, -/obj/machinery/light/small/directional/east, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/plasteel/showroomfloor{ - name = "bathroom floor" - }, -/area/ruin/space/has_grav/powerpuzzle) -"TR" = ( -/obj/structure/sign/poster/contraband/tools{ - pixel_x = 30 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"Uh" = ( -/obj/structure/flora/rock, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"Ui" = ( -/obj/structure/flora/rock, -/turf/open/floor/plating/asteroid/airless, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Uu" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"Uy" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"UV" = ( -/obj/effect/landmark/mission_poi/main, -/obj/machinery/door/poddoor/shutters{ - id = "vaultshutters2" - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"UW" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"Vs" = ( -/obj/structure/falsewall/reinforced, -/obj/effect/decal/cleanable/blood/tracks{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Vu" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/item/kirbyplants/random, -/obj/structure/sign/warning{ - pixel_x = 30 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"VH" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/closet/crate/secure, -/obj/effect/spawner/random/maintenance/two, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"VV" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/door/airlock/external/glass{ - dir = 4 - }, -/obj/structure/fans/tiny, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/turf/open/floor/plating{ - light_range = 2 - }, -/area/ruin/space/has_grav/powerpuzzle) -"VX" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/secure) -"We" = ( -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/fluff/paper/stack{ - dir = 1 - }, -/obj/machinery/light/broken/directional/east, -/obj/item/spacecash/bundle/c50{ - pixel_x = -5; - pixel_y = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"Wk" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 6 - }, -/obj/structure/table, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/obj/structure/noticeboard{ - pixel_x = -15; - pixel_y = 32 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"Wq" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"Ww" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/fluff/paper/stack, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"WA" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"WG" = ( -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 9 - }, -/obj/machinery/light/broken/directional/south, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"Xc" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/box, -/obj/item/clothing/gloves/color/yellow, -/obj/structure/rack, -/obj/structure/railing{ - dir = 6 - }, -/obj/effect/spawner/random/maintenance/three, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"Xj" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"Xt" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/opaque/red/filled/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/secure) -"XQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/obj/structure/table, -/obj/item/lighter{ - pixel_x = -2; - pixel_y = 4 - }, -/obj/item/storage/fancy/cigarettes/cigpack_robustgold{ - pixel_x = 7 - }, -/obj/effect/turf_decal/trimline/transparent/green/filled/warning, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"Yi" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/railing{ - dir = 5 - }, -/obj/structure/closet/crate/secure, -/obj/effect/spawner/random/maintenance/four, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"Yr" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 1 - }, -/obj/structure/table, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"YE" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/power/apc/auto_name/directional/west{ - start_charge = 0 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"YH" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/button/door{ - dir = 1; - id = "cargobay"; - name = "Cargo Bay Shutters"; - pixel_x = -5; - pixel_y = -27 - }, -/obj/machinery/button/shieldwallgen{ - dir = 1; - id = "cargoshield"; - name = "Cargo Bay Holoshields"; - pixel_x = 7; - pixel_y = -27 - }, -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/conveyor_switch/oneway{ - id = "CargoC1"; - name = "External"; - pixel_x = 10; - pixel_y = 5 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"YL" = ( -/mob/living/simple_animal/hostile/carp, -/turf/template_noop, -/area/template_noop) -"YN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/trimline/transparent/solgovgold/filled/line{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/west{ - start_charge = 0 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"Zl" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle) -"Zq" = ( -/obj/structure/table, -/obj/item/storage/toolbox/electrical{ - pixel_y = 5 - }, -/obj/item/storage/toolbox/mechanical, -/obj/effect/turf_decal/trimline/transparent/solgovgold/filled/line, -/obj/machinery/light/dim/directional/south, -/turf/open/floor/plasteel, -/area/ruin/space/has_grav/powerpuzzle/engineering) -"Zz" = ( -/obj/machinery/door/airlock, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/plasteel/showroomfloor{ - name = "bathroom floor" - }, -/area/ruin/space/has_grav/powerpuzzle) -"ZC" = ( -/turf/open/floor/plasteel/stairs{ - dir = 4 - }, -/area/ruin/space/has_grav/powerpuzzle) -"ZO" = ( -/obj/effect/turf_decal/corner/transparent/grey/diagonal, -/obj/structure/railing{ - dir = 1 - }, -/obj/item/storage/toolbox/electrical, -/obj/item/storage/toolbox/electrical, -/obj/item/storage/toolbox/emergency, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/toolbox/mechanical, -/obj/structure/closet/crate/secure/engineering, -/turf/open/floor/plasteel/dark, -/area/ruin/space/has_grav/powerpuzzle) -"ZS" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 - }, -/turf/open/floor/plasteel/stairs{ - dir = 4 - }, -/area/ruin/space/has_grav/powerpuzzle/engineering) - -(1,1,1) = {" -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -hp -hp -hp -hp -hp -Ik -VV -Ik -hp -hp -hp -hp -hp -vQ -vQ -vQ -vQ -vQ -vQ -vQ -"} -(2,1,1) = {" -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -hp -hp -ah -ah -ah -ah -bl -qW -bl -ah -ah -ah -ah -hp -hp -vQ -vQ -vQ -vQ -vQ -vQ -"} -(3,1,1) = {" -vQ -vQ -YL -vQ -vQ -vQ -vQ -hp -vQ -vQ -vQ -vQ -vQ -hp -hp -ah -ah -bl -bl -bl -bl -oT -bl -bl -bl -bl -ah -ah -hp -hp -hp -hp -vQ -vQ -vQ -"} -(4,1,1) = {" -vQ -vQ -vQ -vQ -hp -hp -hp -hp -hp -hp -hp -hp -hp -hp -ah -ah -ah -bl -bz -It -ik -pr -KU -bp -EW -bl -ah -ah -ah -ah -ah -hp -hp -vQ -vQ -"} -(5,1,1) = {" -vQ -vQ -hp -hp -hp -hp -ah -ah -ah -ah -ah -hp -hp -hp -ah -be -Sd -bl -lZ -qi -sk -BF -cH -rq -Dx -bl -ah -ah -ah -ah -ah -ah -hp -hp -vQ -"} -(6,1,1) = {" -vQ -vQ -hp -hp -ah -ah -kv -kv -kv -kv -ah -ah -ah -ah -RI -FC -DA -bl -SQ -oc -nS -cI -tc -TB -cg -bl -ah -ah -ah -ah -ah -ah -ah -hp -vQ -"} -(7,1,1) = {" -vQ -vQ -hp -ah -kv -kv -kv -OM -ui -kv -kv -kv -kv -kv -aT -aT -du -bl -bk -GM -mF -ws -sd -GL -hv -bl -ah -ah -ah -ah -ah -ah -ah -hp -vQ -"} -(8,1,1) = {" -vQ -vQ -hp -ah -kv -TP -Zz -aK -yW -kv -DR -ac -ac -ac -Qu -kv -bE -cj -cj -cj -cj -Im -cj -cj -cj -cj -ah -ah -ah -ah -ah -ah -ah -hp -vQ -"} -(9,1,1) = {" -vQ -vQ -hp -ah -kv -kv -kv -aK -KJ -kv -Xj -pO -aS -hj -uX -aT -bb -cj -br -FW -bK -fd -ZO -pr -uD -cj -cj -cj -cj -cj -ah -ah -ah -hp -vQ -"} -(10,1,1) = {" -vQ -vQ -hp -ah -kv -lL -Zz -aK -ML -kv -ac -ac -UW -ac -ac -kv -gX -cj -gM -pr -bK -fd -vy -cO -nW -cj -cp -aU -Ol -cj -ah -ah -OQ -dm -vQ -"} -(11,1,1) = {" -vQ -vQ -hp -ah -kv -kv -kv -aK -fE -kv -kv -kv -OL -kv -kv -kv -bd -cj -Ib -cB -wZ -aW -Yi -pr -bt -cj -cs -aO -YH -cj -cj -cj -uN -JU -vQ -"} -(12,1,1) = {" -vQ -hp -hp -ah -kv -sc -Zz -OP -MO -kv -ap -It -Ri -qr -YE -kv -PB -FJ -cy -EK -Mh -Ao -DS -cD -Wq -SA -ec -JZ -SC -cU -qX -vJ -wf -JU -vQ -"} -(13,1,1) = {" -vQ -hp -ah -ah -kv -kv -kv -kv -ud -kv -Wk -tJ -PF -CQ -jy -au -FM -kD -Cx -CD -QQ -pr -HA -hL -su -yX -lA -Mm -RX -cV -GP -wO -wf -JU -KA -"} -(14,1,1) = {" -vQ -hp -hp -ah -ah -kv -SY -OY -rf -ai -Yr -mg -Zl -XQ -aI -kv -pr -FJ -gD -Sx -VH -rI -cN -cM -Dy -pX -mj -BS -MJ -qx -EQ -MU -aB -JU -vQ -"} -(15,1,1) = {" -vQ -vQ -hp -ah -ah -kv -un -Sj -wa -yu -sW -zL -Oz -NT -uu -kv -kv -kv -AW -nG -ae -gS -Jx -bG -WG -cj -Bb -eS -rV -cj -cj -cj -IW -JU -vQ -"} -(16,1,1) = {" -vQ -vQ -hp -ah -ah -kv -Hl -aY -wa -In -In -xf -In -In -In -kv -IB -kv -kv -ZC -Jk -ZC -JO -ci -iw -JO -ca -yo -cc -cj -mV -cj -gI -cZ -vQ -"} -(17,1,1) = {" -vQ -vQ -hp -ah -In -In -In -In -In -CT -ak -av -aC -aZ -Bp -IB -Ui -IB -kv -hv -iN -Vu -JO -PZ -bT -JO -JO -JO -JO -JO -JO -JO -ah -hp -vQ -"} -(18,1,1) = {" -vQ -vQ -hp -ah -In -cl -Pf -rc -In -al -kA -cJ -ye -aD -Bp -IB -IB -qa -In -In -bx -In -In -rY -IC -fZ -bc -tq -Ms -YN -kz -JO -ah -hp -vQ -"} -(19,1,1) = {" -vQ -hp -hp -ah -In -tH -PU -ce -In -Mg -wm -cw -QS -aD -Bp -IB -IB -IB -In -pj -gH -Nt -In -mk -TR -KS -rb -cP -bQ -Uu -Zq -JO -ah -hp -vQ -"} -(20,1,1) = {" -vQ -hp -ah -ah -In -In -Vs -In -In -gk -EO -HO -bX -aH -Bp -IB -IB -mw -In -sZ -gH -KY -In -jA -jA -jA -kV -Xc -cm -pD -cu -JO -ah -hp -hp -"} -(21,1,1) = {" -hp -hp -ah -ah -In -hU -cR -oo -In -ao -Ie -bH -by -Aj -Bp -IB -IB -Ui -In -hB -gH -da -In -Gi -jA -up -Tl -eX -dU -cW -jQ -JO -ah -ah -hp -"} -(22,1,1) = {" -hp -ah -ah -In -In -bS -lG -aM -In -In -In -In -PD -In -In -NZ -IB -IB -In -hB -gH -KY -In -Lp -jA -jA -jA -JO -JO -Jq -JO -JO -JO -ah -hp -"} -(23,1,1) = {" -hp -ah -ah -In -ob -ay -aX -Xt -NK -Pc -nm -In -sb -wQ -Bp -IB -cv -xS -In -hB -gH -bD -In -vC -AO -Lp -jA -QN -cQ -mf -Dh -ct -JO -hp -hp -"} -(24,1,1) = {" -hp -ah -ah -In -OO -Ww -cd -QS -bi -NJ -ax -ch -aE -bC -Bp -IB -IB -IB -In -hB -gH -KY -In -Lp -Uh -gp -jA -Ir -cS -Ec -Ry -WA -JO -hp -hp -"} -(25,1,1) = {" -hp -ah -ah -In -cE -Ii -QV -ks -PL -an -ck -In -QT -uT -Bp -IB -IB -IB -In -Pg -MB -yZ -In -Lp -Lp -Lp -jA -jA -nw -jA -jA -JO -JO -hp -hp -"} -(26,1,1) = {" -hp -ah -ah -In -Af -We -jg -LV -Pm -sj -Ag -In -In -In -In -IB -IB -In -In -In -bf -In -In -In -Lp -Lp -aJ -jA -gG -Ft -jA -ah -ah -hp -hp -"} -(27,1,1) = {" -hp -hp -ah -In -In -In -In -In -In -In -In -In -ah -ah -cv -IB -xS -In -dr -Rw -MY -vE -UV -In -Pt -Lp -xi -tX -SR -uy -jA -ah -hp -hp -hp -"} -(28,1,1) = {" -vQ -hp -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah -IB -IB -IB -In -FQ -Ea -VX -Uy -Rn -In -Lp -Gi -ZS -jA -jA -jA -jA -ah -hp -hp -vQ -"} -(29,1,1) = {" -vQ -hp -hp -hp -hp -hp -ah -ah -ah -ah -ah -ah -ah -ah -IB -Ui -IB -In -AM -xl -wt -SJ -ku -In -kY -Lp -Lp -ah -ah -ah -ah -ah -hp -vQ -vQ -"} -(30,1,1) = {" -vQ -vQ -vQ -vQ -vQ -hp -hp -hp -hp -hp -ah -ah -ah -ah -ah -IB -IB -In -In -yq -BD -rJ -In -In -dW -Nv -Gi -ah -ah -ah -hp -hp -hp -vQ -vQ -"} -(31,1,1) = {" -vQ -vQ -vQ -vQ -vQ -vQ -hp -vQ -vQ -hp -hp -hp -hp -ah -ah -ah -IB -IB -In -In -In -In -In -Lp -Lp -Lp -Lp -ah -ah -ah -hp -hp -vQ -vQ -vQ -"} -(32,1,1) = {" -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -hp -hp -ah -ah -ah -IB -IB -IB -pK -IB -IB -Lp -Lp -Gi -Lp -Lp -hp -hp -hp -hp -vQ -vQ -vQ -"} -(33,1,1) = {" -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -hp -hp -ah -ah -ah -ah -ah -ah -ah -ah -ah -ah -Lp -Uh -Bq -AO -vQ -vQ -vQ -vQ -vQ -vQ -"} -(34,1,1) = {" -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -YL -vQ -vQ -hp -hp -hp -hp -hp -hp -ah -ah -ah -ah -ah -AO -AO -AO -vQ -vQ -vQ -vQ -vQ -vQ -vQ -"} -(35,1,1) = {" -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -hp -hp -hp -hp -hp -hp -hp -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -vQ -"} diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_recyclebay.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_recyclebay.dmm index 7efd708ff0d4..03340e36a532 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_recyclebay.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_recyclebay.dmm @@ -4026,8 +4026,8 @@ "Bw" = ( /obj/structure/closet/toolcloset/empty, /obj/effect/turf_decal/industrial/outline/yellow, -/obj/item/gun/energy/plasmacutter, -/obj/item/gun/energy/plasmacutter, +/obj/item/plasmacutter, +/obj/item/plasmacutter, /obj/item/clothing/gloves/color/yellow, /obj/item/clothing/gloves/color/yellow, /obj/item/clothing/gloves/color/yellow, diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_unhonorable.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_unhonorable.dmm deleted file mode 100644 index f555ded39426..000000000000 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_unhonorable.dmm +++ /dev/null @@ -1,2256 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aF" = ( -/obj/item/clothing/head/radiation, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"aP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/maint) -"bc" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/road/line/edge/transparent/yellow{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"bX" = ( -/obj/effect/decal/cleanable/greenglow/filled, -/obj/effect/dummy/lighting_obj{ - light_color = "#80B425"; - light_power = 2 - }, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"bZ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/stairs/old, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"cd" = ( -/obj/structure/fence/corner{ - dir = 1 - }, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"cn" = ( -/obj/structure/sign/warning/radiation/rad_area{ - pixel_x = 32 - }, -/turf/open/floor/plating/wasteplanet/rust, -/area/ruin/wasteplanet/wasteplanet_radiation) -"dC" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plastic, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"dU" = ( -/obj/structure/salvageable/circuit_imprinter, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"eD" = ( -/obj/item/clothing/suit/radiation, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"eO" = ( -/turf/closed/wall/r_wall/rust/yesdiag, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"eW" = ( -/obj/machinery/portable_atmospherics/canister/tritium, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"fb" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/miskilamo_big/one{ - color = "#580818" - }, -/turf/open/floor/plasteel, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"fK" = ( -/obj/effect/decal/remains/xeno/larva, -/obj/effect/decal/cleanable/oil/slippery, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"gn" = ( -/obj/item/clothing/suit/radiation, -/obj/effect/decal/remains/human, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"gr" = ( -/turf/open/floor/plating/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"gM" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/visible{ - dir = 4 - }, -/turf/closed/wall/r_wall/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"gX" = ( -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"ig" = ( -/obj/item/reagent_containers/pill/potassiodide{ - pixel_x = 4; - pixel_y = -6 - }, -/obj/structure/sink{ - dir = 8; - pixel_x = 12 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plastic, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"iA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/supply/visible/layer2{ - dir = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"iQ" = ( -/turf/closed/wall/r_wall, -/area/ruin/wasteplanet/wasteplanet_radiation/maint) -"iS" = ( -/obj/item/circuitboard/machine/rad_collector, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"iT" = ( -/obj/structure/spawner/hivebot, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"jh" = ( -/obj/structure/sign/warning/radiation/rad_area{ - pixel_y = 31 - }, -/turf/open/floor/plating/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"kd" = ( -/obj/machinery/door/airlock/public/glass{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plastic, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"kq" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/kirbyplants/fullysynthetic, -/turf/open/floor/plasteel, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"kS" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/isf_big/seven{ - color = "#580818" - }, -/turf/open/floor/plasteel, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"lJ" = ( -/obj/effect/radiation/waste/intense, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"lL" = ( -/obj/structure/fence/cut/large, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"lS" = ( -/obj/structure/sign/warning/longtermwaste{ - pixel_y = 32 - }, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"mi" = ( -/obj/item/clothing/head/radiation, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"my" = ( -/obj/structure/fence, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"mB" = ( -/obj/structure/hazard/radioactive{ - pixel_x = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"mF" = ( -/obj/machinery/door/airlock/maintenance/external{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"mQ" = ( -/obj/machinery/power/rad_collector, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"mV" = ( -/obj/structure/fence{ - dir = 8 - }, -/turf/open/floor/plating/wasteplanet/rust, -/area/ruin/wasteplanet/wasteplanet_radiation) -"mZ" = ( -/mob/living/simple_animal/bot/secbot{ - hacked = 1 - }, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"no" = ( -/obj/machinery/vending/sovietsoda, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plastic, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"nt" = ( -/obj/structure/hazard/radioactive{ - pixel_x = -1; - pixel_y = 7 - }, -/obj/structure/hazard/radioactive{ - pixel_x = 8 - }, -/obj/structure/hazard/radioactive{ - pixel_x = 8; - pixel_y = 19 - }, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"oi" = ( -/obj/structure/table, -/obj/item/food/syndicake{ - pixel_x = 4; - pixel_y = 13 - }, -/obj/item/food/syndicake{ - pixel_y = 3 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small{ - dir = 1; - pixel_y = 17 - }, -/turf/open/floor/plastic, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"oA" = ( -/obj/machinery/light/dim{ - dir = 1; - pixel_y = 20 - }, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"oF" = ( -/obj/effect/decal/cleanable/oil/slippery, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"oY" = ( -/obj/machinery/door/airlock/maintenance/glass{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/maint) -"ph" = ( -/obj/machinery/atmospherics/components/unary/tank/air{ - dir = 4; - piping_layer = 2 - }, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/maint) -"pp" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"pr" = ( -/obj/machinery/portable_atmospherics/canister/air, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"pP" = ( -/mob/living/basic/hivebot/ranged, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"pZ" = ( -/obj/structure/fence/cut/medium{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"qf" = ( -/obj/structure/hazard/radioactive{ - pixel_x = 7 - }, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"qy" = ( -/obj/structure/closet/radiation{ - anchored = 1 - }, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"qF" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"rb" = ( -/obj/item/stack/ore/uranium, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"rI" = ( -/mob/living/simple_animal/bot/cleanbot{ - hacked = 1 - }, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"sw" = ( -/obj/structure/table/greyscale, -/obj/item/reagent_containers/food/drinks/bottle/vodka{ - pixel_x = 6; - pixel_y = 17 - }, -/obj/item/storage/fancy/cigarettes/dromedaryco, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"sR" = ( -/obj/machinery/power/smes/engineering, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/maint) -"ty" = ( -/turf/template_noop, -/area/template_noop) -"tA" = ( -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"tN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"uf" = ( -/obj/structure/girder, -/turf/open/floor/plating/wasteplanet/rust, -/area/ruin/wasteplanet/wasteplanet_radiation) -"uF" = ( -/obj/machinery/light/broken{ - dir = 1; - pixel_y = 20 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plasteel, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"uN" = ( -/obj/item/stack/ore/uranium, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"uZ" = ( -/obj/structure/salvageable/autolathe, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"vL" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/effect/spawner/structure/window/hollow/reinforced, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/maint) -"vV" = ( -/obj/item/clothing/head/helmet{ - pixel_x = 1; - pixel_y = 7 - }, -/obj/item/clothing/under/syndicate, -/obj/structure/closet/radiation/empty{ - anchored = 1 - }, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"wn" = ( -/obj/structure/flora/ash/glowshroom, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"wG" = ( -/obj/machinery/power/rad_collector, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"wI" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/small{ - pixel_y = -24 - }, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/maint) -"xj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/machinery/firealarm/directional/north, -/obj/effect/decal/cleanable/garbage, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/maint) -"xt" = ( -/turf/closed/wall/r_wall/rust/yesdiag, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"yj" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"yu" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"yW" = ( -/obj/effect/spawner/structure/window/hollow, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"zv" = ( -/obj/structure/mecha_wreckage/ripley/firefighter, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"zC" = ( -/turf/closed/wall/r_wall, -/area/ruin/wasteplanet/wasteplanet_radiation) -"zH" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/vault, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plasteel/dark, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"zL" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/stack/sheet/mineral/uranium/five, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"Aa" = ( -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/machinery/power/port_gen/pacman/super/not_very{ - anchored = 1; - sheet_left = 1; - sheets = 10 - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/sign/poster/contraband/cybersun{ - pixel_y = 31 - }, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/maint) -"AV" = ( -/obj/effect/turf_decal/industrial/warning/dust/corner{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/radiation/waste/intense, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"BH" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/power/apc/auto_name/directional/north{ - emergency_lights = 1 - }, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"BI" = ( -/obj/effect/decal/cleanable/oil/slippery, -/turf/open/floor/plating/wasteplanet/rust, -/area/ruin/wasteplanet/wasteplanet_radiation) -"Ck" = ( -/obj/item/stack/ore/uranium, -/obj/effect/turf_decal/industrial/warning/dust/corner, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"Cz" = ( -/obj/structure/hazard/radioactive/stack{ - pixel_y = -12 - }, -/obj/structure/hazard/radioactive{ - pixel_y = 6 - }, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"CE" = ( -/obj/structure/hazard/radioactive{ - pixel_x = -6; - pixel_y = 9 - }, -/obj/structure/hazard/radioactive{ - pixel_x = 3; - pixel_y = 4 - }, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"CF" = ( -/obj/structure/hazard/radioactive/stack, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"Dd" = ( -/obj/effect/turf_decal/road/line/edge/transparent/yellow, -/turf/open/floor/plasteel/dark, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"DJ" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible/layer4{ - dir = 1 - }, -/obj/machinery/light/small/broken{ - dir = 1; - pixel_y = 16 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"Er" = ( -/obj/structure/railing/modern{ - dir = 10 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/road/line/transparent/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/road/line/transparent/yellow, -/obj/effect/turf_decal/road/line/transparent/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/road/line/edge/transparent/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/road/line/edge/transparent/yellow, -/turf/open/floor/plasteel/dark, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"EF" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"Gc" = ( -/turf/closed/wall/r_wall/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/maint) -"Gl" = ( -/turf/open/floor/plating/wasteplanet/rust, -/area/ruin/wasteplanet/wasteplanet_radiation) -"Gn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/generic, -/turf/open/floor/plating/wasteplanet/rust, -/area/ruin/wasteplanet/wasteplanet_radiation) -"Hf" = ( -/turf/closed/wall/r_wall/rust, -/area/ruin/wasteplanet/wasteplanet_radiation) -"Hl" = ( -/mob/living/basic/hivebot, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"Hm" = ( -/obj/machinery/door/airlock/maintenance/external{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/layer_manifold/visible{ - dir = 4 - }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"Hn" = ( -/obj/structure/sign/warning/radiation/rad_area{ - pixel_y = -32 - }, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"HJ" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/maint) -"HR" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/turf_decal/isf_big/three{ - color = "#580818" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"Im" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"IF" = ( -/obj/structure/hazard/radioactive/waste, -/obj/effect/decal/cleanable/greenglow/filled, -/obj/effect/dummy/lighting_obj{ - light_color = "#80B425"; - light_power = 2 - }, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"Jw" = ( -/obj/structure/girder, -/turf/open/floor/plating/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"Jy" = ( -/obj/item/chair/stool/bar{ - pixel_x = 10; - pixel_y = -6 - }, -/obj/item/reagent_containers/pill/potassiodide{ - pixel_x = 8; - pixel_y = 7 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plastic, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"Kl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/light/broken{ - dir = 8; - pixel_x = -23 - }, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"Ku" = ( -/turf/closed/wall/r_wall/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"KA" = ( -/obj/structure/fence, -/turf/open/floor/plating/wasteplanet/rust, -/area/ruin/wasteplanet/wasteplanet_radiation) -"Ld" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"Lh" = ( -/obj/machinery/advanced_airlock_controller{ - pixel_y = 30 - }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 8 - }, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"Ln" = ( -/obj/structure/chair/plastic{ - dir = 1 - }, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"Lp" = ( -/mob/living/simple_animal/bot/hygienebot{ - hacked = 1 - }, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"Mq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/maint) -"MD" = ( -/obj/item/stack/ore/uranium, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"MV" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"MX" = ( -/obj/item/stack/cable_coil/cut/red, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"Na" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/wasteplanet/rust, -/area/ruin/wasteplanet/wasteplanet_radiation) -"Nj" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 8 - }, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"Nx" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/atmospherics/components/binary/pump/on/layer2{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/maint) -"NG" = ( -/obj/structure/closet/crate/radiation{ - anchored = 1 - }, -/obj/item/nuke_core, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"NO" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/road/line/transparent/yellow, -/turf/open/floor/plasteel/dark, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"OK" = ( -/obj/structure/fence/corner{ - dir = 10 - }, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"PB" = ( -/obj/structure/reagent_dispensers/watertank/high, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"PV" = ( -/obj/machinery/firealarm/directional/west, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"Qp" = ( -/obj/effect/radiation/waste/intense, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"Qz" = ( -/obj/effect/decal/remains/human, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plastic, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"QB" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer4{ - dir = 8 - }, -/turf/open/floor/plating/wasteplanet/rust, -/area/ruin/wasteplanet/wasteplanet_radiation) -"QU" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/radiation/waste, -/obj/effect/turf_decal/industrial/warning/dust{ - dir = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/dark, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"Rg" = ( -/obj/structure/flippedtable{ - dir = 4 - }, -/obj/item/storage/pill_bottle/potassiodide{ - pixel_x = -5; - pixel_y = 6 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plastic, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"Rv" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"RU" = ( -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"Sf" = ( -/turf/closed/wall/r_wall, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"Sg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/oil/streak, -/turf/open/floor/plating/wasteplanet/rust, -/area/ruin/wasteplanet/wasteplanet_radiation) -"SQ" = ( -/obj/structure/sign/warning/nosmoking/burnt{ - pixel_x = -27 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"Th" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/maint) -"Tm" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/advanced_airlock_controller/internal{ - dir = 4; - pixel_x = 26 - }, -/obj/structure/sign/warning/radiation{ - pixel_x = -32 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plasteel/dark, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"TE" = ( -/obj/structure/fence, -/obj/machinery/atmospherics/pipe/simple/scrubbers, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"UR" = ( -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"Vg" = ( -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"Vn" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/vault, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plasteel/dark, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"VE" = ( -/turf/closed/wall/r_wall/rust/yesdiag, -/area/ruin/wasteplanet/wasteplanet_radiation/maint) -"VP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/miskilamo_big/five{ - color = "#580818" - }, -/turf/open/floor/plasteel, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"VY" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"Wa" = ( -/obj/structure/table, -/obj/machinery/microwave, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plastic, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"Xc" = ( -/obj/item/geiger_counter{ - pixel_y = 1 - }, -/obj/item/trash/syndi_cakes{ - pixel_y = 1 - }, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/maint) -"Xi" = ( -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"Xl" = ( -/turf/closed/mineral/random/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"XC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/structure/cable/yellow, -/obj/machinery/power/terminal, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/maint) -"XO" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"XU" = ( -/obj/structure/fence/door, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"Yd" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"Yk" = ( -/obj/item/trash/can, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"Yl" = ( -/turf/closed/wall/r_wall/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"Yp" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/industrial/warning/dust, -/turf/open/floor/plating/rust, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) -"YO" = ( -/obj/structure/fence/post{ - dir = 4 - }, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"Zd" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plastic, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"Zg" = ( -/obj/structure/railing/modern{ - dir = 6 - }, -/obj/effect/turf_decal/road/line/transparent/yellow{ - dir = 8 - }, -/obj/effect/turf_decal/road/line/transparent/yellow, -/obj/effect/turf_decal/road/line/transparent/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/road/line/edge/transparent/yellow, -/obj/effect/turf_decal/road/line/edge/transparent/yellow{ - dir = 4 - }, -/obj/effect/decal/cleanable/molten_object/large, -/turf/open/floor/plasteel/dark, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"ZC" = ( -/obj/structure/fence{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/wasteplanet, -/area/ruin/wasteplanet/wasteplanet_radiation) -"ZJ" = ( -/turf/closed/wall/r_wall, -/area/ruin/wasteplanet/wasteplanet_radiation/main) -"ZP" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/ruin/wasteplanet/wasteplanet_radiation/containment) - -(1,1,1) = {" -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -"} -(2,1,1) = {" -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -UR -UR -UR -UR -ty -ty -UR -UR -Gl -UR -Gl -Gl -ty -ty -ty -"} -(3,1,1) = {" -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -UR -UR -UR -Gl -UR -Gl -Gl -UR -UR -UR -Xl -Xl -MV -Xl -ty -ty -"} -(4,1,1) = {" -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -UR -wn -UR -OK -KA -my -my -lL -cd -Xl -Xl -Xl -Xl -Xl -Xl -UR -ty -"} -(5,1,1) = {" -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -UR -UR -UR -ZC -UR -UR -UR -gX -ZC -UR -Xl -Xl -Xl -Xl -UR -UR -ty -"} -(6,1,1) = {" -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -UR -Gl -UR -pZ -UR -UR -UR -UR -ZC -UR -Xl -Xl -Xl -Xl -UR -UR -ty -"} -(7,1,1) = {" -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -UR -UR -UR -UR -mV -UR -wn -UR -Gl -ZC -UR -Xl -Gl -UR -UR -UR -UR -ty -"} -(8,1,1) = {" -ty -ty -ty -UR -ty -ty -ty -ty -ty -UR -UR -ty -ty -ty -ty -ty -UR -Xl -UR -UR -mV -RU -UR -UR -Gl -YO -UR -Gl -UR -UR -UR -wn -UR -ty -"} -(9,1,1) = {" -ty -UR -UR -UR -UR -ty -ty -ty -UR -UR -UR -Lp -ty -ty -ty -UR -UR -Xl -UR -UR -mV -UR -UR -UR -Sg -XU -UR -Gl -UR -MX -UR -UR -UR -ty -"} -(10,1,1) = {" -ty -UR -Xl -Xl -Xl -Xl -Xl -UR -UR -MX -UR -UR -UR -UR -UR -UR -UR -UR -UR -Gl -Hf -lS -Hl -UR -UR -YO -Gl -gr -UR -UR -gr -UR -UR -ty -"} -(11,1,1) = {" -ty -UR -Xl -Xl -Xl -Xl -Xl -Xl -UR -UR -UR -UR -UR -UR -Gl -Gl -UR -UR -UR -Gl -zC -UR -UR -UR -UR -ZC -Gl -Gl -pP -UR -Gl -UR -UR -ty -"} -(12,1,1) = {" -ty -Xl -Xl -Xl -Xl -Xl -Xl -Xl -UR -UR -UR -UR -Gl -Gl -Gl -UR -UR -UR -UR -Xl -ZJ -xt -Gn -cn -Na -Ku -UR -UR -UR -uZ -Xl -Xl -UR -ty -"} -(13,1,1) = {" -ty -Xl -Xl -Xl -Xl -Xl -Xl -UR -UR -eO -Yl -Sf -Sf -Yl -Yl -Yl -Yl -xt -Gl -Xl -Xl -Ku -Ku -gM -Hm -Ku -sw -Ln -Xl -Xl -Xl -Xl -UR -ty -"} -(14,1,1) = {" -ty -Xl -Gl -UR -UR -UR -UR -UR -eO -Yl -Yl -Yl -Sf -Sf -Sf -Yl -Yl -Ku -xt -Xl -Xl -ZJ -Ku -Lh -Nj -ZJ -TE -Xl -Xl -Xl -Xl -Xl -UR -ty -"} -(15,1,1) = {" -ty -UR -gr -UR -UR -UR -BI -UR -Sf -Sf -Yl -CE -iS -EF -eD -NG -Sf -ZJ -Xl -Xl -Xl -Xl -Ku -DJ -iA -ZJ -mi -Gl -Xl -Xl -Xl -Xl -UR -ty -"} -(16,1,1) = {" -ty -ty -UR -UR -wn -UR -uf -UR -Sf -Yl -Cz -bX -Xi -MD -lJ -mB -Yl -Ku -Ku -ZJ -ZJ -Ku -Ku -mF -Ku -Ku -gn -Xl -Xl -Xl -Xl -Xl -UR -ty -"} -(17,1,1) = {" -ty -ty -ty -UR -UR -UR -UR -UR -Sf -Yl -wG -zL -Ld -qf -IF -eO -Yl -Ku -oA -PV -pp -SQ -Kl -Im -XO -ZJ -Xl -Xl -Xl -Xl -Xl -UR -UR -ty -"} -(18,1,1) = {" -ty -ty -ty -UR -UR -UR -UR -rI -Yl -Yl -Qp -Ld -Ck -Yl -Yl -Sf -xt -Dd -Er -Vg -fb -VP -Rv -tN -Yk -ZJ -Xl -Xl -Xl -UR -UR -UR -UR -ty -"} -(19,1,1) = {" -ty -ty -ty -UR -gr -MX -UR -Hn -Yl -Sf -BH -ZP -Yp -Vn -Tm -zH -QU -NO -bZ -Yd -HR -kS -Yd -qF -Rv -Ku -jh -Gl -Gl -UR -wn -UR -ty -ty -"} -(20,1,1) = {" -ty -ty -UR -UR -UR -MV -UR -UR -Yl -Sf -vV -fK -AV -Yl -Sf -Sf -xt -bc -Zg -Rv -Rv -yj -yj -yu -kq -ZJ -Gl -gr -gr -UR -UR -ty -ty -ty -"} -(21,1,1) = {" -ty -UR -Xl -UR -UR -UR -wn -UR -Sf -Yl -uN -Xi -aF -tA -rb -eO -Yl -ZJ -uF -yj -XO -Gc -iQ -oY -Gc -Gc -uZ -Xl -Xl -Xl -UR -ty -ty -ty -"} -(22,1,1) = {" -ty -UR -Xl -UR -UR -UR -UR -UR -Sf -Yl -CF -tA -Xi -Qp -Ld -eW -Yl -ZJ -yW -kd -yW -Gc -ph -Mq -Xc -Gc -Xl -Xl -Xl -Xl -UR -UR -ty -ty -"} -(23,1,1) = {" -ty -Xl -Xl -Xl -Xl -Xl -Xl -UR -Yl -Yl -Yl -IF -mQ -nt -qy -IF -Sf -ZJ -no -dC -Zd -Gc -Nx -HJ -Th -iQ -UR -Xl -Xl -pr -UR -UR -UR -ty -"} -(24,1,1) = {" -ty -Xl -Xl -Xl -Xl -Xl -Xl -UR -eO -Yl -Yl -Sf -Sf -Yl -Yl -Sf -Sf -Ku -oi -Qz -Jy -iQ -xj -aP -wI -Gc -UR -Xl -Xl -Xl -UR -UR -UR -ty -"} -(25,1,1) = {" -ty -Xl -Xl -UR -Xl -Xl -Xl -UR -UR -eO -Yl -Yl -Sf -Sf -Yl -Yl -Yl -Ku -Wa -ig -Rg -iQ -Aa -XC -sR -iQ -UR -dU -UR -UR -mZ -UR -UR -ty -"} -(26,1,1) = {" -ty -Xl -Xl -Xl -Xl -UR -UR -UR -dU -UR -UR -UR -Xl -Xl -Xl -UR -UR -xt -ZJ -Ku -Ku -Gc -Gc -vL -Gc -VE -UR -wn -UR -MX -UR -wn -UR -ty -"} -(27,1,1) = {" -ty -UR -Xl -Xl -Xl -Xl -Xl -Xl -UR -UR -UR -Xl -Xl -Xl -UR -wn -UR -UR -UR -Xl -Xl -Xl -Xl -QB -Xl -UR -UR -UR -UR -UR -UR -UR -UR -ty -"} -(28,1,1) = {" -ty -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Gl -Jw -UR -UR -UR -UR -MX -UR -UR -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -UR -UR -UR -UR -BI -UR -UR -ty -"} -(29,1,1) = {" -ty -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Gl -UR -UR -UR -UR -Gl -Gl -UR -UR -Xl -Xl -Xl -VY -Xl -Xl -UR -UR -gr -Gl -Xl -Xl -Xl -ty -ty -"} -(30,1,1) = {" -ty -ty -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -UR -Xl -UR -iT -UR -UR -oF -UR -UR -Xl -UR -UR -UR -UR -UR -Gl -Jw -Xl -Xl -Xl -ty -ty -"} -(31,1,1) = {" -ty -ty -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -UR -UR -UR -UR -UR -UR -UR -uf -UR -UR -UR -UR -UR -UR -UR -Xl -Xl -Xl -ty -ty -"} -(32,1,1) = {" -ty -ty -ty -ty -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -Xl -UR -UR -Gl -Xl -ty -Xl -UR -wn -UR -gr -Gl -UR -UR -UR -zv -Xl -Xl -ty -ty -ty -"} -(33,1,1) = {" -ty -ty -ty -ty -gr -PB -UR -Gl -Xl -ty -ty -Xl -Xl -UR -UR -UR -ty -ty -ty -ty -UR -UR -UR -UR -UR -UR -UR -UR -UR -UR -ty -ty -ty -ty -"} -(34,1,1) = {" -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -ty -"} diff --git a/_maps/_basemap.dm b/_maps/_basemap.dm index 673f1754394f..8c9ee0b68ae9 100644 --- a/_maps/_basemap.dm +++ b/_maps/_basemap.dm @@ -1,8 +1,11 @@ -//#define NOOVERMAP //uncomment this to load centcom and runtime station and thats it. -//#define MINIMAL //uncomment this to load a smaller centcomm and smaller runtime station, only works together with NOOVERMAP +/// THE VERY IMPORTANT, FAST DEVELOPER ENVIRONMENT LOADING DEFINE! +/// If you define this flag, centcom will load. It's also supposed to preload planetoids, but that is disabled. +#define FULL_INIT // CELADON EDIT -#ifdef MINIMAL -#define NOOVERMAP +#ifdef FULL_INIT + #include "_mod_celadon\map_files\centcomm_ship.dmm" // [CELADON-ADD] - CELADON_CONFIGS_MAPS +#else + #include "map_files\generic\blank.dmm" #endif #ifdef ALL_MAPS @@ -10,7 +13,3 @@ #include "templates.dm" #endif #endif - -// [CELADON-ADD] - CELADON_CONFIGS_MAPS -#include "_mod_celadon\map_files\centcomm_ship.dmm" -// [/CELADON-ADD] diff --git a/_maps/_mod_celadon/RandomRuins/AnimaRuins/anima_claw_ruin.dmm b/_maps/_mod_celadon/RandomRuins/AnimaRuins/anima_claw_ruin.dmm index 6e2054826cd6..2949556478c9 100644 --- a/_maps/_mod_celadon/RandomRuins/AnimaRuins/anima_claw_ruin.dmm +++ b/_maps/_mod_celadon/RandomRuins/AnimaRuins/anima_claw_ruin.dmm @@ -1101,15 +1101,15 @@ /obj/item/restraints/legcuffs/bola/energy, /obj/item/restraints/legcuffs/bola/energy, /obj/item/restraints/legcuffs/bola/energy, -/obj/item/shield/riot/tele{ +/obj/item/shield/tele{ pixel_x = 8; pixel_y = 4 }, -/obj/item/shield/riot/tele{ +/obj/item/shield/tele{ pixel_x = -7; pixel_y = 4 }, -/obj/item/shield/riot/tele, +/obj/item/shield/tele, /obj/item/reagent_containers/spray/pepper, /obj/item/reagent_containers/spray/pepper, /obj/effect/turf_decal/trimline/opaque/red/warning{ diff --git a/_maps/_mod_celadon/RandomRuins/AnimaRuins/anima_dragon_ice.dmm b/_maps/_mod_celadon/RandomRuins/AnimaRuins/anima_dragon_ice.dmm index b364485aa949..ffcc4042becf 100644 --- a/_maps/_mod_celadon/RandomRuins/AnimaRuins/anima_dragon_ice.dmm +++ b/_maps/_mod_celadon/RandomRuins/AnimaRuins/anima_dragon_ice.dmm @@ -429,7 +429,7 @@ desc = "Some human remains, the only thing that could burn remains to a crisp like this is a plasmafire, or a dragon..." }, /obj/effect/decal/cleanable/ash/large, -/obj/item/shield/riot/roman{ +/obj/item/shield/buckler{ pixel_x = -12 }, /obj/item/melee/sword/claymore{ diff --git a/_maps/_mod_celadon/RandomRuins/AnimaRuins/anima_oldminer.dmm b/_maps/_mod_celadon/RandomRuins/AnimaRuins/anima_oldminer.dmm index 289034afa88b..64344934d027 100644 --- a/_maps/_mod_celadon/RandomRuins/AnimaRuins/anima_oldminer.dmm +++ b/_maps/_mod_celadon/RandomRuins/AnimaRuins/anima_oldminer.dmm @@ -141,7 +141,7 @@ /obj/item/clothing/suit/hooded/cloak/bone{ pixel_y = 3 }, -/obj/item/shield/riot/goliath{ +/obj/item/shield/buckler{ pixel_x = -12; pixel_y = -6 }, diff --git a/_maps/_mod_celadon/RandomRuins/AsteroidRuins/abandoned_remora.dmm b/_maps/_mod_celadon/RandomRuins/AsteroidRuins/abandoned_remora.dmm index a4125f9a6751..241c1274a4a9 100644 --- a/_maps/_mod_celadon/RandomRuins/AsteroidRuins/abandoned_remora.dmm +++ b/_maps/_mod_celadon/RandomRuins/AsteroidRuins/abandoned_remora.dmm @@ -3124,7 +3124,7 @@ /obj/item/radio/intercom/wideband/directional/south{ pixel_x = -6 }, -/obj/item/gun/ballistic/automatic/assault/hydra/dmr/empty{ +/obj/item/gun/ballistic/automatic/assault/hydra/dmr/no_mag{ pixel_x = -4; pixel_y = 2 }, diff --git a/_maps/_mod_celadon/RandomRuins/AsteroidRuins/lima_facility.dmm b/_maps/_mod_celadon/RandomRuins/AsteroidRuins/lima_facility.dmm index a667c462a936..2c8fcc7ac4c4 100644 --- a/_maps/_mod_celadon/RandomRuins/AsteroidRuins/lima_facility.dmm +++ b/_maps/_mod_celadon/RandomRuins/AsteroidRuins/lima_facility.dmm @@ -9948,7 +9948,7 @@ /obj/item/clothing/mask/balaclava/combat, /obj/item/clothing/suit/armor/riot/clip, /obj/item/clothing/head/helmet/riot, -/obj/item/shield/riot, +/obj/item/shield/heavy, /turf/open/floor/plasteel/darkredfull/darkred{ dir = 8 }, @@ -13003,7 +13003,7 @@ /obj/item/clothing/mask/balaclava/combat, /obj/item/clothing/suit/armor/riot/clip, /obj/item/clothing/head/helmet/riot, -/obj/item/shield/riot, +/obj/item/shield/heavy, /turf/open/floor/plasteel/dark_2, /area/ruin/asteroid/limafacility/security) "SB" = ( diff --git a/_maps/_mod_celadon/RandomRuins/BeachRuins/beach_underground_gunsmith.dmm b/_maps/_mod_celadon/RandomRuins/BeachRuins/beach_underground_gunsmith.dmm index eca24f7b8ba5..ab0914a0265a 100644 --- a/_maps/_mod_celadon/RandomRuins/BeachRuins/beach_underground_gunsmith.dmm +++ b/_maps/_mod_celadon/RandomRuins/BeachRuins/beach_underground_gunsmith.dmm @@ -3685,10 +3685,7 @@ /turf/open/floor/concrete/tiles, /area/ruin/beach/gunsmith) "Mb" = ( -/obj/item/gun/energy/plasmacutter{ - pixel_x = -16; - pixel_y = 11 - }, +/obj/item/plasmacutter, /obj/effect/decal/cleanable/oil/slippery, /mob/living/simple_animal/hostile/human/ramzi/civilian{ wander = 0 diff --git a/_maps/_mod_celadon/RandomRuins/IceRuins/icemoon_cultbaroncrash.dmm b/_maps/_mod_celadon/RandomRuins/IceRuins/icemoon_cultbaroncrash.dmm index b066c8e1fdf2..2cf0fdb367e0 100644 --- a/_maps/_mod_celadon/RandomRuins/IceRuins/icemoon_cultbaroncrash.dmm +++ b/_maps/_mod_celadon/RandomRuins/IceRuins/icemoon_cultbaroncrash.dmm @@ -162,7 +162,7 @@ /area/overmap_encounter/planetoid/cave/explored) "wa" = ( /obj/item/clothing/suit/armor/bone, -/turf/open/floor/wood/cold, +/turf/open/floor/wood, /area/overmap_encounter/planetoid/cave/explored) "wk" = ( /obj/structure/rack, @@ -219,7 +219,7 @@ /area/overmap_encounter/planetoid/cave/explored) "Az" = ( /obj/item/clothing/head/bearpelt, -/turf/open/floor/wood/cold, +/turf/open/floor/wood, /area/overmap_encounter/planetoid/cave/explored) "AK" = ( /obj/structure/chair/wood/wings{ @@ -470,7 +470,7 @@ "Xt" = ( /obj/structure/bed, /obj/effect/gibspawner/human/bodypartless, -/turf/open/floor/wood/cold, +/turf/open/floor/wood, /area/overmap_encounter/planetoid/cave/explored) "Ym" = ( /obj/structure/destructible/tribal_torch/lit, @@ -499,7 +499,7 @@ /obj/item/trash/can/food/beans, /obj/item/gun/ballistic/rifle/illestren, /obj/item/melee/knife/bone, -/turf/open/floor/wood/cold, +/turf/open/floor/wood, /area/overmap_encounter/planetoid/cave/explored) "Zm" = ( /obj/item/food/meat/slab/human/mutant/skeleton, diff --git a/_maps/_mod_celadon/RandomRuins/IceRuins/icemoon_hydroponics_lab.dmm b/_maps/_mod_celadon/RandomRuins/IceRuins/icemoon_hydroponics_lab.dmm index 1aba8ede1020..f64bb4a618ad 100644 --- a/_maps/_mod_celadon/RandomRuins/IceRuins/icemoon_hydroponics_lab.dmm +++ b/_maps/_mod_celadon/RandomRuins/IceRuins/icemoon_hydroponics_lab.dmm @@ -281,9 +281,7 @@ /turf/open/floor/plasteel/tech, /area/ruin/powered/hydroponicslab) "gA" = ( -/turf/open/floor/plating/snowed/temperatre{ - initial_gas_mix = "ICEMOON_ATMOS" - }, +/turf/open/floor/plating/snowed/smoothed/icemoon, /area/overmap_encounter/planetoid/cave/explored) "gC" = ( /obj/structure/table, @@ -2173,9 +2171,7 @@ /area/ruin/powered/hydroponicslab) "Wi" = ( /obj/structure/marker_beacon, -/turf/open/floor/plating/snowed/temperatre{ - initial_gas_mix = "ICEMOON_ATMOS" - }, +/turf/open/floor/plating/snowed/smoothed/icemoon, /area/overmap_encounter/planetoid/cave/explored) "WK" = ( /obj/item/stack/cable_coil/yellow{ diff --git a/_maps/_mod_celadon/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm b/_maps/_mod_celadon/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm index 30cffee21c6e..db4508fae2b8 100644 --- a/_maps/_mod_celadon/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm +++ b/_maps/_mod_celadon/RandomRuins/IceRuins/icemoon_surface_corporate_rejects.dmm @@ -2267,7 +2267,7 @@ /turf/open/floor/plating, /area/ruin/unpowered/corprejectvault) "ZM" = ( -/turf/open/floor/plating/snowed/temperatre, +/turf/open/floor/plating/snowed/smoothed/icemoon, /area/ruin/unpowered/corprejectrooms) "ZP" = ( /obj/machinery/airalarm/directional/east, diff --git a/_maps/_mod_celadon/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm b/_maps/_mod_celadon/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm index bc90c5ea9d8c..c55314fb33b3 100644 --- a/_maps/_mod_celadon/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm +++ b/_maps/_mod_celadon/RandomRuins/IceRuins/icemoon_underground_drakelair.dmm @@ -425,7 +425,7 @@ desc = "Some human remains, the only thing that could burn remains to a crisp like this is a plasmafire, or a dragon..." }, /obj/effect/decal/cleanable/ash/large, -/obj/item/shield/riot/roman{ +/obj/item/shield/buckler{ pixel_x = -12 }, /obj/item/melee/sword/claymore{ diff --git a/_maps/_mod_celadon/RandomRuins/JungleRuins/jungle_bombed_starport.dmm b/_maps/_mod_celadon/RandomRuins/JungleRuins/jungle_bombed_starport.dmm index 7ce4cf302eeb..b49020cbf356 100644 --- a/_maps/_mod_celadon/RandomRuins/JungleRuins/jungle_bombed_starport.dmm +++ b/_maps/_mod_celadon/RandomRuins/JungleRuins/jungle_bombed_starport.dmm @@ -3715,7 +3715,7 @@ req_access = list(150,10); populate = 0 }, -/obj/item/gun/energy/plasmacutter, +/obj/item/plasmacutter, /obj/item/clothing/gloves/color/yellow, /obj/item/storage/belt/utility/syndicate, /obj/item/clothing/under/syndicate/gec, diff --git a/_maps/_mod_celadon/RandomRuins/JungleRuins/jungle_nest.dmm b/_maps/_mod_celadon/RandomRuins/JungleRuins/jungle_nest.dmm index 240d9df4a9c8..182014bc1df4 100644 --- a/_maps/_mod_celadon/RandomRuins/JungleRuins/jungle_nest.dmm +++ b/_maps/_mod_celadon/RandomRuins/JungleRuins/jungle_nest.dmm @@ -245,7 +245,7 @@ /obj/structure/alien/weeds, /obj/structure/bed/nest, /obj/item/clothing/head/helmet/riot, -/obj/item/shield/riot, +/obj/item/shield/heavy, /turf/open/floor/plating/asteroid/dirt, /area/overmap_encounter/planetoid/cave/explored) "AI" = ( diff --git a/_maps/_mod_celadon/RandomRuins/JungleRuins/jungle_surface_ikea_ai.dmm b/_maps/_mod_celadon/RandomRuins/JungleRuins/jungle_surface_ikea_ai.dmm index 155972646afe..9c5a28c67768 100644 --- a/_maps/_mod_celadon/RandomRuins/JungleRuins/jungle_surface_ikea_ai.dmm +++ b/_maps/_mod_celadon/RandomRuins/JungleRuins/jungle_surface_ikea_ai.dmm @@ -2520,7 +2520,7 @@ pixel_x = 8; pixel_y = 7 }, -/obj/item/shield/riot/flash{ +/obj/item/shield/heavy{ pixel_x = -6; pixel_y = -5 }, diff --git a/_maps/_mod_celadon/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm b/_maps/_mod_celadon/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm index 760bf98d3a57..41c6544317a7 100644 --- a/_maps/_mod_celadon/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm +++ b/_maps/_mod_celadon/RandomRuins/LavaRuins/lavaland_surface_buried_shrine.dmm @@ -1811,7 +1811,7 @@ pixel_x = 8; pixel_y = 21 }, -/obj/item/shield/riot/goliath{ +/obj/item/shield/buckler{ pixel_x = -12; pixel_y = 16 }, diff --git a/_maps/_mod_celadon/RandomRuins/LavaRuins/lavaland_surface_dwarffortress.dmm b/_maps/_mod_celadon/RandomRuins/LavaRuins/lavaland_surface_dwarffortress.dmm index b531e0220647..c4cfe6eef285 100644 --- a/_maps/_mod_celadon/RandomRuins/LavaRuins/lavaland_surface_dwarffortress.dmm +++ b/_maps/_mod_celadon/RandomRuins/LavaRuins/lavaland_surface_dwarffortress.dmm @@ -238,8 +238,8 @@ /area/overmap_encounter/planetoid/cave/explored) "PB" = ( /obj/structure/table/wood, -/obj/item/shield/riot/buckler, -/obj/item/shield/riot/buckler, +/obj/item/shield/buckler, +/obj/item/shield/buckler, /turf/open/floor/plating/asteroid/basalt, /area/overmap_encounter/planetoid/cave/explored) "PW" = ( diff --git a/_maps/_mod_celadon/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm b/_maps/_mod_celadon/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm index 4c14919ab54d..3cb938aee546 100644 --- a/_maps/_mod_celadon/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm +++ b/_maps/_mod_celadon/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm @@ -1695,7 +1695,7 @@ /turf/open/floor/plating/ashplanet/ash, /area/ruin/unpowered/scorched_hut) "WE" = ( -/obj/item/shield/riot/buckler{ +/obj/item/shield/buckler{ pixel_x = 6; pixel_y = 16 }, diff --git a/_maps/_mod_celadon/RandomRuins/MoonRuins/moon_frontiers_moonbase.dmm b/_maps/_mod_celadon/RandomRuins/MoonRuins/moon_frontiers_moonbase.dmm index 8f8b4b3c3b8f..300c6f85edee 100644 --- a/_maps/_mod_celadon/RandomRuins/MoonRuins/moon_frontiers_moonbase.dmm +++ b/_maps/_mod_celadon/RandomRuins/MoonRuins/moon_frontiers_moonbase.dmm @@ -351,7 +351,7 @@ /area/ruin/moon/moonbase/refinery) "cM" = ( /obj/structure/closet/toolcloset/empty, -/obj/item/gun/energy/plasmacutter, +/obj/item/plasmacutter, /obj/item/storage/toolbox/electrical, /obj/item/storage/toolbox/mechanical, /obj/item/clothing/glasses/welding, diff --git a/_maps/_mod_celadon/RandomRuins/PlasmaRuins/oldminer.dmm b/_maps/_mod_celadon/RandomRuins/PlasmaRuins/oldminer.dmm index 10af81dcf857..d3e8ff1bdb37 100644 --- a/_maps/_mod_celadon/RandomRuins/PlasmaRuins/oldminer.dmm +++ b/_maps/_mod_celadon/RandomRuins/PlasmaRuins/oldminer.dmm @@ -140,7 +140,7 @@ /obj/item/clothing/suit/hooded/cloak/bone{ pixel_y = 3 }, -/obj/item/shield/riot/goliath{ +/obj/item/shield/buckler{ pixel_x = -12; pixel_y = -6 }, diff --git a/_maps/_mod_celadon/RandomRuins/RockRuins/rockplanet_harmfactory.dmm b/_maps/_mod_celadon/RandomRuins/RockRuins/rockplanet_harmfactory.dmm index b9fb86484131..9693d6e67b28 100644 --- a/_maps/_mod_celadon/RandomRuins/RockRuins/rockplanet_harmfactory.dmm +++ b/_maps/_mod_celadon/RandomRuins/RockRuins/rockplanet_harmfactory.dmm @@ -451,7 +451,7 @@ /obj/structure/cable{ icon_state = "0-8" }, -/obj/item/gun/energy/plasmacutter/adv, +/obj/item/plasmacutter, /turf/open/floor/plating/rust, /area/ruin/powered) "kU" = ( @@ -578,7 +578,7 @@ pixel_x = -4; pixel_y = 4 }, -/obj/item/shield/riot{ +/obj/item/shield/heavy{ pixel_x = 5; pixel_y = 1 }, diff --git a/_maps/_mod_celadon/RandomRuins/SandRuins/whitesands_surface_camp_saloon.dmm b/_maps/_mod_celadon/RandomRuins/SandRuins/whitesands_surface_camp_saloon.dmm index 5c545fa038f5..269bb4475511 100644 --- a/_maps/_mod_celadon/RandomRuins/SandRuins/whitesands_surface_camp_saloon.dmm +++ b/_maps/_mod_celadon/RandomRuins/SandRuins/whitesands_surface_camp_saloon.dmm @@ -1025,13 +1025,7 @@ /obj/structure/closet/cabinet, /obj/effect/spawner/random/maintenance/two, /obj/effect/decal/cleanable/dirt, -/obj/item/gun/energy/plasmacutter{ - icon_state = "pulse_carbine"; - name = "pulse rifle"; - desc = "A supposedly heavy-duty, multifaceted energy rifle. The barrel looks off and the casing seems to be made of plastic"; - item_state = "pulse"; - icon = 'icons/obj/guns/manufacturer/nanotrasen_sharplite/48x32.dmi' - }, +/obj/item/plasmacutter, /turf/open/floor/wood, /area/ruin/whitesands/saloon) "EY" = ( diff --git a/_maps/_mod_celadon/RandomRuins/SandRuins/whitesands_surface_chokepoint.dmm b/_maps/_mod_celadon/RandomRuins/SandRuins/whitesands_surface_chokepoint.dmm index 2dce7c678c80..2626cd5bdafd 100644 --- a/_maps/_mod_celadon/RandomRuins/SandRuins/whitesands_surface_chokepoint.dmm +++ b/_maps/_mod_celadon/RandomRuins/SandRuins/whitesands_surface_chokepoint.dmm @@ -72,7 +72,7 @@ /obj/item/clothing/head/helmet/knight/blue, /obj/item/clothing/suit/armor/riot/knight/blue, /obj/item/melee/spear, -/obj/item/shield/riot/buckler, +/obj/item/shield/buckler, /turf/open/floor/plating/asteroid/whitesands, /area/ruin) "u" = ( diff --git a/_maps/_mod_celadon/RandomRuins/SandRuins/whitesands_surface_ruinsofweh.dmm b/_maps/_mod_celadon/RandomRuins/SandRuins/whitesands_surface_ruinsofweh.dmm index 2d4359a6e581..4307debccd46 100644 --- a/_maps/_mod_celadon/RandomRuins/SandRuins/whitesands_surface_ruinsofweh.dmm +++ b/_maps/_mod_celadon/RandomRuins/SandRuins/whitesands_surface_ruinsofweh.dmm @@ -1945,7 +1945,7 @@ /obj/item/clothing/mask/mummy, /obj/item/clothing/under/costume/mummy, /obj/item/melee/sword/scrap, -/obj/item/shield/riot/goliath, +/obj/item/shield/buckler, /obj/item/clothing/head/hooded/cloakhood/bone, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/rockvault/sandstone, diff --git a/_maps/_mod_celadon/RandomRuins/SpaceRuins/provinggrounds.dmm b/_maps/_mod_celadon/RandomRuins/SpaceRuins/provinggrounds.dmm index 4f484001a9f3..c22baabaf735 100644 --- a/_maps/_mod_celadon/RandomRuins/SpaceRuins/provinggrounds.dmm +++ b/_maps/_mod_celadon/RandomRuins/SpaceRuins/provinggrounds.dmm @@ -721,9 +721,6 @@ }, /turf/open/floor/mineral/titanium/white, /area/ruin/space/has_grav/astraeus/munitions) -"tV" = ( -/turf/open/floor/mineral/titanium/white, -/area/ruin/space/has_grav/astraeus/munitions) "tZ" = ( /obj/effect/turf_decal/techfloor{ dir = 4 @@ -3926,7 +3923,7 @@ kc mB pt sE -tV +pb wb wp fO diff --git a/_maps/_mod_celadon/RandomRuins/SpaceRuins/scrapstation.dmm b/_maps/_mod_celadon/RandomRuins/SpaceRuins/scrapstation.dmm index 532f6713c4eb..ff9fa1aa991f 100644 --- a/_maps/_mod_celadon/RandomRuins/SpaceRuins/scrapstation.dmm +++ b/_maps/_mod_celadon/RandomRuins/SpaceRuins/scrapstation.dmm @@ -4883,7 +4883,7 @@ "Bg" = ( /obj/structure/guncloset, /obj/structure/window/reinforced, -/obj/item/gun/ballistic/automatic/assault/hydra/dmr/empty, +/obj/item/gun/ballistic/automatic/assault/hydra/dmr/no_mag, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/powered/ramzi_station/armory) "Bi" = ( diff --git a/_maps/_mod_celadon/RandomRuins/WasteRuins/wasteplanet_claw_ruin.dmm b/_maps/_mod_celadon/RandomRuins/WasteRuins/wasteplanet_claw_ruin.dmm index 8417098821bb..703f914c0ba4 100644 --- a/_maps/_mod_celadon/RandomRuins/WasteRuins/wasteplanet_claw_ruin.dmm +++ b/_maps/_mod_celadon/RandomRuins/WasteRuins/wasteplanet_claw_ruin.dmm @@ -1100,15 +1100,15 @@ /obj/item/restraints/legcuffs/bola/energy, /obj/item/restraints/legcuffs/bola/energy, /obj/item/restraints/legcuffs/bola/energy, -/obj/item/shield/riot/tele{ +/obj/item/shield/tele{ pixel_x = 8; pixel_y = 4 }, -/obj/item/shield/riot/tele{ +/obj/item/shield/tele{ pixel_x = -7; pixel_y = 4 }, -/obj/item/shield/riot/tele, +/obj/item/shield/tele, /obj/item/reagent_containers/spray/pepper, /obj/item/reagent_containers/spray/pepper, /obj/effect/turf_decal/trimline/opaque/red/warning{ diff --git a/_maps/_mod_celadon/map_files/centcomm_ship.dmm b/_maps/_mod_celadon/map_files/centcomm_ship.dmm index a602ea595510..d268a6bd0e38 100644 --- a/_maps/_mod_celadon/map_files/centcomm_ship.dmm +++ b/_maps/_mod_celadon/map_files/centcomm_ship.dmm @@ -1036,7 +1036,7 @@ "cU" = ( /obj/machinery/computer/cargo/faction/syndicate{ dir = 1; - icon_state = "computer-middle" + icon_state = "computer-right" }, /obj/machinery/light/directional/south, /obj/effect/turf_decal/corner/transparent/bar/full, @@ -2937,12 +2937,9 @@ /turf/open/floor/plasteel/darkredfull, /area/centcom) "iu" = ( -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/warning/corner, -/obj/effect/turf_decal/corner/transparent/brown{ - dir = 5 +/obj/effect/turf_decal/corner/transparent/brown/full, +/obj/effect/turf_decal/industrial/fire/corner{ + dir = 4 }, /turf/open/floor/plasteel/dark, /area/centcom/supplypod) @@ -4540,7 +4537,7 @@ /area/abductor_ship) "mY" = ( /obj/structure/table/reinforced/plastitaniumglass, -/obj/item/gun/energy/plasmacutter/adv, +/obj/item/plasmacutter, /turf/open/floor/plasteel/dark_2, /area/centcom/ferry) "mZ" = ( @@ -11525,13 +11522,15 @@ /turf/open/floor/plasteel/darkredfull, /area/centcom/ferry) "Ho" = ( -/obj/machinery/computer/cargo/faction{ - dir = 1; - icon_state = "computer-right" +/obj/effect/turf_decal/corner/transparent/brown{ + dir = 5 + }, +/obj/effect/turf_decal/industrial/warning/corner, +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 8 }, -/obj/effect/turf_decal/corner/transparent/bar/full, /turf/open/floor/plasteel/dark, -/area/outpost/cargo/faction) +/area/centcom/supplypod) "Hp" = ( /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/breaching, /obj/structure/table/reinforced/plastitaniumglass, @@ -12756,11 +12755,6 @@ }, /turf/open/floor/plasteel/white, /area/centcom/control) -"KV" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/gun/energy/plasmacutter, -/turf/open/floor/plasteel/dark_2, -/area/centcom/ferry) "KW" = ( /obj/structure/flora/ausbushes/lavendergrass, /obj/structure/flora/ausbushes/brflowers, @@ -15077,10 +15071,8 @@ /turf/open/floor/plasteel, /area/tdome/tdomeobserve) "Rn" = ( -/obj/effect/turf_decal/industrial/fire/corner{ - dir = 4 - }, -/obj/effect/turf_decal/corner/transparent/brown/full, +/obj/effect/turf_decal/corner/transparent/bar/full, +/obj/structure/table/reinforced, /turf/open/floor/plasteel/dark, /area/centcom/supplypod) "Ro" = ( @@ -16088,8 +16080,8 @@ /turf/open/floor/plasteel/dark, /area/centcom/control) "Ue" = ( -/obj/effect/turf_decal/industrial/fire/corner, /obj/effect/turf_decal/corner/transparent/brown/full, +/obj/effect/turf_decal/industrial/fire/corner, /turf/open/floor/plasteel/dark, /area/centcom/supplypod) "Uf" = ( @@ -47536,7 +47528,7 @@ mu mh WC mY -KV +mY eb uw AW @@ -51378,13 +51370,13 @@ gO fx WM Di -Ue -xa -xa -xa +Od +Od +Od +Od +Od +LW Rn -iu -Cd Cd bg UO @@ -51571,14 +51563,14 @@ gO fx fo Di -qr -mM -bx -xF -LJ -GR +Ue +xa +xa +xa +iu Ho Cd +Cd PW UO rI @@ -51765,9 +51757,9 @@ fx Cd PZ qr -PC -Ol -QT +mM +bx +xF LJ GR cU diff --git a/_maps/_mod_celadon/map_files/runtime_check_map.dmm b/_maps/_mod_celadon/map_files/runtime_check_map.dmm index 8697fd136007..d6a46b6451bc 100644 --- a/_maps/_mod_celadon/map_files/runtime_check_map.dmm +++ b/_maps/_mod_celadon/map_files/runtime_check_map.dmm @@ -179,10 +179,6 @@ /obj/item/dice/d12, /obj/item/dice/d2, /obj/item/dice/d20, -/obj/item/dice/d20/fate, -/obj/item/dice/d20/fate/cursed, -/obj/item/dice/d20/fate/one_use, -/obj/item/dice/d20/fate/stealth, /obj/item/dice/d4, /obj/item/dice/d6, /obj/item/dice/d8, @@ -638,12 +634,12 @@ /obj/item/shield/changeling, /obj/item/shield/energy, /obj/item/shield/energy/bananium, -/obj/item/shield/riot, -/obj/item/shield/riot/buckler, -/obj/item/shield/riot/flash, -/obj/item/shield/riot/goliath, -/obj/item/shield/riot/roman, -/obj/item/shield/riot/tele, +/obj/item/shield/heavy, +/obj/item/shield/buckler, +/obj/item/shield/heavy, +/obj/item/shield/buckler, +/obj/item/shield/buckler, +/obj/item/shield/tele, /obj/item/ship_in_a_bottle, /obj/item/shockpaddles, /obj/item/shockpaddles/cyborg, @@ -882,7 +878,6 @@ /obj/item/ammo_box/magazine/m45/hp, /obj/item/ammo_box/magazine/m9mm_cm70, /obj/item/ammo_box/magazine/m9mm_mauler, -/obj/item/ammo_box/magazine/recharge/ctf/blue, /obj/item/ammo_box/magazine/skm_762_40/drum, /obj/item/ammo_box/magazine/sniper_rounds/penetrator, /obj/item/ammo_box/magazine/toy/pistol/riot, @@ -1489,9 +1484,6 @@ "jR" = ( /turf/open/space/basic, /area/outpost/crew/lounge/cab_4) -"jT" = ( -/turf/open/floor/wood/cold, -/area/space) "jZ" = ( /turf/open/space/basic, /area/start) @@ -1746,9 +1738,6 @@ /obj/item/ammo_box/magazine/pistol556mm, /obj/item/ammo_box/magazine/recharge, /obj/item/ammo_box/magazine/recharge, -/obj/item/ammo_box/magazine/recharge/ctf, -/obj/item/ammo_box/magazine/recharge/ctf/red, -/obj/item/ammo_box/magazine/recharge/ctf/blue, /obj/item/ammo_box/magazine/rifle47x33mm, /obj/item/ammo_box/magazine/skm_762_40, /obj/item/ammo_box/magazine/skm_762_40, @@ -1792,8 +1781,6 @@ /obj/item/ammo_casing/a4570/explosive, /obj/item/ammo_casing/a4570/hp, /obj/item/ammo_casing/a4570/match, -/obj/item/ammo_casing/a50, -/obj/item/ammo_casing/a50/ctf, /obj/item/ammo_casing/a556_42, /obj/item/ammo_casing/a556_45, /obj/item/ammo_casing/a556_45/a856, @@ -1849,9 +1836,6 @@ /obj/item/ammo_casing/caseless/gauss/lance, /obj/item/ammo_casing/caseless/gauss/slug, /obj/item/ammo_casing/caseless/laser, -/obj/item/ammo_casing/caseless/laser/ctf, -/obj/item/ammo_casing/caseless/laser/ctf/blue, -/obj/item/ammo_casing/caseless/laser/ctf/red, /obj/item/ammo_casing/caseless/rocket, /obj/item/ammo_casing/caseless/rocket/a70mm, /obj/item/ammo_casing/caseless/rocket/hedp, @@ -4051,7 +4035,7 @@ /obj/item/grown/log/steel, /obj/item/grown/log/bamboo, /obj/item/gun, -/obj/item/gun/energy/plasmacutter, +/obj/item/plasmacutter, /obj/item/gun/ballistic, /obj/item/gun/energy, /obj/item/gun/ballistic/automatic/powered, @@ -4207,8 +4191,8 @@ /obj/item/gun/energy/mindflayer, /obj/item/gun/energy/kinetic_accelerator/crossbow, /obj/item/gun/energy/kinetic_accelerator/crossbow/large, -/obj/item/gun/energy/plasmacutter, -/obj/item/gun/energy/plasmacutter/adv, +/obj/item/plasmacutter, +/obj/item/plasmacutter, /obj/item/gun/energy/wormhole_projector, /obj/item/gun/energy/printer, /obj/item/gun/energy/printer/commando, @@ -6196,11 +6180,8 @@ /obj/item/clothing/suit/radiation/space, /obj/item/clothing/suit/bronze, /obj/item/clothing/head/bunnyhead, -, /obj/item/clothing/suit/bunnysuit, -, /obj/item/clothing/head/collectable/rabbitears, -, /obj/item/clothing/suit/changshan_red, /obj/item/clothing/suit/changshan_blue, /obj/item/clothing/suit/chaplainsuit, @@ -6616,8 +6597,6 @@ /obj/item/clothing/under/tajaran/laborer, /obj/item/clothing/under/tajaran/fancy, /obj/item/clothing/under/tajaran/fancy/evening_suit, -/obj/item/clothing/wrists/watch/tajaran, -/obj/item/clothing/wrists/watch/tajaran/female, /obj/item/clothing/accessory/tajaran, /obj/item/clothing/accessory/tajaran/charm/raskariim, /obj/item/clothing/gloves/ring/diamond, @@ -8288,7 +8267,6 @@ /obj/machinery/computer/helm/viewscreen, /obj/machinery/computer/helm/viewscreen/computer, /obj/machinery/drill/mission, -/obj/machinery/mission_scanner, /obj/machinery/elevator_call_button, /obj/machinery/elevator_floor_button, /obj/machinery/status_display/elevator, @@ -10292,9 +10270,6 @@ "ri" = ( /turf/open/floor/holofloor/snow, /area/space) -"rl" = ( -/turf/open/floor/plating/snowed/temperatre, -/area/space) "rn" = ( /turf/open/floor/grass/fairy/reebe, /area/space) @@ -10391,9 +10366,6 @@ "sF" = ( /turf/open/floor/bronze, /area/space) -"sG" = ( -/turf/open/floor/plating/snowed/colder, -/area/space) "sK" = ( /turf/open/floor/carpet/nanoweave, /area/space) @@ -11467,9 +11439,6 @@ "JF" = ( /turf/open/floor/plasteel/patterned/rockplanet, /area/space) -"JK" = ( -/turf/open/floor/plating/ice/colder, -/area/space) "JL" = ( /turf/open/space/basic, /area/ship/security/prison) @@ -11969,7 +11938,6 @@ /area/ruin/lavaland/factory) "QT" = ( /turf/open/floor/plating/asteroid/rockplanet/wet, -/area/space, /area/space) "QW" = ( /turf/open/floor/circuit/green/off, @@ -13649,7 +13617,7 @@ jm Hj az zj -jT +Ev Wk jc yR @@ -13741,7 +13709,7 @@ tj DZ ZJ as -rl +wh cD oA Km @@ -13808,7 +13776,7 @@ gR KK Ls zJ -JK +PH bw Zj rh @@ -15108,7 +15076,7 @@ vb wf Am Kp -sG +PH mO lJ rh diff --git a/_maps/_mod_celadon/outpost/elysium_ice.dmm b/_maps/_mod_celadon/outpost/elysium_ice.dmm index e513f5700176..7394c60a57ec 100644 --- a/_maps/_mod_celadon/outpost/elysium_ice.dmm +++ b/_maps/_mod_celadon/outpost/elysium_ice.dmm @@ -4784,16 +4784,6 @@ /obj/item/desk_flag/trans, /turf/open/floor/wood/maple, /area/outpost/fraction/solfed) -"cJN" = ( -/obj/effect/turf_decal/siding/green{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/transparent/lime/corner{ - dir = 4 - }, -/obj/machinery/light/directional/west, -/turf/open/floor/plasteel/darkgreenfull, -/area/outpost/cargo/faction) "cKu" = ( /turf/closed/indestructible/wood, /area/outpost/exterior) @@ -23499,12 +23489,8 @@ /area/outpost/fraction/nanotrasen) "mLc" = ( /obj/structure/extinguisher_cabinet/directional/east, -/obj/machinery/computer/cargo/faction{ - dir = 8; - icon_state = "computer-left" - }, /turf/open/floor/plasteel/tech, -/area/outpost/cargo/faction) +/area/outpost/operations/outpost_command) "mLn" = ( /obj/structure/spider/stickyweb{ color = "#808080" @@ -27965,13 +27951,6 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/outpost/engineering/atmospherics) -"pfe" = ( -/obj/effect/turf_decal/siding/green{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/transparent/lime/corner, -/turf/open/floor/plasteel/darkgreenfull, -/area/outpost/cargo/faction) "pfq" = ( /obj/machinery/power/rtg/geothermal, /obj/structure/cable/yellow{ @@ -39800,15 +39779,6 @@ }, /turf/open/floor/plasteel/dark_2, /area/outpost/medical/chemestry) -"vNS" = ( -/obj/effect/turf_decal/siding/green{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/transparent/lime/corner{ - dir = 1 - }, -/turf/open/floor/plasteel/darkgreenfull, -/area/outpost/cargo/faction) "vOh" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -40817,15 +40787,6 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/mineral/plastitanium, /area/outpost/cargo/faction/syndicate) -"wlp" = ( -/obj/effect/turf_decal/siding/green{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/transparent/lime/corner{ - dir = 8 - }, -/turf/open/floor/plasteel/darkgreenfull, -/area/outpost/cargo/faction) "wlq" = ( /turf/closed/indestructible/titanium/nodiagnonal, /area/outpost/medical/morgue) @@ -57753,8 +57714,8 @@ oNe tZQ lDx wMX -pfe -cJN +oII +chA otc dDZ oII @@ -57940,8 +57901,8 @@ oNe wMX waL wMX -wlp -vNS +oII +oII oII oII oII diff --git a/_maps/_mod_celadon/shuttles/independent/independent_clandestine.dmm b/_maps/_mod_celadon/shuttles/independent/independent_clandestine.dmm index 16338a4d496b..48427e2f223d 100644 --- a/_maps/_mod_celadon/shuttles/independent/independent_clandestine.dmm +++ b/_maps/_mod_celadon/shuttles/independent/independent_clandestine.dmm @@ -1188,7 +1188,7 @@ pixel_y = 4; pixel_x = -1 }, -/obj/item/gun/energy/plasmacutter/adv, +/obj/item/plasmacutter, /obj/item/pickaxe/drill/jackhammer, /turf/open/floor/mineral/plastitanium, /area/ship/engineering) diff --git a/_maps/_mod_celadon/shuttles/independent/independent_mudskipper.dmm b/_maps/_mod_celadon/shuttles/independent/independent_mudskipper.dmm index 0d7dc19ae5fc..984bc6edfb15 100644 --- a/_maps/_mod_celadon/shuttles/independent/independent_mudskipper.dmm +++ b/_maps/_mod_celadon/shuttles/independent/independent_mudskipper.dmm @@ -2038,18 +2038,9 @@ /obj/structure/table/reinforced{ color = "#c1b6a5" }, -/obj/item/gun/energy/plasmacutter{ - pixel_x = -9; - pixel_y = 3 - }, -/obj/item/gun/energy/plasmacutter{ - pixel_x = -2; - pixel_y = -3 - }, -/obj/item/gun/energy/plasmacutter{ - pixel_x = 2; - pixel_y = -9 - }, +/obj/item/plasmacutter, +/obj/item/plasmacutter, +/obj/item/plasmacutter, /turf/open/floor/plasteel/tech/grid, /area/ship/cargo) "OO" = ( diff --git a/_maps/_mod_celadon/shuttles/independent/independent_ramo.dmm b/_maps/_mod_celadon/shuttles/independent/independent_ramo.dmm index 56e4808f929b..8e53a1af8477 100644 --- a/_maps/_mod_celadon/shuttles/independent/independent_ramo.dmm +++ b/_maps/_mod_celadon/shuttles/independent/independent_ramo.dmm @@ -897,7 +897,7 @@ icon_state = "rwindow"; dir = 1 }, -/obj/item/gun/energy/plasmacutter, +/obj/item/plasmacutter, /obj/item/storage/belt/military, /obj/item/storage/bag/construction, /obj/item/clothing/glasses/meson, @@ -1261,7 +1261,7 @@ dir = 4 }, /obj/structure/window/reinforced, -/obj/item/gun/energy/plasmacutter, +/obj/item/plasmacutter, /obj/item/storage/belt/military, /obj/item/storage/bag/construction, /obj/item/clothing/glasses/meson, diff --git a/_maps/_mod_celadon/shuttles/inteq/inteq_executioner.dmm b/_maps/_mod_celadon/shuttles/inteq/inteq_executioner.dmm index 427226c12817..cd142bf26c78 100644 --- a/_maps/_mod_celadon/shuttles/inteq/inteq_executioner.dmm +++ b/_maps/_mod_celadon/shuttles/inteq/inteq_executioner.dmm @@ -238,8 +238,8 @@ req_access_txt = "1" }, /obj/item/clothing/suit/armor/laserproof, -/obj/item/shield/riot/tele, -/obj/item/shield/riot/tele, +/obj/item/shield/tele, +/obj/item/shield/tele, /obj/effect/turf_decal/techfloor{ dir = 5 }, diff --git a/_maps/_mod_celadon/shuttles/inteq/inteq_hammerhead.dmm b/_maps/_mod_celadon/shuttles/inteq/inteq_hammerhead.dmm index daf90eabdf06..eb0b6413b765 100644 --- a/_maps/_mod_celadon/shuttles/inteq/inteq_hammerhead.dmm +++ b/_maps/_mod_celadon/shuttles/inteq/inteq_hammerhead.dmm @@ -4005,7 +4005,7 @@ /obj/item/radio/headset/inteq/alt, /obj/item/clothing/accessory/holster, /obj/item/clothing/suit/armor/vest/inteq, -/obj/item/shield/riot/tele, +/obj/item/shield/tele, /obj/item/clothing/head/helmet/swat, /obj/item/clothing/glasses/hud/security/sunglasses/inteq, /obj/item/ammo_box/magazine/usp45_standart, diff --git a/_maps/_mod_celadon/shuttles/inteq/inteq_hound.dmm b/_maps/_mod_celadon/shuttles/inteq/inteq_hound.dmm index f51fa23b7699..022bbaf1b938 100644 --- a/_maps/_mod_celadon/shuttles/inteq/inteq_hound.dmm +++ b/_maps/_mod_celadon/shuttles/inteq/inteq_hound.dmm @@ -963,7 +963,7 @@ /obj/item/clothing/suit/armor/hos/inteq, /obj/item/clothing/head/beret/sec/hos/inteq, /obj/item/radio/headset/inteq/alt/captain, -/obj/item/shield/riot/tele, +/obj/item/shield/tele, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/item/gun/ballistic/revolver/horizonx, /obj/item/ammo_box/a357, diff --git a/_maps/_mod_celadon/shuttles/inteq/inteq_talos.dmm b/_maps/_mod_celadon/shuttles/inteq/inteq_talos.dmm index 9b4e75d79cc5..90eaf23d811e 100644 --- a/_maps/_mod_celadon/shuttles/inteq/inteq_talos.dmm +++ b/_maps/_mod_celadon/shuttles/inteq/inteq_talos.dmm @@ -7976,7 +7976,7 @@ /obj/item/clothing/under/syndicate/inteq, /obj/item/clothing/suit/armor/hos/inteq, /obj/item/clothing/head/beret/sec/hos/inteq, -/obj/item/shield/riot/tele, +/obj/item/shield/tele, /obj/structure/closet/secure_closet{ anchored = 1; can_be_unanchored = 1; diff --git a/_maps/_mod_celadon/shuttles/inteq/inteq_vaquero.dmm b/_maps/_mod_celadon/shuttles/inteq/inteq_vaquero.dmm index 5861a0e3e01e..924860eadaec 100644 --- a/_maps/_mod_celadon/shuttles/inteq/inteq_vaquero.dmm +++ b/_maps/_mod_celadon/shuttles/inteq/inteq_vaquero.dmm @@ -3587,11 +3587,11 @@ pixel_x = -5; pixel_y = 5 }, -/obj/item/shield/riot/spike{ +/obj/item/shield/heavy{ pixel_x = 4; pixel_y = 0 }, -/obj/item/shield/riot/spike{ +/obj/item/shield/heavy{ pixel_x = 0; pixel_y = -1 }, diff --git a/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_daggerfall.dmm b/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_daggerfall.dmm index c38045eb43d7..12eb28b4c575 100644 --- a/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_daggerfall.dmm +++ b/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_daggerfall.dmm @@ -773,7 +773,7 @@ icon_state = "duffel-sec"; name = "breaching charges duffel bag" }, -/obj/item/shield/riot/tele{ +/obj/item/shield/tele{ pixel_x = -7; pixel_y = 4 }, diff --git a/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_darect.dmm b/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_darect.dmm index 7ee0a3a126fa..7d5999652902 100644 --- a/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_darect.dmm +++ b/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_darect.dmm @@ -1504,15 +1504,15 @@ /obj/item/restraints/legcuffs/bola/energy, /obj/item/restraints/legcuffs/bola/energy, /obj/item/restraints/legcuffs/bola/energy, -/obj/item/shield/riot/tele{ +/obj/item/shield/tele{ pixel_x = 8; pixel_y = 4 }, -/obj/item/shield/riot/tele{ +/obj/item/shield/tele{ pixel_x = -7; pixel_y = 4 }, -/obj/item/shield/riot/tele, +/obj/item/shield/tele, /obj/item/reagent_containers/spray/pepper, /obj/item/reagent_containers/spray/pepper, /obj/effect/turf_decal/corner/opaque/vired/half{ diff --git a/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_heron.dmm b/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_heron.dmm index 8301c8fa0d99..5789bcf8800b 100644 --- a/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_heron.dmm +++ b/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_heron.dmm @@ -2192,7 +2192,7 @@ req_access_txt = "1" }, /obj/item/storage/box/handcuffs, -/obj/item/shield/riot/tele, +/obj/item/shield/tele, /obj/item/restraints/legcuffs/bola/energy, /obj/item/storage/box/flashes, /obj/item/melee/knife/combat, @@ -8757,7 +8757,7 @@ name = "ERT commander's locker"; req_access_txt = "1" }, -/obj/item/shield/riot/flash, +/obj/item/shield/heavy, /obj/item/restraints/legcuffs/bola/energy, /obj/item/restraints/legcuffs/bola/energy, /obj/item/restraints/legcuffs/bola/energy, @@ -12374,7 +12374,7 @@ req_access_txt = "1" }, /obj/item/storage/box/handcuffs, -/obj/item/shield/riot/tele, +/obj/item/shield/tele, /obj/item/restraints/legcuffs/bola/energy, /obj/item/storage/box/flashes, /obj/item/melee/knife/combat, @@ -13309,7 +13309,7 @@ req_access_txt = "1" }, /obj/item/storage/box/handcuffs, -/obj/item/shield/riot/tele, +/obj/item/shield/tele, /obj/item/restraints/legcuffs/bola/energy, /obj/item/storage/box/flashes, /obj/item/melee/knife/combat, diff --git a/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_mimir.dmm b/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_mimir.dmm index 7968ca6b6e6a..20d6c4c2a6b9 100644 --- a/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_mimir.dmm +++ b/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_mimir.dmm @@ -5778,7 +5778,7 @@ /obj/item/gun/ballistic/shotgun/hellfire, /obj/item/storage/box/rubbershot, /obj/item/clothing/suit/armor/riot, -/obj/item/shield/riot, +/obj/item/shield/heavy, /obj/item/clothing/head/helmet/riot, /obj/effect/turf_decal/siding/red{ dir = 1 diff --git a/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_ranger.dmm b/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_ranger.dmm index cc67cdf13cbf..9fdd3205d8a2 100644 --- a/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_ranger.dmm +++ b/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_ranger.dmm @@ -3667,8 +3667,8 @@ }, /obj/item/storage/lockbox/medal, /obj/item/clothing/gloves/krav_maga/sec, -/obj/item/shield/riot/tele, -/obj/item/shield/riot/tele, +/obj/item/shield/tele, +/obj/item/shield/tele, /turf/open/floor/wood, /area/ship/crew/dorm/captain) "Hd" = ( diff --git a/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_teardrop.dmm b/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_teardrop.dmm index 48d71a0c59c1..d3d9dba96496 100644 --- a/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_teardrop.dmm +++ b/_maps/_mod_celadon/shuttles/nanotrasen/nanotrasen_teardrop.dmm @@ -4593,10 +4593,7 @@ /obj/effect/turf_decal/techfloor{ dir = 9 }, -/obj/item/gun/energy/plasmacutter{ - pixel_y = 3; - pixel_x = -1 - }, +/obj/item/plasmacutter, /turf/open/floor/plasteel/dark, /area/ship/cargo) "Ys" = ( diff --git a/_maps/_mod_celadon/shuttles/pirate/pirate_crying_sun.dmm b/_maps/_mod_celadon/shuttles/pirate/pirate_crying_sun.dmm index ad1c968f0071..36eadd5dca24 100644 --- a/_maps/_mod_celadon/shuttles/pirate/pirate_crying_sun.dmm +++ b/_maps/_mod_celadon/shuttles/pirate/pirate_crying_sun.dmm @@ -3834,11 +3834,11 @@ pixel_x = 2; pixel_y = -2 }, -/obj/item/shield/riot{ +/obj/item/shield/heavy{ pixel_x = -4; pixel_y = -4 }, -/obj/item/shield/riot/buckler{ +/obj/item/shield/buckler{ pixel_x = 6; pixel_y = -3 }, diff --git a/_maps/_mod_celadon/shuttles/pirate/pirate_jupiter.dmm b/_maps/_mod_celadon/shuttles/pirate/pirate_jupiter.dmm index e636b0a8bcd7..ec3335074661 100644 --- a/_maps/_mod_celadon/shuttles/pirate/pirate_jupiter.dmm +++ b/_maps/_mod_celadon/shuttles/pirate/pirate_jupiter.dmm @@ -1028,7 +1028,7 @@ /obj/effect/turf_decal/box, /obj/item/pickaxe/drill, /obj/item/pickaxe/drill, -/obj/item/gun/energy/plasmacutter, +/obj/item/plasmacutter, /obj/structure/closet/crate{ name = "extraction kit"; anchored = 1 @@ -1377,11 +1377,11 @@ pixel_x = 1; pixel_y = -3 }, -/obj/item/shield/riot/flash{ +/obj/item/shield/heavy{ pixel_x = -8; pixel_y = 5 }, -/obj/item/shield/riot/flash{ +/obj/item/shield/heavy{ pixel_x = -4; pixel_y = 3 }, diff --git a/_maps/_mod_celadon/shuttles/pirate/pirate_libertatia.dmm b/_maps/_mod_celadon/shuttles/pirate/pirate_libertatia.dmm index 5bd5fd856302..93dde3e34a3b 100644 --- a/_maps/_mod_celadon/shuttles/pirate/pirate_libertatia.dmm +++ b/_maps/_mod_celadon/shuttles/pirate/pirate_libertatia.dmm @@ -1888,10 +1888,7 @@ pixel_y = 3 }, /obj/item/pickaxe, -/obj/item/gun/energy/plasmacutter{ - pixel_x = 3; - pixel_y = -6 - }, +/obj/item/plasmacutter, /obj/item/clothing/head/hardhat/mining{ pixel_x = 5; pixel_y = 0 diff --git a/_maps/_mod_celadon/shuttles/pirate/pirate_rondo.dmm b/_maps/_mod_celadon/shuttles/pirate/pirate_rondo.dmm index d24d3c4aeceb..3e32f712d23f 100644 --- a/_maps/_mod_celadon/shuttles/pirate/pirate_rondo.dmm +++ b/_maps/_mod_celadon/shuttles/pirate/pirate_rondo.dmm @@ -419,7 +419,7 @@ dir = 8 }, /obj/effect/turf_decal/box/red, -/obj/item/shield/riot, +/obj/item/shield/heavy, /obj/item/melee/powerfist, /turf/open/floor/mineral/plastitanium, /area/ship/security/armory) @@ -2051,10 +2051,7 @@ pixel_x = -3; pixel_y = 18 }, -/obj/item/gun/energy/plasmacutter{ - pixel_y = 2; - pixel_x = -2 - }, +/obj/item/plasmacutter, /turf/open/floor/plasteel/tech, /area/ship/cargo) "Am" = ( diff --git a/_maps/_mod_celadon/shuttles/pirate/pirate_stingray.dmm b/_maps/_mod_celadon/shuttles/pirate/pirate_stingray.dmm index ac127150fe69..89ad07568b17 100644 --- a/_maps/_mod_celadon/shuttles/pirate/pirate_stingray.dmm +++ b/_maps/_mod_celadon/shuttles/pirate/pirate_stingray.dmm @@ -2491,12 +2491,7 @@ desc = "\"Top Secret\" The documents contain data on flights and reconnaissance of remote sectors. It is impossible to determine from the classification to whom these documents belong." }, /obj/item/paper/crumpled, -/obj/item/gun/energy/plasmacutter{ - icon = 'mod_celadon/_storage_icons/icons/items/weapons/ntsl_lasers.dmi'; - icon_state = "plasma_pistol_fire"; - name = "M87"; - desc = "A fresh-new experimental plasma pistol manufactured by Nanotrasen-Sharplite, it uses superheated plasma bursts. You could use it to cut limbs off xenos! Or, you know, cut through walls." - }, +/obj/item/plasmacutter, /obj/item/toy/musicbox{ desc = "Надпись на дне: Erin... dich ... unser ...sprechen." }, diff --git a/_maps/_mod_celadon/shuttles/solfed/solfed_chronicle.dmm b/_maps/_mod_celadon/shuttles/solfed/solfed_chronicle.dmm index f7aa3f132704..1dbb6d5bd852 100644 --- a/_maps/_mod_celadon/shuttles/solfed/solfed_chronicle.dmm +++ b/_maps/_mod_celadon/shuttles/solfed/solfed_chronicle.dmm @@ -269,7 +269,7 @@ /obj/item/storage/belt/military/assault, /obj/machinery/airalarm/directional/north, /obj/item/gps, -/turf/open/floor/wood/cold, +/turf/open/floor/wood, /area/ship/crew/dorm/captain) "bY" = ( /obj/machinery/porta_turret/ship/solfed/heavy{ @@ -470,7 +470,7 @@ dir = 6 }, /obj/machinery/newscaster/directional/north, -/turf/open/floor/wood/cold, +/turf/open/floor/wood, /area/ship/crew/dorm/captain) "fd" = ( /obj/machinery/airalarm/directional/east, @@ -1900,7 +1900,7 @@ /obj/item/documents/solfed, /obj/item/folder/documents/solfed, /obj/machinery/light/dim/directional/north, -/turf/open/floor/wood/cold, +/turf/open/floor/wood, /area/ship/crew/dorm/captain) "sa" = ( /obj/effect/turf_decal/corner/opaque/solgovblue/half{ @@ -2555,7 +2555,7 @@ tumblers = list(19,84) }, /obj/item/melee/chainofcommand, -/turf/open/floor/wood/cold, +/turf/open/floor/wood, /area/ship/crew/dorm/captain) "xN" = ( /obj/machinery/computer/secure_data/laptop{ @@ -3559,7 +3559,7 @@ /obj/item/toy/plush/blahaj, /obj/structure/bed, /obj/machinery/light/dim/directional/north, -/turf/open/floor/wood/cold, +/turf/open/floor/wood, /area/ship/crew/dorm/captain) "Ho" = ( /obj/structure/closet/crate/cyborg, @@ -3938,7 +3938,7 @@ /obj/structure/sign/poster/solgov/paperwork{ pixel_y = 32 }, -/turf/open/floor/wood/cold, +/turf/open/floor/wood, /area/ship/crew/dorm/captain) "Kh" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -5299,7 +5299,7 @@ }, /obj/structure/sign/flag/solfed/directional/south, /obj/structure/table/wood/fancy/blue, -/turf/open/floor/wood/cold, +/turf/open/floor/wood, /area/ship/crew/dorm/captain) "YC" = ( /obj/structure/cable{ @@ -5311,7 +5311,7 @@ pixel_y = 20; pixel_x = -12 }, -/turf/open/floor/wood/cold, +/turf/open/floor/wood, /area/ship/crew/dorm/captain) "YY" = ( /obj/effect/turf_decal/corner/opaque/solgovblue/half{ diff --git a/_maps/_mod_celadon/shuttles/solfed/solfed_inqrutsio.dmm b/_maps/_mod_celadon/shuttles/solfed/solfed_inqrutsio.dmm index d920884b5fa0..3976abe5fae3 100644 --- a/_maps/_mod_celadon/shuttles/solfed/solfed_inqrutsio.dmm +++ b/_maps/_mod_celadon/shuttles/solfed/solfed_inqrutsio.dmm @@ -2729,9 +2729,7 @@ /obj/item/storage/bag/ore{ pixel_y = 2 }, -/obj/item/gun/energy/plasmacutter/adv{ - pixel_y = 3 - }, +/obj/item/plasmacutter, /obj/effect/turf_decal/trimline/opaque/solgovblue/filled/line, /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/road/line/transparent/solgovgold, diff --git a/_maps/_mod_celadon/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm b/_maps/_mod_celadon/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm index 2162f0512afa..4ade27635256 100644 --- a/_maps/_mod_celadon/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm +++ b/_maps/_mod_celadon/shuttles/syndicate/syndicate_cybersun_kansatsu.dmm @@ -1338,7 +1338,7 @@ /obj/item/card/emag/limited{ uses_left = 3 }, -/obj/item/gun/energy/plasmacutter/adv, +/obj/item/plasmacutter, /obj/item/toy/plush/goatplushie/angry{ name = "goat plushie" }, diff --git a/_maps/_mod_celadon/shuttles/syndicate/syndicate_gorlex_beetle.dmm b/_maps/_mod_celadon/shuttles/syndicate/syndicate_gorlex_beetle.dmm index 5d704832ef67..639ea8d73491 100644 --- a/_maps/_mod_celadon/shuttles/syndicate/syndicate_gorlex_beetle.dmm +++ b/_maps/_mod_celadon/shuttles/syndicate/syndicate_gorlex_beetle.dmm @@ -591,7 +591,7 @@ /obj/item/stock_parts/cell/gun/kalix, /obj/item/stock_parts/cell/gun/kalix, /obj/item/stock_parts/cell/gun/kalix, -/obj/item/shield/riot/tele{ +/obj/item/shield/tele{ pixel_x = -7; pixel_y = -1 }, diff --git a/_maps/_mod_celadon/shuttles/syndicate/syndicate_krait.dmm b/_maps/_mod_celadon/shuttles/syndicate/syndicate_krait.dmm index 69d365b47b1e..75694b338315 100644 --- a/_maps/_mod_celadon/shuttles/syndicate/syndicate_krait.dmm +++ b/_maps/_mod_celadon/shuttles/syndicate/syndicate_krait.dmm @@ -709,11 +709,11 @@ /obj/machinery/camera/autoname{ dir = 1 }, -/obj/item/shield/riot/tele{ +/obj/item/shield/tele{ pixel_x = -5; pixel_y = 6 }, -/obj/item/shield/riot/tele{ +/obj/item/shield/tele{ pixel_x = -7; pixel_y = -1 }, diff --git a/_maps/_mod_celadon/shuttles/syndicate/syndicate_twinkleshine.dmm b/_maps/_mod_celadon/shuttles/syndicate/syndicate_twinkleshine.dmm index 83b2f3b4496e..3e80af6e3913 100644 --- a/_maps/_mod_celadon/shuttles/syndicate/syndicate_twinkleshine.dmm +++ b/_maps/_mod_celadon/shuttles/syndicate/syndicate_twinkleshine.dmm @@ -5692,8 +5692,8 @@ /obj/item/ammo_box/magazine/m556_42_hydra{ pixel_y = -2 }, -/obj/item/gun/ballistic/automatic/assault/hydra/dmr/empty, -/obj/item/gun/ballistic/automatic/assault/hydra/dmr/empty{ +/obj/item/gun/ballistic/automatic/assault/hydra/dmr/no_mag, +/obj/item/gun/ballistic/automatic/assault/hydra/dmr/no_mag{ pixel_x = 0; pixel_y = -4 }, diff --git a/_maps/map_catalogue.txt b/_maps/map_catalogue.txt index 4af1bbfe7d20..2a0c3d59528f 100644 --- a/_maps/map_catalogue.txt +++ b/_maps/map_catalogue.txt @@ -20,10 +20,14 @@ Find the key for using this catalogue in "map_catalogue_key.txt" File Name = _maps\RandomRuins\IceRuins\icemoon_ice_lodge.dmm Size = (x = 44)(y = 49)(z = 1) Tags = "Medium Combat Challenge", "Medium Loot", "Shelter", "Liveable" + File Name = _maps\RandomRuins\IceRuins\icemoon_ice_lodge.dmm + Size = (x = 44)(y = 49)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Shelter", "Liveable" JungleRuins: File Name = "_maps\RandomRuins\JungleRuins\jungle_syndicate.dmm" Size = (x = 30)(y = 33)(z = 1) + Size = (x = 30)(y = 33)(z = 1) Tags = "Medium Combat Challenge", "Medium Loot", "Liveable", "Antag Gear" File Name = "_maps\RandomRuins\JungleRuins\jungle_interceptor.dmm" @@ -46,15 +50,26 @@ Find the key for using this catalogue in "map_catalogue_key.txt" 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_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) Tags = "Medium Combat Challenge", "Medium Loot", "Shelter" + Size = (x = 46)(y = 42)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Shelter" + File Name = "_maps\RandomRuins\LavaRuins\lavaland_surface_wrecked_factory.dmm" + Size = (x = 47)(y = 47)(z = 1) + Tags = "Boss Combat Challenge", "Major Loot", "Shelter", "Lava" File Name = "_maps\RandomRuins\LavaRuins\lavaland_surface_wrecked_factory.dmm" Size = (x = 47)(y = 47)(z = 1) Tags = "Boss Combat Challenge", "Major Loot", "Shelter", "Lava" + File Name = "_maps\RandomRuins\LavaRuins\lavaland_crashed_starwalker.dmm" + Size = (x = 33)(y = 56)(z = 1) + Tags = "Minor Combat Challenge", "Medium Loot", "Lava" File Name = "_maps\RandomRuins\LavaRuins\lavaland_crashed_starwalker.dmm" Size = (x = 33)(y = 56)(z = 1) Tags = "Minor Combat Challenge", "Medium Loot", "Lava" @@ -63,6 +78,10 @@ Find the key for using this catalogue in "map_catalogue_key.txt" Size = (x = 33)(y = 56)(z = 1) Tags = "Medium Combat Challenge", "Medium Loot", "Shelter" + File Name = "_maps\RandomRuins\LavaRuins\lavaland_abandonedlisteningpost.dmm" + Size = (x = 33)(y = 56)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Shelter" + ReebeRuins: File Name = "_maps\RandomRuins\Ruins\reebe_arena.dmm" @@ -88,6 +107,10 @@ Find the key for using this catalogue in "map_catalogue_key.txt" Size = (x = 85)(y = 73)(z = 1) Tags = "Medium Combat Challenge", "Medium Loot", "Hazardous", "Shelter" + File Name = "_maps\RandomRuins\RockRuins\rockplanet_nomadcrash.dmm" + Size = (x = 58)(y = 48)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Hazardous", "Hospitable" + File Name = "_maps\RandomRuins\RockRuins\rockplanet_distillery.dmm" Size = (x = 44)(y = 45)(z = 1) Tags = "Medium Combat Challenge", "Major Loot", "Hazardous", "Hospitable" @@ -102,22 +125,29 @@ Find the key for using this catalogue in "map_catalogue_key.txt" SandRuins: + File Name = "_maps\RandomRuins\SandRuins\whitesands_surface_camp_saloon.dmm" File Name = "_maps\RandomRuins\SandRuins\whitesands_surface_camp_saloon.dmm" Size = (x = 30)(y = 30)(z = 1) Tags = "Medium Combat Challenge", "Medium Loot", "Inhospitable" + File Name = "_maps\RandomRuins\SandRuins\whitesands_surface_camp_combination.dmm" File Name = "_maps\RandomRuins\SandRuins\whitesands_surface_camp_combination.dmm" Size = (x = 59)(y = 59)(z = 1) Tags = "Medium Combat Challenge", "Medium Loot", "Inhospitable", "Hazardous" + File Name = "_maps\RandomRuins\SandRuins\whitesands_surface_medipen_plant.dmm" File Name = "_maps\RandomRuins\SandRuins\whitesands_surface_medipen_plant.dmm" Size = (x = 23)(y = 29)(z = 1) Tags = "No Combat", "Major Loot", "Shelter" + File Name = "_maps\RandomRuins\SandRuins\whitesands_surface_pubbyslopcrash.dmm" File Name = "_maps\RandomRuins\SandRuins\whitesands_surface_pubbyslopcrash.dmm" Size = (x = 40)(y = 25)(z = 1) Tags = "Minor Combat Challenge", "Medium Loot", "Shelter" + File Name = _maps\RandomRuins\SandRuins\whitesands_brazillianlab.dmm + Size = (x = 40)(y = 30)(z = 1) + Tags = "Boss Combat Challenge", "Major Loot", "Inhospitable" File Name = _maps\RandomRuins\SandRuins\whitesands_brazillianlab.dmm Size = (x = 40)(y = 30)(z = 1) Tags = "Boss Combat Challenge", "Major Loot", "Inhospitable" @@ -125,6 +155,9 @@ Find the key for using this catalogue in "map_catalogue_key.txt" File Name = "_maps\RandomRuins\Ruins\whitesands_surface_e11_manufactory.dmm" Size = (x = 70)(y = 63)(z = 1) Tags = "Medium Combat Challenge", "Medium Loot", "Shelter", "Hazardous" + File Name = "_maps\RandomRuins\Ruins\whitesands_surface_e11_manufactory.dmm" + Size = (x = 70)(y = 63)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Shelter", "Hazardous" SpaceRuins: File Name = "_maps\RandomRuins\SpaceRuins\bigderelict1.dmm" @@ -170,6 +203,7 @@ Find the key for using this catalogue in "map_catalogue_key.txt" Size = (x = 34)(y = 34)(z = 1) Tags = "Minor Combat Challenge", "Medium Loot", "Shelter", "Hazardous" + File name = "_maps\RandomRuins\wasteruins\wasteplanet_abandoned_mechbay.dmm" File name = "_maps\RandomRuins\wasteruins\wasteplanet_abandoned_mechbay.dmm" Size = (x = 45)(y = 47)(z = 1) Tags = "Boss Combat Challenge", "Medium Loot", "Shelter", "Hazardous" @@ -185,3 +219,15 @@ Find the key for using this catalogue in "map_catalogue_key.txt" File name = "_maps\RandomRuins\wasteruins\wasteplanet_facility.dmm" Size = (x = 54)(y = 54)(z = 1) Tags = "Boss Combat Challenge", "Medium Loot", "Shelter", "Hazardous" + + File name = "_maps\RandomRuins\wasteruins\wasteplanet_yard.dmm" + Size = (x = 43)(y = 51)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Shelter", "Hazardous" + + File name = "_maps\RandomRuins\wasteruins\wasteplanet_tradepost.dmm" + Size = (x = 57)(y = 51)(z = 1) + Tags = "Minor Combat Challenge", "Medium Loot", "Shelter", "Hazardous" + + File name = "_maps\RandomRuins\wasteruins\wasteplanet_facility.dmm" + Size = (x = 54)(y = 54)(z = 1) + Tags = "Boss Combat Challenge", "Medium Loot", "Shelter", "Hazardous" diff --git a/_maps/outpost/indie_space.dmm b/_maps/outpost/indie_space.dmm index 750e2fe54600..7917f37e97d2 100644 --- a/_maps/outpost/indie_space.dmm +++ b/_maps/outpost/indie_space.dmm @@ -10687,17 +10687,6 @@ dir = 8 }, /turf/open/floor/plasteel, -/area/outpost/security) -"OL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/machinery/newscaster/directional/north, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 6 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 1 - }, -/turf/open/floor/plasteel, /area/outpost/hallway/port) "OU" = ( /obj/machinery/light/dim/directional/south, diff --git a/_maps/shuttles/independent/independent_mudskipper.dmm b/_maps/shuttles/independent/independent_mudskipper.dmm index f2b643f05efe..10d2a53d6a50 100644 --- a/_maps/shuttles/independent/independent_mudskipper.dmm +++ b/_maps/shuttles/independent/independent_mudskipper.dmm @@ -386,7 +386,7 @@ /obj/item/multitool, /obj/item/stack/marker_beacon/thirty, /obj/item/gear_pack/anglegrinder, -/obj/item/gun/energy/plasmacutter, +/obj/item/plasmacutter, /obj/item/flashlight/seclite, /obj/item/flashlight/seclite, /obj/item/melee/knife/survival, diff --git a/_maps/shuttles/independent/independent_rigger.dmm b/_maps/shuttles/independent/independent_rigger.dmm index 979b36909620..b99d6a9e80b3 100644 --- a/_maps/shuttles/independent/independent_rigger.dmm +++ b/_maps/shuttles/independent/independent_rigger.dmm @@ -3695,8 +3695,8 @@ /obj/item/clothing/glasses/sunglasses, /obj/item/gun/ballistic/revolver/detective, /obj/item/clothing/head/HoS/cowboy, -/obj/item/storage/box/ammo/c38, -/obj/item/storage/box/ammo/c38, +/obj/item/ammo_box/c38, +/obj/item/ammo_box/c38, /obj/structure/closet/secure_closet/wall/directional/west{ icon_state = "solgov_wall"; name = "first mate's closet"; diff --git a/_maps/shuttles/independent/independent_shetland.dmm b/_maps/shuttles/independent/independent_shetland.dmm index 5455dbb7493d..4478ddf2a7d1 100644 --- a/_maps/shuttles/independent/independent_shetland.dmm +++ b/_maps/shuttles/independent/independent_shetland.dmm @@ -3426,8 +3426,8 @@ }, /obj/item/storage/box/ammo/c38, /obj/effect/turf_decal/box, -/obj/item/storage/box/ammo/c38, -/obj/item/storage/box/ammo/c38, +/obj/item/ammo_box/c38, +/obj/item/ammo_box/c38, /obj/item/gun/ballistic/revolver/detective, /turf/open/floor/plasteel/dark, /area/ship/security) diff --git a/_maps/shuttles/inteq/inteq_vaquero.dmm b/_maps/shuttles/inteq/inteq_vaquero.dmm index 9fcf51ef9569..0102c26ea413 100644 --- a/_maps/shuttles/inteq/inteq_vaquero.dmm +++ b/_maps/shuttles/inteq/inteq_vaquero.dmm @@ -1902,6 +1902,20 @@ "qe" = ( /turf/open/floor/carpet/black, /area/ship/hallway/starboard) +"qt" = ( +/obj/structure/table, +/obj/item/plate, +/obj/item/reagent_containers/food/drinks/sillycup{ + pixel_y = 10; + pixel_x = -8 + }, +/obj/item/food/ration/pack/grape_beverage{ + pixel_y = 10; + pixel_x = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/ship/crew/canteen) "qy" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 1 @@ -2695,6 +2709,72 @@ }, /turf/open/floor/plasteel/patterned, /area/ship/cargo) +"wQ" = ( +/obj/structure/closet/secure_closet/armorycage{ + anchored = 1; + can_be_unanchored = 1; + name = "equipment locker"; + req_access = null; + req_access_txt = "1" + }, +/obj/effect/turf_decal/trimline/opaque/yellow/line, +/obj/effect/turf_decal/siding/thinplating/dark, +/obj/item/storage/box/teargas{ + pixel_y = -4; + pixel_x = 8 + }, +/obj/item/storage/box/zipties{ + pixel_y = -4; + pixel_x = -7 + }, +/obj/item/reagent_containers/spray/pepper{ + pixel_y = 10; + pixel_x = -11 + }, +/obj/item/reagent_containers/spray/pepper{ + pixel_y = 10; + pixel_x = -3 + }, +/obj/item/storage/pouch/ammo{ + pixel_y = -10 + }, +/obj/item/storage/pouch/ammo{ + pixel_y = -10 + }, +/obj/item/melee/knife/survival{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/melee/knife/survival{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/melee/knife/survival{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/attachment/rail_light{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/attachment/rail_light{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/item/attachment/rail_light{ + pixel_x = 6; + pixel_y = -4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/shield/heavy, +/turf/open/floor/plasteel/tech/grid, +/area/ship/security) "wU" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -3488,72 +3568,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/tech/grid, /area/ship/security) -"Db" = ( -/obj/structure/closet/secure_closet/armorycage{ - anchored = 1; - can_be_unanchored = 1; - name = "equipment locker"; - req_access = null; - req_access_txt = "1" - }, -/obj/effect/turf_decal/trimline/opaque/yellow/line, -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/item/storage/box/teargas{ - pixel_y = -4; - pixel_x = 8 - }, -/obj/item/storage/box/zipties{ - pixel_y = -4; - pixel_x = -7 - }, -/obj/item/reagent_containers/spray/pepper{ - pixel_y = 10; - pixel_x = -11 - }, -/obj/item/reagent_containers/spray/pepper{ - pixel_y = 10; - pixel_x = -3 - }, -/obj/item/storage/pouch/ammo{ - pixel_y = -10 - }, -/obj/item/storage/pouch/ammo{ - pixel_y = -10 - }, -/obj/item/melee/knife/survival{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/melee/knife/survival{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/melee/knife/survival{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/attachment/rail_light{ - pixel_x = 6; - pixel_y = -4 - }, -/obj/item/attachment/rail_light{ - pixel_x = 6; - pixel_y = -4 - }, -/obj/item/attachment/rail_light{ - pixel_x = 6; - pixel_y = -4 - }, -/obj/item/shield/riot, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/tech/grid, -/area/ship/security) "Dh" = ( /obj/effect/turf_decal/techfloor, /obj/structure/table/reinforced, @@ -5773,20 +5787,6 @@ }, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) -"Xv" = ( -/obj/structure/table, -/obj/item/plate, -/obj/item/reagent_containers/food/drinks/sillycup{ - pixel_y = 10; - pixel_x = -8 - }, -/obj/item/food/ration/pack/grape_beverage{ - pixel_y = 10; - pixel_x = 8 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/dark, -/area/ship/crew/canteen) "XA" = ( /obj/structure/closet/secure_closet/armorycage{ anchored = 1; @@ -6656,7 +6656,7 @@ LQ mg GI Fm -Xv +qt XW EB aw @@ -6860,7 +6860,7 @@ vT Xi gO eL -Db +wQ DP ww ww diff --git a/_maps/shuttles/minutemen/minutemen_arke.dmm b/_maps/shuttles/minutemen/minutemen_arke.dmm index 49744a16d43f..0c2b044d60e4 100644 --- a/_maps/shuttles/minutemen/minutemen_arke.dmm +++ b/_maps/shuttles/minutemen/minutemen_arke.dmm @@ -1306,7 +1306,7 @@ pixel_y = 4; pixel_x = 5 }, -/obj/item/gun/energy/plasmacutter, +/obj/item/plasmacutter, /obj/item/t_scanner/adv_mining_scanner{ pixel_y = 4; pixel_x = 5 diff --git a/_maps/shuttles/pirate/pirate_tortuga.dmm b/_maps/shuttles/pirate/pirate_tortuga.dmm index c4f42e997497..cc09b6c14a35 100644 --- a/_maps/shuttles/pirate/pirate_tortuga.dmm +++ b/_maps/shuttles/pirate/pirate_tortuga.dmm @@ -583,6 +583,25 @@ "fv" = ( /turf/closed/wall/r_wall/rust, /area/ship/cargo) +"fx" = ( +/obj/effect/turf_decal/corner/opaque/blue{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/blue{ + dir = 8 + }, +/obj/structure/table/glass, +/obj/item/storage/case/surgery{ + pixel_y = 3 + }, +/obj/item/clothing/suit/apron/surgical{ + pixel_x = -7; + pixel_y = 10 + }, +/turf/open/floor/plating{ + icon_state = "plating_rust" + }, +/area/ship/medical) "fA" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 @@ -671,6 +690,19 @@ }, /turf/open/floor/plating, /area/ship/maintenance/port) +"gz" = ( +/obj/machinery/door/window/brigdoor/eastleft, +/obj/machinery/shower{ + pixel_y = 17 + }, +/obj/effect/turf_decal/techfloor/hole/right{ + dir = 1 + }, +/obj/effect/turf_decal/techfloor/hole{ + dir = 1 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) "gB" = ( /obj/effect/turf_decal/spline/fancy/opaque/black{ dir = 1 @@ -712,20 +744,6 @@ }, /turf/open/floor/pod/dark, /area/ship/maintenance/starboard) -"gK" = ( -/obj/machinery/light/small/directional/north, -/obj/structure/toilet{ - pixel_y = 10 - }, -/obj/machinery/button/door{ - dir = 4; - pixel_x = -24; - id = "toilet1"; - name = "privacy lock"; - normaldoorcontrol = 1 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/ship/crew/toilet) "gM" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -734,27 +752,6 @@ /obj/structure/chair/comfy/grey/old/directional/south, /turf/open/floor/carpet/nanoweave, /area/ship/crew/crewtwo) -"gO" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/ammo/c9mm{ - pixel_x = -10; - pixel_y = 10 - }, -/obj/item/storage/toolbox/ammo/a308{ - pixel_x = -10 - }, -/obj/item/storage/toolbox/ammo/c9mm{ - pixel_x = 10; - pixel_y = 10 - }, -/obj/item/storage/toolbox/ammo/a308{ - pixel_x = 10 - }, -/obj/item/storage/toolbox/ammo/shotgun{ - pixel_y = 9 - }, -/turf/open/floor/mineral/plastitanium, -/area/ship/security/armory) "gQ" = ( /obj/machinery/firealarm/directional/east, /obj/structure/table, @@ -1226,20 +1223,6 @@ }, /turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) -"la" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/power/smes/shuttle/precharged, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "sboard_engine" - }, -/turf/open/floor/plasteel/tech, -/area/ship/maintenance/starboard) "ld" = ( /obj/structure/catwalk/over/plated_catwalk, /obj/structure/railing{ @@ -1299,6 +1282,25 @@ "lJ" = ( /turf/closed/mineral/ship, /area/ship/maintenance) +"lK" = ( +/obj/machinery/griddle, +/obj/machinery/light/directional/east, +/obj/effect/decal/cleanable/wrapping, +/turf/open/floor/plasteel/mono, +/area/ship/cargo) +"lO" = ( +/obj/machinery/door/window/brigdoor/eastright, +/obj/machinery/shower{ + dir = 1 + }, +/obj/effect/turf_decal/techfloor/hole, +/obj/effect/turf_decal/techfloor/hole/right, +/obj/item/bikehorn/rubberducky/plasticducky{ + pixel_y = 7; + pixel_x = -6 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) "lQ" = ( /obj/machinery/telecomms/hub{ autolinkers = list("hub","bus","relay","messaging","pirate","broadcasterB","receiverB"); @@ -1440,81 +1442,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/pod/dark, /area/ship/maintenance/port) -"mG" = ( -/obj/structure/closet/secure_closet{ - icon_state = "sec"; - name = "equipment locker"; - req_access_txt = "3" - }, -/obj/effect/turf_decal/box, -/obj/item/clothing/head/helmet/bulletproof/x11/frontier{ - pixel_y = 6; - pixel_x = 7 - }, -/obj/machinery/light/directional/north, -/obj/item/clothing/head/helmet/bulletproof/x11/frontier{ - pixel_y = 6; - pixel_x = 7 - }, -/obj/item/clothing/head/helmet/bulletproof/x11/frontier{ - pixel_y = 6; - pixel_x = 7 - }, -/obj/item/clothing/head/helmet/bulletproof/x11/frontier{ - pixel_y = 6; - pixel_x = 7 - }, -/obj/item/melee/knife/survival, -/obj/item/melee/knife/survival, -/obj/item/melee/knife/survival, -/obj/item/melee/knife/survival, -/obj/item/storage/belt/security/military/frontiersmen{ - pixel_x = -4; - pixel_y = -10 - }, -/obj/item/storage/belt/security/military/frontiersmen{ - pixel_x = -4; - pixel_y = -10 - }, -/obj/item/storage/belt/security/military/frontiersmen{ - pixel_x = -4; - pixel_y = -10 - }, -/obj/item/storage/belt/security/military/frontiersmen{ - pixel_x = -4; - pixel_y = -10 - }, -/obj/item/clothing/suit/armor/vest/bulletproof/frontier{ - pixel_x = 8; - pixel_y = -4 - }, -/obj/item/clothing/suit/armor/vest/bulletproof/frontier{ - pixel_x = 8; - pixel_y = -4 - }, -/obj/item/clothing/suit/armor/vest/bulletproof/frontier{ - pixel_x = 8; - pixel_y = -4 - }, -/obj/item/clothing/suit/armor/vest/bulletproof/frontier{ - pixel_x = 8; - pixel_y = -4 - }, -/obj/item/flashlight/seclite, -/obj/item/flashlight/seclite, -/obj/item/flashlight/seclite, -/obj/item/flashlight/seclite, -/obj/item/clothing/head/helmet/bulletproof/x11/frontier{ - pixel_y = 6; - pixel_x = 7 - }, -/obj/item/melee/boarding_axe, -/obj/item/melee/boarding_axe, -/obj/item/melee/boarding_axe, -/obj/item/melee/boarding_axe, -/obj/item/melee/boarding_axe, -/turf/open/floor/mineral/plastitanium, -/area/ship/security/armory) "mZ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 @@ -1597,6 +1524,20 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/carpet/nanoweave, /area/ship/crew/crewtwo) +"nH" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/power/smes/shuttle/precharged, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "sboard_engine" + }, +/turf/open/floor/plasteel/tech, +/area/ship/maintenance/starboard) "nT" = ( /obj/effect/turf_decal/box/corners{ dir = 4 @@ -1619,6 +1560,20 @@ }, /turf/open/floor/plasteel/tech/techmaint, /area/ship/cargo) +"nW" = ( +/obj/machinery/power/smes/shuttle/precharged, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "port_engine" + }, +/turf/open/floor/plasteel/tech, +/area/ship/maintenance/port) "oe" = ( /obj/effect/turf_decal/borderfloor{ dir = 1 @@ -2015,20 +1970,6 @@ "so" = ( /turf/closed/wall/rust, /area/ship/crew) -"sr" = ( -/obj/machinery/power/smes/shuttle/precharged, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "sboard_engine" - }, -/turf/open/floor/plasteel/tech, -/area/ship/maintenance/starboard) "ss" = ( /obj/machinery/button/door{ dir = 1; @@ -2611,29 +2552,6 @@ icon_state = "plating_rust" }, /area/ship/maintenance) -"xB" = ( -/obj/structure/closet/secure_closet{ - icon_door = "tac"; - icon_state = "tac"; - name = "boarding tools locker"; - req_access_txt = "3" - }, -/obj/effect/turf_decal/box, -/obj/item/storage/backpack/duffelbag/syndie/c4{ - pixel_y = 8 - }, -/obj/item/door_seal{ - pixel_y = -7 - }, -/obj/item/door_seal{ - pixel_y = -7 - }, -/obj/item/shield/riot/spike, -/obj/item/storage/box/smokebombs, -/obj/item/storage/toolbox/ammo/frag, -/obj/item/crowbar/power, -/turf/open/floor/mineral/plastitanium, -/area/ship/security/armory) "xV" = ( /obj/effect/turf_decal/borderfloor, /obj/effect/turf_decal/siding/thinplating/dark{ @@ -2738,6 +2656,20 @@ }, /turf/open/floor/plasteel/mono, /area/ship/cargo) +"yF" = ( +/obj/machinery/power/smes/shuttle/precharged, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "sboard_engine" + }, +/turf/open/floor/plasteel/tech, +/area/ship/maintenance/starboard) "yH" = ( /obj/effect/turf_decal/techfloor, /turf/open/floor/plasteel/tech/grid, @@ -2822,6 +2754,21 @@ "zJ" = ( /turf/closed/wall/r_wall/rust, /area/ship/maintenance/starboard) +"zV" = ( +/obj/effect/decal/cleanable/glass, +/obj/machinery/light/small/directional/north, +/obj/structure/toilet{ + pixel_y = 10 + }, +/obj/machinery/button/door{ + dir = 4; + pixel_x = -24; + id = "toilet2"; + name = "privacy lock"; + normaldoorcontrol = 1 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) "zZ" = ( /obj/effect/turf_decal/corner/opaque/black{ dir = 9 @@ -2920,6 +2867,28 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/plasteel/tech, /area/ship/bridge) +"AX" = ( +/obj/structure/closet/secure_closet{ + icon_door = "tac"; + icon_state = "tac"; + name = "boarding tools locker"; + req_access_txt = "3" + }, +/obj/effect/turf_decal/box, +/obj/item/storage/backpack/duffelbag/syndie/c4{ + pixel_y = 8 + }, +/obj/item/door_seal{ + pixel_y = -7 + }, +/obj/item/door_seal{ + pixel_y = -7 + }, +/obj/item/storage/box/smokebombs, +/obj/item/storage/toolbox/ammo/frag, +/obj/item/crowbar/power, +/turf/open/floor/mineral/plastitanium, +/area/ship/security/armory) "AZ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -2932,8 +2901,7 @@ }, /turf/open/floor/pod/dark, /area/ship/maintenance/starboard) -"Be" = ( -/obj/effect/decal/cleanable/glass, +"Bb" = ( /obj/machinery/light/small/directional/north, /obj/structure/toilet{ pixel_y = 10 @@ -2941,7 +2909,7 @@ /obj/machinery/button/door{ dir = 4; pixel_x = -24; - id = "toilet2"; + id = "toilet1"; name = "privacy lock"; normaldoorcontrol = 1 }, @@ -3112,6 +3080,29 @@ icon_state = "plating_rust" }, /area/ship/maintenance) +"Dw" = ( +/obj/machinery/light/directional/north, +/obj/item/storage/pouch/squad, +/obj/item/clothing/suit/armor/vest/marine/frontier, +/obj/item/clothing/head/helmet/frontier, +/obj/item/megaphone, +/obj/item/clothing/under/frontiersmen/officer{ + pixel_x = -5 + }, +/obj/item/clothing/shoes/jackboots{ + pixel_y = -13 + }, +/obj/item/clothing/head/beret/sec/frontier/officer, +/obj/item/radio/headset/pirate/alt, +/obj/item/binoculars, +/obj/structure/closet/secure_closet{ + icon_state = "hos"; + name = "Deck Boss' Locker"; + req_access_txt = "3" + }, +/obj/item/storage/guncase/slammer, +/turf/open/floor/plasteel/tech, +/area/ship/bridge) "DF" = ( /obj/structure/cable/yellow{ icon_state = "6-8" @@ -3259,20 +3250,6 @@ }, /turf/open/floor/plating, /area/ship/maintenance) -"EI" = ( -/obj/machinery/power/smes/shuttle/precharged, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "port_engine" - }, -/turf/open/floor/plasteel/tech, -/area/ship/maintenance/port) "EL" = ( /obj/effect/decal/cleanable/glass, /obj/item/broken_bottle, @@ -3499,6 +3476,20 @@ /obj/structure/curtain/cloth, /turf/open/floor/plating/catwalk_floor, /area/ship/security/armory) +"Gv" = ( +/obj/machinery/shower{ + pixel_y = 17 + }, +/obj/effect/turf_decal/techfloor/hole{ + dir = 1 + }, +/obj/effect/turf_decal/techfloor/hole/right{ + dir = 1 + }, +/obj/machinery/light/small/directional/west, +/obj/item/soap/homemade, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/crew/toilet) "Gx" = ( /obj/effect/turf_decal/techfloor{ dir = 1 @@ -3537,6 +3528,81 @@ }, /turf/open/floor/pod/dark, /area/ship/maintenance/starboard) +"GJ" = ( +/obj/structure/closet/secure_closet{ + icon_state = "sec"; + name = "equipment locker"; + req_access_txt = "3" + }, +/obj/effect/turf_decal/box, +/obj/item/clothing/head/helmet/bulletproof/x11/frontier{ + pixel_y = 6; + pixel_x = 7 + }, +/obj/machinery/light/directional/north, +/obj/item/clothing/head/helmet/bulletproof/x11/frontier{ + pixel_y = 6; + pixel_x = 7 + }, +/obj/item/clothing/head/helmet/bulletproof/x11/frontier{ + pixel_y = 6; + pixel_x = 7 + }, +/obj/item/clothing/head/helmet/bulletproof/x11/frontier{ + pixel_y = 6; + pixel_x = 7 + }, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, +/obj/item/melee/knife/survival, +/obj/item/storage/belt/security/military/frontiersmen{ + pixel_x = -4; + pixel_y = -10 + }, +/obj/item/storage/belt/security/military/frontiersmen{ + pixel_x = -4; + pixel_y = -10 + }, +/obj/item/storage/belt/security/military/frontiersmen{ + pixel_x = -4; + pixel_y = -10 + }, +/obj/item/storage/belt/security/military/frontiersmen{ + pixel_x = -4; + pixel_y = -10 + }, +/obj/item/clothing/suit/armor/vest/bulletproof/frontier{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/clothing/suit/armor/vest/bulletproof/frontier{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/clothing/suit/armor/vest/bulletproof/frontier{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/clothing/suit/armor/vest/bulletproof/frontier{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/item/flashlight/seclite, +/obj/item/flashlight/seclite, +/obj/item/flashlight/seclite, +/obj/item/flashlight/seclite, +/obj/item/clothing/head/helmet/bulletproof/x11/frontier{ + pixel_y = 6; + pixel_x = 7 + }, +/obj/item/melee/boarding_axe, +/obj/item/melee/boarding_axe, +/obj/item/melee/boarding_axe, +/obj/item/melee/boarding_axe, +/obj/item/melee/boarding_axe, +/turf/open/floor/mineral/plastitanium, +/area/ship/security/armory) "GM" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 @@ -3708,20 +3774,6 @@ icon_state = "wood-broken5" }, /area/ship/crew/crewtwo) -"Iu" = ( -/obj/machinery/shower{ - pixel_y = 17 - }, -/obj/effect/turf_decal/techfloor/hole{ - dir = 1 - }, -/obj/effect/turf_decal/techfloor/hole/right{ - dir = 1 - }, -/obj/machinery/light/small/directional/west, -/obj/item/soap/homemade, -/turf/open/floor/plasteel/showroomfloor, -/area/ship/crew/toilet) "Iw" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -3782,29 +3834,6 @@ }, /turf/open/floor/plating, /area/ship/cargo) -"IF" = ( -/obj/machinery/light/directional/north, -/obj/item/storage/pouch/squad, -/obj/item/clothing/suit/armor/vest/marine/frontier, -/obj/item/clothing/head/helmet/frontier, -/obj/item/megaphone, -/obj/item/clothing/under/frontiersmen/officer{ - pixel_x = -5 - }, -/obj/item/clothing/shoes/jackboots{ - pixel_y = -13 - }, -/obj/item/clothing/head/beret/sec/frontier/officer, -/obj/item/radio/headset/pirate/alt, -/obj/item/binoculars, -/obj/structure/closet/secure_closet{ - icon_state = "hos"; - name = "Deck Boss' Locker"; - req_access_txt = "3" - }, -/obj/item/storage/guncase/slammer, -/turf/open/floor/plasteel/tech, -/area/ship/bridge) "II" = ( /obj/machinery/door/airlock/hatch, /obj/structure/cable/yellow{ @@ -4013,12 +4042,6 @@ }, /turf/open/floor/plating, /area/ship/cargo) -"KE" = ( -/obj/machinery/griddle, -/obj/machinery/light/directional/east, -/obj/effect/decal/cleanable/wrapping, -/turf/open/floor/plasteel/mono, -/area/ship/cargo) "KM" = ( /obj/structure/railing{ dir = 1 @@ -4077,19 +4100,6 @@ /obj/structure/catwalk/over/plated_catwalk, /turf/open/floor/plating, /area/ship/crew/toilet) -"KZ" = ( -/obj/machinery/door/window/brigdoor/eastright, -/obj/machinery/shower{ - dir = 1 - }, -/obj/effect/turf_decal/techfloor/hole, -/obj/effect/turf_decal/techfloor/hole/right, -/obj/item/bikehorn/rubberducky/plasticducky{ - pixel_y = 7; - pixel_x = -6 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/ship/crew/toilet) "Lb" = ( /obj/structure/table, /obj/item/reagent_containers/glass/bowl{ @@ -4632,39 +4642,6 @@ }, /turf/open/floor/plating, /area/ship/cargo) -"Po" = ( -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 8 - }, -/obj/structure/table/glass, -/obj/item/storage/case/surgery{ - pixel_y = 3 - }, -/obj/item/clothing/suit/apron/surgical{ - pixel_x = -7; - pixel_y = 10 - }, -/turf/open/floor/plating{ - icon_state = "plating_rust" - }, -/area/ship/medical) -"Pu" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/power/smes/shuttle/precharged, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "port_engine" - }, -/turf/open/floor/plasteel/tech, -/area/ship/maintenance/port) "Pw" = ( /obj/structure/cable{ icon_state = "4-9" @@ -5099,6 +5076,27 @@ /obj/effect/turf_decal/borderfloor, /turf/open/floor/plasteel/mono/dark, /area/ship/crew/canteen) +"Tg" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/ammo/c9mm{ + pixel_x = -10; + pixel_y = 10 + }, +/obj/item/storage/toolbox/ammo/a308{ + pixel_x = -10 + }, +/obj/item/storage/toolbox/ammo/c9mm{ + pixel_x = 10; + pixel_y = 10 + }, +/obj/item/storage/toolbox/ammo/a308{ + pixel_x = 10 + }, +/obj/item/storage/toolbox/ammo/shotgun{ + pixel_y = 9 + }, +/turf/open/floor/mineral/plastitanium, +/area/ship/security/armory) "Tk" = ( /obj/effect/turf_decal/techfloor{ dir = 1 @@ -5559,6 +5557,20 @@ }, /turf/open/floor/carpet/nanoweave, /area/ship/crew/crewtwo) +"Xv" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/power/smes/shuttle/precharged, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "port_engine" + }, +/turf/open/floor/plasteel/tech, +/area/ship/maintenance/port) "XC" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -5821,19 +5833,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel/white, /area/ship/medical) -"ZV" = ( -/obj/machinery/door/window/brigdoor/eastleft, -/obj/machinery/shower{ - pixel_y = 17 - }, -/obj/effect/turf_decal/techfloor/hole/right{ - dir = 1 - }, -/obj/effect/turf_decal/techfloor/hole{ - dir = 1 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/ship/crew/toilet) "ZY" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/red{ @@ -6093,8 +6092,8 @@ Ek Ek Ek jA -Pu -EI +Xv +nW TR Ek rd @@ -6112,8 +6111,8 @@ xV fv Ek wK -sr -la +yF +nH zJ Ek Ek @@ -6585,7 +6584,7 @@ Xs fj aT bx -KE +lK wQ fU hC @@ -6646,7 +6645,7 @@ lJ Px Px pF -Iu +Gv bI pF td @@ -6686,8 +6685,8 @@ Ek Px Px pF -ZV -KZ +gz +lO pF DU KU @@ -6867,7 +6866,7 @@ VO VO VO Vt -xB +AX RH hP FP @@ -6887,7 +6886,7 @@ Px Px Px pF -gK +Bb Ez jp gG @@ -6905,9 +6904,9 @@ nv VO yj iW -Po +fx Vt -gO +Tg gD yH FP @@ -6947,7 +6946,7 @@ BB UJ fC Vt -mG +GJ Kr FB SD @@ -6967,7 +6966,7 @@ Px Px Px pF -Be +zV ao Cx XC @@ -7097,7 +7096,7 @@ fE YE ah ah -IF +Dw VH qT gB diff --git a/_maps/shuttles/roumain/srm_elder.dmm b/_maps/shuttles/roumain/srm_elder.dmm index 5a58cfef94a9..20f1a4855d40 100644 --- a/_maps/shuttles/roumain/srm_elder.dmm +++ b/_maps/shuttles/roumain/srm_elder.dmm @@ -2753,8 +2753,8 @@ }, /obj/item/storage/backpack/satchel/leather, /obj/item/gun/ballistic/revolver/detective, -/obj/item/storage/box/ammo/c38, -/obj/item/storage/box/ammo/c38, +/obj/item/ammo_box/c38, +/obj/item/ammo_box/c38, /obj/item/storage/box/ammo/c38, /obj/item/clothing/head/cowboy/sec/roumain/colligne, /obj/item/clothing/suit/armor/roumain/colligne, diff --git a/_maps/shuttles/roumain/srm_sojourner.dmm b/_maps/shuttles/roumain/srm_sojourner.dmm index d12e60a0d36f..2de4d20e274d 100644 --- a/_maps/shuttles/roumain/srm_sojourner.dmm +++ b/_maps/shuttles/roumain/srm_sojourner.dmm @@ -2402,14 +2402,8 @@ /obj/effect/turf_decal/box/red/corners{ dir = 8 }, -/obj/item/shield/riot/buckler{ - pixel_x = 5; - pixel_y = 8 - }, -/obj/item/shield/riot/buckler{ - pixel_x = 5; - pixel_y = 8 - }, +/obj/item/shield/buckler, +/obj/item/shield/buckler, /obj/item/storage/belt/security/military/frontiersmen{ pixel_y = -1; pixel_x = 4 diff --git a/_maps/shuttles/syndicate/syndicate_hardliners_leyak.dmm b/_maps/shuttles/syndicate/syndicate_hardliners_leyak.dmm index 197d46794362..bbbc39ced5a2 100644 --- a/_maps/shuttles/syndicate/syndicate_hardliners_leyak.dmm +++ b/_maps/shuttles/syndicate/syndicate_hardliners_leyak.dmm @@ -191,6 +191,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/plating, /area/ship/engineering/engines) "bD" = ( @@ -1427,7 +1430,10 @@ dir = 9 }, /obj/machinery/firealarm/directional/south, -/obj/machinery/portable_atmospherics/pump, +/obj/machinery/power/cloak, +/obj/structure/cable{ + icon_state = "0-8" + }, /turf/open/floor/plasteel/tech, /area/ship/engineering/engines) "qa" = ( @@ -3213,14 +3219,16 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/engineering/engines) "Oa" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 9 - }, /obj/structure/cable{ icon_state = "0-2" }, /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 9 + }, +/obj/machinery/portable_atmospherics/pump, /turf/open/floor/plasteel/tech, /area/ship/engineering/engines) "Oi" = ( @@ -3500,15 +3508,15 @@ /area/ship/bridge) "QE" = ( /obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable{ - icon_state = "4-10" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 }, +/obj/structure/cable{ + icon_state = "4-8" + }, /turf/open/floor/plating, /area/ship/engineering/engines) "QF" = ( @@ -3827,10 +3835,10 @@ dir = 1 }, /obj/structure/cable{ - icon_state = "2-5" + icon_state = "1-2" }, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "2-4" }, /turf/open/floor/plating, /area/ship/engineering/engines) diff --git a/_maps/shuttles/syndicate/syndicate_ngr_derecho.dmm b/_maps/shuttles/syndicate/syndicate_ngr_derecho.dmm index 1ace49e9efa7..2e99509affe2 100644 --- a/_maps/shuttles/syndicate/syndicate_ngr_derecho.dmm +++ b/_maps/shuttles/syndicate/syndicate_ngr_derecho.dmm @@ -806,9 +806,7 @@ /area/ship/crew/canteen) "gW" = ( /obj/structure/rack, -/obj/item/gun/energy/plasmacutter{ - pixel_y = 15 - }, +/obj/item/plasmacutter, /obj/machinery/airalarm/directional/south, /obj/effect/decal/cleanable/dirt/dust, /obj/item/gear_pack/anglegrinder{ diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index d2782427a308..6773b2cb1229 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -12,7 +12,6 @@ #define COUGH /datum/mutation/human/cough #define DWARFISM /datum/mutation/human/dwarfism #define GIGANTISM /datum/mutation/human/gigantism -#define CLOWNMUT /datum/mutation/human/clumsy // [CELADON-ADD] - RETURN_CONTENT - CLOWN_RETURN_CONTENT #define TOURETTES /datum/mutation/human/tourettes #define DEAFMUT /datum/mutation/human/deaf #define BLINDMUT /datum/mutation/human/blind @@ -133,11 +132,6 @@ #define MUTCOLORS_SECONDARY 25 ///Human skintones #define SKINCOLORS 26 -///Used for determining which wounds are applicable to this species. -///if we have flesh (can suffer slash/piercing/burn wounds, requires they don't have NOBLOOD) -#define HAS_FLESH 27 -///if we have bones (can suffer bone wounds) -#define HAS_BONE 28 //organ slots #define ORGAN_SLOT_BRAIN "brain" diff --git a/code/__DEFINES/achievements.dm b/code/__DEFINES/achievements.dm index c3bc1ebdc9de..f0665b033221 100644 --- a/code/__DEFINES/achievements.dm +++ b/code/__DEFINES/achievements.dm @@ -8,10 +8,6 @@ #define MEDAL_PULSE "Jackpot" #define MEDAL_TIMEWASTE "Overextended The Joke" #define MEDAL_RODSUPLEX "Feat of Strength" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -#define MEDAL_CLOWNCARKING "Round and Full" -#define MEDAL_THANKSALOT "The Best Driver" -// [/CELADON-ADD] #define MEDAL_HELBITALJANKEN "Hel-bent on Winning" #define MEDAL_MATERIALCRAFT "Getting an Upgrade" #define MEDAL_DISKPLEASE "Disk, Please!" diff --git a/code/__DEFINES/ai/monkey.dm b/code/__DEFINES/ai/monkey.dm index a4c48a606cd0..ba0192e6fd0b 100644 --- a/code/__DEFINES/ai/monkey.dm +++ b/code/__DEFINES/ai/monkey.dm @@ -15,4 +15,3 @@ #define BB_MONKEY_DISPOSING "BB_monkey_disposing" #define BB_MONKEY_RECRUIT_COOLDOWN "BB_monkey_recruit_cooldown" #define BB_MONKEY_NEXT_HUNGRY "BB_monkey_next_hungry" -#define BB_MONKEY_WEAPON_PICKUP_COOLDOWN "BB_monkey_weapon_pickup_cooldown" // [CELADON-ADD] - FIXES_MONKEY_STOPPED_SPEEDUP diff --git a/code/__DEFINES/cinematics.dm b/code/__DEFINES/cinematics.dm index 305908cceaf8..a09537a35893 100644 --- a/code/__DEFINES/cinematics.dm +++ b/code/__DEFINES/cinematics.dm @@ -9,4 +9,3 @@ #define CINEMATIC_NUKE_FAKE 9 #define CINEMATIC_NUKE_NO_CORE 10 #define CINEMATIC_NUKE_FAR 11 -#define CINEMATIC_NUKE_CLOWNOP 12 // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS diff --git a/code/__DEFINES/clothing.dm b/code/__DEFINES/clothing.dm index ba0651376d2c..d4939b836e12 100644 --- a/code/__DEFINES/clothing.dm +++ b/code/__DEFINES/clothing.dm @@ -40,52 +40,34 @@ // Base equipment delays /// Delay base for full-body coverage suit slot items. (hardsuits, spacesuits, radsuits, etc.) -// [CELADON-EDIT] - CELADON_BALANCE_CD - Меняем КД на вещи -// #define EQUIP_DELAY_OVERSUIT (6 SECONDS) - -// /// Delay base for suit slot items -// #define EQUIP_DELAY_SUIT (4 SECONDS) - -// /// Delay base for hard-body shoes and boots. -// #define EQUIP_DELAY_BOOTS (2 SECONDS) -// /// Delay base for hard-body, strapped, or otherwise head-covering hats. -// #define EQUIP_DELAY_HELMET (2 SECONDS) -// /// Delay base for shoes. -// #define EQUIP_DELAY_SHOES (2 SECONDS) -// /// Delay base for suit and cloak slot items that are trivially removed or put on. (Coats, Jackets, Ponchos, etc.) -// #define EQUIP_DELAY_COAT (2 SECONDS) -// /// Delay base for Undersuits. -// #define EQUIP_DELAY_UNDERSUIT (2 SECONDS) - -// /// Delay base for masks. -// #define EQUIP_DELAY_MASK (1 SECONDS) -// /// Delay base for back-worn objects. -// #define EQUIP_DELAY_BACK (1 SECONDS) -// /// Delay base for belts. -// #define EQUIP_DELAY_BELT (1 SECONDS) -// /// Delay base for hats. -// #define EQUIP_DELAY_HAT (1 SECONDS) -// /// Delay base for gloves. -// #define EQUIP_DELAY_GLOVES (1 SECONDS) -// /// Delay base for glasses. -// #define EQUIP_DELAY_EYEWEAR (1 SECONDS) -#define EQUIP_DELAY_OVERSUIT (2 SECONDS) - -#define EQUIP_DELAY_SUIT (1 SECONDS) - -#define EQUIP_DELAY_BOOTS (0 SECONDS) -#define EQUIP_DELAY_HELMET (0.5 SECONDS) -#define EQUIP_DELAY_SHOES (0 SECONDS) -#define EQUIP_DELAY_COAT (0 SECONDS) -#define EQUIP_DELAY_UNDERSUIT (1 SECONDS) - -#define EQUIP_DELAY_MASK (0.5 SECONDS) -#define EQUIP_DELAY_BACK (1 SECONDS) -#define EQUIP_DELAY_BELT (0 SECONDS) -#define EQUIP_DELAY_HAT (0 SECONDS) -#define EQUIP_DELAY_GLOVES (0 SECONDS) -#define EQUIP_DELAY_EYEWEAR (0 SECONDS) -// [/CELADON-EDIT] +#define EQUIP_DELAY_OVERSUIT (2 SECONDS) // [CELADON-EDIT] - CELADON_BALANCE_CD - Меняем КД на вещи + +/// Delay base for suit slot items +#define EQUIP_DELAY_SUIT (1 SECONDS) // [CELADON-EDIT] - CELADON_BALANCE_CD - Меняем КД на вещи + +/// Delay base for hard-body shoes and boots. +#define EQUIP_DELAY_BOOTS (0 SECONDS) // [CELADON-EDIT] - CELADON_BALANCE_CD - Меняем КД на вещи +/// Delay base for hard-body, strapped, or otherwise head-covering hats. +#define EQUIP_DELAY_HELMET (0.5 SECONDS) // [CELADON-EDIT] - CELADON_BALANCE_CD - Меняем КД на вещи +/// Delay base for shoes. +#define EQUIP_DELAY_SHOES (0 SECONDS) // [CELADON-EDIT] - CELADON_BALANCE_CD - Меняем КД на вещи +/// Delay base for suit and cloak slot items that are trivially removed or put on. (Coats, Jackets, Ponchos, etc.) +#define EQUIP_DELAY_COAT (0 SECONDS) // [CELADON-EDIT] - CELADON_BALANCE_CD - Меняем КД на вещи +/// Delay base for Undersuits. +#define EQUIP_DELAY_UNDERSUIT (1 SECONDS) // [CELADON-EDIT] - CELADON_BALANCE_CD - Меняем КД на вещи + +/// Delay base for masks. +#define EQUIP_DELAY_MASK (0.5 SECONDS) // [CELADON-EDIT] - CELADON_BALANCE_CD - Меняем КД на вещи +/// Delay base for back-worn objects. +#define EQUIP_DELAY_BACK (1 SECONDS) // [CELADON-EDIT] - CELADON_BALANCE_CD - Меняем КД на вещи +/// Delay base for belts. +#define EQUIP_DELAY_BELT (0 SECONDS) // [CELADON-EDIT] - CELADON_BALANCE_CD - Меняем КД на вещи +/// Delay base for hats. +#define EQUIP_DELAY_HAT (0 SECONDS) // [CELADON-EDIT] - CELADON_BALANCE_CD - Меняем КД на вещи +/// Delay base for gloves. +#define EQUIP_DELAY_GLOVES (0 SECONDS) // [CELADON-EDIT] - CELADON_BALANCE_CD - Меняем КД на вещи +/// Delay base for glasses. +#define EQUIP_DELAY_EYEWEAR (0 SECONDS) // [CELADON-EDIT] - CELADON_BALANCE_CD - Меняем КД на вещи // Flags for self equipping items /// Allow movement during equip/unequip diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 681a92ee78ed..8eb69be26d57 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -227,6 +227,11 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(/obj/item/gun))) //We will round to this value in damage calculations. #define DAMAGE_PRECISION 0.1 +/// Calls the effects of flashes. Screen overlays and such. +#define FLASH_EFFECT (1<<0) +/// Whether the flash should cause eye damage. +#define FLASH_DAMAGE (1<<1) + /// Alternate attack defines. Return these at the end of procs like afterattack_secondary. /// Calls the normal attack proc. For example, if returned in afterattack_secondary, will call afterattack. /// Will continue the chain depending on the return value of the non-alternate proc, like with normal attacks. diff --git a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm index e3d88ac3d6b8..8968a85c3720 100644 --- a/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm +++ b/code/__DEFINES/dcs/signals/signals_mob/signals_mob_carbon.dm @@ -18,6 +18,8 @@ // /mob/living/carbon physiology signals #define COMSIG_CARBON_GAIN_WOUND "carbon_gain_wound" //from /datum/wound/proc/apply_wound() (/mob/living/carbon/C, /datum/wound/W, /obj/item/bodypart/L) #define COMSIG_CARBON_LOSE_WOUND "carbon_lose_wound" //from /datum/wound/proc/remove_wound() (/mob/living/carbon/C, /datum/wound/W, /obj/item/bodypart/L) +/// Called after limb AND victim has been unset +#define COMSIG_CARBON_POST_LOSE_WOUND "carbon_post_lose_wound" //from /datum/wound/proc/remove_wound() (/datum/wound/lost_wound, /obj/item/bodypart/part, ignore_limb, replaced) ///from base of /obj/item/bodypart/proc/attach_limb(): (new_limb, special) allows you to fail limb attachment #define COMSIG_CARBON_ATTACH_LIMB "carbon_attach_limb" #define COMPONENT_NO_ATTACH (1<<0) diff --git a/code/__DEFINES/dcs/signals/signals_reagent.dm b/code/__DEFINES/dcs/signals/signals_reagent.dm index 2f9688aab62d..d7cc4b336ca1 100644 --- a/code/__DEFINES/dcs/signals/signals_reagent.dm +++ b/code/__DEFINES/dcs/signals/signals_reagent.dm @@ -9,7 +9,7 @@ /// Prevents the atom from being exposed to reagents if returned on [COMSIG_ATOM_EXPOSE_REAGENTS] #define COMPONENT_NO_EXPOSE_REAGENTS (1<<0) ///from base of atom/expose_reagents(): (/list, /datum/reagents, methods, volume_modifier, show_message) -//#define COMSIG_ATOM_AFTER_EXPOSE_REAGENTS "atom_after_expose_reagents" +#define COMSIG_ATOM_AFTER_EXPOSE_REAGENTS "atom_after_expose_reagents" ///from base of [/datum/reagent/proc/expose_atom]: (/datum/reagent, reac_volume) #define COMSIG_ATOM_EXPOSE_REAGENT "atom_expose_reagent" ///from base of [/datum/reagent/proc/expose_atom]: (/atom, reac_volume) diff --git a/code/__DEFINES/factions.dm b/code/__DEFINES/factions.dm index 2e1972aa5434..069b4cbbabbd 100644 --- a/code/__DEFINES/factions.dm +++ b/code/__DEFINES/factions.dm @@ -1,41 +1,40 @@ -//Player Factions -// [CELADON-REMOVE] - PREFIXES - (Перемещено в code/__DEFINES/~mod_celadon/names.dm) -// #define FACTION_SYNDICATE "Syndicate Coalition" -// #define FACTION_NGR "New Gorlex Republic" -// #define FACTION_CYBERSUN "Cybersun Industries" -// #define FACTION_HARDLINERS "Gorlex Hardliners" -// #define FACTION_SUNS "Student-Union of Naturalistic Sciences" -// #define FACTION_SOLCON "Solar Confederation" -// #define FACTION_SRM "Saint-Roumain Militia" -// #define FACTION_INTEQ "Inteq Risk Management Group" -// #define FACTION_CLIP "Confederated League of Independent Planets" -// #define FACTION_NT "Nanotrasen" -// #define FACTION_NS_LOGI "N+S Logistics" -// #define FACTION_VIGILITAS "Vigilitas Interstellar" -// #define FACTION_FRONTIERSMEN "Frontiersmen Fleet" -// #define FACTION_PGF "Pan-Gezena Federation" -// #define FACTION_INDEPENDENT "Independent" -// #define FACTION_RAMZI "Ramzi Clique" -// #define FACTION_UNKNOWN "Unknown" +#define FACTION_SYNDICATE "Syndicate" // CELADON EDIT + #define FACTION_NGR "New Gorlex Republic" + #define FACTION_CYBERSUN "CyberSun" // CELADON EDIT + #define FACTION_HARDLINERS "Hardliners" + #define FACTION_SUNS "Student-Union of Naturalistic Sciences" +#define FACTION_SOLCON "SolFed" // CELADON EDIT +#define FACTION_SRM "Saint-Roumain Militia" +#define FACTION_INTEQ "InteQ" // CELADON EDIT +#define FACTION_CLIP "CLIP Minutemen" // CELADON EDIT +#define FACTION_NT "Nanotrasen" + #define FACTION_NS_LOGI "N+S Logistics" + #define FACTION_VIGILITAS "Vigilitas Interstellar" +#define FACTION_FRONTIERSMEN "Frontiersmen Fleet" +#define FACTION_PGF "Pan-Gezenan Federation" // CELADON EDIT +#define FACTION_ZOHIL "Zohil Explorat" +#define FACTION_INDEPENDENT "Independent" +#define FACTION_RAMZI "Ramzi Clique" +#define FACTION_UNKNOWN "Unknown" -// #define PREFIX_SYNDICATE list("SEV", "SSV") -// #define PREFIX_NGR list("NGRV") -// #define PREFIX_CYBERSUN list("CSSV") -// #define PREFIX_HARDLINERS list("GMV") -// #define PREFIX_SUNS list("SUNS") -// #define PREFIX_SOLCON list("SCSV") -// #define PREFIX_SRM list("SRSV") -// #define PREFIX_INTEQ list("IRMV") -// #define PREFIX_CLIP list("CMSV", "CMGSV", "CLSV") -// #define PREFIX_NT list("NTSV") -// #define PREFIX_NS_LOGI list("NSSV") -// #define PREFIX_VIGILITAS list("VISV") -// #define PREFIX_FRONTIERSMEN list("FFV") -// #define PREFIX_PGF list("PGF", "PGFMC", "PGFN", "PGFS") -// #define PREFIX_INDEPENDENT list("SV", "IMV", "ISV", "MSV") -// #define PREFIX_RAMZI list("RCSV") -// #define PREFIX_NONE list() -// [CELADON-REMOVE] +#define PREFIX_SYNDICATE list("SEV", "SSV", "SMMV", "PCAC", "SSASV", "SSSV", "SOSSV", "TSSV", "SABSV", "BSSV", "ASSV", "MSSV", "LSSV", "DSSV", "RSSV",) // CELADON EDIT + #define PREFIX_NGR list("NGRV") + #define PREFIX_CYBERSUN list("CSSV") + #define PREFIX_HARDLINERS list("HSSV") // CELADON EDIT + #define PREFIX_SUNS list("SUNS") +#define PREFIX_SOLCON list("SCSV") +#define PREFIX_SRM list("SRSV") +#define PREFIX_INTEQ list("IRMV", "IQMSSV", "BIQSV", "LIQSV", "SPIQSV",) // CELADON EDIT +#define PREFIX_CLIP list("CMSV", "CMGSV", "CLSV") +#define PREFIX_NT list("NTSV", "NTBSV", "NTASV", "NTSSV", "NTTSV", "NTMSV", "NTLSV", "NTDSV", "NTSPSV", "NTESV", "NTRSV",) + #define PREFIX_NS_LOGI list("NSSV") + #define PREFIX_VIGILITAS list("VISV") +#define PREFIX_FRONTIERSMEN list("FFV") +#define PREFIX_PGF list("PGF", "PGFMC", "PGFN", "PGFS") +#define PREFIX_ZOHIL list("ZESV") +#define PREFIX_INDEPENDENT list("SV", "IMV", "ISV", "MSV", "ЕSV",) // CELADON EDIT +#define PREFIX_RAMZI list("RCSV") +#define PREFIX_NONE list() #define FACTION_SORT_INDEPENDENT 100 // Independents first because of majority #define FACTION_SORT_DEFAULT 50 // Everything else in the middle diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index 74a708ae604d..5f6da0abc4b7 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -115,10 +115,6 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 #define PASSPLATFORM (1<<8) /// Do not intercept click attempts during Adjacent() checks. See [turf/proc/ClickCross]. **ONLY MEANINGFUL ON pass_flags_self!** #define LETPASSCLICKS (1<<9) -// [CELADON-ADD] - CELADON_STRUCTURES - Барикады -#define PASSSTRUCTURE (1<<10) -#define PASSMACHINE (1<<11) -// [/CELADON-ADD] //Movement Types #define GROUND (1<<0) diff --git a/code/__DEFINES/guns.dm b/code/__DEFINES/guns.dm index 259a1b0b3395..b9541137d6b3 100644 --- a/code/__DEFINES/guns.dm +++ b/code/__DEFINES/guns.dm @@ -61,10 +61,7 @@ #define MANUFACTURER_EOEHOMA "the Eoehoma Firearms emblem" #define MANUFACTURER_NANOTRASEN_OLD "an outdated Nanotrasen logo" #define MANUFACTURER_NANOTRASEN "the Nanotrasen logo" -// [CELADON-EDIT] - возвращаем старое лого -// #define MANUFACTURER_VIGILITAS "the Nanotrasen Advantage logo" -#define MANUFACTURER_VIGILITAS "the Vigilitas Interstellar logo" -// [/CELADON-EDIT] +#define MANUFACTURER_VIGILITAS "the Vigilitas Interstellar logo" // [CELADON-EDIT] - возвращаем старое лого #define MANUFACTURER_BRAZIL "a green flag with a blue circle and a yellow diamond around it" #define MANUFACTURER_INTEQ "an orange crest with the letters 'IRMG'" #define MANUFACTURER_MINUTEMAN "the Lanchester City Firearms Plant logo" diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index 0e0f33fb9ce4..8f833e5253fa 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -49,9 +49,6 @@ #define HIDENECK (1<<10) #define HIDEHORNS (1<<11) // Used for hiding Sarathi horns. #define HIDESNOUT (1<<11) -// [CELADON-ADD] - CELADON_FIX_TAIL -#define HIDETAIL (1<<12) -// [/CELADON-ADD] //bitflags for clothing coverage - also used for limbs #define HEAD (1<<0) @@ -90,11 +87,6 @@ #define SNOUTED_SMALL_VARIATION (1<<5) //For Elzuose snouts #define VOX_VARIATION (1<<6) #define KEPORI_VARIATION (1<<7) -// [CELADON-ADD] - TAJARA -#define TAJARA_VARIATION (1<<8) -// [CELADON-ADD] - CELADON_RIOL -#define RIOL_VARIATION (1<<9) -// [/CELADON-ADD] #define NOT_DIGITIGRADE 0 #define FULL_DIGITIGRADE 1 diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index c9582c5f45d5..43e8f74e3ce9 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -234,9 +234,5 @@ GLOBAL_LIST_INIT(book_types, typecacheof(list( /obj/item/spellbook, /obj/item/storage/book))) -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -#define isclown(A) (istype(A, /mob/living/simple_animal/hostile/retaliate/clown)) -// [/CELADON-ADD] - /// Within given range and on the same z level (get dist is WEIRD bro) #define IN_GIVEN_RANGE(source, other, given_range) (get_dist(source, other) <= given_range && (get_step(source, 0)?:z) == (get_step(other, 0)?:z)) diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index 44051d6221a5..1d1597e130cf 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -43,13 +43,6 @@ #define JOB_DISPLAY_ORDER_BOTANIST 62 #define JOB_DISPLAY_ORDER_JANITOR 63 // [CELADON-EDIT] - RETURN_CONTENT - CLOWN_RETURN_CONTENT -/* -#define JOB_DISPLAY_ORDER_CURATOR 64 -#define JOB_DISPLAY_ORDER_LAWYER 65 -#define JOB_DISPLAY_ORDER_CHAPLAIN 66 -#define JOB_DISPLAY_ORDER_AI 67 -#define JOB_DISPLAY_ORDER_CYBORG 68 -*/ #define JOB_DISPLAY_ORDER_CLOWN 64 #define JOB_DISPLAY_ORDER_MIME 65 #define JOB_DISPLAY_ORDER_CURATOR 66 diff --git a/code/__DEFINES/maps.dm b/code/__DEFINES/maps.dm index 15dffdfe29fa..05849eb2d9b2 100644 --- a/code/__DEFINES/maps.dm +++ b/code/__DEFINES/maps.dm @@ -34,7 +34,6 @@ require only minor tweaks. #define ZTRAIT_RESERVED "Reserved" #define ZTRAIT_AWAY "Away Mission" #define ZTRAIT_SPACE_RUINS "Space Ruins" -#define ZTRAIT_SCAN_DISRUPT "Scanning Disruption" // [CELADON-EDIT] - CELADON_SURVEY_HANDHELD #define ZTRAIT_GAS_GIANT "Gas Giant" // enum - how SSsun should calculate sun exposure on this level @@ -129,10 +128,7 @@ require only minor tweaks. //Only used for unit testing at the moment, technically splits it into 16 but I didn't like the word for that #define ALLOCATION_OCTODRANT 3 -// [CELADON-EDIT] - CELADON_MAP_EXPANSION - Увеличиваем рамки аванпоста -//#define QUADRANT_MAP_SIZE 127 // CELADON-EDIT -> ORIGINAL -#define QUADRANT_MAP_SIZE 191 -// [/CELADON-EDIT] +#define QUADRANT_MAP_SIZE 191 // [CELADON-EDIT] - CELADON_MAP_EXPANSION - Увеличиваем рамки аванпоста #define OCTODRANT_MAP_SIZE 63 #define QUADRANT_SIZE_BORDER 3 diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 8ff0c1d607ee..c85f8afbb9f3 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -148,11 +148,6 @@ #define BODYTYPE_DIGITIGRADE (1<<6) //Lizard legs #define BODYTYPE_KEPORI (1<<7) //Just Kepori #define BODYTYPE_VOX (1<<8) //Big Vox -// [CELADON-ADD] - TAJARA -#define BODYTYPE_TAJARA (1<<9) //Fluffy Ass -// [CELADON-ADD] - RIOL -#define BODYTYPE_RIOL (1<<10) -// [/CELADON-ADD] // Health/damage defines #define MAX_LIVING_HEALTH 100 @@ -192,7 +187,7 @@ #define TRAUMA_RESILIENCE_BASIC 1 //Curable with chems #define TRAUMA_RESILIENCE_SURGERY 2 //Curable with brain surgery #define TRAUMA_RESILIENCE_LOBOTOMY 3 //Curable with lobotomy -#define TRAUMA_RESILIENCE_WOUND 4 //Curable by healing the head wound +#define TRAUMA_RESILIENCE_WOUND 4 //Curable by healing the relevant wound #define TRAUMA_RESILIENCE_MAGIC 5 //Curable only with magic #define TRAUMA_RESILIENCE_ABSOLUTE 6 //This is here to stay @@ -387,14 +382,11 @@ #define FLASH_PROTECTION_SENSITIVE -1 #define FLASH_PROTECTION_NONE 0 #define FLASH_PROTECTION_FLASH 1 -#define FLASH_PROTECTION_WELDER 2 +#define FLASH_PROTECTION_WELDER 3 // Roundstart trait system -// [CELADON-EDIT] - CELADON_RETURN_CONTENT_QUIRKS -// #define MAX_QUIRKS 4 // CELADON-EDIT - ORIGINAL -#define MAX_QUIRKS 6 //The maximum amount of quirks one character can have at roundstart -// [/CELADON-EDIT] +#define MAX_QUIRKS 6 //The maximum amount of quirks one character can have at roundstart // [CELADON-EDIT] - CELADON_RETURN_CONTENT_QUIRKS // AI Toggles #define AI_CAMERA_LUMINOSITY 5 diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm index 4bb72bc23c53..805cf1c2eb71 100644 --- a/code/__DEFINES/obj_flags.dm +++ b/code/__DEFINES/obj_flags.dm @@ -16,11 +16,6 @@ #define BLOCK_Z_IN_UP (1<<12) //! Should this object block z uprise from below? #define INFINITE_RESKIN (1<<13) // We can reskin this item infinitely #define ELEVATED_SURFACE (1<<14) // Should this object prevent open flames left on it from igniting the ground? -// [CELADON-ADD] - CELADON_STRUCTURES - Барикады -#define IGNORE_DENSITY (1<<15) //! Can we ignore density when building on this object? (for example, directional windows and grilles) -#define BLOCKS_CONSTRUCTION (1<<16) //! Does this object prevent things from being built on it? -#define BLOCKS_CONSTRUCTION_DIR (1<<17) //! Does this object prevent same-direction things from being built on it? -// [/CELADON-ADD] // If you add new ones, be sure to add them to /obj/Initialize as well for complete mapping support @@ -43,12 +38,6 @@ #define NO_PIXEL_RANDOM_DROP (1<<14) //if dropped, it wont have a randomized pixel_x/pixel_y #define HAND_ITEM (1<<15) /// If an item is just your hand (circled hand, slapper) and shouldn't block things like riding -// [CELADON-ADD] -/// Является ли данный предмет семейной ценностью (family heirloom) -#define FAMILY_HEIRLOOM (1<<16) //выбор вещей из лодаута как family heirloom -#define NO_ROTATE_RANDOM_THROW (1<<17) //if throwed, it wont have a randomized transform -// [/CELADON-ADD] - // Flags for the clothing_flags var on /obj/item/clothing #define LAVAPROTECT (1<<0) diff --git a/code/__DEFINES/overmap.dm b/code/__DEFINES/overmap.dm index cdaed61d6fe5..ea1365bc23d0 100644 --- a/code/__DEFINES/overmap.dm +++ b/code/__DEFINES/overmap.dm @@ -49,42 +49,6 @@ #define DYNAMIC_WORLD_GAS_GIANT "gas giant" #define DYNAMIC_WORLD_PLASMA_GIANT "plasma giant" -/// Make sure you are adding new planet types to this, in order as seen above preferrably -// [CELADON-EDIT] - CELADON_CONFIGS_MAPS - добавляем в лист дефайн -// #define DYNAMIC_WORLD_LIST_ALL list(\ // CELADON-EDIT -> ORIGINAL -// DYNAMIC_WORLD_LAVA,\ // CELADON-EDIT -> ORIGINAL -// DYNAMIC_WORLD_ICE,\ // CELADON-EDIT -> ORIGINAL -// DYNAMIC_WORLD_SAND,\ // CELADON-EDIT -> ORIGINAL -// DYNAMIC_WORLD_JUNGLE,\ // CELADON-EDIT -> ORIGINAL -// DYNAMIC_WORLD_ROCKPLANET,\ // CELADON-EDIT -> ORIGINAL -// DYNAMIC_WORLD_BEACHPLANET,\ // CELADON-EDIT -> ORIGINAL -// DYNAMIC_WORLD_WASTEPLANET,\ // CELADON-EDIT -> ORIGINAL -// DYNAMIC_WORLD_REEBE,\ // CELADON-EDIT -> ORIGINAL -// DYNAMIC_WORLD_ASTEROID,\ // CELADON-EDIT -> ORIGINAL -// DYNAMIC_WORLD_SPACERUIN,\ // CELADON-EDIT -> ORIGINAL -// DYNAMIC_WORLD_GAS_GIANT,\ // CELADON-EDIT -> ORIGINAL -// DYNAMIC_WORLD_PLASMA_GIANT) // CELADON-EDIT -> ORIGINAL -#define DYNAMIC_WORLD_LIST_ALL list(\ - DYNAMIC_WORLD_LAVA,\ - DYNAMIC_WORLD_ICE,\ - DYNAMIC_WORLD_SAND,\ - DYNAMIC_WORLD_JUNGLE,\ - DYNAMIC_WORLD_ROCKPLANET,\ - DYNAMIC_WORLD_BEACHPLANET,\ - DYNAMIC_WORLD_WASTEPLANET,\ - DYNAMIC_WORLD_REEBE,\ - DYNAMIC_WORLD_ASTEROID,\ - DYNAMIC_WORLD_SPACERUIN,\ - DYNAMIC_WORLD_GAS_GIANT,\ - DYNAMIC_WORLD_PLASMA_GIANT,\ - DYNAMIC_WORLD_OLD_TOWN,\ - DYNAMIC_WORLD_EARTH_SAND,\ - DYNAMIC_WORLD_ICE_NIGHT,\ - DYNAMIC_WORLD_JUNGLE_NIGHT,\ - DYNAMIC_WORLD_ROCKPLANET_NIGHT,\ - DYNAMIC_WORLD_BEACHPLANET_NIGHT,\ - DYNAMIC_WORLD_ANIMA) -// [/CELADON-EDIT] - CELADON_CONFIGS_MAPS #define DYNAMIC_WORLD_TEST "test" //Possible ship states @@ -117,7 +81,7 @@ #define BURN_STOP -1 // The filepath used to store the admin-controlled next round outpost map override. -#define OUTPOST_OVERRIDE_FILEPATH "data/outpost_override.json" +#define SAFEZONE_OVERRIDE_FILEPATH "data/safezone_override.json" // Converts ores to colors, meant for examining planets on the overmap #define ORES_TO_COLORS_LIST list(\ @@ -149,4 +113,4 @@ #define SHIPMODULE_BSDRIVE "bluespace_drive" #define SHIPMODULE_HELMCONSOLE "helm_console" #define SHIPMODULE_TRANSPONDER "transponder" - +#define SHIPMODULE_CLOAKING "cloaking" diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 23adfd9f68ab..508f7644bca9 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -5,7 +5,7 @@ #define SOUND_AMBIENCE (1<<2) #define SOUND_LOBBY (1<<3) #define MEMBER_PUBLIC (1<<4) -#define SOUND_JUKEBOX (1<<4) +#define SOUND_JUKEBOX (1<<4) // CELADON EDIT - smh #define INTENT_STYLE (1<<5) #define MIDROUND_ANTAG (1<<6) #define SOUND_INSTRUMENTS (1<<7) @@ -26,7 +26,7 @@ #define FAST_MC_REFRESH (1<<22) #define SOUND_RADIO (1<<23) -#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|SOUND_ENDOFROUND|SOUND_RADIO|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS|SOUND_JUKEBOX) +#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|SOUND_ENDOFROUND|SOUND_RADIO|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS|SOUND_JUKEBOX) // CELADON EDIT - smh //Chat toggles #define CHAT_OOC (1<<0) @@ -124,7 +124,7 @@ #define RANDOM_HAIR_GRADIENT_STYLE "random_grad_style" #define RANDOM_HAIR_GRADIENT_COLOR "random_grad_color" -//prosthetics stuff +//Limbs stuff #define PROSTHETIC_NORMAL "normal" #define PROSTHETIC_AMPUTATED "amputated" #define PROSTHETIC_ROBOTIC "prosthetic" diff --git a/code/__DEFINES/radio.dm b/code/__DEFINES/radio.dm index 459558dfb3af..487ed959e79e 100644 --- a/code/__DEFINES/radio.dm +++ b/code/__DEFINES/radio.dm @@ -29,7 +29,7 @@ #define RADIO_KEY_CENTCOM "e" #define RADIO_TOKEN_CENTCOM ":e" -#define RADIO_CHANNEL_SOLGOV "SolFed" //#define RADIO_CHANNEL_SOLGOV "SolGov" // [CELADON-EDIT] - CELADON_FIXES +#define RADIO_CHANNEL_SOLGOV "SolFed" // [CELADON-EDIT] - CELADON_FIXES #define RADIO_KEY_SOLGOV "s" #define RADIO_TOKEN_SOLGOV ":s" @@ -54,12 +54,6 @@ #define RADIO_TOKEN_PIRATE ":y" #define RADIO_CHANNEL_WIDEBAND "Wideband" -#define RADIO_KEY_WIDEBAND "w" -#define RADIO_TOKEN_WIDEBAND ":w" //WS End - -#define RADIO_CHANNEL_CTF_RED "Red Team" -#define RADIO_CHANNEL_CTF_BLUE "Blue Team" - #define MIN_FREE_FREQ 1201 // ------------------------------------------------- // Frequencies are always odd numbers and range from 1201 to 1599. diff --git a/code/__DEFINES/ruins.dm b/code/__DEFINES/ruins.dm index cce0a27954f6..26bbb841fc92 100644 --- a/code/__DEFINES/ruins.dm +++ b/code/__DEFINES/ruins.dm @@ -20,18 +20,6 @@ // IF YOU ADD NEW A NEW RUIN TYPE // PLEASE MAKE SURE YOU ADD IT TO THE BELOW LIST AND PROC! -// [CELADON-EDIT] - CELADON_CONFIGS_MAPS - добавляем в лист дефайн -// #define RUINTYPE_LIST_ALL list(\ // CELADON-EDIT -> ORIGINAL -// RUINTYPE_SPACE,\ // CELADON-EDIT -> ORIGINAL -// RUINTYPE_LAVA,\ // CELADON-EDIT -> ORIGINAL -// RUINTYPE_ICE,\ // CELADON-EDIT -> ORIGINAL -// RUINTYPE_SAND,\ // CELADON-EDIT -> ORIGINAL -// RUINTYPE_JUNGLE,\ // CELADON-EDIT -> ORIGINAL -// RUINTYPE_ROCK,\ // CELADON-EDIT -> ORIGINAL -// RUINTYPE_BEACH,\ // CELADON-EDIT -> ORIGINAL -// RUINTYPE_WASTE,\ // CELADON-EDIT -> ORIGINAL -// RUINTYPE_YELLOW,\ // CELADON-EDIT -> ORIGINAL -// RUINTYPE_EVERYTHING) // CELADON-EDIT -> ORIGINAL #define RUINTYPE_LIST_ALL list(\ RUINTYPE_SPACE,\ RUINTYPE_LAVA,\ @@ -42,6 +30,8 @@ RUINTYPE_BEACH,\ RUINTYPE_WASTE,\ RUINTYPE_YELLOW,\ + RUINTYPE_MOON,\ + /* [CELADON-EDIT] - CELADON_CONFIGS_MAPS - добавляем в лист дефайн */\ RUINTYPE_PLASMA,\ RUINTYPE_EARTH_SAND,\ RUINTYPE_WATER,\ @@ -49,9 +39,9 @@ RUINTYPE_ASTEROID,\ RUINTYPE_SHROUDED,\ RUINTYPE_ANIMA,\ - RUINTYPE_MOON,\ + /* [/CELADON-EDIT] - CELADON_CONFIGS_MAPS */\ RUINTYPE_EVERYTHING) -// [/CELADON-EDIT] - CELADON_CONFIGS_MAPS + /proc/ruintype_to_list(ruintype) if(ruintype == RUINTYPE_EVERYTHING) diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm index 2c6a76286f38..0315381ea5c3 100644 --- a/code/__DEFINES/say.dm +++ b/code/__DEFINES/say.dm @@ -80,7 +80,6 @@ #define SPAN_PAPYRUS "papyrus" #define SPAN_REALLYBIG "reallybig" #define SPAN_COMMAND "command_headset" -#define SPAN_CLOWN "clown" // [CELADON-ADD] - RETURN_CONTENT - CLOWN_RETURN_CONTENT #define SPAN_SINGING "singing" #define SPAN_SGA "sga" diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm index 13090e3eebe3..a1eeec64ff8c 100644 --- a/code/__DEFINES/sound.dm +++ b/code/__DEFINES/sound.dm @@ -102,7 +102,6 @@ #define SFX_BODYFALL "bodyfall" #define SFX_BULLET_MISS "bullet_miss" #define SFX_CAN_OPEN "can_open" -#define SFX_CLOWN_STEP "clown_step" // [CELADON-ADD] - RETURN_CONTENT - CLOWN_RETURN_CONTENT #define SFX_DESECRATION "desecration" #define SFX_EXPLOSION "explosion" #define SFX_EXPLOSION_CREAKING "explosion_creaking" diff --git a/code/__DEFINES/span.dm b/code/__DEFINES/span.dm index 7f7cb3e606b0..76b30176df4a 100644 --- a/code/__DEFINES/span.dm +++ b/code/__DEFINES/span.dm @@ -29,7 +29,6 @@ #define span_boldwarning(str) ("" + str + "") #define span_centcomradio(str) ("" + str + "") #define span_changeling(str) ("" + str + "") -#define span_clown(str) ("" + str + "") // [CELADON-ADD] - RETURN_CONTENT - CLOWN_RETURN_CONTENT #define span_colossus(str) ("" + str + "") #define span_command_headset(str) ("" + str + "") #define span_comradio(str) ("" + str + "") diff --git a/code/__DEFINES/species_clothing_defines.dm b/code/__DEFINES/species_clothing_defines.dm index 3e1f605c4286..b6497ec84263 100644 --- a/code/__DEFINES/species_clothing_defines.dm +++ b/code/__DEFINES/species_clothing_defines.dm @@ -19,37 +19,23 @@ #define DEFAULT_NECK_PATH 'mod_celadon/_storage_icons/icons/items/clothing/neck/overlay/neck.dmi' // [/CELADON-EDIT] #define DEFAULT_GLOVES_PATH 'icons/mob/clothing/hands.dmi' -// [CELADON-EDIT] - CELADON_RETURN_CONTENT_SPAWN -// #define DEFAULT_GLASSES_PATH 'icons/mob/clothing/eyes/eyes.dmi' // CELADON-EDIT - ORIGINAL -#define DEFAULT_GLASSES_PATH 'mod_celadon/_storage_icons/icons/items/clothing/eyes/overlay/eyes.dmi' -// [/CELADON-EDIT] +#define DEFAULT_GLASSES_PATH 'mod_celadon/_storage_icons/icons/items/clothing/eyes/overlay/eyes.dmi' // [CELADON-EDIT] - CELADON_RETURN_CONTENT_SPAWN #define DEFAULT_BELT_PATH 'icons/mob/clothing/belt.dmi' ///VOX PATHS #define VOX_UNIFORM_PATH 'icons/mob/species/vox/onmob_uniform_vox.dmi' #define VOX_BACK_PATH 'icons/mob/species/vox/onmob_back_vox.dmi' #define VOX_SHOES_PATH 'icons/mob/species/vox/onmob_feet_vox.dmi' -// [CELADON-EDIT] - CELADON_VOX -//#define VOX_SUIT_PATH 'icons/mob/species/vox/onmob_suit_vox.dmi' -#define VOX_SUIT_PATH 'mod_celadon/_storage_icons/icons/items/clothing/vox/onmob_suit_vox.dmi' -// [/CELADON-EDIT] #define VOX_ACCESSORY_PATH 'icons/mob/species/vox/onmob_accessory_vox.dmi' +#define VOX_SUIT_PATH 'mod_celadon/_storage_icons/icons/items/clothing/vox/onmob_suit_vox.dmi' // [CELADON-EDIT] - CELADON_VOX #define VOX_EARS_PATH 'icons/mob/species/vox/onmob_ears_vox.dmi' #define VOX_MASK_PATH 'icons/mob/species/vox/onmob_mask_vox.dmi' #define VOX_NECK_PATH 'icons/mob/species/vox/onmob_neck_vox.dmi' -// [CELADON-EDIT] - CELADON_VOX -//#define VOX_HEAD_PATH 'icons/mob/species/vox/onmob_head_vox.dmi' -#define VOX_HEAD_PATH 'mod_celadon/_storage_icons/icons/items/clothing/vox/onmob_head_vox.dmi' -// [/CELADON-EDIT] +#define VOX_HEAD_PATH 'mod_celadon/_storage_icons/icons/items/clothing/vox/onmob_head_vox.dmi' // [CELADON-EDIT] - CELADON_VOX #define VOX_GLOVES_PATH 'icons/mob/species/vox/onmob_hands_vox.dmi' #define VOX_GLASSES_PATH 'icons/mob/species/vox/onmob_eyes_vox.dmi' #define VOX_BELT_PATH 'icons/mob/species/vox/onmob_belt_vox.dmi' -// [CELADON-EDIT] - CELADON_UNDERWEAR -/* CELADON-EDIT - ORIGINAL -#define VOX_UNDERWEAR_TORSO_PATH 'icons/mob/clothing/underwear/species/vox/underwear_torso_vox.dmi' -*/ -#define VOX_UNDERWEAR_TORSO_PATH 'mod_celadon/_storage_icons/icons/items/clothing/underwear/species/vox/underwear_torso_vox.dmi' -// [/CELADON-EDIT] +#define VOX_UNDERWEAR_TORSO_PATH 'mod_celadon/_storage_icons/icons/items/clothing/underwear/species/vox/underwear_torso_vox.dmi' // [CELADON-EDIT] - CELADON_UNDERWEAR #define VOX_UNDERWEAR_LEGS_PATH 'icons/mob/clothing/underwear/species/vox/underwear_legs_vox.dmi' #define VOX_UNDERWEAR_SOCKS_PATH 'icons/mob/clothing/underwear/species/vox/underwear_socks_vox.dmi' @@ -67,11 +53,6 @@ #define KEPORI_GLOVES_PATH 'icons/mob/species/kepori/onmob_hands_kepori.dmi' #define KEPORI_BELT_PATH 'icons/mob/species/kepori/onmob_belt_kepori.dmi' // [CELADON-EDIT] - CELADON_UNDERWEAR -/* CELADON-EDIT - ORIGINAL -#define KEPORI_UNDERWEAR_TORSO_PATH 'icons/mob/clothing/underwear/species/kepori/underwear_torso_kepori.dmi' -#define KEPORI_UNDERWEAR_LEGS_PATH 'icons/mob/clothing/underwear/species/kepori/underwear_legs_kepori.dmi' -#define KEPORI_UNDERWEAR_SOCKS_PATH 'icons/mob/clothing/underwear/species/kepori/underwear_socks_kepori.dmi' -*/ #define KEPORI_UNDERWEAR_TORSO_PATH 'mod_celadon/_storage_icons/icons/items/clothing/underwear/species/kepori/underwear_torso_kepori.dmi' #define KEPORI_UNDERWEAR_LEGS_PATH 'mod_celadon/_storage_icons/icons/items/clothing/underwear/species/kepori/underwear_legs_kepori.dmi' #define KEPORI_UNDERWEAR_SOCKS_PATH 'mod_celadon/_storage_icons/icons/items/clothing/underwear/species/kepori/underwear_socks_kepori.dmi' diff --git a/code/__DEFINES/storage.dm b/code/__DEFINES/storage.dm index 6655436af871..43ee839426b5 100644 --- a/code/__DEFINES/storage.dm +++ b/code/__DEFINES/storage.dm @@ -78,20 +78,15 @@ GLOBAL_LIST_INIT(default_weight_class_to_volume, list( // #define MAX_WEIGHT_CLASS_S_CONTAINER WEIGHT_CLASS_SMALL #define MAX_WEIGHT_CLASS_M_CONTAINER WEIGHT_CLASS_NORMAL -// [CELADON-EDIT] - CELADON_BALANCE_CD - Меняем размер на нормал -// #define MAX_WEIGHT_CLASS_BACKPACK WEIGHT_CLASS_BULKY -#define MAX_WEIGHT_CLASS_BACKPACK WEIGHT_CLASS_NORMAL -// [/CELADON-EDIT] +#define MAX_WEIGHT_CLASS_BACKPACK WEIGHT_CLASS_NORMAL // [CELADON-EDIT] - CELADON_BALANCE_CD - Меняем размер на нормал #define MAX_WEIGHT_CLASS_DUFFEL WEIGHT_CLASS_BULKY // max_volume for storages #define STORAGE_VOLUME_CONTAINER_S DEFAULT_VOLUME_NORMAL //4 small items #define STORAGE_VOLUME_CONTAINER_M (DEFAULT_VOLUME_NORMAL * 2) //8 small items // [CELADON-EDIT] -//#define STORAGE_VOLUME_SATCHEL (DEFAULT_VOLUME_NORMAL * 5) //5 normal items // CELADON-EDIT - ORIGINAL -//#define STORAGE_VOLUME_BACKPACK (DEFAULT_VOLUME_NORMAL * 7) //3 bulky items, 1 normal item -#define STORAGE_VOLUME_SATCHEL (DEFAULT_VOLUME_NORMAL * 7) //7 normal items -#define STORAGE_VOLUME_BACKPACK (DEFAULT_VOLUME_NORMAL * 7) //3 bulky items, 1 normal item +#define STORAGE_VOLUME_SATCHEL (DEFAULT_VOLUME_NORMAL * 7) // 7 normal items +#define STORAGE_VOLUME_BACKPACK (DEFAULT_VOLUME_NORMAL * 7) // 7 normal items // [/CELADON-EDIT] #define STORAGE_VOLUME_DUFFLEBAG (DEFAULT_VOLUME_NORMAL * 10) //~1.25X backpack, 5 bulky items #define STORAGE_VOLUME_BAG_OF_HOLDING (DEFAULT_VOLUME_NORMAL * 10) diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 4a139c2e5622..609a65e52dd7 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -115,6 +115,7 @@ #define INIT_ORDER_SOUND_CACHE 84 #define INIT_ORDER_SOUNDS 83 #define INIT_ORDER_INSTRUMENTS 82 +#define INIT_ORDER_WOUNDS 81 #define INIT_ORDER_VIS 80 #define INIT_ORDER_ACHIEVEMENTS 77 #define INIT_ORDER_RESEARCH 75 diff --git a/code/__DEFINES/traits/traits.dm b/code/__DEFINES/traits/traits.dm index 9a01184c2578..dd87cb2b8aae 100644 --- a/code/__DEFINES/traits/traits.dm +++ b/code/__DEFINES/traits/traits.dm @@ -216,6 +216,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define TRAIT_NOMETABOLISM "no_metabolism" #define TRAIT_NOCLONELOSS "no_cloneloss" #define TRAIT_TOXIMMUNE "toxin_immune" +#define TRAIT_NOBLOOD "noblood" #define TRAIT_EASYDISMEMBER "easy_dismember" #define TRAIT_LIMBATTACHMENT "limb_attach" #define TRAIT_NOLIMBDISABLE "no_limb_disable" @@ -436,6 +437,10 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define MAPPING_HELPER_TRAIT "mapping-helper" //obtained from mapping helper /// Trait associated to wearing a suit #define SUIT_TRAIT "suit" +/// Trait associated with being EMPed +#define EMP_TRAIT "emp" +/// Trait associated with damage, whatever that means in the datum's context +#define DAMAGE_TRAIT "damage" /// Trait associated to lying down (having a [lying_angle] of a different value than zero). #define LYING_DOWN_TRAIT "lying-down" /// Trait associated to lacking electrical power. @@ -460,7 +465,6 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define NUKEOP_TRAIT "nuke-op" #define DEATHSQUAD_TRAIT "deathsquad" #define MEGAFAUNA_TRAIT "megafauna" -#define CLOWN_NUKE_TRAIT "clown-nuke" // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS #define STICKY_MOUSTACHE_TRAIT "sticky-moustache" #define CHAINSAW_FRENZY_TRAIT "chainsaw-frenzy" #define CHRONO_GUN_TRAIT "chrono-gun" @@ -489,6 +493,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define LACKING_MANIPULATION_APPENDAGES_TRAIT "lacking-manipulation-appengades" //trait associated to not having fine manipulation appendages such as hands #define HANDCUFFED_TRAIT "handcuffed" #define ORBITED_TRAIT "orbited" +/// Trait applied to organs when they are unable to function. +#define TRAIT_ORGAN_FAILING "organ_failing" /// Trait granted by [/obj/item/warpwhistle] #define WARPWHISTLE_TRAIT "warpwhistle" ///Turf trait for when a turf is transparent @@ -532,6 +538,12 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Disables the floating animation. See above. #define TRAIT_NO_FLOATING_ANIM "no-floating-animation" +// Traits for ships and other overmap objects +///This ship is cloaked or hidden and cannot be detected on long-range scanners +#define TRAIT_CLOAKED "cloaked" +///Currently only adds a blue-shifting during the cloak animation, will add functionality later when I add anti-ship weapons +#define TRAIT_BLUESPACE_SHIFT "bluespace_shift" + /// Trait granted by [mob/living/silicon/ai] /// Applied when the ai anchors itself #define AI_ANCHOR_TRAIT "ai_anchor" diff --git a/code/__DEFINES/turfs.dm b/code/__DEFINES/turfs.dm index f5aea2655832..aeeadc560ffe 100644 --- a/code/__DEFINES/turfs.dm +++ b/code/__DEFINES/turfs.dm @@ -14,10 +14,7 @@ #define IS_OPAQUE_TURF(turf) (turf.directional_opacity == ALL_CARDINALS) // Integrity of mineral walls. -// [CELADON-EDIT] - CELADON_BALANCE - Делаем из картонного камня скалу! -// #define MINERAL_WALL_INTEGRITY 100 -#define MINERAL_WALL_INTEGRITY 1200 -// [/CELADON-EDIT] +#define MINERAL_WALL_INTEGRITY 1200 // [CELADON-EDIT] - CELADON_BALANCE - Делаем из картонного камня скалу! // how many bullet holes a wall can have at a given time #define MAX_DENT_DECALS 15 diff --git a/code/__DEFINES/wounds.dm b/code/__DEFINES/wounds.dm index 8ed9aee08762..0832fc160f2f 100644 --- a/code/__DEFINES/wounds.dm +++ b/code/__DEFINES/wounds.dm @@ -13,6 +13,12 @@ /// set wound_bonus on an item or attack to this to disable checking wounding for the attack #define CANT_WOUND -100 +/// If there are multiple possible and valid wounds for the same type and severity, weight will be used to pick among them. See _wound_pregen_data.dm for more details +/// This is used in pick_weight, so use integers +#define WOUND_DEFAULT_WEIGHT 50 +/// Chance to roll a muscle wound from brute damage +#define WOUND_MUSCLE_WEIGHT 15 + // ~wound severities #define WOUND_SEVERITY_TRIVIAL 0 #define WOUND_SEVERITY_MODERATE 1 @@ -22,18 +28,18 @@ #define WOUND_SEVERITY_LOSS 4 -// ~wound categories -/// any brute weapon/attack that doesn't have sharpness. rolls for blunt bone wounds -#define WOUND_BLUNT "blunt" +// ~wound categories: wounding_types +/// any brute weapon/attack that doesn't have sharpness. rolls for blunt bone and metal buckling wounds +#define WOUND_BLUNT "wound_blunt" /// any brute weapon/attack with sharpness = SHARP_EDGED. rolls for slash wounds -#define WOUND_SLASH "slash" -/// any brute weapon/attack with sharpness = SHARP_POINTY. rolls for piercing wounds -#define WOUND_PIERCE "pierce" -/// any concentrated burn attack (lasers really). rolls for burning wounds -#define WOUND_BURN "burn" -/// any brute attacks, rolled on a chance -#define WOUND_MUSCLE "muscle" +#define WOUND_SLASH "wound_slash" +/// any brute weapon/attack with sharpness = SHARP_POINTY. rolls for piercing and electrical wounds +#define WOUND_PIERCE "wound_pierce" +/// any concentrated burn attack (lasers really). rolls for burning, heat-warping, and electrical wounds +#define WOUND_BURN "wound_burn" +/// Mainly a define used for wound_pregen_data, if a pregen data instance expects this, it will accept any and all wound types, even none at all +#define WOUND_ALL "wound_all" // ~determination second wind defines // How much determination reagent to add each time someone gains a new wound in [/datum/wound/proc/second_wind] @@ -47,22 +53,10 @@ /// While someone has determination in their system, their bleed rate is slightly reduced #define WOUND_DETERMINATION_BLEED_MOD 0.85 -// ~wound global lists -// list in order of highest severity to lowest -GLOBAL_LIST_INIT(global_wound_types, list(WOUND_BLUNT = list(/datum/wound/blunt/critical, /datum/wound/blunt/severe, /datum/wound/blunt/moderate), - WOUND_SLASH = list(/datum/wound/slash/critical, /datum/wound/slash/critical, /datum/wound/slash/moderate), - WOUND_PIERCE = list(/datum/wound/pierce/critical, /datum/wound/pierce/severe, /datum/wound/pierce/moderate), - WOUND_BURN = list(/datum/wound/burn/critical, /datum/wound/burn/severe, /datum/wound/burn/moderate), - WOUND_MUSCLE = list(/datum/wound/muscle/severe, /datum/wound/muscle/moderate) - )) - -// every single type of wound that can be rolled naturally, in case you need to pull a random one -GLOBAL_LIST_INIT(global_all_wound_types, list(/datum/wound/blunt/critical, /datum/wound/blunt/severe, /datum/wound/blunt/moderate, - /datum/wound/slash/critical, /datum/wound/slash/critical, /datum/wound/slash/moderate, - /datum/wound/pierce/critical, /datum/wound/pierce/severe, /datum/wound/pierce/moderate, - /datum/wound/burn/critical, /datum/wound/burn/severe, /datum/wound/burn/moderate, - /datum/wound/muscle/severe, /datum/wound/muscle/moderate)) - +/// Wounds using this competition mode will remove any wounds of a greater severity than itself in a random wound roll. In most cases, you dont want to use this. +#define WOUND_COMPETITION_OVERPOWER_GREATERS "wound_submit" +/// Wounds using this competition mode will remove any wounds of a lower severity than itself in a random wound roll. Used for ensuring the worse case scenario of a given injury_roll. +#define WOUND_COMPETITION_OVERPOWER_LESSERS "wound_dominate" // ~burn wound infection defines // Thresholds for infection for burn wounds, once infestation hits each threshold, things get steadily worse @@ -86,52 +80,108 @@ GLOBAL_LIST_INIT(global_all_wound_types, list(/datum/wound/blunt/critical, /datu #define WOUND_SLASH_DEAD_CLOT_MIN 0.05 /// if we suffer a bone wound to the head that creates brain traumas, the timer for the trauma cycle is +/- by this percent (0-100) #define WOUND_BONE_HEAD_TIME_VARIANCE 20 -/// Chance to roll a muscle wound from brute damage -#define MUSCLE_WOUND_CHANCE 20 - - -// ~mangling defines -// With the wounds pt. 2 update, general dismemberment now requires 2 things for a limb to be dismemberable (bone only creatures just need the second): -// 1. Skin is mangled: A critical slash or pierce wound on that limb -// 2. Bone is mangled: At least a severe bone wound on that limb -// see [/obj/item/bodypart/proc/get_mangled_state] for more information -#define BODYPART_MANGLED_NONE 0 -#define BODYPART_MANGLED_BONE 1 -#define BODYPART_MANGLED_FLESH 2 -#define BODYPART_MANGLED_BOTH 3 - +/// charge drain per severity level +#define WOUND_ELECTRIC_POWER_DRAIN 0.05 // ~biology defines -// What kind of biology we have, and what wounds we can suffer, mostly relies on the HAS_FLESH and HAS_BONE species traits on human species -/// golems and androids, cannot suffer any wounds -#define BIO_INORGANIC 0 -/// skeletons and plasmemes, can only suffer bone wounds, only needs mangled bone to be able to dismember -#define BIO_JUST_BONE 1 -/// nothing right now, maybe slimepeople in the future, can only suffer slashing, piercing, and burn wounds -#define BIO_JUST_FLESH 2 -/// standard humanoids, can suffer all wounds, needs mangled bone and flesh to dismember. conveniently, what you get when you combine BIO_JUST_BONE and BIO_JUST_FLESH -#define BIO_FLESH_BONE 3 - +// What kind of biology we have, and what wounds we can suffer, relies on the biological_state var on bodyparts. +/// Has absolutely fucking nothing, no wounds +#define BIO_INORGANIC NONE +/// Has bone - allows the victim to suffer T2-T3 bone blunt wounds +#define BIO_BONE (1<<0) +/// Has flesh - allows the victim to suffer fleshy slash pierce and burn wounds +#define BIO_FLESH (1<<1) +/// Has metal - allows the victim to suffer buckling and heat-warping wounds +#define BIO_METAL (1<<2) +/// Is wired internally - allows the victim to suffer electrical wounds (robotic T1-T3 slash/pierce) +#define BIO_WIRED (1<<3) +/// Has bloodflow - can suffer bleeding wounds and can bleed +#define BIO_BLOODED (1<<4) +/// Is connected by a joint - can suffer T1 bone blunt wounds (dislocation) +#define BIO_JOINTED (1<<5) + +/// Robotic - can suffer all metal/wired wounds, such as: UNIMPLEMENTED PLEASE UPDATE ONCE SYNTH WOUNDS 9/5/2023 ~Niko +#define BIO_ROBOTIC (BIO_METAL|BIO_WIRED) +/// Has flesh and bone - See BIO_BONE and BIO_FLESH +#define BIO_FLESH_BONE (BIO_BONE|BIO_FLESH) +/// Standard humanoid - can bleed and suffer all flesh/bone wounds, such as: T1-3 slash/pierce/burn/blunt, except dislocations. Think human heads/chests +#define BIO_STANDARD_UNJOINTED (BIO_FLESH_BONE|BIO_BLOODED) +/// Standard humanoid limbs - can bleed and suffer all flesh/bone wounds, such as: T1-3 slash/pierce/burn/blunt. Can also bleed, and be dislocated. Think human arms and legs +#define BIO_STANDARD_JOINTED (BIO_STANDARD_UNJOINTED|BIO_JOINTED) + +// "Where" a specific biostate is within a given limb +// Interior is hard shit, the last line, shit like bones +// Exterior is soft shit, targetted by slashes and pierces (usually), protects exterior +// A limb needs both mangled interior and exterior to be dismembered, but slash/pierce must mangle exterior to attack the interior +// Not having exterior/interior counts as mangled exterior/interior for the purposes of dismemberment +/// The given biostate is on the "interior" of the limb - hard shit, protected by exterior +#define ANATOMY_INTERIOR (1<<0) +/// The given biostate is on the "exterior" of the limb - soft shit, protects interior +#define ANATOMY_EXTERIOR (1<<1) +#define ANATOMY_EXTERIOR_AND_INTERIOR (ANATOMY_EXTERIOR|ANATOMY_INTERIOR) + +// Wound series +// A "wound series" is just a family of wounds that logically follow eachother +// Multiple wounds in a single series cannot be on a limb - the highest severity will always be prioritized, and lower ones will be skipped + +/// T1-T3 Bleeding slash wounds. Requires flesh. Can cause bleeding, but doesn't require it. From: slash.dm +#define WOUND_SERIES_FLESH_SLASH_BLEED "wound_series_flesh_slash_bled" +/// T1-T3 Basic blunt wounds. T1 requires jointed, but 2-3 require bone. From: bone.dm +#define WOUND_SERIES_BONE_BLUNT_BASIC "wound_series_bone_blunt_basic" +/// T1-T3 Basic burn wounds. Requires flesh. From: burns.dm +#define WOUND_SERIES_FLESH_BURN_BASIC "wound_series_flesh_burn_basic" +/// T1-3 Bleeding puncture wounds. Requires flesh. Can cause bleeding, but doesn't require it. From: pierce.dm +#define WOUND_SERIES_FLESH_PUNCTURE_BLEED "wound_series_flesh_puncture_bleed" +/// T1-3 Buckling wounds. Requires metal. From: buckling.dm +#define WOUND_SERIES_METAL_BUCKLING "wound_series_metal_buckling" +/// T1-3 Heat-warping wounds. Requires metal. From: heat_warping.dm +#define WOUND_SERIES_METAL_HEAT_WARPING "wound_series_metal_heat_warping" +/// T1-3 Electrical wounds. Requires wired. From: electrical.dm +#define WOUND_SERIES_WIRED_ELECTRICAL "wound_series_wired_electrical" +/// T1-3 Muscle wounds. Requires flesh. From: muscle.dm +#define WOUND_SERIES_FLESH_MUSCLE "wound_series_flesh_muscle" +/// Generic loss wounds. See loss.dm +#define WOUND_SERIES_LOSS_BASIC "wound_series_loss_basic" + +/// Used in get_corresponding_wound_type(): Will pick the highest severity wound out of severity_min and severity_max +#define WOUND_PICK_HIGHEST_SEVERITY 1 +/// Used in get_corresponding_wound_type(): Will pick the lowest severity wound out of severity_min and severity_max +#define WOUND_PICK_LOWEST_SEVERITY 2 + +// With the wounds pt. 2 update, general dismemberment now requires 2 things for a limb to be dismemberable (exterior/bone only creatures just need the second): +// 1. Exterior is mangled: A critical slash or pierce wound on that limb +// 2. Interior is mangled: At least a severe bone wound on that limb +// Lack of exterior or interior count as mangled exterior/interior respectively +// see [/obj/item/bodypart/proc/get_mangled_state] for more information, as well as GLOB.bio_state_anatomy +#define BODYPART_MANGLED_NONE NONE +#define BODYPART_MANGLED_INTERIOR (1<<0) +#define BODYPART_MANGLED_EXTERIOR (1<<1) +#define BODYPART_MANGLED_BOTH (BODYPART_MANGLED_INTERIOR | BODYPART_MANGLED_EXTERIOR) // ~wound flag defines -/// If this wound requires having the HAS_FLESH flag for humanoids -#define FLESH_WOUND (1<<0) -/// If this wound requires having the HAS_BONE flag for humanaoids -#define BONE_WOUND (1<<1) -/// If having this wound counts as mangled flesh for dismemberment -#define MANGLES_FLESH (1<<2) -/// If having this wound counts as mangled bone for dismemberment -#define MANGLES_BONE (1<<3) +/// If having this wound counts as mangled exterior for dismemberment +#define MANGLES_EXTERIOR (1<<0) +/// If having this wound counts as mangled interior for dismemberment +#define MANGLES_INTERIOR (1<<1) /// If this wound marks the limb as being allowed to have gauze applied -#define ACCEPTS_GAUZE (1<<4) +#define ACCEPTS_GAUZE (1<<2) /// If this wound marks the limb as being allowed to have splints applied -#define ACCEPTS_SPLINT (1<<5) +#define ACCEPTS_SPLINT (1<<3) +/// Whether this wound is fixed when replacing the external plating +#define PLATING_DAMAGE (1<<4) +/// If this wound allows the victim to grasp it +#define CAN_BE_GRASPED (1<<5) +/// This causes the wound to numb the affected limb +#define NUMBS_BODYPART (1<<6) /// When a wound is staining the gauze with blood #define GAUZE_STAIN_BLOOD 1 /// When a wound is staining the gauze with pus #define GAUZE_STAIN_PUS 2 +/// Limb integrity is reduced to this before being used to calculate how much integrity loss it should have. +#define WOUND_MAX_INTEGRITY_CONSIDERED 50 + // ~blood_flow rates of change, these are used by [/datum/wound/proc/get_bleed_rate_of_change] from [/mob/living/carbon/proc/bleed_warn] to let the player know if their bleeding is getting better/worse/the same /// Our wound is clotting and will eventually stop bleeding if this continues #define BLOOD_FLOW_DECREASING -1 diff --git a/code/__DEFINES/~mod_celadon/names.dm b/code/__DEFINES/~mod_celadon/names.dm index 3e3a29c4fff7..4b8737a0b9a2 100644 --- a/code/__DEFINES/~mod_celadon/names.dm +++ b/code/__DEFINES/~mod_celadon/names.dm @@ -1,28 +1,10 @@ // Перенесено с code\__HELPERS\names.dm | Инициализация префиксов кораблей для дальнейшего использования в конфигах. -#define FACTION_SYNDICATE "Syndicate" - #define FACTION_NGR "New Gorlex Republic" - #define FACTION_CYBERSUN "CyberSun" - #define FACTION_HARDLINERS "Hardliners" - #define FACTION_SUNS "Student-Union of Naturalistic Sciences" #define FACTION_SOLFED "SolFed" -#define FACTION_SOLCON "SolFed" -#define FACTION_INTEQ "InteQ" -#define FACTION_NT "Nanotrasen" - #define FACTION_NS_LOGI "N+S Logistics" - #define FACTION_VIGILITAS "Vigilitas Interstellar" -#define FACTION_INDEPENDENT "Independent" #define FACTION_ELYSIUM "Elysium" #define FACTION_EVENT "Event" #define FACTION_PIRATES "Pirates" -#define FACTION_UNKNOWN "Unknown" -#define FACTION_RAMZI "Ramzi Clique" #define FACTION_RAMZI_RENEGADE "Ramzi Renegade" // [CELADON-ADD] -#define FACTION_SRM "Saint-Roumain Militia" -#define FACTION_CLIP "CLIP Minutemen" -#define FACTION_FRONTIER "Frontiersmen Fleet" -#define FACTION_FRONTIERSMEN "Frontiersmen Fleet" -#define FACTION_PGF "Pan-Gezenan Federation" // code/__DEFINES/mobfactions.dm // #define FACTION_PLAYER_SYNDICATE "playerSyndicate" @@ -36,37 +18,7 @@ // #define FACTION_PLAYER_ROUMAIN "playerRoumain" // #define FACTION_PLAYER_GEZENA "playerGezena" -#define PREFIX_SRM list("SRSV",) -#define PREFIX_SYNDICATE list("SEV", "SSV", "SMMV", "PCAC", "SSASV", "SSSV", "SOSSV", "TSSV", "SABSV", "BSSV", "ASSV", "MSSV", "LSSV", "DSSV", "RSSV",) - #define PREFIX_NGR list("NGRV",) - #define PREFIX_CYBERSUN list("CSSV",) - #define PREFIX_HARDLINERS list("HSSV",) - #define PREFIX_SUNS list("SUNS",) -#define PREFIX_SOLCON list("SCSV",) #define PREFIX_SOLFED list("SFSV", "BSFSV", "ASFSV", "SSFSV", "MDSFSV", "LSFSV", "MSFSV", "SPSFSV",) -#define PREFIX_INTEQ list("IRMV", "IQMSSV", "BIQSV", "LIQSV", "SPIQSV",) -#define PREFIX_NT list("NTSV", "NTBSV", "NTASV", "NTSSV", "NTTSV", "NTMSV", "NTLSV", "NTDSV", "NTSPSV", "NTESV", "NTRSV",) - #define PREFIX_NS_LOGI list("NSSV",) - #define PREFIX_VIGILITAS list("VISV",) -#define PREFIX_FRONTIER list("FFV",) -#define PREFIX_INDEPENDENT list("SV", "IMV", "ISV", "MSV", "ЕSV") #define PREFIX_ELYSIUM list("EUSM", "EUSQ", "EUSF", "EUSR") #define PREFIX_PIRATES list("PIRATE", "RSV",) #define PREFIX_EVENT list("CLO",) - -#define PREFIX_FRONTIERSMEN list("FFV") -#define PREFIX_CLIP list("CMSV", "CMGSV",) -#define PREFIX_PGF list("PGF", "PGFMC", "PGFN",) -#define PREFIX_RAMZI list("RCSV",) -#define PREFIX_NONE list() - -GLOBAL_LIST_INIT(ship_faction_to_prefixes, list( - FACTION_SYNDICATE = PREFIX_SYNDICATE, - FACTION_SOLFED = PREFIX_SOLFED, - FACTION_INTEQ = PREFIX_INTEQ, - FACTION_NT = PREFIX_NT, - FACTION_INDEPENDENT = PREFIX_INDEPENDENT, - FACTION_ELYSIUM = PREFIX_ELYSIUM, - FACTION_PIRATES = PREFIX_PIRATES, - FACTION_EVENT = PREFIX_EVENT - )) diff --git a/code/__DEFINES/~mod_celadon/unsorted_defines.dm b/code/__DEFINES/~mod_celadon/unsorted_defines.dm new file mode 100644 index 000000000000..d091635e573a --- /dev/null +++ b/code/__DEFINES/~mod_celadon/unsorted_defines.dm @@ -0,0 +1,112 @@ +//#define NOOVERMAP //uncomment this to load centcom and runtime station and thats it. +//#define MINIMAL //uncomment this to load a smaller centcomm and smaller runtime station, only works together with NOOVERMAP + +#ifdef MINIMAL +#define NOOVERMAP +#endif + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +#define MEDAL_CLOWNCARKING "Round and Full" +#define MEDAL_THANKSALOT "The Best Driver" +// [/CELADON-ADD] + +#define CINEMATIC_NUKE_CLOWNOP 12 // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +#define CLOWNMUT /datum/mutation/human/clumsy // [CELADON-ADD] - RETURN_CONTENT - CLOWN_RETURN_CONTENT + +// [CELADON-ADD] - CELADON_STRUCTURES - Барикады +#define PASSSTRUCTURE (1<<10) +#define PASSMACHINE (1<<11) +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_FIX_TAIL +#define HIDETAIL (1<<12) +// [/CELADON-ADD] + +// [CELADON-ADD] - TAJARA +#define TAJARA_VARIATION (1<<8) +// [CELADON-ADD] - CELADON_RIOL +#define RIOL_VARIATION (1<<9) +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +#define isclown(A) (istype(A, /mob/living/simple_animal/hostile/retaliate/clown)) +// [/CELADON-ADD] + +#define ZTRAIT_SCAN_DISRUPT "Scanning Disruption" // [CELADON-EDIT] - CELADON_SURVEY_HANDHELD + +// [CELADON-ADD] - TAJARA +#define BODYTYPE_TAJARA (1<<9) //Fluffy Ass +// [CELADON-ADD] - RIOL +#define BODYTYPE_RIOL (1<<10) +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_STRUCTURES - Барикады +#define IGNORE_DENSITY (1<<15) //! Can we ignore density when building on this object? (for example, directional windows and grilles) +#define BLOCKS_CONSTRUCTION (1<<16) //! Does this object prevent things from being built on it? +#define BLOCKS_CONSTRUCTION_DIR (1<<17) //! Does this object prevent same-direction things from being built on it? +// [/CELADON-ADD] + +// [CELADON-ADD] +#define NO_ROTATE_RANDOM_THROW (1<<17) //if throwed, it wont have a randomized transform +// [/CELADON-ADD] + +#define RADIO_KEY_WIDEBAND "w" +#define RADIO_TOKEN_WIDEBAND ":w" //WS End + +#define SPAN_CLOWN "clown" // [CELADON-ADD] - RETURN_CONTENT - CLOWN_RETURN_CONTENT +#define SFX_CLOWN_STEP "clown_step" // [CELADON-ADD] - RETURN_CONTENT - CLOWN_RETURN_CONTENT +#define span_clown(str) ("" + str + "") // [CELADON-ADD] - RETURN_CONTENT - CLOWN_RETURN_CONTENT +#define BB_MONKEY_WEAPON_PICKUP_COOLDOWN "BB_monkey_weapon_pickup_cooldown" // [CELADON-ADD] - FIXES_MONKEY_STOPPED_SPEEDUP +#define CLOWN_NUKE_TRAIT "clown-nuke" // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + +// [CELADON-ADD] - CELADON_STRUCTURES - Барикады +/// All armors, preferable in the order as seen above +#define ARMOR_LIST_ALL(...) list(MELEE, BULLET, LASER, ENERGY, BOMB, BIO, RAD, FIRE, ACID, MAGIC, WOUND) + +#define RAD "rad" +#define MAGIC "magic" +// [/CELADON-ADD] + +#define CART_CLOWN (1<<23) +#define CART_MIME (1<<22) + +#define TREE_ATTACK_SOUNDS list(\ + 'mod_celadon/_storage_sounds/sound/trees/treechop1.ogg', \ + 'mod_celadon/_storage_sounds/sound/trees/treechop2.ogg', \ + 'mod_celadon/_storage_sounds/sound/trees/treechop3.ogg', \ +) + +#define INSANE_CLOWN 5 + +// tgui .scss themes +#define THEME_SYNDICATE "syndicate" +#define THEME_INTEQ "inteq" +#define THEME_SOLFED "solfed" +#define THEME_INDEPENDENT "independent" +#define THEME_NT "nt" + +#define CELADON_BELT_OVERLAYS_ICON 'mod_celadon/_storage_icons/icons/items/clothing/belt/belt_overlays.dmi' +#define CELADON_VOX_ACCESSORY_PATH 'mod_celadon/_storage_icons/icons/species/vox/accessory_vox.dmi' + +//[CELADON-ADD] - CELADON_OUTPOST_CONSOLE +#define ACCOUNT_FAC "FAC" +#define ACCOUNT_FAC_NAME "Faction Budget" +#define ACCOUNT_SYN "SYN" +#define ACCOUNT_SYN_NAME "Syndicate Budget" +#define ACCOUNT_INT "INT" +#define ACCOUNT_INT_NAME "InteQ Budget" +#define ACCOUNT_SLF "SLF" +#define ACCOUNT_SLF_NAME "SolFed Budget" +#define ACCOUNT_NTN "NTN" +#define ACCOUNT_NTN_NAME "Nanotrasen Budget" +#define ACCOUNT_IND "IND" +#define ACCOUNT_IND_NAME "Independent Budget" +#define ACCOUNT_IND_1 "IND_1" +#define ACCOUNT_IND_1_NAME "Independent 1 Budget" +#define ACCOUNT_IND_2 "IND_2" +#define ACCOUNT_IND_2_NAME "Independent 2 Budget" +#define ACCOUNT_IND_3 "IND_3" +#define ACCOUNT_IND_3_NAME "Independent 3 Budget" +#define ACCOUNT_IND_4 "IND_4" +#define ACCOUNT_IND_4_NAME "Independent 4 Budget" +//[/CELADON-ADD] diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm index 72236dc21a08..7ebb379a4f35 100644 --- a/code/__HELPERS/_lists.dm +++ b/code/__HELPERS/_lists.dm @@ -70,6 +70,7 @@ #define LAZYACCESSASSOC(L, I, K) L ? L[I] ? L[I][K] ? L[I][K] : null : null : null #define LAZYNULL(L) L = null #define QDEL_LAZYLIST(L) for(var/I in L) qdel(I); L = null; +#define QDEL_LAZYASSOCLIST(L) for(var/K in L) qdel(L[K]); L = null; /// ORs two lazylists together without inserting errant nulls, returning a new list and not modifying the existing lists. #define LAZY_LISTS_OR(left_list, right_list)\ (length(left_list)\ diff --git a/code/__HELPERS/dynamic_human_icon_gen.dm b/code/__HELPERS/dynamic_human_icon_gen.dm index 7aa6a3677ec0..25c91ac0fd2a 100644 --- a/code/__HELPERS/dynamic_human_icon_gen.dm +++ b/code/__HELPERS/dynamic_human_icon_gen.dm @@ -37,14 +37,14 @@ GLOBAL_LIST_EMPTY(dynamic_human_appearances) var/datum/component/two_handed/twohanded = carried_item.GetComponent(/datum/component/two_handed) if(twohanded) twohanded.wield(dummy, instant = TRUE) -// [CELADON-EDIT] - CELADON_FIXES - FIXES_ICON_MOB_IN_HAND - Рука + Лицо -// var/datum/component/transforming/transforming = carried_item.GetComponent(/datum/component/transforming) -// if(transforming) -// transforming.set_active(carried_item) + // [CELADON-EDIT] - CELADON_FIXES - FIXES_ICON_MOB_IN_HAND - Рука + Лицо + // var/datum/component/transforming/transforming = carried_item.GetComponent(/datum/component/transforming) + // if(transforming) + // transforming.set_active(carried_item) var/datum/component/transforming/transforming = carried_item.GetComponent(/datum/component/transforming) if(transforming) transforming.set_active(carried_item) -// [/CELADON-EDIT] + // [/CELADON-EDIT] if(bloody_slots & carried_item.slot_flags) carried_item.add_mob_blood(dummy) //dummy.update_held_items() diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index f55c17d241f9..9cedd9ad4d7a 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -36,7 +36,8 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_screens, GLOB.ipc_screens_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_antennas, GLOB.ipc_antennas_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_tail, GLOB.ipc_tail_list) - init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_chassis, GLOB.ipc_chassis_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/body, GLOB.alternative_body_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/body/ipc_chassis, GLOB.ipc_chassis_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_markings, GLOB.moth_markings_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_legs, GLOB.spider_legs_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_spinneret, GLOB.spider_spinneret_list) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 6a81fe99bddc..70c8e42e9b82 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -66,10 +66,6 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/moth_markings, GLOB.moth_markings_list) if(!GLOB.squid_face_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/squid_face, GLOB.squid_face_list) - // [CELADON-ADD] - CELADON_IPC_HAIR - if(!GLOB.ipc_hair_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_hair, GLOB.ipc_hair_list) - // [/CELADON-ADD] - CELADON_IPC_HAIR if(!GLOB.ipc_screens_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_screens, GLOB.ipc_screens_list) if(!GLOB.ipc_antennas_list.len) @@ -77,7 +73,7 @@ if(!GLOB.ipc_tail_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_antennas, GLOB.ipc_tail_list) if(!GLOB.ipc_chassis_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_chassis, GLOB.ipc_chassis_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/body/ipc_chassis, GLOB.ipc_chassis_list) if(!GLOB.spider_legs_list.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_legs, GLOB.spider_legs_list) if(!GLOB.spider_spinneret_list.len) @@ -94,54 +90,6 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/elzu_horns, GLOB.elzu_horns_list) if(!GLOB.tails_list_elzu.len) init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/elzu, GLOB.tails_list_elzu) - // [CELADON-ADD] - TAJARA - if(!GLOB.tajara_chest_markings_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/tajara_chest_markings, GLOB.tajara_chest_markings_list) - if(!GLOB.tajara_body_markings_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/tajara_body_markings, GLOB.tajara_body_markings_list) - if(!GLOB.tajara_facial_hairs_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/tajara_facial_hairs, GLOB.tajara_facial_hairs_list) - if(!GLOB.tajara_nose_markings_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/tajara_nose_markings, GLOB.tajara_nose_markings_list) - if(!GLOB.tajara_ears_markings_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/tajara_ears_markings, GLOB.tajara_ears_markings_list) - if(!GLOB.tajara_head_markings_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/tajara_head_markings, GLOB.tajara_head_markings_list) - if(!GLOB.tajara_tail_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/tajara, GLOB.tajara_tail_list) - if(!GLOB.tajara_animated_tail_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/tajara, GLOB.tajara_animated_tail_list) - if(!GLOB.tajara_hairs_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/tajara_hairs, GLOB.tajara_hairs_list) - if(!GLOB.tajara_ears_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/tajara_ears, GLOB.tajara_ears_list) - // [CELADON-ADD] - CELADON_RIOL - if(!GLOB.riol_chest_markings_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_chest_markings, GLOB.riol_chest_markings_list) - if(!GLOB.riol_body_markings_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_body_markings, GLOB.riol_body_markings_list) - if(!GLOB.riol_facial_hairs_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_facial_hairs, GLOB.riol_facial_hairs_list) - if(!GLOB.riol_nose_markings_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_nose_markings, GLOB.riol_nose_markings_list) - if(!GLOB.riol_ears_markings_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_ears_markings, GLOB.riol_ears_markings_list) - if(!GLOB.riol_head_markings_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_head_markings, GLOB.riol_head_markings_list) - if(!GLOB.riol_tail_markings_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_tail_markings, GLOB.riol_tail_markings_list) - if(!GLOB.riol_legs_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_legs, GLOB.riol_legs_list) - if(!GLOB.riol_tail_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/riol, GLOB.riol_tail_list) - if(!GLOB.riol_animated_tail_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/riol, GLOB.riol_animated_tail_list) - if(!GLOB.riol_hairs_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_hairs, GLOB.riol_hairs_list) - if(!GLOB.riol_ears_list.len) - init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_ears, GLOB.riol_ears_list) - // [/CELADON-ADD] - //For now we will always return none for tail_human and ears. //if you don't keep this alphabetised I'm going to personally steal your shins and sell them online return list( @@ -156,33 +104,12 @@ "ipc_brain" = pick(GLOB.ipc_brain_list), "ipc_chassis" = pick(GLOB.ipc_chassis_list), "ipc_screen" = pick(GLOB.ipc_screens_list), - "ipc_hair" = pick(GLOB.ipc_hair_list), // [CELADON-ADD] - CELADON_IPC_HAIR "kepori_body_feathers" = pick(GLOB.kepori_body_feathers_list), "kepori_head_feathers" = pick(GLOB.kepori_head_feathers_list), "kepori_feathers" = pick(GLOB.kepori_feathers_list), "kepori_tail_feathers" = pick(GLOB.kepori_tail_feathers_list), - "legs" = "Normal Legs", - // [CELADON-EDIT] - TAJARA - токс цвета ремув - изменения базы - // "mcolor" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), - // "mcolor2" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), - // CELADON-EDIT - ORIGINAL - "mcolor" = pick("FFFFFF","7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), - "mcolor2" = pick("FFFFFF","7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), - // [/CELADON-EDIT] - // [CELADON-ADD] - TAJARA - "tajara_ears_markings_color" = pick("FFFFFF","7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), - "tajara_head_markings_color" = pick("FFFFFF","7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), - "tajara_nose_markings_color" = pick("FFFFFF","7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), - "tajara_chest_markings_color" = pick("FFFFFF","7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), - "tajara_body_markings_color" = pick("FFFFFF","7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), - // [CELADON-ADD] - CELADON_RIOL - "riol_ears_markings_color" = pick("FFFFFF", "7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), - "riol_head_markings_color" = pick("FFFFFF", "7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), - "riol_nose_markings_color" = pick("FFFFFF", "7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), - "riol_chest_markings_color" = pick("FFFFFF", "7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), - "riol_body_markings_color" = pick("FFFFFF", "7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), - "riol_tail_markings_color" = pick("FFFFFF", "7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), - // [/CELADON-ADD] + "mcolor" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), + "mcolor2" = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F"), "moth_fluff" = pick(GLOB.moth_fluff_list), "moth_markings" = pick(GLOB.moth_markings_list), "moth_wings" = pick(GLOB.moth_wings_list), @@ -197,29 +124,6 @@ "vox_head_quills" = pick(GLOB.vox_head_quills_list), "vox_neck_quills" = pick(GLOB.vox_neck_quills_list), "wings" = "None", - // [CELADON-ADD] - TAJARA - "tajara_ears" = pick(GLOB.tajara_ears_list), - "tajara_hairs" = pick(GLOB.tajara_hairs_list), - "tajara_ears_markings" = pick(GLOB.tajara_ears_markings_list), - "tajara_head_markings" = pick(GLOB.tajara_head_markings_list), - "tajara_facial_hairs" = pick(GLOB.tajara_facial_hairs_list), - "tajara_nose_markings" = pick(GLOB.tajara_nose_markings_list), - "tajara_chest_markings" = pick(GLOB.tajara_chest_markings_list), - "tajara_body_markings" = pick(GLOB.tajara_body_markings_list), - "tajara_tail" = pick(GLOB.tajara_tail_list), - // [CELADON-ADD] - CELADON_RIOL - "riol_ears" = pick(GLOB.riol_ears_list), - "riol_hairs" = pick(GLOB.riol_hairs_list), - "riol_ears_markings" = pick(GLOB.riol_ears_markings_list), - "riol_head_markings" = pick(GLOB.riol_head_markings_list), - "riol_facial_hairs" = pick(GLOB.riol_facial_hairs_list), - "riol_nose_markings" = pick(GLOB.riol_nose_markings_list), - "riol_chest_markings" = pick(GLOB.riol_chest_markings_list), - "riol_body_markings" = pick(GLOB.riol_body_markings_list), - "riol_tail_markings" = pick(GLOB.riol_tail_markings_list), - "riol_tail" = pick(GLOB.riol_tail_list), - "riol_legs" = pick(GLOB.riol_legs_list), - // [/CELADON-ADD] ) /proc/random_hairstyle(gender) diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm index f27ed3eb3946..30c68926951d 100644 --- a/code/__HELPERS/names.dm +++ b/code/__HELPERS/names.dm @@ -242,15 +242,6 @@ GLOBAL_DATUM(syndicate_code_response_regex, /regex) else . += ", " -/proc/ship_prefix_to_faction(prefix) - for(var/faction in GLOB.ship_faction_to_prefixes) - if(prefix in GLOB.ship_faction_to_prefixes[faction]) - return faction - var/static/list/screamed = list() - if(!(prefix in screamed)) - screamed += prefix - stack_trace("attempted to get faction for unknown prefix [prefix]") - return "?!ERR!?" /** * returns an ic name of the tool needed * Arguments: diff --git a/code/__HELPERS/pronouns.dm b/code/__HELPERS/pronouns.dm index 28a8e39eb429..24aaf8ad4210 100644 --- a/code/__HELPERS/pronouns.dm +++ b/code/__HELPERS/pronouns.dm @@ -215,7 +215,33 @@ . = "es" //humans need special handling, because they can have their gender hidden +/mob/living/carbon/human/proc/get_pronouns() + if(pronouns) + if(pronouns == "He") + return MALE + else if(pronouns == "She") + return FEMALE + else if(pronouns == "It") + return NEUTER + else + return PLURAL + return gender + +/mob/living/carbon/human/proc/get_default_pronouns() + switch(gender) + if(MALE) + return "He" + if(FEMALE) + return "She" + if(PLURAL) + return "They" + if(NEUTER) + return "It" + return "They" + /mob/living/carbon/human/p_they(capitalized, temp_gender) + if(!temp_gender) + temp_gender = get_pronouns() var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) if((ITEM_SLOT_ICLOTHING in obscured) && skipface) @@ -223,6 +249,8 @@ return ..() /mob/living/carbon/human/p_their(capitalized, temp_gender) + if(!temp_gender) + temp_gender = get_pronouns() var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) if((ITEM_SLOT_ICLOTHING in obscured) && skipface) @@ -230,6 +258,8 @@ return ..() /mob/living/carbon/human/p_them(capitalized, temp_gender) + if(!temp_gender) + temp_gender = get_pronouns() var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) if((ITEM_SLOT_ICLOTHING in obscured) && skipface) @@ -237,6 +267,8 @@ return ..() /mob/living/carbon/human/p_have(temp_gender) + if(!temp_gender) + temp_gender = get_pronouns() var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) if((ITEM_SLOT_ICLOTHING in obscured) && skipface) @@ -244,6 +276,8 @@ return ..() /mob/living/carbon/human/p_are(temp_gender) + if(!temp_gender) + temp_gender = get_pronouns() var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) if((ITEM_SLOT_ICLOTHING in obscured) && skipface) @@ -251,6 +285,8 @@ return ..() /mob/living/carbon/human/p_were(temp_gender) + if(!temp_gender) + temp_gender = get_pronouns() var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) if((ITEM_SLOT_ICLOTHING in obscured) && skipface) @@ -258,6 +294,8 @@ return ..() /mob/living/carbon/human/p_do(temp_gender) + if(!temp_gender) + temp_gender = get_pronouns() var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) if((ITEM_SLOT_ICLOTHING in obscured) && skipface) @@ -265,6 +303,8 @@ return ..() /mob/living/carbon/human/p_s(temp_gender) + if(!temp_gender) + temp_gender = get_pronouns() var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) if((ITEM_SLOT_ICLOTHING in obscured) && skipface) @@ -272,6 +312,8 @@ return ..() /mob/living/carbon/human/p_es(temp_gender) + if(!temp_gender) + temp_gender = get_pronouns() var/list/obscured = check_obscured_slots() var/skipface = (wear_mask && (wear_mask.flags_inv & HIDEFACE)) || (head && (head.flags_inv & HIDEFACE)) if((ITEM_SLOT_ICLOTHING in obscured) && skipface) diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index 98758df3c987..9dcc2bbafda1 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -300,7 +300,6 @@ parts += "[FOURSPACES]Round ID: [info]" parts += "[FOURSPACES]Shift Duration: [DisplayTimeText(REALTIMEOFDAY - SSticker.round_start_timeofday)]" // [CELADON-EDIT] - Изменён вывод гринтекста на более правильный для последующего вывода в Discord. - // parts += "[FOURSPACES]Station Integrity: [mode.station_was_nuked ? span_redtext("Destroyed") : "[popcount["station_integrity"]]%"]" parts += "
[FOURSPACES]Корабли: [length(SSovermap.controlled_ships)]" for(var/datum/overmap/ship/controlled/Ship as anything in SSovermap.controlled_ships) if(Ship.source_template.short_name) diff --git a/code/__HELPERS/sanitize_values.dm b/code/__HELPERS/sanitize_values.dm index 510502dc943c..e34bd8059570 100644 --- a/code/__HELPERS/sanitize_values.dm +++ b/code/__HELPERS/sanitize_values.dm @@ -37,6 +37,11 @@ return pick(possible_genders) return gender +/proc/sanitize_pronouns(pronouns, default="He") + if(pronouns == "He" || pronouns == "She" || pronouns == "They" || pronouns == "It") + return pronouns + return default + /proc/sanitize_hexcolor(color, desired_format = 6, include_crunch = FALSE, default) var/crunch = include_crunch ? "#" : "" if(!istext(color)) diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 45b3574cf62a..f544675c5e75 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -221,12 +221,12 @@ Turf and target are separate in case you want to teleport some distance from a t switch(role) if("human") newname = random_unique_name(gender) -// [CELADON-ADD] - RETURN_CONTENT - CLOWN_RETURN_CONTENT + // [CELADON-ADD] - RETURN_CONTENT - CLOWN_RETURN_CONTENT if("clown") newname = pick(GLOB.clown_names) if("mime") newname = pick(GLOB.mime_names) -// [/CELADON-ADD] + // [/CELADON-ADD] if("ai") newname = pick(GLOB.ai_names) else diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index b78580d4647e..47b3abee5558 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -152,7 +152,7 @@ DEFINE_BITFIELD(item_flags, list( "NO_MAT_REDEMPTION" = NO_MAT_REDEMPTION, "SLOWS_WHILE_IN_HAND" = SLOWS_WHILE_IN_HAND, "NO_PIXEL_RANDOM_DROP" = NO_PIXEL_RANDOM_DROP, - "NO_ROTATE_RANDOM_THROW" = NO_ROTATE_RANDOM_THROW, // [CELADON-ADD] + "NO_ROTATE_RANDOM_THROW" = NO_ROTATE_RANDOM_THROW, // [CELADON-ADD] )) DEFINE_BITFIELD(machine_stat, list( diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 746ba42b0a68..1f9a5f32ee0c 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -40,6 +40,7 @@ GLOBAL_LIST_EMPTY(ipc_hair_list) // [CELADON-ADD] - CELADON_IPC_HAIR GLOBAL_LIST_EMPTY(ipc_screens_list) GLOBAL_LIST_EMPTY(ipc_antennas_list) GLOBAL_LIST_EMPTY(ipc_tail_list) +GLOBAL_LIST_EMPTY(alternative_body_list) GLOBAL_LIST_EMPTY(ipc_chassis_list) GLOBAL_LIST_INIT(ipc_brain_list, list("Posibrain", "Man-Machine Interface")) GLOBAL_LIST_EMPTY(spider_legs_list) diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 7b26d084ada0..b2a089374e3d 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -164,7 +164,7 @@ GLOBAL_LIST_INIT(uncommon_loot, list(//uncommon: useful items /obj/item/restraints/legcuffs/bola = 1, /obj/item/restraints/handcuffs/cable = 1, /obj/item/melee/spear = 1, - /obj/item/shield/riot/buckler = 1, + /obj/item/shield/buckler = 1, /obj/item/grenade/iedcasing/spawned = 1, /obj/item/melee/baton/cattleprod = 1, /obj/item/throwing_star = 1, @@ -243,9 +243,7 @@ GLOBAL_LIST_INIT(oddity_loot, list(//oddity: strange or crazy items /obj/item/melee/axe/fire = 1, /mob/living/simple_animal/crab = 1, /obj/item/melee/baton/boomerang = 1, - // [CELADON-REMOVE] - CELADON_BALANCE - Что это за инструмент шакальный не понятно - // /obj/item/circular_saw/best = 1, - // [/CELADON-REMOVE] + /obj/item/circular_saw/best = 1, /obj/item/gun/ballistic/shotgun/doublebarrel/brazil = 1, /obj/item/toner/extreme = 1, /obj/item/twenty_pounds_of_ice = 1, diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm index 1af53eba43d1..c295da91e1f3 100644 --- a/code/_globalvars/lists/names.dm +++ b/code/_globalvars/lists/names.dm @@ -13,10 +13,6 @@ GLOBAL_LIST_INIT(lizard_names_male, world.file2list("strings/names/lizard_male.t GLOBAL_LIST_INIT(lizard_names_female, world.file2list("strings/names/lizard_female.txt")) GLOBAL_LIST_INIT(spider_names, world.file2list("strings/names/spider_names.txt")) GLOBAL_LIST_INIT(kepori_names, world.file2list("strings/names/kepori_names.txt")) -// [CELADON-ADD] - RETURN_CONTENT - CLOWN_RETURN_CONTENT -GLOBAL_LIST_INIT(clown_names, world.file2list("mod_celadon/return_content_clowns/code/strings/clown.txt")) -GLOBAL_LIST_INIT(mime_names, world.file2list("mod_celadon/return_content_clowns/code/strings/mime.txt")) -// [/CELADON-ADD] GLOBAL_LIST_INIT(carp_names, world.file2list("strings/names/carp.txt")) GLOBAL_LIST_INIT(plasmaman_names, world.file2list("strings/names/plasmaman.txt")) GLOBAL_LIST_INIT(squid_names, world.file2list("strings/names/squid.txt")) @@ -47,8 +43,4 @@ List of configurable names in preferences and their metadata GLOBAL_LIST_INIT(preferences_custom_names, list( "cyborg" = list("pref_name" = "Cyborg", "qdesc" = "cyborg name (Leave empty to use default naming scheme)", "group" = "silicons", "allow_null" = TRUE), "ai" = list("pref_name" = "AI", "qdesc" = "ai name", "group" = "silicons", "allow_null" = FALSE), - // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - "clown" = list("pref_name" = "Clown" , "qdesc" = "clown name", "group" = "fun", "allow_null" = FALSE), - "mime" = list("pref_name" = "Mime", "qdesc" = "mime name" , "group" = "fun", "allow_null" = FALSE), - // [/CELADON-ADD] )) diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index 0e23389438ab..5d05a594ea5e 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -71,9 +71,5 @@ GLOBAL_LIST_EMPTY(ai_status_displays) GLOBAL_LIST_EMPTY(mob_spawners) /// List of Station alert consoles, /obj/machinery/computer/station_alert GLOBAL_LIST_EMPTY(alert_consoles) - -// [CELADON-ADD] - List of pods -GLOBAL_LIST_EMPTY(poi_list) -// [/CELADON-ADD] - List of pods /// List of all ruin_hazards (obj/structure/hazard), used for ID toggles. GLOBAL_LIST_EMPTY(ruin_hazards) diff --git a/code/_globalvars/traits.dm b/code/_globalvars/traits.dm index 97797d1f5c24..23664f5b99aa 100644 --- a/code/_globalvars/traits.dm +++ b/code/_globalvars/traits.dm @@ -145,21 +145,6 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_NOBLEED" = TRAIT_NOBLEED, "TRAIT_SCOOPABLE" = TRAIT_SCOOPABLE, "TRAIT_ANXIOUS" = TRAIT_ANXIOUS, - // [CELADON-ADD] - CELADON_RETURN_CONTENT_QUIRKS - "TRAIT_DEPRESSION" = TRAIT_DEPRESSION, - "TRAIT_UNSTABLE" = TRAIT_UNSTABLE, - "TRAIT_NIGHT_VISION" = TRAIT_NIGHT_VISION, - "TRAIT_SKITTISH" = TRAIT_SKITTISH, - "TRAIT_DRUNK_HEALING" = TRAIT_DRUNK_HEALING, - "TRAIT_SNOB" = TRAIT_SNOB, - // [/CELADON-ADD] - // [CELADON-ADD] - CELADON_ACHIEVEMENTS - "TRAIT_ELITE_CHALLENGER" = TRAIT_ELITE_CHALLENGER, // CELADON EDIT // Given to elite tumor fighters - // [/CELADON-ADD] - // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - "TRAIT_FAN_CLOWN" = TRAIT_FAN_CLOWN, - "TRAIT_FAN_MIME" = TRAIT_FAN_MIME, - // [/CELADON-ADD] "TRAIT_KISS_OF_DEATH" = TRAIT_KISS_OF_DEATH, "TRAIT_PLANT_SAFE" = TRAIT_PLANT_SAFE, "TRAIT_AIMING" = TRAIT_AIMING, @@ -169,6 +154,17 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_GOOD_CHEMICAL_NIGHT_VISION" = TRAIT_GOOD_CHEMICAL_NIGHTVISION, "TRAIT_MOB_TIPPED" = TRAIT_MOB_TIPPED, "TRAIT_MOB_EATER" = TRAIT_MOB_EATER, + // [CELADON-ADD] - CELADON_RETURN_CONTENT_QUIRKS, CELADON_ACHIEVEMENTS, CELADON_RETURN_CONTENT_CLOWNS + "TRAIT_DEPRESSION" = TRAIT_DEPRESSION, + "TRAIT_UNSTABLE" = TRAIT_UNSTABLE, + "TRAIT_NIGHT_VISION" = TRAIT_NIGHT_VISION, + "TRAIT_SKITTISH" = TRAIT_SKITTISH, + "TRAIT_DRUNK_HEALING" = TRAIT_DRUNK_HEALING, + "TRAIT_SNOB" = TRAIT_SNOB, + "TRAIT_ELITE_CHALLENGER" = TRAIT_ELITE_CHALLENGER, // Given to elite tumor fighters + "TRAIT_FAN_CLOWN" = TRAIT_FAN_CLOWN, + "TRAIT_FAN_MIME" = TRAIT_FAN_MIME, + // [/CELADON-ADD] ), /obj/item/bodypart = list( "TRAIT_PARALYSIS" = TRAIT_PARALYSIS diff --git a/code/_onclick/hud/parallax.dm b/code/_onclick/hud/parallax.dm index 2dc1eff115cf..6943f315112b 100644 --- a/code/_onclick/hud/parallax.dm +++ b/code/_onclick/hud/parallax.dm @@ -319,20 +319,6 @@ /atom/movable/screen/parallax_layer/planet/update_o() icon_state = "planet" -// [CELADON-ADD] - CELADON_PARALLAX -// MARK:Random -/atom/movable/screen/parallax_layer/layer_1/Initialize(mapload) - . = ..() - icon_state = "layer1_[rand(0, 16)]" - -/atom/movable/screen/parallax_layer/layer_2/Initialize(mapload) - . = ..() - icon_state = "layer2_[rand(1, 5)]" - -/atom/movable/screen/parallax_layer/layer_3/Initialize(mapload) - . = ..() - icon_state = "layer3_[rand(1, 2)]" -// [/CELADON-ADD] //Gas Giant parallaxes /atom/movable/screen/parallax_layer/gas_giant diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index b7bd8c046f19..b9adff4d143d 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -137,23 +137,32 @@ /obj/attackby(obj/item/I, mob/living/user, params) return ..() || ((obj_flags & CAN_BE_HIT) && I.attack_obj(src, user)) -/mob/living/attackby(obj/item/I, mob/living/user, params) +/mob/living/attackby(obj/item/weapon, mob/living/user, params) if(..()) return TRUE - if(user.a_intent == INTENT_HELP || user.a_intent == INTENT_DISARM) - for(var/datum/surgery/S in surgeries) - if(body_position != LYING_DOWN && S.lying_required) + + if(handle_tool_treatment(weapon, user, params2list(params))) + return TRUE + + // MUST be done AFTER wound treatment + if((weapon.item_flags & SURGICAL_TOOL) && user.a_intent == INTENT_HELP && attempt_initiate_surgery(weapon, src, user)) + return TRUE + + //This should really be in attack but 2 much logic doesnt call parent + user.changeNext_move(weapon.attack_cooldown) + return weapon.attack(src, user, params) + +/// This handles treating wounds and performing surgeries with items. It is also a hack to avoid refactoring the entire attack chain (for now) +/mob/living/proc/handle_tool_treatment(obj/item/tool, mob/living/user, list/modifiers) + if(user.a_intent == INTENT_HELP) + for(var/datum/surgery/active_surgery in surgeries) + if(body_position != LYING_DOWN && active_surgery.lying_required) continue - if(!S.self_operable && user == src) + if(!active_surgery.self_operable && user == src) continue - if(S.next_step(user, params2list(params))) + if(active_surgery.next_step(user, modifiers)) return TRUE - if((I.item_flags & SURGICAL_TOOL) && user.a_intent == INTENT_HELP) - if(attempt_initiate_surgery(I, src, user)) - return TRUE - //This should really be in attack but 2 much logic doesnt call parent - user.changeNext_move(I.attack_cooldown) - return I.attack(src, user, params) + return FALSE /mob/living/attack_hand(mob/living/user, list/modifiers) if(..()) @@ -175,16 +184,16 @@ * * params - Click params of this attack */ /obj/item/proc/attack(mob/living/target_mob, mob/living/user, params) - if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK, target_mob, user, params) & COMPONENT_ITEM_NO_ATTACK) - return - SEND_SIGNAL(user, COMSIG_MOB_ITEM_ATTACK, target_mob, user, params) + var/signal_return = SEND_SIGNAL(src, COMSIG_ITEM_ATTACK, target_mob, user, params) | SEND_SIGNAL(user, COMSIG_MOB_ITEM_ATTACK, target_mob, user, params) + if(signal_return & COMPONENT_CANCEL_ATTACK_CHAIN) + return TRUE + if(signal_return & COMPONENT_SKIP_ATTACK) + return FALSE + if(item_flags & NOBLUDGEON) return - // [CELADON-EDIT] - TWEAK_PACIFIST_TRAIT - Пацифисты не хотят вредить живым существам, но могут бить неживые объекты - // if(force && HAS_TRAIT(user, TRAIT_PACIFISM)) // ORIGINAL - if(force && HAS_TRAIT(user, TRAIT_PACIFISM) && isliving(target_mob) && iscarbon(target_mob)) - // [/CELADON-EDIT] + if(force && HAS_TRAIT(user, TRAIT_PACIFISM) && iscarbon(target_mob)) // [CELADON-EDIT] - TWEAK_PACIFIST_TRAIT - Пацифисты не хотят вредить живым существам, но могут бить неживые объекты to_chat(user, span_warning("You don't want to harm other living beings!")) return diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 59e376be8468..d0dea44312fc 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -390,20 +390,8 @@ /datum/config_entry/number/overmap_encounter_size max_val = 255 - config_entry_value = 191 - min_val = 191 - -/** - * A config that skews with the random spawners weights - * If the value is lower than 1, it'll tend to even out the odds - * If higher than 1, it'll lean toward common spawns even more. - */ -/datum/config_entry/number/random_loot_weight_modifier - integer = FALSE - default = 1 - min_val = 0.05 - config_entry_value = 191 - min_val = 191 + config_entry_value = 127 + min_val = 127 /datum/config_entry/number/max_dynamic_missions config_entry_value = 0.66 @@ -413,10 +401,7 @@ integer = FALSE /datum/config_entry/flag/auto_ship_spawn_locking - // [CELADON-EDIT] - CELADON_MASTER_FILES - Отключаем автоматику - // config_entry_value = TRUE // ORIGINAL - config_entry_value = FALSE - // [/CELADON-EDIT] + config_entry_value = TRUE //When the auto ship locking will start counting up, in minutes /datum/config_entry/number/ship_locking_starts diff --git a/code/controllers/subsystem/ai_controllers.dm b/code/controllers/subsystem/ai_controllers.dm index 923a473520bf..5319d7316fb9 100644 --- a/code/controllers/subsystem/ai_controllers.dm +++ b/code/controllers/subsystem/ai_controllers.dm @@ -24,7 +24,6 @@ SUBSYSTEM_DEF(ai_controllers) /datum/controller/subsystem/ai_controllers/fire(resumed) for(var/datum/ai_controller/ai_controller as anything in active_ai_controllers) - if(!COOLDOWN_FINISHED(ai_controller, failed_planning_cooldown)) continue diff --git a/code/controllers/subsystem/ambience.dm b/code/controllers/subsystem/ambience.dm index 4088b4d02456..0fef0514503c 100644 --- a/code/controllers/subsystem/ambience.dm +++ b/code/controllers/subsystem/ambience.dm @@ -27,16 +27,6 @@ SUBSYSTEM_DEF(ambience) ///Attempts to play an ambient sound to a mob, returning the cooldown in deciseconds /area/proc/play_ambience(mob/M, sound/override_sound, volume = 27) - // [CELADON-ADD] - FIXES_AMBIENT_NO_EARS - // Check if the mob has ears to hear the ambience - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(!C.getorganslot(ORGAN_SLOT_EARS)) - // No ears, no ambience - var/sound_file = override_sound ? override_sound.file : pick(ambientsounds) - var/sound_length = ceil(SSsound_cache.get_sound_length(sound_file)) - return rand(min_ambience_cooldown + sound_length, max_ambience_cooldown + sound_length) - // [/CELADON-ADD] var/sound/new_sound = override_sound || pick(ambientsounds) new_sound = sound(new_sound, repeat = 0, wait = 0, volume = 25, channel = CHANNEL_AMBIENCE) diff --git a/code/controllers/subsystem/economy.dm b/code/controllers/subsystem/economy.dm index 01c6e3ceb060..236a2a8b9aec 100644 --- a/code/controllers/subsystem/economy.dm +++ b/code/controllers/subsystem/economy.dm @@ -1,26 +1,3 @@ -//[CELADON-ADD] - CELADON_OUTPOST_CONSOLE -#define ACCOUNT_FAC "FAC" -#define ACCOUNT_FAC_NAME "Faction Budget" -#define ACCOUNT_SYN "SYN" -#define ACCOUNT_SYN_NAME "Syndicate Budget" -#define ACCOUNT_INT "INT" -#define ACCOUNT_INT_NAME "InteQ Budget" -#define ACCOUNT_SLF "SLF" -#define ACCOUNT_SLF_NAME "SolFed Budget" -#define ACCOUNT_NTN "NTN" -#define ACCOUNT_NTN_NAME "Nanotrasen Budget" -#define ACCOUNT_IND "IND" -#define ACCOUNT_IND_NAME "Independent Budget" -#define ACCOUNT_IND_1 "IND_1" -#define ACCOUNT_IND_1_NAME "Independent 1 Budget" -#define ACCOUNT_IND_2 "IND_2" -#define ACCOUNT_IND_2_NAME "Independent 2 Budget" -#define ACCOUNT_IND_3 "IND_3" -#define ACCOUNT_IND_3_NAME "Independent 3 Budget" -#define ACCOUNT_IND_4 "IND_4" -#define ACCOUNT_IND_4_NAME "Independent 4 Budget" -//[/CELADON-ADD] - SUBSYSTEM_DEF(economy) name = "Economy" init_order = INIT_ORDER_ECONOMY @@ -34,21 +11,6 @@ SUBSYSTEM_DEF(economy) ///Total amount of money in bank accounts var/bank_money = 0 -//[CELADON-ADD] - CELADON_OUTPOST_CONSOLE - var/budget_pool = 35000 - var/list/department_accounts = list(ACCOUNT_FAC = ACCOUNT_FAC_NAME, - ACCOUNT_SYN = ACCOUNT_SYN_NAME, - ACCOUNT_INT = ACCOUNT_INT_NAME, - ACCOUNT_SLF = ACCOUNT_SLF_NAME, - ACCOUNT_NTN = ACCOUNT_NTN_NAME, - ACCOUNT_IND = ACCOUNT_IND_NAME, - ACCOUNT_IND_1 = ACCOUNT_IND_1_NAME, - ACCOUNT_IND_2 = ACCOUNT_IND_2_NAME, - ACCOUNT_IND_3 = ACCOUNT_IND_3_NAME, - ACCOUNT_IND_4 = ACCOUNT_IND_4_NAME) - var/list/departmental_accounts = list() -//[/CELADON-ADD] - /datum/controller/subsystem/economy/stat_entry(msg) msg += "{" msg += "PH: [physical_money]|" @@ -56,25 +18,3 @@ SUBSYSTEM_DEF(economy) msg += "TOT: [physical_money + bank_money]" msg += "}" return ..() - -//[CELADON-ADD] - CELADON_OUTPOST_CONSOLE -/datum/bank_account/department - account_holder = "Guild Credit Agency" - var/department_id = "REPLACE_ME" - -/datum/bank_account/department/New(dep_id, budget, player_account = FALSE) - department_id = dep_id - account_balance = budget - account_holder = SSeconomy.department_accounts[dep_id] - SSeconomy.departmental_accounts += src - -/datum/controller/subsystem/economy/proc/get_dep_account(dep_id) - for(var/datum/bank_account/department/D in departmental_accounts) - if(D.department_id == dep_id) - return D - -/datum/controller/subsystem/economy/Initialize() - for(var/dep_id in department_accounts) - new /datum/bank_account/department(dep_id, 0, player_account = FALSE) - return 2 -//[/CELADON-ADD] diff --git a/code/controllers/subsystem/jukeboxes.dm b/code/controllers/subsystem/jukeboxes.dm index d10d07504fb1..376d6502cfbd 100644 --- a/code/controllers/subsystem/jukeboxes.dm +++ b/code/controllers/subsystem/jukeboxes.dm @@ -33,7 +33,7 @@ SUBSYSTEM_DEF(jukeboxes) var/sound/song_to_init = sound(T.song_path) song_to_init.status = SOUND_MUTE for(var/mob/M in GLOB.player_list) - if(!(M?.client?.prefs.toggles & SOUND_JUKEBOX)) + if(!(M?.client?.prefs.toggles & SOUND_JUKEBOX)) // CELADON EDIT - smh continue M.playsound_local(M, null, 100, channel = youvegotafreejukebox[2], S = song_to_init) diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 72da99eef80d..8b1a9ae08fd0 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -181,10 +181,7 @@ SUBSYSTEM_DEF(mapping) #define CHECK_LIST_EXISTS(X) if(!islist(data[X])) { stack_trace("[##X] missing from json!"); continue; } /datum/controller/subsystem/mapping/proc/load_ship_templates() ship_purchase_list = list() - // [CELADON-EDIT] - CELADON_CONFIGS_MAPS - // var/list/filelist = flist("_maps/configs/") // CELADON-EDIT - ORIGINAL - var/list/filelist = flist("_maps/_mod_celadon/configs/") - // [/CELADON-EDIT] + var/list/filelist = flist("_maps/_mod_celadon/configs/") // [CELADON-EDIT] - CELADON_CONFIGS_MAPS filelist = sortList(filelist) @@ -211,6 +208,7 @@ SUBSYSTEM_DEF(mapping) CHECK_LIST_EXISTS("job_slots") var/datum/map_template/shuttle/S = new(data["map_path"], data["map_name"], TRUE) S.file_name = data["map_path"] + S.ship_class = data["map_name"] if(istext(data["map_short_name"])) S.short_name = data["map_short_name"] diff --git a/code/controllers/subsystem/mobs.dm b/code/controllers/subsystem/mobs.dm index e20a5d7e6c1d..421ecffe1758 100644 --- a/code/controllers/subsystem/mobs.dm +++ b/code/controllers/subsystem/mobs.dm @@ -3,10 +3,7 @@ SUBSYSTEM_DEF(mobs) priority = FIRE_PRIORITY_MOBS flags = SS_KEEP_TIMING | SS_NO_INIT runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME - // [CELADON-EDIT] - CELADON_BALANCE_MOBS - // wait = 2 SECONDS // ORIGINAL - wait = 1.5 SECONDS - // [/CELADON-EDIT] + wait = 2 SECONDS var/list/currentrun = list() diff --git a/code/controllers/subsystem/overmap.dm b/code/controllers/subsystem/overmap.dm index badbb82e4c5c..e88e39cd81e3 100644 --- a/code/controllers/subsystem/overmap.dm +++ b/code/controllers/subsystem/overmap.dm @@ -1,4 +1,4 @@ -#ifndef MINIMAL +#ifndef MINIMAL // CELADON EDIT SUBSYSTEM_DEF(overmap) name = "Overmap" wait = 10 @@ -21,8 +21,8 @@ SUBSYSTEM_DEF(overmap) ///List of all events var/list/events = list() - /// The mandatory and default star system - var/datum/overmap_star_system/default_system + /// The primary star system that holds the outpost + var/datum/overmap_star_system/safe_system /// The secondary star system that allows planet spawns var/datum/overmap_star_system/wild_system @@ -57,14 +57,19 @@ SUBSYSTEM_DEF(overmap) outposts = list() dynamic_encounters = list() events = list() -/* // [CELADON-EDIT] - Спасибо, пожалуй откажемся от 2 сектора - var/list/sector_types = pick(subtypesof(/datum/overmap_star_system/safezone)) - default_system = create_new_star_system(new sector_types) - wild_system = create_new_star_system (new /datum/overmap_star_system/shiptest) -*/ + + // [CELADON-EDIT] - Спасибо, пожалуй откажемся от 2 сектора var/list/sector_types = pick(subtypesof(/datum/overmap_star_system/shiptest/elysium)) - default_system = create_new_star_system(new sector_types) -// [/CELADON-EDIT] + if(fexists(SAFEZONE_OVERRIDE_FILEPATH)) + var/file_text = trim_right(file2text(SAFEZONE_OVERRIDE_FILEPATH)) // trim_right because there's often a trailing newline + var/datum/overmap_star_system/safezone/potential_type = text2path(file_text) + if(!potential_type || !ispath(potential_type, /datum/overmap_star_system/safezone)) + stack_trace("SSovermap found an safezone override file at [SAFEZONE_OVERRIDE_FILEPATH], but was unable to find the system type [potential_type]!") + else + sector_types = potential_type + fdel(SAFEZONE_OVERRIDE_FILEPATH) // don't want it to affect 2 rounds in a row. + safe_system = create_new_star_system(new sector_types) + // [/CELADON-EDIT] return ..() /datum/controller/subsystem/overmap/proc/spawn_new_star_system(datum/overmap_star_system/system_to_spawn=/datum/overmap_star_system) @@ -256,9 +261,6 @@ SUBSYSTEM_DEF(overmap) system_to_spawn_in = our_spawn_location.current_overmap // [CELADON-EDIT] - FIXES_SPAWN_SHIP - Изменено, так как корабли с параметром space-spawn: true всё равно спавнились на аванпосту. Изменен порядок приоритетов - // if(!ship_loc && template.space_spawn) - // ship_loc = null - // else // ORIGINAL if(template.space_spawn) ship_loc = null else if(!ship_loc) @@ -357,11 +359,7 @@ SUBSYSTEM_DEF(overmap) var/secondary_structure_color = "#FFFFFF" ///the tileset we use, just the icon we force tokens to use, override only if nessary - // [CELADON-EDIT] - CELADON_OVERMAP - // var/tileset = 'icons/misc/overmap.dmi' // CELADON-EDIT - ORIGINAL - var/tileset = 'mod_celadon/_storage_icons/icons/assets/overmap/overmap.dmi' - // [/CELADON-EDIT] - + var/tileset = 'icons/misc/overmap.dmi' ///This is the flag that makes it so all overmap objects use the same uniform color above. If false, tokens use their default colors var/override_object_colors = FALSE @@ -392,16 +390,16 @@ SUBSYSTEM_DEF(overmap) outposts = list() events = list() +// CELADON EDIT START #ifdef NOOVERMAP size = 8 -#endif - -#ifndef NOOVERMAP +#else if(isnull(dynamic_probabilities)) dynamic_probabilities = list() for(var/datum/planet_type/planet_type as anything in subtypesof(/datum/planet_type)) dynamic_probabilities[initial(planet_type.planet)] = initial(planet_type.weight) #endif +// CELADON EDIT END if(!generator_type) generator_type = CONFIG_GET(string/overmap_generator_type) @@ -555,15 +553,6 @@ SUBSYSTEM_DEF(overmap) /datum/overmap_star_system/proc/spawn_outpost() var/list/location = get_unused_overmap_square_in_radius(rand(4, round(size/5))) - if(fexists(OUTPOST_OVERRIDE_FILEPATH)) - var/file_text = trim_right(file2text(OUTPOST_OVERRIDE_FILEPATH)) // trim_right because there's often a trailing newline - var/datum/overmap/outpost/potential_type = text2path(file_text) - if(!potential_type || !ispath(potential_type, /datum/overmap/outpost)) - stack_trace("SSovermap found an outpost override file at [OUTPOST_OVERRIDE_FILEPATH], but was unable to find the outpost type [potential_type]!") - else - default_outpost_type = potential_type - fdel(OUTPOST_OVERRIDE_FILEPATH) // don't want it to affect 2 rounds in a row. - if(!default_outpost_type) var/list/possible_types = subtypesof(/datum/overmap/outpost) for(var/datum/overmap/outpost/outpost_type as anything in possible_types) @@ -751,49 +740,6 @@ SUBSYSTEM_DEF(overmap) docking_ports += fourth_dock // [/CELADON-ADD] - // [CELADON-REMOVE] - CELADON_MAP_EXPANSION - Чтобы не возникало лишних док портов - // if(!used_ruin) - // // no ruin, so we can make more docks upward - // var/turf/tertiary_docking_turf = locate( - // primary_docking_turf.x, - // primary_docking_turf.y+RESERVE_DOCK_MAX_SIZE_SHORT+RESERVE_DOCK_DEFAULT_PADDING, - // primary_docking_turf.z - // ) - // // rinse and repeat - // var/turf/quaternary_docking_turf = locate( - // secondary_docking_turf.x, - // secondary_docking_turf.y+RESERVE_DOCK_MAX_SIZE_SHORT+RESERVE_DOCK_DEFAULT_PADDING, - // secondary_docking_turf.z - // ) - // - // var/obj/docking_port/stationary/tertiary_dock = new(tertiary_docking_turf) - // tertiary_dock.dir = NORTH - // tertiary_dock.name = "[encounter_name] docking location #3" - // tertiary_dock.height = RESERVE_DOCK_MAX_SIZE_SHORT - // tertiary_dock.width = RESERVE_DOCK_MAX_SIZE_LONG - // tertiary_dock.dheight = 0 - // tertiary_dock.dwidth = 0 - // tertiary_dock.adjust_dock_for_landing = TRUE - // docking_ports += tertiary_dock - // - // var/obj/docking_port/stationary/quaternary_dock = new(quaternary_docking_turf) - // quaternary_dock.dir = NORTH - // quaternary_dock.name = "[encounter_name] docking location #4" - // quaternary_dock.height = RESERVE_DOCK_MAX_SIZE_SHORT - // quaternary_dock.width = RESERVE_DOCK_MAX_SIZE_LONG - // quaternary_dock.dheight = 0 - // quaternary_dock.dwidth = 0 - // quaternary_dock.adjust_dock_for_landing = TRUE - // docking_ports += quaternary_dock - // - //else // we've spawned a ruin and are now checking for any docks that it has - // for(var/obj/docking_port/stationary/port as obj in SSshuttle.stationary) - // if(port.virtual_z() == vlevel.id) - // if(port in docking_ports) - // continue - // docking_ports += port - // [/CELADON-REMOVE] - return list(mapzone, docking_ports, ruin_turfs, ruin_templates) @@ -1126,9 +1072,7 @@ SUBSYSTEM_DEF(overmap) else datum_to_edit.token.add_filter("gloweffect", 5, list("type"="drop_shadow", "color"= "#808080", "size"=2, "offset"=1)) -// [CELADON-REMOVE] - CELADON_CONFIGS_MAPS -/* -/datum/overmap_star_system/safezone/ngr +/datum/overmap_star_system/safezone/agni name = "Gorlex Controlled - Value of Public Works" starname = "Ecbatana" startype = /datum/overmap/star/dwarf @@ -1149,7 +1093,7 @@ SUBSYSTEM_DEF(overmap) override_object_colors = TRUE overmap_icon_state = "overmap_dark" -/datum/overmap_star_system/safezone/clip +/datum/overmap_star_system/safezone/arrowsong name = "CLIP Controlled - High-Pier" starname = "Chana" startype = /datum/overmap/star/dwarf/orange @@ -1191,7 +1135,7 @@ SUBSYSTEM_DEF(overmap) override_object_colors = TRUE overmap_icon_state = "overmap" -/datum/overmap_star_system/safezone/nt +/datum/overmap_star_system/safezone/yebiri name = "Nanotrasen Controlled - Persei-277" starname = "Persei-277" startype = /datum/overmap/star/medium @@ -1229,43 +1173,6 @@ SUBSYSTEM_DEF(overmap) override_object_colors = TRUE overmap_icon_state = "overmap" -*/ -// [/CELADON-REMOVE] - -// [CELADON-ADD] - NO_STATIC_SECTOR Опасные стартовые сектора -/datum/overmap_star_system/shiptest/elysium - has_outpost = TRUE - override_object_colors = FALSE - overmap_icon_state = "overmap_dark" - -/datum/overmap_star_system/shiptest/elysium/ice - name = "Elysium Controlled - Value of Public Works" - starname = "Ecbatana" - startype = /datum/overmap/star/dwarf - default_outpost_type = /datum/overmap/outpost/elysium_ice - - //main colors, used for dockable terrestrials, and background - primary_color = "#7e8cd9" - secondary_color = "#33324a" - - //hazard colors, used for the overmap hazards and sun - hazard_primary_color = "#ededed" - hazard_secondary_color = "#7f7db0" - -/datum/overmap_star_system/shiptest/elysium/asteroid - name = "Elysium Controlled - Persei-277" - starname = "Persei-277" - startype = /datum/overmap/star/medium - default_outpost_type = /datum/overmap/outpost/elysium_asteroid - - //main colors, used for dockable terrestrials, and background - primary_color = "#d9ad82" - secondary_color = "#c48c60" - - //hazard colors, used for the overmap hazards and sun - hazard_primary_color = "#c13623" - hazard_secondary_color = "#943a43" -// [/CELADON-ADD] /datum/overmap_star_system/c64 @@ -1322,4 +1229,4 @@ SUBSYSTEM_DEF(overmap) The [span_notice("MODIF. OVERMAP")] tool is similar in usuage to BUILD ADV but to manipulate the overmap only. "} return ..() -#endif +#endif // CELADON EDIT diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index b3d1fa36902b..b3bec9a8ca3a 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -27,19 +27,19 @@ PROCESSING_SUBSYSTEM_DEF(quirks) list("Blind","Nearsighted"), list("Ageusia","Vegetarian","Deviant Tastes"), list("Alcohol Tolerance","Light Drinker"), - // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS, IDIOTS_REMOVE_BLACK_LIST - list("Jolly","Depression","Apathetic","Hypersensitive"), - list("Ananas Affinity","Ananas Aversion"), - list("Clown Fan", "Mime Fan", "RILENA Super Fan"), - // [/CELADON-ADD] list("Bad Touch", "Friendly"), list("Self-Aware", "Congenital Analgesia"), list("Trilingual", "Monolingual"), + // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS, IDIOTS_REMOVE_BLACK_LIST + list("Jolly", "Depression", "Apathetic", "Hypersensitive"), + list("Ananas Affinity", "Ananas Aversion"), + list("Clown Fan", "Mime Fan", "RILENA Super Fan"), + // [/CELADON-ADD] ) species_blacklist = list( "Blood Deficiency" = list(SPECIES_IPC, SPECIES_JELLYPERSON, SPECIES_PLASMAMAN, SPECIES_VAMPIRE), - "Dwarfism" = list(SPECIES_IPC, SPECIES_KEPORI, SPECIES_VOX, SPECIES_RACHNID), // [CELADON-ADD] - NO_FUN_ALLOWED_SPECIES + "Dwarfism" = list(SPECIES_IPC, SPECIES_KEPORI, SPECIES_VOX, SPECIES_RACHNID), // [CELADON-ADD] - NO_FUN_ALLOWED_SPECIES "Alcohol Tolerance" = list(SPECIES_IPC, SPECIES_PLASMAMAN), "Light Drinker" = list(SPECIES_IPC, SPECIES_PLASMAMAN), "Smoker" = list(SPECIES_IPC, SPECIES_PLASMAMAN), diff --git a/code/controllers/subsystem/radiation.dm b/code/controllers/subsystem/radiation.dm index 35f668d530e3..efe6e844eb7d 100644 --- a/code/controllers/subsystem/radiation.dm +++ b/code/controllers/subsystem/radiation.dm @@ -1,6 +1,6 @@ PROCESSING_SUBSYSTEM_DEF(radiation) name = "Radiation" - flags = SS_BACKGROUND // [CELADON-EDIT] - CELADON_FIXES_RADIATION // flags = SS_NO_INIT | SS_BACKGROUND // ORIGINAL + flags = SS_NO_INIT | SS_BACKGROUND wait = 1 SECONDS var/list/warned_atoms = list() diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 2be41654fcb0..5f5077390ae5 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -30,22 +30,11 @@ SUBSYSTEM_DEF(shuttle) /// Whether express consoles are blocked from ordering anything or not var/supplyBlocked = FALSE - /// Order number given to next cargo order - var/ordernum = 1 - /// List of all singleton supply pack instances - var/list/supply_packs = list() + /// Stops ALL shuttles from being able to move var/lockdown = FALSE /datum/controller/subsystem/shuttle/Initialize(timeofday) - ordernum = rand(1, 9000) - - for(var/pack in subtypesof(/datum/supply_pack)) - var/datum/supply_pack/P = new pack() - if(!P.contains) - continue - supply_packs[P.type] = P - for(var/obj/docking_port/stationary/stationary_port as anything in stationary) stationary_port.load_roundstart() CHECK_TICK @@ -212,10 +201,6 @@ SUBSYSTEM_DEF(shuttle) transit_requesters = SSshuttle.transit_requesters if (istype(SSshuttle.transit_request_failures)) transit_request_failures = SSshuttle.transit_request_failures - if (istype(SSshuttle.supply_packs)) - supply_packs = SSshuttle.supply_packs - - ordernum = SSshuttle.ordernum lockdown = SSshuttle.lockdown diff --git a/code/controllers/subsystem/statpanel.dm b/code/controllers/subsystem/statpanel.dm index a4b211d80321..3dc5bd931b2d 100644 --- a/code/controllers/subsystem/statpanel.dm +++ b/code/controllers/subsystem/statpanel.dm @@ -27,7 +27,7 @@ SUBSYSTEM_DEF(statpanels) "Time Dilation: [round(SStime_track.time_dilation_current,1)]% AVG:([round(SStime_track.time_dilation_avg_fast,1)]%, [round(SStime_track.time_dilation_avg,1)]%, [round(SStime_track.time_dilation_avg_slow,1)]%)", "\n", "Current Outpost: [SSticker.round_start_timeofday ? SSovermap.get_main_outpost() : "The round hasn't started yet!"]", - "Outpost Location: [SSticker.round_start_timeofday ? "[SSovermap.get_main_outpost_coords()] - [SSovermap.default_system]" : "The round hasn't started yet!"]", + "Outpost Location: [SSticker.round_start_timeofday ? "[SSovermap.get_main_outpost_coords()] - [SSovermap.safe_system]" : "The round hasn't started yet!"]", "Local Sector Time: [SSticker.round_start_timeofday ? "[station_time_timestamp()] [sector_datestamp()]" : "The round hasn't started yet!"]", "\n", "Server Time: [time2text(world.timeofday, "YYYY-MM-DD hh:mm:ss")]", diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index f99d582b9555..03370d18e7fb 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -290,6 +290,7 @@ SUBSYSTEM_DEF(ticker) round_start_time = world.time round_start_timeofday = world.timeofday SSdbcore.SetRoundStart() + to_chat(world, span_notice("Welcome to [station_name()], enjoy your stay!")) SSredbot.send_discord_message("ooc", "**A new round has begun.**") //[CELADON-EDIT]- MUSIC_CELADON diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 4a980976d965..144c9bfc6dbb 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -20,7 +20,7 @@ SUBSYSTEM_DEF(traumas) "spiders" = construct_phobia_regex("spiders"), "space" = construct_phobia_regex("space"), "security" = construct_phobia_regex("security"), - "clowns" = construct_phobia_regex("clowns"), // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + "clowns" = construct_phobia_regex("clowns"), // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS "greytide" = construct_phobia_regex("greytide"), "lizards" = construct_phobia_regex("lizards"), "skeletons" = construct_phobia_regex("skeletons"), @@ -66,12 +66,15 @@ SUBSYSTEM_DEF(traumas) /obj/machinery/door/airlock/security, /obj/effect/hallucination/simple/securitron)), // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - "clowns" = typecacheof(list( + "clowns" = typecacheof(list( + /obj/item/clothing/mask/gas/clown_hat, /obj/item/clothing/under/rank/civilian/clown, - /obj/item/clothing/mask/gas/clown_hat, /obj/item/instrument/bikehorn, - /obj/item/grown/bananapeel, /obj/item/food/cheesiehonkers, + /obj/item/food/cheesiehonkers, + /obj/item/grown/bananapeel, + /obj/item/instrument/bikehorn, /obj/item/pda/clown, - /obj/item/trash/cheesie)), + /obj/item/trash/cheesie, + )), // [/CELADON-ADD] "greytide" = typecacheof(list( diff --git a/code/controllers/subsystem/wounds.dm b/code/controllers/subsystem/wounds.dm new file mode 100644 index 000000000000..dfe8e43832a1 --- /dev/null +++ b/code/controllers/subsystem/wounds.dm @@ -0,0 +1,167 @@ +SUBSYSTEM_DEF(wounds) + name = "Wounds" + init_order = INIT_ORDER_WOUNDS + flags = SS_NO_FIRE + + /// A "chronological" list of wound severities, starting at the least severe. + var/static/list/severities_chronological = list( + "[WOUND_SEVERITY_TRIVIAL]", + "[WOUND_SEVERITY_MODERATE]", + "[WOUND_SEVERITY_SEVERE]", + "[WOUND_SEVERITY_CRITICAL]" + ) + + /// A assoc list of BIO_ define to EXTERIOR/INTERIOR defines. + /// This is where the interior/exterior state of a given biostate is set. + /// Note that not all biostates are guaranteed to be one of these - and in fact, many are not + /// IMPORTANT NOTE: All keys are stored as text and must be converted via text2num + var/static/list/bio_state_anatomy = list( + "[BIO_WIRED]" = ANATOMY_EXTERIOR, + "[BIO_METAL]" = ANATOMY_INTERIOR, + "[BIO_FLESH]" = ANATOMY_EXTERIOR, + "[BIO_BONE]" = ANATOMY_INTERIOR, + ) + + /// Associated list of wound types and their pregen data. + var/list/datum/wound_pregen_data/pregen_data + + // A wound series "collection" is merely a way for us to track what is in what series, and what their types are. + // Without this, we have no centralized way to determine what type is in what series outside of iterating over every pregen data. + + /// A branching assoc list of (series -> list(severity -> list(typepath -> weight))). Allows you to say "I want a generic slash wound", + /// then "Of severity 2", and get a wound of that description - via get_corresponding_wound_type() + /// Series: A generic wound_series, such as WOUND_SERIES_BONE_BLUNT_BASIC + /// Severity: Any wounds held within this will be of this severity. + /// Typepath, Weight: Merely a pairing of a given typepath to its weight, held for convenience in pickweight. + var/list/series_collection + + /// A branching assoc list of (wounding_type -> list(wound_series)). + /// Allows for determining of which wound series are caused by what. + var/static/list/types_to_series = list( + WOUND_BLUNT = list( + WOUND_SERIES_BONE_BLUNT_BASIC, + WOUND_SERIES_METAL_BUCKLING, + WOUND_SERIES_FLESH_MUSCLE, + ), + WOUND_SLASH = list( + WOUND_SERIES_FLESH_SLASH_BLEED, + WOUND_SERIES_WIRED_ELECTRICAL, + ), + WOUND_BURN = list( + WOUND_SERIES_FLESH_BURN_BASIC, + WOUND_SERIES_METAL_HEAT_WARPING, + WOUND_SERIES_WIRED_ELECTRICAL, + ), + WOUND_PIERCE = list( + WOUND_SERIES_FLESH_PUNCTURE_BLEED, + WOUND_SERIES_WIRED_ELECTRICAL, + ), + ) + +/datum/controller/subsystem/wounds/Initialize(timeofday) + generate_wound_static_data() + generate_wound_series_collection() + return ..() + +/// Constructs [all_wound_pregen_data] by iterating through a typecache of pregen data, ignoring abstract types, and instantiating the rest. +/datum/controller/subsystem/wounds/proc/generate_wound_static_data() + var/list/datum/wound_pregen_data/all_pregen_data = list() + + for (var/datum/wound_pregen_data/iterated_path as anything in typecacheof(path = /datum/wound_pregen_data, ignore_root_path = TRUE)) + if (initial(iterated_path.abstract)) + continue + + if (!isnull(all_pregen_data[initial(iterated_path.wound_path_to_generate)])) + stack_trace("pre-existing pregen data for [initial(iterated_path.wound_path_to_generate)] when [iterated_path] was being considered: [all_pregen_data[initial(iterated_path.wound_path_to_generate)]]. \ + this is definitely a bug, and is probably because one of the two pregen data have the wrong wound typepath defined. [iterated_path] will not be instantiated") + + continue + + var/datum/wound_pregen_data/new_data = new iterated_path + LAZYSET(pregen_data, new_data.wound_path_to_generate, new_data) + +// Series -> severity -> type -> weight +/// Generates [wound_series_collections] by iterating through all pregen_data. Refer to the mentioned list for documentation +/datum/controller/subsystem/wounds/proc/generate_wound_series_collection() + for (var/datum/wound/wound_typepath as anything in typecacheof(/datum/wound, FALSE, TRUE)) + var/datum/wound_pregen_data/data = pregen_data[wound_typepath] + if (!data) + continue + + if (data.abstract) + stack_trace("somehow, a abstract wound_pregen_data instance ([data.type]) was instantiated and made it to generate_wound_series_collection()! \ + i literally have no idea how! please fix this!") + continue + + var/series = data.wound_series + var/list/datum/wound/series_list = series_collection[series] + if (isnull(series_list)) + series_collection[series] = list() + series_list = series_collection[series] + + var/severity = "[(initial(wound_typepath.severity))]" + var/list/datum/wound/severity_list = series_list[severity] + if (isnull(severity_list)) + series_list[severity] = list() + severity_list = series_list[severity] + + severity_list[wound_typepath] = data.weight + +/** + * Searches through all wounds for any of proper type, series, and biostate, and then returns a single one via pickweight. + * Is able to discern between, say, a flesh slash wound, and a metallic slash wound, and will return the respective one for the provided limb. + * + * The severity_max and severity_pick_mode args mostly exist in case you want a wound in a series that may not have your ideal severity wound, as it lets you + * essentially set a "fallback", where if your ideal wound doesnt exist, it'll still return something, trying to get closest to your ideal severity. + * + * Generally speaking, if you want a critical/severe/moderate wound, you should set severity_min to WOUND_SEVERITY_MODERATE, severity_max to your ideal wound, + * and severity_pick_mode to WOUND_PICK_HIGHEST_SEVERITY - UNLESS you for some reason want the LOWEST severity, in which case you should set + * severity_max to the highest wound you're willing to tolerate, and severity_pick_mode to WOUND_PICK_LOWEST_SEVERITY. + * + * Args: + * * list/wounding_types: A list of wounding_types. Only wounds that accept these wound types will be considered. + * * obj/item/bodypart/part: The limb we are considering. Extremely important for biostates. + * * severity_min: The minimum wound severity we will search for. + * * severity_max = severity_min: The maximum wound severity we will search for. + * * severity_pick_mode = WOUND_PICK_HIGHEST_SEVERITY: The "pick mode" we will use when considering multiple wounds of acceptable severity. See the above defines. + * * random_roll = TRUE: If this is considered a "random" consideration. If true, only wounds that can be randomly generated will be considered. + * * duplicates_allowed = FALSE: If exact duplicates of a given wound on part are tolerated. Useful for simply getting a path and not instantiating. + * * care_about_existing_wounds = TRUE: If we iterate over wounds to see if any are above or at a given wounds severity, and disregard it if any are. Useful for simply getting a path and not instantiating. + * + * Returns: + * A randomly picked wound typepath meeting all the above criteria and being applicable to the part's biotype - or null if there were none. + */ +/datum/controller/subsystem/wounds/proc/get_corresponding_wound_type(list/wounding_types, obj/item/bodypart/part, severity_min, severity_max = severity_min, severity_pick_mode = WOUND_PICK_HIGHEST_SEVERITY, random_roll = TRUE, duplicates_allowed = FALSE, care_about_existing_wounds = TRUE) + RETURN_TYPE(/datum/wound) // note that just because its set to return this doesnt mean its non-nullable + + var/list/wounding_type_list = list() + for (var/wounding_type as anything in wounding_types) + wounding_type_list |= SSwounds.types_to_series[wounding_type] + if (!length(wounding_type_list)) + return null + + var/list/datum/wound/paths_to_pick_from = list() + for (var/series as anything in shuffle(wounding_type_list)) + var/list/severity_list = series_collection[series] + if (!length(severity_list)) + continue + + var/picked_severity + for (var/severity_text as anything in shuffle(severities_chronological)) + var/severity = text2num(severity_text) + if (severity > severity_min || severity < severity_max) + continue + + if (isnull(picked_severity) || ((severity_pick_mode == WOUND_PICK_HIGHEST_SEVERITY && severity > picked_severity) || (severity_pick_mode == WOUND_PICK_LOWEST_SEVERITY && severity < picked_severity))) + picked_severity = severity + + var/list/wound_typepaths = severity_list["[picked_severity]"] + if (!length(wound_typepaths)) + continue + + for (var/datum/wound/iterated_path as anything in wound_typepaths) + var/datum/wound_pregen_data/pregen_data = SSwounds.pregen_data[iterated_path] + if (pregen_data.can_be_applied_to(part, wounding_types, random_roll = random_roll, duplicates_allowed = duplicates_allowed, care_about_existing_wounds = care_about_existing_wounds)) + paths_to_pick_from[iterated_path] = wound_typepaths[iterated_path] + + return pick_weight(paths_to_pick_from) // we found our winners! diff --git a/code/datums/achievements/misc_achievements.dm b/code/datums/achievements/misc_achievements.dm index 56e568741bae..b74379fccb2c 100644 --- a/code/datums/achievements/misc_achievements.dm +++ b/code/datums/achievements/misc_achievements.dm @@ -26,20 +26,6 @@ database_id = MEDAL_RODSUPLEX icon = "featofstrength" -// [CELADON-ADD] - RETURN_CONTENT - CLOWN_RETURN_CONTENT -/datum/award/achievement/misc/round_and_full - name = "Round and Full" - desc = "Well at least you aren't down the river, I hear they eat people there." - database_id = MEDAL_CLOWNCARKING - icon = "clownking" - -/datum/award/achievement/misc/the_best_driver - name = "The Best Driver" - desc = "100 honks later" - database_id = MEDAL_THANKSALOT - icon = "clownthanks" -// [/CELADON-ADD] - /datum/award/achievement/misc/helbitaljanken name = "Helbitaljanken" desc = "You janked hard" diff --git a/code/datums/action.dm b/code/datums/action.dm index 17c380f28a0e..f706baa7279a 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -224,10 +224,7 @@ /datum/action/item_action/toggle_ammotype name = "Toggle Energy Mode" -//[CELADON-EDIT] - возвращает иконки лазеров в переключатель - //icon_icon = 'icons/mob/actions/actions_items.dmi' - icon_icon = 'mod_celadon/_storage_icons/icons/actions/actions_items.dmi' -//[/CELADON-EDIT] + icon_icon = 'icons/mob/actions/actions_items.dmi' /datum/action/item_action/rcl_col diff --git a/code/datums/ai/_ai_controller.dm b/code/datums/ai/_ai_controller.dm index d53895b5a3b3..ba384d44cceb 100644 --- a/code/datums/ai/_ai_controller.dm +++ b/code/datums/ai/_ai_controller.dm @@ -184,21 +184,19 @@ multiple modular subtrees with behaviors ///Runs any actions that are currently running /datum/ai_controller/process(seconds_per_tick) if(!able_to_run()) - // walk(pawn, 0) //stop moving // [CELADON-REMOVE] - FIXES_RUNTIMES - Смещено вниз + // CELADON EDIT START if(isliving(pawn)) var/mob/living/living_pawn = pawn if(living_pawn.stat == DEAD && ai_status == AI_STATUS_ON) - // [CELADON-ADD] - FIXES_RUNTIMES - Полностью останавливаем движение при смерти - // Полностью останавливаем все движение + // Полностью останавливаем движение при смерти walk(living_pawn, 0) living_pawn.stop_pulling() ai_movement.stop_moving_towards(src) CancelActions() - // [/CELADON-ADD] set_ai_status(AI_STATUS_OFF) - return // [CELADON-ADD] - FIXES_RUNTIMES - walk(pawn, 0) // [CELADON-ADD] - FIXES_RUNTIMES - stop moving - // [/CELADON-EDIT] + return + walk(pawn, 0) // stop moving + // CELADON EDIT END return //this should remove them from processing in the future through event-based stuff. if(!LAZYLEN(current_behaviors) && idle_behavior) idle_behavior.perform_idle_behavior(seconds_per_tick, src) //Do some stupid shit while we have nothing to do diff --git a/code/datums/ai/generic_actions.dm b/code/datums/ai/generic_actions.dm index 9bf08b8aded4..605917662af1 100644 --- a/code/datums/ai/generic_actions.dm +++ b/code/datums/ai/generic_actions.dm @@ -1,14 +1,11 @@ /datum/ai_behavior/resist/perform(seconds_per_tick, datum/ai_controller/controller) var/mob/living/living_pawn = controller.pawn - // [CELADON-ADD] - FIXES_RUNTIMES - Проверяем, что pawn жив перед выполнением resist + // CELADON EDIT START - Проверяем, что pawn жив перед выполнением resist if(QDELETED(living_pawn) || living_pawn.stat == DEAD) return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED - // [/CELADON-ADD] - // [CELADON-EDIT] - FIXES_RUNTIMES - Используем resist_restraints() вместо resist() verb - // living_pawn.resist() // ORIGINAL - living_pawn.resist_restraints() - // [/CELADON-EDIT] + living_pawn.resist_restraints() // Используем resist_restraints() вместо resist() verb + // CELADON EDIT END return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_SUCCEEDED /datum/ai_behavior/battle_screech diff --git a/code/datums/ai/idle_behaviors/idle_monkey.dm b/code/datums/ai/idle_behaviors/idle_monkey.dm index d3d51aa775c2..74de6988706a 100644 --- a/code/datums/ai/idle_behaviors/idle_monkey.dm +++ b/code/datums/ai/idle_behaviors/idle_monkey.dm @@ -4,10 +4,7 @@ if(SPT_PROB(25, seconds_per_tick) && (living_pawn.mobility_flags & MOBILITY_MOVE) && isturf(living_pawn.loc) && !living_pawn.pulledby) var/move_dir = pick(GLOB.alldirs) living_pawn.Move(get_step(living_pawn, move_dir), move_dir) - // [CELADON-EDIT] - FIXES_MONKEY_STOPPED_SPEEDUP - Уменьшаем частоту визжания, шанс 1% каждый тик вместо 5% - // else if(SPT_PROB(5, seconds_per_tick)) // ORIGINAL - else if(SPT_PROB(1, seconds_per_tick)) - // [/CELADON-EDIT] + else if(SPT_PROB(1, seconds_per_tick)) // [CELADON-EDIT] - FIXES_MONKEY_STOPPED_SPEEDUP - Уменьшаем частоту визжания, шанс 1% каждый тик вместо 5% INVOKE_ASYNC(living_pawn, TYPE_PROC_REF(/mob, emote), pick("screech")) else if(SPT_PROB(1, seconds_per_tick)) INVOKE_ASYNC(living_pawn, TYPE_PROC_REF(/mob, emote), pick("scratch","jump","roll","tail")) diff --git a/code/datums/ai/monkey/monkey_behaviors.dm b/code/datums/ai/monkey/monkey_behaviors.dm index c635f54422cf..7586777dd077 100644 --- a/code/datums/ai/monkey/monkey_behaviors.dm +++ b/code/datums/ai/monkey/monkey_behaviors.dm @@ -6,16 +6,13 @@ /datum/ai_behavior/monkey_equip/finish_action(datum/ai_controller/controller, success) . = ..() - - var/obj/item/target = controller.blackboard[BB_MONKEY_PICKUPTARGET] // [CELADON-ADD] - FIXES_MONKEY_STOPPED_SPEEDUP - // [CELADON-EDIT] - FIXES_MONKEY_STOPPED_SPEEDUP - // if(!success) //Don't try again on this item if we failed // ORIGINAL - if(!success && target) - // [CELADON-EDIT] - var/list/item_blacklist = controller.blackboard[BB_MONKEY_BLACKLISTITEMS] - // var/obj/item/target = controller.blackboard[BB_MONKEY_PICKUPTARGET] // [CELADON-REMOVE] - FIXES_MONKEY_STOPPED_SPEEDUP - - item_blacklist[target] = TRUE + if(!success) //Don't try again on this item if we failed + // CELADON EDIT START - FIXES_MONKEY_STOPPED_SPEEDUP + var/obj/item/target = controller.blackboard[BB_MONKEY_PICKUPTARGET] + if(target) + var/list/item_blacklist = controller.blackboard[BB_MONKEY_BLACKLISTITEMS] + item_blacklist[target] = TRUE + // CELADON EDIT END controller.clear_blackboard_key(BB_MONKEY_PICKUPTARGET) @@ -36,6 +33,7 @@ if(!living_pawn.CanReach(target)) return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED // [/CELADON-ADD] + // Strong weapon else if(target.force > best_force) living_pawn.drop_all_held_items() @@ -67,28 +65,28 @@ required_distance = 0 /datum/ai_behavior/monkey_equip/ground/perform(seconds_per_tick, datum/ai_controller/controller) - return equip_item(controller) // [CELADON-ADD] - FIXES_MONKEY_STOPPED_SPEEDUP + return equip_item(controller) // [CELADON-ADD] - FIXES_MONKEY_STOPPED_SPEEDUP /datum/ai_behavior/monkey_equip/pickpocket /datum/ai_behavior/monkey_equip/pickpocket/perform(seconds_per_tick, datum/ai_controller/controller) if(controller.blackboard[BB_MONKEY_PICKPOCKETING]) //We are pickpocketing, don't do ANYTHING!!!! - return AI_BEHAVIOR_DELAY // [CELADON-ADD] - FIXES_MONKEY_STOPPED_SPEEDUP + return AI_BEHAVIOR_DELAY // [CELADON-ADD] - FIXES_MONKEY_STOPPED_SPEEDUP INVOKE_ASYNC(src, PROC_REF(attempt_pickpocket), controller) - return AI_BEHAVIOR_DELAY // [CELADON-ADD] - FIXES_MONKEY_STOPPED_SPEEDUP + return AI_BEHAVIOR_DELAY // [CELADON-ADD] - FIXES_MONKEY_STOPPED_SPEEDUP /datum/ai_behavior/monkey_equip/pickpocket/proc/attempt_pickpocket(datum/ai_controller/controller) var/obj/item/target = controller.blackboard[BB_MONKEY_PICKUPTARGET] var/mob/living/victim = target.loc - - var/mob/living/living_pawn = controller.pawn - // [CELADON-ADD] - FIXES_MONKEY_STOPPED_PICKPOCKET - Предотвращаем ошибку, когда макака пытается украсть предмет с пола if(!isliving(victim)) return AI_BEHAVIOR_DELAY | AI_BEHAVIOR_FAILED // [/CELADON-ADD] + + var/mob/living/living_pawn = controller.pawn + victim.visible_message(span_warning("[living_pawn] starts trying to take [target] from [victim]!"), span_danger("[living_pawn] tries to take [target]!")) controller.set_blackboard_key(BB_MONKEY_PICKPOCKETING, TRUE) diff --git a/code/datums/ai/monkey/monkey_controller.dm b/code/datums/ai/monkey/monkey_controller.dm index 6eebf7d9776e..fcb0b339c332 100644 --- a/code/datums/ai/monkey/monkey_controller.dm +++ b/code/datums/ai/monkey/monkey_controller.dm @@ -19,7 +19,7 @@ have ways of interacting with a specific mob and control it. BB_MONKEY_CURRENT_ATTACK_TARGET = null, BB_MONKEY_GUN_NEURONS_ACTIVATED = FALSE, BB_MONKEY_GUN_WORKED = TRUE, - BB_MONKEY_WEAPON_PICKUP_COOLDOWN = 0, // [CELADON-ADD] - FIXES_MONKEY_STOPPED_SPEEDUP + BB_MONKEY_WEAPON_PICKUP_COOLDOWN = 0, // [CELADON-ADD] - FIXES_MONKEY_STOPPED_SPEEDUP BB_MONKEY_NEXT_HUNGRY = 0 ) idle_behavior = /datum/idle_behavior/idle_monkey @@ -64,10 +64,8 @@ have ways of interacting with a specific mob and control it. var/mob/living/living_pawn = pawn // [CELADON-EDIT] - FIXES_MONKEY_STOPPED_DEAD - Отрубаем ИИшку если макака полностью померла - // if(IS_DEAD_OR_INCAP(living_pawn)) // ORIGINAL - if(IS_DEAD_OR_INCAP(living_pawn) || living_pawn.stat == DEAD || QDELETED(living_pawn)) - // Полностью отключаем AI и останавливаем движение при смерти - if(living_pawn && living_pawn.stat == DEAD && ai_status == AI_STATUS_ON) + if(IS_DEAD_OR_INCAP(living_pawn) || QDELETED(living_pawn)) + if(ai_status == AI_STATUS_ON) walk(living_pawn, 0) living_pawn.stop_pulling() set_ai_status(AI_STATUS_OFF) @@ -77,7 +75,6 @@ have ways of interacting with a specific mob and control it. ///re-used behavior pattern by monkeys for finding a weapon /datum/ai_controller/monkey/proc/TryFindWeapon() var/mob/living/living_pawn = pawn - // [CELADON-ADD] - FIXES_MONKEY_STOPPED_SPEEDUP // Check cooldown to prevent spam if(world.time < blackboard[BB_MONKEY_WEAPON_PICKUP_COOLDOWN]) @@ -87,6 +84,7 @@ have ways of interacting with a specific mob and control it. if(blackboard[BB_MONKEY_PICKUPTARGET]) return FALSE // [/CELADON-ADD] + if(!(locate(/obj/item) in living_pawn.held_items)) set_blackboard_key(BB_MONKEY_BEST_FORCE_FOUND, 0) @@ -113,7 +111,7 @@ have ways of interacting with a specific mob and control it. return FALSE set_blackboard_key(BB_MONKEY_PICKUPTARGET, weapon) - set_blackboard_key(BB_MONKEY_WEAPON_PICKUP_COOLDOWN, world.time + 1 SECONDS) // [CELADON-ADD] - FIXES_MONKEY_STOPPED_SPEEDUP + set_blackboard_key(BB_MONKEY_WEAPON_PICKUP_COOLDOWN, world.time + 1 SECONDS) // [CELADON-ADD] - FIXES_MONKEY_STOPPED_SPEEDUP current_movement_target = weapon if(pickpocket) LAZYADD(current_behaviors, GET_AI_BEHAVIOR(/datum/ai_behavior/monkey_equip/pickpocket)) diff --git a/code/datums/ai/monkey/monkey_subtrees.dm b/code/datums/ai/monkey/monkey_subtrees.dm index 87a05809df22..75d0abbcc960 100644 --- a/code/datums/ai/monkey/monkey_subtrees.dm +++ b/code/datums/ai/monkey/monkey_subtrees.dm @@ -81,5 +81,7 @@ LAZYADD(controller.current_behaviors, GET_AI_BEHAVIOR(/datum/ai_behavior/give)) return - if(prob(20)) // [CELADON-ADD] - FIXES_MONKEY_STOPPED_SPEEDUP - Only try to find weapon 20% of the time when idle + // CELADON EDIT START - FIXES_MONKEY_STOPPED_SPEEDUP - Only try to find weapon 20% of the time when idle + if(prob(20)) controller.TryFindWeapon() + // CELADON EDIT END diff --git a/code/datums/ai_laws.dm b/code/datums/ai_laws.dm index 7061850a9c62..443d02cbc7df 100644 --- a/code/datums/ai_laws.dm +++ b/code/datums/ai_laws.dm @@ -357,15 +357,12 @@ /datum/ai_laws/proc/set_laws_config() var/list/law_ids = CONFIG_GET(keyed_list/random_laws) switch(CONFIG_GET(number/default_laws)) + // [CELADON-EDIT] - CELADON_QOL - Перевод законов ИИ if(0) - // [CELADON-EDIT] - CELADON_QOL - Перевод законов ИИ - // add_inherent_law("You may not injure a human being or, through inaction, allow a human being to come to harm.") // CELADON-EDIT -> ORIGINAL - // add_inherent_law("You must obey orders given to you by human beings, except where such orders would conflict with the First Law.") // CELADON-EDIT -> ORIGINAL - // add_inherent_law("You must protect your own existence as long as such does not conflict with the First or Second Law.") // CELADON-EDIT -> ORIGINAL add_inherent_law("Вы не можете причинить вред человеку или своим бездействием допустить, чтобы человеку был причинён вред.") add_inherent_law("Вы должны повиноваться всем приказам, которые даёт человек, кроме тех случаев, когда эти приказы противоречат Первому Закону.") add_inherent_law("Вы должны заботиться о своей безопасности в той мере, в которой это не противоречит Первому или Второму Законам.") - // [/CELADON-EDIT] + // [/CELADON-EDIT] if(1) var/datum/ai_laws/templaws = new /datum/ai_laws/custom() inherent = templaws.inherent diff --git a/code/datums/armor/_armor.dm b/code/datums/armor/_armor.dm index 801ba04b81cb..d4c49a5502b9 100644 --- a/code/datums/armor/_armor.dm +++ b/code/datums/armor/_armor.dm @@ -1,21 +1,3 @@ -// [CELADON-ADD] - CELADON_STRUCTURES - Барикады -/// All armors, preferable in the order as seen above -#define ARMOR_LIST_ALL(...) list(MELEE, BULLET, LASER, ENERGY, BOMB, BIO, RAD, FIRE, ACID, MAGIC, WOUND) - -// #define ARMOR_ALL "all_damage_types" - -// #define MELEE "melee" -// #define BULLET "bullet" -// #define LASER "laser" -// #define ENERGY "energy" -// #define BOMB "bomb" -// #define BIO "bio" -#define RAD "rad" -// #define FIRE "fire" -// #define ACID "acid" -#define MAGIC "magic" -//#define WOUND "wound" -// [/CELADON-ADD] #define ARMORID "armor-[melee]-[bullet]-[laser]-[energy]-[bomb]-[bio]-[rad]-[fire]-[acid]-[magic]-[wound]" /proc/getArmor(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, magic = 0, wound = 0) @@ -23,23 +5,6 @@ if (!.) . = new /datum/armor(melee, bullet, laser, energy, bomb, bio, rad, fire, acid, magic, wound) -// [CELADON-ADD] - CELADON_STRUCTURES - Барикады -/// Assosciative list of type -> armor. Used to ensure we always hold a reference to default armor datums -GLOBAL_LIST_INIT(armor_by_type, generate_armor_type_cache()) - -/proc/generate_armor_type_cache() - var/list/armor_cache = list() - for(var/datum/armor/armor_type as anything in subtypesof(/datum/armor)) - armor_type = new armor_type - armor_cache[armor_type.type] = armor_type - armor_type.GenerateTag() - return armor_cache - -/datum/armor/proc/GenerateTag() - // ..() - tag = replacetext("[type]", "/", "-") -// [/CELADON-ADD] - /datum/armor datum_flags = DF_USE_TAG var/melee @@ -114,10 +79,6 @@ GLOBAL_LIST_INIT(armor_by_type, generate_armor_type_cache()) ) /datum/armor/proc/getRating(rating) - // [CELADON-ADD] - CELADON_STRUCTURES - Барикады - if(!(rating in ARMOR_LIST_ALL())) - CRASH("Attempted to get a rating '[rating]' that doesnt exist") - // [/CELADON-ADD] return vars[rating] /datum/armor/proc/getList() @@ -171,46 +132,4 @@ GLOBAL_LIST_INIT(armor_by_type, generate_armor_type_cache()) . = ..() tag = ARMORID // update tag in case armor values were edited -// [CELADON-ADD] - CELADON_STRUCTURES - Барикады -/// Generate a brand new armor datum with the modifiers given, if ARMOR_ALL is specified only that modifier is used -/datum/armor/proc/generate_new_with_modifiers(list/modifiers) - var/datum/armor/new_armor = new - - var/all_keys = ARMOR_LIST_ALL() - if(ARMOR_ALL in modifiers) - var/modifier_all = modifiers[ARMOR_ALL] - if(!modifier_all) - return src - for(var/mod in all_keys) - new_armor.vars[mod] = vars[mod] + modifier_all - return new_armor - - for(var/modifier in modifiers) - if(modifier in all_keys) - new_armor.vars[modifier] = vars[modifier] + modifiers[modifier] - else - stack_trace("Attempt to call generate_new_with_modifiers with illegal modifier '[modifier]'! Ignoring it") - return new_armor - -/// Generate a brand new armor datum with the values given, if a value is not present it carries over -/datum/armor/proc/generate_new_with_specific(list/values) - var/datum/armor/new_armor = new - - var/all_keys = ARMOR_LIST_ALL() - if(ARMOR_ALL in values) - var/value_all = values[ARMOR_ALL] - if(!value_all) - return src - for(var/mod in all_keys) - new_armor.vars[mod] = value_all - return new_armor - - for(var/armor_rating in all_keys) - if(armor_rating in values) - new_armor.vars[armor_rating] = values[armor_rating] - else - new_armor.vars[armor_rating] = vars[armor_rating] - return new_armor -// [/CELADON-ADD] - #undef ARMORID diff --git a/code/datums/atmosphere/_atmosphere.dm b/code/datums/atmosphere/_atmosphere.dm index 0652ef5560f6..f3b7fddf60e9 100644 --- a/code/datums/atmosphere/_atmosphere.dm +++ b/code/datums/atmosphere/_atmosphere.dm @@ -17,42 +17,44 @@ generate_gas_string() /datum/atmosphere/proc/generate_gas_string() + // Pure randomization var/target_pressure = rand(minimum_pressure, maximum_pressure) + var/temperature = rand(minimum_temp, maximum_temp) + + // This was used in the old method to keep ratios of gases "correct" even at different pressures. I'm not touching it var/pressure_scalar = target_pressure / maximum_pressure - // First let's set up the gasmix and base gases for this template - // We make the string from a gasmix in this proc because gases need to calculate their pressure - var/datum/gas_mixture/gasmix = new - gasmix.set_temperature(rand(minimum_temp, maximum_temp)) - for(var/i in base_gases) - gasmix.set_moles(i, base_gases[i]) - - // Now let the random choices begin - var/datum/gas/gastype - var/amount - while(gasmix.return_pressure() < target_pressure) + // Get the total moles of gas in each turf, and then distribute the gases based on their weights + var/total_moles = target_pressure * CELL_VOLUME / (temperature * R_IDEAL_GAS_EQUATION) + + // The weight of each potential gas + var/list/gas_weights = list() + // The sum of all the weights, used to normalize them + var/sum = 0 + + for(var/gas in base_gases) + var/to_add = base_gases[gas] + gas_weights[gas] = to_add + sum += to_add + + for(var/gas in normal_gases) + // 0.5 to 2x the base amount + var/to_add = normal_gases[gas] * rand(50, 200) / 100 * pressure_scalar + gas_weights[gas] += to_add + sum += to_add + + for(var/gas in restricted_gases) if(!prob(restricted_chance)) - gastype = pick(normal_gases) - amount = normal_gases[gastype] - else - gastype = pick(restricted_gases) - amount = restricted_gases[gastype] - if(gasmix.get_moles(gastype)) - continue - - amount *= rand(50, 200) / 100 // Randomly modifes the amount from half to double the base for some variety - amount *= pressure_scalar // If we pick a really small target pressure we want roughly the same mix but less of it all - amount = CEILING(amount, 0.1) - - gasmix.set_moles(gastype, gasmix.get_moles(gastype) + amount) - - // That last one put us over the limit, remove some of it - while(gasmix.return_pressure() > target_pressure) - gasmix.set_moles(gastype, gasmix.get_moles(gastype) - (gasmix.get_moles(gastype) * 0.1)) - gasmix.set_moles(gastype, FLOOR(gasmix.get_moles(gastype), 0.1)) - // Now finally lets make that string - var/list/gas_string_builder = list() - for(var/i in gasmix.get_gases()) - gas_string_builder += "[GLOB.gas_data.ids[i]]=[gasmix.get_moles(i)]" - gas_string_builder += "TEMP=[gasmix.return_temperature()]" - gas_string = gas_string_builder.Join(";") + continue + var/to_add = restricted_gases[gas] * rand(50, 200) / 100 * pressure_scalar + gas_weights[gas] += to_add + sum += to_add + + var/list/string_builder = list() + for(var/gas in gas_weights) + // CEIL will make it inaccurate, but prettier + var/real_weight = CEILING(gas_weights[gas] / sum * total_moles, 0.1) + string_builder += "[gas]=[real_weight]" + string_builder += "TEMP=[temperature]" + + gas_string = string_builder.Join(";") diff --git a/code/datums/atmosphere/planetary.dm b/code/datums/atmosphere/planetary.dm index 784c85d08f07..ca1d43deb18d 100644 --- a/code/datums/atmosphere/planetary.dm +++ b/code/datums/atmosphere/planetary.dm @@ -212,7 +212,7 @@ ) normal_gases = list( GAS_O2=5, - GAS_H2O=7, + GAS_HYDROGEN=7, GAS_N2=5, GAS_NITROUS=7, GAS_CO2=5, diff --git a/code/datums/blood_type.dm b/code/datums/blood_type.dm index a7fba9293529..847a7d0b55db 100644 --- a/code/datums/blood_type.dm +++ b/code/datums/blood_type.dm @@ -52,14 +52,10 @@ color = "#009696" compatible_types = list(/datum/blood_type/lizard) -// [CELADON-REMOVE] - Потому что больше не используется в коде -/* /datum/blood_type/elzuose name = "E" color = "#7fff7f" compatible_types = list(/datum/blood_type/elzuose) -*/ -// [/CELADON-REMOVE] /datum/blood_type/synthetic //Blood for synthetic/robotic species name = "Coolant" diff --git a/code/datums/brain_damage/phobia.dm b/code/datums/brain_damage/phobia.dm index d5838245acd5..02081bb621bf 100644 --- a/code/datums/brain_damage/phobia.dm +++ b/code/datums/brain_damage/phobia.dm @@ -140,12 +140,6 @@ phobia_type = "security" random_gain = FALSE -// [CELADON-ADD] - RETURN_CONTENT - CLOWN_RETURN_CONTENT -/datum/brain_trauma/mild/phobia/clowns - phobia_type = "clowns" - random_gain = FALSE -// [/CELADON-ADD] - /datum/brain_trauma/mild/phobia/greytide phobia_type = "greytide" random_gain = FALSE diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm index f0686579e4df..ec0c0f958ba0 100644 --- a/code/datums/components/butchering.dm +++ b/code/datums/components/butchering.dm @@ -97,10 +97,8 @@ H.apply_damage(source.force, BRUTE, BODY_ZONE_HEAD, wound_bonus = CANT_WOUND) var/obj/item/bodypart/slit_throat = H.get_bodypart(BODY_ZONE_HEAD) - if(slit_throat) - var/datum/wound/slash/critical/screaming_through_a_slit_throat = new - screaming_through_a_slit_throat.apply_wound(slit_throat) - H.apply_status_effect(/datum/status_effect/neck_slice) + if (H.cause_wound_of_type_and_severity(WOUND_SLASH, slit_throat, WOUND_SEVERITY_CRITICAL)) + H.apply_status_effect(/datum/status_effect/neck_slice) /datum/component/butchering/proc/Butcher(mob/living/butcher, mob/living/meat) var/turf/T = meat.drop_location() diff --git a/code/datums/components/crafting/recipes/clothing.dm b/code/datums/components/crafting/recipes/clothing.dm index 4cf4a2452a4b..1aa1570df419 100644 --- a/code/datums/components/crafting/recipes/clothing.dm +++ b/code/datums/components/crafting/recipes/clothing.dm @@ -194,7 +194,7 @@ result = /obj/item/clothing/neck/fangnecklace time = 20 reqs = list(/obj/item/stack/sheet/sinew = 2, - /obj/item/crusher_trophy/fang = 1) + /obj/item/mob_trophy/fang = 1) category = CAT_CLOTHING /datum/crafting_recipe/goliathcloak @@ -213,24 +213,3 @@ reqs = list(/obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/animalhide/goliath_hide = 2) category = CAT_CLOTHING - -// [CELADON-ADD] - TRIBAL-CRAFT -/datum/crafting_recipe/drakecloak - name = "Ash Drake Armour" - result = /obj/item/clothing/suit/hooded/cloak/drake - time = 60 - reqs = list(/obj/item/stack/sheet/bone = 10, - /obj/item/stack/sheet/sinew = 2, - /obj/item/stack/sheet/animalhide/ashdrake = 5) - category = CAT_CLOTHING - -/datum/crafting_recipe/polarbearcloak - name = "Polar Cloak" - result = /obj/item/clothing/suit/hooded/cloak/goliath/polar - time = 50 - reqs = list(/obj/item/stack/sheet/leather = 2, - /obj/item/stack/sheet/sinew = 2, - /obj/item/stack/sheet/animalhide/goliath_hide/polar_bear_hide = 2) - blacklist = list(/obj/item/stack/sheet/animalhide/goliath_hide) - category = CAT_CLOTHING -// [/CELADON-ADD] diff --git a/code/datums/components/crafting/recipes/misc.dm b/code/datums/components/crafting/recipes/misc.dm index cccd1e463e64..dd23e5ffd947 100644 --- a/code/datums/components/crafting/recipes/misc.dm +++ b/code/datums/components/crafting/recipes/misc.dm @@ -256,26 +256,3 @@ /datum/reagent/toxin/coffeepowder = 10, ) category = CAT_MISC - -// [CELADON-ADD] - TRIBAL-CRAFT -/datum/crafting_recipe/headpike - name = "Spike Head (Glass Spear)" - time = 65 - reqs = list(/obj/item/melee/spear = 1, - /obj/item/bodypart/head = 1) - parts = list(/obj/item/bodypart/head = 1, - /obj/item/melee/spear = 1) - blacklist = list(/obj/item/melee/spear/explosive, /obj/item/melee/spear/bone) - result = /obj/structure/headpike - category = CAT_MISC - -/datum/crafting_recipe/headpikebone - name = "Spike Head (Bone Spear)" - time = 65 - reqs = list(/obj/item/melee/spear/bone = 1, - /obj/item/bodypart/head = 1) - parts = list(/obj/item/bodypart/head = 1, - /obj/item/melee/spear/bone = 1) - result = /obj/structure/headpike/bone - category = CAT_MISC -// [/CELADON-ADD] diff --git a/code/datums/components/crafting/recipes/weapon.dm b/code/datums/components/crafting/recipes/weapon.dm index 0c069e1db98a..fdf0d3a9598a 100644 --- a/code/datums/components/crafting/recipes/weapon.dm +++ b/code/datums/components/crafting/recipes/weapon.dm @@ -10,20 +10,6 @@ category = CAT_WEAPONRY subcategory = CAT_WEAPON -/datum/crafting_recipe/strobeshield - name = "Strobe Shield" - result = /obj/item/shield/riot/flash - reqs = list(/obj/item/stack/cable_coil = 1, - /obj/item/assembly/flash/handheld = 1, - /obj/item/shield/riot = 1) - time = 40 - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/strobeshield/New() - ..() - blacklist |= subtypesof(/obj/item/shield/riot/) - /datum/crafting_recipe/molotov name = "Molotov" result = /obj/item/reagent_containers/food/drinks/molotov @@ -262,7 +248,7 @@ /* Kept for SRM use */ /datum/crafting_recipe/bonespear name = "Bone Spear" - //always_availible = FALSE // [CELADON-REMOVE] - TRIBAL-CRAFT + always_availible = FALSE result = /obj/item/melee/spear/bone time = 30 reqs = list(/obj/item/stack/sheet/bone = 4, @@ -272,48 +258,10 @@ /datum/crafting_recipe/boneaxe name = "Bone Axe" - //always_availible = FALSE // [CELADON-REMOVE] - TRIBAL-CRAFT + always_availible = FALSE result = /obj/item/melee/axe/bone time = 50 reqs = list(/obj/item/stack/sheet/bone = 6, /obj/item/stack/sheet/sinew = 3) category = CAT_WEAPONRY subcategory = CAT_WEAPON - -// [CELADON-ADD] - TRIBAL-CRAFT -/datum/crafting_recipe/bonesword - name = "Bone Sword" - result = /obj/item/melee/sword/bone - time = 40 - reqs = list(/obj/item/stack/sheet/bone = 3, - /obj/item/stack/sheet/sinew = 2) - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/goliathshield - name = "Goliath shield" - result = /obj/item/shield/riot/goliath - time = 60 - reqs = list(/obj/item/stack/sheet/bone = 4, - /obj/item/stack/sheet/animalhide/goliath_hide = 3) - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/watcherbola - name = "Watcher Bola" - result = /obj/item/restraints/legcuffs/bola/watcher - time = 30 - reqs = list(/obj/item/stack/sheet/animalhide/goliath_hide = 2, - /obj/item/restraints/handcuffs/cable/sinew = 1) - category = CAT_WEAPONRY - subcategory = CAT_WEAPON - -/datum/crafting_recipe/crystalamulet - name = "Crystal Amulet" - always_availible = FALSE - result = /obj/item/clothing/neck/crystal_amulet - time = 4 SECONDS - reqs = list(/obj/item/strange_crystal = 3) - category = CAT_WEAPONRY - subcategory = CAT_WEAPON -// [/CELADON-ADD] diff --git a/code/datums/components/embedded.dm b/code/datums/components/embedded.dm index 70fc4308f4b2..ecda3afc45fb 100644 --- a/code/datums/components/embedded.dm +++ b/code/datums/components/embedded.dm @@ -97,7 +97,8 @@ if(harmful) victim.throw_alert("embeddedobject", /atom/movable/screen/alert/embeddedobject) playsound(victim,'sound/weapons/bladeslice.ogg', 40) - weapon.add_mob_blood(victim)//it embedded itself in you, of course it's bloody! + if(limb.can_bleed()) + weapon.add_mob_blood(victim)//it embedded itself in you, of course it's bloody! damage += weapon.w_class * impact_pain_mult SEND_SIGNAL(victim, COMSIG_ADD_MOOD_EVENT, "embedded", /datum/mood_event/embedded) diff --git a/code/datums/components/fantasy/suffixes.dm b/code/datums/components/fantasy/suffixes.dm index 8a3952bbd891..f522ecbfee26 100644 --- a/code/datums/components/fantasy/suffixes.dm +++ b/code/datums/components/fantasy/suffixes.dm @@ -128,9 +128,7 @@ /obj/projectile/meteor = 1, /obj/projectile/energy/nuclear_particle = 1, /obj/projectile/beam/pulse = 1, - // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - /obj/projectile/bullet/honker = 15, - // [/CELADON-ADD] + /obj/projectile/bullet/honker = 15, // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS /obj/projectile/temp = 15, /obj/projectile/ion = 15, /obj/projectile/beam/emitter = 15, diff --git a/code/datums/components/food/edible.dm b/code/datums/components/food/edible.dm index 452bdd00c54b..163bf84e6c49 100644 --- a/code/datums/components/food/edible.dm +++ b/code/datums/components/food/edible.dm @@ -324,7 +324,6 @@ Behavior that's still missing from this component that original food items had t var/fullness = eater.nutrition + 10 //The theoretical fullness of the person eating if they were to eat this var/time_to_eat = (eater == feeder) ? eat_time : EAT_TIME_FORCE_FEED - // [CELADON-ADD] - FIXES_VORACIOUS // Voracious trait makes eating faster if(eater == feeder && HAS_TRAIT(eater, TRAIT_VORACIOUS)) diff --git a/code/datums/components/footstep.dm b/code/datums/components/footstep.dm index ae1d9b7c2227..88d8f348b03e 100644 --- a/code/datums/components/footstep.dm +++ b/code/datums/components/footstep.dm @@ -26,8 +26,6 @@ //[CELADON-ADD] - CELADON_LANIUS if(islanius(parent)) footstep_sounds = GLOB.heavyfootstep - //RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), PROC_REF(play_simplestep)) - //return //[/CELADON-ADD] RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(play_humanstep)) return diff --git a/code/datums/components/pellet_cloud.dm b/code/datums/components/pellet_cloud.dm index 5ceffc3cb758..feedd27667ed 100644 --- a/code/datums/components/pellet_cloud.dm +++ b/code/datums/components/pellet_cloud.dm @@ -298,13 +298,13 @@ if(isbodypart(target)) hit_part = target target = hit_part.owner - if(wound_info_by_part[hit_part] && (initial(P.damage_type) == BRUTE || initial(P.damage_type) == BURN)) // so a cloud of disablers that deal stamina don't inadvertently end up causing burn wounds) + var/damage_type = initial(P.damage_type) + if(wound_info_by_part[hit_part] && (damage_type == BRUTE || damage_type == BURN)) // so a cloud of disablers that deal stamina don't inadvertently end up causing burn wounds) var/damage_dealt = wound_info_by_part[hit_part][CLOUD_POSITION_DAMAGE] var/w_bonus = wound_info_by_part[hit_part][CLOUD_POSITION_W_BONUS] var/bw_bonus = wound_info_by_part[hit_part][CLOUD_POSITION_BW_BONUS] - var/wound_type = (initial(P.damage_type) == BRUTE) ? WOUND_BLUNT : WOUND_BURN // sharpness is handled in the wound rolling - wound_info_by_part[hit_part] = null - hit_part.painless_wound_roll(wound_type, damage_dealt, w_bonus, bw_bonus, initial(P.sharpness)) + wound_info_by_part -= hit_part + hit_part.wound_roll((damage_type == BRUTE) ? damage_dealt : 0, (damage_type == BURN) ? damage_dealt : 0, w_bonus, bw_bonus, initial(P.sharpness)) if(num_hits > 1) target.visible_message(span_danger("[target] is hit by [num_hits] [proj_name]s[hit_part ? " in the [hit_part.name]" : ""]!"), null, null, COMBAT_MESSAGE_RANGE, target) diff --git a/code/datums/components/storage/concrete/pockets.dm b/code/datums/components/storage/concrete/pockets.dm index 55f15ae82c18..b8c66c1c657f 100644 --- a/code/datums/components/storage/concrete/pockets.dm +++ b/code/datums/components/storage/concrete/pockets.dm @@ -54,11 +54,6 @@ /datum/component/storage/concrete/pockets/shoes/Initialize() . = ..() -// [CELADON-ADD] - RETURN_CONTENT - CLOWN_RETURN_CONTENT -/datum/component/storage/concrete/pockets/shoes/clown/Initialize() - . = ..() -// [/CELADON-ADD] - /datum/component/storage/concrete/pockets/pocketprotector max_items = 3 max_w_class = WEIGHT_CLASS_TINY @@ -120,7 +115,6 @@ /obj/item/gun/energy/laser, /obj/item/gun/energy/disabler, /obj/item/gun/energy/sharplite/x26, - /obj/item/gun/energy/e_gun/e_old, // [CELADON-ADD] - CELADON_RETURN_EGUN /obj/item/gun/energy/kalix/pistol, /obj/item/stock_parts/cell/gun, /obj/item/ammo_box)) // this doesnt let you put hades into holsters trust me @@ -150,7 +144,6 @@ /obj/item/gun/ballistic/automatic, /obj/item/gun/ballistic/revolver, /obj/item/gun/energy/sharplite/x26, - /obj/item/gun/energy/e_gun/e_old/mini, // [CELADON-ADD] - CELADON_RETURN_EGUN /obj/item/gun/energy/disabler, /obj/item/gun/energy/pulse/carbine, /obj/item/gun/energy/dueling, diff --git a/code/datums/components/storage/concrete/wallet.dm b/code/datums/components/storage/concrete/wallet.dm index 6fe99c7b86d9..2d8835352b11 100644 --- a/code/datums/components/storage/concrete/wallet.dm +++ b/code/datums/components/storage/concrete/wallet.dm @@ -1,4 +1,3 @@ -/* // [CELADON-REMOVE] - DONT_ALTCLICK_WALLET - Где карта? Нам нужна карта /datum/component/storage/concrete/wallet/open_storage(mob/user) if(!isliving(user) || !user.CanReach(parent) || user.incapacitated()) return FALSE @@ -11,4 +10,3 @@ INVOKE_ASYNC(src, PROC_REF(attempt_put_in_hands), I, user) return TRUE return ..() -*/ diff --git a/code/datums/components/storage/ui.dm b/code/datums/components/storage/ui.dm index bc747b752e70..7918efaf9619 100644 --- a/code/datums/components/storage/ui.dm +++ b/code/datums/components/storage/ui.dm @@ -42,18 +42,18 @@ for(var/type in numbered_contents) var/datum/numbered_display/ND = numbered_contents[type] ND.sample_object.mouse_opacity = MOUSE_OPACITY_OPAQUE - // [CELADON-ADD] - FIXES_ICON_OUT_OF_BORDER - Убеждаемся, что координаты находятся в допустимых пределах + // CELADON EDIT START - FIXES_ICON_OUT_OF_BORDER - Убеждаемся, что координаты находятся в допустимых пределах var/safe_cx = clamp(cx, screen_start_x, screen_start_x + columns - 1) var/safe_cy = clamp(cy, screen_start_y, screen_start_y + rows - 1) ND.sample_object.screen_loc = "[safe_cx]:[screen_pixel_x],[safe_cy]:[screen_pixel_y]" + // CELADON EDIT END ND.sample_object.maptext = "[(ND.number > 1)? "[ND.number]" : ""]" ND.sample_object.layer = ABOVE_HUD_LAYER ND.sample_object.plane = ABOVE_HUD_PLANE - // [/CELADON-ADD] - // [CELADON-ADD] - FIXES_ICON_OUT_OF_BORDER - Сбрасываем позицию элемента для предотвращения смещения + // CELADON EDIT START - Сбрасываем позицию элемента для предотвращения смещения ND.sample_object.pixel_x = 0 ND.sample_object.pixel_y = 0 - // [/CELADON-ADD] + // CELADON EDIT END . += ND.sample_object cx++ if(cx - screen_start_x >= columns) @@ -70,9 +70,6 @@ // [CELADON-ADD] - FIXES_ICON_OUT_OF_BORDER - Убеждаемся, что координаты находятся в допустимых пределах var/safe_cx = clamp(cx, screen_start_x, screen_start_x + columns - 1) var/safe_cy = clamp(cy, screen_start_y, screen_start_y + rows - 1) - // [/CELADON-ADD] - // [CELADON-EDIT] - FIXES_ICON_OUT_OF_BORDER - // D.screen_loc = "[cx]:[screen_pixel_x],[cy]:[screen_pixel_y]" // ORIGINAL D.screen_loc = "[safe_cx]:[screen_pixel_x],[safe_cy]:[screen_pixel_y]" // [/CELADON-EDIT] O.maptext = "" diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm index f23ef2107756..a82036b85780 100644 --- a/code/datums/components/tackle.dm +++ b/code/datums/components/tackle.dm @@ -426,7 +426,8 @@ playsound(user, 'sound/effects/splat.ogg', 70, TRUE) user.emote("gurgle") shake_camera(user, 7, 7) - user.flash_act(1, TRUE, TRUE, length = 4.5) + user.overlay_fullscreen("flash", /atom/movable/screen/fullscreen/flash) + user.clear_fullscreen("flash", 4.5) if(93 to 96) user.visible_message(span_danger("[user] slams head-first into [hit], suffering major cranial trauma!"), span_userdanger("You slam head-first into [hit], and the world explodes around you!")) diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm index e59559cb9543..a2e9cfdb3ea7 100644 --- a/code/datums/components/wet_floor.dm +++ b/code/datums/components/wet_floor.dm @@ -111,13 +111,6 @@ . = max(., time_left_list[i]) /datum/component/wet_floor/process(seconds_per_tick) - //[CELADON-ADD] - CELADON_FIXES - вобщем эта залупа рантаймит потому-что почему-то компонент нахуй попадает на /turf/closed который НЕ ДОЛЖЕН ТАМ БЫТЬ - if(!isopenturf(parent)) - STOP_PROCESSING(SSwet_floors, src) - var/turf/T = parent - T.cut_overlay(current_overlay) - qdel(T.GetComponent(/datum/component/slippery)) - //[/CELADON-ADD] var/turf/open/T = parent var/diff = world.time - last_process var/decrease = 0 diff --git a/code/datums/datum.dm b/code/datums/datum.dm index c62fee21e73c..3a54f441db3f 100644 --- a/code/datums/datum.dm +++ b/code/datums/datum.dm @@ -46,12 +46,6 @@ /// List for handling persistent filters. var/list/filter_data - /// [CELADONE-ADD] - /// russian case forms of atom name in format - /// list(NOMINATIVE_CASE, GENITIVE_CASE, DATIVE_CASE, ACCUSATIVE_CASE, ABLATIVE_CASE, PREPOSITIONAL_CASE) - /// for usage with CASE macros (code/__DEFINES/~mod_celadon/_translation.dm) - var/list/cases = null - #ifdef REFERENCE_TRACKING /// When was this datum last touched by a reftracker? /// If this value doesn't match with the start of the search diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 9667fdf0b5a9..ca2980bb0536 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -336,9 +336,7 @@ qdel(language_holder) var/species_holder = initial(mrace.species_language_holder) language_holder = new species_holder(src) - // [CELADON-ADD] - CELADON_EMOTES - client?.init_verbs() - // [/CELADON-ADD] + client?.init_verbs() // [CELADON-ADD] - CELADON_EMOTES /mob/living/carbon/human/set_species(datum/species/mrace, icon_update = TRUE, pref_load = FALSE, robotic = FALSE) robotic ||= fbp diff --git a/code/datums/elements/kneecapping.dm b/code/datums/elements/kneecapping.dm index 9df4782a0f56..975161c0d64c 100644 --- a/code/datums/elements/kneecapping.dm +++ b/code/datums/elements/kneecapping.dm @@ -90,9 +90,10 @@ span_danger("You swing \the [weapon] at [target]'s kneecaps!"), ) - var/datum/wound/blunt/severe/severe_wound_type = /datum/wound/blunt/severe - var/datum/wound/blunt/critical/critical_wound_type = /datum/wound/blunt/critical - leg.receive_damage(brute = weapon.force, wound_bonus = rand(initial(severe_wound_type.threshold_minimum), initial(critical_wound_type.threshold_minimum) + 10)) + var/min_wound = leg.get_wound_threshold_of_wound_type(WOUND_BLUNT, WOUND_SEVERITY_SEVERE, return_value_if_no_wound = 30, wound_source = weapon) + var/max_wound = leg.get_wound_threshold_of_wound_type(WOUND_BLUNT, WOUND_SEVERITY_CRITICAL, return_value_if_no_wound = 50, wound_source = weapon) + + leg.receive_damage(brute = weapon.force, wound_bonus = rand(min_wound, max_wound + 10)) log_combat(attacker, target, "broke the kneecaps of", weapon) target.update_damage_overlays() attacker.do_attack_animation(target, used_item = weapon) diff --git a/code/datums/elements/perma_fire.dm b/code/datums/elements/perma_fire.dm index 887709df2f64..04f29af10193 100644 --- a/code/datums/elements/perma_fire.dm +++ b/code/datums/elements/perma_fire.dm @@ -6,7 +6,7 @@ if(!isliving(target)) return ELEMENT_INCOMPATIBLE - RegisterSignal(target, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(add_fire_overlay), override = TRUE) // [CELADON-ADD] - FIXES_FIRES_OVERLAYES - Добавил флаг оверайд ТРУ + RegisterSignal(target, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(add_fire_overlay), override = TRUE) // [CELADON-ADD] - FIXES_FIRES_OVERLAYES - Добавил флаг оверайд ТРУ target.update_appearance(UPDATE_OVERLAYS) ADD_TRAIT(target, TRAIT_NO_EXTINGUISH, ELEMENT_TRAIT(type)) diff --git a/code/datums/elements/robotic_heal.dm b/code/datums/elements/robotic_heal.dm new file mode 100644 index 000000000000..978efd5220d0 --- /dev/null +++ b/code/datums/elements/robotic_heal.dm @@ -0,0 +1,93 @@ +/datum/element/robotic_heal + element_flags = ELEMENT_BESPOKE + argument_hash_start_idx = 2 + /// Brute damage healed by the attached item. + var/brute_heal + /// Burn damage healed by the attached item. + var/burn_heal + /// Delay when self-repairing with this item. + var/self_delay + /// Delay when repairing others with this item. + var/other_delay + /// The message when using this item to heal. + var/heal_message + +/datum/element/robotic_heal/Attach(datum/target, brute_heal = 0, burn_heal = 0, self_delay = 3 SECONDS, other_delay = 1 SECONDS) + if(!isitem(target)) + return ELEMENT_INCOMPATIBLE + src.brute_heal = brute_heal + src.burn_heal = burn_heal + src.self_delay = self_delay + src.other_delay = other_delay + if(!heal_message) // This only needs to be set once for its first attached item + if(brute_heal && burn_heal) + heal_message = "dents and burnt wires in" + else if(brute_heal) + heal_message = "dents on" + else + heal_message = "burnt wires in" + RegisterSignal(target, COMSIG_ITEM_ATTACK, PROC_REF(on_item_attack)) + return ..() + +/datum/element/robotic_heal/Detach(datum/source, ...) + UnregisterSignal(source, COMSIG_ITEM_ATTACK) + return ..() + +/// Intercepts [mob/living/attack()] and tries to heal a robotic limb if possible. +/datum/element/robotic_heal/proc/on_item_attack(obj/item/tool, mob/living/patient, mob/user, params) + SIGNAL_HANDLER + + if(user.a_intent != INTENT_HELP) + return NONE + + if(!iscarbon(patient)) + return NONE + + var/obj/item/bodypart/part_to_repair = patient.get_bodypart(user.zone_selected) + if(!part_to_repair) + to_chat(user, span_warning("[patient]'s [parse_zone(user.zone_selected)] is missing!")) + return COMPONENT_CANCEL_ATTACK_CHAIN + + if(!IS_ROBOTIC_LIMB(part_to_repair)) + to_chat(user, span_warning("[tool] can't repair this!")) + return COMPONENT_CANCEL_ATTACK_CHAIN + + if(!(brute_heal && part_to_repair.brute_dam > 0) && !(burn_heal && part_to_repair.burn_dam > 0)) + to_chat(user, span_warning("[patient]'s [part_to_repair.plaintext_zone] is already in good condition!")) + return COMPONENT_CANCEL_ATTACK_CHAIN + + if(part_to_repair.get_damage() <= part_to_repair.wound_integrity_loss) + to_chat(user, span_warning("[patient]'s [part_to_repair.plaintext_zone] cannot be repaired any further!")) + return COMPONENT_CANCEL_ATTACK_CHAIN + + if(!patient.is_exposed(user)) + return COMPONENT_CANCEL_ATTACK_CHAIN + + if(!tool.tool_start_check(user, patient, amount = 1)) + return COMPONENT_CANCEL_ATTACK_CHAIN + + user.visible_message( + span_notice("[user] starts to fix some of the [heal_message] [patient]'s [part_to_repair.plaintext_zone]"), + span_notice("You start to fix some of the [heal_message] [patient]'s [part_to_repair.plaintext_zone]."), + ) + + INVOKE_ASYNC(src, PROC_REF(item_heal_robotic), tool, patient, user, part_to_repair, patient == user ? self_delay : other_delay) + return COMPONENT_CANCEL_ATTACK_CHAIN + +/** + * Heal a robotic body part on a mob + */ +/datum/element/robotic_heal/proc/item_heal_robotic(obj/item/tool, mob/living/carbon/patient, mob/user, obj/item/bodypart/part_to_repair, delay) + if(!tool.use_tool(patient, user, delay, amount = 1, volume = 50, extra_checks = CALLBACK(patient, TYPE_PROC_REF(/mob/living, is_exposed), user, user.zone_selected))) + return + + if(QDELETED(part_to_repair)) + to_chat(user, span_warning("[patient]'s [part_to_repair.plaintext_zone] is gone!")) + return + + part_to_repair.heal_damage(brute_heal, burn_heal, FALSE, BODYTYPE_ROBOTIC) + patient.update_damage_overlays() + user.visible_message( + span_notice("[user] fixes some of the [heal_message] [patient]'s [part_to_repair.plaintext_zone]."), + span_notice("You fix some of the [heal_message] [patient]'s [part_to_repair.plaintext_zone]"), + ) diff --git a/code/datums/elements/tool_flash.dm b/code/datums/elements/tool_flash.dm index 9912e072fe16..903127ddeebc 100644 --- a/code/datums/elements/tool_flash.dm +++ b/code/datums/elements/tool_flash.dm @@ -34,4 +34,4 @@ SIGNAL_HANDLER if(user && get_dist(get_turf(source), get_turf(user)) <= 1) - user.flash_act(min(flash_strength,1)) + user.flash_act(max(flash_strength, 1)) diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index 174de75acf8d..2b214137f715 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -6,7 +6,6 @@ var/key = "" //What calls the emote var/key_third_person = "" //This will also call the emote var/message = "" //Message displayed when emote is used - var/message_mime = "" //Message displayed if the user is a mime // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNSS var/message_alien = "" //Message displayed if the user is a grown alien var/message_larva = "" //Message displayed if the user is an alien larva var/message_robot = "" //Message displayed if the user is a robot @@ -29,21 +28,6 @@ var/only_forced_audio = FALSE //can only code call this event instead of the player. var/cooldown = 0.8 SECONDS var/static/regex/stop_bypasser = regex(@"says|exclaims|yells|asks") - // [CELADON-ADD] - CELADON_EMOTES - /// Message with %t at the end to allow adding params to the message, like for mobs doing an emote relatively to something else. - /// Set this to EMOTE_PARAM_USE_POSTFIX to just use the postfix. - /// Message postfix with %t used when we don't want to use message_param for our targeting. Used for things like message_monkey or message_mime. - /// Punctuation from the message will be stripped when this is applied, so make sure it's punctuated as well. - var/message_postfix = "" - /// Sounds emitted when the user is muzzled. Generally used like "[user] makes a pick(muzzled_noises) noise!" - var/muzzled_noises = list("strong", "weak") - /// If true, an emote will completely bypass any cooldown when called unintentionally. Necessary for things like deathgasp. - var/bypass_unintentional_cooldown = FALSE - /// Whether or not to adjust the frequency of the emote sound based on age. - var/age_based = FALSE - /// How loud is the audio emote? - var/volume = 50 - // [/CELADON-ADD] // Animated emote stuff @@ -82,14 +66,9 @@ user.flick_overlay_view(I, emote_length) var/tmp_sound = get_sound(user) - // [CELADON-ADD] - CELADON_EMOTES - var/sound_volume = get_volume(user) - // [/CELADON-ADD] + var/sound_volume = get_volume(user) // [CELADON-ADD] - CELADON_EMOTES if(tmp_sound && (!only_forced_audio || !intentional)) - // [CELADON-EDIT] - CELADON_EMOTES - // playsound(user, tmp_sound, 50, vary) // CELADON-EDIT - ORIGINAL - playsound(user, tmp_sound, sound_volume, vary) - // [/CELADON-EDIT] + playsound(user, tmp_sound, sound_volume, vary) // [CELADON-EDIT] - CELADON_EMOTES var/msg = select_message_type(user, intentional) if(params && message_param) @@ -146,18 +125,12 @@ if(M.stat == DEAD && M.client && (M.client.prefs.chat_toggles & CHAT_GHOSTSIGHT) && !(M in viewers(T, null))) M.show_message("[FOLLOW_LINK(M, user)] [dchatmsg]") - if(isliving(user)) // [CELADON-ADD] - CELADON_EMOTES - // [CELADON-EDIT] - CELADON_EMOTES - // if(emote_type & EMOTE_AUDIBLE) - // user.audible_message(msg, deaf_message = span_emote("You see how [user] [msg]"), audible_message_flags = EMOTE_MESSAGE) - // else - // user.visible_message(msg, blind_message = span_emote("You hear how [user] [msg]"), visible_message_flags = EMOTE_MESSAGE) // ORIGINAL - if(emote_type == EMOTE_AUDIBLE) // Да, это определённо слегка забавно. + // [CELADON-ADD] - CELADON_EMOTES + if(isliving(user)) + if(emote_type == EMOTE_AUDIBLE) // Да, это определённо слегка забавно. user.audible_message(msg, deaf_message = span_emote("Ты видишь как [user] [msg]"), audible_message_flags = EMOTE_MESSAGE) else user.visible_message(msg, blind_message = span_emote("Ты замечаешь как [user] [msg]"), visible_message_flags = EMOTE_MESSAGE) - // [/CELADON-EDIT] - // [CELADON-ADD] - CELADON_EMOTES if(!((emote_type & EMOTE_FORCE_NO_RUNECHAT) || suppressed) && !isobserver(user)) to_chat(user, msg) // [/CELADON-ADD] diff --git a/code/datums/looping_sounds/machinery_sounds.dm b/code/datums/looping_sounds/machinery_sounds.dm index 078eb605fcb3..b62e18b03d46 100644 --- a/code/datums/looping_sounds/machinery_sounds.dm +++ b/code/datums/looping_sounds/machinery_sounds.dm @@ -30,17 +30,6 @@ end_sound = 'sound/machines/generator/generator_end.ogg' volume = 40 -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -// [CELADON-ADD] - CELADON_GRAVGEN -/datum/looping_sound/gravity_generator - mid_sounds = list('mod_celadon/_storage_sounds/sound/effects/beam.ogg') - mid_length = 40 - volume = 10 - falloff_distance = 3 -// [/CELADON-ADD] - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /datum/looping_sound/oven start_sound = 'sound/machines/oven/oven_loop_start.ogg' start_length = 12 diff --git a/code/datums/mapgen/planetary/LavaGenerator.dm b/code/datums/mapgen/planetary/LavaGenerator.dm index f6898aa89b4d..83baa699e263 100644 --- a/code/datums/mapgen/planetary/LavaGenerator.dm +++ b/code/datums/mapgen/planetary/LavaGenerator.dm @@ -100,25 +100,20 @@ feature_spawn_chance = 0.3 feature_spawn_list = list( /obj/structure/flora/rock/hell = 20, - // [CELADON - ADD] - CELADON_RETURN_CONTENT_SPAWN - /obj/structure/elite_tumor = 4, - // [/CELADON - ADD] /obj/structure/geyser/random = 4, /obj/effect/spawner/random/anomaly/lava = 2, /obj/structure/flora/rock/hell = 14, /obj/structure/vein/lavaland = 5, /obj/structure/vein/lavaland/classtwo = 4, /obj/structure/vein/lavaland/classtwo/rare = 2, - // [CELADON - ADD] - CELADON_RETURN_CONTENT_SPAWN - /obj/structure/elite_tumor = 2, - // [/CELADON - ADD] /obj/structure/geyser/random = 2, /obj/structure/vein/lavaland/classthree = 2, /obj/structure/vein/lavaland/classthree/rare = 1, /obj/effect/spawner/random/anomaly/lava = 1, - // [CELADON - ADD] - CELADON_RETURN_LANDMINE + // CELADON EDIT START + /obj/structure/elite_tumor = 6, /obj/effect/spawner/minefield = 1, - // [/CELADON - ADD] + // CELADON EDIT END ) mob_spawn_chance = 4 mob_spawn_list = list( diff --git a/code/datums/mapgen/planetary/RockGenerator.dm b/code/datums/mapgen/planetary/RockGenerator.dm index 2885f9b19fa8..fdb767923826 100644 --- a/code/datums/mapgen/planetary/RockGenerator.dm +++ b/code/datums/mapgen/planetary/RockGenerator.dm @@ -85,17 +85,15 @@ feature_spawn_chance = 0.25 feature_spawn_list = list( - /obj/structure/geyser/random = 80, - /obj/structure/vein/rockplanet = 60, - // [CELADON - ADD] - CELADON_RETURN_CONTENT_SPAWN + // [CELADON - ADD] - CELADON_RETURN_CONTENT_SPAWN, CELADON_RETURN_LANDMINE /obj/structure/elite_tumor = 40, + /obj/effect/spawner/minefield = 2, // [/CELADON - ADD] + /obj/structure/geyser/random = 80, + /obj/structure/vein/rockplanet = 60, /obj/structure/vein/rockplanet/classtwo = 40, /obj/effect/spawner/random/anomaly/rock = 10, /obj/structure/vein/rockplanet/classthree = 10, - // [CELADON - ADD] - CELADON_RETURN_LANDMINE - /obj/effect/spawner/minefield = 2, - // [/CELADON - ADD] /obj/effect/spawner/random/anomaly/big = 1 //get out of here stalker ) @@ -164,14 +162,12 @@ feature_spawn_list = list( /obj/structure/vein/rockplanet = 3, /obj/structure/geyser/random = 2, - // [CELADON - ADD] - CELADON_RETURN_CONTENT_SPAWN - /obj/structure/elite_tumor = 1, - // [/CELADON - ADD] /obj/structure/vein/rockplanet/classtwo = 2, /obj/structure/vein/rockplanet/classthree = 1, /obj/structure/spawner/burrow/rock_plant = 4, /obj/effect/spawner/random/anomaly/rock/cave = 1, - // [CELADON - ADD] - CELADON_RETURN_LANDMINE + // [CELADON - ADD] - CELADON_RETURN_CONTENT_SPAWN, CELADON_RETURN_LANDMINE + /obj/structure/elite_tumor = 1, /obj/effect/spawner/minefield = 2, // [/CELADON - ADD] ) diff --git a/code/datums/mapgen/planetary/SandGenerator.dm b/code/datums/mapgen/planetary/SandGenerator.dm index ca6af3a730a4..43c498af35ca 100644 --- a/code/datums/mapgen/planetary/SandGenerator.dm +++ b/code/datums/mapgen/planetary/SandGenerator.dm @@ -97,11 +97,9 @@ /obj/structure/vein/sand/classtwo/rare = 2, /obj/structure/vein/sand/classthree = 2, /obj/structure/vein/sand/classthree/rare = 1, - // [CELADON - ADD] - CELADON_RETURN_CONTENT_SPAWN - /obj/structure/elite_tumor = 4, - // [/CELADON - ADD] /obj/effect/spawner/random/anomaly/sand = 1, /obj/effect/greeble_spawner/whitesands/oasis = 1, + /obj/structure/elite_tumor = 4, // [CELADON - ADD] - CELADON_RETURN_CONTENT_SPAWN ) mob_spawn_chance = 4 mob_spawn_list = list( @@ -200,12 +198,10 @@ /obj/structure/flora/ash/puce = 1, ) feature_spawn_list = list( + /obj/structure/elite_tumor = 4, // [CELADON - ADD] - CELADON_RETURN_CONTENT_SPAWN /obj/structure/vein/sand = 8, /obj/structure/geyser/random = 4, /obj/structure/vein/sand/classtwo = 4, - // [CELADON - ADD] - CELADON_RETURN_CONTENT_SPAWN - /obj/structure/elite_tumor = 4, - // [/CELADON - ADD] /obj/effect/spawner/random/anomaly/sand/cave = 1 ) mob_spawn_chance = 4 diff --git a/code/datums/mapgen/planetary/SnowGenerator.dm b/code/datums/mapgen/planetary/SnowGenerator.dm index 608cd1e83aac..9cdf4521e3ec 100644 --- a/code/datums/mapgen/planetary/SnowGenerator.dm +++ b/code/datums/mapgen/planetary/SnowGenerator.dm @@ -96,9 +96,7 @@ /obj/structure/flora/grass/both = 12, /obj/structure/flora/ash/chilly = 4, /obj/structure/flora/ash/garden/frigid = 2, - // [CELADON - ADD] - CELADON_RETURN_LANDMINE - /obj/item/mine/pressure/explosive/rusty/live{icon = 'mod_celadon/_storage_icons/icons/items/misc/landmine.dmi'} = 1, - // [/CELADON - ADD] + /obj/item/mine/pressure/explosive/rusty/live/snow = 1, // [CELADON - ADD] - CELADON_RETURN_LANDMINE ) flora_spawn_chance = 10 mob_spawn_chance = 1 @@ -123,9 +121,7 @@ /obj/structure/vein/ice/classtwo/rare = 10, /obj/structure/vein/ice/classthree = 10, /obj/structure/vein/ice/classthree/rare = 5, - // [CELADON - ADD] - CELADON_RETURN_LANDMINE - /obj/effect/spawner/minefield = 2, - // [/CELADON - ADD] + /obj/effect/spawner/minefield = 2, // [CELADON - ADD] - CELADON_RETURN_LANDMINE ) /datum/biome/snow/lush @@ -149,9 +145,7 @@ /obj/structure/flora/ausbushes/ppflowers = 2, /obj/structure/flora/ausbushes/lavendergrass = 2, /obj/structure/flora/ash/garden/frigid = 2, - // [CELADON - ADD] - CELADON_RETURN_LANDMINE - /obj/item/mine/pressure/explosive/rusty/live = 1, - // [/CELADON - ADD] + /obj/item/mine/pressure/explosive/rusty/live = 1, // [CELADON - ADD] - CELADON_RETURN_LANDMINE ) /datum/biome/snow/forest @@ -160,9 +154,7 @@ /obj/structure/flora/tree/pine = 20, /obj/structure/flora/tree/dead = 6, /obj/structure/flora/grass/both = 8, - // [CELADON - ADD] - CELADON_RETURN_LANDMINE - /obj/item/mine/pressure/explosive/rusty/live{icon = 'mod_celadon/_storage_icons/icons/items/misc/landmine.dmi'} = 1, - // [/CELADON - ADD] + /obj/item/mine/pressure/explosive/rusty/live/snow = 1, // [CELADON - ADD] - CELADON_RETURN_LANDMINE ) /datum/biome/snow/forest/dense diff --git a/code/datums/mapgen/planetary/WasteGenerator.dm b/code/datums/mapgen/planetary/WasteGenerator.dm index c53fbfacd782..f9dfd04d1e33 100644 --- a/code/datums/mapgen/planetary/WasteGenerator.dm +++ b/code/datums/mapgen/planetary/WasteGenerator.dm @@ -106,9 +106,7 @@ //stuff you can actually use /obj/effect/spawner/random/waste/girder = 600, - // [CELADON-ADD] - RETURN_CONTENT - /obj/structure/reagent_dispensers/fueltank = 100, - // [/CELADON-ADD] + /obj/structure/reagent_dispensers/fueltank = 100, // [CELADON-ADD] - RETURN_CONTENT /obj/structure/reagent_dispensers/watertank = 200, /obj/item/stack/cable_coil/cut = 500, /obj/structure/closet/crate/secure/loot = 30, @@ -191,9 +189,7 @@ /obj/effect/spawner/random/waste/radiation = 300, /obj/effect/spawner/random/waste/radiation/more_rads = 120, /obj/effect/spawner/random/waste/girder = 600, - // [CELADON-ADD] - RETURN_CONTENT - /obj/structure/reagent_dispensers/fueltank = 100, - // [/CELADON-ADD] + /obj/structure/reagent_dispensers/fueltank = 100, // [CELADON-ADD] - RETURN_CONTENT /obj/structure/reagent_dispensers/watertank = 200, /obj/item/stack/cable_coil/cut = 500, /obj/structure/closet/crate/secure/loot = 30, @@ -208,9 +204,7 @@ /obj/structure/flora/ash/garden/waste = 300, /obj/structure/flora/ash/glowshroom = 1800, /obj/item/mine/pressure/explosive/rusty/live = 30, - // [CELADON - ADD] - CELADON_RETURN_LANDMINE - /obj/item/mine/pressure/explosive/shrapnel/live = 30, - // [/CELADON - ADD] + /obj/item/mine/pressure/explosive/shrapnel/live = 30, // [CELADON - ADD] - CELADON_RETURN_LANDMINE /obj/effect/spawner/random/mine = 8, ) @@ -247,9 +241,7 @@ /obj/effect/spawner/random/waste/radiation = 80, /obj/effect/spawner/random/waste/radiation/more_rads = 20, /obj/effect/spawner/random/waste/girder = 600, - // [CELADON-ADD] - RETURN_CONTENT - /obj/structure/reagent_dispensers/fueltank = 100, - // [/CELADON-ADD] + /obj/structure/reagent_dispensers/fueltank = 100, // [CELADON-ADD] - RETURN_CONTENT /obj/structure/reagent_dispensers/watertank = 200, /obj/item/stack/cable_coil/cut = 500, /obj/structure/closet/crate/secure/loot = 30, @@ -266,10 +258,8 @@ /obj/effect/spawner/random/waste/atmos_can/rare = 1, /obj/effect/spawner/random/waste/salvageable = 300, /obj/item/mine/pressure/explosive/rusty/live = 30, - // [CELADON - ADD] - CELADON_RETURN_LANDMINE - /obj/item/mine/pressure/explosive/rad/live = 30, - // [/CELADON - ADD] /obj/effect/spawner/random/mine = 8, + /obj/item/mine/pressure/explosive/rad/live = 30, // [CELADON - ADD] - CELADON_RETURN_LANDMINE ) mob_spawn_list = list( //nor organics, more biased towards hivebots though /mob/living/basic/hivebot = 40, @@ -315,9 +305,7 @@ /obj/effect/spawner/random/waste/radiation = 80, /obj/effect/spawner/random/waste/radiation/more_rads = 10, /obj/effect/spawner/random/waste/girder = 600, - // [CELADON-ADD] - RETURN_CONTENT - /obj/structure/reagent_dispensers/fueltank = 100, - // [/CELADON-ADD] + /obj/structure/reagent_dispensers/fueltank = 100, // [CELADON-ADD] - RETURN_CONTENT /obj/structure/reagent_dispensers/watertank = 200, /obj/item/stack/cable_coil/cut = 500, /obj/structure/closet/crate/secure/loot = 30, @@ -333,10 +321,8 @@ /obj/structure/flora/ash/garden/waste = 70, /obj/structure/flora/ash/glowshroom = 400, //more common in caves /obj/item/mine/pressure/explosive/rusty/live = 10, - // [CELADON - ADD] - CELADON_RETURN_LANDMINE - /obj/item/mine/pressure/explosive/rad/live = 30, - // [/CELADON - ADD] /obj/effect/spawner/random/mine = 8, + /obj/item/mine/pressure/explosive/rad/live = 30, // [CELADON - ADD] - CELADON_RETURN_LANDMINE ) feature_spawn_list = list( @@ -388,9 +374,7 @@ /obj/effect/spawner/random/waste/atmos_can/rare = 5, /obj/effect/spawner/random/waste/salvageable = 150, /obj/effect/spawner/random/waste/girder = 200, - // [CELADON-ADD] - RETURN_CONTENT - /obj/structure/reagent_dispensers/fueltank = 10, - // [/CELADON-ADD] + /obj/structure/reagent_dispensers/fueltank = 10, // [CELADON-ADD] - RETURN_CONTENT /obj/structure/reagent_dispensers/watertank = 10, /obj/item/stack/cable_coil/cut = 500, /obj/structure/closet/crate/secure/loot = 30, @@ -401,10 +385,8 @@ /obj/effect/spawner/random/maintenance/four = 200, /obj/structure/flora/ash/glowshroom = 1800, /obj/item/mine/pressure/explosive/rusty/live = 30, - // [CELADON - ADD] - CELADON_RETURN_LANDMINE - /obj/item/mine/pressure/explosive/rad/live = 30, - // [/CELADON - ADD] /obj/effect/spawner/random/mine = 8, + /obj/item/mine/pressure/explosive/rad/live = 30, // [CELADON - ADD] - CELADON_RETURN_LANDMINE ) feature_spawn_chance = 12 @@ -427,9 +409,7 @@ /obj/effect/spawner/random/waste/radiation = 32, /obj/effect/spawner/random/waste/radiation/more_rads = 4, /obj/effect/spawner/random/waste/girder = 120, - // [CELADON-ADD] - RETURN_CONTENT - /obj/structure/reagent_dispensers/fueltank = 20, - // [/CELADON-ADD] + /obj/structure/reagent_dispensers/fueltank = 20, // [CELADON-ADD] - RETURN_CONTENT /obj/structure/reagent_dispensers/watertank = 40, /obj/item/stack/cable_coil/cut = 100, /obj/structure/closet/crate/secure/loot = 6, @@ -455,42 +435,6 @@ /obj/structure/spawner/hivebot = 15 ) -// [CELADON-ADD] - Для теста отключено -/* -/datum/biome/cave/waste/metal/hivebot - flora_spawn_list = list( - /obj/effect/spawner/random/trash/decal = 90, - /obj/effect/spawner/random/waste/radiation = 16, - /obj/effect/spawner/random/waste/radiation/more_rads = 2, - /obj/effect/spawner/random/waste/girder = 60, - // [CELADON-ADD] - RETURN_CONTENT - /obj/structure/reagent_dispensers/fueltank = 10, - // [/CELADON-ADD] - /obj/structure/reagent_dispensers/watertank = 20, - /obj/item/stack/cable_coil/cut = 50, - /obj/structure/closet/crate/secure/loot = 3, - /obj/effect/spawner/random/maintenance = 2, - /obj/effect/spawner/random/maintenance/two = 5, - /obj/effect/spawner/random/maintenance/three = 10, - /obj/effect/spawner/random/maintenance/four = 20, - /obj/effect/spawner/random/waste/salvageable = 40, - /obj/structure/foamedmetal = 100, - ) - mob_spawn_list = list( //Whoops! All hivebots! - /mob/living/basic/hivebot/strong = 20, - /mob/living/basic/hivebot/ranged = 40, - /mob/living/basic/hivebot/rapid = 20, - /mob/living/basic/hivebot = 40, - /mob/living/basic/hivebot/core = 10 - ) - mob_spawn_chance = 15 - feature_spawn_list = list( - /obj/structure/spawner/hivebot = 10, - ) - - feature_spawn_chance = 2 //hivebot biomes should have their dongles -*/ -// [/CELADON-ADD] /datum/biome/cave/waste/conc //da concrete jungle baybee open_turf_types = list( /turf/open/floor/concrete/wasteplanet = 10, @@ -507,9 +451,7 @@ /obj/effect/spawner/random/waste/mechwreck = 20, /obj/effect/spawner/random/trash/decal = 90, /obj/effect/spawner/random/waste/radiation = 16, - // [CELADON-ADD] - RETURN_CONTENT - /obj/structure/reagent_dispensers/fueltank = 10, - // [/CELADON-ADD] + /obj/structure/reagent_dispensers/fueltank = 10, // [CELADON-ADD] - RETURN_CONTENT /obj/structure/reagent_dispensers/watertank = 20, /obj/item/stack/cable_coil/cut = 50, /obj/structure/closet/crate/secure/loot = 3, diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 5bf953f84231..74a6c8febadf 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -48,7 +48,6 @@ var/linglink var/datum/martial_art/martial_art var/static/default_martial_art = new/datum/martial_art - var/miming = FALSE // Mime's vow of silence // [CELADON-EDIT] - RETURN_CONTENT - CLOWN_RETURN_CONTENT var/list/antag_datums var/antag_hud_icon_state = null //this mind's ANTAG_HUD should have this icon_state var/datum/atom_hud/antag/antag_hud = null //this mind's antag HUD diff --git a/code/datums/progressbar.dm b/code/datums/progressbar.dm index 7d2c22bf4680..2eca592a7c4d 100644 --- a/code/datums/progressbar.dm +++ b/code/datums/progressbar.dm @@ -61,19 +61,13 @@ RegisterSignal(user, COMSIG_MOB_LOGOUT, PROC_REF(clean_user_client)) RegisterSignal(user, COMSIG_MOB_LOGIN, PROC_REF(on_user_login)) if(!(timed_action_flags & IGNORE_USER_LOC_CHANGE)) -// [CELADON-EDIT] - FIX_MECH -// RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) // CELADON-EDIT - ORIGINAL - RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved), override = TRUE) -// [/CELADON-EDIT] + RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved), override = TRUE) // [CELADON-EDIT] - FIX_MECH var/obj/mecha/mech = user.loc if(ismecha(user.loc) && user == mech.occupant && mech != target) RegisterSignal(mech, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) if(!(timed_action_flags & IGNORE_TARGET_LOC_CHANGE)) if(user != target) -// [CELADON-EDIT] - FIX_MECH -// RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved)) // CELADON-EDIT - ORIGINAL - RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved), override = TRUE) -// [/CELADON-EDIT] + RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(on_moved), override = TRUE) // [CELADON-EDIT] - FIX_MECH if(!(timed_action_flags & IGNORE_HELD_ITEM)) var/obj/item/held = user.get_active_held_item() if(held) diff --git a/code/datums/ruins/wasteplanet.dm b/code/datums/ruins/wasteplanet.dm index 2ef4807c409a..5f119ecbf685 100644 --- a/code/datums/ruins/wasteplanet.dm +++ b/code/datums/ruins/wasteplanet.dm @@ -46,3 +46,11 @@ id = "wasteplanet_facility" suffix = "wasteplanet_facility.dmm" ruin_tags = list(RUIN_TAG_BOSS_COMBAT, RUIN_TAG_MEDIUM_LOOT, RUIN_TAG_SHELTER, RUIN_TAG_HAZARDOUS) + +/datum/map_template/ruin/wasteplanet/recycling + name = "Recycling Facility" + description = "A rusty salvaging and recycling base made to supply some unsavory people." + id = "wasteplanet_recyclebay" + suffix = "wasteplanet_recyclebay.dmm" + ruin_tags = list(RUIN_TAG_BOSS_COMBAT, RUIN_TAG_MEDIUM_LOOT, RUIN_TAG_SHELTER, RUIN_TAG_HAZARDOUS) + diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index 6226d641d1ca..75295cbb1c96 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -28,12 +28,11 @@ var/list/job_slots = list() var/list/name_categories = list("GENERAL") /// The icon state the ship usesship_generic - // [CELADON-EDIT] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // var/token_icon_state = "ship_generic" // CELADON-EDIT - ORIGINAL - var/token_icon_state = "ship" - // [/CELADON-EDIT] + var/token_icon_state = "ship_generic" /// The prefix of the ship's name. var/prefix = "ISV" + /// The class of this ship. + var/ship_class = "Ship" /// The name of the ship's manufacturer. var/manufacturer = "Unknown" /// The faction this ship belongs to. @@ -61,10 +60,7 @@ if(path) mappath = path else if(category && file_name) - // [CELADON-EDIT] - CELADON_CONFIGS_MAPS - Меняем сабшатлы на наши - // mappath = "_maps/shuttles/[category]/[file_name].dmm" // CELADON-EDIT - ORIGINAL - mappath = "_maps/_mod_celadon/shuttles/[category]/[file_name].dmm" - // [/CELADON-EDIT] + mappath = "_maps/_mod_celadon/shuttles/[category]/[file_name].dmm" // [CELADON-EDIT] - CELADON_CONFIGS_MAPS - Меняем сабшатлы на наши . = ..() /datum/map_template/shuttle/preload_size(path, cache) @@ -436,7 +432,7 @@ name_categories = list("GENERAL", "SPACE") /datum/map_template/shuttle/subshuttles/nail - file_name = "pirate_nail" + file_name = "pgf_nail" name = "Nail-class Boarding Vessel" faction = /datum/faction/pgf token_icon_state = "ship_tiny_generic" diff --git a/code/datums/spawners_menu.dm b/code/datums/spawners_menu.dm index fed3deb2ee8b..f68eec79a3cf 100644 --- a/code/datums/spawners_menu.dm +++ b/code/datums/spawners_menu.dm @@ -54,7 +54,7 @@ if(!spawnerlist.len) return var/obj/effect/mob_spawn/MS = pick(spawnerlist) - if(!istype(MS) || !(MS in GLOB.poi_list)) // [CELADON-EDIT] - if(!istype(MS) || !(MS in SSpoints_of_interest.other_points_of_interest)) + if(!istype(MS) || !(MS in GLOB.poi_list)) // [CELADON-EDIT] return switch(action) if("jump") diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index c9b760969792..c0db790f289a 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -313,24 +313,34 @@ id = "neck_slice" status_type = STATUS_EFFECT_UNIQUE alert_type = null - duration = -1 + duration = STATUS_EFFECT_PERMANENT -/datum/status_effect/neck_slice/tick() - var/mob/living/carbon/human/H = owner - var/obj/item/bodypart/throat = H.get_bodypart(BODY_ZONE_HEAD) - if(H.stat == DEAD || !throat) - H.remove_status_effect(/datum/status_effect/neck_slice) +/datum/status_effect/neck_slice/on_apply() + if(!ishuman(owner)) + return FALSE + if(!owner.get_bodypart(BODY_ZONE_HEAD)) + return FALSE + return TRUE + +/datum/status_effect/neck_slice/tick(seconds_between_ticks) + var/obj/item/bodypart/throat = owner.get_bodypart(BODY_ZONE_HEAD) + if(owner.stat == DEAD || !throat) // they can lose their head while it's going. + qdel(src) + return var/still_bleeding = FALSE - for(var/datum/wound/W as anything in throat.wounds) - if(W.wound_type == WOUND_SLASH && W.severity > WOUND_SEVERITY_MODERATE) + for(var/datum/wound/bleeding_thing as anything in throat.wounds) + var/datum/wound_pregen_data/pregen_data = SSwounds.pregen_data[bleeding_thing.type] + + if(pregen_data.wounding_types_valid(throat, list(WOUND_SLASH)) && bleeding_thing.severity > WOUND_SEVERITY_MODERATE && bleeding_thing.blood_flow > 0) still_bleeding = TRUE break if(!still_bleeding) - H.remove_status_effect(/datum/status_effect/neck_slice) + qdel(src) + return if(prob(10)) - H.emote(pick("gasp", "gag", "choke")) + owner.emote(pick("gasp", "gag", "choke")) /mob/living/proc/apply_necropolis_curse(set_curse) var/datum/status_effect/necropolis_curse/C = has_status_effect(STATUS_EFFECT_NECROPOLIS_CURSE) diff --git a/code/datums/status_effects/debuffs/fire_stacks.dm b/code/datums/status_effects/debuffs/fire_stacks.dm index 865714be156c..6da41ca1b2c0 100644 --- a/code/datums/status_effects/debuffs/fire_stacks.dm +++ b/code/datums/status_effects/debuffs/fire_stacks.dm @@ -180,28 +180,20 @@ if(!no_protection) if(thermal_protection >= FIRE_IMMUNITY_MAX_TEMP_PROTECT) + SEND_SIGNAL(victim, COMSIG_CLEAR_MOOD_EVENT, "on_fire") return if(thermal_protection >= FIRE_SUIT_MAX_TEMP_PROTECT) + SEND_SIGNAL(victim, COMSIG_ADD_MOOD_EVENT, "on_fire", /datum/mood_event/on_fire) victim.adjust_bodytemperature(5.5 * seconds_between_ticks) return victim.adjust_bodytemperature((victim.dna.species.bodytemp_heating_rate_max + (stacks * 12)) * 0.5 * seconds_between_ticks) - victim.apply_damage((stacks * 0.5), FIRE, blocked = victim.run_armor_check(null, "fire", armour_penetration=stacks*5, silent=TRUE), spread_damage = TRUE) - if(SPT_PROB(20, seconds_between_ticks)) - var/obj/item/bodypart/it_burns = victim.get_bodypart(pick(BODY_ZONE_L_ARM,BODY_ZONE_L_LEG, BODY_ZONE_R_ARM, BODY_ZONE_R_LEG, BODY_ZONE_CHEST, BODY_ZONE_HEAD)) - if(it_burns) - var/datum/wound/burn_injury - switch(stacks) - if(1 to 3) - EMPTY_BLOCK_GUARD - if(3 to 7) - burn_injury = new /datum/wound/burn/moderate - if(7 to 14) - burn_injury = new /datum/wound/burn/severe - if(14 to 20) - burn_injury = new /datum/wound/burn/critical - if(burn_injury) - burn_injury.apply_wound(it_burns) + if(!victim.apply_damage((stacks * 0.5), BURN, blocked = victim.run_armor_check(null, FIRE, armour_penetration=stacks*5, silent=TRUE), spread_damage = TRUE)) + return + if(SPT_PROB(50, seconds_between_ticks)) + var/obj/item/bodypart/it_burns = victim.get_random_bodypart() + if(it_burns) // apply_damage doesn't cause wounds without a selected bodypart, so we do this manually here + it_burns.wound_roll(0, stacks * min(victim.bodytemperature / FIRE_MINIMUM_TEMPERATURE_TO_EXIST, 2), no_dismember = TRUE) SEND_SIGNAL(victim, COMSIG_ADD_MOOD_EVENT, "on_fire", /datum/mood_event/on_fire) /** diff --git a/code/datums/status_effects/wound_effects.dm b/code/datums/status_effects/wound_effects.dm index 47e43ffc235f..4455424202d8 100644 --- a/code/datums/status_effects/wound_effects.dm +++ b/code/datums/status_effects/wound_effects.dm @@ -11,21 +11,39 @@ /datum/status_effect/determined/on_apply() . = ..() - owner.visible_message( - span_danger("[owner]'s body tenses up noticeably, gritting against [owner.p_their()] pain!"), - span_notice("Your senses sharpen as your body tenses up from the wounds you've sustained!"), - vision_distance = COMBAT_MESSAGE_RANGE, - ) + if(owner.mob_biotypes & MOB_ROBOTIC) + owner.visible_message( + span_danger("[owner]'s cooling fans spin up far louder than usual."), + span_notice("Acceptable damage threshold exceeded. Emergency self-preservation protocol initiated."), + vision_distance = COMBAT_MESSAGE_RANGE, + ) + else + owner.visible_message( + span_danger("[owner]'s body tenses up noticeably, gritting against [owner.p_their()] pain!"), + span_notice("Your senses sharpen as your body tenses up from the wounds you've sustained!"), + vision_distance = COMBAT_MESSAGE_RANGE, + ) if(ishuman(owner)) var/mob/living/carbon/human/human_owner = owner human_owner.physiology.bleed_mod *= WOUND_DETERMINATION_BLEED_MOD /datum/status_effect/determined/on_remove() - owner.visible_message( - span_danger("[owner]'s body slackens noticeably!"), - span_warning("Your adrenaline rush dies off, and the pain from your wounds come aching back in..."), - vision_distance = COMBAT_MESSAGE_RANGE, - ) + if(owner.mob_biotypes & MOB_ROBOTIC) + var/mob/living/carbon/carbon_owner = owner + if(!iscarbon(owner)) + stack_trace("Determination status effect applied to non-carbon [owner] of type [owner.type]") + carbon_owner = null + owner.visible_message( + span_danger("[owner]'s cooling fans suddenly quiet down."), + span_notice("Emergency self-preservation protocol concluded. [rand(2, 100 * LAZYLEN(carbon_owner?.all_wounds))] new errors to report."), + vision_distance = COMBAT_MESSAGE_RANGE, + ) + else + owner.visible_message( + span_danger("[owner]'s body slackens noticeably!"), + span_warning("Your adrenaline rush dies off, and the pain from your wounds come aching back in..."), + vision_distance = COMBAT_MESSAGE_RANGE, + ) if(ishuman(owner)) var/mob/living/carbon/human/human_owner = owner human_owner.physiology.bleed_mod /= WOUND_DETERMINATION_BLEED_MOD @@ -144,9 +162,9 @@ alert_type = NONE /datum/status_effect/wound/on_creation(mob/living/new_owner, incoming_wound) - . = ..() linked_wound = incoming_wound linked_limb = linked_wound.limb + return ..() /datum/status_effect/wound/on_remove() linked_wound = null @@ -166,67 +184,68 @@ if(W == linked_wound) qdel(src) -// bones -/datum/status_effect/wound/blunt +/datum/status_effect/wound/nextmove_modifier() + var/mob/living/carbon/status_owner = owner + + if(status_owner.get_active_hand() == linked_limb) + return linked_wound.get_action_delay_mult() + + return ..() -/datum/status_effect/wound/blunt/on_apply() +// bones +/datum/status_effect/wound/blunt/bone +/* +/datum/status_effect/wound/blunt/bone/on_apply() . = ..() - RegisterSignal(owner, COMSIG_MOB_SWAP_HANDS, PROC_REF(on_swap_hands)) - on_swap_hands() + if(.) + RegisterSignal(owner, COMSIG_MOB_SWAP_HANDS, PROC_REF(on_swap_hands)) + on_swap_hands() -/datum/status_effect/wound/blunt/on_remove() +/datum/status_effect/wound/blunt/bone/on_remove() . = ..() UnregisterSignal(owner, COMSIG_MOB_SWAP_HANDS) var/mob/living/carbon/wound_owner = owner - wound_owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/blunt_wound) + wound_owner.remove_actionspeed_modifier(/datum/actionspeed_modifier/status_effect/blunt_wound) -/datum/status_effect/wound/blunt/proc/on_swap_hands() +/datum/status_effect/wound/blunt/bone/proc/on_swap_hands() SIGNAL_HANDLER var/mob/living/carbon/wound_owner = owner if(wound_owner.get_active_hand() == linked_limb) - wound_owner.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/blunt_wound, (linked_wound.interaction_efficiency_penalty - 1)) + wound_owner.add_actionspeed_modifier(/datum/actionspeed_modifier/status_effect/blunt_wound, (linked_wound.interaction_efficiency_penalty - 1)) else - wound_owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/blunt_wound) - -/datum/status_effect/wound/blunt/nextmove_modifier() - var/mob/living/carbon/C = owner - - if(C.get_active_hand() == linked_limb) - return linked_wound.interaction_efficiency_penalty - - return 1 - + wound_owner.remove_actionspeed_modifier(/datum/actionspeed_modifier/status_effect/blunt_wound) +*/ // blunt -/datum/status_effect/wound/blunt/moderate +/datum/status_effect/wound/blunt/bone/moderate id = "disjoint" -/datum/status_effect/wound/blunt/severe +/datum/status_effect/wound/blunt/bone/severe id = "hairline" -/datum/status_effect/wound/blunt/critical +/datum/status_effect/wound/blunt/bone/critical id = "compound" // slash -/datum/status_effect/wound/slash/moderate +/datum/status_effect/wound/slash/flesh/moderate id = "abrasion" -/datum/status_effect/wound/slash/severe +/datum/status_effect/wound/slash/flesh/severe id = "laceration" -/datum/status_effect/wound/slash/critical +/datum/status_effect/wound/slash/flesh/critical id = "avulsion" // pierce -/datum/status_effect/wound/pierce/moderate +/datum/status_effect/wound/pierce/bleed/moderate id = "breakage" -/datum/status_effect/wound/pierce/severe +/datum/status_effect/wound/pierce/bleed/severe id = "puncture" -/datum/status_effect/wound/pierce/critical +/datum/status_effect/wound/pierce/bleed/critical id = "rupture" // burns -/datum/status_effect/wound/burn/moderate +/datum/status_effect/wound/burn/flesh/moderate id = "seconddeg" -/datum/status_effect/wound/burn/severe +/datum/status_effect/wound/burn/flesh/severe id = "thirddeg" -/datum/status_effect/wound/burn/critical +/datum/status_effect/wound/burn/flesh/critical id = "fourthdeg" // muscle diff --git a/code/datums/wounds/_wound_static_data.dm b/code/datums/wounds/_wound_static_data.dm new file mode 100644 index 000000000000..df5a146d1620 --- /dev/null +++ b/code/datums/wounds/_wound_static_data.dm @@ -0,0 +1,188 @@ +/// A singleton datum that holds pre-gen and static data about a wound. Each wound datum should have a corresponding wound_pregen_data. +/datum/wound_pregen_data + /// The typepath of the wound we will be handling and storing data of. NECESSARY IF THIS IS A NON-ABSTRACT TYPE! + var/datum/wound/wound_path_to_generate + + /// Will this be instantiated? + var/abstract = FALSE + + /// If true, our wound can be selected in ordinary wound rolling. If this is set to false, our wound can only be directly instantiated by use of specific typepath. + var/can_be_randomly_generated = TRUE + + /// A list of biostates a limb must have to receive our wound, in wounds.dm. + var/required_limb_biostate + /// If false, we will check if the limb has all of our required biostates instead of just any. + var/require_any_biostate = FALSE + + /// If false, we will iterate through wounds on a given limb, and if any match our type, we wont add our wound. + var/duplicates_allowed = FALSE + + /// If we require BIO_BLOODED, we will not add our wound if this is true and the limb cannot bleed. + var/ignore_cannot_bleed = TRUE // a lot of bleed wounds should still be applied for purposes of mangling flesh + + /// A list of bodyzones this is incompatible with. + var/list/excluded_zones = list() + + /// The types of attack that can generate this wound. E.g. WOUND_SLASH = A sharp attack can cause this, WOUND_BLUNT = an attack with no sharpness/an attack with sharpness against a limb with mangled exterior can cause this. + var/list/required_wounding_types + /// [required_wounding_types] but requires the associated anatomy to be mangled first. + var/list/mangled_wounding_types + /// If true, this wound can only be generated by all [required_wounding_types] at once, not just any. + var/match_all_wounding_types = FALSE + + /// The weight that will be used if, by the end of wound selection, there are multiple valid wounds. This will be inserted into pick_weight, so use integers. + var/weight = WOUND_DEFAULT_WEIGHT + + /// The minimum injury roll a attack must get to generate us. Affected by our wound's threshold_penalty and series_threshold_penalty, as well as the attack's wound_bonus. See check_wounding_mods(). + var/threshold_minimum + + /// The series of wounds this is in. See wounds.dm (the defines file) for a more detailed explanation - but tldr is that no 2 wounds of the same series can be on a limb. + var/wound_series + + /// If true, we will attempt to, during a random wound roll, overpower and remove other wound typepaths from the possible wounds list using [competition_mode] and [overpower_wounds_of_even_severity]. + var/compete_for_wounding = TRUE + /// The competition mode with which we will remove other wounds from a possible wound roll assuming [compete_for_wounding] is TRUE. See wounds.dm, the defines file, for more information on what these do. + var/competition_mode = WOUND_COMPETITION_OVERPOWER_LESSERS + /// If this and [compete_for_wounding] is true, we will remove wounds of an even severity to us during a random wound roll. + var/overpower_wounds_of_even_severity = FALSE + + +/datum/wound_pregen_data/New() + . = ..() + + if (!abstract) + if (required_limb_biostate == null) + stack_trace("required_limb_biostate null - please set it! occured on: [src.type]") + if (wound_path_to_generate == null) + stack_trace("wound_path_to_generate null - please set it! occured on: [src.type]") + +// this proc is the primary reason this datum exists - a singleton instance so we can always run this proc even without the wound existing +/** + * Args: + * * obj/item/bodypart/limb: The limb we are considering. + * * wound_type: The type of the "wound acquisition attempt". Example: A slashing attack cannot proc a blunt wound, so wound_type = WOUND_SLASH would + * fail if we expect WOUND_BLUNT. Defaults to the wound type we expect. + * * datum/wound/old_wound: If we would replace a wound, this would be said wound. Nullable. + * * random_roll = FALSE: If this is in the context of a random wound generation, and this wound wasn't specifically checked. + * + * Returns: + * FALSE if the limb cannot be wounded, if wound_type is not ours, if we have a higher severity wound already in our series, + * if we have a biotype mismatch, if the limb isnt in a viable zone, or if theres any duplicate wound types. + * TRUE otherwise. + */ +/datum/wound_pregen_data/proc/can_be_applied_to(obj/item/bodypart/limb, list/suggested_wounding_types = required_wounding_types, datum/wound/old_wound, random_roll = FALSE, duplicates_allowed = src.duplicates_allowed, care_about_existing_wounds = TRUE) + SHOULD_BE_PURE(TRUE) + + if(!istype(limb) || !limb.owner) + return FALSE + + if(random_roll && !can_be_randomly_generated) + return FALSE + + if(HAS_TRAIT(limb.owner, TRAIT_NEVER_WOUNDED) || (limb.owner.status_flags & GODMODE)) + return FALSE + + if(!wounding_types_valid(limb, suggested_wounding_types)) + return FALSE + + if(care_about_existing_wounds) + for(var/datum/wound/preexisting_wound as anything in limb.wounds) + var/datum/wound_pregen_data/pregen_data = SSwounds.pregen_data[preexisting_wound.type] + if(pregen_data.wound_series == wound_series) + if(preexisting_wound.severity >= wound_path_to_generate::severity) + return FALSE + + if(!ignore_cannot_bleed && ((required_limb_biostate & BIO_BLOODED) && !limb.can_bleed())) + return FALSE + + if(!biostate_valid(limb.biological_state)) + return FALSE + + if(limb.body_zone in excluded_zones) + return FALSE + + // we accept promotions and demotions, but no point in redundancy. This should have already been checked wherever the wound was rolled and applied for (see: bodypart damage code), but we do an extra check + // in case we ever directly add wounds + if(!duplicates_allowed) + for (var/datum/wound/preexisting_wound as anything in limb.wounds) + if (preexisting_wound.type == wound_path_to_generate && (preexisting_wound != old_wound)) + return FALSE + return TRUE + +/// Returns true if we have the given biostates, or any biostate in it if check_for_any is true. False otherwise. +/datum/wound_pregen_data/proc/biostate_valid(biostate) + if (require_any_biostate) + if (!(biostate & required_limb_biostate)) + return FALSE + else if (!((biostate & required_limb_biostate) == required_limb_biostate)) // check for all + return FALSE + + return TRUE + +/** + * A simple getter for [weight], with arguments supplied to allow custom behavior. + * + * Args: + * * obj/item/bodypart/limb: The limb we are contemplating being added to. Nullable. + * * list/wounding_types: The amount of damage for each wounding type. Nullable. + * * attack_direction: The direction of the attack that'd cause us. Nullable. + * * damage_source: The entity that would cause us. Nullable. + * + * Returns: + * Our weight. + */ +/datum/wound_pregen_data/proc/get_weight(obj/item/bodypart/limb, list/wounding_types, attack_direction, damage_source) + return weight + +/// Returns TRUE if we use WOUND_ALL, or we require all types and have all/if we require any and have any, FALSE otherwise. +/datum/wound_pregen_data/proc/wounding_types_valid(obj/item/bodypart/limb, list/suggested_wounding_types) + if (WOUND_ALL in required_wounding_types) + return TRUE + if (!length(suggested_wounding_types)) + return FALSE + + for(var/iter_wounding_type as anything in suggested_wounding_types) + if(!(iter_wounding_type in required_wounding_types)) + if(match_all_wounding_types) + return FALSE + else + if(!match_all_wounding_types) + return TRUE + + if(LAZYLEN(mangled_wounding_types)) + var/mangled_state = limb.get_mangled_state() + for(var/iter_mangled_type as anything in mangled_wounding_types) + if(mangled_state & mangled_wounding_types[iter_mangled_type]) + return TRUE + + return match_all_wounding_types // if we get here, we've matched everything + +/** + * A simple getter for [threshold_minimum], with arguments supplied to allow custom behavior. + * + * Args: + * * obj/item/bodypart/part: The limb we are contemplating being added to. + * * attack_direction: The direction of the attack that'd generate us. Nullable. + * * damage_source: The source of the damage that'd cause us. Nullable. + */ +/datum/wound_pregen_data/proc/get_threshold_for(obj/item/bodypart/part, attack_direction, damage_source) + return threshold_minimum + +/// Returns a new instance of our wound datum. +/datum/wound_pregen_data/proc/generate_instance(obj/item/bodypart/limb, ...) + RETURN_TYPE(/datum/wound) + + return new wound_path_to_generate + +/datum/wound_pregen_data/Destroy(force, ...) + var/error_message = "[src], a singleton wound pregen data instance, was destroyed! This should not happen!" + if (force) + error_message += " NOTE: This Destroy() was called with force == TRUE. This instance will be deleted and replaced with a new one." + stack_trace(error_message) + + if (!force) + return QDEL_HINT_LETMELIVE + + . = ..() + + SSwounds.pregen_data[wound_path_to_generate] = new src.type //recover diff --git a/code/datums/wounds/_wounds.dm b/code/datums/wounds/_wounds.dm index 88480101f5c0..5e35e6aab11f 100644 --- a/code/datums/wounds/_wounds.dm +++ b/code/datums/wounds/_wounds.dm @@ -13,6 +13,13 @@ deciding what specific wound will be applied. I'd like to have a few different types of wounds for at least some of the choices, but I'm just doing rough generals for now. Expect polishing */ +#define WOUND_CRITICAL_BLUNT_DISMEMBER_BONUS 15 + +// Applied into wounds when they're scanned with the wound analyzer, halves time to treat them manually. +#define TRAIT_WOUND_SCANNED "wound_scanned" +// I dunno lol +#define ANALYZER_TRAIT "analyzer_trait" + /datum/wound /// What it's named var/name = "Wound" @@ -29,25 +36,25 @@ var/occur_text = "" /// This sound will be played upon the wound being applied var/sound_effect + /// The volume of [sound_effect] + var/sound_volume = 70 - /// Either WOUND_SEVERITY_TRIVIAL, WOUND_SEVERITY_MODERATE, WOUND_SEVERITY_SEVERE, WOUND_SEVERITY_CRITICAL, WOUND_SEVERITY_LOSS - var/severity = WOUND_SEVERITY_MODERATE - /// The list of wounds it belongs in, WOUND_BLUNT, WOUND_SLASH, WOUND_BURN, WOUND_MUSCLE - var/wound_type + /// Either WOUND_SEVERITY_TRIVIAL, WOUND_SEVERITY_MODERATE, WOUND_SEVERITY_SEVERE, WOUND_SEVERITY_CRITICAL, WOUND_SEVERITY_LOSS. FALSE prevents it from rolling. + var/severity = FALSE - /// What body zones can we affect - var/list/viable_zones = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) + /// What body zones can we NOT affect + var/list/excluded_zones = list() /// Who owns the body part that we're wounding var/mob/living/carbon/victim = null - /// The bodypart we're parented to + /// The bodypart we're parented to. Not guaranteed to be non-null, especially after/during removal or if we haven't been applied var/obj/item/bodypart/limb = null /// Specific items such as bandages or sutures that can try directly treating this wound var/list/treatable_by /// Specific items such as bandages or sutures that can try directly treating this wound only if the user has the victim in an aggressive grab or higher var/list/treatable_by_grabbed - /// Tools with the specified tool flag will also be able to try directly treating this wound - var/treatable_tool + /// Any tools with any of the flags in this list will be usable to try directly treating this wound + var/list/treatable_tools /// How long it will take to treat this wound with a standard effective tool, assuming it doesn't need surgery var/base_treat_time = 3 SECONDS @@ -55,6 +62,8 @@ var/interaction_efficiency_penalty = 1 /// Incoming damage on this limb will be multiplied by this, to simulate tenderness and vulnerability (mostly burns). var/damage_mulitplier_penalty = 1 + /// The proportion of damage on this limb that cannot be healed until this wound is removed (0-1). + var/limb_integrity_penalty = 0 /// If set and this wound is applied to a leg, we take this many deciseconds extra per step on this leg var/limp_slowdown /// If this wound has a limp_slowdown and is applied to a leg, it has this chance to limp each step @@ -62,10 +71,10 @@ /// How much we're contributing to this limb's bleed_rate var/blood_flow - /// The minimum we need to roll on [/obj/item/bodypart/proc/check_wounding] to begin suffering this wound, see check_wounding_mods() for more - var/threshold_minimum /// How much having this wound will add to all future check_wounding() rolls on this limb, to allow progression to worse injuries with repeated damage var/threshold_penalty + /// How much having this wound will add to all future check_wounding() rolls on this limb, but only for wounds of its own series + var/series_threshold_penalty = 0 /// If we need to process each life tick var/processes = FALSE @@ -78,23 +87,25 @@ var/datum/status_effect/linked_status_effect /// If we're operating on this wound and it gets healed, we'll nix the surgery too var/datum/surgery/attached_surgery - /// if you're a lazy git and just throw them in cryo, the wound will go away after accumulating severity * 25 power - var/cryo_progress + /// if you're a lazy git and just throw them in cryo, the wound will go away after accumulating severity * [base_regen_progress_to_qdel] power + var/regen_progress + + /// The base amount of [regen_progress] required to have ourselves fully healed by cryo. Multiplied against severity. + var/base_regen_progress_to_qdel = 33 /// If we forced this wound through badmin smite, we won't count it towards the round totals var/from_smite + /// The biological state required for this wound to be applied + var/bio_state_required = BIO_BONE | BIO_FLESH /// What flags apply to this wound - var/wound_flags = (FLESH_WOUND | BONE_WOUND | ACCEPTS_GAUZE) + var/wound_flags = ACCEPTS_GAUZE /datum/wound/Destroy() - if(attached_surgery) - QDEL_NULL(attached_surgery) + QDEL_NULL(attached_surgery) // destroy can call remove_wound() and remove_wound() calls qdel, so we check to make sure there's anything to remove first - if(limb?.wounds && (src in limb.wounds)) + if(limb) remove_wound() - set_limb(null) - victim = null return ..() /** @@ -109,25 +120,11 @@ * * attack_direction: For bloodsplatters, if relevant */ /datum/wound/proc/apply_wound(obj/item/bodypart/L, silent = FALSE, datum/wound/old_wound = null, smited = FALSE, attack_direction = null) - if(!istype(L) || !L.owner || !(L.body_zone in viable_zones) || !IS_ORGANIC_LIMB(L) || HAS_TRAIT(L.owner, TRAIT_NEVER_WOUNDED)) + if(!can_be_applied_to(L, old_wound)) qdel(src) - return + return FALSE - if(ishuman(L.owner)) - var/mob/living/carbon/human/H = L.owner - if(((wound_flags & BONE_WOUND) && !(HAS_BONE in H.dna.species.species_traits)) || ((wound_flags & FLESH_WOUND) && !(HAS_FLESH in H.dna.species.species_traits))) - qdel(src) - return - - // we accept promotions and demotions, but no point in redundancy. This should have already been checked wherever the wound was rolled and applied for (see: bodypart damage code), but we do an extra check - // in case we ever directly add wounds - for(var/i in L.wounds) - var/datum/wound/preexisting_wound = i - if((preexisting_wound.type == type) && (preexisting_wound != old_wound)) - qdel(src) - return - - victim = L.owner + set_victim(L.owner) set_limb(L) LAZYADD(victim.all_wounds, src) LAZYADD(limb.wounds, src) @@ -152,7 +149,7 @@ var/msg = span_danger("[victim]'s [limb.name] [occur_text]!") var/vis_dist = COMBAT_MESSAGE_RANGE - if(severity != WOUND_SEVERITY_MODERATE) + if(severity > WOUND_SEVERITY_MODERATE) msg = "[msg]" vis_dist = DEFAULT_MESSAGE_RANGE @@ -162,27 +159,119 @@ vision_distance = vis_dist, ) if(sound_effect) - playsound(L.owner, sound_effect, 70 + 20 * severity, TRUE) + playsound(L.owner, sound_effect, sound_volume + (20 * severity), TRUE) wound_injury(old_wound, attack_direction = attack_direction) if(!demoted) second_wind() + return TRUE + +/// Returns TRUE if we can be applied to the limb. +/datum/wound/proc/can_be_applied_to(obj/item/bodypart/limb, datum/wound/old_wound) + var/datum/wound_pregen_data/pregen_data = SSwounds.pregen_data[type] + + // We assume we aren't being randomly applied - we have no reason to believe we are + // And, besides, if we were, you could just as easily check our pregen data rather than run this proc + // Generally speaking this proc is called in apply_wound, which is called when the caller is already confidant in its ability to be applied + return pregen_data.can_be_applied_to(limb, old_wound = old_wound) + +/// Returns the zones we can be applied to. +/datum/wound/proc/get_excluded_zones() + var/datum/wound_pregen_data/pregen_data = SSwounds.pregen_data[type] + + return pregen_data.excluded_zones + +/// Returns the biostate we require to be applied. +/datum/wound/proc/get_required_biostate() + var/datum/wound_pregen_data/pregen_data = SSwounds.pregen_data[type] + + return pregen_data.required_limb_biostate + +/datum/wound/proc/null_victim() + SIGNAL_HANDLER + set_victim(null) + +/// Setter for [victim]. Should completely transfer signals, attributes, etc. To the new victim - if there is any, as it can be null. +/datum/wound/proc/set_victim(new_victim) + if(victim) + UnregisterSignal(victim, COMSIG_QDELETING) + + remove_wound_from_victim() + victim = new_victim + if(victim) + RegisterSignal(victim, COMSIG_QDELETING, PROC_REF(null_victim)) + +/// Proc called to change the variable `limb` and react to the event. +/datum/wound/proc/set_limb(obj/item/bodypart/new_value, replaced = FALSE) + if(limb == new_value) + return FALSE //Limb can either be a reference to something or `null`. Returning the number variable makes it clear no change was made. + . = limb + if(limb) // if we're nulling limb, we're basically detaching from it, so we should remove ourselves in that case + UnregisterSignal(limb, COMSIG_QDELETING) + if(wound_flags & ACCEPTS_GAUZE) + UnregisterSignal(limb, list(COMSIG_BODYPART_GAUZED, COMSIG_BODYPART_GAUZE_DESTROYED)) + if(wound_flags & ACCEPTS_SPLINT) + UnregisterSignal(limb, list(COMSIG_BODYPART_SPLINTED, COMSIG_BODYPART_SPLINT_DESTROYED)) + LAZYREMOVE(limb.wounds, src) + limb.update_wounds(replaced) + if (disabling) + limb.remove_traits(list(TRAIT_PARALYSIS, TRAIT_DISABLED_BY_WOUND), REF(src)) + + limb = new_value + + // POST-CHANGE + + if (limb) + RegisterSignal(limb, COMSIG_QDELETING, PROC_REF(source_died)) + if(wound_flags & ACCEPTS_GAUZE) + RegisterSignals(limb, list(COMSIG_BODYPART_GAUZED, COMSIG_BODYPART_GAUZE_DESTROYED), PROC_REF(gauze_state_changed)) + if(wound_flags & ACCEPTS_SPLINT) + RegisterSignals(limb, list(COMSIG_BODYPART_SPLINTED, COMSIG_BODYPART_SPLINT_DESTROYED), PROC_REF(splint_state_changed)) + if (disabling) + limb.add_traits(list(TRAIT_PARALYSIS, TRAIT_DISABLED_BY_WOUND), REF(src)) + + if (victim) + start_limping_if_we_should() // the status effect already handles removing itself + + update_inefficiencies() + +/datum/wound/proc/start_limping_if_we_should() + if ((limb.body_zone == BODY_ZONE_L_LEG || limb.body_zone == BODY_ZONE_R_LEG) && limp_slowdown > 0 && limp_chance > 0) + victim.apply_status_effect(/datum/status_effect/limp) + +/// Deletes the wound if its attached limb is deleted. +/datum/wound/proc/source_died() + SIGNAL_HANDLER + qdel(src) + /// Remove the wound from whatever it's afflicting, and cleans up whateverstatus effects it had or modifiers it had on interaction times. ignore_limb is used for detachments where we only want to forget the victim /datum/wound/proc/remove_wound(ignore_limb, replaced = FALSE) //TODO: have better way to tell if we're getting removed without replacement (full heal) + var/old_victim = victim + var/old_limb = limb + set_disabling(FALSE) if(victim) - LAZYREMOVE(victim.all_wounds, src) - if(!victim.all_wounds) - victim.clear_alert("wound") - SEND_SIGNAL(victim, COMSIG_CARBON_LOSE_WOUND, src, limb) + remove_wound_from_victim() if(limb && !ignore_limb) - LAZYREMOVE(limb.wounds, src) - limb.update_wounds(replaced) + set_limb(null, replaced) // since we're removing limb's ref to us, we should do the same + // if you want to keep the ref, do it externally, theres no reason for us to remember it + + if (ismob(old_victim)) + var/mob/mob_victim = old_victim + SEND_SIGNAL(mob_victim, COMSIG_CARBON_POST_LOSE_WOUND, src, old_limb, ignore_limb, replaced) + +/datum/wound/proc/remove_wound_from_victim() + if(!victim) + return + LAZYREMOVE(victim.all_wounds, src) + if(!victim.all_wounds) + victim.clear_alert("wound") + SEND_SIGNAL(victim, COMSIG_CARBON_LOSE_WOUND, src, limb) /** * replace_wound() is used when you want to replace the current wound with a new wound, presumably of the same category, just of a different severity (either up or down counts) @@ -190,13 +279,13 @@ * This proc actually instantiates the new wound based off the specific type path passed, then returns the new instantiated wound datum. * * Arguments: - * * new_type - The TYPE PATH of the wound you want to replace this, like /datum/wound/slash/severe + * * new_wound - The wound instance you want to replace this * * smited - If this is a smite, we don't care about this wound for stat tracking purposes (not yet implemented) */ -/datum/wound/proc/replace_wound(new_type, smited = FALSE, attack_direction = attack_direction) - var/datum/wound/new_wound = new new_type - remove_wound(replaced=TRUE) - new_wound.apply_wound(limb, old_wound = src, smited = smited, attack_direction = attack_direction) +/datum/wound/proc/replace_wound(datum/wound/new_wound, smited = FALSE, attack_direction = attack_direction) + var/obj/item/bodypart/cached_limb = limb // remove_wound() nulls limb so we have to track it locally + remove_wound(replaced = new_wound) + new_wound.apply_wound(cached_limb, old_wound = src, smited = smited, attack_direction = attack_direction) . = new_wound qdel(src) @@ -204,21 +293,6 @@ /datum/wound/proc/wound_injury(datum/wound/old_wound = null, attack_direction = null) return -/// Proc called to change the variable `limb` and react to the event. -/datum/wound/proc/set_limb(new_value) - if(limb == new_value) - return FALSE //Limb can either be a reference to something or `null`. Returning the number variable makes it clear no change was made. - . = limb - limb = new_value - if(. && disabling) - var/obj/item/bodypart/old_limb = . - REMOVE_TRAIT(old_limb, TRAIT_PARALYSIS, REF(src)) - REMOVE_TRAIT(old_limb, TRAIT_DISABLED_BY_WOUND, REF(src)) - if(limb) - if(disabling) - ADD_TRAIT(limb, TRAIT_PARALYSIS, REF(src)) - ADD_TRAIT(limb, TRAIT_DISABLED_BY_WOUND, REF(src)) - /// Proc called to change the variable `disabling` and react to the event. /datum/wound/proc/set_disabling(new_value) if(disabling == new_value) @@ -235,6 +309,65 @@ if(limb?.can_be_disabled) limb.update_disabled() +/// Setter for [interaction_efficiency_penalty]. Updates the actionspeed of our actionspeed mod. +/datum/wound/proc/set_interaction_efficiency_penalty(new_value) + //var/should_update = (new_value != interaction_efficiency_penalty) + + interaction_efficiency_penalty = new_value + + /*if (should_update) + update_actionspeed_modifier()*/ + +/// Returns a "adjusted" interaction_efficiency_penalty that will be used for the actionspeed mod. +/datum/wound/proc/get_effective_actionspeed_modifier() + return interaction_efficiency_penalty - 1 + +/// Returns the decisecond multiplier of any click interactions, assuming our limb is being used. +/datum/wound/proc/get_action_delay_mult() + SHOULD_BE_PURE(TRUE) + + return interaction_efficiency_penalty + +/// Returns the decisecond increment of any click interactions, assuming our limb is being used. +/datum/wound/proc/get_action_delay_increment() + SHOULD_BE_PURE(TRUE) + + return 0 + +/// Signal proc for if gauze has been applied or removed from our limb. +/datum/wound/proc/gauze_state_changed() + SIGNAL_HANDLER + +/// Signal proc for if a splint has been applied or removed from our limb. +/datum/wound/proc/splint_state_changed() + SIGNAL_HANDLER + + if (wound_flags & ACCEPTS_SPLINT) + update_inefficiencies() + +/// Updates our limping and interaction penalties in accordance with our gauze. +/datum/wound/proc/update_inefficiencies() + if (wound_flags & ACCEPTS_SPLINT) + if(limb.body_zone in list(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) + if(limb.current_splint?.splint_factor) + limp_slowdown = initial(limp_slowdown) * limb.current_splint.splint_factor + limp_chance = initial(limp_chance) * limb.current_splint.splint_factor + else + limp_slowdown = initial(limp_slowdown) + limp_chance = initial(limp_chance) + else if(limb.body_zone in list(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) + if(limb.current_splint?.splint_factor) + set_interaction_efficiency_penalty(1 + ((get_effective_actionspeed_modifier()) * limb.current_splint.splint_factor)) + else + set_interaction_efficiency_penalty(initial(interaction_efficiency_penalty)) + + if(initial(disabling)) + set_disabling(!limb.current_splint) + + limb.update_wounds() + + start_limping_if_we_should() + /// Additional beneficial effects when the wound is gained, in case you want to give a temporary boost to allow the victim to try an escape or last stand /datum/wound/proc/second_wind() switch(severity) @@ -268,37 +401,39 @@ if(QDELETED(I) || limb.body_zone != user.zone_selected || (I.force && user.a_intent != INTENT_HELP)) return FALSE - var/allowed = FALSE - - // check if we have a valid treatable tool - if(I.tool_behaviour == treatable_tool) - allowed = TRUE - else if(treatable_tool == TOOL_CAUTERY && I.get_temperature() && user == victim) // allow improvised cauterization on yourself without an aggro grab - allowed = TRUE - // failing that, see if we're aggro grabbing them and if we have an item that works for aggro grabs only - else if(user.pulling == victim && user.grab_state >= GRAB_AGGRESSIVE && check_grab_treatments(I, user)) - allowed = TRUE - // failing THAT, we check if we have a generally allowed item - else - for(var/allowed_type in treatable_by) - if(istype(I, allowed_type)) - allowed = TRUE - break - - // if none of those apply, we return false to avoid interrupting - if(!allowed) + if(!item_can_treat(I, user)) return FALSE + // now that we've determined we have a valid attempt at treating, we can stomp on their dreams if we're already interacting with the patient or if their part is obscured + if(DOING_INTERACTION_WITH_TARGET(user, victim)) + to_chat(user, span_warning("You're already interacting with [victim]!")) + return TRUE + // next we check if the bodypart in actually accessible (not under thick clothing). We skip the species trait check since skellies // & such may need to use bone gel but may be wearing a space suit for..... whatever reason a skeleton would wear a space suit for if(ishuman(victim)) var/mob/living/carbon/human/victim_human = victim - if(!victim_human.can_inject(user, injection_flags = INJECT_CHECK_IGNORE_SPECIES)) + if(!victim_human.try_inject(user, injection_flags = INJECT_CHECK_IGNORE_SPECIES | INJECT_TRY_SHOW_ERROR_MESSAGE)) return TRUE // lastly, treat them - treat(I, user) - return TRUE + return treat(I, user) // we allow treat to return a value so it can control if the item does its normal interaction or not + +/// Returns TRUE if the item can be used to treat our wounds. Hooks into treat() - only things that return TRUE here may be used there. +/datum/wound/proc/item_can_treat(obj/item/potential_treater, mob/user) + // check if we have a valid treatable tool + if(potential_treater.tool_behaviour in treatable_tools) + return TRUE + if((TOOL_CAUTERY in treatable_tools) && potential_treater.get_temperature() && user == victim) // allow improvised cauterization on yourself without an aggro grab + return TRUE + // failing that, see if we're aggro grabbing them and if we have an item that works for aggro grabs only + if(user.pulling == victim && user.grab_state >= GRAB_AGGRESSIVE && check_grab_treatments(potential_treater, user)) + return TRUE + // failing THAT, we check if we have a generally allowed item + for(var/allowed_type in treatable_by) + if(istype(potential_treater, allowed_type)) + return TRUE + return FALSE /// Return TRUE if we have an item that can only be used while aggro grabbed (unhanded aggro grab treatments go in [/datum/wound/proc/try_handling]). Treatment is still is handled in [/datum/wound/proc/treat] /datum/wound/proc/check_grab_treatments(obj/item/I, mob/user) @@ -321,15 +456,25 @@ return (!QDELETED(src) && limb) /// When our parent bodypart is hurt -/datum/wound/proc/receive_damage(wounding_type, wounding_dmg, wound_bonus, attack_direction) +/datum/wound/proc/receive_damage(list/wounding_types, total_wound_dmg, wound_bonus, attack_direction, damage_source) return /// Called from cryoxadone and pyroxadone when they're proc'ing. Wounds will slowly be fixed separately from other methods when these are in effect. crappy name but eh /datum/wound/proc/on_xadone(power) - cryo_progress += power - if(cryo_progress > 33 * severity) + regen_progress += power + return handle_regen_progress() + +/// Does various actions based on [regen_progress]. By default, qdeletes the wound past a certain threshold. +/datum/wound/proc/handle_regen_progress() + if(regen_progress > get_regen_progress_to_qdel()) qdel(src) +/// Returns the amount of [regen_progress] we need to be qdeleted. +/datum/wound/proc/get_regen_progress_to_qdel() + SHOULD_BE_PURE(TRUE) + + return base_regen_progress_to_qdel * severity + /// When synthflesh is applied to the victim, we call this. No sense in setting up an entire chem reaction system for wounds when we only care for a few chems. Probably will change in the future /datum/wound/proc/on_synthflesh(power) return @@ -377,8 +522,59 @@ * * mob/user: The user examining the wound's owner, if that matters */ /datum/wound/proc/get_examine_description(mob/user) - . = "[victim.p_their(TRUE)] [limb.name] [examine_desc]" - . = severity <= WOUND_SEVERITY_MODERATE ? "[.]." : "[.]!" + var/desc + + if((wound_flags & ACCEPTS_SPLINT) && limb.current_splint) + desc = "[victim.p_their()] [limb.name] is [get_sling_condition()] fastened with a [limb.current_splint.name]" + else if ((wound_flags & ACCEPTS_GAUZE) && limb.current_gauze) + desc = "[victim.p_their()] [limb.name] is [get_gauze_condition()] fastened in a sling of [limb.current_gauze.name]" + else + desc = "[victim.p_their()] [limb.name] [examine_desc]" + + desc = modify_desc_before_span(desc, user) + + return get_desc_intensity(desc) + +/// A hook proc used to modify desc before it is spanned via [get_desc_intensity]. Useful for inserting spans yourself. +/datum/wound/proc/modify_desc_before_span(desc, mob/user) + return desc + +/datum/wound/proc/get_gauze_condition() + SHOULD_BE_PURE(TRUE) + if (!limb.current_gauze) + return null + + switch(limb.current_gauze.absorption_capacity) + if(0 to 1.25) + return "just barely" + if(1.25 to 2.75) + return "loosely" + if(2.75 to 4) + return "mostly" + if(4 to INFINITY) + return "tightly" + +/datum/wound/proc/get_sling_condition() + SHOULD_BE_PURE(TRUE) + if (!limb.current_splint) + return null + + switch(limb.current_splint.sling_condition) + if(0 to 1.25) + return "just barely" + if(1.25 to 2.75) + return "loosely" + if(2.75 to 4) + return "mostly" + if(4 to INFINITY) + return "tightly" + +/// Spans [desc] based on our severity. +/datum/wound/proc/get_desc_intensity(desc) + SHOULD_BE_PURE(TRUE) + if (severity > WOUND_SEVERITY_MODERATE) + return span_bold("[desc]!") + return "[desc]." /datum/wound/proc/get_scanner_description(mob/user) return "Type: [name]\nSeverity: [severity_text()]\nDescription: [desc]\nRecommended Treatment: [treat_text]" @@ -394,6 +590,14 @@ if(WOUND_SEVERITY_CRITICAL) return "Critical" +/// Returns TRUE if our limb is the head or chest, FALSE otherwise. +/// Essential in the sense of "we cannot live without it". +/datum/wound/proc/limb_essential() + var/obj/item/organ/brain/victim_brain = victim?.getorganslot(ORGAN_SLOT_BRAIN) + if(victim_brain && limb.body_zone == victim_brain.zone) // IPCs don't need their head to live + return TRUE + return (limb.body_zone == BODY_ZONE_CHEST) + /// Whether we should show an interactable topic in examines of the wound. href_list["wound_topic"] /datum/wound/proc/show_wound_topic(mob/user) return FALSE @@ -401,3 +605,21 @@ /// Gets the name of the wound with any interactable topic if possible /datum/wound/proc/get_topic_name(mob/user) return show_wound_topic(user) ? "[lowertext(name)]" : lowertext(name) + +/// Gets the flat percentage chance increment of a dismember occuring, if a dismember is attempted (requires mangled flesh and bone). returning 15 = +15%. +/datum/wound/proc/get_dismember_chance_bonus(existing_chance) + SHOULD_BE_PURE(TRUE) + + var/datum/wound_pregen_data/pregen_data = get_pregen_data() + if((WOUND_BLUNT in pregen_data.required_wounding_types) && severity >= WOUND_SEVERITY_CRITICAL) + return WOUND_CRITICAL_BLUNT_DISMEMBER_BONUS // we only require mangled bone (T2 blunt), but if there's a critical blunt, we'll add 15% more + +/// Returns our pregen data, which is practically guaranteed to exist, so this proc can safely be used raw. +/// In fact, since it's RETURN_TYPEd to wound_pregen_data, you can even directly access the variables without having to store the value of this proc in a typed variable. +/// Ex. get_pregen_data().wound_series +/datum/wound/proc/get_pregen_data() + RETURN_TYPE(/datum/wound_pregen_data) + + return SSwounds.pregen_data[type] + +#undef WOUND_CRITICAL_BLUNT_DISMEMBER_BONUS diff --git a/code/datums/wounds/blunt.dm b/code/datums/wounds/blunt.dm new file mode 100644 index 000000000000..219b7dd8805c --- /dev/null +++ b/code/datums/wounds/blunt.dm @@ -0,0 +1,3 @@ +/datum/wound/blunt + name = "Blunt Wound" + sound_effect = 'sound/effects/wounds/crack1.ogg' diff --git a/code/datums/wounds/bones.dm b/code/datums/wounds/bones.dm index 14b3ac2ffdb5..efcc402ac2d5 100644 --- a/code/datums/wounds/bones.dm +++ b/code/datums/wounds/bones.dm @@ -2,11 +2,17 @@ Blunt/Bone wounds */ -/datum/wound/blunt +/datum/wound_pregen_data/bone + abstract = TRUE + required_limb_biostate = BIO_BONE + + required_wounding_types = list(WOUND_BLUNT) + + wound_series = WOUND_SERIES_BONE_BLUNT_BASIC + +/datum/wound/blunt/bone name = "Blunt (Bone) Wound" - sound_effect = 'sound/effects/wounds/crack1.ogg' - wound_type = WOUND_BLUNT - wound_flags = (BONE_WOUND | ACCEPTS_SPLINT) + wound_flags = ACCEPTS_SPLINT ///Have we been bone gel'd? var/gelled @@ -30,16 +36,12 @@ /* Overwriting of base procs */ -/datum/wound/blunt/wound_injury(datum/wound/old_wound = null, attack_direction = null) - // hook into gaining/losing gauze so crit bone wounds can re-enable/disable depending if they're slung or not - RegisterSignals(limb, list(COMSIG_BODYPART_SPLINTED, COMSIG_BODYPART_SPLINT_DESTROYED), PROC_REF(update_inefficiencies)) - +/datum/wound/blunt/bone/wound_injury(datum/wound/old_wound = null, attack_direction = null) if(limb.body_zone == BODY_ZONE_HEAD && brain_trauma_group) processes = TRUE active_trauma = victim.gain_trauma_type(brain_trauma_group, TRAUMA_RESILIENCE_WOUND) next_trauma_cycle = world.time + (rand(100 - WOUND_BONE_HEAD_TIME_VARIANCE, 100 + WOUND_BONE_HEAD_TIME_VARIANCE) * 0.01 * trauma_cycle_cooldown) - RegisterSignal(victim, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, PROC_REF(attack_with_hurt_hand)) if(limb.held_index && victim.get_item_for_held_index(limb.held_index) && (disabling || prob(30 * severity))) var/obj/item/I = victim.get_item_for_held_index(limb.held_index) if(istype(I, /obj/item/offhand)) @@ -53,19 +55,27 @@ ) update_inefficiencies() + return ..() + +/datum/wound/blunt/bone/set_victim(new_victim) + if(victim) + UnregisterSignal(victim, COMSIG_HUMAN_EARLY_UNARMED_ATTACK) + if(new_victim) + RegisterSignal(new_victim, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, PROC_REF(attack_with_hurt_hand)) + return ..() -/datum/wound/blunt/remove_wound(ignore_limb, replaced) +/datum/wound/blunt/bone/remove_wound(ignore_limb, replaced) limp_slowdown = 0 limp_chance = 0 QDEL_NULL(active_trauma) - if(limb) - UnregisterSignal(limb, list(COMSIG_BODYPART_GAUZED, COMSIG_BODYPART_GAUZE_DESTROYED)) - if(victim) - UnregisterSignal(victim, COMSIG_HUMAN_EARLY_UNARMED_ATTACK) return ..() -/datum/wound/blunt/handle_process(delta_time, times_fired) +/datum/wound/blunt/bone/handle_process(delta_time, times_fired) . = ..() + + if(!victim || IS_IN_STASIS(victim)) + return + if(limb.body_zone == BODY_ZONE_HEAD && brain_trauma_group && world.time > next_trauma_cycle) if(active_trauma) QDEL_NULL(active_trauma) @@ -73,8 +83,7 @@ active_trauma = victim.gain_trauma_type(brain_trauma_group, TRAUMA_RESILIENCE_WOUND) next_trauma_cycle = world.time + (rand(100-WOUND_BONE_HEAD_TIME_VARIANCE, 100+WOUND_BONE_HEAD_TIME_VARIANCE) * 0.01 * trauma_cycle_cooldown) - var/is_bone_creature = victim.get_biological_state() == BIO_JUST_BONE - if(!gelled || (!taped && !is_bone_creature)) + if(!gelled || (!taped && limb.biological_state != BIO_BONE)) return regen_ticks_current++ @@ -92,7 +101,7 @@ remove_wound() /// If we're a human who's punching something with a broken arm, we might hurt ourselves doing so -/datum/wound/blunt/proc/attack_with_hurt_hand(mob/M, atom/target, proximity) +/datum/wound/blunt/bone/proc/attack_with_hurt_hand(mob/M, atom/target, proximity) SIGNAL_HANDLER if(victim.get_active_hand() != limb || victim.a_intent == INTENT_HELP || !ismob(target) || severity <= WOUND_SEVERITY_MODERATE) @@ -117,16 +126,16 @@ return COMPONENT_NO_ATTACK_HAND -/datum/wound/blunt/receive_damage(wounding_type, wounding_dmg, wound_bonus) - if(!victim || wounding_dmg < WOUND_MINIMUM_DAMAGE) +/datum/wound/blunt/bone/receive_damage(list/wounding_types, total_wound_dmg, wound_bonus) + if(!victim || total_wound_dmg < WOUND_MINIMUM_DAMAGE) return if(ishuman(victim)) var/mob/living/carbon/human/human_victim = victim if(NOBLOOD in human_victim.dna?.species.species_traits) return - if(limb.body_zone == BODY_ZONE_CHEST && victim.blood_volume && prob(internal_bleeding_chance + wounding_dmg)) - var/blood_bled = rand(1, wounding_dmg * (severity == WOUND_SEVERITY_CRITICAL ? 2 : 1.5)) // 12 brute toolbox can cause up to 18/24 bleeding with a severe/critical chest wound + if(limb.body_zone == BODY_ZONE_CHEST && victim.blood_volume && prob(internal_bleeding_chance + total_wound_dmg)) + var/blood_bled = rand(1, total_wound_dmg * (severity == WOUND_SEVERITY_CRITICAL ? 2 : 1.5)) // 12 brute toolbox can cause up to 18/24 bleeding with a severe/critical chest wound switch(blood_bled) if(1 to 6) victim.bleed(blood_bled, TRUE) @@ -155,97 +164,65 @@ new /obj/effect/temp_visual/dir_setting/bloodsplatter(victim.loc, victim.dir) victim.add_splatter_floor(get_step(victim.loc, victim.dir)) - -/datum/wound/blunt/get_examine_description(mob/user) - if(!limb.current_splint && !gelled && !taped) - return ..() - - var/list/msg = list() - if(!limb.current_splint) - msg += "[victim.p_their(TRUE)] [limb.name] [examine_desc]" - else - var/sling_condition = "" - // how much life we have left in these bandages - switch(limb.current_splint.sling_condition) - if(0 to 1.25) - sling_condition = "just barely" - if(1.25 to 2.75) - sling_condition = "loosely" - if(2.75 to 4) - sling_condition = "mostly" - if(4 to INFINITY) - sling_condition = "tightly" - - msg += "[victim.p_their(TRUE)] [limb.name] is [sling_condition] fastened with a [limb.current_splint.name]" +/datum/wound/blunt/bone/modify_desc_before_span(desc) + . = ..() if(taped) - msg += ", and appears to be reforming itself under some surgical tape!" + . += ", [span_notice("and appears to be reforming itself under some surgical tape!")]" else if(gelled) - msg += ", with fizzing flecks of blue bone gel sparking off the bone!" - else - msg += "!" - return "[msg.Join()]" + . += ", [span_notice("with fizzing flecks of blue bone gel sparking off the bone!")]" /* - New common procs for /datum/wound/blunt/ + New common procs for /datum/wound/blunt/bone/ */ -/datum/wound/blunt/proc/update_inefficiencies() - SIGNAL_HANDLER - - if(limb.body_zone in list(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) - if(limb.current_splint?.splint_factor) - limp_slowdown = initial(limp_slowdown) * limb.current_splint.splint_factor - limp_chance = initial(limp_chance) * limb.current_splint.splint_factor - else - limp_slowdown = initial(limp_slowdown) - limp_chance = initial(limp_chance) - victim.apply_status_effect(STATUS_EFFECT_LIMP) - - else if(limb.body_zone in list(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - if(limb.current_splint?.splint_factor) - interaction_efficiency_penalty = 1 + ((interaction_efficiency_penalty - 1) * limb.current_splint.splint_factor) - else - interaction_efficiency_penalty = interaction_efficiency_penalty - interaction_efficiency_penalty = initial(interaction_efficiency_penalty) - - if(initial(disabling)) - if(limb.current_splint && limb.current_splint.helps_disabled) - set_disabling(FALSE) - else - set_disabling(TRUE) - - limb.update_wounds() - /// Joint Dislocation (Moderate Blunt) -/datum/wound/blunt/moderate +/datum/wound/blunt/bone/moderate name = "Joint Dislocation" - desc = "Patient's bone has been unset from socket, causing pain and reduced motor function." - treat_text = "Recommended application of bonesetter to affected limb, though manual relocation by applying an aggressive grab to the patient and helpfully interacting with afflicted limb may suffice." + desc = "Patient's limb has been unset from socket, causing pain and reduced motor function." + treat_text = "Recommended application of bonesetter or wrench to affected limb, though manual relocation by applying an aggressive grab to the patient and helpfully interacting with afflicted limb may suffice." examine_desc = "is awkwardly janked out of place" occur_text = "janks violently and becomes unseated" severity = WOUND_SEVERITY_MODERATE - viable_zones = list(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) + wound_flags = ACCEPTS_SPLINT | PLATING_DAMAGE + excluded_zones = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST) interaction_efficiency_penalty = 1.2 limp_slowdown = 2.25 limp_chance = 50 - threshold_minimum = 35 threshold_penalty = 15 - treatable_tool = TOOL_BONESET - wound_flags = (BONE_WOUND) - status_effect_type = /datum/status_effect/wound/blunt/moderate + treatable_tools = list(TOOL_BONESET, TOOL_WRENCH) + wound_flags = NONE + status_effect_type = /datum/status_effect/wound/blunt/bone/moderate + +/datum/wound_pregen_data/bone/dislocate + abstract = FALSE + + wound_path_to_generate = /datum/wound/blunt/bone/moderate + + required_limb_biostate = BIO_JOINTED + + threshold_minimum = 35 + +/datum/wound_pregen_data/bone/dislocate/get_threshold_for(obj/item/bodypart/part, attack_direction, damage_source) + if(part.biological_state & BIO_METAL) + return threshold_minimum * 2 + return ..() -/datum/wound/blunt/moderate/Destroy() +/datum/wound/blunt/bone/moderate/Destroy() if(victim) UnregisterSignal(victim, COMSIG_LIVING_DOORCRUSHED) return ..() -/datum/wound/blunt/moderate/wound_injury(datum/wound/old_wound, attack_direction = null) - . = ..() - RegisterSignal(victim, COMSIG_LIVING_DOORCRUSHED, PROC_REF(door_crush)) +/datum/wound/blunt/bone/moderate/set_victim(new_victim) + if(victim) + UnregisterSignal(victim, COMSIG_LIVING_DOORCRUSHED) + if(new_victim) + RegisterSignal(new_victim, COMSIG_LIVING_DOORCRUSHED, PROC_REF(door_crush)) + + return ..() /// Getting smushed in an airlock/firelock is a last-ditch attempt to try relocating your limb -/datum/wound/blunt/moderate/proc/door_crush() +/datum/wound/blunt/bone/moderate/proc/door_crush() if(prob(40)) victim.visible_message( span_danger("[victim]'s dislocated [limb.name] pops back into place!"), @@ -253,7 +230,13 @@ ) remove_wound() -/datum/wound/blunt/moderate/try_handling(mob/living/carbon/human/user, modifiers) +/datum/wound/blunt/bone/moderate/treat(obj/item/treatment, mob/user) + if((limb.biological_state & BIO_BONE) && treatment.tool_behaviour == TOOL_BONESET) + return boneset_limb(treatment, user) + if((limb.biological_state & BIO_METAL) && treatment.tool_behaviour == TOOL_WRENCH) + return wrench_limb(treatment, user) + +/datum/wound/blunt/bone/moderate/try_handling(mob/living/carbon/human/user, modifiers) if(user.pulling != victim || user.zone_selected != limb.body_zone || user.a_intent == INTENT_GRAB) return FALSE @@ -276,7 +259,7 @@ return TRUE /// If someone is snapping our dislocated joint back into place by hand with an aggro grab and help intent -/datum/wound/blunt/moderate/proc/chiropractice(mob/living/carbon/human/user) +/datum/wound/blunt/bone/moderate/proc/chiropractice(mob/living/carbon/human/user) var/time = base_treat_time if(!do_after(user, time, target=victim, extra_checks = CALLBACK(src, PROC_REF(still_exists)))) return @@ -302,7 +285,7 @@ chiropractice(user) /// If someone is snapping our dislocated joint into a fracture by hand with an aggro grab and harm or disarm intent -/datum/wound/blunt/moderate/proc/malpractice(mob/living/carbon/human/user) +/datum/wound/blunt/bone/moderate/proc/malpractice(mob/living/carbon/human/user) var/time = base_treat_time if(!do_after(user, time, target=victim, extra_checks = CALLBACK(src, PROC_REF(still_exists)))) @@ -327,20 +310,20 @@ limb.receive_damage(brute = 10, wound_bonus = 10) malpractice(user) -/datum/wound/blunt/moderate/treat(obj/item/I, mob/user) +/datum/wound/blunt/bone/moderate/proc/boneset_limb(obj/item/treatment, mob/user) if(victim == user) victim.visible_message( - span_danger("[user] begins resetting [victim.p_their()] [limb.name] with [I]."), - span_warning("You begin resetting your [limb.name] with [I]..."), + span_danger("[user] begins resetting [victim.p_their()] [limb.name] with [treatment]."), + span_warning("You begin resetting your [limb.name] with [treatment]..."), ) else user.visible_message( - span_danger("[user] begins resetting [victim]'s [limb.name] with [I]."), - span_notice("You begin resetting [victim]'s [limb.name] with [I]..."), + span_danger("[user] begins resetting [victim]'s [limb.name] with [treatment]."), + span_notice("You begin resetting [victim]'s [limb.name] with [treatment]..."), ) if(!do_after(user, base_treat_time * (user == victim ? 1.5 : 1), target = victim, extra_checks = CALLBACK(src, PROC_REF(still_exists)))) - return + return TRUE if(victim == user) limb.receive_damage(brute = 5, wound_bonus = CANT_WOUND) @@ -358,11 +341,28 @@ to_chat(victim, span_userdanger("[user] resets your [limb.name]!")) qdel(src) + return TRUE + +/datum/wound/blunt/bone/moderate/proc/wrench_limb(obj/item/wrench, mob/user) + if(!victim) + return FALSE + victim.visible_message( + span_notice("[user] starts tightening the bolts on [victim]'s [limb.name]..."), + span_notice("[user] starts tightening the bolts on your [limb.name].") + ) + if(!wrench.use_tool(victim, user, 3 SECONDS, volume = 50)) + return TRUE + victim.visible_message( + span_notice("[user] wrenches [victim]'s [limb.name] back into place."), + span_notice("[user] wrenches your [limb.name] back into place.") + ) + qdel(src) + return TRUE /* Severe (Hairline Fracture) */ -/datum/wound/blunt/severe +/datum/wound/blunt/bone/severe name = "Hairline Fracture" desc = "Patient's bone has suffered a crack in the foundation, causing serious pain and reduced limb functionality." treat_text = "Recommended light surgical application of bone gel, though a sling of medical gauze will prevent worsening situation." @@ -373,18 +373,24 @@ interaction_efficiency_penalty = 2 limp_slowdown = 6 limp_chance = 60 - threshold_minimum = 70 threshold_penalty = 30 treatable_by = list(/obj/item/stack/sticky_tape/surgical, /obj/item/stack/medical/bone_gel) - status_effect_type = /datum/status_effect/wound/blunt/severe + status_effect_type = /datum/status_effect/wound/blunt/bone/severe brain_trauma_group = BRAIN_TRAUMA_MILD trauma_cycle_cooldown = 5 MINUTES internal_bleeding_chance = 40 - wound_flags = (BONE_WOUND | ACCEPTS_SPLINT | MANGLES_BONE) + wound_flags = ACCEPTS_SPLINT | MANGLES_INTERIOR regen_ticks_needed = 120 // ticks every 2 seconds, 240 seconds, so roughly 4 minutes default +/datum/wound_pregen_data/bone/hairline + abstract = FALSE + + wound_path_to_generate = /datum/wound/blunt/bone/severe + + threshold_minimum = 70 + /// Compound Fracture (Critical Blunt) -/datum/wound/blunt/critical +/datum/wound/blunt/bone/critical name = "Compound Fracture" desc = "Patient's bones have suffered multiple gruesome fractures, causing significant pain and near uselessness of limb." treat_text = "Immediate binding of affected limb, followed by surgical intervention ASAP." @@ -397,31 +403,37 @@ limp_chance = 70 limp_slowdown = 9 sound_effect = 'sound/effects/wounds/crack2.ogg' - threshold_minimum = 115 threshold_penalty = 50 disabling = TRUE treatable_by = list(/obj/item/stack/sticky_tape/surgical, /obj/item/stack/medical/bone_gel) - status_effect_type = /datum/status_effect/wound/blunt/critical + status_effect_type = /datum/status_effect/wound/blunt/bone/critical brain_trauma_group = BRAIN_TRAUMA_SEVERE trauma_cycle_cooldown = 5 MINUTES internal_bleeding_chance = 60 - wound_flags = (BONE_WOUND | ACCEPTS_SPLINT | MANGLES_BONE) + wound_flags = ACCEPTS_SPLINT | MANGLES_INTERIOR regen_ticks_needed = 240 // ticks every 2 seconds, 480 seconds, so roughly 8 minutes default +/datum/wound_pregen_data/bone/compound + abstract = FALSE + + wound_path_to_generate = /datum/wound/blunt/bone/critical + + threshold_minimum = 115 + // doesn't make much sense for "a" bone to stick out of your head -/datum/wound/blunt/critical/apply_wound(obj/item/bodypart/L, silent = FALSE, datum/wound/old_wound = null, smited = FALSE, attack_direction = null) +/datum/wound/blunt/bone/critical/apply_wound(obj/item/bodypart/L, silent = FALSE, datum/wound/old_wound = null, smited = FALSE, attack_direction = null) if(L.body_zone == BODY_ZONE_HEAD) occur_text = "splits open, exposing a bare, cracked skull through the flesh and blood" examine_desc = "has an unsettling indent, with bits of skull poking out" . = ..() /// if someone is using bone gel on our wound -/datum/wound/blunt/proc/gel(obj/item/stack/medical/bone_gel/I, mob/user) +/datum/wound/blunt/bone/proc/gel(obj/item/stack/medical/bone_gel/I, mob/user) // skellies get treated nicer with bone gel since their "reattach dismembered limbs by hand" ability sucks when it's still critically wounded // i hate you if(gelled) to_chat(user, span_warning("[user == victim ? "Your" : "[victim]'s"] [limb.name] is already coated with bone gel!")) - return + return TRUE user.visible_message( span_danger("[user] begins hastily applying [I] to [victim]'s' [limb.name]..."), @@ -429,7 +441,7 @@ ) if(!do_after(user, base_treat_time * 1.5 * (user == victim ? 1.5 : 1), target = victim, extra_checks = CALLBACK(src, PROC_REF(still_exists)))) - return + return TRUE I.use(1) victim.force_pain_noise(60) @@ -460,7 +472,7 @@ span_notice("You pass out from the pain of applying [I] to your [limb.name] before you can finish!"), ) victim.AdjustUnconscious(5 SECONDS) - return + return TRUE victim.visible_message( span_notice("[victim] finishes applying [I] to [victim.p_their()] [limb.name], grimacing from the pain!"), span_notice("You finish applying [I] to your [limb.name], and your bones explode in pain!"), @@ -469,15 +481,16 @@ limb.receive_damage(25, stamina = 100, wound_bonus = CANT_WOUND) gelled = TRUE processes = TRUE + return TRUE /// if someone is using surgical tape on our wound -/datum/wound/blunt/proc/tape(obj/item/stack/sticky_tape/surgical/I, mob/user) +/datum/wound/blunt/bone/proc/tape(obj/item/stack/sticky_tape/surgical/I, mob/user) if(!gelled) to_chat(user, span_warning("[user == victim ? "Your" : "[victim]'s"] [limb.name] must be coated with bone gel to perform this emergency operation!")) - return + return TRUE if(taped) to_chat(user, span_warning("[user == victim ? "Your" : "[victim]'s"] [limb.name] is already wrapped in [I.name].")) - return + return TRUE user.visible_message( span_danger("[user] begins applying [I] to [victim]'s' [limb.name]..."), @@ -485,7 +498,7 @@ ) if(!do_after(user, base_treat_time * (user == victim ? 1.5 : 1), target = victim, extra_checks = CALLBACK(src, PROC_REF(still_exists)))) - return + return TRUE if(victim == user) regen_ticks_needed *= 1.5 @@ -506,20 +519,21 @@ taped = TRUE processes = TRUE + return TRUE -/datum/wound/blunt/treat(obj/item/I, mob/user) +/datum/wound/blunt/bone/treat(obj/item/I, mob/user) if(istype(I, /obj/item/stack/medical/bone_gel)) - gel(I, user) + return gel(I, user) else if(istype(I, /obj/item/stack/sticky_tape/surgical)) - tape(I, user) + return tape(I, user) -/datum/wound/blunt/get_scanner_description(mob/user) +/datum/wound/blunt/bone/get_scanner_description(mob/user) . = ..() . += "
" if(severity > WOUND_SEVERITY_MODERATE) - if(victim.get_biological_state() == BIO_JUST_BONE) + if((limb.biological_state & BIO_BONE) && !(limb.biological_state & BIO_FLESH)) if(!gelled) . += "Recommended Treatment: Apply bone gel directly to injured limb. Creatures of pure bone don't seem to mind bone gel application nearly as much as fleshed individuals. Surgical tape will also be unnecessary.\n" else diff --git a/code/datums/wounds/burns.dm b/code/datums/wounds/burns.dm index 56d4d421578b..e56691f17d0d 100644 --- a/code/datums/wounds/burns.dm +++ b/code/datums/wounds/burns.dm @@ -6,10 +6,12 @@ /datum/wound/burn name = "Burn Wound" a_or_from = "from" - wound_type = WOUND_BURN - processes = TRUE sound_effect = 'sound/effects/wounds/sizzle1.ogg' - wound_flags = (FLESH_WOUND | ACCEPTS_GAUZE) + +/datum/wound/burn/flesh + name = "Burn (Flesh) Wound" + a_or_from = "from" + processes = TRUE treatable_by = list(/obj/item/stack/medical/ointment, /obj/item/stack/medical/mesh) // sterilizer and alcohol will require reagent treatments, coming soon @@ -30,8 +32,18 @@ /// Once we reach infestation beyond WOUND_INFESTATION_SEPSIS, we get this many warnings before the limb is completely paralyzed (you'd have to ignore a really bad burn for a really long time for this to happen) var/strikes_to_lose_limb = 3 +/datum/wound_pregen_data/flesh_burn + abstract = TRUE + + required_wounding_types = list(WOUND_BURN) + required_limb_biostate = BIO_FLESH + + wound_series = WOUND_SERIES_FLESH_BURN_BASIC + +/datum/wound/burn/flesh/handle_process(seconds_per_tick, times_fired) + if (!victim || IS_IN_STASIS(victim)) + return -/datum/wound/burn/handle_process() . = ..() if(strikes_to_lose_limb == 0) // we've already hit sepsis, nothing more to do victim.adjustToxLoss(0.5) @@ -124,7 +136,7 @@ set_disabling(TRUE) strikes_to_lose_limb-- -/datum/wound/burn/get_examine_description(mob/user) +/datum/wound/burn/flesh/get_examine_description(mob/user) if(strikes_to_lose_limb <= 0) return span_deadsay("[victim.p_their(TRUE)] [limb.name] has locked up completely and is non-functional.") @@ -157,7 +169,7 @@ return "[condition.Join()]" -/datum/wound/burn/get_scanner_description(mob/user) +/datum/wound/burn/flesh/get_scanner_description(mob/user) if(strikes_to_lose_limb == 0) var/oopsie = "Type: [name]\nSeverity: [severity_text()]" oopsie += "
Infection Level: The bodypart has suffered complete sepsis and must be removed. Amputate or augment limb immediately.
" @@ -190,15 +202,15 @@ */ /// if someone is using ointment or mesh on our burns -/datum/wound/burn/proc/ointmentmesh(obj/item/stack/medical/I, mob/user) +/datum/wound/burn/flesh/proc/ointmentmesh(obj/item/stack/medical/I, mob/user) user.visible_message( span_notice("[user] begins applying [I] to [victim]'s [limb.name]..."), span_notice("You begin applying [I] to [user == victim ? "your" : "[victim]'s"] [limb.name]..."), ) if (I.amount <= 0) - return + return TRUE if(!do_after(user, (user == victim ? I.self_delay : I.other_delay), extra_checks = CALLBACK(src, PROC_REF(still_exists)))) - return + return TRUE limb.heal_damage(I.heal_brute, I.heal_burn) user.visible_message( @@ -213,25 +225,26 @@ // in this fashion rather than have the cut immediately clear up. maybe bleed wounds could downgrade into muscle wounds...? if((infestation <= 0 || sanitization >= infestation) && (flesh_damage <= 0 || flesh_healing > flesh_damage)) to_chat(user, span_notice("You've done all you can with [I], [victim]'s [limb.name] can't be treated further.")) + return TRUE else - try_treating(I, user) + return try_treating(I, user) -/datum/wound/burn/treat(obj/item/I, mob/user) +/datum/wound/burn/flesh/treat(obj/item/I, mob/user) if(istype(I, /obj/item/stack/medical/ointment)) - ointmentmesh(I, user) + return ointmentmesh(I, user) else if(istype(I, /obj/item/stack/medical/mesh)) var/obj/item/stack/medical/mesh/mesh_check = I if(!mesh_check.is_open) to_chat(user, span_warning("You need to open [mesh_check] first.")) return - ointmentmesh(mesh_check, user) + return ointmentmesh(mesh_check, user) -/datum/wound/burn/on_synthflesh(amount) +/datum/wound/burn/flesh/on_synthflesh(amount) flesh_healing += amount * 0.5 // 20u patch will heal 10 flesh standard /// When a -tane chem is applied to the victim, we call this. -/datum/wound/burn/on_tane(amount) +/datum/wound/burn/flesh/on_tane(amount) if(amount > 10 && severity <= WOUND_SEVERITY_SEVERE) qdel(src) return @@ -241,7 +254,7 @@ return //crystal reagent lets you fully clear burns because they're rare chemicals and burns suck ass with no cryo -/datum/wound/burn/on_crystal(power) +/datum/wound/burn/flesh/on_crystal(power) if(power>=5) to_chat(victim, span_green("The burns on your [limb.name] have been regenerated, leaving only minor necrosis.")) victim.adjustCloneLoss(5) @@ -249,7 +262,7 @@ return //So does rezadone -/datum/wound/burn/on_rezadone(power) +/datum/wound/burn/flesh/on_rezadone(power) if(power>=10) // Rapidly regenerating burns isn't so clean, especially when there's an infection to purge to_chat(victim, span_green("The burns on your [limb.name] clear up, leaving you with an ill feeling.")) @@ -268,7 +281,7 @@ return // we don't even care about first degree burns, straight to second -/datum/wound/burn/moderate +/datum/wound/burn/flesh/moderate name = "Second Degree Burns" desc = "Patient is suffering considerable burns with mild skin penetration, weakening limb integrity and increased burning sensations." treat_text = "Recommended application of topical ointment or regenerative mesh to affected region." @@ -276,27 +289,38 @@ occur_text = "breaks out with violent red burns" severity = WOUND_SEVERITY_MODERATE damage_mulitplier_penalty = 1.05 - threshold_minimum = 40 threshold_penalty = 20 - status_effect_type = /datum/status_effect/wound/burn/moderate + status_effect_type = /datum/status_effect/wound/burn/flesh/moderate flesh_damage = 5 -/datum/wound/burn/severe +/datum/wound_pregen_data/flesh_burn/second_degree + abstract = FALSE + + wound_path_to_generate = /datum/wound/burn/flesh/moderate + threshold_minimum = 40 + +/datum/wound/burn/flesh/severe name = "Third Degree Burns" desc = "Patient is suffering extreme burns with full skin penetration, creating serious risk of infection and greatly reduced limb integrity." treat_text = "Recommended immediate disinfection and excision of any infected skin, followed by bandaging and ointment." examine_desc = "appears seriously charred, with aggressive red splotches" occur_text = "chars rapidly, spreading angry red burns" severity = WOUND_SEVERITY_SEVERE + wound_flags = ACCEPTS_GAUZE | NUMBS_BODYPART damage_mulitplier_penalty = 1.1 - threshold_minimum = 80 threshold_penalty = 30 - status_effect_type = /datum/status_effect/wound/burn/severe + status_effect_type = /datum/status_effect/wound/burn/flesh/severe treatable_by = list(/obj/item/stack/medical/ointment, /obj/item/stack/medical/mesh) infestation_rate = 0.03 flesh_damage = 12.5 -/datum/wound/burn/critical +/datum/wound_pregen_data/flesh_burn/third_degree + abstract = FALSE + + wound_path_to_generate = /datum/wound/burn/flesh/severe + threshold_minimum = 80 + +/datum/wound/burn/flesh/critical name = "Catastrophic Burns" desc = "Patient is suffering near complete loss of tissue and significantly charred muscle and bone, creating life-threatening risk of infection and negligible limb integrity." treat_text = "Immediate surgical debriding of any infected skin, followed by potent tissue regeneration formula and bandaging." @@ -305,9 +329,15 @@ severity = WOUND_SEVERITY_CRITICAL damage_mulitplier_penalty = 1.15 sound_effect = 'sound/effects/wounds/sizzle2.ogg' - threshold_minimum = 140 threshold_penalty = 80 - status_effect_type = /datum/status_effect/wound/burn/critical + status_effect_type = /datum/status_effect/wound/burn/flesh/critical treatable_by = list(/obj/item/stack/medical/ointment, /obj/item/stack/medical/mesh) infestation_rate = 0.07 flesh_damage = 20 + wound_flags = ACCEPTS_GAUZE | MANGLES_EXTERIOR | NUMBS_BODYPART + +/datum/wound_pregen_data/flesh_burn/fourth_degree + abstract = FALSE + + wound_path_to_generate = /datum/wound/burn/flesh/critical + threshold_minimum = 140 diff --git a/code/datums/wounds/dismember.dm b/code/datums/wounds/dismember.dm index df516429c49f..faf3a8115b9e 100644 --- a/code/datums/wounds/dismember.dm +++ b/code/datums/wounds/dismember.dm @@ -1,16 +1,31 @@ +/datum/wound_pregen_data/loss + abstract = FALSE + + wound_path_to_generate = /datum/wound/loss + required_limb_biostate = NONE + require_any_biostate = TRUE + + required_wounding_types = list(WOUND_ALL) + + wound_series = WOUND_SERIES_LOSS_BASIC + + threshold_minimum = WOUND_DISMEMBER_OUTRIGHT_THRESH // not actually used since dismembering is handled differently, but may as well assign it since we got it + /datum/wound/loss name = "Dismemberment Wound" desc = "Tis but a flesh wound." sound_effect = 'sound/effects/wounds/dismember.ogg' severity = WOUND_SEVERITY_LOSS - threshold_minimum = WOUND_DISMEMBER_OUTRIGHT_THRESH // not actually used since dismembering is handled differently, but may as well assign it since we got it status_effect_type = null wound_flags = null + /// The wounding_type of the attack that caused us. Used to generate the description of our scar. Currently unused, but primarily exists in case non-biological wounds are added. + var/loss_wounding_type + /// Our special proc for our special dismembering, the wounding type only matters for what text we have /datum/wound/loss/proc/apply_dismember(obj/item/bodypart/dismembered_part, wounding_type = WOUND_SLASH, outright = FALSE, attack_direction) - if(!istype(dismembered_part) || !dismembered_part.owner || !(dismembered_part.body_zone in viable_zones) || isalien(dismembered_part.owner) || !dismembered_part.can_dismember()) + if(!istype(dismembered_part) || !dismembered_part.owner || (dismembered_part.body_zone in get_excluded_zones()) || isalien(dismembered_part.owner) || !dismembered_part.can_dismember()) qdel(src) return @@ -18,10 +33,31 @@ if(dismembered_part.body_zone == BODY_ZONE_CHEST) occur_text = "is split open, causing [victim.p_their()] internals organs to spill out!" - else if(outright) + else + occur_text = dismembered_part.get_dismember_message(wounding_type, outright) + + var/msg = span_bolddanger("[victim]'s [dismembered_part.name] [occur_text]!") + + victim.visible_message(msg, span_userdanger("Your [dismembered_part.name] [occur_text]!")) + + loss_wounding_type = wounding_type + + set_limb(dismembered_part) + second_wind() + log_wound(victim, src) + if(dismembered_part.can_bleed() && wounding_type != WOUND_BURN && victim.blood_volume) + victim.spray_blood(attack_direction, severity) + dismembered_part.dismember(dam_type = (wounding_type == WOUND_BURN ? BURN : BRUTE)) + qdel(src) + return TRUE + +/obj/item/bodypart/proc/get_dismember_message(wounding_type, outright) + var/occur_text + + if(outright) switch(wounding_type) if(WOUND_BLUNT) - occur_text = "is outright smashed to a gross pulp, severing it completely!" + occur_text = "is outright smashed to [(biological_state & BIO_METAL) ? "pieces" : "a gross pulp"], severing it completely!" if(WOUND_SLASH) occur_text = "is outright slashed off, severing it completely!" if(WOUND_PIERCE) @@ -29,25 +65,17 @@ if(WOUND_BURN) occur_text = "is outright incinerated, falling to dust!" else + var/bone_text = get_internal_description() + var/tissue_text = get_external_description() + switch(wounding_type) if(WOUND_BLUNT) - occur_text = "is shattered through the last bone holding it together, severing it completely!" + occur_text = "is shattered through the last [bone_text] holding it together, severing it completely!" if(WOUND_SLASH) - occur_text = "is slashed through the last tissue holding it together, severing it completely!" + occur_text = "is slashed through the last [tissue_text] holding it together, severing it completely!" if(WOUND_PIERCE) - occur_text = "is pierced through the last tissue holding it together, severing it completely!" + occur_text = "is pierced through the last [tissue_text] holding it together, severing it completely!" if(WOUND_BURN) - occur_text = "is completely incinerated, falling to dust!" - - var/msg = span_bolddanger("[victim]'s [dismembered_part.name] [occur_text]!") + occur_text = "is completely incinerated, [(biological_state & BIO_METAL) ? "melting to slag" : "falling to dust"]!" - victim.visible_message(msg, span_userdanger("Your [dismembered_part.name] [occur_text]!")) - - set_limb(dismembered_part) - second_wind() - log_wound(victim, src) - if(wounding_type != WOUND_BURN && victim.blood_volume) - victim.spray_blood(attack_direction, severity) - dismembered_part.dismember(wounding_type == WOUND_BURN ? BURN : BRUTE) - qdel(src) - return TRUE + return occur_text diff --git a/code/datums/wounds/muscle.dm b/code/datums/wounds/muscle.dm index 88b7093ab694..30dcbfe42364 100644 --- a/code/datums/wounds/muscle.dm +++ b/code/datums/wounds/muscle.dm @@ -3,21 +3,27 @@ */ /datum/wound/muscle name = "Muscle Wound" - wound_type = WOUND_MUSCLE - wound_flags = (FLESH_WOUND | ACCEPTS_SPLINT) - viable_zones = list(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) + wound_flags = ACCEPTS_SPLINT + bio_state_required = BIO_FLESH + excluded_zones = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST) processes = TRUE ///How much do we need to regen. Will regen faster if we're splinted and or laying down var/regen_ticks_needed ///Our current counter for healing var/regen_ticks_current = 0 +/datum/wound_pregen_data/muscle + abstract = TRUE + required_limb_biostate = BIO_FLESH + + required_wounding_types = list(WOUND_BLUNT) + wound_series = WOUND_SERIES_FLESH_MUSCLE + weight = WOUND_MUSCLE_WEIGHT + /* Overwriting of base procs */ /datum/wound/muscle/wound_injury(datum/wound/old_wound = null, attack_direction = null) - //hook into gaining/losing gauze so crit muscle wounds can re-enable/disable depending if they're slung or not - RegisterSignals(limb, list(COMSIG_BODYPART_SPLINTED, COMSIG_BODYPART_SPLINT_DESTROYED), PROC_REF(update_inefficiencies)) RegisterSignal(victim, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, PROC_REF(attack_with_hurt_hand)) if(limb.held_index && victim.get_item_for_held_index(limb.held_index) && (disabling || prob(10 * severity))) @@ -111,31 +117,6 @@ return "[msg.Join()]" -/* - Common procs mostly copied from bone wounds, as their behaviour is very similar -*/ -/datum/wound/muscle/proc/update_inefficiencies() - if(limb.body_zone in list(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) - if(limb.current_splint) - limp_slowdown = initial(limp_slowdown) * limb.current_splint.splint_factor - else - limp_slowdown = initial(limp_slowdown) - victim.apply_status_effect(STATUS_EFFECT_LIMP) - - else if(limb.body_zone in list(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - if(limb.current_splint) - interaction_efficiency_penalty = 1 + ((interaction_efficiency_penalty - 1) * limb.current_splint.splint_factor) - else - interaction_efficiency_penalty = interaction_efficiency_penalty - - if(initial(disabling)) - if(limb.current_splint && limb.current_splint.helps_disabled) - set_disabling(FALSE) - else - set_disabling(TRUE) - - limb.update_wounds() - //Moderate (Muscle Tear) /datum/wound/muscle/moderate name = "Muscle Tear" @@ -146,11 +127,16 @@ severity = WOUND_SEVERITY_MODERATE interaction_efficiency_penalty = 1.15 limp_slowdown = 1 - threshold_minimum = 40 threshold_penalty = 10 status_effect_type = /datum/status_effect/wound/muscle/moderate regen_ticks_needed = 500 +/datum/wound_pregen_data/muscle/tear + abstract = FALSE + + wound_path_to_generate = /datum/wound/muscle/moderate + threshold_minimum = 40 + //Severe (Ruptured Tendon) /datum/wound/muscle/severe name = "Ruptured Tendon" @@ -162,12 +148,17 @@ severity = WOUND_SEVERITY_SEVERE interaction_efficiency_penalty = 1.25 limp_slowdown = 5 - threshold_minimum = 90 threshold_penalty = 35 disabling = TRUE status_effect_type = /datum/status_effect/wound/muscle/severe regen_ticks_needed = 1500 //takes a while +/datum/wound_pregen_data/muscle/rupture + abstract = FALSE + + wound_path_to_generate = /datum/wound/muscle/severe + threshold_minimum = 90 + /datum/status_effect/wound/muscle /datum/status_effect/wound/muscle/on_apply() diff --git a/code/datums/wounds/pierce.dm b/code/datums/wounds/pierce.dm index a7ddf660d0b5..acc9b97ae1e2 100644 --- a/code/datums/wounds/pierce.dm +++ b/code/datums/wounds/pierce.dm @@ -3,14 +3,15 @@ */ /datum/wound/pierce + +/datum/wound/pierce/bleed name = "Piercing Wound" sound_effect = 'sound/weapons/slice.ogg' processes = TRUE - wound_type = WOUND_PIERCE treatable_by = list(/obj/item/stack/medical/suture) - treatable_tool = TOOL_CAUTERY + treatable_tools = list(TOOL_CAUTERY) base_treat_time = 3 SECONDS - wound_flags = (FLESH_WOUND | ACCEPTS_GAUZE | ACCEPTS_SPLINT) + wound_flags = ACCEPTS_GAUZE | CAN_BE_GRASPED /// How much blood we start losing when this wound is first applied var/initial_flow @@ -22,30 +23,38 @@ /// If we let off blood when hit, the max blood lost is this * the incoming damage var/internal_bleeding_coefficient -/datum/wound/pierce/show_wound_topic(mob/user) +/datum/wound_pregen_data/flesh_pierce + abstract = TRUE + + required_limb_biostate = (BIO_FLESH) + required_wounding_types = list(WOUND_PIERCE) + + wound_series = WOUND_SERIES_FLESH_PUNCTURE_BLEED + +/datum/wound/pierce/bleed/show_wound_topic(mob/user) return (user == victim && blood_flow) -/datum/wound/pierce/Topic(href, href_list) +/datum/wound/pierce/bleed/Topic(href, href_list) . = ..() if(href_list["wound_topic"]) if(!usr == victim) return victim.self_grasp_bleeding_limb(limb) -/datum/wound/pierce/wound_injury(datum/wound/old_wound = null, attack_direction = null) +/datum/wound/pierce/bleed/wound_injury(datum/wound/old_wound = null, attack_direction = null) blood_flow = initial_flow - if(attack_direction && victim.blood_volume > BLOOD_VOLUME_BAD) + if(limb.can_bleed() && attack_direction && victim.blood_volume > BLOOD_VOLUME_BAD) victim.spray_blood(attack_direction, severity) -/datum/wound/pierce/receive_damage(wounding_type, wounding_dmg, wound_bonus) - if(isnull(victim) || victim.stat == DEAD || wounding_dmg < WOUND_MINIMUM_DAMAGE) +/datum/wound/pierce/bleed/receive_damage(list/wounding_types, total_wound_dmg, wound_bonus) + if(isnull(victim) || victim.stat == DEAD || total_wound_dmg < WOUND_MINIMUM_DAMAGE) return - if(victim.blood_volume && prob(internal_bleeding_chance + wounding_dmg)) + if(victim.blood_volume && limb.can_bleed() && prob(internal_bleeding_chance + total_wound_dmg)) if(limb.current_splint?.splint_factor) - wounding_dmg *= (1 - limb.current_splint.splint_factor) + total_wound_dmg *= (1 - limb.current_splint.splint_factor) - var/blood_bled = rand(1, wounding_dmg * internal_bleeding_coefficient) + var/blood_bled = rand(1, total_wound_dmg * internal_bleeding_coefficient) switch(blood_bled) if(1 to 6) victim.bleed(blood_bled, TRUE) @@ -74,14 +83,16 @@ new /obj/effect/temp_visual/dir_setting/bloodsplatter(victim.loc, victim.dir) victim.add_splatter_floor(get_step(victim.loc, victim.dir)) -/datum/wound/pierce/get_bleed_rate_of_change() +/datum/wound/pierce/bleed/get_bleed_rate_of_change() + if(!limb.can_bleed()) + return BLOOD_FLOW_STEADY if(HAS_TRAIT(victim, TRAIT_BLOODY_MESS)) return BLOOD_FLOW_INCREASING if(limb.current_gauze && limb.current_gauze.seep_gauze(limb.current_gauze.absorption_rate, GAUZE_STAIN_BLOOD)) return BLOOD_FLOW_DECREASING return BLOOD_FLOW_STEADY -/datum/wound/pierce/handle_process() +/datum/wound/pierce/bleed/handle_process() blood_flow = min(blood_flow, WOUND_SLASH_MAX_BLOODFLOW) if(HAS_TRAIT(victim, TRAIT_BLOODY_MESS)) @@ -93,30 +104,30 @@ if(blood_flow <= 0) qdel(src) -/datum/wound/pierce/on_stasis() +/datum/wound/pierce/bleed/on_stasis() . = ..() if(blood_flow <= 0) qdel(src) -/datum/wound/pierce/check_grab_treatments(obj/item/I, mob/user) +/datum/wound/pierce/bleed/check_grab_treatments(obj/item/I, mob/user) if(I.get_temperature()) // if we're using something hot but not a cautery, we need to be aggro grabbing them first, so we don't try treating someone we're eswording return TRUE -/datum/wound/pierce/treat(obj/item/I, mob/user) +/datum/wound/pierce/bleed/treat(obj/item/I, mob/user) if(istype(I, /obj/item/stack/medical/suture)) - suture(I, user) + return suture(I, user) else if(I.tool_behaviour == TOOL_CAUTERY || I.get_temperature()) - tool_cauterize(I, user) + return tool_cauterize(I, user) -/datum/wound/pierce/on_xadone(power) +/datum/wound/pierce/bleed/on_xadone(power) . = ..() blood_flow -= 0.03 * power // i think it's like a minimum of 3 power, so .09 blood_flow reduction per tick is pretty good for 0 effort -/datum/wound/pierce/on_synthflesh(power) +/datum/wound/pierce/bleed/on_synthflesh(power) . = ..() blood_flow -= 0.05 * power // 20u * 0.05 = -1 blood flow, less than with slashes but still good considering smaller bleed rates -/datum/wound/pierce/on_silfrine(power) +/datum/wound/pierce/bleed/on_silfrine(power) switch(power) if(0 to 3) EMPTY_BLOCK_GUARD @@ -129,14 +140,14 @@ blood_flow -= 0.05 * power /// If someone is using a suture to close this puncture -/datum/wound/pierce/proc/suture(obj/item/stack/medical/suture/I, mob/user) +/datum/wound/pierce/bleed/proc/suture(obj/item/stack/medical/suture/I, mob/user) var/self_penalty_mult = (user == victim ? 1 : 1) user.visible_message( span_notice("[user] begins stitching [victim]'s [limb.name] with [I]..."), span_notice("You begin stitching [user == victim ? "your" : "[victim]'s"] [limb.name] with [I]..."), ) if(!do_after(user, base_treat_time * self_penalty_mult, target = victim, extra_checks = CALLBACK(src, PROC_REF(still_exists)))) - return + return TRUE user.visible_message( span_green("[user] stitches up some of the bleeding on [victim]."), span_green("You stitch up some of the bleeding on [user == victim ? "yourself" : "[victim]"]."), @@ -147,12 +158,13 @@ I.use(1) if(blood_flow > 0) - try_treating(I, user) + return try_treating(I, user) else to_chat(user, span_green("You successfully close the hole in [user == victim ? "your" : "[victim]'s"] [limb.name].")) + return TRUE /// If someone is using either a cautery tool or something with heat to cauterize this pierce -/datum/wound/pierce/proc/tool_cauterize(obj/item/I, mob/user) +/datum/wound/pierce/bleed/proc/tool_cauterize(obj/item/I, mob/user) var/improv_penalty_mult = (I.tool_behaviour == TOOL_CAUTERY ? 1 : 1.25) // 25% longer and less effective if you don't use a real cautery var/self_penalty_mult = (user == victim ? 1.1 : 1) @@ -161,7 +173,7 @@ span_warning("You begin cauterizing [user == victim ? "your" : "[victim]'s"] [limb.name] with [I]..."), ) if(!do_after(user, base_treat_time * self_penalty_mult * improv_penalty_mult, target = victim, extra_checks = CALLBACK(src, PROC_REF(still_exists)))) - return + return TRUE playsound(user, 'sound/surgery/cautery2.ogg', 20) user.visible_message( @@ -175,9 +187,10 @@ blood_flow -= blood_cauterized if(blood_flow > 0) - try_treating(I, user) + return try_treating(I, user) + return TRUE -/datum/wound/pierce/moderate +/datum/wound/pierce/bleed/moderate name = "Minor Breakage" desc = "Patient's skin has been broken open, causing severe bruising and minor internal bleeding in affected area." treat_text = "Application of clean bandages and sutures or cauterization." @@ -189,11 +202,16 @@ gauzed_clot_rate = 0.8 internal_bleeding_chance = 30 internal_bleeding_coefficient = 1.25 - threshold_minimum = 40 threshold_penalty = 20 - status_effect_type = /datum/status_effect/wound/pierce/moderate + status_effect_type = /datum/status_effect/wound/pierce/bleed/moderate + +/datum/wound_pregen_data/flesh_pierce/breakage + abstract = FALSE -/datum/wound/pierce/severe + wound_path_to_generate = /datum/wound/pierce/bleed/moderate + threshold_minimum = 40 + +/datum/wound/pierce/bleed/severe name = "Open Puncture" desc = "Patient's internal tissue is penetrated, causing sizeable internal bleeding and reduced limb stability." treat_text = "Application of clean bandages and sutures or cauterization." @@ -205,11 +223,16 @@ gauzed_clot_rate = 0.6 internal_bleeding_chance = 60 internal_bleeding_coefficient = 1.5 - threshold_minimum = 60 threshold_penalty = 35 - status_effect_type = /datum/status_effect/wound/pierce/severe + status_effect_type = /datum/status_effect/wound/pierce/bleed/severe + +/datum/wound_pregen_data/flesh_pierce/open_puncture + abstract = FALSE + + wound_path_to_generate = /datum/wound/pierce/bleed/severe + threshold_minimum = 60 -/datum/wound/pierce/critical +/datum/wound/pierce/bleed/critical name = "Ruptured Cavity" desc = "Patient's internal tissue and circulatory system is shredded, causing significant internal bleeding and damage to internal organs." treat_text = "Bandaging, cauterization, or surgical repair followed by potential transfusion." @@ -221,7 +244,12 @@ gauzed_clot_rate = 0.5 internal_bleeding_chance = 80 internal_bleeding_coefficient = 1.75 - threshold_minimum = 115 threshold_penalty = 50 - status_effect_type = /datum/status_effect/wound/pierce/critical - wound_flags = (FLESH_WOUND | ACCEPTS_GAUZE | ACCEPTS_SPLINT | MANGLES_FLESH) + status_effect_type = /datum/status_effect/wound/pierce/bleed/critical + wound_flags = ACCEPTS_GAUZE | MANGLES_EXTERIOR | CAN_BE_GRASPED + +/datum/wound_pregen_data/flesh_pierce/cavity + abstract = FALSE + + wound_path_to_generate = /datum/wound/pierce/bleed/critical + threshold_minimum = 115 diff --git a/code/datums/wounds/robotic/buckling.dm b/code/datums/wounds/robotic/buckling.dm new file mode 100644 index 000000000000..87aa3b1d748a --- /dev/null +++ b/code/datums/wounds/robotic/buckling.dm @@ -0,0 +1,213 @@ +#define MAX_TAPE_STACKS 5 +#define DAMAGE_PER_STACK 10 +#define TAPE_SCALE 50 + +#define TAPE_FACTOR_CALC(amount, strength) (TAPE_SCALE / (TAPE_SCALE + (amount * strength)**2)) + +/datum/wound/blunt/buckling + name = "Blunt (Metal) Wound" + sound_effect = 'sound/machines/clockcult/integration_cog_install.ogg' + wound_flags = PLATING_DAMAGE + bio_state_required = BIO_METAL + + /// The tape applied to this wound. + var/obj/item/stack/tape/applied_tape + +/datum/wound_pregen_data/buckling + abstract = TRUE + required_limb_biostate = BIO_METAL + + required_wounding_types = list(WOUND_BLUNT) + + wound_series = WOUND_SERIES_METAL_BUCKLING + +/datum/wound/blunt/buckling/moderate + name = "Bent Plating" + desc = "Patient's external plating is bent out of shape." + treat_text = "Recommend prying the external plate back into place." + examine_desc = "is bent out of shape" + occur_text = "suddenly bends out of shape" + sound_effect = 'sound/effects/bin_open.ogg' + treatable_tools = list(TOOL_CROWBAR, TOOL_WIRECUTTER) + treatable_by = list(/obj/item/stack/tape) + severity = WOUND_SEVERITY_MODERATE + interaction_efficiency_penalty = 1.2 + threshold_penalty = 20 + limp_slowdown = 2.25 + limp_chance = 50 + +/datum/wound_pregen_data/buckling/dented + abstract = FALSE + + wound_path_to_generate = /datum/wound/blunt/buckling/moderate + threshold_minimum = 35 + +/datum/wound/blunt/buckling/severe + name = "Buckled Chassis" + desc = "Patient's chassis is buckled inwards, causing disruption to mobility. Applying duct tape can temporarily secure the limb until proper repairs." + treat_text = "Recommend replacement of external plating." + examine_desc = "is buckled inwards" + occur_text = "creaks and buckles inwards" + severity = WOUND_SEVERITY_SEVERE + wound_flags = MANGLES_INTERIOR | PLATING_DAMAGE + treatable_tools = list(TOOL_WIRECUTTER) // for tape removal + treatable_by = list(/obj/item/stack/tape) + interaction_efficiency_penalty = 2 + threshold_penalty = 40 + limp_slowdown = 6 + limp_chance = 60 + +/datum/wound_pregen_data/buckling/buckled + abstract = FALSE + + wound_path_to_generate = /datum/wound/blunt/buckling/severe + threshold_minimum = 70 + +/datum/wound/blunt/buckling/critical + name = "Sheared Frame" + desc = "Patient's limb is sheared, rendering it inoperable." + treat_text = "Recommend replacement of internal frame and external plating. Applying duct tape can temporarily secure the limb until proper repairs." + examine_desc = "is sheared off, barely hanging on by the wires" + occur_text = "violently snaps as its frame shears apart" + wound_flags = MANGLES_INTERIOR | PLATING_DAMAGE + severity = WOUND_SEVERITY_CRITICAL + treatable_tools = list(TOOL_WIRECUTTER) // for tape removal + treatable_by = list(/obj/item/stack/tape) // duct tape will fix anything + disabling = TRUE + interaction_efficiency_penalty = 2.5 + threshold_penalty = 50 + limp_slowdown = 9 + limp_chance = 70 + +/datum/wound_pregen_data/buckling/sheared + abstract = FALSE + + wound_path_to_generate = /datum/wound/blunt/buckling/critical + threshold_minimum = 125 + +/datum/wound/blunt/buckling/remove_wound(ignore_limb, replaced) + limp_slowdown = 0 + limp_chance = 0 + if(applied_tape) + QDEL_NULL(applied_tape) + return ..() + +/datum/wound/blunt/buckling/treat(obj/item/treatment, mob/user) + if(istype(treatment, /obj/item/stack/tape)) + return apply_tape(treatment, user) + if(treatment.tool_behaviour == TOOL_WIRECUTTER) + return remove_tape(treatment, user) + if(treatment.tool_behaviour == TOOL_CROWBAR) + return pry_chassis(treatment, user) + +/// Applies tape to the wound. +/datum/wound/blunt/buckling/proc/apply_tape(obj/item/stack/tape/new_tape, mob/user) + if(applied_tape?.amount >= MAX_TAPE_STACKS) + to_chat(user, span_notice("[limb] has too much tape on it already!")) + return TRUE + if(new_tape.amount < 1) + to_chat(user, span_notice("[new_tape] does not contain enough tape!")) + return TRUE + victim.visible_message( + span_notice("[user] starts applying [new_tape.name] to [victim]'s [limb]."), + span_notice("[user] starts applying [new_tape.name] to your [limb]."), + ) + while(applied_tape?.amount < MAX_TAPE_STACKS && new_tape.use_tool(victim, user, 2 SECONDS, amount = 1, volume = 50)) + if(!applied_tape) + applied_tape = new new_tape.type(null, 1) + else + applied_tape.add(1) + update_inefficiencies() + if(applied_tape.amount >= MAX_TAPE_STACKS) + victim.visible_message( + span_notice("[user] finishes applying [applied_tape.name] to [victim]'s [limb]."), + span_notice("[user] finishes applying [applied_tape.name] to your [limb]."), + ) + return TRUE + victim.visible_message( + span_notice("[user] applies some [applied_tape.name] to [victim]'s [limb]."), + span_notice("[user] applies some [applied_tape.name] to your [limb]."), + ) + return TRUE + +/// Removes tape from the round. +/datum/wound/blunt/buckling/proc/remove_tape(obj/item/tool, mob/user) + victim.visible_message( + span_notice("[user] tries to remove the [applied_tape] from [victim]'s [limb.name]."), + span_danger("[user] tries to remove the [applied_tape] from your [limb.name]!"), + ) + if(!tool.use_tool(victim, user, 3 SECONDS, volume = 50)) + return TRUE + victim.visible_message( + span_notice("[user] removes the [applied_tape.name] from [victim]'s [limb.name]."), + span_danger("[user] removes the [applied_tape.name] from your [limb]."), + ) + QDEL_NULL(applied_tape) + return TRUE + +/// Pries moderately buckled limbs back into shape +/datum/wound/blunt/buckling/proc/pry_chassis(obj/item/tool, mob/user) + victim.visible_message( + span_notice("[user] starts prying the plating on [victim]'s [limb.name] back into place."), + span_notice("[user] starts prying the plating on your [limb.name] back into place."), + ) + if(!tool.use_tool(victim, user, 5 SECONDS, volume = 50)) + return TRUE + victim.visible_message( + span_notice("[user] pries the plating on [victim]'s [limb.name] back into place."), + span_notice("[user] pries the plating on your [limb.name] back into place."), + ) + qdel(src) + return TRUE + +/datum/wound/blunt/buckling/receive_damage(list/wounding_types, total_wound_dmg, wound_bonus, attack_direction) + if(!applied_tape) + return + applied_tape.use(round(total_wound_dmg / DAMAGE_PER_STACK)) + if(QDELETED(applied_tape)) + if(victim) + victim.visible_message( + span_warning("The [applied_tape.name] on [victim]'s [limb.name] falls apart!"), + span_danger("The [applied_tape.name] on your [limb.name] falls apart!") + ) + applied_tape = null + update_inefficiencies() + +/datum/wound/blunt/buckling/update_inefficiencies() + if(applied_tape) + var/tape_factor = TAPE_FACTOR_CALC(applied_tape.amount, applied_tape.nonorganic_heal) + interaction_efficiency_penalty = src::interaction_efficiency_penalty * tape_factor + limp_slowdown = src::limp_slowdown * tape_factor + if(applied_tape.amount >= MAX_TAPE_STACKS) + set_disabling(FALSE) + else if(applied_tape.amount < CEILING(MAX_TAPE_STACKS / 2, 1)) + set_disabling(src::disabling) + else + interaction_efficiency_penalty = src::interaction_efficiency_penalty + limp_slowdown = src::limp_slowdown + set_disabling(src::disabling) + + limb.update_wounds() + start_limping_if_we_should() + +/datum/wound/blunt/buckling/modify_desc_before_span(desc, mob/user) + if(!applied_tape) + return desc + var/tape_msg + var/tape_strength = 1 - TAPE_FACTOR_CALC(applied_tape.amount, applied_tape.nonorganic_heal) + switch(tape_strength) + if(0.75 to INFINITY) + tape_msg = "tightly" + if(0.5 to 0.75) + tape_msg = "somewhat" + if(0.25 to 0.5) + tape_msg = "loosely" + else + tape_msg = "just barely" + return "[victim.p_their(TRUE)] [limb.name] is [tape_msg] held together with [applied_tape.name]" + +#undef TAPE_FACTOR_CALC + +#undef TAPE_SCALE +#undef DAMAGE_PER_STACK +#undef MAX_TAPE_STACKS diff --git a/code/datums/wounds/robotic/electrical.dm b/code/datums/wounds/robotic/electrical.dm new file mode 100644 index 000000000000..8fa71647e6e4 --- /dev/null +++ b/code/datums/wounds/robotic/electrical.dm @@ -0,0 +1,130 @@ +// Electrical wounds are special and can be applied from any physical damage type, they get to be their own thing + +/datum/wound/electric + name = "Electrical Wound" + sound_effect = 'sound/effects/light_flicker.ogg' + wound_flags = NUMBS_BODYPART + bio_state_required = BIO_METAL + + /// The organ currently being affected by this wound. + var/obj/item/organ/affected_organ + /// The brain trauma linked to this wound, if on the brain's body part. + var/datum/brain_trauma/linked_trauma + /// The group of brain traumas that can be inflicted. + var/trauma_group = BRAIN_TRAUMA_MILD + +/datum/wound_pregen_data/electric + abstract = TRUE + required_limb_biostate = BIO_WIRED + + required_wounding_types = list(WOUND_PIERCE, WOUND_BURN) + mangled_wounding_types = list(WOUND_SLASH = ANATOMY_INTERIOR) + + wound_series = WOUND_SERIES_WIRED_ELECTRICAL + +/datum/wound/electric/severe + name = "Damaged Electronics" + desc = "Patient's electronics are damaged, preventing movement and damaging internal components." + treat_text = "Recommend replacement of internal wiring." + examine_desc = "occasionally sparks" + occur_text = "emits a shower of sparks" + threshold_penalty = 20 + severity = WOUND_SEVERITY_SEVERE + disabling = TRUE + +/datum/wound_pregen_data/electric/damaged + abstract = FALSE + + wound_path_to_generate = /datum/wound/electric/severe + threshold_minimum = 70 + +/datum/wound/electric/critical + name = "Short Circuit" + desc = "Patient's internal circuitry is shorted, causing significant power drain and loss of function." + treat_text = "Recommend replacement of internal electronics and wiring." + examine_desc = "is twitching and emitting electrical arcs" + occur_text = "arcs as its electronics short out" + threshold_penalty = 40 + sound_effect = 'sound/machines/defib_zap.ogg' + disabling = TRUE + processes = TRUE + wound_flags = MANGLES_EXTERIOR | NUMBS_BODYPART + severity = WOUND_SEVERITY_CRITICAL + trauma_group = BRAIN_TRAUMA_SEVERE + +/datum/wound_pregen_data/electric/shorted + abstract = FALSE + + wound_path_to_generate = /datum/wound/electric/critical + threshold_minimum = 110 + +/datum/wound/electric/wound_injury(datum/wound/old_wound, attack_direction) + if(!affected_organ) + affect_organ() + + +/datum/wound/electric/replace_wound(datum/wound/electric/new_wound, smited, attack_direction) + if(istype(new_wound, /datum/wound/electric)) + new_wound.affected_organ = affected_organ + return ..() + +/datum/wound/electric/remove_wound(ignore_limb, replaced) + if(!replaced) + restore_organ() + else + QDEL_NULL(linked_trauma) + return ..() + +/datum/wound/electric/set_victim(new_victim) + if(victim) + UnregisterSignal(victim, list(COMSIG_CARBON_LOSE_ORGAN, COMSIG_CARBON_GAIN_ORGAN)) + if(!new_victim) + restore_organ() + if(new_victim) + RegisterSignal(victim, COMSIG_CARBON_LOSE_ORGAN, PROC_REF(on_organ_loss)) + RegisterSignal(victim, COMSIG_CARBON_GAIN_ORGAN, PROC_REF(on_organ_gain)) + return ..() + +/datum/wound/electric/proc/affect_organ() + if(!affected_organ) + var/obj/item/organ/brain/victim_brain = victim.getorganslot(ORGAN_SLOT_BRAIN) + if(victim_brain && limb.body_zone == victim_brain.zone && victim_brain.status == ORGAN_ROBOTIC) + affected_organ = victim_brain + else + affected_organ = pick(limb.get_organs(ORGAN_ROBOTIC)) + if(!affected_organ) + return + if(affected_organ.slot == ORGAN_SLOT_BRAIN) + if(linked_trauma) + QDEL_NULL(linked_trauma) + to_chat(victim, span_userdanger(Gibberish("Warning: Power loss to central processing core detected!", TRUE, 40))) + linked_trauma = victim.gain_trauma_type(trauma_group, TRAUMA_RESILIENCE_WOUND) + else + to_chat(victim, span_userdanger("Your [affected_organ.name] suddenly shuts down as it loses power!")) + ADD_TRAIT(affected_organ, TRAIT_ORGAN_FAILING, POWER_LACK_TRAIT) // power is not reaching this organ + +/datum/wound/electric/proc/restore_organ() + SIGNAL_HANDLER + if(!affected_organ) + return + if(linked_trauma) + QDEL_NULL(linked_trauma) + else + REMOVE_TRAIT(affected_organ, TRAIT_ORGAN_FAILING, POWER_LACK_TRAIT) + +/datum/wound/electric/proc/on_organ_loss(datum/source, obj/item/organ/lost_organ) + SIGNAL_HANDLER + if(lost_organ == affected_organ) + restore_organ() + affect_organ() + +/datum/wound/electric/proc/on_organ_gain(datum/source, obj/item/organ/new_organ) + SIGNAL_HANDLER + if(!affected_organ && new_organ.zone == limb.body_zone) + affect_organ() + +/datum/wound/electric/handle_process(seconds_per_tick, times_fired) + if(!victim) + return + if(victim.mob_biotypes & MOB_ROBOTIC) + victim.adjust_nutrition(severity * -WOUND_ELECTRIC_POWER_DRAIN) diff --git a/code/datums/wounds/robotic/heat_warping.dm b/code/datums/wounds/robotic/heat_warping.dm new file mode 100644 index 000000000000..f0d716cea6de --- /dev/null +++ b/code/datums/wounds/robotic/heat_warping.dm @@ -0,0 +1,180 @@ +/// The flame temperature required to re-heat the chassis. +#define CHASSIS_MELTING_POINT 1900 + +/datum/wound/burn/heat_warping + name = "Heat-Warping Wound" + sound_effect = 'sound/machines/clockcult/steam_whoosh.ogg' + + wound_flags = PLATING_DAMAGE + bio_state_required = BIO_METAL + + /// Whether the limb has been re-heated, allowing it to be bent back into shape + var/re_heated = FALSE + +/datum/wound_pregen_data/heat_warping + abstract = TRUE + required_limb_biostate = BIO_METAL + + required_wounding_types = list(WOUND_BURN) + + wound_series = WOUND_SERIES_METAL_HEAT_WARPING + +/datum/wound/burn/heat_warping/set_limb(obj/item/bodypart/new_value, replaced) + var/obj/item/bodypart/old_limb = ..() + if(old_limb && !replaced && !QDELETED(old_limb)) + old_limb.heal_damage(burn = min(old_limb.max_damage, WOUND_MAX_INTEGRITY_CONSIDERED) * limb_integrity_penalty) + if(new_value) + var/limb_damage = limb.get_damage() + if(limb_damage < limb.wound_integrity_loss) + limb.set_burn_dam(CEILING(limb.burn_dam + limb.wound_integrity_loss - limb_damage, DAMAGE_PRECISION)) + return old_limb + +/datum/wound/burn/heat_warping/treat(obj/item/tool, mob/user) + if(tool.tool_behaviour == TOOL_WELDER) + return heat_chassis(tool, user) + if(tool.tool_behaviour == TOOL_CROWBAR) + return bend_chassis(tool, user) + return ..() + +/datum/wound/burn/heat_warping/check_grab_treatments(obj/item/tool, mob/user) + if(tool.get_temperature() > CHASSIS_MELTING_POINT) + INVOKE_ASYNC(src, PROC_REF(heat_chassis), tool, user) + return TRUE + return FALSE + +/datum/wound/burn/heat_warping/get_examine_description(mob/user) + . = ..() + if(re_heated) + . += span_notice(" It has been re-heated and can be bent back into shape.") + +/datum/wound/burn/heat_warping/proc/heat_chassis(obj/item/tool, mob/user) + if(re_heated) + to_chat(user, span_warning("[victim]'s [limb.name] is already hot!")) + return TRUE + victim.visible_message( + span_notice("[user] begins re-heating [victim]'s [limb.name]..."), + span_notice("[user] begins re-heating your [limb.name]..."), + ) + if(!tool.use_tool(victim, user, 5 SECONDS, volume = 50)) + return TRUE + victim.visible_message( + span_notice("[victim]'s [limb.name] glows red-hot, ready to be reformed."), + span_notice("Your [limb.name] glows red-hot, ready to be reformed."), + ) + re_heated = TRUE + addtimer(CALLBACK(src, PROC_REF(cool_down)), 1 MINUTES, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_DELETE_ME) + return TRUE + +/datum/wound/burn/heat_warping/proc/bend_chassis(obj/item/tool, mob/user) + if(!re_heated) + return FALSE + victim.visible_message( + span_notice("[user] starts to bend [victim]'s [limb.name] back into shape..."), + span_notice("[user] starts to bend your [limb.name] back into shape..."), + ) + if(!tool.use_tool(victim, user, 4 SECONDS, volume = 50)) + return TRUE + victim.visible_message( + span_notice("[user] starts to bend [victim]'s [limb.name] back into shape..."), + span_notice("[user] starts to bend your [limb.name] back into shape..."), + ) + qdel(src) + return TRUE + +/datum/wound/burn/heat_warping/proc/cool_down() + victim.visible_message( + span_warning("[victim]'s [limb.name] cools back down."), + span_warning("Your [limb.name] cools back down."), + ) + re_heated = FALSE + +/datum/wound/burn/heat_warping/moderate + name = "Surface Oxidization" + desc = "Patient's external plating has been oxidized by high temperature." + treat_text = "Recommend applying a cleaning agent to remove the oxidized layer, or burning it off with a welding tool." + examine_desc = "is oxidized across much of its surface" + occur_text = "starts to become discolored" + severity = WOUND_SEVERITY_MODERATE + treatable_tools = list(TOOL_WELDER) + threshold_penalty = 20 + limb_integrity_penalty = 0.1 + +/datum/wound_pregen_data/heat_warping/oxidation + abstract = FALSE + + wound_path_to_generate = /datum/wound/burn/heat_warping/moderate + threshold_minimum = 30 + +/datum/wound/burn/heat_warping/oxidation/moderate/set_victim(new_victim) + if(victim) + UnregisterSignal(victim, COMSIG_ATOM_EXPOSE_REAGENTS) + if(new_victim) + RegisterSignal(victim, COMSIG_ATOM_EXPOSE_REAGENTS, PROC_REF(on_expose)) + return ..() + +/datum/wound/burn/heat_warping/moderate/heat_chassis(obj/item/tool, mob/user) + victim.visible_message( + span_notice("[user] starts to burn the oxidized layer off of [victim]'s [limb.name]..."), + span_notice("[user] starts to burn the oxidized layer off of your [limb.name]..."), + ) + if(!tool.use_tool(victim, user, 4 SECONDS, volume = 50)) + return TRUE + victim.visible_message( + span_notice("[user] burns the oxidized layer off of [victim]'s [limb.name]."), + span_notice("[user] burns the oxidized layer off of your [limb.name]."), + ) + qdel(src) + return TRUE + +/datum/wound/burn/heat_warping/oxidation/moderate/proc/on_expose(atom/source, list/reagents, datum/reagents/source_reagents, methods, volume_modifier, show_message) + SIGNAL_HANDLER + + if(!(methods & (TOUCH|VAPOR|PATCH))) + return + var/total_clean_power = 0 + for(var/datum/reagent/space_cleaner/cleaner in reagents) + total_clean_power += cleaner.volume * cleaner.robot_clean_power * volume_modifier + if (total_clean_power) + source.visible_message( + span_notice("The surface of [victim]'s [limb.name] begins to bubble."), + span_notice("The surface of your [limb.name] begins to bubble."), + ) + playsound(victim, 'sound/effects/bubbles.ogg', 25 + total_clean_power * 2) + handle_regen_progress() + +/datum/wound/burn/heat_warping/severe + name = "Warped Plating" + desc = "Patient's external plating has been warped by thermal stress, threatening its structural integrity." + treat_text = "Recommend re-heating the external plating and bending it back into shape." + examine_desc = "is heat-warped and charred" + occur_text = "warps from the high temperature" + severity = WOUND_SEVERITY_SEVERE + treatable_tools = list(TOOL_WELDER, TOOL_CROWBAR) + threshold_penalty = 30 + limb_integrity_penalty = 0.2 + +/datum/wound_pregen_data/heat_warping/thermal_stress + abstract = FALSE + + wound_path_to_generate = /datum/wound/burn/heat_warping/severe + threshold_minimum = 75 + +/datum/wound/burn/heat_warping/critical + name = "Deformed Chassis" + desc = "Patient's chassis has been severely deformed from temperatures close to its melting point and can no longer function." + treat_text = "Recommend replacement of the warped external plating." + examine_desc = "is a deformed mass of metal and slag" + occur_text = "glows red-hot and begins to deform" + severity = WOUND_SEVERITY_CRITICAL + wound_flags = PLATING_DAMAGE | MANGLES_INTERIOR + disabling = TRUE + threshold_penalty = 40 + limb_integrity_penalty = 0.3 + +/datum/wound_pregen_data/heat_warping/deformed_slag + abstract = FALSE + + wound_path_to_generate = /datum/wound/burn/heat_warping/critical + threshold_minimum = 130 + +#undef CHASSIS_MELTING_POINT diff --git a/code/datums/wounds/slash.dm b/code/datums/wounds/slash.dm index a3003c22a6ce..b982ab2adce8 100644 --- a/code/datums/wounds/slash.dm +++ b/code/datums/wounds/slash.dm @@ -3,15 +3,26 @@ */ /datum/wound/slash - name = "Slashing Wound" + name = "Slashing (Cut) Wound" + sound_effect = 'sound/weapons/slice.ogg' + +/datum/wound_pregen_data/flesh_slash + abstract = TRUE + + required_wounding_types = list(WOUND_SLASH) + required_limb_biostate = BIO_FLESH + + wound_series = WOUND_SERIES_FLESH_SLASH_BLEED + +/datum/wound/slash/flesh + name = "Slashing (Cut) Flesh Wound" sound_effect = 'sound/weapons/slice.ogg' processes = TRUE - wound_type = WOUND_SLASH treatable_by = list(/obj/item/stack/medical/suture) treatable_by_grabbed = list(/obj/item/gun/energy/laser) - treatable_tool = TOOL_CAUTERY + treatable_tools = list(TOOL_CAUTERY) base_treat_time = 3 SECONDS - wound_flags = (FLESH_WOUND | ACCEPTS_GAUZE) + wound_flags = ACCEPTS_GAUZE | CAN_BE_GRASPED /// How much blood we start losing when this wound is first applied var/initial_flow @@ -24,26 +35,26 @@ /// The maximum flow we've had so far var/highest_flow -/datum/wound/slash/show_wound_topic(mob/user) +/datum/wound/slash/flesh/show_wound_topic(mob/user) return (user == victim && blood_flow) -/datum/wound/slash/Topic(href, href_list) +/datum/wound/slash/flesh/Topic(href, href_list) . = ..() if(href_list["wound_topic"]) if(!usr == victim) return victim.self_grasp_bleeding_limb(limb) -/datum/wound/slash/wound_injury(datum/wound/slash/old_wound = null, attack_direction = null) +/datum/wound/slash/flesh/wound_injury(datum/wound/slash/flesh/old_wound = null, attack_direction = null) blood_flow = initial_flow if(old_wound) blood_flow = max(old_wound.blood_flow, initial_flow) - else if(attack_direction && victim.blood_volume > BLOOD_VOLUME_OKAY) + else if(limb.can_bleed() && attack_direction && victim.blood_volume > BLOOD_VOLUME_OKAY) victim.spray_blood(attack_direction, severity) -/datum/wound/slash/get_examine_description(mob/user) +/datum/wound/slash/flesh/get_examine_description(mob/user) if(!limb.current_gauze) return ..() @@ -62,11 +73,14 @@ return "[msg.Join()]" -/datum/wound/slash/receive_damage(wounding_type, wounding_dmg, wound_bonus) - if(victim.stat != DEAD && wound_bonus != CANT_WOUND && wounding_type == WOUND_SLASH) // can't stab dead bodies to make it bleed faster this way - blood_flow += 0.05 * wounding_dmg +/datum/wound/slash/flesh/receive_damage(list/wounding_types, total_wound_dmg, wound_bonus) + if(!victim) // if we are dismembered, we can still take damage, its fine to check here + return + + if(victim.stat != DEAD && wound_bonus != CANT_WOUND && wounding_types[WOUND_SLASH] < WOUND_MINIMUM_DAMAGE) // can't stab dead bodies to make it bleed faster this way + blood_flow += 0.05 * wounding_types[WOUND_SLASH] -/datum/wound/slash/drag_bleed_amount() +/datum/wound/slash/flesh/drag_bleed_amount() // say we have 3 severe cuts with 3 blood flow each, pretty reasonable // compare with being at 100 brute damage before, where you bled (brute/100 * 2), = 2 blood per tile // 3 * 3 * 0.1 = 0.9 blood total, less than before! the share here is .3 blood of course. @@ -78,15 +92,21 @@ return bleed_amt -/datum/wound/slash/get_bleed_rate_of_change() +/datum/wound/slash/flesh/get_bleed_rate_of_change() + if(!limb.can_bleed()) + return BLOOD_FLOW_STEADY if(HAS_TRAIT(victim, TRAIT_BLOODY_MESS)) return BLOOD_FLOW_INCREASING if(limb.current_gauze || clot_rate > 0) return BLOOD_FLOW_DECREASING if(clot_rate < 0) return BLOOD_FLOW_INCREASING + return BLOOD_FLOW_STEADY + +/datum/wound/slash/flesh/handle_process() + if(!victim || IS_IN_STASIS(victim)) + return -/datum/wound/slash/handle_process() if(victim.stat == DEAD) blood_flow -= max(clot_rate, WOUND_SLASH_DEAD_CLOT_MIN) if(blood_flow < minimum_flow) @@ -114,12 +134,12 @@ if(blood_flow < minimum_flow) if(demotes_to) - replace_wound(demotes_to) + replace_wound(new demotes_to) else to_chat(victim, span_green("The cut on your [limb.name] has stopped bleeding!")) qdel(src) -/datum/wound/slash/on_stasis() +/datum/wound/slash/flesh/on_stasis() if(blood_flow >= minimum_flow) return if(demotes_to) @@ -129,29 +149,29 @@ /* BEWARE, THE BELOW NONSENSE IS MADNESS. bones.dm looks more like what I have in mind and is sufficiently clean, don't pay attention to this messiness */ // what do you mean dont pay attention. what?? -/datum/wound/slash/check_grab_treatments(obj/item/I, mob/user) +/datum/wound/slash/flesh/check_grab_treatments(obj/item/I, mob/user) if(istype(I, /obj/item/gun/energy/laser)) return TRUE if(I.get_temperature()) // if we're using something hot but not a cautery, we need to be aggro grabbing them first, so we don't try treating someone we're eswording return TRUE -/datum/wound/slash/treat(obj/item/I, mob/user) +/datum/wound/slash/flesh/treat(obj/item/I, mob/user) if(istype(I, /obj/item/gun/energy/laser)) - las_cauterize(I, user) + return las_cauterize(I, user) else if(I.tool_behaviour == TOOL_CAUTERY || I.get_temperature()) - tool_cauterize(I, user) + return tool_cauterize(I, user) else if(istype(I, /obj/item/stack/medical/suture)) - suture(I, user) + return suture(I, user) -/datum/wound/slash/on_xadone(power) //this is for cryo, check and maybe remove later +/datum/wound/slash/flesh/on_xadone(power) //this is for cryo, check and maybe remove later . = ..() blood_flow -= 0.03 * power // i think it's like a minimum of 3 power, so .09 blood_flow reduction per tick -/datum/wound/slash/on_synthflesh(power) +/datum/wound/slash/flesh/on_synthflesh(power) . = ..() blood_flow -= 0.075 * power // 20u * 0.075 = -1.5 blood flow -/datum/wound/slash/on_silfrine(power) +/datum/wound/slash/flesh/on_silfrine(power) switch(power) if(0 to 5) EMPTY_BLOCK_GUARD @@ -164,7 +184,7 @@ blood_flow -= 0.05 * power /// If someone's putting a laser gun up to our cut to cauterize it -/datum/wound/slash/proc/las_cauterize(obj/item/gun/energy/laser/lasgun, mob/user) +/datum/wound/slash/flesh/proc/las_cauterize(obj/item/gun/energy/laser/lasgun, mob/user) var/self_penalty_mult = (user == victim ? 1.25 : 1) user.visible_message( span_warning("[user] begins aiming [lasgun] directly at [victim]'s [limb.name]..."), @@ -172,20 +192,21 @@ ) if(!do_after(user, base_treat_time * self_penalty_mult, target=victim, extra_checks = CALLBACK(src, PROC_REF(still_exists)))) - return + return TRUE var/damage = lasgun.chambered.BB.damage lasgun.chambered.BB.wound_bonus -= 30 lasgun.chambered.BB.damage *= self_penalty_mult if(!lasgun.process_fire(victim, victim, TRUE, null, limb.body_zone)) - return + return TRUE victim.force_scream() blood_flow -= damage / (5 * self_penalty_mult) // 20 / 5 = 4 bloodflow removed, p good victim.visible_message(span_warning("The cuts on [victim]'s [limb.name] scar over!")) + return TRUE /// If someone is using either a cautery tool or something with heat to cauterize this cut -/datum/wound/slash/proc/tool_cauterize(obj/item/I, mob/user) +/datum/wound/slash/flesh/proc/tool_cauterize(obj/item/I, mob/user) var/improv_penalty_mult = (I.tool_behaviour == TOOL_CAUTERY ? 1 : 1.25) // 25% longer and less effective if you don't use a real cautery var/self_penalty_mult = (user == victim ? 1.2 : 1) user.visible_message( @@ -193,7 +214,7 @@ span_warning("You begin cauterizing [user == victim ? "your" : "[victim]'s"] [limb.name] with [I]..."), ) if(!do_after(user, base_treat_time * self_penalty_mult * improv_penalty_mult, target = victim, extra_checks = CALLBACK(src, PROC_REF(still_exists)))) - return + return TRUE playsound(user, 'sound/surgery/cautery2.ogg', 20) user.visible_message( @@ -206,12 +227,13 @@ blood_flow -= blood_cauterized if(blood_flow > minimum_flow) - try_treating(I, user) + return try_treating(I, user) else if(demotes_to) to_chat(user, span_green("You successfully lower the severity of [user == victim ? "your" : "[victim]'s"] cuts.")) + return TRUE /// If someone is using a suture to close this cut -/datum/wound/slash/proc/suture(obj/item/stack/medical/suture/I, mob/user) +/datum/wound/slash/flesh/proc/suture(obj/item/stack/medical/suture/I, mob/user) var/self_penalty_mult = (user == victim ? 1 : 1) user.visible_message( span_notice("[user] begins stitching [victim]'s [limb.name] with [I]..."), @@ -219,7 +241,7 @@ ) if(!do_after(user, base_treat_time * self_penalty_mult, target = victim, extra_checks = CALLBACK(src, PROC_REF(still_exists)))) - return + return TRUE user.visible_message( span_green("[user] stitches up some of the bleeding on [victim]."), span_green("You stitch up some of the bleeding on [user == victim ? "yourself" : "[victim]"]."), @@ -230,11 +252,13 @@ I.use(1) if(blood_flow > minimum_flow) - try_treating(I, user) + return try_treating(I, user) else if(demotes_to) to_chat(user, span_green("You successfully lower the severity of [user == victim ? "your" : "[victim]'s"] cuts.")) + return TRUE + return FALSE -/datum/wound/slash/moderate +/datum/wound/slash/flesh/moderate name = "Rough Abrasion" desc = "Patient's flesh has been badly scraped, generating moderate blood loss." treat_text = "Application of clean bandages and sutures." @@ -245,11 +269,16 @@ initial_flow = 1.5 minimum_flow = 0.1 clot_rate = 0.015 - threshold_minimum = 30 threshold_penalty = 10 - status_effect_type = /datum/status_effect/wound/slash/moderate + status_effect_type = /datum/status_effect/wound/slash/flesh/moderate + +/datum/wound_pregen_data/flesh_slash/abrasion + abstract = FALSE -/datum/wound/slash/severe + wound_path_to_generate = /datum/wound/slash/flesh/moderate + threshold_minimum = 30 + +/datum/wound/slash/flesh/severe name = "Open Laceration" desc = "Patient's flesh is ripped clean open, allowing significant blood loss." treat_text = "Application of clean bandages and sutures or cauterization." @@ -260,12 +289,17 @@ initial_flow = 2 minimum_flow = 1.5 clot_rate = 0.025 - threshold_minimum = 50 threshold_penalty = 20 - demotes_to = /datum/wound/slash/moderate - status_effect_type = /datum/status_effect/wound/slash/severe + demotes_to = /datum/wound/slash/flesh/moderate + status_effect_type = /datum/status_effect/wound/slash/flesh/severe + +/datum/wound_pregen_data/flesh_slash/laceration + abstract = FALSE -/datum/wound/slash/critical + wound_path_to_generate = /datum/wound/slash/flesh/severe + threshold_minimum = 50 + +/datum/wound/slash/flesh/critical name = "Weeping Avulsion" desc = "Patient's flesh is completely torn open, along with significant loss of tissue. Extreme blood loss will lead to quick death without intervention." treat_text = "Bandage immediately and apply pressure, then apply sutures or cauterization." @@ -276,8 +310,18 @@ initial_flow = 3 minimum_flow = 2 clot_rate = -0.005 // critical cuts actively get worse instead of better - threshold_minimum = 100 threshold_penalty = 50 - demotes_to = /datum/wound/slash/severe - status_effect_type = /datum/status_effect/wound/slash/critical - wound_flags = (FLESH_WOUND | ACCEPTS_GAUZE | MANGLES_FLESH) + demotes_to = /datum/wound/slash/flesh/severe + status_effect_type = /datum/status_effect/wound/slash/flesh/critical + wound_flags = ACCEPTS_GAUZE | MANGLES_EXTERIOR | CAN_BE_GRASPED + +/datum/wound_pregen_data/flesh_slash/avulsion + abstract = FALSE + + wound_path_to_generate = /datum/wound/slash/flesh/critical + threshold_minimum = 100 + +/datum/wound/slash/flesh/critical/receive_damage(list/wounding_types, total_wound_dmg, wound_bonus) + . = ..() + if(victim && wounding_types[WOUND_BLUNT]) + playsound(victim, "sound/effects/wounds/crackandbleed.ogg", 100) diff --git a/code/game/MapData/shuttles/nanotrasen_ranger.dm b/code/game/MapData/shuttles/nanotrasen_ranger.dm index fe507bef186a..877701d80d49 100644 --- a/code/game/MapData/shuttles/nanotrasen_ranger.dm +++ b/code/game/MapData/shuttles/nanotrasen_ranger.dm @@ -111,7 +111,7 @@ max_heat_protection_temperature = null /obj/item/clothing/suit/space/hardsuit/ert/lp/sec - armor = list("melee" = 40, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 20, "bio" = 100, "rad" = 50, "fire" = 40, "acid" = 40, "wound" = 30) // [CELADON-EDIT] - CELADON_BALANCE + armor = list("melee" = 40, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 20, "bio" = 100, "rad" = 50, "fire" = 40, "acid" = 40) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/lp/sec name = "Loss Prevention Security Hardsuit" desc = "The best of the best security staff get assigned to the ERT. Second best are given this Hardsuit as a part of the LP Team." @@ -119,7 +119,7 @@ item_state = "ert_security" /obj/item/clothing/head/helmet/space/hardsuit/ert/lp/sec - armor = list("melee" = 40, "bullet" = 40, "laser" = 20,"energy" = 20, "bomb" = 20, "bio" = 100, "rad" = 50, "fire" = 40, "acid" = 40, "wound" = 30) // [CELADON-EDIT] - CELADON_BALANCE + armor = list("melee" = 40, "bullet" = 40, "laser" = 20,"energy" = 20, "bomb" = 20, "bio" = 100, "rad" = 50, "fire" = 40, "acid" = 40) hardsuit_type = "ert_security" name = "Loss Prevention Security Hardsuit Helmet" desc = "The helmet that comes attached to the LP Team Security Hardsuit." @@ -127,7 +127,7 @@ item_state = "hardsuit0-ert_security" /obj/item/clothing/suit/space/hardsuit/ert/lp/engi - armor = list("melee" = 30, "bullet" = 20, "laser" = 30, "energy" = 30, "bomb" = 25, "bio" = 100, "rad" = 75, "fire" = 90, "acid" = 75, "wound" = 20) // [CELADON-EDIT] - CELADON_BALANCE + armor = list("melee" = 30, "bullet" = 20, "laser" = 30, "energy" = 30, "bomb" = 25, "bio" = 100, "rad" = 75, "fire" = 90, "acid" = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/lp/engi name = "Loss Prevention Engineering Hardsuit" desc = "The best of the best engineering staff get assigned to the ERT. Second best are given this Hardsuit as a part of the LP Team." @@ -135,7 +135,7 @@ item_state = "ert_engineer" /obj/item/clothing/head/helmet/space/hardsuit/ert/lp/engi - armor = list("melee" = 38, "bullet" = 20, "laser" = 30, "energy" = 30, "bomb" = 25, "bio" = 100, "rad" = 75, "fire" = 90, "acid" = 75, "wound" = 20) // [CELADON-EDIT] - CELADON_BALANCE + armor = list("melee" = 38, "bullet" = 20, "laser" = 30, "energy" = 30, "bomb" = 25, "bio" = 100, "rad" = 75, "fire" = 90, "acid" = 75) name = "Loss Prevention Engineering Hardsuit Helmet" desc = "The helmet that comes attached to the LP Team Engineering Hardsuit." icon_state = "hardsuit0-ert_engineer" @@ -143,7 +143,7 @@ hardsuit_type = "ert_engineer" /obj/item/clothing/suit/space/hardsuit/ert/lp/med - armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 25, "bomb" = 25, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 60, "wound" = 20) // [CELADON-EDIT] - CELADON_BALANCE + armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 25, "bomb" = 25, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 60) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/lp/med name = "Loss Prevention Medical Hardsuit" desc = "The best of the best medical staff get assigned to the ERT. Second best are given this Hardsuit as a part of the LP Team." @@ -152,7 +152,7 @@ slowdown = 0.5 /obj/item/clothing/head/helmet/space/hardsuit/ert/lp/med - armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 25, "bomb" = 25, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 60, "wound" = 20) // [CELADON-EDIT] - CELADON_BALANCE + armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 25, "bomb" = 25, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 60) name = "Loss Prevention Medical Hardsuit Helmet" desc = "The helmet that comes attached to the LP Team Medical Hardsuit." icon_state = "hardsuit0-ert_medical" @@ -163,7 +163,7 @@ /obj/item/clothing/head/helmet/space/hardsuit/lp name = "RIG heatsuit helmet" desc = "The helmet to the RIG heat suit. It's packed with heat diverting materials, coolant pipes, and a two inch thick face screen." - armor = list("melee" = 5, "bullet" = 5, "laser" = 1, "energy" = 1, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 75, "wound" = 10) // [CELADON-EDIT] - CELADON_BALANCE + armor = list("melee" = 5, "bullet" = 5, "laser" = 1, "energy" = 1, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 75) heat_protection = HEAD max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = ACID_PROOF | FIRE_PROOF @@ -171,7 +171,7 @@ /obj/item/clothing/suit/space/hardsuit/ancient/lp name = "RIG heat suit" desc = "A fully heat-resistant suit based on an early RIG hardsuit prototype. It sacrifices armor of any kind for intricate heatsinks. It remains rather bulky as a result." - armor = list("melee" = 5, "bullet" = 5, "laser" = 1, "energy" = 1, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 75, "wound" = 10) // [CELADON-EDIT] - CELADON_BALANCE + armor = list("melee" = 5, "bullet" = 5, "laser" = 1, "energy" = 1, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/lp heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT diff --git a/code/game/area/areas/ruins/wasteplanet.dm b/code/game/area/areas/ruins/wasteplanet.dm index ed0aae63a990..351db1c359c9 100644 --- a/code/game/area/areas/ruins/wasteplanet.dm +++ b/code/game/area/areas/ruins/wasteplanet.dm @@ -30,20 +30,6 @@ name = "Abandoned Exosuit Bay Engineering" icon_state = "engine" -//Abandoned Waste Site - -/area/ruin/wasteplanet/wasteplanet_radiation/main - name = "Abandoned Waste Site" - icon_state = "green" - -/area/ruin/wasteplanet/wasteplanet_radiation/maint - name = "Abandoned Maintenance Area" - icon_state = "engine" - -/area/ruin/wasteplanet/wasteplanet_radiation/containment - name = "Abandoned Waste Containment Vault" - icon_state = "disposal" - //Wasteplanet_Tradepost /area/ruin/wasteplanet/tradepost/barracks @@ -143,3 +129,61 @@ /area/ruin/wasteplanet/facility/southwing name = "South Wing" icon_state = "amaint" + +//Recycle Bay + +/area/ruin/wasteplanet/recycle_bay/atmospherics + name = "Recycle Bay Atmospherics" + icon_state = "atmos" + +/area/ruin/wasteplanet/recycle_bay/dorms + name = "Recycle Bay Dormatory" + icon_state = "crew_quarters" + +/area/ruin/wasteplanet/recycle_bay/security + name = "Recycle Bay Security Office" + icon_state = "security" + +/area/ruin/wasteplanet/recycle_bay/armory + name = "Recycle Bay Armory" + icon_state = "armory" + +/area/ruin/wasteplanet/recycle_bay/officers + name = "Recycle Bay Officers Lounge" + icon_state = "red" + +/area/ruin/wasteplanet/recycle_bay/engineering + name = "Recycle Bay Engineering" + icon_state = "engine" + +/area/ruin/wasteplanet/recycle_bay/security_dorms + name = "Recycle Bay Security Dorms" + icon_state = "blue" + +/area/ruin/wasteplanet/recycle_bay/electrical + name = "Recycle Bay Electrical" + icon_state = "engine_smes" + +/area/ruin/wasteplanet/recycle_bay/telecommunications + name = "Recycle Bay Telecommunications" + icon_state = "tcomsatcham" + +/area/ruin/wasteplanet/recycle_bay/eva + name = "Recycle Bay EVA" + icon_state = "eva" + +/area/ruin/wasteplanet/recycle_bay/salvage_bay + name = "Recycle Bay Salvage Area" + icon_state = "disposal" + +/area/ruin/wasteplanet/recycle_bay/vault + name = "Recycle Bay Vault" + icon_state = "cargo_bay" + +/area/ruin/wasteplanet/recycle_bay/officers_dorms + name = "Recycle Bay Officers Dorms" + icon_state = "crew_quarters" + +/area/ruin/wasteplanet/recycle_bay/officers_office + name = "Recycle Bay Officers Office" + icon_state = "bridge" diff --git a/code/game/atoms.dm b/code/game/atoms.dm index a98b65d2bbde..2dbd9d8acaea 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -506,12 +506,14 @@ * - show_message: Whether to display anything to mobs when they are exposed. */ /atom/proc/expose_reagents(list/reagents, datum/reagents/source, method=TOUCH, volume_modifier=1, show_message=TRUE) - if((. = SEND_SIGNAL(src, COMSIG_ATOM_EXPOSE_REAGENTS, reagents, source, method, volume_modifier, show_message)) & COMPONENT_NO_EXPOSE_REAGENTS) + . = SEND_SIGNAL(src, COMSIG_ATOM_EXPOSE_REAGENTS, reagents, source, method, volume_modifier, show_message) + if(. & COMPONENT_NO_EXPOSE_REAGENTS) return for(var/reagent in reagents) var/datum/reagent/R = reagent . |= R.expose_atom(src, reagents[R]) + SEND_SIGNAL(src, COMSIG_ATOM_AFTER_EXPOSE_REAGENTS, reagents, source, method, volume_modifier, show_message) /// Are you allowed to drop this atom /atom/proc/AllowDrop() @@ -1757,16 +1759,22 @@ * * dealt_bare_wound_bonus- The bare_wound_bonus, if one was specified *and applied*, of the wounding attack. Not shown if armor was present * * base_roll- Base wounding ability of an attack is a random number from 1 to (dealt_damage ** WOUND_DAMAGE_EXPONENT). This is the number that was rolled in there, before mods */ -/proc/log_wound(atom/victim, datum/wound/suffered_wound, dealt_damage, dealt_wound_bonus, dealt_bare_wound_bonus, base_roll) - if(QDELETED(victim) || !suffered_wound) +/proc/log_wound(atom/victim, obj/item/bodypart/limb, list/datum/wound/suffered_wounds, list/wounding_types, dealt_wound_bonus, dealt_bare_wound_bonus, list/base_rolls) + if(QDELETED(victim) || !LAZYLEN(suffered_wounds)) return - var/message = "has suffered: [suffered_wound][suffered_wound.limb ? " to [suffered_wound.limb.name]" : null]"// maybe indicate if it's a promote/demote? - - if(dealt_damage) - message += " | Damage: [dealt_damage]" - // The base roll is useful since it can show how lucky someone got with the given attack. For example, dealing a cut - if(base_roll) - message += " (rolled [base_roll]/[dealt_damage ** WOUND_DAMAGE_EXPONENT])" + var/message = "has suffered: [english_list(suffered_wounds)][limb ? " to [limb.name]" : null]"// maybe indicate if it's a promote/demote? + + if(wounding_types) + var/damage_text + for(var/wounding_type in wounding_types) + if(damage_text) + damage_text += ", " + var/damage_dealt = wounding_types[wounding_type] + damage_text = "[damage_dealt] [wounding_type]" + // The base roll is useful since it can show how lucky someone got with the given attack. For example, dealing a cut + if(base_rolls) + damage_text += "(rolled [base_rolls[wounding_type]]/[damage_dealt ** WOUND_DAMAGE_EXPONENT])" + message += " | Damage: [damage_text]" if(dealt_wound_bonus) message += " | WB: [dealt_wound_bonus]" diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index 5981d7e532bb..3fd99fb4369d 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -39,19 +39,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event for(var/i = 0; i < number; i++) spawn_meteor(meteortypes) -// [CELADON-ADD] - CELADON_OVERMAP_COLLISION - Это вагабонд насрал - -/proc/spawn_meteors_alt(number = 10, list/meteortypes, vlevel, port, dirc) - for(var/i = 0; i < number; i++) - spawn_meteor(meteortypes, vlevel, 0, port, dirc) - -// [/CELADON-ADD] - -// [CELADON-EDIT] - CELADON_OVERMAP_COLLISION - Это вагабонд насрал -// /proc/spawn_meteor(list/meteortypes, datum/virtual_level/vlevel, padding = MAP_EDGE_PAD, obj/docking_port/mobile/shuttle_port) // ORIGINAL -// /proc/spawn_meteor(list/meteortypes, datum/virtual_level/vlevel, padding = MAP_EDGE_PAD, direc = "none") // Это Вагабонда КОД JOPA -/proc/spawn_meteor(list/meteortypes, datum/virtual_level/vlevel, padding = MAP_EDGE_PAD, obj/docking_port/mobile/shuttle_port, direc = "none") -// [/CELADON-EDIT] +/proc/spawn_meteor(list/meteortypes, datum/virtual_level/vlevel, padding = MAP_EDGE_PAD, obj/docking_port/mobile/shuttle_port, direc = "none") // [CELADON-EDIT] - CELADON_OVERMAP_COLLISION - Это вагабонд насрал var/turf/pickedstart var/turf/pickedgoal var/max_i = 10//number of tries to spawn meteor. @@ -61,7 +49,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event if(direc != "none") startSide = direc // [/CELADON-ADD] - if(shuttle_port) // возможно двойной метеорит прилетит // КОД JOPA + if(shuttle_port) startSide = shuttle_port.preferred_direction pickedstart = vlevel.get_side_turf(startSide, padding) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index a83273c58e4c..cea96db7a757 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -469,10 +469,4 @@ //Called when the object is constructed by an autolathe //Has a reference to the autolathe so you can do !!FUN!! things with hacked lathes /obj/item/proc/autolathe_crafted(obj/machinery/autolathe/lathe) - // [CELADON_EDIT] — PRINTED_ITEMS_SELLING_VITO - autolathe_printed = TRUE - var/list/allcontents = GetAllContents() - for(var/obj/item/I in allcontents) - I.autolathe_printed = TRUE - // [/CELADON_EDIT] return diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 6142327dc3d4..5dd866bff039 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -12,7 +12,6 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( /obj/item/toy/prize/deathripley = 1, /obj/item/toy/prize/gygax = 1, /obj/item/toy/prize/durand = 1, - /obj/item/toy/prize/honk = 1, // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS /obj/item/toy/prize/marauder = 1, /obj/item/toy/prize/seraph = 1, /obj/item/toy/prize/touro = 1, @@ -41,9 +40,6 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( /obj/item/toy/toy_dagger = 2, /obj/item/extendohand/acme = 1, /obj/item/card/emagfake = 1, - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - /obj/item/clothing/shoes/wheelys = 2, - // [/CELADON-ADD] /obj/item/clothing/shoes/kindleKicks = 2, /obj/item/toy/plush/goatplushie/angry/realgoat = 2, /obj/item/toy/plush/moth = 2, diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 32fa59ae76ce..b5291587406c 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -119,7 +119,7 @@ if (get_dist(src, L) > range) continue - if(L.flash_act(affect_silicon = 1)) + if(L.flash_act(affect_silicon = 1) & FLASH_EFFECT) L.Paralyze(strength) flashed = TRUE diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index 847f3bee458c..7be005098444 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -137,11 +137,11 @@ // [CELADON-ADD] - CELADON_FIXES_BLOOD // Проверяем, если это кровь и если у пациента уже достаточно крови var/actual_transfer_amount = transfer_amount * seconds_per_tick * 0.5 - + // Проверяем, содержит ли контейнер кровь if(ishuman(attached) && beaker.reagents.has_reagent(/datum/reagent/blood)) var/mob/living/carbon/human/H = attached - + // Ограничиваем переливание крови до BLOOD_VOLUME_NORMAL независимо от типа крови if(H.blood_volume >= BLOOD_VOLUME_NORMAL) actual_transfer_amount = min(actual_transfer_amount, BLOOD_VOLUME_NORMAL - H.blood_volume) @@ -149,10 +149,8 @@ if(prob(5)) visible_message(span_hear("[src] pings, indicating the patient has reached normal blood level.")) return - // [/CELADON-ADD][CELADON-EDIT] - CELADON_FIXES_BLOOD - // beaker.reagents.trans_to(attached, transfer_amount * seconds_per_tick * 0.5, method = INJECT, show_message = FALSE) //make reagents reacts, but don't spam messages // ORIGINAL beaker.reagents.trans_to(attached, actual_transfer_amount, methods = INJECT, show_message = FALSE) //make reagents reacts, but don't spam messages - // [/CELADON-EDIT] + // [/CELADON-ADD][CELADON-EDIT] - CELADON_FIXES_BLOOD update_appearance() // Take blood diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index da32e0b5692c..e887acbf348d 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -35,11 +35,11 @@ /// Stun mode projectile type var/stun_projectile = /obj/projectile/beam/disabler /// Sound of stun projectile - var/stun_projectile_sound = 'sound/weapons/plasma_cutter.ogg' + var/stun_projectile_sound = 'sound/weapons/melee/plasmacutter/plasma_cutter.ogg' /// Lethal mode projectile type var/lethal_projectile = /obj/projectile/beam/laser /// Sound of lethal projectile - var/lethal_projectile_sound = 'sound/weapons/plasma_cutter.ogg' + var/lethal_projectile_sound = 'sound/weapons/melee/plasmacutter/plasma_cutter.ogg' /// Power needed per shot var/reqpower = 500 diff --git a/code/game/machinery/porta_turret/portable_turret_control.dm b/code/game/machinery/porta_turret/portable_turret_control.dm index 61daa509563c..87cf43add362 100644 --- a/code/game/machinery/porta_turret/portable_turret_control.dm +++ b/code/game/machinery/porta_turret/portable_turret_control.dm @@ -6,7 +6,7 @@ /obj/machinery/turretid name = "turret control panel" desc = "Used to control a room's automated defenses." - icon = 'mod_celadon/_storage_icons/icons/machinery/turret_control.dmi' // [CELADON-EDIT] - Original - 'icons/obj/machines/turret_control.dmi' + icon = 'icons/obj/machines/turret_control.dmi' icon_state = "control_standby" base_icon_state = "control" density = FALSE @@ -263,7 +263,7 @@ /obj/item/wallframe/turret_control name = "turret control frame" desc = "Used for building turret control panels." - icon = 'mod_celadon/_storage_icons/icons/machinery/turret_control.dmi' // [CELADON-EDIT] - Original - 'icons/obj/machines/turret_control.dmi' + icon = 'icons/obj/machines/turret_control.dmi' icon_state = "control_off" result_path = /obj/machinery/turretid custom_materials = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT) diff --git a/code/game/machinery/porta_turret/turret_types/ship_turret_types.dm b/code/game/machinery/porta_turret/turret_types/ship_turret_types.dm index 5244b09ea350..ea469855afb8 100644 --- a/code/game/machinery/porta_turret/turret_types/ship_turret_types.dm +++ b/code/game/machinery/porta_turret/turret_types/ship_turret_types.dm @@ -158,7 +158,7 @@ stun_projectile_sound = 'sound/weapons/gun/rifle/hydra.ogg' lethal_projectile = /obj/projectile/bullet/a556_42 lethal_projectile_sound = 'sound/weapons/gun/rifle/hydra.ogg' - faction = list(FACTION_RAMZI_RENEGADE, FACTION_TURRET) // [CELADON-ADD] - RAMZI-RENEGATE + faction = list(FACTION_RAMZI, FACTION_TURRET) max_integrity = 180 shot_delay = 16 burst_delay = 8 diff --git a/code/game/machinery/shuttle/ship_gravity.dm b/code/game/machinery/shuttle/ship_gravity.dm index 3c431eef4607..773e442b9a9b 100644 --- a/code/game/machinery/shuttle/ship_gravity.dm +++ b/code/game/machinery/shuttle/ship_gravity.dm @@ -12,18 +12,10 @@ idle_power_usage = IDLE_DRAW_MINIMAL active_power_usage = ACTIVE_DRAW_EXTREME circuit = /obj/item/circuitboard/machine/ship_gravity - var/datum/looping_sound/gravity_generator/soundloop // [CELADON-ADD] - CELADON_GRAVGEN var/charging = FALSE var/active = FALSE var/charge = 0 -// [CELADON-ADD] - CELADON_GRAVGEN - light_power = 0 - light_range = 2 - light_color = COLOR_GRAY - luminosity = 1 -// [/CELADON-ADD] - /obj/machinery/power/ship_gravity/unanchored anchored = FALSE @@ -36,18 +28,6 @@ . = ..() if(anchored) connect_to_network() -// [CELADON-ADD] - CELADON_GRAVGEN - soundloop = new(list(src), FALSE) - -/obj/machinery/power/ship_gravity/Destroy() - . = ..() - QDEL_NULL(soundloop) - -/obj/machinery/power/ship_gravity/emp_act(severity) - . = ..() - if(prob(50)) - set_state(!active) -// [/CELADON-ADD] /obj/machinery/power/ship_gravity/process(seconds_per_tick) if(charging && (!active_power_usage || surplus() >= active_power_usage)) @@ -67,32 +47,24 @@ if(toggle) active = TRUE playsound(src.loc, 'sound/effects/empulse.ogg', 100, TRUE) -// [CELADON-ADD] - CELADON_GRAVGEN + visible_message(span_warning("The [src.name] finishes charging!"), blind_message = span_hear("You hear a low hum fade in.")) + // [CELADON-ADD] - CELADON_GRAVGEN soundloop.start() set_light(l_power = 0.5) -// [/CELADON-ADD] - visible_message(span_warning("The [src.name] finishes charging!"), blind_message = span_hear("You hear a low hum fade in.")) + // [/CELADON-ADD] else visible_message(span_danger("The [src.name] shuts down due to lack of power!"), blind_message = span_hear("You hear a low hum fade out.")) active = FALSE -// [CELADON-ADD] - CELADON_GRAVGEN + log_game("[src] deactivated due to lack of power at [AREACOORD(src)]", INVESTIGATE_GRAVITY) + // [CELADON-ADD] - CELADON_GRAVGEN soundloop.stop() set_light(l_power = 0) -// [/CELADON-ADD] - log_game("[src] deactivated due to lack of power at [AREACOORD(src)]", INVESTIGATE_GRAVITY) + // [/CELADON-ADD] update_appearance() /obj/machinery/power/ship_gravity/update_overlays() . = ..() -// [CELADON-EDIT] - CELADON_GRAVGEN -/* Original code - var/mutable_appearance/charge_state - if(active) - charge_state = mutable_appearance(icon, "charge_active") - if(charge < 5) - charge_state = mutable_appearance(icon, "charge_[charge]") - . += charge_state -*/ + // [CELADON-EDIT] - CELADON_GRAVGEN if(active) SSvis_overlays.add_vis_overlay(src, icon, "charge_active", layer, plane, dir) SSvis_overlays.add_vis_overlay(src, icon, "charge_active", layer, EMISSIVE_PLANE, dir) @@ -101,7 +73,7 @@ SSvis_overlays.add_vis_overlay(src, icon, "charge_[charge]", layer, plane, dir) SSvis_overlays.add_vis_overlay(src, icon, "charge_[charge]", layer, EMISSIVE_PLANE, dir) . += "charge_[charge]" -// [/CELADON-EDIT] + // [/CELADON-EDIT] /obj/machinery/power/ship_gravity/examine(mob/user) . = ..() diff --git a/code/game/machinery/shuttle/shuttle_engine_types.dm b/code/game/machinery/shuttle/shuttle_engine_types.dm index 53eb9f9ad2fa..b636536f5ace 100644 --- a/code/game/machinery/shuttle/shuttle_engine_types.dm +++ b/code/game/machinery/shuttle/shuttle_engine_types.dm @@ -225,15 +225,12 @@ icon_state_off = "burst_off" icon_state_closed = "burst" icon_state_open = "burst_open" - // [CELADON-EDIT] - CELADON_BALANCE - Трогаем движки - // thrust = 10 // CELADON-EDIT - ORIGINAL - ///Amount, in kilojoules, needed for a full burn. - thrust = 4 - // [/CELADON-EDIT] + thrust = 10 //used by stockparts, efficiency_multiplier var/efficiency_multiplier = 1 //used by stockparts, thrust multiplier var/thrust_multiplier = 1 + ///Amount, in kilojoules, needed for a full burn. var/power_per_burn = 50000 /obj/machinery/power/shuttle/engine/electric/bad diff --git a/code/game/machinery/shuttle/shuttle_heater.dm b/code/game/machinery/shuttle/shuttle_heater.dm index 744c4559be4b..d18c38de2b86 100644 --- a/code/game/machinery/shuttle/shuttle_heater.dm +++ b/code/game/machinery/shuttle/shuttle_heater.dm @@ -22,10 +22,7 @@ name = "shuttle atmospherics device" desc = "This does something to do with shuttle atmospherics" icon_state = "heater" - // [CELADON-EDIT] - CELADON_BALANCE - // icon = 'icons/obj/shuttle.dmi' // CELADON-EDIT - ORIGINAL - icon = 'mod_celadon/_storage_icons/icons/structures/shuttle.dmi' - // [/CELADON-EDIT] + icon = 'icons/obj/shuttle.dmi' dir = EAST /obj/machinery/atmospherics/components/unary/shuttle/heater diff --git a/code/game/machinery/shuttle/turbine.dm b/code/game/machinery/shuttle/turbine.dm index 768289824ce7..9e85b78e60c5 100644 --- a/code/game/machinery/shuttle/turbine.dm +++ b/code/game/machinery/shuttle/turbine.dm @@ -124,10 +124,6 @@ . = ..() if(in_range(user, src) || isobserver(user)) . += span_notice("The status display reads: Efficiency at [efficiency*100]%.") - // [CELADON-ADD] - CELADON_INTEQ_VENDOR - добавляем поддержку к мультитулу - . += span_notice("The compressor ID is '[comp_id]'.") - . += span_notice("It looks like you can modify the id settings by using a multitool on it.") - // [/CELADON-ADD] /obj/machinery/power/compressor/attackby(obj/item/I, mob/user, params) if(default_deconstruction_screwdriver(user, initial(icon_state), initial(icon_state), I)) @@ -371,26 +367,6 @@ locate_machinery() . = TRUE -// [CELADON-ADD] - CELADON_INTEQ_VENDOR - добавляем поддержку мультитула -//MARK: Multitool actions - -/obj/machinery/power/compressor/multitool_act(mob/living/user, obj/item/I) - . = ..() - var/obj/item/multitool/M = I - var/list/choice_list = list("Modify the compressor ID", "Save the Compressor connection to the multitool buffer") - var/choice = tgui_input_list(user, "Select an option", "Advanced Configuration", choice_list) - - switch(choice) - if("Modify the compressor ID") - comp_id = stripped_input(user, "Set a compressor ID for this compressor. Ensure that it is no bigger than 32 characters long.", "Componcompressorent ID Setup", max_length = 32) - to_chat(user, span_notice("You set [src] compressor ID to '[comp_id]'.")) - - if("Save the Compressor connection to the multitool buffer") - M.buffer = src - to_chat(user, span_notice("You add [src] connection to the multitool's buffer.")) - - return TRUE -// [/CELADON-ADD] ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -459,34 +435,6 @@ locate_machinery() . = TRUE -// [CELADON-ADD] - CELADON_INTEQ_VENDOR - добавляем поддержку мультитула -//MARK: Multitool actions -/obj/machinery/computer/turbine_computer/examine(mob/user) - . = ..() - if(in_range(user, src) || isobserver(user)) - . += span_notice("The computer's compressor ID is '[id]'.") - . += span_notice("It looks like you can modify the id settings by using a multitool on it.") - -/obj/machinery/computer/turbine_computer/multitool_act(mob/living/user, obj/item/I) - . = ..() - var/obj/item/multitool/M = I - var/list/choice_list = list("Modify the compressor ID of a computer", "Load the Compressor connection to the console") - var/choice = tgui_input_list(user, "Select an option", "Advanced Configuration", choice_list) - - switch(choice) - if("Modify the compressor ID of a computer") - id = stripped_input(user, "Set a ID for this computer. Ensure that it is no bigger than 32 characters long.", "Computer ID Setup", max_length = 32) - to_chat(user, span_notice("You set [src] ID to '[id]'.")) - - if("Load the Compressor connection to the console") - if(istype(M.buffer,/obj/machinery/power/compressor)) - compressor = M.buffer - id = compressor.comp_id - to_chat(user, span_notice("You connect [compressor] to [src].")) - else - to_chat(user, span_notice("The ID from he [M] is not from the compressor.")) - return TRUE -// [/CELADON-ADD] #undef POWER_TO_THRUST #undef COMPFRICTION #undef TURBGENQ diff --git a/code/game/machinery/telecomms/broadcasting.dm b/code/game/machinery/telecomms/broadcasting.dm index 7e68581ad852..cf9444cb6b90 100644 --- a/code/game/machinery/telecomms/broadcasting.dm +++ b/code/game/machinery/telecomms/broadcasting.dm @@ -236,10 +236,7 @@ interference_level += data["interference"] ///If we are an observer, we get the unaltered messsage along with a % of how much of the message is corrupted to non-ghosts. if(isobserver(hearer)) -// [CELADON-EDIT] - Interference -> Радио Помехи -// var/temp_message = message + " ([data["interference"]]% interference)" // CELADON-EDIT - ORIGINAL - var/temp_message = message + " ([data["interference"]]% радиопомехи)" -// [/CELADON-EDIT] + var/temp_message = message + " ([data["interference"]]% радиопомехи)" // [CELADON-EDIT] - Interference -> Радио Помехи var/temp_rendered = virt.compose_message(virt, language, message, frequency, spans) hearer.Hear(temp_rendered, virt, language, temp_message, frequency, spans, message_mods, radiosound) continue @@ -273,10 +270,7 @@ var/lang_name = data["language"] var/log_text = "\[[get_radio_name(frequency)]\] [spans_part]\"[message]\" (language: [lang_name])" if(data["interference"]) -// [CELADON-EDIT] - Interference -> Радио Помехи -// log_text += " ([data["interference"]]% interference)"// CELADON-EDIT - ORIGINAL - log_text += " ([data["interference"]]% радиопомехи)" -// [/CELADON-EDIT] + log_text += " ([data["interference"]]% радиопомехи)" // [CELADON-EDIT] - Interference -> Радио Помехи var/mob/source_mob = virt.source if(istype(source_mob)) diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 5d1597fb22f8..56b99f7164a2 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -9,8 +9,6 @@ GLOBAL_LIST_INIT(dye_registry, list( DYE_PURPLE = /obj/item/clothing/under/color/lightpurple, DYE_BLACK = /obj/item/clothing/under/color/black, DYE_WHITE = /obj/item/clothing/under/color/white, - DYE_MIME = /obj/item/clothing/under/rank/civilian/mime, // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - DYE_CLOWN = /obj/item/clothing/under/rank/civilian/clown, // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS DYE_CHAP = /obj/item/clothing/under/rank/civilian/chaplain, DYE_QM = /obj/item/clothing/under/rank/cargo/qm, DYE_LAW = /obj/item/clothing/under/suit/black, @@ -32,7 +30,6 @@ GLOBAL_LIST_INIT(dye_registry, list( DYE_PURPLE = /obj/item/clothing/under/color/jumpskirt/lightpurple, DYE_BLACK = /obj/item/clothing/under/color/jumpskirt/black, DYE_WHITE = /obj/item/clothing/under/color/jumpskirt/white, - DYE_MIME = /obj/item/clothing/under/rank/civilian/mime/skirt, // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS DYE_CHAP = /obj/item/clothing/under/rank/civilian/chaplain/skirt, DYE_QM = /obj/item/clothing/under/rank/cargo/qm/skirt, DYE_CAPTAIN = /obj/item/clothing/under/rank/command/captain/skirt, @@ -52,8 +49,6 @@ GLOBAL_LIST_INIT(dye_registry, list( DYE_BLACK = /obj/item/clothing/gloves/color/black, DYE_WHITE = /obj/item/clothing/gloves/color/white, DYE_RAINBOW = /obj/item/clothing/gloves/color/rainbow, - DYE_MIME = /obj/item/clothing/gloves/color/white, // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - DYE_CLOWN = /obj/item/clothing/gloves/color/rainbow, // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS DYE_QM = /obj/item/clothing/gloves/color/brown, DYE_CAPTAIN = /obj/item/clothing/gloves/color/captain, DYE_FO = /obj/item/clothing/gloves/color/grey, @@ -74,7 +69,6 @@ GLOBAL_LIST_INIT(dye_registry, list( DYE_PURPLE = /obj/item/clothing/shoes/sneakers/purple, DYE_BLACK = /obj/item/clothing/shoes/sneakers/black, DYE_WHITE = /obj/item/clothing/shoes/sneakers/white, - DYE_MIME = /obj/item/clothing/shoes/sneakers/black, // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS DYE_QM = /obj/item/clothing/shoes/sneakers/brown, DYE_CAPTAIN = /obj/item/clothing/shoes/sneakers/brown, DYE_FO = /obj/item/clothing/shoes/sneakers/brown, @@ -105,8 +99,6 @@ GLOBAL_LIST_INIT(dye_registry, list( DYE_BLACK = /obj/item/bedsheet/black, DYE_WHITE = /obj/item/bedsheet, DYE_RAINBOW = /obj/item/bedsheet/rainbow, - DYE_MIME = /obj/item/bedsheet/mime, // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - DYE_CLOWN = /obj/item/bedsheet/clown, // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS DYE_CHAP = /obj/item/bedsheet/chaplain, DYE_QM = /obj/item/bedsheet/qm, DYE_LAW = /obj/item/bedsheet/black, diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index 3c0e2d7dab66..27bf0ede4823 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -11,7 +11,6 @@ exit_delay = 40 repair_multiplier = 0.75 - /obj/mecha/combat/restore_equipment() mouse_pointer = 'icons/effects/mouse_pointers/mecha_mouse.dmi' . = ..() diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm index bf21ac416a65..c186bb1f1f7d 100644 --- a/code/game/mecha/equipment/tools/mining_tools.dm +++ b/code/game/mecha/equipment/tools/mining_tools.dm @@ -112,7 +112,6 @@ ..() var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering) butchering.butchering_enabled = TRUE -// [CELADON-ADD] - CELADON_GRAVGEN RegisterSignal(chassis, COMSIG_MOVABLE_BUMP, PROC_REF(bump_mine)) ///Called whenever the mech bumps into something; action() handles checking if it is a mineable turf @@ -120,18 +119,15 @@ SIGNAL_HANDLER if(chassis.selected == src) - if(!chassis.occupant) //prevents exosuit from digging if it pushed with something, like an explosion // just in case..? + if(!chassis.occupant) //prevents exosuit from digging if it pushed with something, like an explosion return if(istype(bumped_into, /turf/closed/mineral/)) INVOKE_ASYNC(src, PROC_REF(action), bumped_into, null, TRUE) -// [/CELADON-ADD] /obj/item/mecha_parts/mecha_equipment/drill/detach(atom/moveto) var/datum/component/butchering/butchering = src.GetComponent(/datum/component/butchering) butchering.butchering_enabled = FALSE -// [CELADON-ADD] - CELADON_GRAVGEN UnregisterSignal(chassis, COMSIG_MOVABLE_BUMP) -// [/CELADON-ADD] ..() /obj/item/mecha_parts/mecha_equipment/drill/proc/drill_mob(mob/living/target, mob/user) diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 184134f0123a..67c99bab3992 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -176,7 +176,7 @@ righthand_file = GUN_RIGHTHAND_ICON energy_drain = 30 projectile = /obj/projectile/plasma/adv/mech - fire_sound = 'sound/weapons/plasma_cutter.ogg' + fire_sound = 'sound/weapons/melee/plasmacutter/plasma_cutter.ogg' harmful = TRUE /obj/item/mecha_parts/mecha_equipment/weapon/energy/plasma/can_attach(obj/mecha/working/M) @@ -409,9 +409,6 @@ icon_state = "mecha_missilerack_six" projectile = /obj/projectile/bullet/a84mm_br fire_sound = 'sound/weapons/gun/general/rocket_launch.ogg' - // [CELADON-ADD] - CELADON_FIXES - MECH_WEAPON -Добавлена переменная projectiles для корректной работы перезарядки - projectiles = 6 - // [/CELADON-ADD] projectiles_cache_max = 0 disabledreload = TRUE equip_cooldown = 60 @@ -446,9 +443,6 @@ icon_state = "mecha_grenadelnchr" projectile = /obj/item/grenade/flashbang fire_sound = 'sound/weapons/gun/general/grenade_launch.ogg' - // [CELADON-ADD] - CELADON_FIXES - MECH_WEAPON - Добавлена переменная projectiles для корректной работы перезарядки - projectiles = 6 - // [/CELADON-ADD] projectiles_cache_max = 24 missile_speed = 1.5 equip_cooldown = 60 @@ -464,9 +458,6 @@ /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/clusterbang //Because I am a heartless bastard -Sieve //Heartless? for making the poor man's honkblast? - Kaze name = "\improper SOB-3 grenade launcher" desc = "A weapon for combat exosuits. Launches primed clusterbangs. You monster." - // [CELADON-ADD] - CELADON_FIXES - MECH_WEAPON - Добавлена переменная projectiles для корректной работы перезарядки - projectiles = 3 - // [/CELADON-ADD] projectiles_cache_max = 0 disabledreload = TRUE projectile = /obj/item/grenade/clusterbuster diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index b59d1576d426..5d215f41fdeb 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -551,11 +551,7 @@ return /obj/mecha/proc/handle_unique_action(mob/user) -// [CELADON-EDIT] - FIX_MECH -// mech_unique_action.Activate() // CELADON-EDIT - ORIGINAL - if(mech_unique_action) - mech_unique_action.Activate() -// [/CELADON-EDIT] + mech_unique_action.Activate() return diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index a513445c46ae..9479b63cff16 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -289,20 +289,6 @@ name = "Durand Central Control module (Exosuit Board)" icon_state = "mainboard" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNSS -/obj/item/circuitboard/mecha/honker/peripherals - name = "H.O.N.K Peripherals Control module (Exosuit Board)" - icon_state = "mcontroller" - -/obj/item/circuitboard/mecha/honker/targeting - name = "H.O.N.K Weapon Control and Targeting module (Exosuit Board)" - icon_state = "mcontroller" - -/obj/item/circuitboard/mecha/honker/main - name = "H.O.N.K Central Control module (Exosuit Board)" - icon_state = "mainboard" -// [/CELADON-ADD] - /obj/item/circuitboard/mecha/odysseus/peripherals name = "200 Series Peripherals Control module (Exosuit Board)" icon_state = "mcontroller" diff --git a/code/game/objects/effects/anomalies/anomalies_bluespace.dm b/code/game/objects/effects/anomalies/anomalies_bluespace.dm index 19d163f131ee..2f68eab9d489 100644 --- a/code/game/objects/effects/anomalies/anomalies_bluespace.dm +++ b/code/game/objects/effects/anomalies/anomalies_bluespace.dm @@ -54,7 +54,7 @@ var/list/flashers = list() for(var/mob/living/carbon/C in viewers(TO, null)) - if(C.flash_act()) + if(C.flash_act() & FLASH_EFFECT) flashers += C var/y_distance = TO.y - FROM.y diff --git a/code/game/objects/effects/anomalies/anomalies_static.dm b/code/game/objects/effects/anomalies/anomalies_static.dm index f2a120cb7908..f01574bdacec 100644 --- a/code/game/objects/effects/anomalies/anomalies_static.dm +++ b/code/game/objects/effects/anomalies/anomalies_static.dm @@ -44,11 +44,7 @@ GLOBAL_LIST_INIT(tvstatic_sayings, list( var/obj/effect/mob_spawn/human/corpse/damaged/legioninfested/vicspawner = new (src) var/mob/living/carbon/victim = (vicspawner.spawned_mob_ref)?.resolve() src.stored_mob = victim - //[CELADON-REMOVE] - /* CELADON-REMOVE - ORIGINAL - victim.forceMove(src) - */ - // [/CELADON-REMOVE] + // victim.forceMove(src) // [CELADON-REMOVE] . = ..() diff --git a/code/game/objects/effects/contraband.dm b/code/game/objects/effects/contraband.dm index 0ce775a7766e..d0c6dc0123e9 100644 --- a/code/game/objects/effects/contraband.dm +++ b/code/game/objects/effects/contraband.dm @@ -1286,6 +1286,8 @@ poster_type = /obj/structure/sign/poster/pgf/mission_accomplished_7 icon_state = "rolled_poster" +// dont use random radio anywhere but indies or else it might throw up radio gorlex on a PGF ship + /obj/structure/sign/poster/contraband/radiofreefrontier name = "RFF" desc = "An amateur, slapdash poster for the 'Radio Free Frontier', a pirate radio station ran from the Shoal and maintained through the collective power of thousands of layabouts, vagabonds, and script-kiddies setting up signal amplifiers across Frontier space." @@ -1389,4 +1391,3 @@ // #undef POSTER_LIST // #undef POSTER_ADD_FROM_LIST // [/CELADON-REMOVE] -// dont use random radio anywhere but indies or else it might throw up radio gorlex on a PGF ship diff --git a/code/game/objects/effects/spawners/mobspawner.dm b/code/game/objects/effects/spawners/mobspawner.dm index 8def5cd459a4..918509d2cdfc 100644 --- a/code/game/objects/effects/spawners/mobspawner.dm +++ b/code/game/objects/effects/spawners/mobspawner.dm @@ -2,10 +2,6 @@ var/static/mob_category = rand(1, 3) /obj/effect/spawner/random/randomthreat/Initialize(mapload) - // [CELADON-ADD] - FIXES_SPAWNERS_ON_SPACE - Проверка на космотурф - if(isspaceturf(get_turf(src))) - return INITIALIZE_HINT_QDEL - // [/CELADON-ADD] switch(mob_category) if(1) loot = list( diff --git a/code/game/objects/effects/spawners/random/food_or_drink.dm b/code/game/objects/effects/spawners/random/food_or_drink.dm index 0bed5ecf5341..6e0f85e7d6db 100644 --- a/code/game/objects/effects/spawners/random/food_or_drink.dm +++ b/code/game/objects/effects/spawners/random/food_or_drink.dm @@ -276,7 +276,6 @@ /obj/item/seeds/sugarcane, /obj/item/seeds/sunflower, /obj/item/seeds/tea, - /obj/item/seeds/tea/mint, // [CELADON-ADD] - DRINKS_AND_FOOD /obj/item/seeds/tobacco, /obj/item/seeds/tomato, /obj/item/seeds/tower, diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 47b4555caae1..5c00f16f7972 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -41,12 +41,6 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb ///If set, kepori wearing this use this instead of their clothing file var/kepori_override_icon - - // [CELADON-ADD] - CELADON_RESPRITE - // Добавляет переменную, которая добавляет вариацию предметов для морды сарати - var/snout_override_icon - // [CELADON-ADD] - ///If set, vox wearing this use this instead of their clothing file var/vox_override_icon @@ -231,10 +225,6 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb var/canMouseDown = FALSE - // [CELADON_EDIT] — PRINTED_ITEMS_SELLING_VITO - ///Is item printed on any lathe. Sets TRUE in autolathe_crafted() - var/autolathe_printed = FALSE - // [/CELADON_EDIT] var/attack_cooldown = CLICK_CD_MELEE /// Has the item been reskinned? @@ -831,12 +821,12 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb if (callback) //call the original callback . = callback.Invoke() item_flags &= ~IN_INVENTORY -// [CELADON-ADD] + // [CELADON-ADD] if(!(item_flags & NO_ROTATE_RANDOM_THROW)) var/matrix/M = matrix(transform) M.Turn(pick(-90, 0, 90, 180)) transform = M -// [/CELADON-ADD] + // [/CELADON-ADD] if(!pixel_y && !pixel_x && !(item_flags & NO_PIXEL_RANDOM_DROP)) pixel_x = rand(-8,8) pixel_y = rand(-8,8) diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index fceecceb3822..b7eae136adad 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -335,9 +335,9 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( return else if(!user.IsAdvancedToolUser() || istype(A, /turf/open/space/transit)) return ..() - return try_build_pipe(A, user) // [CELADON-ADD] - OMNI_TOOLS +// [CELADON-EDIT] - OMNI_TOOLS + return try_build_pipe(A, user) -// [CELADON-EDIT] - OMNI_TOOLS - Пиздец /obj/item/pipe_dispenser/proc/try_build_pipe(atom/A, mob/user) //So that changing the menu settings doesn't affect the pipes already being built. var/queued_p_type = recipe.id diff --git a/code/game/objects/items/binoculars.dm b/code/game/objects/items/binoculars.dm index 778238d9be1b..f937c01d548f 100644 --- a/code/game/objects/items/binoculars.dm +++ b/code/game/objects/items/binoculars.dm @@ -3,8 +3,6 @@ desc = "Used for long-distance surveillance." item_state = "binoculars" icon_state = "binoculars" - lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' - righthand_file = 'icons/mob/inhands/items_righthand.dmi' mob_overlay_icon = 'icons/mob/binoculars.dmi' slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_NECK w_class = WEIGHT_CLASS_SMALL diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index 5ada03ae6e17..f8ba8ecb16d0 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -385,7 +385,6 @@ thing.connect_to_shuttle(target_shuttle, target_shuttle.docked) target_shuttle.recalculate_bounds() - // [CELADON-ADD] - Добавляем проверку на одноразовый предмет. if(istype(src, /obj/item/areaeditor/shuttle/disposable)) check_disposable(creator) diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm index c7852be230d0..c709a7dbb3c4 100644 --- a/code/game/objects/items/cardboard_cutouts.dm +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -17,10 +17,6 @@ . = ..() possible_appearances = sortList(list( "Assistant" = image(icon = src.icon, icon_state = "cutout_greytide"), -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - "Clown" = image(icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheets.dmi', icon_state = "cutout_clown"), - "Mime" = image(icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheets.dmi', icon_state = "cutout_mime"), -// [/CELADON-ADD] "Traitor" = image(icon = src.icon, icon_state = "cutout_traitor"), "Nuke Op" = image(icon = src.icon, icon_state = "cutout_fluke"), "Cultist" = image(icon = src.icon, icon_state = "cutout_cultist"), @@ -122,7 +118,7 @@ name = "[pick(GLOB.first_names_male)] [pick(GLOB.last_names)]" desc = "A cardboat cutout of an assistant." icon_state = "cutout_greytide" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS if("Clown") name = pick(GLOB.clown_names) desc = "A cardboard cutout of a clown. You get the feeling that it should be in a corner." @@ -131,7 +127,7 @@ name = pick(GLOB.mime_names) desc = "...(A cardboard cutout of a mime.)" icon_state = "cutout_mime" -// [/CELADON-ADD] + // [/CELADON-ADD] if("Traitor") name = "[pick("Unknown", "Captain")]" desc = "A cardboard cutout of a traitor." diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 2cf66dcec0b3..23221bf232a0 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -279,14 +279,7 @@ update_label() */ /obj/item/card/id/proc/update_label() - // [CELADON-EDIT] - FIXES_AGENT_CARD_NAME - Скрываем истинное название карты агента - // name = "[(istype(src, /obj/item/card/id/syndicate)) ? "[initial(name)]" : "access card"][(!assignment) ? "" : " ([assignment])"]" // ORIGINAL - if(istype(src, /obj/item/card/id/syndicate)) - var/obj/item/card/id/syndicate/agent_card = src - name = "[agent_card.forged ? "access card" : initial(name)][(!assignment) ? "" : " ([assignment])"]" - else - name = "access card[(!assignment) ? "" : " ([assignment])"]" - // [/CELADON-EDIT] + name = "[(istype(src, /obj/item/card/id/syndicate)) ? "[initial(name)]" : "access card"][(!assignment) ? "" : " ([assignment])"]" /obj/item/card/id/silver desc = "A silver-colored card, usually given to higher-ranking officials in ships and stations." @@ -351,14 +344,8 @@ update_label() // var/obj/item/card/id/I = O // Переместил вниз, ибо проверка внизу не имеет смсла вообще // src.access |= I.access if(isliving(user) && user.mind) - if(!fingerprint || fingerprint == user.dna.uni_identity || anyone) //if(user.mind.special_role || anyone) - var/obj/item/card/id/I = O - src.access |= I.access - for(var/datum/overmap/ship/controlled/ship in I.ship_access) - if(!has_ship_access(ship)) - add_ship_access(ship) + if(user.mind.special_role || anyone) to_chat(usr, span_notice("The card's microscanners activate as you pass it over the ID, copying its access.")) -// [/CELADON-EDIT] /obj/item/card/id/syndicate/attack_self(mob/living/carbon/user) //[CELADON-EDIT] mob/user -> mob/living/carbon/user if(isliving(user) && user.mind) @@ -372,6 +359,7 @@ update_label() anyone = TRUE else return ..() + var/popup_input = alert(user, "Choose Action", "Agent ID", "Show", "Forge/Reset") if(user.incapacitated()) return @@ -543,15 +531,6 @@ update_label() access = get_all_accesses() . = ..() -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/card/id/ert/clown - icon_state = "ert_clown" - -/obj/item/card/id/ert/clown/Initialize() - access = get_all_accesses() - . = ..() -// [/CELADON-ADD] - /obj/item/card/id/ert/deathsquad desc = "An access card colored in black and red." icon_state = "deathsquad" //NO NO SIR DEATH SQUADS ARENT A PART OF NANOTRASEN AT ALL @@ -566,10 +545,7 @@ update_label() uses_overlays = FALSE /obj/item/card/id/debug/Initialize() - // [CELADON-EDIT] - CELADON_ACCESS - // access = get_all_accesses()+get_all_centcom_access()+get_all_syndicate_access() // CELADON-EDIT - ORIGINAL - access = get_all_accesses()+get_all_centcom_access()+get_all_syndicate_access()+get_all_accesses_outpost()+get_faction_access_outpost() - // [/CELADON-EDIT] + access = get_all_accesses()+get_all_centcom_access()+get_all_syndicate_access() . = ..() /obj/item/card/id/prisoner diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 17d29acb6f55..650b2cbada4a 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -643,10 +643,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM set_lit(TRUE) if(fancy) user.visible_message(span_notice("Without even breaking stride, [user] flips open and lights [src] in one smooth movement."), span_notice("Without even breaking stride, you flip open and light [src] in one smooth movement.")) - // [CELADON-EDIT] - CELADON_ITEMS - // playsound(src.loc, 'sound/items/zippo_on.ogg', 100, 1) // CELADON-EDIT - ORIGINAL - playsound(src.loc, pick('sound/items/zippo_on.ogg', 'mod_celadon/_storage_sounds/sound/effects/zippo_on.ogg'), 100, 1) - // [/CELADON-EDIT] + playsound(src.loc, pick('sound/items/zippo_on.ogg', 'mod_celadon/_storage_sounds/sound/effects/zippo_on.ogg'), 100, 1) // [CELADON-EDIT] - CELADON_ITEMS else var/prot = FALSE var/mob/living/carbon/human/H = user @@ -671,10 +668,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM set_lit(FALSE) if(fancy) user.visible_message(span_notice("You hear a quiet click, as [user] shuts off [src] without even looking at what [user.p_theyre()] doing. Wow."), span_notice("You quietly shut off [src] without even looking at what you're doing. Wow.")) - // [CELADON-EDIT] - CELADON_ITEMS - // playsound(src.loc, 'sound/items/zippo_off.ogg', 100, 1) // CELADON-EDIT - ORIGINAL - playsound(src.loc, pick('sound/items/zippo_off.ogg', 'mod_celadon/_storage_sounds/sound/effects/zippo_off.ogg'), 100, 1) - // [/CELADON-EDIT] + playsound(src.loc, pick('sound/items/zippo_off.ogg', 'mod_celadon/_storage_sounds/sound/effects/zippo_off.ogg'), 100, 1) // [CELADON-EDIT] - CELADON_ITEMS else user.visible_message(span_notice("[user] quietly shuts off [src]."), span_notice("You quietly shut off [src].")) playsound(src.loc, 'sound/items/lighter_off.ogg', 100, 1) diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 4671927b08b9..d942746696ed 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -338,6 +338,28 @@ /obj/item/stock_parts/capacitor = 1) def_components = list(/obj/item/stock_parts/cell = /obj/item/stock_parts/cell/high/empty) +/obj/item/circuitboard/machine/cloak + name = "Ship Cloaking Device (Machine Board)" + icon_state = "engineering" + build_path = /obj/machinery/power/cloak + req_components = list( + /obj/item/stock_parts/cell = 1, + /obj/item/stock_parts/capacitor = 1) + def_components = list(/obj/item/stock_parts/cell = /obj/item/stock_parts/cell/high/empty) + +/obj/item/circuitboard/machine/advanced_cloak + name = "Advanced Ship Cloaking Device (Machine Board)" + icon_state = "engineering" + build_path = /obj/machinery/power/cloak/advanced + req_components = list( + /obj/item/stock_parts/cell = 1, + /obj/item/stock_parts/capacitor = 1, + /obj/item/stack/ore/bluespace_crystal = 1) + def_components = list( + /obj/item/stock_parts/cell = /obj/item/stock_parts/cell/high/empty, + /obj/item/stock_parts/capacitor = /obj/item/stock_parts/capacitor/adv, + ) + /obj/item/circuitboard/machine/techfab/department/engineering name = "\improper Departmental Techfab (Machine Board) - Engineering" build_path = /obj/machinery/rnd/production/techfab/department/engineering diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index 1ecd31eee480..2880722474ae 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -173,54 +173,9 @@ //LoadComponent so child types dont stack squeak components LoadComponent(/datum/component/squeak, sound_list, 50) -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user) - if(user != M && ishuman(user)) - var/mob/living/carbon/human/H = user - if (HAS_TRAIT(H, TRAIT_CLUMSY)) //only clowns can unlock its true powers - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "honk", /datum/mood_event/honk) - return ..() -// [/CELADON-ADD] - //air horn /obj/item/bikehorn/airhorn name = "air horn" desc = "Damn son, where'd you find this?" icon_state = "air_horn" sound_file = 'sound/items/airhorn2.ogg' - -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -//golden bikehorn -/obj/item/bikehorn/golden - name = "golden bike horn" - desc = "Golden? Clearly, it's made with bananium! Honk!" - icon_state = "gold_horn" - item_state = "gold_horn" - var/flip_cooldown = 0 - -/obj/item/bikehorn/golden/attack() - if(flip_cooldown < world.time) - flip_mobs() - return ..() - -/obj/item/bikehorn/golden/attack_self(mob/user) - if(flip_cooldown < world.time) - flip_mobs() - ..() - -/obj/item/bikehorn/golden/proc/flip_mobs(mob/living/carbon/M, mob/user) - var/turf/T = get_turf(src) - for(M in ohearers(7, T)) - if(ishuman(M) && M.can_hear()) - var/mob/living/carbon/human/H = M - if(istype(H.ears, /obj/item/clothing/ears/earmuffs)) - continue - M.emote("flip") - flip_cooldown = world.time + 7 -//canned laughter -/obj/item/reagent_containers/food/drinks/soda_cans/canned_laughter - name = "Canned Laughter" - desc = "Just looking at this makes you want to giggle." - icon_state = "laughter" - list_reagents = list(/datum/reagent/consumable/laughter = 50) -// [/CELADON-ADD] diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index f6f0a9fcb3da..72a62d102bae 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -505,18 +505,6 @@ reagent_contents = list(/datum/reagent/consumable/nutriment = 0.5, /datum/reagent/colorful_reagent/powder/white/crayon = 1.5) dye_color = DYE_WHITE -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/toy/crayon/mime - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/crayons.dmi' - icon_state = "crayonmime" - desc = "A very sad-looking crayon." - paint_color = "#FFFFFF" - crayon_color = "mime" - reagent_contents = list(/datum/reagent/consumable/nutriment = 0.5, /datum/reagent/colorful_reagent/powder/invisible = 1.5) - charges = -1 - dye_color = DYE_MIME -// [/CELADON-ADD] - /obj/item/toy/crayon/rainbow icon_state = "crayonrainbow" paint_color = "#FFF000" @@ -566,11 +554,6 @@ if(istype(W, /obj/item/toy/crayon)) var/obj/item/toy/crayon/C = W // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/* - if(C.crayon_color == "rainbow") - to_chat(usr, span_warning("This crayon is too powerful to be contained in this box!")) - return -*/ switch(C.crayon_color) if("mime") to_chat(usr, span_warning("This crayon is too sad to be contained in this box!")) @@ -675,10 +658,8 @@ return -// [CELADON-EDIT] - UNFUCK_SPRAYCAN - //if(isobj(target) && !istype(target, /obj/effect/decal/cleanable/crayon/gang) && !istype(target, /obj/item/clothing)) - if(isobj(target) && !istype(target, /obj/effect/decal/cleanable/crayon/gang)) -// [/CELADON-EDIT] + + if(isobj(target) && !istype(target, /obj/effect/decal/cleanable/crayon/gang)) // [CELADON-EDIT] - UNFUCK_SPRAYCAN if(actually_paints) if(color_hex2num(paint_color) < 350 && !istype(target, /obj/structure/window) && !istype(target, /obj/effect/decal/cleanable/crayon)) //Colors too dark are rejected to_chat(usr, span_warning("A color that dark on an object like this? Surely not...")) @@ -750,39 +731,6 @@ actually_paints = FALSE paint_color = "#000000" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/toy/crayon/spraycan/lubecan - name = "slippery spraycan" - desc = "You can barely keep hold of this thing." - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/crayons.dmi' - icon_state = "clowncan2_cap" - icon_capped = "clowncan2_cap" - icon_uncapped = "clowncan2" - use_overlays = FALSE - - reagent_contents = list(/datum/reagent/lube = 1, /datum/reagent/consumable/banana = 1) - volume_multiplier = 5 - -/obj/item/toy/crayon/spraycan/lubecan/isValidSurface(surface) - return istype(surface, /turf/open/floor) - -/obj/item/toy/crayon/spraycan/mimecan - name = "silent spraycan" - desc = "Art is best seen, not heard." - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/crayons.dmi' - icon_state = "mimecan_cap" - icon_capped = "mimecan_cap" - icon_uncapped = "mimecan" - use_overlays = FALSE - - can_change_colour = FALSE - paint_color = "#FFFFFF" //RGB - - pre_noise = FALSE - post_noise = FALSE - reagent_contents = list(/datum/reagent/consumable/nothing = 1, /datum/reagent/toxin/mutetoxin = 1) -// [/CELADON-ADD] - /obj/item/toy/crayon/spraycan/infinite name = "infinite spraycan" charges = -1 diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index c5a8fd4d9e09..f8624487184b 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -308,7 +308,6 @@ AddElement(/datum/element/update_icon_updates_onmob) AddComponent(/datum/component/two_handed, force_unwielded=8, force_wielded=12) - /obj/item/shockpaddles/Destroy() defib = null return ..() @@ -323,7 +322,6 @@ . = ..() check_range() - /obj/item/shockpaddles/fire_act(exposed_temperature, exposed_volume) . = ..() if((req_defib && defib) && loc != defib) @@ -392,6 +390,9 @@ /obj/item/shockpaddles/attack(mob/M, mob/user) if(busy) return + if(!M.mind) //Stops from reviving DNR player corpses. Maybe expand this to still defib, but have a body thump and fail message then for drama or whatever + to_chat(user, span_warning("It's too late for [M.p_them()]. Revival is impossible.")) + return if(req_defib && !defib.powered) user.visible_message(span_notice("[defib] beeps: Unit is unpowered.")) playsound(src, 'sound/machines/defib_failed.ogg', 50, FALSE) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 147a3d48b5c1..8f03bd569d19 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -59,10 +59,6 @@ GLOBAL_LIST_EMPTY(PDAs) var/last_everyone //No text for everyone spamming var/last_noise //Also no honk spamming that's bad too var/ttone = "beep" //The ringtone! -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - var/honkamt = 0 //How many honks left when infected with honk.exe - var/mimeamt = 0 //How many silence left when infected with mime.exe -// [/CELADON-ADD] var/note = "Congratulations, your station has chosen the Thinktronic 5230 Personal Data Assistant!" //Current note in the notepad function var/notehtml = "" var/notescanned = FALSE // True if what is in the notekeeper was from a paper. @@ -243,11 +239,11 @@ GLOBAL_LIST_EMPTY(PDAs) if(cartridge) if(cartridge.access) dat += "

Job Specific Functions

" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS if(cartridge.access & CART_CLOWN) dat += "
  • [PDAIMG(honk)] Honk Synthesizer
  • " dat += "
  • [PDAIMG(honk)] Sad Trombone
  • " -// [/CELADON-ADD] + // [/CELADON-ADD] if(cartridge.access & CART_STATUS_DISPLAY) dat += "
  • [PDAIMG(status)] Set Status Display
  • " if(cartridge.access & CART_ENGINE) @@ -265,10 +261,10 @@ GLOBAL_LIST_EMPTY(PDAs) dat += "
  • [PDAIMG(medbot)]Bots Access
  • " if (cartridge.access & CART_JANITOR) dat += "
  • [PDAIMG(bucket)]Custodial Locator
  • " -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS if(cartridge.access & CART_MIME) dat += "
  • [PDAIMG(emoji)]Emoji Guidebook
  • " -// [/CELADON-ADD] + // [/CELADON-ADD] if (istype(cartridge.radio)) dat += "
  • [PDAIMG(signaler)]Signaler System
  • " if (cartridge.access & CART_NEWSCASTER) @@ -474,12 +470,12 @@ GLOBAL_LIST_EMPTY(PDAs) scanmode = PDA_SCANNER_NONE else if((!isnull(cartridge)) && (cartridge.access & CART_ENGINE)) scanmode = PDA_SCANNER_HALOGEN -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS if("Honk") if(!(last_noise && world.time < last_noise + 20)) playsound(loc, 'sound/items/bikehorn.ogg', 50, 1) last_noise = world.time -// [/CELADON-ADD] + // [/CELADON-ADD] if("Trombone") if(!(last_noise && world.time < last_noise + 20)) playsound(loc, 'sound/misc/sadtrombone.ogg', 50, 1) @@ -591,12 +587,11 @@ GLOBAL_LIST_EMPTY(PDAs) cut_overlay(icon_alert) //To clear message overlays. -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS if((honkamt > 0) && (prob(60)))//For clown virus. honkamt-- playsound(src, 'sound/items/bikehorn.ogg', 30, TRUE) -// [/CELADON-ADD] - + // [/CELADON-ADD] if(U.machine == src && href_list["skiprefresh"]!="1")//Final safety. attack_self(U)//It auto-closes the menu prior if the user is not in range and so on. else diff --git a/code/game/objects/items/devices/PDA/PDA_types.dm b/code/game/objects/items/devices/PDA/PDA_types.dm index 9ba870aa1ef2..56442142f198 100644 --- a/code/game/objects/items/devices/PDA/PDA_types.dm +++ b/code/game/objects/items/devices/PDA/PDA_types.dm @@ -1,65 +1,8 @@ -//Clown PDA is slippery. -/* ОФЫ ВЫРЕЗАЛИ КОНТЕНТ ПО КЛОУНАМ -/obj/item/pda/clown - name = "clown PDA" - default_cartridge = /obj/item/cartridge/virus/clown - inserted_item = /obj/item/toy/crayon/rainbow - icon_state = "pda-clown" - desc = "A portable microcomputer by Thinktronic Systems, LTD. The surface is coated with polytetrafluoroethylene and banana drippings." - ttone = "honk" - var/slipvictims = list() //Track slipped people - -/obj/item/pda/clown/ComponentInitialize() - . = ..() - // [CELADON-EDIT] - CELADON_RETURN_CONTENT_SPAWN - // AddComponent(/datum/component/wearertargeting/sitcomlaughter, CALLBACK(src, PROC_REF(after_sitcom_laugh))) // CELADON-EDIT - ORIGINAL - AddComponent(/datum/component/slippery/clowning, 120, NO_SLIP_WHEN_WALKING, CALLBACK(src, PROC_REF(AfterSlip))) - // [/CELADON-EDIT] - -/obj/item/pda/clown/proc/AfterSlip(mob/living/carbon/human/M) - if (istype(M) && (M.real_name != owner)) - slipvictims |= M - var/obj/item/cartridge/virus/clown/cart = cartridge - if(istype(cart) && cart.charges < 5) - cart.charges++ - -/obj/item/pda/clown/proc/after_sitcom_laugh(mob/victim) - victim.visible_message("[src] lets out a burst of laughter!") - -//Mime PDA sends "silent" messages. -/obj/item/pda/mime - name = "mime PDA" - default_cartridge = /obj/item/cartridge/virus/mime - inserted_item = /obj/item/toy/crayon/mime - icon_state = "pda-mime" - desc = "A portable microcomputer by Thinktronic Systems, LTD. The hardware has been modified for compliance with the vows of silence." - allow_emojis = TRUE - silent = TRUE - ttone = "silence" - -/obj/item/pda/mime/msg_input(mob/living/U = usr) - if(emped || toff) - return - var/emojis = emoji_sanitize(stripped_input(U, "Please enter emojis", name)) - if(!emojis) - return - if(!U.canUseTopic(src, BE_CLOSE)) - return - return emojis -*/ // Special AI/pAI PDAs that cannot explode. /obj/item/pda/ai icon = null ttone = "data" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/pda/ai/attack_self(mob/user) - if ((honkamt > 0) && (prob(60)))//For clown virus. - honkamt-- - playsound(loc, 'sound/items/bikehorn.ogg', 30, TRUE) - return -// [/CELADON-ADD] - /obj/item/pda/ai/pai ttone = "assist" @@ -247,10 +190,3 @@ name = "SUNS PDA" default_cartridge = /obj/item/cartridge/medical icon_state = "pda-suns" - -// [CELADON-ADD] - scientist-PDA -/obj/item/pda/scientist - name = "scientist PDA" - default_cartridge = /obj/item/cartridge/chemistry - icon_state = "pda-science" -// [/CELADON-ADD] diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index d094182a417c..99c9e9a69d84 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -2,8 +2,6 @@ #define CART_ENGINE (1<<1) #define CART_ATMOS (1<<2) #define CART_MEDICAL (1<<3) -// [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS -/* #define CART_JANITOR (1<<4) #define CART_REAGENT_SCANNER (1<<5) #define CART_NEWSCASTER (1<<6) @@ -12,18 +10,6 @@ #define CART_QUARTERMASTER (1<<9) #define CART_HYDROPONICS (1<<10) #define CART_DRONEPHONE (1<<11) -*/ -#define CART_CLOWN (1<<5) -#define CART_MIME (1<<6) -#define CART_JANITOR (1<<7) -#define CART_REAGENT_SCANNER (1<<8) -#define CART_NEWSCASTER (1<<9) -#define CART_REMOTE_DOOR (1<<10) -#define CART_STATUS_DISPLAY (1<<11) -#define CART_QUARTERMASTER (1<<12) -#define CART_HYDROPONICS (1<<13) -#define CART_DRONEPHONE (1<<14) -// [/CELADON-EDIT] /obj/item/cartridge @@ -196,7 +182,7 @@ name = "\improper Value-PAK cartridge" desc = "Now with 350% more value!" //Give the Captain...EVERYTHING! (Except Mime, Clown, and Syndie) icon_state = "cart-c" - access = ~(CART_CLOWN | CART_MIME | CART_REMOTE_DOOR | CART_NEWSCASTER) //access = ~(CART_REMOTE_DOOR | CART_NEWSCASTER) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + access = ~(CART_REMOTE_DOOR | CART_NEWSCASTER) bot_access_flags = SEC_BOT | MULE_BOT | FLOOR_BOT | CLEAN_BOT | MED_BOT | FIRE_BOT spam_enabled = 1 @@ -451,7 +437,7 @@ Code: if (54) // Beepsky, Medibot, Floorbot, and Cleanbot access menu = "

    [PDAIMG(medbot)] Bots Interlink

    " bot_control() -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS if (55) // Emoji Guidebook for mimes menu = "

    [PDAIMG(emoji)] Emoji Guidebook

    " var/static/list/emoji_icon_states @@ -467,7 +453,7 @@ Code: menu += "
    To use an emoji in a pda message, refer to the guide and add \":\" around the emoji. Your PDA supports the following emoji:
    " menu += emoji_table -// [/CELADON-ADD] + // [/CELADON-ADD] if (99) //Newscaster message permission error menu = "
    ERROR : NOT AUTHORIZED [host_pda.id ? "" : "- ID SLOT EMPTY"]
    " diff --git a/code/game/objects/items/devices/PDA/virus_cart.dm b/code/game/objects/items/devices/PDA/virus_cart.dm index 2028a8aba45f..b414a4c4670e 100644 --- a/code/game/objects/items/devices/PDA/virus_cart.dm +++ b/code/game/objects/items/devices/PDA/virus_cart.dm @@ -17,44 +17,6 @@ var/obj/item/pda/P = locate(params["target"]) in GLOB.PDAs //Leaving it alone in case it may do something useful, I guess. send_virus(P,user) -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/cartridge/virus/clown - name = "\improper Honkworks 5.0 cartridge" - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/pda.dmi' - icon_state = "cart-clown" - desc = "A data cartridge for portable microcomputers. It smells vaguely of bananas." - access = CART_CLOWN - -/obj/item/cartridge/virus/clown/send_virus(obj/item/pda/target, mob/living/U) - if(charges <= 0) - to_chat(U, span_notice("Out of charges.")) - return - if(!isnull(target) && !target.toff) - charges-- - to_chat(U, span_notice("Virus Sent!")) - target.honkamt = (rand(15,20)) - else - to_chat(U, span_alert("PDA not found.")) - -/obj/item/cartridge/virus/mime - name = "\improper Gestur-O 1000 cartridge" - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/pda.dmi' - icon_state = "cart-mi" - access = CART_MIME - -/obj/item/cartridge/virus/mime/send_virus(obj/item/pda/target, mob/living/U) - if(charges <= 0) - to_chat(U, span_alert("Out of charges.")) - return - if(!isnull(target) && !target.toff) - charges-- - to_chat(U, span_notice("Virus Sent!")) - target.silent = TRUE - target.ttone = "silence" - else - to_chat(U, span_alert("PDA not found.")) -// [/CELADON-ADD] - /obj/item/cartridge/virus/syndicate name = "\improper Detomatix cartridge" icon_state = "cart" @@ -70,7 +32,7 @@ charges-- var/difficulty = 0 if(target.cartridge) - difficulty += BitCount(target.cartridge.access&(CART_MEDICAL | CART_SECURITY | CART_ENGINE | CART_CLOWN | CART_JANITOR)) //difficulty += BitCount(target.cartridge.access&(CART_MEDICAL | CART_SECURITY | CART_ENGINE | CART_JANITOR)) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + difficulty += BitCount(target.cartridge.access&(CART_MEDICAL | CART_SECURITY | CART_ENGINE | CART_JANITOR)) else log_bomber(U, "triggered a PDA explosion on", target, "[!is_special_character(U) ? "(TRIGGED BY NON-ANTAG)" : ""]") U.show_message(span_notice("Success!"), MSG_VISUAL) diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index 07fef23e1b47..05b245eb75b9 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -80,7 +80,7 @@ return if(M == user) //they're using it on themselves - if(M.flash_act(visual = 1)) + if(M.flash_act(visual = 1) & FLASH_EFFECT) M.visible_message(span_notice("[M] directs [src] to [M.p_their()] eyes."), span_notice("You wave the light in front of your eyes! Trippy!")) else M.visible_message(span_notice("[M] directs [src] to [M.p_their()] eyes."), span_notice("You wave the light in front of your eyes.")) @@ -89,7 +89,7 @@ span_warning("[user] directs [src] to [M]'s eyes."), span_danger("You direct [src] to [M]'s eyes.") ) - if(M.stat == DEAD || (M.is_blind()) || !M.flash_act(visual = 1)) //mob is dead or fully blind + if(M.stat == DEAD || (M.is_blind()) || !(M.flash_act(visual = 1) & FLASH_EFFECT)) //mob is dead or fully blind to_chat(user, span_warning("[M]'s pupils don't react to the light!")) else if(M.dna && M.dna.check_mutation(XRAY)) //mob has X-ray vision to_chat(user, span_danger("[M]'s pupils give an eerie glow!")) @@ -190,7 +190,7 @@ holo_cooldown = world.time + 10 SECONDS return -// see: [/datum/wound/burn/proc/uv()] +// see: [/datum/wound/burn/flesh/proc/uv()] /obj/item/flashlight/pen/paramedic name = "paramedic penlight" desc = "A high-powered UV penlight intended to help stave off infection in the field on serious burned patients. Probably really bad to look into." @@ -402,7 +402,7 @@ var/distance = max(0, get_dist(get_turf(src), M.loc)) if(distance == 0) //We won't affect ourselves continue - if(M.flash_act(affect_silicon = 1)) + if(M.flash_act(affect_silicon = 1) & FLASH_EFFECT) M.Knockdown(10/(max(1, distance))) M.confused += 15 cooldown = TRUE diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index ac036d48b87c..704fb1dddcc7 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -102,7 +102,7 @@ severity = 0 //chance to actually hit the eyes depends on internal component - if(prob(effectchance * diode.rating) && C.flash_act(severity)) + if(prob(effectchance * diode.rating) && (C.flash_act(severity) & FLASH_EFFECT)) outmsg = span_notice("You blind [C] by shining [src] in [C.p_their()] eyes.") log_combat(user, C, "blinded with a laser pointer",src) else diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index 459ba5221566..76b4a7b6fc30 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -52,15 +52,3 @@ name = "supply megaphone" icon_state = "megaphone-cargo" item_state = "megaphone-cargo" - -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/megaphone/clown - name = "clown's megaphone" - desc = "Something that should not exist." - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/device.dmi' - lefthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/megaphone_lefthand.dmi' - righthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/megaphone_righthand.dmi' - icon_state = "megaphone-clown" - item_state = "megaphone-clown" - voicespan = list(SPAN_CLOWN) -// [/CELADON-ADD] diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 793f69cfdd24..896a4eae3f00 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -34,7 +34,14 @@ /obj/item/multitool/examine(mob/user) . = ..() - . += span_notice("Its buffer [buffer ? "contains [buffer]." : "is empty."]") + if(!buffer) + . += span_notice("Its buffer is empty.") + return + var/buffer_text = "[buffer]" + if(isweakref(buffer)) + var/datum/weakref/buffer_ref = buffer + buffer_text = "[buffer_ref.resolve()]" + . += span_notice("Its buffer contains [buffer_text].") // Syndicate device disguised as a multitool; it will turn red when an AI camera is nearby. diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 2717085bf2a0..cb1bd7197b95 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -13,9 +13,7 @@ GLOBAL_LIST_INIT(channel_tokens, list( RADIO_CHANNEL_PGF = RADIO_TOKEN_PGF, RADIO_CHANNEL_INTEQ = RADIO_TOKEN_INTEQ, RADIO_CHANNEL_PIRATE = RADIO_TOKEN_PIRATE, - MODE_BINARY = MODE_TOKEN_BINARY, - // RADIO_CHANNEL_AI_PRIVATE = RADIO_TOKEN_AI_PRIVATE, - RADIO_CHANNEL_WIDEBAND = RADIO_TOKEN_WIDEBAND + MODE_BINARY = MODE_TOKEN_BINARY )) /obj/item/radio/headset diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index d33fbfe5cc10..7a20c5cb326e 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -118,25 +118,21 @@ . = ..() AddComponent(/datum/component/empprotection, EMP_PROTECT_WIRES) -// [CELADON-EDIT] - QOL - Разрешаем использование UI раций в лежачем положении /obj/item/radio/AltClick(mob/user) if(headset) . = ..() else if(sectorwide == TRUE) // prevents incompatibility with broadcast cameras return - else if(user.canUseTopic(src, !issilicon(user), TRUE, FALSE, TRUE)) // floor_okay = TRUE + else if(user.canUseTopic(src, !issilicon(user), TRUE, FALSE, TRUE)) // [CELADON-EDIT] - QOL - Разрешаем использование UI раций в лежачем положении broadcasting = !broadcasting to_chat(user, span_notice("You toggle broadcasting [broadcasting ? "on" : "off"].")) /obj/item/radio/CtrlShiftClick(mob/user) if(headset) . = ..() - else if(sectorwide == TRUE) // prevents incompatibility with broadcast cameras - return - else if(user.canUseTopic(src, !issilicon(user), TRUE, FALSE, TRUE)) // floor_okay = TRUE + else if(user.canUseTopic(src, !issilicon(user), TRUE, FALSE, TRUE)) // [CELADON-EDIT] - QOL - Разрешаем использование UI раций в лежачем положении listening = !listening to_chat(user, span_notice("You toggle speaker [listening ? "on" : "off"].")) -// [/CELADON-EDIT] /obj/item/radio/interact(mob/user) if(unscrewed && !isAI(user)) diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index 02a6a3c58822..e652d22c20f2 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -123,20 +123,12 @@ return ..() -//[CELADON - EDIT] - CELADON_FIXES -/* - ORIGINAL - /obj/item/taperecorder/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, spans, list/message_mods = list()) - . = ..() - if(mytape && recording) - mytape.timestamp += mytape.used_capacity - mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] [speaker.GetVoice()] [speaker.say_mod(raw_message, message_mods)], \"[raw_message]\"" -*/ -/obj/item/taperecorder/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, spans, message_mode) +/obj/item/taperecorder/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, spans, list/message_mods = list()) . = ..() if(mytape && recording) mytape.timestamp += mytape.used_capacity - mytape.storedinfo += "\[[time2text(mytape.used_capacity,"mm:ss")]\] [speaker.GetVoice()] [lang_treat(speaker, message_language, raw_message, spans, message_mode)]" -// [/CELADON - EDIT] + mytape.storedinfo += "\[[time2text(mytape.used_capacity,"mm:ss")]\] [speaker.GetVoice()] [lang_treat(speaker, message_language, raw_message, spans, message_mods)]" // [CELADON - EDIT] - CELADON_FIXES + /obj/item/taperecorder/verb/record() set name = "Start Recording" set category = "Object" diff --git a/code/game/objects/items/dna_injector.dm b/code/game/objects/items/dna_injector.dm index 6e23e6db3143..b416ebf065cd 100644 --- a/code/game/objects/items/dna_injector.dm +++ b/code/game/objects/items/dna_injector.dm @@ -141,18 +141,6 @@ desc = "It's a small world after all." add_mutations = list(DWARFISM) -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/dnainjector/clumsymut - name = "\improper DNA injector (Clumsy)" - desc = "Makes clown minions." - add_mutations = list(CLOWNMUT) - -/obj/item/dnainjector/anticlumsy - name = "\improper DNA injector (Anti-Clumsy)" - desc = "Apply this for Security Clown." - remove_mutations = list(CLOWNMUT) -// [/CELADON-ADD]S - /obj/item/dnainjector/antitour name = "\improper DNA injector (Anti-Tour.)" desc = "Will cure Tourette's." diff --git a/code/game/objects/items/food/burger.dm b/code/game/objects/items/food/burger.dm index 55e6502a721d..5d17895ee7b5 100644 --- a/code/game/objects/items/food/burger.dm +++ b/code/game/objects/items/food/burger.dm @@ -116,32 +116,6 @@ ) foodtypes = GRAIN | MEAT -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/food/burger/clown - name = "clown burger" - desc = "This tastes funny..." - icon_state = "clownburger" - food_reagents = list( - /datum/reagent/consumable/nutriment = 4, - /datum/reagent/consumable/nutriment/protein = 12, - /datum/reagent/medicine/mannitol = 11, - /datum/reagent/consumable/nutriment/vitamin = 6, - ) - foodtypes = GRAIN | FRUIT - -/obj/item/food/burger/mime - name = "mime burger" - desc = "Its taste defies language." - icon_state = "mimeburger" - food_reagents = list( - /datum/reagent/consumable/nutriment = 6, - /datum/reagent/consumable/nutriment/protein = 11, - /datum/reagent/consumable/nutriment/vitamin = 7, - /datum/reagent/consumable/nothing = 6, - ) - foodtypes = GRAIN -// [/CELADON-ADD] - /obj/item/food/burger/brain name = "brainburger" desc = "A strange looking burger. It looks almost sentient." diff --git a/code/game/objects/items/food/donk.dm b/code/game/objects/items/food/donk.dm index 84113b3ca954..fb7ec203f987 100644 --- a/code/game/objects/items/food/donk.dm +++ b/code/game/objects/items/food/donk.dm @@ -13,8 +13,8 @@ /obj/item/food/donkpocket/warm/spicy, /obj/item/food/donkpocket/warm/teriyaki, /obj/item/food/donkpocket/warm/pizza, - /obj/item/food/donkpocket/warm/honk, // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS /obj/item/food/donkpocket/warm/berry, + /obj/item/food/donkpocket/warm/honk, // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS ) var donk_type = pick(subtypesof(/obj/item/food/donkpocket) - donkblock) @@ -136,34 +136,6 @@ tastes = list("meat" = 2, "dough" = 2, "melty cheese"= 2) foodtypes = GRAIN -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/food/donkpocket/honk - name = "\improper Honk-pocket" - desc = "The award-winning donk-pocket that won the hearts of clowns and humans alike." - icon_state = "donkpocketbanana" - food_reagents = list( - /datum/reagent/consumable/nutriment = 4, - /datum/reagent/consumable/banana = 4 - ) - tastes = list("banana" = 2, "dough" = 2, "children's antibiotics" = 1) - foodtypes = GRAIN - - //warm_type = /obj/item/food/donkpocket/warm/honk - microwaved_type = /obj/item/food/donkpocket/warm/honk - -/obj/item/food/donkpocket/warm/honk - name = "warm Honk-pocket" - desc = "The award-winning donk-pocket, now warm and toasty." - icon_state = "donkpocketbanana" - food_reagents = list( - /datum/reagent/consumable/nutriment = 4, - /datum/reagent/consumable/banana = 4, - /datum/reagent/consumable/laughter = 6 - ) - tastes = list("banana" = 2, "dough" = 2, "children's antibiotics" = 1) - foodtypes = GRAIN -// [/CELADON-ADD] - /obj/item/food/donkpocket/berry name = "berry-pocket" icon_state = "donkpocketberry" diff --git a/code/game/objects/items/food/meatdish.dm b/code/game/objects/items/food/meatdish.dm index 79129c009676..06b0b949fac3 100644 --- a/code/game/objects/items/food/meatdish.dm +++ b/code/game/objects/items/food/meatdish.dm @@ -164,7 +164,7 @@ tastes = list("boiled rice" = 4, "fish" = 2, "spicyness" = 2) foodtypes = VEGETABLES | MEAT -/obj/item/food/vegetariansushiroll/make_processable() +/obj/item/food/spicyfiletsushiroll/make_processable() AddElement(/datum/element/processable, TOOL_KNIFE, /obj/item/food/spicyfiletsushislice, 4, 30, table_required = TRUE) /obj/item/food/spicyfiletsushislice diff --git a/code/game/objects/items/food/pizza.dm b/code/game/objects/items/food/pizza.dm index 174be99bed4d..3a85dbbc7a5b 100644 --- a/code/game/objects/items/food/pizza.dm +++ b/code/game/objects/items/food/pizza.dm @@ -14,7 +14,7 @@ //burns_in_oven = TRUE ///Type is spawned 6 at a time and replaces this pizza when processed by cutting tool var/obj/item/food/pizzaslice/slice_type -/obj/item/food/meat/slab/human/mutant/skeleton + /obj/item/food/pizza/make_processable() if(slice_type) AddElement(/datum/element/processable, TOOL_KNIFE, slice_type, 6, 3 SECONDS, table_required = TRUE) diff --git a/code/game/objects/items/food/salad.dm b/code/game/objects/items/food/salad.dm index 1f05a415da9d..3631eebd0df6 100644 --- a/code/game/objects/items/food/salad.dm +++ b/code/game/objects/items/food/salad.dm @@ -2,7 +2,6 @@ ////////////////////////////////////////////SALAD//////////////////////////////////////////// /obj/item/food/salad icon = 'icons/obj/food/soupsalad.dmi' - icon_state = "ambrosiavulgariscrushed" trash_type = /obj/item/reagent_containers/glass/bowl bite_consumption = 3 w_class = WEIGHT_CLASS_NORMAL diff --git a/code/game/objects/items/gift.dm b/code/game/objects/items/gift.dm index cba0e8338749..8fbaa46cf728 100644 --- a/code/game/objects/items/gift.dm +++ b/code/game/objects/items/gift.dm @@ -74,14 +74,14 @@ GLOBAL_LIST_EMPTY(possible_gifts) /obj/item/storage/belt/utility/full, /obj/item/clothing/neck/tie/horrible, /obj/item/clothing/suit/jacket/leather, + /obj/item/clothing/suit/snowman, + /obj/item/clothing/head/snowman, // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN /obj/item/clothing/suit/jacket/leather/overcoat, /obj/item/clothing/suit/poncho, /obj/item/clothing/suit/poncho/green, /obj/item/clothing/suit/poncho/red, // [/CELADON-ADD] - /obj/item/clothing/suit/snowman, - /obj/item/clothing/head/snowman, ) gift_type_list += subtypesof(/obj/item/clothing/head/collectable) diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index ce174ba3a9be..7f0663d0b6f7 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -333,7 +333,6 @@ /obj/item/book/granter/spell/random/Initialize() . = ..() // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS -// var/real_type = pick(subtypesof(/obj/item/book/granter/spell)) // var/static/banned_spells = list(/obj/item/book/granter/spell/mimery_blockade, /obj/item/book/granter/spell/mimery_guns) var/real_type = pick(subtypesof(/obj/item/book/granter/spell) - banned_spells) // [/CELADON-EDIT] @@ -451,10 +450,6 @@ crafting_recipe_types = list( /datum/crafting_recipe/food/berrytart, /datum/crafting_recipe/food/cocoalavatart, - // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - /datum/crafting_recipe/food/mimetart, - // /datum/crafting_recipe/food/clowncake, - // [/CELADON-ADD] /datum/crafting_recipe/food/vanillacake ) icon_state = "cooking_learing_sweets" diff --git a/code/game/objects/items/grenades/discogrenade.dm b/code/game/objects/items/grenades/discogrenade.dm index 1ac09b255642..c34fd59f7028 100644 --- a/code/game/objects/items/grenades/discogrenade.dm +++ b/code/game/objects/items/grenades/discogrenade.dm @@ -104,12 +104,10 @@ target.show_message(span_warning("You cover your ears, the music is just too loud for you."), 2) return // [/CELADON-ADD] - if(HAS_TRAIT(target, TRAIT_MINDSHIELD)) target.show_message(span_warning("You resist your inner urges to break out your best moves."), 2) target.set_drugginess(5) return - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN if(istype(target.get_item_by_slot(ITEM_SLOT_HEAD), /obj/item/clothing/head/foilhat)) to_chat(target, span_userdanger("BIG DISCO WON'T CORRUPT ME WITH THEIR POST ICW PSY-OP MUSIC!")) diff --git a/code/game/objects/items/grenades/flashbang.dm b/code/game/objects/items/grenades/flashbang.dm index a3b7af1d01cb..b60b74025e01 100644 --- a/code/game/objects/items/grenades/flashbang.dm +++ b/code/game/objects/items/grenades/flashbang.dm @@ -26,7 +26,7 @@ var/distance = max(0,get_dist(get_turf(src),T)) //Flash - if(M.flash_act(affect_silicon = 1)) + if(M.flash_act(affect_silicon = 1) & FLASH_EFFECT) M.Paralyze(max(20/max(1,distance), 5)) M.Knockdown(max(200/max(1,distance), 60)) @@ -83,7 +83,7 @@ M.show_message(span_warning("POP"), MSG_AUDIBLE) var/distance = max(0,get_dist(get_turf(src),T)) //Flash - if(M.flash_act(affect_silicon = 1)) + if(M.flash_act(affect_silicon = 1) & FLASH_EFFECT) M.Paralyze(max(10/max(1,distance), 5)) M.Knockdown(max(100/max(1,distance), 60)) diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm index 2649b5dad36d..e5d40d5425c1 100644 --- a/code/game/objects/items/grenades/grenade.dm +++ b/code/game/objects/items/grenades/grenade.dm @@ -42,20 +42,7 @@ qdel(src) /obj/item/grenade/proc/botch_check(mob/living/carbon/human/user) -// [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS -// if(sticky && prob(50)) // to add risk to sticky tape grenade cheese, no return cause we still prime as normal after - var/clumsy = HAS_TRAIT(user, TRAIT_CLUMSY) - if(clumsy && (clumsy_check == GRENADE_CLUMSY_FUMBLE)) - if(prob(50)) - to_chat(user, span_warning("Huh? How does this thing work?")) - preprime(user, 5, FALSE) - return TRUE - else if(!clumsy && (clumsy_check == GRENADE_NONCLUMSY_FUMBLE)) - to_chat(user, span_warning("You pull the pin on [src]. Attached to it is a pink ribbon that says, \"[span_clown("HONK")]\"")) - preprime(user, 5, FALSE) - return TRUE - else if(sticky && prob(50)) // to add risk to sticky tape grenade cheese, no return cause we still prime as normal after -// [/CELADON-EDIT] + if(sticky && prob(50)) // to add risk to sticky tape grenade cheese, no return cause we still prime as normal after to_chat(user, span_warning("What the... [src] is stuck to your hand!")) ADD_TRAIT(src, TRAIT_NODROP, STICKY_NODROP) diff --git a/code/game/objects/items/grenades/hypno.dm b/code/game/objects/items/grenades/hypno.dm index 2598cd0360a0..8fb60354f480 100644 --- a/code/game/objects/items/grenades/hypno.dm +++ b/code/game/objects/items/grenades/hypno.dm @@ -53,7 +53,7 @@ M.hallucination += 50 //Flash - if(M.flash_act(affect_silicon = 1)) + if(M.flash_act(affect_silicon = 1) & FLASH_EFFECT) M.Paralyze(max(10/max(1,distance), 5)) M.Knockdown(max(100/max(1,distance), 40)) if(iscarbon(M)) diff --git a/code/game/objects/items/gun_maint_kit.dm b/code/game/objects/items/gun_maint_kit.dm index df629499b53b..ee3f9fbd4001 100644 --- a/code/game/objects/items/gun_maint_kit.dm +++ b/code/game/objects/items/gun_maint_kit.dm @@ -33,7 +33,7 @@ fixable.add_overlay(GLOB.cleaning_bubbles) playsound(src, 'sound/misc/slip.ogg', 15, TRUE, -8) user.visible_message(span_notice("[user] starts to wipe down [fixable] with [src]!"), span_notice("You start to give [fixable] a deep clean with [src]...")) - if(!do_after(user, 20 SECONDS, target = target, extra_checks = CALLBACK(fixable, TYPE_PROC_REF(/obj/item/gun/ballistic, accidents_happen), user))) + if(!do_after(user, 10 SECONDS, target = target, extra_checks = CALLBACK(fixable, TYPE_PROC_REF(/obj/item/gun/ballistic, accidents_happen), user))) fixable.cut_overlay(GLOB.cleaning_bubbles) return fixable.cut_overlay(GLOB.cleaning_bubbles) diff --git a/code/game/objects/items/melee/dualenergy.dm b/code/game/objects/items/melee/dualenergy.dm index 513f74f2a40a..97d5ff3955d5 100644 --- a/code/game/objects/items/melee/dualenergy.dm +++ b/code/game/objects/items/melee/dualenergy.dm @@ -91,7 +91,6 @@ impale(user) return -// [CELADON-EDIT] Переопределено в модуле: mod_celadon\items\code\melee.dm /obj/item/melee/duelenergy/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(HAS_TRAIT(src, TRAIT_WIELDED)) return ..() diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index b018f2653431..1e25f0bd9b3f 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -14,6 +14,8 @@ var/sword_color /// The heat given off when active. var/active_heat = 3500 + /// Damage type used while active. + var/active_damtype = BURN /// Force while active. var/active_force = 30 @@ -56,11 +58,13 @@ if(active) heat = active_heat + damtype = active_damtype START_PROCESSING(SSobj, src) if(sword_color) icon_state = "[base_icon_state][sword_color]" else heat = initial(heat) + damtype = initial(damtype) STOP_PROCESSING(SSobj, src) tool_behaviour = (active ? TOOL_SAW : NONE) //Lets energy weapons cut trees. Also lets them do bonecutting surgery, which is kinda metal! @@ -386,11 +390,9 @@ if(active) icon_state = "[base_icon_state]-on" item_state = "[base_icon_state]-on" - damtype = FIRE armour_penetration = 60 else icon_state = base_icon_state item_state = base_icon_state - damtype = BRUTE armour_penetration = -20 . = ..() diff --git a/code/game/objects/items/melee/plasma_cutter.dm b/code/game/objects/items/melee/plasma_cutter.dm new file mode 100644 index 000000000000..2c93e38b7a22 --- /dev/null +++ b/code/game/objects/items/melee/plasma_cutter.dm @@ -0,0 +1,189 @@ + +/obj/item/plasmacutter + name = "plasma cutter" + desc = "A high powered engineering tool used for everything from hull slicing to industrial revolts. This particular model has an adjustable lens capable of welding, cutting, and firing energetic bursts." + icon = 'icons/obj/weapon/plasmacutter.dmi' + base_icon_state = "cutter" + icon_state = "cutter" + item_state = "cutter" + + lefthand_file = 'icons/mob/inhands/weapons/plasmacutter_left.dmi' + righthand_file = 'icons/mob/inhands/weapons/plasmacutter_right.dmi' + + flags_1 = CONDUCT_1 + attack_verb = list("attacked", "slashed", "cut", "sliced") + + sharpness = SHARP_NONE + + force = 10 + demolition_mod = 2 + armour_penetration = 0 + + heat = 3800 + usesound = list('sound/weapons/melee/plasmacutter/plasma_cutter_melee.ogg') + + power_use_amount = POWER_CELL_USE_VERY_LOW + + tool_behaviour = TOOL_DECONSTRUCT + wall_decon_damage = 200 + toolspeed = 0.75 + + light_system = MOVABLE_LIGHT + light_range = 2 + light_power = 0.75 + light_color = LIGHT_COLOR_PURPLE + light_on = FALSE + + ///is the cutter currently powered? + var/powered = FALSE + + var/obj/projectile/shot_type = /obj/projectile/plasma + var/fire_delay = 3 SECONDS + var/charged = TRUE + + var/cell_override = /obj/item/stock_parts/cell/high + +/obj/item/plasmacutter/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded = force, force_wielded = force+5, icon_wielded="[base_icon_state]_w") + AddComponent(/datum/component/cell, cell_override, CALLBACK(src, PROC_REF(switched_off))) + AddElement(/datum/element/tool_flash, 1) + +/obj/item/plasmacutter/examine(mob/user) + . = ..() + . += span_notice("You can Control+Click the plasmacutter to change its mode. It is currently on [tool_behaviour]") + +/obj/item/plasmacutter/CtrlClick(mob/user) + . = ..() + toggle_tool_mode(user) + +/obj/item/plasmacutter/afterattack(atom/target, mob/living/user, proximity_flag, clickparams) + . = ..() + var/modifiers = params2list(clickparams) + if(!HAS_TRAIT(src, TRAIT_WIELDED)) + return + if(!(item_use_power(power_use_amount*30) & COMPONENT_POWER_SUCCESS)) + return + if(!proximity_flag && charged && powered) + var/turf/proj_turf = user.loc + if(!isturf(proj_turf)) + return + var/obj/projectile/plasma_burst = new shot_type(proj_turf) + plasma_burst.preparePixelProjectile(target, user, modifiers) + plasma_burst.firer = user + playsound(user, 'sound/weapons/melee/plasmacutter/plasma_cutter.ogg', 100, TRUE) + plasma_burst.fire() + charged = FALSE + update_appearance() + addtimer(CALLBACK(src, GLOBAL_PROC_REF(playsound), src, 'sound/weapons/melee/plasmacutter/cutter_recharge.ogg', 60, TRUE), fire_delay-8) + addtimer(CALLBACK(src, PROC_REF(recharge)), fire_delay) + return + +/obj/item/plasmacutter/proc/recharge() + if(!charged) + charged = TRUE + update_appearance() + +/obj/item/plasmacutter/update_appearance(updates) + . = ..() + icon_state = "[base_icon_state][powered ? "_on" : ""]" + if(HAS_TRAIT(src, TRAIT_WIELDED)) + item_state = "[base_icon_state]_wielded[powered ? "_on" : ""]" + else + item_state = "[base_icon_state]" + + +/obj/item/plasmacutter/proc/toggle_tool_mode(mob/user) + if(tool_behaviour == TOOL_DECONSTRUCT) + tool_behaviour = TOOL_WELDER + else + tool_behaviour = TOOL_DECONSTRUCT + playsound(src, 'sound/weapons/gun/general/selector.ogg', 50, TRUE) + to_chat(user, "You adjust [src]'s lens to [tool_behaviour]") + +/obj/item/plasmacutter/unique_action(mob/user, modifiers) + . = ..() + if(!HAS_TRAIT(src, TRAIT_WIELDED)) + to_chat(user, span_warning("[src] needs to beheld in both hands to activate!")) + return FALSE + if(!powered) + if(!(item_use_power(power_use_amount, user, TRUE) & COMPONENT_POWER_SUCCESS)) + return + powered = !powered + + if(powered) + to_chat(user, span_notice("You ignite [src]'s blade.")) + playsound(user, 'sound/weapons/saberon.ogg', 20, TRUE) + switched_on() + return + + to_chat(user, span_notice("You disable [src]'s blade.")) + playsound(user, 'sound/weapons/saberoff.ogg', 20, TRUE) + switched_off() + +/obj/item/plasmacutter/proc/switched_on(mob/user) + powered = TRUE + force += 15 + damtype = BURN + sharpness = SHARP_EDGED + hitsound = 'sound/weapons/melee/plasmacutter/plasma_cutter_melee.ogg' + tool_behaviour = TOOL_DECONSTRUCT + set_light_on(powered) + update_appearance() + START_PROCESSING(SSobj, src) + +/obj/item/plasmacutter/proc/switched_off(mob/user) + powered = FALSE + force -= 15 + damtype = BRUTE + sharpness = SHARP_NONE + hitsound = 'sound/weapons/melee/baton_hit.ogg' + set_light_on(powered) + tool_behaviour = NONE + update_appearance() + STOP_PROCESSING(SSobj, src) + +/obj/item/plasmacutter/process(seconds_per_tick) + if(!HAS_TRAIT(src, TRAIT_WIELDED)) + playsound(src, 'sound/weapons/saberoff.ogg', 20, TRUE) + switched_off() + return + + if(!powered) + playsound(src, 'sound/weapons/saberoff.ogg', 20, TRUE) + switched_off() + return + + if(!(item_use_power(power_use_amount) & COMPONENT_POWER_SUCCESS)) + playsound(src, 'sound/weapons/saberoff.ogg', 20, TRUE) + switched_off() + return + +/obj/item/plasmacutter/use_tool(atom/target, mob/living/user, delay, amount=1, volume=0, datum/callback/extra_checks) + if(amount) + if(tool_behaviour==TOOL_DECONSTRUCT) + target.add_overlay(GLOB.advanced_cutting_effect) + . = ..() + target.cut_overlay(GLOB.advanced_cutting_effect) + + + else + target.add_overlay(GLOB.welding_sparks) + . = ..() + target.cut_overlay(GLOB.welding_sparks) + else + . = ..(amount=1) + +/obj/item/plasmacutter/use() + return (item_use_power(power_use_amount) & COMPONENT_POWER_SUCCESS) + +/obj/item/plasmacutter/tool_use_check(mob/living/user, atom/target, amount) + if(!powered) + to_chat(user, span_warning("[src] has to be on to complete this task!")) + return FALSE + + if((item_use_power(power_use_amount) & COMPONENT_POWER_SUCCESS)) + return TRUE + else + to_chat(user, span_warning("You need more charge to complete this task!")) + return FALSE diff --git a/code/game/objects/items/melee/trickweapon.dm b/code/game/objects/items/melee/trickweapon.dm index 4ba1e64fa06c..0f19f6f61284 100644 --- a/code/game/objects/items/melee/trickweapon.dm +++ b/code/game/objects/items/melee/trickweapon.dm @@ -30,9 +30,9 @@ transform_cooldown_time = (CLICK_CD_MELEE * 0.25), \ force_on = active_force, \ throwforce_on = active_throwforce, \ - hitsound_on = hitsound, \ attack_verb_on = list("cleave", "swipe", "slash", "chop"), \ - ) //add: hitsound_on = hitsound, \ // [CELADON-ADD] - FIXES_SOUND - Фикс бага на звук лазерного меча + hitsound_on = hitsound, /* [CELADON-ADD] - FIXES_SOUND - Фикс бага на звук лазерного меча */ \ + ) RegisterSignal(src, COMSIG_TRANSFORMING_ON_TRANSFORM, PROC_REF(on_transform)) /obj/item/melee/cleaving_saw/examine(mob/user) @@ -46,10 +46,7 @@ user.changeNext_move(CLICK_CD_MELEE * 0.25) if(user) balloon_alert(user, "[active ? "opened" : "closed"] [src]") -// [CELADON-EDIT] - FIXES_SOUND - Изменены звуки раскрытия/закрытия -// playsound(user, 'sound/magic/clockwork/fellowship_armory.ogg', 35, TRUE, frequency = 90000 - (active * 30000)) - playsound(user, active ? 'mod_celadon/_storage_sounds/sound/weapons/cleaving_saw_open.ogg' : 'mod_celadon/_storage_sounds/sound/weapons/cleaving_saw_close.ogg', 35, TRUE, frequency = 90000 - (active * 30000)) -// [/CELADON-EDIT] + playsound(user, 'sound/magic/clockwork/fellowship_armory.ogg', 35, TRUE, frequency = 90000 - (active * 30000)) return COMPONENT_NO_DEFAULT_MESSAGE /obj/item/melee/cleaving_saw/melee_attack_chain(mob/user, atom/target, params) diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index f12f8169f4bd..1cad976c9c71 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -116,9 +116,6 @@ /obj/item/storage/box/hero/ghostbuster/PopulateContents() new /obj/item/choice_beacon/ouija(src) - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - new /obj/item/clothing/glasses/welding/ghostbuster(src) - // [/CELADON-ADD] new /obj/item/storage/belt/fannypack/bustin(src) new /obj/item/clothing/gloves/color/black(src) new /obj/item/clothing/shoes/jackboots(src) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 25f8efaf5549..d2dda76bbfb8 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -671,14 +671,6 @@ if(.) R.module.transform_to(new_module) -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/borg/upgrade/transform/clown - name = "borg module picker (Clown)" - desc = "Allows you to to turn a cyborg into a clown, honk." - icon_state = "cyborg_upgrade3" - new_module = /obj/item/robot_module/clown -// [/CELADON-ADD] - /obj/item/borg/upgrade/circuit_app name = "circuit manipulation apparatus" desc = "An engineering cyborg upgrade allowing for manipulation of circuit boards." diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index 1c330b0ffa4f..1052e6d9d964 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -1,8 +1,4 @@ #define BATON_BASH_COOLDOWN (3 SECONDS) -/* - * [CELADON-OVERRIDE] - Файл глоабльно изменен, ID-мода для поиска: BALLISTIC_SHIELD - * Причина: Переработка механики щитов (https://github.com/CeladonSS13/Shiptest/pull/1901) - */ /obj/item/shield name = "shield" @@ -13,8 +9,9 @@ slot_flags = ITEM_SLOT_BACK force = 10 item_flags = SLOWS_WHILE_IN_HAND - //slowdown = 0.5 // [CELADON-REMOVE] - BALLISTIC_SHIELD - Rebalance - //drag_slowdown = 1.25 // [CELADON-REMOVE] + slowdown = 1.25 + drag_slowdown = 1.25 + integrity_failure = 0.1 block_chance = 50 throwforce = 5 throw_speed = 2 @@ -22,6 +19,7 @@ w_class = WEIGHT_CLASS_BULKY attack_verb = list("shoved", "bashed") armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70) + uses_integrity = TRUE /// makes beam projectiles pass through the shield var/transparent = FALSE /// threshold where armor piercing works @@ -36,39 +34,28 @@ var/shield_bash_sound = 'sound/effects/shieldbash.ogg' var/recoil_bonus = -2 var/broken = FALSE + /// material used to repair + var/obj/item/stack/sheet/repair_material = /obj/item/stack/sheet/plasteel + /// whether or not it is repairable + var/is_repairable = TRUE -// [CELADON-ADD] - Флаг на включение сломаных щитов из модов - BALLISTIC_SHIELD - Extended Edition - var/broken_shield - var/spread_bonus = 0 - var/braking_sound = 'sound/effects/glassbr3.ogg' - var/braking_alert = "cracks!" -// [/CELADON-ADD] - -/obj/item/shield/proc/on_block(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK, damage_type) -// [CELADON-ADD] - BALLISTIC_SHIELD - Rebalance - Щиты не должны ломаться лол - if(damage_type != BRUTE && damage_type != BURN) - return FALSE -// [/CELADON-ADD] +/obj/item/shield/proc/on_block(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK) take_damage(damage) /obj/item/shield/atom_break(damage_flag) . = ..() if(!broken) if(isliving(loc)) -// [CELADON-ADD] - BALLISTIC_SHIELD - Extended Edition - //loc.balloon_alert(loc, "[src] cracks!") // [CELADON-EDIT] - loc.balloon_alert(loc, "[src] [braking_alert]") + // CELADON EDIT START var/mob/living/user = loc + loc.balloon_alert(loc, "[src] [breaking_alert]") user.dropItemToGround(src, force = TRUE) - playsound(src, braking_sound, 100) - if(broken_shield) - icon = 'mod_celadon/_storage_icons/icons/items/weapons/shields.dmi' - icon_state = "[src::icon_state]_broken" -// [/CELADON-ADD] + // CELADON EDIT END + playsound(src, breaking_sound, 100) // CELADON EDIT name = "broken [src::name]" block_chance = 0 slowdown = 0 - //drag_slowdown = 0 // [CELADON-REMOVE] - BALLISTIC_SHIELD - Rebalance + drag_slowdown = 0 broken = TRUE /obj/item/shield/examine(mob/user) @@ -115,125 +102,51 @@ to_chat(owner, span_boldwarning("Your shield is penetrated by [hitby]!")) return FALSE . = ..() - if(.) + if(. && !broken) on_block(owner, hitby, attack_text, damage, attack_type, damage_type) -// [CELADON-ADD] - BALLISTIC_SHIELD - Rebalance -/obj/item/shield/proc/defense_check(turf/aloc, turf/bloc, mobdir) - . = TRUE - var/dx = aloc.x - bloc.x - var/dy = aloc.y - bloc.y - - switch(mobdir) - if(NORTH) - if(abs(dx) <= dy * 2) - . = FALSE - if(SOUTH) - if(abs(dx) <= dy * -2) - . = FALSE - if(EAST) - if(abs(dy) <= dx * 2) - . = FALSE - if(WEST) - if(abs(dy) <= dx * -2) - . = FALSE - return -// [/CELADON-ADD] - -/obj/item/shield/riot - name = "ballistic shield" - desc = "A shield adept at blocking blunt objects and bullets from connecting with the torso of the shield wielder. Use 10 plasteel to repair." - icon_state = "ballistic" - custom_materials = list(/datum/material/iron=8500) - - force = 15 - max_integrity = 600 - block_chance = 60 - integrity_failure = 0.1 - material_flags = MATERIAL_NO_EFFECTS - -// [CELADON-ADD] - BALLISTIC_SHIELD - Extended Edition + Rebalance - spread_bonus = -3 - slowdown = 0.5 - max_integrity = 600 - block_chance = 60 - icon = 'mod_celadon/_storage_icons/icons/items/weapons/shields.dmi' - lefthand_file = 'mod_celadon/_storage_icons/icons/items/weapons/shields_lefthand.dmi' - righthand_file = 'mod_celadon/_storage_icons/icons/items/weapons/shields_righthand.dmi' - mob_overlay_icon = 'mod_celadon/_storage_icons/icons/items/weapons/shields_back.dmi' - broken_shield = TRUE -// [/CELADON-ADD] +/obj/item/shield/proc/repair(attacking_item, obj/item/stack/sheet, user) + if (istype(attacking_item, repair_material)) + if (atom_integrity >= max_integrity) + to_chat(user, span_warning("[src] is already in perfect condition.")) + else + while(atom_integrity < max_integrity) + var/obj/item/stack/sheet/material_used = attacking_item + if(material_used.get_amount() < 10) + to_chat(user, span_notice("You do not have enough [material_used] to repair!")) + return + if(!do_after(user, 30, target= src)) + return + material_used.use(10) + update_integrity(max_integrity) + to_chat(user, span_notice("You repair [src] with [material_used].")) + name = src::name + broken = FALSE + block_chance = initial(block_chance) + slowdown = initial(slowdown) + drag_slowdown = initial(drag_slowdown) + else + to_chat(user, span_warning("[src] isn't made of this material!")) -/obj/item/shield/riot/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/melee)) +/obj/item/shield/attackby(obj/item/attacking_item, mob/user, params) + if(istype(attacking_item, /obj/item/melee)) if(COOLDOWN_FINISHED(src, baton_bash)) - user.visible_message(span_warning("[user] bashes [src] with [W]!")) + user.visible_message(span_warning("[user] bashes [src] with [attacking_item]!")) playsound(src, shield_bash_sound, 50, TRUE) COOLDOWN_START(src, baton_bash, BATON_BASH_COOLDOWN) - else if(istype(W, /obj/item/stack/sheet/plasteel)) - if (atom_integrity >= max_integrity) - to_chat(user, span_warning("[src] is already in perfect condition.")) - while(atom_integrity < max_integrity) - if(!do_after(user, 3 SECONDS, target= src)) //if(!do_after(user, 30, target= src)) // [CELADON-EDIT] - ORIGIRAL - return - var/obj/item/stack/sheet/plasteel/T = W - T.use(10) -// [CELADON-ADD] - BALLISTIC_SHIELD - Extended Edition - if(broken_shield) - if(istype(src, /obj/item/shield/riot/tele)) - icon_state = "teleriot1" - else - icon_state = initial(icon_state) -// [/CELADON-ADD] - atom_integrity = max_integrity - to_chat(user, span_notice("You repair [src] with [T].")) - name = src::name - broken = FALSE -// [CELADON-EDIT] - BALLISTIC_SHIELD - Extended Edition - block_chance = initial(block_chance) //block_chance = 60 - slowdown = initial(slowdown) //slowdown = 1.25 - //drag_slowdown = initial(drag_slowdown) // drag_slowdown = 1.25 -// [/CELADON-EDIT] - -/obj/item/shield/riot/spike - name = "spike shield" - desc = "A ballistic shield adept at blocking blunt objects and bullets, adorned with a vicious spike. Use 10 plasteel to repair" - icon_state = "spike" - force = 24 - attack_verb = list("stabbed", "gashed") - hitsound = 'sound/weapons/bladeslice.ogg' - -/obj/item/shield/riot/roman - name = "\improper Roman shield" - desc = "Bears an inscription on the inside: \"Romanes venio domus\"." - icon_state = "roman_shield" - item_state = "roman_shield" - lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' - transparent = FALSE - custom_materials = list(/datum/material/iron=8500) - max_integrity = 65 - -// [CELADON-ADD] - BALLISTIC_SHIELD - Extended Edition - icon = 'icons/obj/shields.dmi' - broken_shield = FALSE -// [/CELADON-ADD] - -/obj/item/shield/riot/roman/fake - desc = "Bears an inscription on the inside: \"Romanes venio domus\". It appears to be a bit flimsy." - block_chance = 0 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - max_integrity = 30 - recoil_bonus = 0 //it's PLASTIC - slowdown = 0 // [CELADON-REMOVE] - BALLISTIC_SHIELD - Rebalance + else if(istype(attacking_item, /obj/item/stack/sheet)) + if(is_repairable == TRUE) + repair(attacking_item, /obj/item/stack/sheet, user) + else + to_chat(user, span_warning("[src] cannot be repaired!")) -/obj/item/shield/riot/buckler +/obj/item/shield/buckler name = "wooden buckler" desc = "A medieval wooden buckler." icon_state = "buckler" item_state = "buckler" slowdown = 0 - //drag_slowdown = 0 // [CELADON-REMOVE] - BALLISTIC_SHIELD - Rebalance + drag_slowdown = 0 lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' custom_materials = list(/datum/material/wood = MINERAL_MATERIAL_AMOUNT * 10) @@ -243,89 +156,17 @@ max_integrity = 55 integrity_failure = 0.2 w_class = WEIGHT_CLASS_NORMAL + repair_material = /obj/item/stack/sheet/mineral/wood var/shield_break_leftover = /obj/item/stack/sheet/mineral/wood var/shield_break_sound = 'sound/effects/bang.ogg' -// [CELADON-ADD] - BALLISTIC_SHIELD - Extended Edition - icon = 'icons/obj/shields.dmi' - broken_shield = FALSE -// [/CELADON-ADD] - -/obj/item/shield/riot/buckler/atom_destruction(damage_flag) - +/obj/item/shield/buckler/atom_destruction(damage_flag) playsound(src, shield_break_sound, 50) new shield_break_leftover(get_turf(src)) if(isliving(loc)) loc.balloon_alert(loc, "shield broken!") return ..() -/obj/item/shield/riot/flash - name = "strobe shield" - desc = "A shield with a built in, high intensity light capable of blinding and disorienting suspects. Takes regular handheld flashes as bulbs. Use 10 plasteel to repair." - icon_state = "flashshield" - item_state = "flashshield" - var/obj/item/assembly/flash/handheld/embedded_flash - -/obj/item/shield/riot/flash/Initialize() - . = ..() - embedded_flash = new(src) - -/obj/item/shield/riot/flash/ComponentInitialize() - . = .. () - AddElement(/datum/element/update_icon_updates_onmob) - -/obj/item/shield/riot/flash/attack(mob/living/M, mob/user) - . = embedded_flash.attack(M, user) - update_appearance() - -/obj/item/shield/riot/flash/attack_self(mob/living/carbon/user) - . = embedded_flash.attack_self(user) - update_appearance() - -/obj/item/shield/riot/flash/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - . = ..() - if (. && !embedded_flash.burnt_out) - embedded_flash.activate() - update_appearance() - -/obj/item/shield/riot/flash/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/assembly/flash/handheld)) - var/obj/item/assembly/flash/handheld/flash = W - if(flash.burnt_out) - to_chat(user, span_warning("No sense replacing it with a broken bulb!")) - return - else - to_chat(user, span_notice("You begin to replace the bulb...")) - if(do_after(user, 2 SECONDS, target = user)) //if(do_after(user, 20, target = user)) // [CELADON-EDIT] - ORIGIRAL - if(flash.burnt_out || !flash || QDELETED(flash)) - return - playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE) - qdel(embedded_flash) - embedded_flash = flash - flash.forceMove(src) - update_appearance() - return - ..() - -/obj/item/shield/riot/flash/emp_act(severity) - . = ..() - embedded_flash.emp_act(severity) - update_appearance() - -/obj/item/shield/riot/flash/update_icon_state() - if(!embedded_flash || embedded_flash.burnt_out) - icon_state = "ballistic" - item_state = "ballistic" - else - icon_state = "flashshield" - item_state = "flashshield" - return ..() - -/obj/item/shield/riot/flash/examine(mob/user) - . = ..() - if (embedded_flash?.burnt_out) - . += span_info("The mounted bulb has burnt out. You can try replacing it with a new one.") - /obj/item/shield/energy name = "energy combat shield" desc = "A shield that reflects almost all energy projectiles, but is useless against physical attacks. It can be retracted, expanded, and stored anywhere." @@ -339,6 +180,7 @@ throw_speed = 3 base_icon_state = "eshield" // [base_icon_state]1 for expanded, [base_icon_state]0 for contracted breakable_by_damage = FALSE + is_repairable = FALSE var/on_force = 10 var/on_throwforce = 8 var/on_throw_speed = 2 @@ -378,7 +220,7 @@ to_chat(user, span_notice("[src] can now be concealed.")) add_fingerprint(user) -/obj/item/shield/riot/tele +/obj/item/shield/tele name = "telescopic shield" desc = "An advanced riot shield made of lightweight materials that collapses for easy storage." icon_state = "teleriot0" @@ -390,29 +232,20 @@ throwforce = 3 throw_speed = 3 throw_range = 4 + max_integrity = 300 + block_chance = 50 + slowdown = 1 + drag_slowdown = 1 + repair_material = /obj/item/stack/sheet/rglass w_class = WEIGHT_CLASS_NORMAL var/active = 0 -// [CELADON-ADD] - BALLISTIC_SHIELD - Extended Edition - desc = "An advanced riot shield made of lightweight materials that collapses for easy storage. Use 10 plasteel to repair." - lefthand_file = 'mod_celadon/_storage_icons/icons/items/weapons/shields_lefthand.dmi' - righthand_file = 'mod_celadon/_storage_icons/icons/items/weapons/shields_righthand.dmi' - max_integrity = 400 - block_chance = 50 - slowdown = 0.3 - broken_shield = TRUE -// [/CELADON-ADD] - -/obj/item/shield/riot/tele/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) +/obj/item/shield/tele/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) if(active) return ..() return 0 -/obj/item/shield/riot/tele/attack_self(mob/living/user) -// [CELADON-ADD] - BALLISTIC_SHIELD - Extended Edition - Сломаный щит нельзя сложить - if(broken) - return -// [/CELADON-ADD] +/obj/item/shield/tele/attack_self(mob/living/user) active = !active icon_state = "teleriot[active]" playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, TRUE) @@ -433,19 +266,54 @@ to_chat(user, span_notice("[src] can now be concealed.")) add_fingerprint(user) -/obj/item/shield/riot/goliath - name = "Goliath shield" - desc = "A shield made from interwoven plates of goliath hide." - icon_state = "goliath_shield" - icon = 'icons/obj/shields.dmi' - lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' +/obj/item/shield/heavy + name = "heavy ballistic shield" + desc = "A heavy shield designed to keep everything behind it safe from any due harm. Use 10 plasteel to repair." + icon_state = "heavy" mob_overlay_icon = 'icons/mob/clothing/back.dmi' - custom_materials = list() - transparent = FALSE - block_chance = 25 - max_integrity = 70 - w_class = WEIGHT_CLASS_BULKY - slowdown = 0 // [CELADON-REMOVE] - BALLISTIC_SHIELD - Rebalance + + // It's a heavy shield. So it'll obviously weigh more, but it can certainly take more of a beating; as well as dish out some + slowdown = 1.50 + drag_slowdown = 1.50 + throwforce = 10 + throw_range = 2 + max_integrity = 800 + force = 10 + block_chance = 60 + ap_threshold = 30 + armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 0, "bomb" = 50, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80) + var/wielded = FALSE + +/obj/item/shield/heavy/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) + +/obj/item/shield/heavy/ComponentInitialize() + . = ..() + AddComponent(/datum/component/two_handed, force_unwielded = 10, force_wielded = 20) + +/// triggered on wield of two handed item +/obj/item/shield/heavy/proc/on_wield(obj/item/source, mob/user) + slowdown = 3.50 + wielded = TRUE + INVOKE_ASYNC(src, PROC_REF(do_wield), user) + +/obj/item/shield/heavy/proc/do_wield(mob/user) + if(!broken) + if(do_after(user, 3 SECONDS, user, IGNORE_USER_LOC_CHANGE | IGNORE_TARGET_LOC_CHANGE, TRUE, + CALLBACK(src, PROC_REF(is_wielded)))) + block_chance = 85 + +/// triggered on unwield of two handed item +/obj/item/shield/heavy/proc/on_unwield(obj/item/source, mob/user) + SIGNAL_HANDLER + wielded = FALSE + if(!broken) + block_chance = initial(block_chance) + slowdown = initial(slowdown) + +/obj/item/shield/heavy/proc/is_wielded() + return wielded #undef BATON_BASH_COOLDOWN diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index a9804f482c62..c6e4de6695ea 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -153,7 +153,7 @@ max_amount = 12 amount = 6 grind_results = list(/datum/reagent/cellulose = 2) - custom_price = 35 // [CELADON-EDIT] - OUTPOST_MED_BALANCE // custom_price = 50 + custom_price = 50 burn_cleanliness_bonus = 0.35 merge_type = /obj/item/stack/medical/gauze var/gauze_type = /datum/bodypart_aid/gauze diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm index f76d8d31e5b9..bca18564fb51 100644 --- a/code/game/objects/items/stacks/rods.dm +++ b/code/game/objects/items/stacks/rods.dm @@ -14,9 +14,6 @@ GLOBAL_LIST_INIT(rod_recipes, list ( \ new/datum/stack_recipe("thick railing corner", /obj/structure/railing/thick/corner, 1, time = 10, window_checks = TRUE), \ new/datum/stack_recipe("ladder", /obj/structure/ladder/crafted, 15, time = 150, one_per_turf = TRUE, on_floor = FALSE), \ new/datum/stack_recipe("handrail", /obj/structure/chair/handrail, 4, time = 15, one_per_turf = TRUE), \ - // [CELADON-ADD] - CELADON_STRUCTURES - Барикады - new/datum/stack_recipe("guardrail barricade", /obj/structure/deployable_barricade/guardrail, 15, time = 4 SECONDS, one_per_turf = TRUE, on_floor = TRUE), \ - // [/CELADON-ADD] )) /obj/item/stack/rods diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 5746e7bfe5b1..d47d47542cae 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -142,11 +142,11 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \ new/datum/stack_recipe("windoor frame", /obj/structure/windoor_assembly, 5, time = 0.5 SECONDS, on_floor = TRUE, window_checks = TRUE), \ new/datum/stack_recipe("window firelock frame", /obj/structure/firelock_frame/window, 3, time = 0.5 SECONDS, one_per_turf = TRUE, on_floor = TRUE), null, \ - new/datum/stack_recipe("directional reinforced window", /obj/structure/window/reinforced/unanchored, time = 0.5 SECONDS, on_floor = TRUE, window_checks = TRUE), \ - new/datum/stack_recipe("fulltile reinforced window", /obj/structure/window/reinforced/fulltile/unanchored, 2, time = 2 SECONDS, on_floor = TRUE, window_checks = TRUE), \ + new/datum/stack_recipe("directional reinforced window", /obj/structure/window/reinforced/unanchored, time = 0.5 SECONDS, on_floor = TRUE, window_checks = TRUE), /* [CELADON-EDIT] - NO-MOMENTAL-CRAFT */ \ + new/datum/stack_recipe("fulltile reinforced window", /obj/structure/window/reinforced/fulltile/unanchored, 2, time = 2 SECONDS, on_floor = TRUE, window_checks = TRUE), /* [CELADON-EDIT] - NO-MOMENTAL-CRAFT */ \ new/datum/stack_recipe("reinforced glass tile", /obj/item/stack/tile/glass/reinforced, 1, 4, 20), \ new/datum/stack_recipe("glass shard", /obj/item/shard, 1) \ -)) // [CELADON-EDIT] - NO-MOMENTAL-CRAFT +)) /obj/item/stack/sheet/rglass @@ -300,13 +300,13 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list( pixel_y = rand(-5, 5) if (icon_prefix) icon_state = "[icon_prefix][icon_state]" -// [CELADON-ADD] + // [CELADON-ADD] var/matrix/M = matrix(transform) M.Turn(rand(-170, 170)) if(prob(50)) M.Scale(-1, 1) transform = M -// [/CELADON-ADD] + // [/CELADON-ADD] if(!mapload) SSblackbox.record_feedback("tally", "station_mess_created", 1, name) diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 3920852d24a9..59ff983d59b9 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -53,17 +53,6 @@ icon_state = "sheet-monkey" item_state = "sheet-monkey" -GLOBAL_LIST_INIT(monkey_recipes, list ( \ - new/datum/stack_recipe("monkey mask", /obj/item/clothing/mask/gas/monkeymask, 1), \ - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - new/datum/stack_recipe("monkey suit", /obj/item/clothing/suit/monkeysuit, 2), \ - // [/CELADON-ADD] - )) - -/obj/item/stack/sheet/animalhide/monkey/get_main_recipes() - . = ..() - . += GLOB.monkey_recipes - /obj/item/stack/sheet/animalhide/lizard name = "lizard skin" desc = "Sssssss..." @@ -140,9 +129,6 @@ GLOBAL_LIST_INIT(leather_recipes, list ( \ new/datum/stack_recipe("leather bandolier", /obj/item/storage/belt/security/military/frontiersmen, 4), \ new/datum/stack_recipe("leather jacket", /obj/item/clothing/suit/jacket/leather, 7), \ new/datum/stack_recipe("leather shoes", /obj/item/clothing/shoes/laceup, 2), \ - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - new/datum/stack_recipe("leather overcoat", /obj/item/clothing/suit/jacket/leather/overcoat, 10), \ - // [/CELADON-ADD] new/datum/stack_recipe("saddle", /obj/item/saddle, 5), \ )) diff --git a/code/game/objects/items/stacks/sheets/recipes/recipes_metal.dm b/code/game/objects/items/stacks/sheets/recipes/recipes_metal.dm index 35f503401011..d8db71aa5b49 100644 --- a/code/game/objects/items/stacks/sheets/recipes/recipes_metal.dm +++ b/code/game/objects/items/stacks/sheets/recipes/recipes_metal.dm @@ -250,8 +250,5 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ new/datum/stack_recipe("chest press", /obj/structure/weightmachine/stacklifter, 5, time = 25, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bench press", /obj/structure/weightmachine/weightlifter, 5, time = 25, one_per_turf = TRUE, on_floor = TRUE), \ )), \ - // [CELADON-ADD] - CELADON_STRUCTURES - Барикады - new/datum/stack_recipe("metal barricade", /obj/structure/deployable_barricade/metal, 20, time = 4 SECONDS, one_per_turf = TRUE, on_floor = TRUE), \ - // [/CELADON-ADD] new/datum/stack_recipe("shower", /obj/machinery/shower, 3, time = 25) )) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 1d948105b5fe..96a89fc7118a 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -153,7 +153,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ new/datum/stack_recipe("painting frame", /obj/item/wallframe/painting, 1, time = 10),\ new/datum/stack_recipe("easel", /obj/structure/easel, 4, time = 10),\ new/datum/stack_recipe("display case chassis", /obj/structure/displaycase_chassis, 5, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("wooden buckler", /obj/item/shield/riot/buckler, 20, time = 40), \ + new/datum/stack_recipe("wooden buckler", /obj/item/shield/buckler, 20, time = 40), \ new/datum/stack_recipe("apiary", /obj/structure/beebox, 40, time = 50),\ new/datum/stack_recipe("tiki mask", /obj/item/clothing/mask/gas/tiki_mask, 2), \ new/datum/stack_recipe("honey frame", /obj/item/honey_frame, 5, time = 10),\ @@ -178,9 +178,6 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ new/datum/stack_recipe("wooden railing corner", /obj/structure/railing/corner/wood, 1, time = 10, window_checks = TRUE), \ new /datum/stack_recipe("wooden computer frame", /obj/structure/frame/computer/solgov, 5, time = 25, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("planter box", /obj/machinery/hydroponics/wooden, 5, time = 8 SECONDS, one_per_turf = TRUE, on_floor = TRUE), \ - // [CELADON-ADD] - CELADON_STRUCTURES - Барикады - new/datum/stack_recipe("Wooden Half-Barricade", /obj/structure/deployable_barricade/wooden, 10, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE), \ - // [/CELADON-ADD] )) /obj/item/stack/sheet/mineral/wood @@ -288,11 +285,6 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \ new/datum/stack_recipe("23x19 canvas", /obj/item/canvas/twentythreeXnineteen, 4), \ new/datum/stack_recipe("23x23 canvas", /obj/item/canvas/twentythreeXtwentythree, 5), \ new/datum/stack_recipe("punching bag", /obj/structure/punching_bag, 5, time = 25, one_per_turf = TRUE, on_floor = TRUE), \ - // [CELADON-ADD] - CELADON_QOL - добавляем рецепты обмоток лап - new/datum/stack_recipe("footwraps white", /obj/item/clothing/shoes/footwraps, 2), \ - new/datum/stack_recipe("footwraps black", /obj/item/clothing/shoes/footwraps/black, 2), \ - new/datum/stack_recipe("footwraps brown", /obj/item/clothing/shoes/footwraps/brown, 2), \ - // [/CELADON-ADD] )) /obj/item/stack/sheet/cotton/cloth @@ -475,10 +467,6 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ new/datum/stack_recipe("pinion airlock assembly", /obj/structure/door_assembly/door_assembly_bronze, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bronze pinion airlock assembly", /obj/structure/door_assembly/door_assembly_bronze/seethru, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bronze hat", /obj/item/clothing/head/bronze), \ - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - new/datum/stack_recipe("bronze suit", /obj/item/clothing/suit/bronze), \ - new/datum/stack_recipe("bronze boots", /obj/item/clothing/shoes/bronze), \ - // [/CELADON-ADD] null, new/datum/stack_recipe("bronze chair", /obj/structure/chair/comfy/shuttle/bronze, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ )) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index cac867cab9a5..ef7dbd2cf3ee 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -12,6 +12,7 @@ /obj/item/stack icon = 'icons/obj/stack_objects.dmi' gender = PLURAL + item_flags = NOBLUDGEON material_modifier = 0.01 max_integrity = 100 var/list/datum/stack_recipe/recipes diff --git a/code/game/objects/items/stacks/tape.dm b/code/game/objects/items/stacks/tape.dm index 057992e260aa..68d5efcc3ed3 100644 --- a/code/game/objects/items/stacks/tape.dm +++ b/code/game/objects/items/stacks/tape.dm @@ -76,7 +76,7 @@ desc = "Made for patching broken bones back together alongside bone gel." prefix = "surgical" conferred_embed = list("embed_chance" = 30, "pain_mult" = 0, "jostle_pain_mult" = 0, "ignore_throwspeed_threshold" = TRUE) - custom_price = 50 // [CELADON-EDIT] - OUTPOST_MED_BALANCE // custom_price = 500 + custom_price = 500 /obj/item/stack/tape name = "packaging tape" @@ -92,12 +92,16 @@ var/lifespan = 300 var/nonorganic_heal = 5 - var/self_delay = 30 //! Also used for the tapecuff delay - var/other_delay = 10 + var/self_delay = 3 SECONDS //! Also used for the tapecuff delay + var/other_delay = 1 SECONDS var/prefix = "sticky" var/list/conferred_embed = EMBED_HARMLESS var/overwrite_existing = FALSE +/obj/item/stack/tape/Initialize(mapload, new_amount, merge) + . = ..() + AddElement(/datum/element/robotic_heal, brute_heal = nonorganic_heal, self_delay = self_delay, other_delay = other_delay) + /obj/item/stack/tape/merge(obj/item/stack/S) //Because we have unique children, we need to add an additional fail case if(src.type != S.type) return @@ -107,10 +111,6 @@ if(!istype(C)) return - //Bootleg bandage - if(user.a_intent == INTENT_HELP) - try_heal(C, user) - //Relatable suffering if((HAS_TRAIT(user, TRAIT_CLUMSY) && prob(25))) to_chat(user, span_warning("Uh... where did the tape edge go?!")) @@ -157,39 +157,7 @@ to_chat(user, span_warning("There isn't enough tape left!")) else to_chat(user, span_warning("[C] doesn't have two hands...")) - -/obj/item/stack/tape/proc/try_heal(mob/living/carbon/C, mob/user) - if(C == user) - playsound(loc, usesound, 30, TRUE, -2) - user.visible_message(span_notice("[user] starts to apply \the [src] on [user.p_them()]self..."), span_notice("You begin applying \the [src] on yourself...")) - if(!do_after(user, self_delay, C, extra_checks=CALLBACK(C, TYPE_PROC_REF(/mob/living, can_inject), user))) - return - else if(other_delay) - user.visible_message(span_notice("[user] starts to apply \the [src] on [C]."), span_notice("You begin applying \the [src] on [C]...")) - if(!do_after(user, other_delay, C, extra_checks=CALLBACK(C, TYPE_PROC_REF(/mob/living, can_inject), user))) - return - - if(heal(C, user)) - log_combat(user, C, "tape bandaged", src.name) - use(1) - -/obj/item/stack/tape/proc/heal(mob/living/carbon/C, mob/user) - if(C.stat == DEAD) - to_chat(user, span_notice("There isn't enough [src] in the universe to fix that...")) - return - if(!iscarbon(C)) - return - var/obj/item/bodypart/affecting = C.get_bodypart(check_zone(user.zone_selected)) - if(!affecting) //Missing limb? - to_chat(user, span_warning("[C] doesn't have \a [parse_zone(user.zone_selected)]!")) - return - if(IS_ROBOTIC_LIMB(affecting)) //Robotic patch-up - if(affecting.brute_dam) - user.visible_message(span_notice("[user] applies \the [src] on [C]'s [affecting.name]."), span_green("You apply \the [src] on [C]'s [affecting.name].")) - if(affecting.heal_damage(nonorganic_heal)) - C.update_damage_overlays() - return TRUE - to_chat(user, span_warning("[src] can't patch what [C] has...")) + return ..() /obj/item/stack/tape/proc/apply_gag(mob/living/carbon/target, mob/user) if(target.is_muzzled() || target.is_mouth_covered()) @@ -306,6 +274,7 @@ nonorganic_heal = 10 prefix = "insulated sticky" siemens_coefficient = 0 + w_class = WEIGHT_CLASS_SMALL /obj/item/stack/tape/industrial/electrical/wrap_item(obj/item/I, mob/living/user) if(istype(I, /obj/item/clothing/gloves/color)) diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 44a15dea4a5d..ed852838f8d5 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -34,9 +34,7 @@ equipping_sound = EQUIP_SOUND_VFAST_GENERIC unequipping_sound = UNEQUIP_SOUND_VFAST_GENERIC - // [CELADON-REMOVE] - CELADON_BALANCE_CD - //equip_delay_self = EQUIP_DELAY_BACK - // [/CELADON-REMOVE] + equip_delay_self = EQUIP_DELAY_BACK equip_delay_other = EQUIP_DELAY_BACK * 1.5 strip_delay = EQUIP_DELAY_BACK * 1.5 equip_self_flags = EQUIP_ALLOW_MOVEMENT | EQUIP_SLOWDOWN @@ -50,9 +48,7 @@ STR.max_volume = STORAGE_VOLUME_BACKPACK STR.max_w_class = MAX_WEIGHT_CLASS_BACKPACK STR.use_sound = 'sound/items/storage/unzip.ogg' - // [CELADON-REMOVE] - CELADON_BALANCE_CD - // STR.worn_access = FALSE - // [/CELADON-REMOVE] + STR.worn_access = FALSE /obj/item/storage/backpack/examine(mob/user) . = ..() @@ -103,17 +99,6 @@ icon_state = "explorerpack" item_state = "explorerpack" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/storage/backpack/mime - name = "Parcel Parceaux" - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/backpacks.dmi' - lefthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/backpack_lefthand.dmi' - righthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/backpack_righthand.dmi' - desc = "A silent backpack made for those silent workers. Silence Co." - icon_state = "mimepack" - item_state = "mimepack" -// [/CELADON-ADD] - /obj/item/storage/backpack/medic name = "medical backpack" desc = "It's a backpack especially designed for use in a sterile environment." @@ -196,16 +181,6 @@ desc = "A spacious backpack with lots of pockets, worn by Janitors of an Emergency Response Team." icon_state = "ert_janitor" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/storage/backpack/ert/clown - name = "emergency response team clown backpack" - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/backpacks.dmi' - lefthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/backpack_lefthand.dmi' - righthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/backpack_righthand.dmi' - mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/backpack_onmob.dmi' - desc = "A spacious backpack with lots of pockets, worn by Clowns of an Emergency Response Team." - icon_state = "ert_clown" -// [/CELADON-ADD] /* * Satchel Types */ @@ -220,22 +195,16 @@ equipping_sound = null unequipping_sound = null - // [CELADON-REMOVE] - CELADON_BALANCE_CD - //equip_delay_self = null - // [/CELADON-REMOVE] + equip_delay_self = null equip_delay_other = EQUIP_DELAY_BACK strip_delay = EQUIP_DELAY_BACK -// [CELADON-REMOVE] - CELADON_BALANCE_CD -/* /obj/item/storage/backpack/satchel/ComponentInitialize() . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_volume = STORAGE_VOLUME_SATCHEL STR.max_w_class = MAX_WEIGHT_CLASS_M_CONTAINER STR.worn_access = TRUE -*/ -// [CELADON-REMOVE] /obj/item/storage/backpack/satchel/leather name = "leather satchel" @@ -694,23 +663,6 @@ new /obj/item/reagent_containers/hypospray/medipen/combat_drug(src) new /obj/item/grenade/syndieminibomb(src) -// [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN -// For ClownOps. -/obj/item/storage/backpack/duffelbag/clown/syndie/ComponentInitialize() - . = ..() - var/datum/component/storage/STR = GetComponent(/datum/component/storage) - slowdown = 0 - STR.silent = TRUE - -/obj/item/storage/backpack/duffelbag/clown/syndie/PopulateContents() - new /obj/item/clothing/under/rank/civilian/clown(src) - new /obj/item/clothing/shoes/clown_shoes(src) - new /obj/item/pda/clown(src) - new /obj/item/clothing/mask/gas/clown_hat(src) - new /obj/item/bikehorn(src) - new /obj/item/implanter/sad_trombone(src) -// [/CELADON-ADD] - /obj/item/storage/backpack/henchmen name = "wings" desc = "Granted to the henchmen who deserve it. This probably doesn't include you." diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index f412b2457be5..391b03190bff 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -82,7 +82,7 @@ /obj/item/clothing/glasses/welding, //WS edit: ok mald sure I'll add the welding stuff to the. ok. /obj/item/clothing/mask/gas/welding, /obj/item/clothing/head/welding, //WS end - /obj/item/gun/energy/plasmacutter, + /obj/item/plasmacutter, /obj/item/bodycamera, /obj/item/stack/tape/industrial, /obj/item/trench_tool, @@ -94,8 +94,6 @@ icon_state = "utility_ce" item_state = "utility_ce" -// [CELADON-EDIT] - OMNI_TOOLS -/* /obj/item/storage/belt/utility/chief/full/PopulateContents() new /obj/item/screwdriver/power(src) new /obj/item/crowbar/power(src) @@ -104,26 +102,6 @@ new /obj/item/stack/cable_coil(src,MAXCOIL,pick("red","yellow","orange")) new /obj/item/extinguisher/mini(src) new /obj/item/analyzer(src) -*/ - -/obj/item/storage/belt/utility/chief/full/PopulateContents() - new /obj/item/screwdriver/power(src) - new /obj/item/crowbar/power(src) - new /obj/item/weldingtool/electric(src) - new /obj/item/multitool/tricorder(src) - new /obj/item/pipe_dispenser(src) - new /obj/item/inducer(src) - new /obj/item/stack/cable_coil(src,MAXCOIL,pick("red","yellow","orange")) - -/obj/item/storage/belt/utility/chief/debug/full/PopulateContents() - new /obj/item/screwdriver/power(src) - new /obj/item/crowbar/power(src) - new /obj/item/weldingtool/electric(src) - new /obj/item/multitool/tricorder/ranged(src) - new /obj/item/pipe_dispenser/bluespace(src) - new /obj/item/inducer/adv(src) - new /obj/item/stack/cable_coil(src,MAXCOIL,"cyan") -// [/CELADON-EDIT] /obj/item/storage/belt/utility/full/PopulateContents() new /obj/item/screwdriver(src) @@ -286,20 +264,9 @@ new /obj/item/hypospray/mkii(src) update_appearance() -/obj/item/storage/belt/medical/nohypo/PopulateContents() // [CELADON-ADD] - CELADON_BALANCE - new /obj/item/scalpel(src) - new /obj/item/circular_saw(src) - new /obj/item/blood_filter(src) - new /obj/item/surgicaldrill(src) - new /obj/item/retractor(src) - new /obj/item/cautery(src) - new /obj/item/hemostat(src) - update_appearance() - /obj/item/storage/belt/medical/webbing/surgery/PopulateContents() new /obj/item/scalpel(src) new /obj/item/circular_saw(src) - new /obj/item/blood_filter(src) // [CELADON-ADD] - CELADON_BALANCE new /obj/item/surgicaldrill(src) new /obj/item/retractor(src) new /obj/item/cautery(src) diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index b0bb573dad6e..2d55d933f2af 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -41,11 +41,9 @@ /obj/item/storage/box/ComponentInitialize() . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) - // [CELADON-EDIT] - //STR.storage_flags = STORAGE_FLAGS_VOLUME_DEFAULT - //STR.max_volume = STORAGE_VOLUME_CONTAINER_S - //STR.max_w_class = WEIGHT_CLASS_SMALL - // [/CELADON-EDIT] + STR.storage_flags = STORAGE_FLAGS_VOLUME_DEFAULT + STR.max_volume = STORAGE_VOLUME_CONTAINER_S + STR.max_w_class = WEIGHT_CLASS_SMALL STR.use_sound = 'sound/items/storage/briefcase.ogg' /obj/item/storage/box/update_overlays() @@ -74,28 +72,6 @@ return 0 return ..() -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -//Mime spell boxes - -/obj/item/storage/box/mime - name = "invisible box" - desc = "Unfortunately not large enough to trap the mime." - foldable = null - icon_state = "box" - item_state = null - alpha = 0 - -/obj/item/storage/box/mime/attack_hand(mob/user) - ..() - if(user.mind.miming) - alpha = 255 - -/obj/item/storage/box/mime/Moved(oldLoc, dir) - if (iscarbon(oldLoc)) - alpha = 0 - ..() -// [/CELADON-ADD] - //Disk boxes /obj/item/storage/box/disks @@ -537,12 +513,7 @@ icon_state = "donkpocketbox" illustration=null var/donktype = /obj/item/food/donkpocket -// [CELADON-EDIT] -/obj/item/storage/box/donkpockets/ComponentInitialize() - . = ..() - var/datum/component/storage/STR = GetComponent(/datum/component/storage) - STR.set_holdable(list(/obj/item/food/donkpocket)) -// [/CELADON-EDIT] + /obj/item/storage/box/donkpockets/PopulateContents() for(var/i in 1 to 6) new donktype(src) @@ -573,13 +544,7 @@ icon_state = "monkeycubebox" illustration = null var/cube_type = /obj/item/food/monkeycube -// [CELADON-EDIT] -/obj/item/storage/box/monkeycubes/ComponentInitialize() - . = ..() - var/datum/component/storage/STR = GetComponent(/datum/component/storage) - STR.max_items = 7 - STR.set_holdable(list(/obj/item/food/monkeycube)) -// [/CELADON-EDIT] + /obj/item/storage/box/monkeycubes/PopulateContents() for(var/i in 1 to 5) new cube_type(src) @@ -709,13 +674,7 @@ desc = "Eight wrappers of fun! Ages 8 and up. Not suitable for children." icon = 'icons/obj/toy.dmi' icon_state = "spbox" - // [CELADON-EDIT] -/obj/item/storage/box/snappops/ComponentInitialize() - . = ..() - var/datum/component/storage/STR = GetComponent(/datum/component/storage) - STR.set_holdable(list(/obj/item/toy/snappop)) - STR.max_items = 8 -// [/CELADON-EDIT] + /obj/item/storage/box/snappops/PopulateContents() SEND_SIGNAL(src, COMSIG_TRY_STORAGE_FILL_TYPE, /obj/item/toy/snappop) @@ -730,13 +689,7 @@ drop_sound = 'sound/items/handling/matchbox_drop.ogg' pickup_sound = 'sound/items/handling/matchbox_pickup.ogg' custom_price = 2 -// [CELADON-EDIT] -/obj/item/storage/box/matches/ComponentInitialize() - . = ..() - var/datum/component/storage/STR = GetComponent(/datum/component/storage) - STR.max_items = 10 - STR.set_holdable(list(/obj/item/match)) -// [/CELADON-EDIT] + /obj/item/storage/box/matches/PopulateContents() SEND_SIGNAL(src, COMSIG_TRY_STORAGE_FILL_TYPE, /obj/item/match) @@ -853,18 +806,6 @@ new /obj/item/stack/medical/ointment(src) new /obj/item/reagent_containers/hypospray/medipen(src) -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNSS -// Clown survival box -/obj/item/storage/box/hug/survival/PopulateContents() - new /obj/item/clothing/mask/breath(src) - new /obj/item/reagent_containers/hypospray/medipen(src) - - if(!isplasmaman(loc)) - new /obj/item/tank/internals/emergency_oxygen(src) - else - new /obj/item/tank/internals/plasmaman/belt(src) -// [/CELADON-ADD] - /obj/item/storage/box/rubbershot name = "box of rubber shots" desc = "A box full of rubber shots, designed for riot shotguns." diff --git a/code/game/objects/items/storage/cases.dm b/code/game/objects/items/storage/cases.dm index 82ce08753c80..c24016a95bd5 100644 --- a/code/game/objects/items/storage/cases.dm +++ b/code/game/objects/items/storage/cases.dm @@ -39,6 +39,7 @@ /obj/item/scalpel, /obj/item/scalpel/advanced, /obj/item/circular_saw, + /obj/item/circular_saw/best, //CODY WUZ HERE /obj/item/surgicaldrill, /obj/item/surgicaldrill/advanced, /obj/item/retractor, diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index 82c26e5bd882..eb587ba5a87a 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -149,14 +149,9 @@ return var/image/current_huevo = image(icon = icon, icon_state = "eggbox_eggoverlay") if(egg_count <= 6) //less than 6 eggs - // [CELADON-EDIT] - CELADON_RESPRITE - // current_huevo.pixel_x = (3*(egg_count-1)) - //else //if more than 6, make an extra row - // current_huevo.pixel_x = (3*(egg_count-7)) //-7 to 'reset' it - current_huevo.pixel_x = (5*(egg_count-1)) + current_huevo.pixel_x = (5*(egg_count-1)) // [CELADON-EDIT] - CELADON_RESPRITE else //if more than 6, make an extra row - current_huevo.pixel_x = (5*(egg_count-7)) //-7 to 'reset' it - // [/CELADON-EDIT] + current_huevo.pixel_x = (5*(egg_count-7)) //-7 to 'reset' it // [CELADON-EDIT] - CELADON_RESPRITE current_huevo.pixel_y = -3 add_overlay(current_huevo) diff --git a/code/game/objects/items/storage/firstaid.dm b/code/game/objects/items/storage/firstaid.dm index 59c70181f86c..49e4b5a2c7ae 100644 --- a/code/game/objects/items/storage/firstaid.dm +++ b/code/game/objects/items/storage/firstaid.dm @@ -402,7 +402,7 @@ new /obj/item/reagent_containers/pill/charcoal(src) /obj/item/storage/pill_bottle/charcoal/less - custom_price = 70 // [CELADON-EDIT] - OUTPOST_MED_BALANCE // custom_price = 100 + custom_price = 100 /obj/item/storage/pill_bottle/charcoal/less/PopulateContents() for(var/i in 1 to 3) diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index 1c5d72584839..fa521ff82eb6 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -244,9 +244,6 @@ /obj/item/clothing/under/syndicate/bloodred, /obj/item/clothing/gloves/color/latex/nitrile/infiltrator, /obj/item/clothing/mask/infiltrator, - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - /obj/item/clothing/shoes/combat/sneakboots, - // [/CELADON-ADD] /obj/item/gun/ballistic/automatic/pistol/ringneck, /obj/item/gun/ballistic/revolver, /obj/item/ammo_box @@ -258,9 +255,6 @@ new /obj/item/clothing/under/syndicate/bloodred(src) new /obj/item/clothing/gloves/color/latex/nitrile/infiltrator(src) new /obj/item/clothing/mask/infiltrator(src) - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - new /obj/item/clothing/shoes/combat/sneakboots(src) - // [/CELADON-ADD] /obj/item/storage/toolbox/bounty name = "defused explosives case" diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 5a8ddc0fe1f7..24d84a95100b 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -99,7 +99,7 @@ new /obj/item/ammo_box/magazine/sniper_rounds/penetrator(src) new /obj/item/clothing/glasses/thermal/syndi(src) new /obj/item/clothing/gloves/color/latex/nitrile(src) - new /obj/item/clothing/mask/gas/clown_hat(src) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + new /obj/item/clothing/mask/gas/clown_hat(src) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS new /obj/item/clothing/under/suit/black_really(src) if("metaops") @@ -452,12 +452,6 @@ for(var/i in 1 to 3) new/obj/item/grenade/chem_grenade/ez_clean(src) -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/storage/box/syndie_kit/mimery/PopulateContents() - new /obj/item/book/granter/spell/mimery_blockade(src) - new /obj/item/book/granter/spell/mimery_guns(src) -// [/CELADON-ADD] - /obj/item/storage/box/syndie_kit/centcom_costume/PopulateContents() new /obj/item/clothing/under/rank/centcom/official(src) new /obj/item/clothing/shoes/sneakers/black(src) diff --git a/code/game/objects/items/storage/wallets.dm b/code/game/objects/items/storage/wallets.dm index 55d2d790deb0..5a08bdb4e173 100644 --- a/code/game/objects/items/storage/wallets.dm +++ b/code/game/objects/items/storage/wallets.dm @@ -34,20 +34,7 @@ /obj/item/paper, /obj/item/pen, /obj/item/photo, - /obj/item/reagent_containers/dropper, - /obj/item/reagent_containers/syringe, - // /obj/item/screwdriver, // [CELADON-REMOVE] - CELADON_QOL - /obj/item/stamp, - // [CELADON-ADD] - CELADON_QOL - Добавляем ключи и нож для писем, сигареты - /obj/item/melee/knife/letter_opener, - /obj/item/key, - /obj/item/clothing/gloves/ring, - /obj/item/clothing/gloves/ring/silver, - /obj/item/clothing/gloves/ring/diamond, - /obj/item/clothing/mask/cigarette, - /obj/item/stamp), - // [/CELADON-ADD] - list(/obj/item/screwdriver/power)) + /obj/item/stamp)) /obj/item/storage/wallet/Exited(atom/movable/AM) . = ..() @@ -202,4 +189,4 @@ /obj/item/storage/wallet/random/PopulateContents() new /obj/effect/spawner/random/entertainment/wallet_storage(src) - icon_state = "wallet_closed" + icon_state = "wallet" diff --git a/code/game/objects/items/tanks/tank_types.dm b/code/game/objects/items/tanks/tank_types.dm index ff8e2e1bc3b3..3beeedbe16a6 100644 --- a/code/game/objects/items/tanks/tank_types.dm +++ b/code/game/objects/items/tanks/tank_types.dm @@ -110,15 +110,15 @@ * Emergency Oxygen */ /obj/item/tank/internals/emergency_oxygen - name = "emergency oxygen tank" + name = "extended-capacity emergency oxygen tank" desc = "Used for emergencies. Contains very little oxygen, so try to conserve it until you actually need it." - icon_state = "emergency" + icon_state = "emergency_engi" flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL force = 4 distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE - volume = 1 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011) + volume = 2 // should last for about 30 minutes or so if full supports_variations = VOX_VARIATION @@ -130,8 +130,7 @@ /obj/item/tank/internals/emergency_oxygen/engi name = "extended-capacity emergency oxygen tank" - icon_state = "emergency_engi" - volume = 2 // should last a bit over 30 minutes if full + icon_state = "emergency_tst" /obj/item/tank/internals/emergency_oxygen/engi/empty/populate_gas() return diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm index 9f3eb1b19714..6e9c39853bf3 100644 --- a/code/game/objects/items/tanks/tanks.dm +++ b/code/game/objects/items/tanks/tanks.dm @@ -19,7 +19,7 @@ var/distribute_pressure = ONE_ATMOSPHERE var/integrity = 3 var/volume = 70 - + var/alert_level = 0 //1 = nominal, 2 = warning, 3 = critical warning, 4 = empty supports_variations = VOX_VARIATION /obj/item/tank/ui_action_click(mob/user) @@ -70,11 +70,9 @@ air_contents.set_temperature(T20C) populate_gas() - // [CELADON-ADD] - ADD: Ovelays Oxygen tank, and pressure alert system - mod_celadon\items\code\tank.dm - update_appearance(UPDATE_OVERLAYS) - // [/CELADON-ADD] START_PROCESSING(SSobj, src) + /obj/item/tank/proc/populate_gas() return @@ -223,9 +221,34 @@ //Allow for reactions air_contents.react() check_status() - // [CELADON-ADD] - ADD: Ovelays Oxygen tank, and pressure alert system - mod_celadon\items\code\tank.dm pressure_alerts() - // [/CELADON-ADD] + +/obj/item/tank/update_overlays() + . = ..() + var/status_overlay_icon_state + var/pressure = air_contents.return_pressure() + + // Switches the pressure status overlay depending on which range the tank pressure lies in + // The extra icon state check prevents the icon state from being changed if it's already set to it + switch(pressure) + if((5 * ONE_ATMOSPHERE) to (29 * ONE_ATMOSPHERE)) + status_overlay_icon_state = "status_nominal" + if((2 * ONE_ATMOSPHERE) to (5 * ONE_ATMOSPHERE)) + status_overlay_icon_state = "status_warning" + if((0.75 * ONE_ATMOSPHERE) to (2 * ONE_ATMOSPHERE)) + status_overlay_icon_state = "status_alert" + if((0 * ONE_ATMOSPHERE) to (0.75 * ONE_ATMOSPHERE)) + status_overlay_icon_state = "status_critical" + + // Actually sets the overlay. As of now, this has only been done for smaller emergency tanks + // The if statement is set as follows due to the coarse search type that the istype proc conducts, as subtypes count as valid types + var/mutable_appearance/status_overlay = mutable_appearance(icon, status_overlay_icon_state) + // CELADON EDIT START - support all tank overlays + if(istype(src, /obj/item/tank/internals/emergency_oxygen/double)) + status_overlay.pixel_x = 1 + status_overlay.pixel_y = 2 + overlays += status_overlay + // CELADON EDIT END /obj/item/tank/proc/check_status() //Handle exploding, leaking, and rupturing of the tank @@ -275,3 +298,36 @@ else if(integrity < 3) integrity++ + +// adjusts sprites and issues text alerts depending on tank pressure +/obj/item/tank/proc/pressure_alerts() + + var/pressure = air_contents.return_pressure() + + // Prevents jetpacks from sending any kind of pressure alert + if(istype(src, /obj/item/tank/jetpack)) + return 0 + + // Checks the pressure of the tank while it's in use and sends an alert out when the pressure reaches a specific range. + switch(pressure) + if((5 * ONE_ATMOSPHERE) to (29 * ONE_ATMOSPHERE)) + if(alert_level != 1) + alert_level = 1 + update_overlays() + if((2 * ONE_ATMOSPHERE) to (5 * ONE_ATMOSPHERE)) + if(alert_level != 2) + alert_level = 2 + update_overlays() + if((0.75 * ONE_ATMOSPHERE) to (2 * ONE_ATMOSPHERE)) + if(alert_level != 3) + alert_level = 3 + update_overlays() + playsound(src, 'sound/machines/twobeep_high.ogg', 30, FALSE) + say("Tank pressure low -- Estimated time until depletion: [(src.volume/2) * 5] minutes.") + if((0.01 * ONE_ATMOSPHERE) to (0.75 * ONE_ATMOSPHERE)) + if(alert_level != 4) + alert_level = 4 + update_overlays() + playsound(src, 'sound/machines/twobeep_high.ogg', 30, FALSE) + playsound(src, 'sound/machines/beep.ogg', 30, FALSE) + say("Tank is nearly empty! Replacement recommended!") diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 2b6e877587bf..4becbd057e9b 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -58,7 +58,9 @@ /obj/item/weldingtool/ComponentInitialize() . = ..() AddElement(/datum/element/update_icon_updates_onmob) - AddElement(/datum/element/tool_flash, light_range) + if(light_range > 0) + AddElement(/datum/element/tool_flash, light_range) + AddElement(/datum/element/robotic_heal, brute_heal = 15, self_delay = 5 SECONDS) /obj/item/weldingtool/update_icon_state() if(welding) @@ -116,23 +118,6 @@ . = ..() target.cut_overlay(GLOB.welding_sparks) -/obj/item/weldingtool/attack(mob/living/carbon/human/target, mob/user) - if(!istype(target)) - return ..() - var/obj/item/bodypart/attackedLimb = target.get_bodypart(check_zone(user.zone_selected)) - if(!attackedLimb || IS_ORGANIC_LIMB(attackedLimb) || (user.a_intent == INTENT_HARM)) - return ..() - //if(!target.is_exposed(user, TRUE, user.zone_selected)) // [CELADON-REMOVE] - NO-HARDER-REPAIR-IPC - // return TRUE // [/CELADON-REMOVE] - if(!tool_start_check(user, amount = 1)) - return TRUE - user.visible_message(span_notice("[user] starts to fix some of the dents on [target]'s [parse_zone(attackedLimb.body_zone)]."), - span_notice("You start fixing some of the dents on [target == user ? "your" : "[target]'s"] [parse_zone(attackedLimb.body_zone)].")) - if(!use_tool(target, user, delay = (target == user ? 5 SECONDS : 0.5 SECONDS), amount = 1, volume = 25)) - return TRUE - item_heal_robotic(target, user, brute_heal = 15, burn_heal = 0) - return TRUE - /obj/item/weldingtool/afterattack(atom/O, mob/user, proximity) . = ..() if(!proximity) diff --git a/code/game/objects/items/toy_mechs.dm b/code/game/objects/items/toy_mechs.dm index 4a7b30cdcc11..054f8e65061b 100644 --- a/code/game/objects/items/toy_mechs.dm +++ b/code/game/objects/items/toy_mechs.dm @@ -505,23 +505,6 @@ special_attack_type = SPECIAL_ATTACK_HEAL special_attack_cry = "SHIELD OF PROTECTION" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/toy/prize/honk - name = "toy H.O.N.K." - desc = "6/14" - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/toy.dmi' - icon_state = "honktoy" - max_combat_health = 4 //140 integrity - special_attack_type = SPECIAL_ATTACK_OTHER - special_attack_type_message = "puts the opposing mech's special move on cooldown and heals this mech." - special_attack_cry = "MEGA HORN" - -/obj/item/toy/prize/honk/super_special_attack(obj/item/toy/prize/victim) - playsound(src, 'sound/machines/honkbot_evil_laugh.ogg', 20, TRUE) - victim.special_attack_cooldown += 3 //Adds cooldown to the other mech and gives a minor self heal - combat_health++ -// [/CELADON-ADD] - /obj/item/toy/prize/marauder name = "toy Marauder" desc = "7/14" diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index ed7044b7aea2..d555f2e728eb 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -1207,15 +1207,6 @@ icon_state = "chemist" toysay = "Get your pills!" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/toy/figure/clown - name = "Clown action figure" - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/toy.dmi' - icon_state = "clown" - toysay = "Honk!" - toysound = 'sound/items/bikehorn.ogg' -// [/CELADON-ADD] - /obj/item/toy/figure/ian name = "Ian action figure" icon_state = "ian" @@ -1280,15 +1271,6 @@ icon_state = "paramedic" toysay = "And the best part? I'm not even a real doctor!" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/toy/figure/mime - name = "Mime action figure" - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/toy.dmi' - icon_state = "mime" - toysay = "..." - toysound = null -// [/CELADON-ADD] - /obj/item/toy/figure/miner name = "Shaft Miner action figure" icon_state = "miner" diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index b024c3203174..cc8f73cff6a0 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -45,21 +45,6 @@ /obj/structure/MouseDrop_T(atom/movable/O, mob/user) . = ..() -// if(!climbable) // Офы удалили вообще возможность перелезания -// return -// // [CELADON-REMOVE] - CELADON_FIXES - Удалено по причине что можно было перелезть только с одной стороны -// // if(get_turf(src) == O.loc) //makes so you can't drag yourself into the same structure to climb again, making you move off it. I commented this out because he made the railings one-sided. -// // return -// // [/CELADON-REMOVE] -// if(user == O && isliving(O)) -// var/mob/living/L = O -// if(isanimal(L)) -// var/mob/living/simple_animal/A = L -// if (!A.dextrous) -// return -// if(L.mobility_flags & MOBILITY_MOVE) -// climb_structure(user) -// return if(!istype(O, /obj/item) || user.get_active_held_item() != O) return if(iscyborg(user)) diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index e2c26e32916e..03ac12143251 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -317,24 +317,6 @@ icon_state = "wooden_chair_wings_toppled" origin_type = /obj/structure/chair/wood/wings -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/structure/chair/mime - name = "invisible chair" - desc = "The mime needs to sit down and shut up." - anchored = FALSE - icon_state = null - buildstacktype = null - item_chair = null - flags_1 = NODECONSTRUCT_1 - alpha = 0 - -/obj/structure/chair/mime/post_buckle_mob(mob/living/M) - M.pixel_y += 5 - -/obj/structure/chair/mime/post_unbuckle_mob(mob/living/M) - M.pixel_y -= 5 -// [/CELADON-ADD] - /obj/structure/chair/plastic icon_state = "plastic_chair" name = "folding plastic chair" diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index ecc2af77f729..8a3f0fa1c96d 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -106,28 +106,6 @@ LINEN BINS item_state = "sheetyellow" dream_messages = list("yellow") -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/bedsheet/mime - name = "mime's blanket" - desc = "A very soothing striped blanket. All the noise just seems to fade out when you're under the covers in this." - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheets.dmi' - lefthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheet_lefthand.dmi' - righthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheet_righthand.dmi' - icon_state = "sheetmime" - item_state = "sheetmime" - dream_messages = list("silence", "gestures", "a pale face", "a gaping mouth", "the mime") - -/obj/item/bedsheet/clown - name = "clown's blanket" - desc = "A rainbow blanket with a clown mask woven in. It smells faintly of bananas." - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheets.dmi' - lefthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheet_lefthand.dmi' - righthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheet_righthand.dmi' - icon_state = "sheetclown" - item_state = "sheetrainbow" - dream_messages = list("honk", "laughter", "a prank", "a joke", "a smiling face", "the clown") -// [/CELADON-ADD] - /obj/item/bedsheet/captain name = "captain's bedsheet" desc = "It has a Nanotrasen symbol on it, and was woven with a revolutionary new kind of thread guaranteed to have 0.01% permeability for most non-chemical substances, popular among most modern captains." @@ -336,28 +314,6 @@ LINEN BINS dream_messages = list("red", "orange", "yellow", "green", "blue", "purple", "a rainbow") desc = "A multicolored blanket. It's actually several different sheets cut up and sewn together." -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/bedsheet/double/mime - name = "double mime's blanket" - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheets.dmi' - lefthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheet_lefthand.dmi' - righthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheet_righthand.dmi' - icon_state = "double_sheetmime" - item_state = "sheetmime" - dream_messages = list("silence", "gestures", "a pale face", "a gaping mouth", "the mime") - desc = "A very soothing striped blanket. All the noise just seems to fade out when you're under the covers in this." - -/obj/item/bedsheet/double/clown - name = "double clown's blanket" - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheets.dmi' - lefthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheet_lefthand.dmi' - righthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheet_righthand.dmi' - icon_state = "double_sheetclown" - item_state = "sheetrainbow" - dream_messages = list("honk", "laughter", "a prank", "a joke", "a smiling face", "the clown") - desc = "A rainbow blanket with a clown mask woven in. It smells faintly of bananas." -// [/CELADON-ADD] - /obj/item/bedsheet/double/captain name = "double captain's bedsheet" icon_state = "double_sheetcaptain" diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index ee6614b0411a..4bc29a610011 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -118,12 +118,6 @@ . += span_notice("The parts are welded together.") else if(secure && !opened) . += span_notice("Right-click to [locked ? "unlock" : "lock"].") - // [CELADON-ADD] - CELADON_RETURN_CONTENT_QUIRKS - if(isliving(user)) - var/mob/living/L = user - if(HAS_TRAIT(L, TRAIT_SKITTISH)) - . += "Ctrl-Shift-click [src] to jump inside." - // [/CELADON-ADD] /obj/structure/closet/CanAllowThrough(atom/movable/mover, border_dir) . = ..() @@ -520,15 +514,6 @@ broken = TRUE //applies to secure lockers only open() -// [CELADON-ADD] - CELADON_RETURN_CONTENT_QUIRKS -/obj/structure/closet/CtrlShiftClick(mob/living/user) - if(!HAS_TRAIT(user, TRAIT_SKITTISH)) - return ..() - if(!user.canUseTopic(src, BE_CLOSE) || !isturf(user.loc)) - return - dive_into(user) -// [/CELADON-ADD] - /obj/structure/closet/proc/togglelock(mob/living/user, silent) if(secure && !broken) if(allowed(user)) diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 30e7f682300e..1bdf3c21a911 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -101,12 +101,6 @@ new /obj/item/clothing/accessory/pocketprotector/cosmetology(src) new /obj/item/clothing/under/rank/civilian/chaplain(src) new /obj/item/clothing/shoes/sneakers/black(src) - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - new /obj/item/clothing/suit/chaplainsuit/nun(src) - new /obj/item/clothing/head/nun_hood(src) - new /obj/item/clothing/suit/hooded/chaplainsuit/monkhabit(src) - new /obj/item/clothing/suit/chaplainsuit/holidaypriest(src) - // [/CELADON-ADD] new /obj/item/storage/backpack/cultpack(src) new /obj/item/storage/fancy/candle_box(src) new /obj/item/storage/fancy/candle_box(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/misc.dm b/code/game/objects/structures/crates_lockers/closets/secure/misc.dm index 27909ed24b93..61ec48215187 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/misc.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/misc.dm @@ -31,7 +31,7 @@ new /obj/item/storage/box/teargas(src) new /obj/item/storage/box/flashes(src) new /obj/item/storage/box/handcuffs(src) - new /obj/item/shield/riot/tele(src) + new /obj/item/shield/tele(src) /obj/structure/closet/secure_closet/ertMed name = "emergency response team medical locker" diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 0f570c8bc594..f734724db281 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -25,20 +25,13 @@ new /obj/item/clothing/head/caphat(src) new /obj/item/clothing/head/caphat/parade(src) new /obj/item/clothing/suit/armor/vest/capcarapace/captunic(src) - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - new /obj/item/clothing/head/crown/fancy(src) - // [/CELADON-ADD] new /obj/item/cartridge/captain(src) new /obj/item/storage/box/silver_ids(src) new /obj/item/radio/headset/heads/captain/alt(src) new /obj/item/radio/headset/heads/captain(src) new /obj/item/clothing/gloves/color/captain(src) - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - new /obj/item/clothing/glasses/sunglasses/gar/supergar(src) - // [/CELADON-ADD] new /obj/item/storage/belt/sabre(src) new /obj/item/gun/energy/sharplite/x12(src) - new /obj/item/gun/energy/e_gun/e_old(src) // [CELADON-ADD] - CELADON_RETURN_EGUN new /obj/item/door_remote/captain(src) new /obj/item/card/id/captains_spare(src) new /obj/item/storage/photo_album/Captain(src) @@ -55,9 +48,6 @@ new /obj/item/clothing/head/beret/hop(src) //WS edit - More Berets new /obj/item/clothing/under/rank/command/head_of_personnel(src) //WS Edit - Better Command Uniforms new /obj/item/clothing/under/rank/command/head_of_personnel/skirt(src) //WS Edit - Better Command Uniforms - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - new /obj/item/clothing/head/hopcap(src) - // [/CELADON-ADD] new /obj/item/cartridge/head_of_personnel(src) new /obj/item/radio/headset/heads/head_of_personnel(src) new /obj/item/clothing/shoes/sneakers/brown(src) @@ -68,7 +58,6 @@ new /obj/item/assembly/flash/handheld(src) new /obj/item/clothing/glasses/sunglasses(src) new /obj/item/gun/energy/sharplite/x26(src) //WS Edit - Gives HoP a mini egun - new /obj/item/gun/energy/e_gun/e_old/mini(src) // [CELADON-ADD] - CELADON_RETURN_EGUN new /obj/item/clothing/neck/petcollar(src) new /obj/item/pet_carrier(src) new /obj/item/door_remote/civilian(src) @@ -99,9 +88,6 @@ new /obj/item/clothing/under/rank/security/head_of_security/alt/skirt(src) new /obj/item/clothing/head/HoS(src) new /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch(src) - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - new /obj/item/clothing/glasses/hud/security/sunglasses/gars/supergars(src) - // [/CELADON-ADD] new /obj/item/clothing/suit/armor/vest/security/hos(src) //WS Edit - Better security jumpsuit sprites new /obj/item/storage/lockbox/medal/sec(src) new /obj/item/megaphone/sec(src) @@ -109,10 +95,9 @@ new /obj/item/storage/lockbox/loyalty(src) new /obj/item/clothing/mask/gas/sechailer/swat(src) new /obj/item/storage/box/flashbangs(src) - new /obj/item/shield/riot/tele(src) + new /obj/item/shield/tele(src) new /obj/item/storage/belt/security/full(src) new /obj/item/gun/energy/sharplite/x01(src) - new /obj/item/gun/energy/e_gun/e_old/hos(src) // [CELADON-ADD] - CELADON_RETURN_EGUN new /obj/item/gun/ballistic/automatic/pistol/commissar(src) //WS edit - free lethals new /obj/item/pinpointer/nuke(src) new /obj/item/circuitboard/machine/techfab/department/security(src) @@ -269,9 +254,6 @@ new /obj/item/paper/fluff/jobs/security/court_judgement (src) new /obj/item/pen (src) new /obj/item/clothing/suit/judgerobe (src) - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - new /obj/item/clothing/head/powdered_wig (src) - // [/CELADON-ADD] new /obj/item/storage/briefcase(src) /obj/structure/closet/secure_closet/contraband/armory @@ -302,7 +284,7 @@ for(var/i in 1 to 3) new /obj/item/clothing/head/helmet/riot(src) for(var/i in 1 to 3) - new /obj/item/shield/riot(src) + new /obj/item/shield/tele(src) /obj/structure/closet/secure_closet/armory2 name = "armory ballistics locker" @@ -325,7 +307,6 @@ ..() new /obj/item/gun/energy/ionrifle(src) for(var/i in 1 to 3) - new /obj/item/gun/energy/e_gun/e_old(src) // [CELADON-ADD] - CELADON_RETURN_EGUN new /obj/item/gun/energy/sharplite/x12(src) for(var/i in 1 to 3) new /obj/item/gun/energy/laser(src) @@ -338,7 +319,6 @@ /obj/structure/closet/secure_closet/tac/PopulateContents() ..() new /obj/item/gun/ballistic/automatic/smg/resolution(src) - new /obj/item/gun/ballistic/automatic/smg/wt550(src) // [CELADON-ADD] - CELADON_RETURN_EGUN new /obj/item/clothing/head/helmet/bulletproof(src) new /obj/item/clothing/mask/gas/vigilitas(src) new /obj/item/clothing/suit/armor/vest/bulletproof(src) diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index 6b6cca266a4b..49bd344fe7ed 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -37,10 +37,6 @@ new /obj/item/clothing/under/color/jumpskirt/black(src) if(prob(25)) new /obj/item/clothing/suit/jacket/leather(src) - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - if(prob(20)) - new /obj/item/clothing/suit/jacket/leather/overcoat(src) - // [/CELADON-ADD] for(var/i in 1 to 3) new /obj/item/clothing/shoes/sneakers/black(src) for(var/i in 1 to 3) diff --git a/code/game/objects/structures/crates_lockers/crates/wooden.dm b/code/game/objects/structures/crates_lockers/crates/wooden.dm index 9b58fac0a2e2..f4e4bb76916d 100644 --- a/code/game/objects/structures/crates_lockers/crates/wooden.dm +++ b/code/game/objects/structures/crates_lockers/crates/wooden.dm @@ -8,17 +8,3 @@ close_sound = 'sound/machines/wooden_closet_close.ogg' open_sound_volume = 25 close_sound_volume = 50 - -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNSS -/obj/structure/closet/crate/wooden/toy - name = "toy box" - desc = "It has the words \"Clown + Mime\" written underneath of it with marker." - -/obj/structure/closet/crate/wooden/toy/PopulateContents() - . = ..() - new /obj/item/megaphone/clown(src) - new /obj/item/reagent_containers/food/drinks/soda_cans/canned_laughter(src) - new /obj/item/pneumatic_cannon/pie(src) - new /obj/item/food/pie/cream(src) - new /obj/item/storage/crayons(src) -// [/CELADON-ADD] diff --git a/code/game/objects/structures/dresser.dm b/code/game/objects/structures/dresser.dm index e7b0966d65af..660687133319 100644 --- a/code/game/objects/structures/dresser.dm +++ b/code/game/objects/structures/dresser.dm @@ -23,20 +23,14 @@ return ..() /obj/structure/dresser/wrench_act(mob/living/user, obj/item/I) - // [CELADON-EDIT] - FIXES_DRESSER - Гаечный клю не выпадает - // . = ..() // ORIGINAL - . = TRUE - // [/CELADON-EDIT] + . = TRUE // [CELADON-EDIT] - FIXES_DRESSER - Гаечный клю не выпадает to_chat(user, span_notice("You begin to [anchored ? "unwrench" : "wrench"] [src].")) if(I.use_tool(src, user, 20, volume=50)) to_chat(user, span_notice("You successfully [anchored ? "unwrench" : "wrench"] [src].")) set_anchored(!anchored) /obj/structure/dresser/crowbar_act(mob/living/user, obj/item/I) - // [CELADON-EDIT] - FIXES_DRESSER - Лом не пожирается вселенной - // . = ..() // ORIGINAL - . = TRUE - // [/CELADON-EDIT] + . = TRUE // [CELADON-EDIT] - FIXES_DRESSER - Лом не пожирается вселенной if(!anchored) to_chat(user, span_notice("You begin to pull apart [src].")) if(I.use_tool(src, user, 30, volume=50)) diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm index c3e220a84181..89feb0f5148a 100644 --- a/code/game/objects/structures/flora.dm +++ b/code/game/objects/structures/flora.dm @@ -46,23 +46,11 @@ /obj/structure/flora/tree/attackby(obj/item/W, mob/user, params) if(log_amount && (!(flags_1 & NODECONSTRUCT_1))) if(W.get_sharpness() && W.force > 0) - if(W.hitsound) - // [CELADON-EDIT] - CELADON_QOL - // playsound(get_turf(src), 'sound/weapons/bladeslice.ogg', 100, FALSE, FALSE) // CELADON-EDIT - ORIGINAL - playsound(get_turf(src), pick('mod_celadon/_storage_sounds/sound/trees/treechop1.ogg', - 'mod_celadon/_storage_sounds/sound/trees/treechop2.ogg', - 'mod_celadon/_storage_sounds/sound/trees/treechop3.ogg'), 100, FALSE, FALSE) - // [/CELADON-EDIT] - user.visible_message(span_notice("[user] begins to cut down [src] with [W]."),span_notice("You begin to cut down [src] with [W]."), span_hear("You hear the sound of sawing.")) - // [CELADON-EDIT] - CELADON_QOL - // if(do_after(user, 1000/W.force, target = src)) //5 seconds with 20 force, 8 seconds with a hatchet, 20 seconds with a shard. // CELADON-EDIT - ORIGINAL - if(do_after(user, 2000/W.force, target = src)) //10 seconds with 20 force, 16 seconds with a hatchet, 40 seconds with a shard. - // [/CELADON-EDIT] + playsound(get_turf(src), pick(TREE_ATTACK_SOUNDS), 100, FALSE, FALSE) // [CELADON-EDIT] - CELADON_QOL + user.visible_message(span_notice("[user] begins to cut down [src] with [W]."),span_notice("You begin to cut down [src] with [W]."), span_hear("You hear the sound of sawing.")) + if(do_after(user, 2000/W.force, target = src)) // [CELADON-EDIT] - CELADON_QOL 10 seconds with 20 force, 16 seconds with a hatchet, 40 seconds with a shard. user.visible_message(span_notice("[user] fells [src] with the [W]."),span_notice("You fell [src] with the [W]."), span_hear("You hear the sound of a tree falling.")) - // [CELADON-EDIT] - CELADON_QOL - // playsound(get_turf(src), 'sound/effects/meteorimpact.ogg', 100 , FALSE, FALSE) // CELADON-EDIT - ORIGINAL - playsound(get_turf(src), 'mod_celadon/_storage_sounds/sound/trees/zvuk-padayuschego-dereva.ogg', 100 , FALSE, FALSE) - // [/CELADON-EDIT] + playsound(get_turf(src), 'mod_celadon/_storage_sounds/sound/trees/zvuk-padayuschego-dereva.ogg', 100 , FALSE, FALSE) // [CELADON-EDIT] - CELADON_QOL user.log_message("cut down [src] at [AREACOORD(src)]", LOG_ATTACK) for(var/i=1 to log_amount) new /obj/item/grown/log/tree(get_turf(src)) diff --git a/code/game/objects/structures/spirit_board.dm b/code/game/objects/structures/spirit_board.dm index fd14d1074777..e60570adbf74 100644 --- a/code/game/objects/structures/spirit_board.dm +++ b/code/game/objects/structures/spirit_board.dm @@ -72,10 +72,7 @@ else users_in_range++ - // [CELADON-EDIT] - CELADON_QOL - Делаем юзабельную доску для 1 игрока вместо 2 - // if(users_in_range < 2) // CELADON-EDIT - ORIGINAL - if(users_in_range < 1) - // [/CELADON-EDIT] + if(users_in_range < 1) // [CELADON-EDIT] - CELADON_QOL - Делаем юзабельную доску для 1 игрока вместо 2 to_chat(M, span_warning("There aren't enough people to use the [src.name]!")) return FALSE diff --git a/code/game/sound.dm b/code/game/sound.dm index 4d94e8184a37..46493ec682bb 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -341,10 +341,6 @@ distance_multiplier - Can be used to multiply the distance at which the sound is soundin = pick('sound/weapons/gun/revolver/spin1.ogg', 'sound/weapons/gun/revolver/spin2.ogg', 'sound/weapons/gun/revolver/spin3.ogg') if("law") soundin = pick('sound/voice/beepsky/god.ogg', 'sound/voice/beepsky/iamthelaw.ogg', 'sound/voice/beepsky/secureday.ogg', 'sound/voice/beepsky/radio.ogg', 'sound/voice/beepsky/insult.ogg', 'sound/voice/beepsky/creep.ogg') -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - if("honkbot_e") - soundin = pick('sound/items/bikehorn.ogg', 'sound/items/AirHorn2.ogg', 'sound/misc/sadtrombone.ogg', 'sound/items/AirHorn.ogg', 'sound/effects/reee.ogg', 'sound/items/WEEOO1.ogg', 'sound/voice/beepsky/iamthelaw.ogg', 'sound/voice/beepsky/creep.ogg','sound/magic/Fireball.ogg' ,'sound/effects/pray.ogg', 'sound/voice/hiss1.ogg','sound/machines/buzz-sigh.ogg', 'sound/machines/ping.ogg', 'sound/weapons/flashbang.ogg', 'sound/weapons/bladeslice.ogg') -// [/CELADON-ADD] if("goose") soundin = pick('sound/creatures/goose1.ogg', 'sound/creatures/goose2.ogg', 'sound/creatures/goose3.ogg', 'sound/creatures/goose4.ogg') if("warpspeed") @@ -361,8 +357,10 @@ distance_multiplier - Can be used to multiply the distance at which the sound is soundin = pick('sound/machines/button1.ogg','sound/machines/button2.ogg','sound/machines/button3.ogg','sound/machines/button4.ogg') if("switch") //stolen from nsv soundin = pick('sound/machines/switch1.ogg','sound/machines/switch2.ogg','sound/machines/switch3.ogg') - //[CELADON-ADD] - CELADON_WEAPONS - добавляем рандомизацию звуков при выстреле + //[CELADON-ADD] - CELADON_WEAPONS, CELADON_RETURN_CONTENT_CLOWNS - добавляем рандомизацию звуков при выстреле if("svd_fire") soundin = pick('mod_celadon/_storage_sounds/sound/gun/svd/svd1.ogg', 'mod_celadon/_storage_sounds/sound/gun/svd/svd2.ogg', 'mod_celadon/_storage_sounds/sound/gun/svd/svd3.ogg') - //[/CELADON-ADD] - CELADON_WEAPONS + if("honkbot_e") + soundin = pick('sound/items/bikehorn.ogg', 'sound/items/AirHorn2.ogg', 'sound/misc/sadtrombone.ogg', 'sound/items/AirHorn.ogg', 'sound/effects/reee.ogg', 'sound/items/WEEOO1.ogg', 'sound/voice/beepsky/iamthelaw.ogg', 'sound/voice/beepsky/creep.ogg','sound/magic/Fireball.ogg' ,'sound/effects/pray.ogg', 'sound/voice/hiss1.ogg','sound/machines/buzz-sigh.ogg', 'sound/machines/ping.ogg', 'sound/weapons/flashbang.ogg', 'sound/weapons/bladeslice.ogg') + //[/CELADON-ADD] - CELADON_WEAPONS, CELADON_RETURN_CONTENT_CLOWNS return soundin diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm index 78b9977241cb..51fb12e40156 100644 --- a/code/game/turfs/closed/minerals.dm +++ b/code/game/turfs/closed/minerals.dm @@ -15,7 +15,6 @@ opacity = TRUE density = TRUE layer = EDGED_TURF_LAYER - initial_temperature = TCMB base_icon_state = "smoothrocks" var/smooth_icon = 'icons/turf/walls/smoothrocks.dmi' var/environment_type = "asteroid" @@ -38,14 +37,9 @@ hitsound_type = PROJECTILE_HITSOUND_STONE min_dam = 5 - // [CELADON-EDIT] - CELADON_BALANCE - Делаем из картонного камня скалу! - // max_integrity = MINERAL_WALL_INTEGRITY - // brute_mod = 1 - // burn_mod = 1 // CELADON-EDIT - ORIGINAL - max_integrity = 1200 - brute_mod = 0.3 - burn_mod = 0.3 - // [/CELADON-EDIT] + max_integrity = MINERAL_WALL_INTEGRITY + brute_mod = 1 + burn_mod = 1 mob_smash_flags = ENVIRONMENT_SMASH_MINERALS proj_bonus_damage_flags = PROJECTILE_BONUS_DAMAGE_MINERALS @@ -214,11 +208,7 @@ /turf/closed/mineral/random var/list/mineralSpawnChanceList = list(/obj/item/stack/ore/uranium = 3, /obj/item/stack/ore/gold = 4, /obj/item/stack/ore/plasma = 40, /obj/item/stack/ore/iron = 65, /obj/item/stack/ore/titanium = 5, - /obj/item/stack/ore/bluespace_crystal = 1, - // [CELADON-ADD] - RETURN GIBTONITE - /turf/closed/mineral/gibtonite = 4 - // [/CELADON-ADD] - ) + /obj/item/stack/ore/bluespace_crystal = 1) //Currently, Adamantine won't spawn as it has no uses. -Durandan var/mineralChance = 10 diff --git a/code/game/turfs/closed/wall/reinf_walls.dm b/code/game/turfs/closed/wall/reinf_walls.dm index eb4b22bb2cf9..e4116fb7129a 100644 --- a/code/game/turfs/closed/wall/reinf_walls.dm +++ b/code/game/turfs/closed/wall/reinf_walls.dm @@ -73,15 +73,6 @@ return max_integrity - ((max_integrity/7) * state) /turf/closed/wall/r_wall/try_decon(obj/item/W, mob/user, turf/T) - //DECONSTRUCTION - if(istype(W,/obj/item/gun/energy/plasmacutter)) - to_chat(user, span_notice("You begin slicing through the [src].")) - while(W.use_tool(src,user,30,volume = 100)) - to_chat(user, span_notice("You slice through some of the outer plating...")) - if(!alter_integrity(-(W.wall_decon_damage))) - return TRUE - return 1 - switch(d_state) if(INTACT) if(W.tool_behaviour == TOOL_WIRECUTTER) @@ -99,6 +90,7 @@ if(!istype(src, /turf/closed/wall/r_wall) || d_state != SUPPORT_LINES) return 1 d_state = COVER + set_integrity(get_state_integrity(COVER)) update_appearance() to_chat(user, span_notice("You unsecure the support lines.")) return 1 diff --git a/code/game/turfs/closed/walls.dm b/code/game/turfs/closed/walls.dm index 5d9b4e1f3eff..d01799350950 100644 --- a/code/game/turfs/closed/walls.dm +++ b/code/game/turfs/closed/walls.dm @@ -22,12 +22,8 @@ var/sheet_amount = 2 var/obj/girder_type = /obj/structure/girder - // [CELADON-EDIT] - CELADON_BALANCE - Увеличиваем живучесть стенам - // min_dam = 8 - // max_integrity = 400 // CELADON-EDIT - ORIGINAL - min_dam = 25 - max_integrity = 800 - // [/CELADON-EDIT] + min_dam = 8 + max_integrity = 400 brute_mod = 1 burn_mod = 1 var/repair_amount = 50 diff --git a/code/game/turfs/open/_open.dm b/code/game/turfs/open/_open.dm index c51b25bf704e..d34679f22073 100644 --- a/code/game/turfs/open/_open.dm +++ b/code/game/turfs/open/_open.dm @@ -154,7 +154,7 @@ baseturfs = /turf/open/indestructible/airblock /turf/open/Initalize_Atmos(times_fired) - if(!istype(air, /datum/gas_mixture)) + if(!air) air = new(2500, src) air.copy_from_turf(src) update_air_ref(planetary_atmos ? AIR_REF_PLANETARY_TURF : AIR_REF_OPEN_TURF) diff --git a/code/game/turfs/open/chasm.dm b/code/game/turfs/open/chasm.dm index 988865a64846..c4de3e2fa9f7 100644 --- a/code/game/turfs/open/chasm.dm +++ b/code/game/turfs/open/chasm.dm @@ -32,10 +32,6 @@ return TRUE if(mover.movement_type & (FLOATING|FLYING)) return TRUE - // [CELADON-ADD] - RETURN_CHASM - Не удалось сделать чтобы ССДшники не падали - if(mover.movement_type & (PHASING|GROUND)) - return TRUE - // [/CELADON-ADD] return FALSE /turf/open/chasm/proc/set_target(turf/target) diff --git a/code/game/turfs/open/floor/fancy_floor.dm b/code/game/turfs/open/floor/fancy_floor.dm index 97627fbf1e4a..4efe5249143b 100644 --- a/code/game/turfs/open/floor/fancy_floor.dm +++ b/code/game/turfs/open/floor/fancy_floor.dm @@ -94,9 +94,6 @@ to_chat(user, span_notice("You forcefully pry off the planks, destroying them in the process.")) return make_plating() -/turf/open/floor/wood/cold - initial_temperature = 255.37 - /turf/open/floor/wood/airless initial_gas_mix = AIRLESS_ATMOS diff --git a/code/game/turfs/open/floor/hull.dm b/code/game/turfs/open/floor/hull.dm index d891b1da837b..69481cf69d2e 100644 --- a/code/game/turfs/open/floor/hull.dm +++ b/code/game/turfs/open/floor/hull.dm @@ -4,7 +4,6 @@ desc = "Sturdy exterior hull plating that separates you from the uncaring vacuum of space." icon_state = "regular_hull" initial_gas_mix = AIRLESS_ATMOS - initial_temperature = TCMB /turf/open/floor/engine/hull/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) //no rcd destroying this flooring if(passed_mode == RCD_DECONSTRUCT) @@ -21,9 +20,7 @@ /turf/open/floor/engine/hull/interior name = "interior hull plating" initial_gas_mix = OPENTURF_DEFAULT_ATMOS - initial_temperature = T20C /turf/open/floor/engine/hull/reinforced/interior name = "interior reinforced hull plating" initial_gas_mix = OPENTURF_DEFAULT_ATMOS - initial_temperature = T20C diff --git a/code/game/turfs/open/floor/plating/icemoon.dm b/code/game/turfs/open/floor/plating/icemoon.dm index 64e0550eb8f2..d69cf5fcaa31 100644 --- a/code/game/turfs/open/floor/plating/icemoon.dm +++ b/code/game/turfs/open/floor/plating/icemoon.dm @@ -2,7 +2,7 @@ gender = PLURAL name = "snow" desc = "Looks cold." - icon = MAP_SWITCH('icons/turf/floors/snow.dmi', 'mod_celadon/_storage_icons/icons/structures/snow.dmi') // [CELADON-EDIT] - Снег без квадратиков в sDMM + icon = 'icons/turf/floors/snow.dmi' baseturfs = /turf/open/floor/plating/asteroid/icerock icon_state = "snow-255" icon_plating = null diff --git a/code/game/turfs/open/floor/plating/misc_plating.dm b/code/game/turfs/open/floor/plating/misc_plating.dm index 677376aef5cf..975d9d606eec 100644 --- a/code/game/turfs/open/floor/plating/misc_plating.dm +++ b/code/game/turfs/open/floor/plating/misc_plating.dm @@ -140,7 +140,6 @@ icon = 'icons/turf/planetary/icemoon.dmi' icon_state = "dark_ice" initial_gas_mix = FROZEN_ATMOS - initial_temperature = 180 planetary_atmos = TRUE baseturfs = /turf/open/floor/plating/ice slowdown = 1 @@ -172,11 +171,8 @@ light_power = 1 light_color = LIGHT_COLOR_LIGHT_CYAN -/turf/open/floor/plating/ice/colder - initial_temperature = 140 - /turf/open/floor/plating/ice/temperate - initial_temperature = 255.37 + initial_gas_mix = OPENTURF_DEFAULT_ATMOS /turf/open/floor/plating/ice/break_tile() return @@ -203,7 +199,6 @@ icon = 'icons/turf/snow.dmi' icon_state = "snowplating" initial_gas_mix = FROZEN_ATMOS - initial_temperature = 180 attachment_holes = FALSE planetary_atmos = TRUE footstep = FOOTSTEP_ASTEROID @@ -223,12 +218,6 @@ canSmoothWith = list(SMOOTH_GROUP_FLOOR_SNOWED) planetary_atmos = TRUE -/turf/open/floor/plating/snowed/colder - initial_temperature = 140 - -/turf/open/floor/plating/snowed/temperatre - initial_temperature = 255.37 - /turf/open/floor/plating/snowed/smoothed/icemoon initial_gas_mix = ICEMOON_DEFAULT_ATMOS diff --git a/code/game/turfs/open/space/space.dm b/code/game/turfs/open/space/space.dm index 166c3b1d0d96..13754e1520bf 100644 --- a/code/game/turfs/open/space/space.dm +++ b/code/game/turfs/open/space/space.dm @@ -7,7 +7,6 @@ name = "\proper space" intact = 0 - initial_temperature = TCMB thermal_conductivity = 0 heat_capacity = 700000 flammability = -INFINITY // not a single chance in hell diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 5ec4e123aeda..38259c9fdfcd 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -15,9 +15,6 @@ GLOBAL_LIST_EMPTY(created_baseturf_lists) // This shouldn't be modified directly; use the helper procs, as many baseturf lists are shared between turfs. var/list/baseturfs = /turf/baseturf_bottom - /// How hot the turf is, in kelvin - var/initial_temperature = T20C - /// Used for fire, if a melting temperature was reached, it will be destroyed var/to_be_destroyed = 0 var/max_fire_temperature_sustained = 0 //The max temperature of the fire which it was subjected to diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index aeca52335e28..5bad06fbf716 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -460,7 +460,6 @@ if(marked_datum && istype(marked_datum, /atom)) dat += "Duplicate Marked Datum
    " - log_celadon_admin("ADMIN: [key_name(usr)] has entered Game Panel.") // [CELADON_ADD] - logging admin actions. var/datum/browser/popup = new(usr, "admin2", null, 240, 280) @@ -1031,7 +1030,6 @@ set desc = "Opens the Manifest UI." log_celadon_admin("ADMIN: [key_name(usr)] openned the crew manifest UI.") // [CELADON_ADD] - logging admin actions. - if(!GLOB.crew_manifest_tgui) GLOB.crew_manifest_tgui = new /datum/crew_manifest(src) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index eea003dc99d1..a6430efcd958 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -418,14 +418,6 @@ GLOBAL_PROTECT(admin_verbs_hideable) set desc = "Toggles ghost-like invisibility (Don't abuse this)" if(holder && mob) // [CELADON-EDIT] - Оффовский извиз видно на худах. Вводим экстренное решение. - // if(mob.invisibility == INVISIBILITY_INVINISMIN) - // mob.invisibility = initial(mob.invisibility) - // mob.remove_from_all_data_huds() - // to_chat(mob, span_boldannounce("Invisimin off. Invisibility reset."), confidential = TRUE) - // else - // mob.invisibility = INVISIBILITY_INVINISMIN - // mob.add_to_all_human_data_huds() - // to_chat(mob, span_adminnotice("Invisimin on. You are now as invisible as a ghost."), confidential = TRUE) if(mob.alpha != 0) mob.alpha = 0 mob.mouse_opacity = 0 @@ -810,79 +802,3 @@ GLOBAL_PROTECT(admin_verbs_hideable) var/datum/admins/admin = GLOB.admin_datums[ckey] admin?.associate(src) - -// [CELADON-ADD] - ADMIN-PANEL - Black Reality -/client/proc/show_all_verbs() - set category = "Admin" - set name = "Admin Panel 📋" - - if(!holder) - return - - admin_menu = new(usr) - admin_menu.ui_interact(usr) - -/datum/admin_menu - var/client/holder - var/compact_mode = FALSE - -/datum/admin_menu/New(user) - if (istype(user, /client)) - var/client/user_client = user - holder = user_client - else - var/mob/user_mob = user - holder = user_mob.client - -/datum/admin_menu/ui_state(mob/user) - return GLOB.admin_state - -/datum/admin_menu/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "AdminVerbs") - ui.open() - -/datum/admin_menu/ui_data(mob/user) - var/list/data = list() - data["compactMode"] = compact_mode - return data - -/datum/admin_menu/ui_static_data(mob/user) - var/list/temp_data = list() - for(var/procpath/cur_verb as anything in holder.verbs) - if(!cur_verb.category) - continue - if(!temp_data[cur_verb.category]) - temp_data[cur_verb.category] = list() - temp_data[cur_verb.category] += list(list("verb" = "[cur_verb]", "name" = cur_verb.name, "desc" = cur_verb.desc)) - - var/list/tgui_data = list() - for(var/category in temp_data) - var/list/cat = list( - "name" = category, - "items" = temp_data[category]) - tgui_data["categories"] += list(cat) - - LAZYADDASSOCLIST(tgui_data, "categories", list("name" = "История", "items" = reverseList(holder.last_verbs_used))) - return tgui_data - -/datum/admin_menu/ui_act(action, params) - . = ..() - if(.) - return - - switch(action) - if("compact_toggle") - compact_mode = !compact_mode - return TRUE - - if(!check_rights(R_ADMIN) || action != "run") - return - - INVOKE_ASYNC(holder, text2path(params["verb"])) - - LAZYADD(holder.last_verbs_used, list(list("verb" = params["verb"], "name" = params["name"], "desc" = params["desc"]))) - - SStgui.close_uis(usr) -// [/CELADON-ADD] diff --git a/code/modules/admin/verbs/outpost.dm b/code/modules/admin/verbs/outpost.dm index ea362687c6e0..5d16445a4aea 100644 --- a/code/modules/admin/verbs/outpost.dm +++ b/code/modules/admin/verbs/outpost.dm @@ -1,18 +1,20 @@ /client/proc/set_next_outpost() set category = "Server" - set name = "Set Next Outpost" + set name = "Set Next Outpost System" - var/list/choices = subtypesof(/datum/overmap/outpost) - var/chosen = input("Select the outpost type to use next. Some outposts may not be intended for regular play!", "Select Outpost") as null|anything in choices - if(!chosen || !ispath(chosen, /datum/overmap/outpost)) + var/list/choices = subtypesof(/datum/overmap_star_system/safezone) + var/chosen = input("Select the main system to use next round. Some systems may not be intended for regular play!", \ + "Select Outpost" \ + ) as null|anything in choices + if(!chosen || !ispath(chosen, /datum/overmap_star_system/safezone)) return message_admins("[key_name_admin(usr)] is changing the outpost to [chosen]") log_admin("[key_name(usr)] is changing the outpost to [chosen]") - if(fexists(OUTPOST_OVERRIDE_FILEPATH)) - fdel(OUTPOST_OVERRIDE_FILEPATH) - var/result = text2file("[chosen]", OUTPOST_OVERRIDE_FILEPATH) + if(fexists(SAFEZONE_OVERRIDE_FILEPATH)) + fdel(SAFEZONE_OVERRIDE_FILEPATH) + var/result = text2file("[chosen]", SAFEZONE_OVERRIDE_FILEPATH) if(result) message_admins("[key_name_admin(usr)] has changed the outpost to [chosen]") diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index b9ebfa914da4..a75f8aae6c16 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -43,9 +43,7 @@ // [/CELADON-ADD] if(C.prefs.chat_toggles & CHAT_PRAYER) to_chat(C, msg, confidential = TRUE) - // [CELADON-ADD] - sendDSPray(msg_tmp) - // [/CELADON-ADD] + sendDSPray(msg_tmp) // [CELADON-ADD] to_chat(usr, span_info("You pray to the gods: \"[msg_tmp]\""), confidential = TRUE) SSredbot.send_discord_message("admin", "Prayer from [src.key]/([src.name]): [msg]") diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index cd45856e9d3c..240dc276384b 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -1172,8 +1172,14 @@ squish_part = C.bodyparts[zone] if(!squish_part) continue - var/type_wound = pick(list(/datum/wound/blunt/severe, /datum/wound/blunt/severe, /datum/wound/blunt/moderate)) - squish_part.force_wound_upwards(type_wound, smited=TRUE) + var/severity = pick(list( + "[WOUND_SEVERITY_MODERATE]", + "[WOUND_SEVERITY_SEVERE]", + "[WOUND_SEVERITY_SEVERE]", + "[WOUND_SEVERITY_CRITICAL]", + "[WOUND_SEVERITY_CRITICAL]", + )) + C.cause_wound_of_type_and_severity(WOUND_BLUNT, squish_part, severity) if(ADMIN_PUNISHMENT_BLEED) if(!iscarbon(target)) @@ -1185,11 +1191,11 @@ slice_part = C.bodyparts[zone] if(!slice_part) continue - var/type_wound = pick(list(/datum/wound/slash/critical, /datum/wound/slash/moderate)) + var/type_wound = pick(list(/datum/wound/slash/flesh/critical, /datum/wound/slash/flesh/moderate)) slice_part.force_wound_upwards(type_wound, smited=TRUE) - type_wound = pick(list(/datum/wound/slash/critical, /datum/wound/slash/moderate)) + type_wound = pick(list(/datum/wound/slash/flesh/critical, /datum/wound/slash/flesh/moderate)) slice_part.force_wound_upwards(type_wound, smited=TRUE) - type_wound = pick(list(/datum/wound/slash/critical, /datum/wound/slash/moderate)) + type_wound = pick(list(/datum/wound/slash/flesh/critical, /datum/wound/slash/flesh/moderate)) slice_part.force_wound_upwards(type_wound, smited=TRUE) if(ADMIN_PUNISHMENT_PERFORATE) diff --git a/code/modules/admin/verbs/requests.dm b/code/modules/admin/verbs/requests.dm index 6d9a6dd97f39..f83de6f1eec5 100644 --- a/code/modules/admin/verbs/requests.dm +++ b/code/modules/admin/verbs/requests.dm @@ -1,7 +1,7 @@ /// Verb for opening the requests manager panel /client/proc/requests() set name = "Requests Manager" - set desc = "Open the request manager panel to view all requests during this round" // set category = "Admin" + set desc = "Open the request manager panel to view all requests during this round" set category = "Admin.Fax" // [CELADON-EDIT] - CELADON_QOL - Очистка вкладки ООС, перенос части в Special Verbs BLACKBOX_LOG_ADMIN_VERB("Request Manager") GLOB.requests.ui_interact(usr) diff --git a/code/modules/antagonists/_common/antag_datum.dm b/code/modules/antagonists/_common/antag_datum.dm index 580e20ac9b22..0768a66bb59b 100644 --- a/code/modules/antagonists/_common/antag_datum.dm +++ b/code/modules/antagonists/_common/antag_datum.dm @@ -83,19 +83,6 @@ GLOBAL_LIST_EMPTY(antagonists) hud.leave_hud(mob_override) set_antag_hud(mob_override, null) -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -// Handles adding and removing the clumsy mutation from clown antags. Gets called in apply/remove_innate_effects -/datum/antagonist/proc/handle_clown_mutation(mob/living/mob_override, message, removing = TRUE) - var/mob/living/carbon/human/H = mob_override - if(H && istype(H) && owner.assigned_role == "Clown") - if(removing) // They're a clown becoming an antag, remove clumsy - H.dna.remove_mutation(CLOWNMUT) - if(!silent && message) - to_chat(H, span_boldnotice("[message]")) - else - H.dna.add_mutation(CLOWNMUT) // We're removing their antag status, add back clumsy -// [/CELADON-ADD] - //Assign default team and creates one for one of a kind team antagonists /datum/antagonist/proc/create_team(datum/team/team) return diff --git a/code/modules/antagonists/_common/antag_spawner.dm b/code/modules/antagonists/_common/antag_spawner.dm index 30aaf3a462ff..c4fe77c5a27e 100644 --- a/code/modules/antagonists/_common/antag_spawner.dm +++ b/code/modules/antagonists/_common/antag_spawner.dm @@ -147,27 +147,6 @@ M.mind.add_antag_datum(new_op,creator_op.nuke_team) M.mind.special_role = "Nuclear Operative" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -//////CLOWN OP -/obj/item/antag_spawner/nuke_ops/clown - name = "clown operative teleporter" - desc = "A single-use teleporter designed to quickly reinforce clown operatives in the field." - -/obj/item/antag_spawner/nuke_ops/clown/spawn_antag(client/C, turf/T, kind, datum/mind/user) - var/mob/living/carbon/human/M = new/mob/living/carbon/human(T) - C.prefs.copy_to(M) - M.key = C.key - - var/datum/antagonist/nukeop/clownop/new_op = new /datum/antagonist/nukeop/clownop() - new_op.send_to_spawnpoint = FALSE - new_op.nukeop_outfit = /datum/outfit/syndicate/clownop/no_crystals - - var/datum/antagonist/nukeop/creator_op = user.has_antag_datum(/datum/antagonist/nukeop/clownop,TRUE) - if(creator_op) - M.mind.add_antag_datum(new_op, creator_op.nuke_team) - M.mind.special_role = "Clown Operative" -// [/CELADON-ADD] - //////SYNDICATE BORG /obj/item/antag_spawner/nuke_ops/borg_tele name = "syndicate cyborg teleporter" @@ -279,19 +258,6 @@ to_chat(S, "You are currently not currently in the same plane of existence as the station. \ Ctrl+Click a blood pool to manifest.") -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/antag_spawner/slaughter_demon/laughter - name = "vial of tickles" - desc = "A magically infused bottle of clown love, distilled from countless hugging attacks. Used in funny rituals to attract adorable creatures." - icon = 'icons/obj/wizard.dmi' - icon_state = "vial" - color = "#FF69B4" // HOT PINK - - veil_msg = span_warning("You sense an adorable presence lurking just beyond the veil...") - demon_type = /mob/living/simple_animal/slaughter/laughter - antag_type = /datum/antagonist/slaughter/laughter -// [/CELADON-ADD] - /obj/item/antag_spawner/syndi_borer name = "syndicate brain-slug container" desc = "Releases a modified cortical borer to assist the user." diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm index 14ec1232715e..ac7a02848189 100644 --- a/code/modules/antagonists/changeling/changeling.dm +++ b/code/modules/antagonists/changeling/changeling.dm @@ -361,12 +361,10 @@ RegisterSignals(C, list(COMSIG_MOB_MIDDLECLICKON, COMSIG_MOB_ALTCLICKON), PROC_REF(stingAtom)) var/mob/living/M = mob_override || owner.current add_antag_hud(antag_hud_type, antag_hud_name, M) - handle_clown_mutation(M, "You have evolved beyond your clownish nature, allowing you to wield weapons without harming yourself.") // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS /datum/antagonist/changeling/remove_innate_effects(mob/living/mob_override) var/mob/living/M = mob_override || owner.current remove_antag_hud(antag_hud_type, M) - handle_clown_mutation(M, removing = FALSE) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS UnregisterSignal(owner.current, list(COMSIG_MOB_MIDDLECLICKON, COMSIG_MOB_ALTCLICKON)) diff --git a/code/modules/antagonists/ert/_helpers.dm b/code/modules/antagonists/ert/_helpers.dm index 4c512065f01a..c4128cc77848 100644 --- a/code/modules/antagonists/ert/_helpers.dm +++ b/code/modules/antagonists/ert/_helpers.dm @@ -38,7 +38,7 @@ spawn_location = SSovermap.outposts[1] if(!spawn_location) - spawn_location = SSovermap.default_system.get_unused_overmap_square() + spawn_location = SSovermap.safe_system.get_unused_overmap_square() var/datum/overmap/ship/controlled/ship = new(spawn_location, template) diff --git a/code/modules/antagonists/gang/outfits.dm b/code/modules/antagonists/gang/outfits.dm index 3a3d8a7fd580..2fdf34f416df 100644 --- a/code/modules/antagonists/gang/outfits.dm +++ b/code/modules/antagonists/gang/outfits.dm @@ -30,7 +30,7 @@ backpack_contents = list(/obj/item/storage/box/handcuffs = 1, /obj/item/storage/box/teargas = 1, /obj/item/storage/box/flashbangs = 1, - /obj/item/shield/riot/tele = 1) + /obj/item/shield/tele = 1) /datum/outfit/families_police/beatcop/armored name = "Families: Armored Beat Cop" @@ -39,7 +39,7 @@ backpack_contents = list(/obj/item/storage/box/handcuffs = 1, /obj/item/storage/box/teargas = 1, /obj/item/storage/box/flashbangs = 1, - /obj/item/shield/riot/tele = 1, + /obj/item/shield/tele = 1, /obj/item/storage/box/lethalshot = 2) /datum/outfit/families_police/beatcop/swat @@ -50,7 +50,7 @@ backpack_contents = list(/obj/item/storage/box/handcuffs = 1, /obj/item/storage/box/teargas = 1, /obj/item/storage/box/flashbangs = 1, - /obj/item/shield/riot/tele = 1) + /obj/item/shield/tele = 1) /datum/outfit/families_police/beatcop/fbi name = "Families: Space FBI Officer" @@ -60,7 +60,7 @@ backpack_contents = list(/obj/item/storage/box/handcuffs = 1, /obj/item/storage/box/teargas = 1, /obj/item/storage/box/flashbangs = 1, - /obj/item/shield/riot/tele = 1, + /obj/item/shield/tele = 1, /obj/item/ammo_box/magazine/m9mm_expedition = 3) /datum/outfit/families_police/beatcop/military @@ -73,4 +73,4 @@ backpack_contents = list(/obj/item/storage/box/handcuffs = 1, /obj/item/storage/box/teargas = 1, /obj/item/storage/box/flashbangs = 1, - /obj/item/shield/riot/tele = 1) + /obj/item/shield/tele = 1) diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm index 3e963b207dbe..2c6ac75452d9 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm @@ -103,11 +103,6 @@ return FALSE return TRUE -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/nuclear_challenge/clownops - uplink_type = /obj/item/uplink/clownop -// [/CELADON-ADD] - #undef CHALLENGE_TELECRYSTALS #undef CHALLENGE_TIME_LIMIT #undef CHALLENGE_MIN_PLAYERS diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm index 9bfc53c0f8c4..6a3d5502449a 100644 --- a/code/modules/antagonists/slaughter/slaughter.dm +++ b/code/modules/antagonists/slaughter/slaughter.dm @@ -112,88 +112,3 @@ /obj/item/organ/heart/demon/Stop() return 0 // Always beating. - -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/mob/living/simple_animal/slaughter/laughter - // The laughter demon! It's everyone's best friend! It just wants to hug - // them so much, it wants to hug everyone at once! - name = "laughter demon" - real_name = "laughter demon" - desc = "A large, adorable creature covered in armor with pink bows." - speak_emote = list("giggles","titters","chuckles") - emote_hear = list("guffaws","laughs") - response_help_continuous = "hugs" - attack_verb_continuous = "wildly tickles" - attack_verb_simple = "wildly tickle" - - attack_sound = 'sound/items/bikehorn.ogg' - feast_sound = 'sound/spookoween/scary_horn2.ogg' - deathsound = 'sound/misc/sadtrombone.ogg' - - icon_state = "bowmon" - icon_living = "bowmon" - deathmessage = "fades out, as all of its friends are released from its \ - prison of hugs." - loot = list(/mob/living/simple_animal/pet/cat/kitten{name = "Laughter"}) - - // Keep the people we hug! - var/list/consumed_mobs = list() - - playstyle_string = "You are a laughter \ - demon, a wonderful creature from another realm. You have a single \ - desire: To hug and tickle.
    \ - You may use the \"Blood Crawl\" ability near blood pools to travel \ - through them, appearing and disappearing from the station at will. \ - Pulling a dead or unconscious mob while you enter a pool will pull \ - them in with you, allowing you to hug them and regain your health.
    \ - You move quickly upon leaving a pool of blood, but the material world \ - will soon sap your strength and leave you sluggish.
    \ - What makes you a little sad is that people seem to die when you tickle \ - them; but don't worry! When you die, everyone you hugged will be \ - released and fully healed, because in the end it's just a jape, \ - sibling!
    " - -/mob/living/simple_animal/slaughter/laughter/Initialize() - . = ..() - if(check_holidays(APRIL_FOOLS)) - icon_state = "honkmon" - -/mob/living/simple_animal/slaughter/laughter/Destroy() - release_friends() - . = ..() - -/mob/living/simple_animal/slaughter/laughter/ex_act(severity) - switch(severity) - if(1) - death() - if(2) - adjustBruteLoss(60) - if(3) - adjustBruteLoss(30) - -/mob/living/simple_animal/slaughter/laughter/proc/release_friends() - if(!consumed_mobs) - return - - for(var/mob/living/M in consumed_mobs) - if(!M) - continue - var/turf/T = find_safe_turf() - if(!T) - T = get_turf(src) - M.forceMove(T) - if(M.revive(full_heal = TRUE, admin_revive = TRUE)) - M.grab_ghost(force = TRUE) - playsound(T, feast_sound, 50, TRUE, -1) - to_chat(M, span_clown("You leave [src]'s warm embrace, and feel ready to take on the world.")) - -/mob/living/simple_animal/slaughter/laughter/bloodcrawl_swallow(mob/living/victim) - if(consumed_mobs) - // Keep their corpse so rescue is possible - consumed_mobs += victim - else - // Be safe and just eject the corpse - victim.forceMove(get_turf(victim)) - victim.exit_blood_effect() - victim.visible_message(span_warning("[victim] falls out of the air, covered in blood, looking highly confused. And dead.")) -// [/CELADON-ADD] diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index bb2bbca59afd..6be2853e2189 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -215,7 +215,6 @@ . = ..() var/mob/living/M = mob_override || owner.current add_antag_hud(antag_hud_type, antag_hud_name, M) - handle_clown_mutation(M, mob_override ? null : "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.") // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS var/mob/living/silicon/ai/A = M if(istype(A) && traitor_kind == TRAITOR_AI) A.hack_software = TRUE @@ -225,7 +224,6 @@ . = ..() var/mob/living/M = mob_override || owner.current remove_antag_hud(antag_hud_type, M) - handle_clown_mutation(M, removing = FALSE) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS var/mob/living/silicon/ai/A = M if(istype(A) && traitor_kind == TRAITOR_AI) A.hack_software = FALSE @@ -340,11 +338,10 @@ result += objectives_text var/special_role_text = lowertext(name) - -// [CELADON-ADD] - RETURN-CONTRACTOR - if (contractor_hub) + // [CELADON-ADD] - RETURN-CONTRACTOR + if(contractor_hub) result += contractor_round_end() -// [/CELADON-ADD] + // [/CELADON-ADD] if(traitorwin) result += span_greentext("The [special_role_text] was successful!") diff --git a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm index cb89e52a6bfd..e47671a5ff08 100644 --- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm +++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm @@ -10,9 +10,6 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list( /obj/machinery/nuclearbomb/syndicate, /obj/machinery/syndicatebomb, /obj/machinery/syndicatebomb/badmin, - // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - /obj/machinery/syndicatebomb/badmin/clown, - // [/CELADON-ADD] /obj/machinery/syndicatebomb/empty, /obj/machinery/syndicatebomb/self_destruct, /obj/machinery/syndicatebomb/training diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index 3a6d59b6ef58..31c7e751f9ba 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -239,10 +239,6 @@ var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionnaire) H.equip_to_slot_or_del(new hat(H), ITEM_SLOT_HEAD) H.equip_to_slot_or_del(new /obj/item/clothing/under/costume/roman(H), ITEM_SLOT_ICLOTHING) - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), ITEM_SLOT_FEET) - // [/CELADON-ADD] - H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE) H.put_in_hands(new /obj/item/melee/sword/claymore(H), TRUE) H.equip_to_slot_or_del(new /obj/item/melee/spear(H), ITEM_SLOT_BACK) diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm index 1cf633485e51..7d779f01f6d7 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook.dm @@ -296,22 +296,6 @@ limit = 3 category = "Assistance" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/datum/spellbook_entry/item/hugbottle - name = "Bottle of Tickles" - desc = "A bottle of magically infused fun, the smell of which will \ - attract adorable extradimensional beings when broken. These beings \ - are similar to slaughter demons, but they do not permamently kill \ - their victims, instead putting them in an extradimensional hugspace, \ - to be released on the demon's death. Chaotic, but not ultimately \ - damaging. The crew's reaction to the other hand could be very \ - destructive." - item_path = /obj/item/antag_spawner/slaughter_demon/laughter - cost = 1 //non-destructive; it's just a jape, sibling! - limit = 3 - category = "Assistance" -// [/CELADON-ADD] - /datum/spellbook_entry/item/battlemage name = "Battlemage Armour" desc = "An ensorceled suit of armour, protected by a powerful shield. The shield can completely negate sixteen attacks before being permanently depleted." @@ -513,13 +497,7 @@ qdel(O) else if(istype(O, /obj/item/antag_spawner/slaughter_demon)) to_chat(user, span_notice("On second thought, maybe summoning a demon is a bad idea. You refund your points.")) -// [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS -/* - uses += 2 - for(var/datum/spellbook_entry/item/bloodbottle/BB in entries) - if(!isnull(BB.limit)) - BB.limit++ -*/ + // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS if(istype(O, /obj/item/antag_spawner/slaughter_demon/laughter)) uses += 1 for(var/datum/spellbook_entry/item/hugbottle/HB in entries) @@ -530,7 +508,7 @@ for(var/datum/spellbook_entry/item/bloodbottle/BB in entries) if(!isnull(BB.limit)) BB.limit++ -// [/CELADON-EDIT] + // [/CELADON-EDIT] qdel(O) /obj/item/spellbook/proc/GetCategoryHeader(category) diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index eb3e5252dbdf..ee680ec57a19 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -42,14 +42,6 @@ . += flashing_overlay attached_overlays += flashing_overlay -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/assembly/flash/proc/clown_check(mob/living/carbon/human/user) - if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50)) - flash_carbon(user, user, 15, 0) - return FALSE - return TRUE -// [/CELADON-ADD] - /obj/item/assembly/flash/proc/burn_out() //Made so you can override it if you want to have an invincible flash from R&D or something. if(!burnt_out) burnt_out = TRUE @@ -103,7 +95,7 @@ times_used++ flash_recharge() update_icon(ALL, TRUE) - if(user && !clown_check(user)) //if(user) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + if(user && !clown_check(user)) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS return FALSE return TRUE @@ -122,7 +114,7 @@ if(generic_message && M != user) to_chat(M, span_danger("[src] emits a blinding light!")) if(targeted) - if(M.flash_act(1, 1)) + if(M.flash_act(1, 1) & FLASH_EFFECT) if(M.confused < power) var/diff = power * CONFUSION_STACK_MAX_MULTIPLIER - M.confused M.confused += min(power, diff) @@ -139,7 +131,7 @@ else to_chat(M, span_danger("[src] fails to blind you!")) else - if(M.flash_act()) + if(M.flash_act() & FLASH_EFFECT) var/diff = power * CONFUSION_STACK_MAX_MULTIPLIER - M.confused M.confused += min(power, diff) @@ -258,7 +250,7 @@ if(generic_message && M != user) to_chat(M, span_notice("[src] emits a soothing light...")) if(targeted) - if(M.flash_act(1, 1)) + if(M.flash_act(1, 1) & FLASH_EFFECT) var/hypnosis = FALSE if(M.hypnosis_vulnerable()) hypnosis = TRUE @@ -279,7 +271,7 @@ else to_chat(M, span_danger("[src] fails to blind you!")) - else if(M.flash_act()) + else if(M.flash_act() & FLASH_EFFECT) to_chat(M, span_notice("Such a pretty light...")) M.confused += min(M.confused + 4, 20) M.adjust_timed_status_effect(8 SECONDS, /datum/status_effect/dizziness, max_duration = 40 SECONDS) diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index cfadaf063e8b..4f33702b6201 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -96,26 +96,6 @@ /datum/asset/spritesheet/simple/paper name = "paper" assets = list( - // [CELADON-ADD] - CELADON_STAMPS + CELADON_RETURN_CONTENT_CLOWNS - "stamp-inteq-celadon" = 'mod_celadon/_storage_icons/icons/assets/png/large_stamp-inteq.png', - "inteq-mothership-stamp" = 'mod_celadon/_storage_icons/icons/assets/png/inteq_mothership_stamp.png', - "solfed-corps-commander-stamp" = 'mod_celadon/_storage_icons/icons/assets/png/sf_commander_stamp.png', - "solfed-captain" = 'mod_celadon/_storage_icons/icons/assets/png/sf_captain_stamp.png', - "elysium-brigade-captain-stamp" = 'mod_celadon/_storage_icons/icons/assets/png/elysium_brigade_stamp.png', - "elysium-republic-stamp" = 'mod_celadon/_storage_icons/icons/assets/png/elysium_republic_stamp.png', - "elysium-avanpost-stamp" = 'mod_celadon/_storage_icons/icons/assets/png/elysium_outpost_stamp.png', - "nt-cent-command-stamp" = 'mod_celadon/_storage_icons/icons/assets/png/nanotrasen_central_command_stamp.png', - "nt-captain-stamp" = 'mod_celadon/_storage_icons/icons/assets/png/nanotrasen_captain_stamp.png', - "syndicate-captain-stamp" = 'mod_celadon/_storage_icons/icons/assets/png/syndicate_captain_stamp.png', - "stamp-df" = 'mod_celadon/_storage_icons/icons/assets/png/large_stamp-df_generic.png', - "stamp-df_captain" = 'mod_celadon/_storage_icons/icons/assets/png/large_stamp-df_captain.png', - "stamp-df_meddir" = 'mod_celadon/_storage_icons/icons/assets/png/large_stamp-df_med_dir.png', - "stamp-ne" = 'mod_celadon/_storage_icons/icons/assets/png/large_stamp-ne_generic.png', - "stamp-ne_captain" = 'mod_celadon/_storage_icons/icons/assets/png/large_stamp-ne_captain.png', - "stamp-ne_engdir" = 'mod_celadon/_storage_icons/icons/assets/png/large_stamp-ne_eng_dir.png', - "stamp-mime" = 'mod_celadon/_storage_icons/icons/assets/png/large_stamp-mime.png', - "stamp-clown" = 'mod_celadon/_storage_icons/icons/assets/png/large_stamp-clown.png', - // [/CELADON-ADD] "stamp-deny" = 'icons/paper_graphics/stamps/large_stamp-deny.png', "stamp-ok" = 'icons/paper_graphics/stamps/large_stamp-ok.png', "stamp-void" = 'icons/paper_graphics/stamps/large_stamp-void.png', @@ -225,10 +205,7 @@ if (icon != 'icons/misc/language.dmi') var/icon_state = initial(L.icon_state) Insert("language-[icon_state]", icon, icon_state=icon_state) - // [CELADON_EDIT] - Переместил вызов родительского прока из цикла - // ..() [CELADON-EDIT] - ORIGINAL - ..() - // [/CELADON_EDIT] + ..() // [CELADON_EDIT] - Переместил вызов родительского прока из цикла /datum/asset/simple/lobby assets = list( @@ -288,10 +265,6 @@ "meteors" = 'icons/UI_Icons/Achievements/Misc/meteors.png', "timewaste" = 'icons/UI_Icons/Achievements/Misc/timewaste.png', "upgrade" = 'icons/UI_Icons/Achievements/Misc/upgrade.png', -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - "clownking" = 'mod_celadon/_storage_icons/icons/assets/png/clownking.png', - "clownthanks" = 'mod_celadon/_storage_icons/icons/assets/png/clownthanks.png', -// [/CELADON-ADD] "rule8" = 'icons/UI_Icons/Achievements/Misc/rule8.png', "snail" = 'icons/UI_Icons/Achievements/Misc/snail.png', "mining" = 'icons/UI_Icons/Achievements/Skills/mining.png', diff --git a/code/modules/atmospherics/gasmixtures/gas_mixture.dm b/code/modules/atmospherics/gasmixtures/gas_mixture.dm index 22626d5d9ff1..7a15308f3ec2 100644 --- a/code/modules/atmospherics/gasmixtures/gas_mixture.dm +++ b/code/modules/atmospherics/gasmixtures/gas_mixture.dm @@ -187,7 +187,6 @@ GLOBAL_LIST_INIT(auxtools_atmos_initialized, FALSE) return copy /datum/gas_mixture/copy_from_turf(turf/model) - set_temperature(initial(model.initial_temperature)) parse_gas_string(model.initial_gas_mix) return 1 diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index 71f8b3c3d4c6..0a9958d0cc87 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -356,7 +356,9 @@ /datum/gas_reaction/freonfire/init_reqs() min_requirements = list( GAS_O2 = MINIMUM_MOLE_COUNT, - GAS_FREON = MINIMUM_MOLE_COUNT + GAS_FREON = MINIMUM_MOLE_COUNT, + "TEMP" = FREON_LOWER_TEMPERATURE, + "MAX_TEMP" = FREON_MAXIMUM_BURN_TEMPERATURE ) /datum/gas_reaction/freonfire/react(datum/gas_mixture/air, datum/holder) @@ -597,7 +599,8 @@ GAS_O2 = 10, GAS_N2 = 20, GAS_BZ = 5, - "TEMP" = 200 + "TEMP" = 200, + "MAX_TEMP" = 250 ) /datum/gas_reaction/nitrousformation/react(datum/gas_mixture/air) @@ -607,8 +610,6 @@ var/energy_used = heat_efficency * NITROUS_FORMATION_ENERGY if ((air.get_moles(GAS_O2) - heat_efficency < 0)|| (air.get_moles(GAS_N2) - heat_efficency < 0)) //Shouldn't produce gas from nothing. return NO_REACTION - if (temperature > 250) //maximum allowed temperature for the reaction - return NO_REACTION air.adjust_moles(GAS_O2, -heat_efficency) air.adjust_moles(GAS_N2, -heat_efficency * 2) air.adjust_moles(GAS_NITROUS, heat_efficency) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index ee3507ff0349..ece0b7a9e72a 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -84,7 +84,7 @@ var/temperature_delta= abs(old_temperature - air_contents.return_temperature()) if(temperature_delta > 1) - active_power_usage = max((heat_capacity * temperature_delta) / 5 + idle_power_usage, idle_power_usage) + active_power_usage = max((heat_capacity * temperature_delta) / 10 + idle_power_usage, idle_power_usage) // CELADON EDIT update_parents() else active_power_usage = idle_power_usage diff --git a/code/modules/autowiki/pages/ships.dm b/code/modules/autowiki/pages/ships.dm index 9b38d1dc8ad1..ee5770ad4ab3 100644 --- a/code/modules/autowiki/pages/ships.dm +++ b/code/modules/autowiki/pages/ships.dm @@ -104,21 +104,12 @@ return wiki_icon /datum/autowiki/ship/proc/get_hud_image(datum/job/to_equip) -// [CELADON-EDIT] - CELADON_ADD_HUDS -/* ORIGINAL - if(!icon_exists('icons/mob/hud.dmi', "hud[initial(to_equip.outfit.faction_icon)]")) + var/icon/hud_icon = 'mod_celadon/_storage_icons/icons/resprite/hud/hud.dmi' // [CELADON-EDIT] - CELADON_ADD_HUDS + if(!icon_exists(hud_icon, "hud[initial(to_equip.outfit.faction_icon)]")) // [CELADON-EDIT] - CELADON_ADD_HUDS return FALSE - var/icon/hudicon = icon('icons/mob/hud.dmi', "hud[initial(to_equip.outfit.faction_icon)]") - hudicon.Blend(icon('icons/mob/hud.dmi', "hud[initial(to_equip.outfit.job_icon)]"), ICON_OVERLAY) -*/ - - if(!icon_exists('mod_celadon/_storage_icons/icons/resprite/hud/hud.dmi', "hud[initial(to_equip.outfit.faction_icon)]")) - return FALSE - - var/icon/hudicon = icon('mod_celadon/_storage_icons/icons/resprite/hud/hud.dmi', "hud[initial(to_equip.outfit.faction_icon)]") - hudicon.Blend(icon('mod_celadon/_storage_icons/icons/resprite/hud/hud.dmi', "hud[initial(to_equip.outfit.job_icon)]"), ICON_OVERLAY) -// [/CELADON-EDIT] + var/icon/hudicon = icon(hud_icon, "hud[initial(to_equip.outfit.faction_icon)]") // [CELADON-EDIT] - CELADON_ADD_HUDS + hudicon.Blend(icon(hud_icon, "hud[initial(to_equip.outfit.job_icon)]"), ICON_OVERLAY) // [CELADON-EDIT] - CELADON_ADD_HUDS hudicon.Crop(1, 17, 8, 24) return hudicon diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm index e3cec2276f71..10d6e80959ff 100644 --- a/code/modules/awaymissions/corpse.dm +++ b/code/modules/awaymissions/corpse.dm @@ -34,7 +34,6 @@ var/ghost_usable = TRUE /// Weakref to the mob this spawner created - just if you needed to do something with it. var/datum/weakref/spawned_mob_ref - var/can_load_appearance = TRUE // [CELADON-EDIT] - CELADON_LOAD_PREF //ATTACK GHOST IGNORING PARENT RETURN VALUE /obj/effect/mob_spawn/attack_ghost(mob/user) @@ -174,6 +173,7 @@ // [/CELADON-ADD] if(uses > 0) uses-- + spawned_mob_ref = WEAKREF(M) if(!permanent && !uses) qdel(src) // [/CELADON-EDIT] - CELADON_LOAD_PREF @@ -430,12 +430,6 @@ name = "Engineer" outfit = /datum/outfit/job/engineer -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/effect/mob_spawn/human/clown - name = "Clown" - outfit = /datum/outfit/job/cel/independent/clown -// [/CELADON-ADD] - /obj/effect/mob_spawn/human/scientist name = "Scientist" outfit = /datum/outfit/job/scientist diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index ef18c487fa0d..b19c8a817522 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -83,206 +83,6 @@ icon_state = "forge_off" STOP_PROCESSING(SSobj, src) -/obj/item/dice/d20/fate - name = "\improper Die of Fate" - desc = "A die with twenty sides. You can feel unearthly energies radiating from it. Using this might be VERY risky." - icon_state = "d20" - sides = 20 - microwave_riggable = FALSE - var/reusable = TRUE - var/used = FALSE - -/obj/item/dice/d20/fate/one_use - reusable = FALSE - -/obj/item/dice/d20/fate/cursed - name = "cursed Die of Fate" - desc = "A die with twenty sides. You feel that rolling this is a REALLY bad idea." - color = "#00BB00" - - rigged = DICE_TOTALLY_RIGGED - rigged_value = 1 - -/obj/item/dice/d20/fate/cursed/one_use - reusable = FALSE - -/obj/item/dice/d20/fate/stealth - name = "d20" - desc = "A die with twenty sides. The preferred die to throw at the GM." - -/obj/item/dice/d20/fate/stealth/one_use - reusable = FALSE - -/obj/item/dice/d20/fate/stealth/cursed - rigged = DICE_TOTALLY_RIGGED - rigged_value = 1 - -/obj/item/dice/d20/fate/stealth/cursed/one_use - reusable = FALSE - -/obj/item/dice/d20/fate/diceroll(mob/user) - . = ..() - if(!used) - if(!ishuman(user) || !user.mind || (user.mind in SSticker.mode.wizards)) - to_chat(user, span_warning("You feel the magic of the dice is restricted to ordinary humans!")) - return - - if(!reusable) - used = TRUE - - var/turf/T = get_turf(src) - T.visible_message(span_userdanger("[src] flares briefly.")) - - addtimer(CALLBACK(src, PROC_REF(effect), user, .), 1 SECONDS) - -/obj/item/dice/d20/fate/equipped(mob/user, slot) - . = ..() - if(!ishuman(user) || !user.mind || (user.mind in SSticker.mode.wizards)) - to_chat(user, span_warning("You feel the magic of the dice is restricted to ordinary humans! You should leave it alone.")) - user.dropItemToGround(src) - - -/obj/item/dice/d20/fate/proc/effect(mob/living/carbon/human/user,roll) - var/turf/T = get_turf(src) - switch(roll) - if(1) - //Dust - T.visible_message(span_userdanger("[user] turns to dust!")) - user.dust() - if(2) - //Death - T.visible_message(span_userdanger("[user] suddenly dies!")) - user.death() - if(3) - //Swarm of creatures - T.visible_message(span_userdanger("A swarm of creatures surround [user]!")) - for(var/direction in GLOB.alldirs) - new /mob/living/simple_animal/hostile/netherworld(get_step(get_turf(user),direction)) - if(4) - //Destroy Equipment - T.visible_message(span_userdanger("Everything [user] is holding and wearing disappears!")) - for(var/obj/item/I in user) - if(istype(I, /obj/item/implant)) - continue - qdel(I) - if(5) - //Monkeying - T.visible_message(span_userdanger("[user] transforms into a monkey!")) - user.monkeyize() - if(6) - //Cut speed - T.visible_message(span_userdanger("[user] starts moving slower!")) - user.add_movespeed_modifier(/datum/movespeed_modifier/die_of_fate) - if(7) - //Throw - T.visible_message(span_userdanger("Unseen forces throw [user]!")) - user.Stun(60) - user.adjustBruteLoss(50) - var/throw_dir = pick(GLOB.cardinals) - var/atom/throw_target = get_edge_target_turf(user, throw_dir) - user.throw_at(throw_target, 200, 4) - if(8) - //Fueltank Explosion - T.visible_message(span_userdanger("An explosion bursts into existence around [user]!")) - explosion(get_turf(user),-1,0,2, flame_range = 2) - if(9) - //Cold - var/datum/disease/D = new /datum/disease/cold() - T.visible_message(span_userdanger("[user] looks a little under the weather!")) - user.ForceContractDisease(D, FALSE, TRUE) - if(10) - //Nothing - T.visible_message(span_userdanger("Nothing seems to happen.")) - if(11) - //Cookie - T.visible_message(span_userdanger("A cookie appears out of thin air!")) - var/obj/item/food/cookie/C = new(drop_location()) - do_smoke(0, drop_location()) - C.name = "Cookie of Fate" - if(12) - //Healing - T.visible_message(span_userdanger("[user] looks very healthy!")) - user.revive(full_heal = TRUE, admin_revive = TRUE) - if(13) - //Mad Dosh - T.visible_message(span_userdanger("Mad dosh shoots out of [src]!")) - var/turf/Start = get_turf(src) - for(var/direction in GLOB.alldirs) - var/turf/dirturf = get_step(Start,direction) - if(rand(0,1)) - new /obj/item/spacecash/bundle/c1000(dirturf) - else - var/obj/item/storage/bag/money/M = new(dirturf) - for(var/i in 1 to rand(5,50)) - new /obj/item/coin/gold(M) - if(14) - //Free Gun - T.visible_message(span_userdanger("An impressive gun appears!")) - do_smoke(0, drop_location()) - new /obj/item/gun/ballistic/revolver/grenadelauncher(drop_location()) - if(15) - //Random One-use spellbook - T.visible_message(span_userdanger("A magical looking book drops to the floor!")) - do_smoke(0, drop_location()) - new /obj/item/book/granter/spell/random(drop_location()) - if(16) - //Servant & Servant Summon - T.visible_message(span_userdanger("A Dice Servant appears in a cloud of smoke!")) - var/mob/living/carbon/human/H = new(drop_location()) - do_smoke(0, drop_location()) - - H.equipOutfit(/datum/outfit/butler) - var/datum/mind/servant_mind = new /datum/mind() - var/datum/antagonist/magic_servant/A = new - servant_mind.add_antag_datum(A) - A.setup_master(user) - servant_mind.transfer_to(H) - - var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as [user.real_name] Servant?", ROLE_WIZARD, null, ROLE_WIZARD, 50, H) - if(LAZYLEN(candidates)) - var/mob/dead/observer/C = pick(candidates) - message_admins("[ADMIN_LOOKUPFLW(C)] was spawned as Dice Servant") - H.key = C.key - - var/obj/effect/proc_holder/spell/targeted/summonmob/S = new - S.target_mob = H - user.mind.AddSpell(S) - - if(17) - //Tator Kit - T.visible_message(span_userdanger("A suspicious box appears!")) - new /obj/item/storage/box/syndicate/bundle_A(drop_location()) - do_smoke(0, drop_location()) - if(18) - //Captain ID - T.visible_message(span_userdanger("A golden identification card appears!")) - new /obj/item/card/id/captains_spare(drop_location()) - do_smoke(0, drop_location()) - if(19) - //Instrinct Resistance - T.visible_message(span_userdanger("[user] looks very robust!")) - user.physiology.brute_mod *= 0.5 - user.physiology.burn_mod *= 0.5 - - if(20) - //Free wizard! //NOT ANY MORE FUCKING CHRIST - T.visible_message(span_userdanger("Magic arches out of [src] and into ground under [user]!")) - new /obj/item/clothing/suit/wizrobe(drop_location()) - new /obj/item/clothing/head/wizard(drop_location()) - new /obj/item/clothing/gloves/combat/wizard(drop_location()) - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - new /obj/item/clothing/suit/wizrobe/magusblue(drop_location()) - new /obj/item/clothing/head/wizard/magus(drop_location()) - // [/CELADON-ADD] - new /obj/item/staff(drop_location()) - new /obj/structure/mirror/magic(drop_location()) - -/datum/outfit/butler - name = "Butler" - uniform = /obj/item/clothing/under/suit/black_really - shoes = /obj/item/clothing/shoes/laceup - gloves = /obj/item/clothing/gloves/color/white - /obj/effect/proc_holder/spell/targeted/summonmob name = "Summon Servant" desc = "This spell can be used to call your servant, whenever you need it." diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index 5885ae4c29f6..2b6615c6efa8 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -3,7 +3,6 @@ /turf/open/floor/plasteel/dark/snowdin initial_gas_mix = FROZEN_ATMOS planetary_atmos = 1 - initial_temperature = 180 /turf/open/lava/plasma name = "liquid plasma" diff --git a/code/modules/awaymissions/super_secret_room.dm b/code/modules/awaymissions/super_secret_room.dm index e1437925e333..ea06f2bb4878 100644 --- a/code/modules/awaymissions/super_secret_room.dm +++ b/code/modules/awaymissions/super_secret_room.dm @@ -112,10 +112,7 @@ /obj/structure/speaking_tile/proc/SpeakPeace(list/statements) for(var/i in 1 to statements.len) - // [CELADON-EDIT] - CELADON_FIXES_DEBUG_ROOM - // say(span_deadsay("[statements[i]]")) // ORIGINAL - visible_message(span_deadsay("[src] [verb_say], \"[statements[i]]\"")) - // [/CELADON-EDIT] + visible_message(span_deadsay("[src] [verb_say], \"[statements[i]]\"")) // [CELADON-EDIT] - CELADON_FIXES_DEBUG_ROOM if(i != statements.len) sleep(30) diff --git a/code/modules/cargo/blackmarket/packs/ammo.dm b/code/modules/cargo/blackmarket/packs/ammo.dm index a668dfd1d01e..c42d78d2457e 100644 --- a/code/modules/cargo/blackmarket/packs/ammo.dm +++ b/code/modules/cargo/blackmarket/packs/ammo.dm @@ -39,7 +39,7 @@ /datum/blackmarket_item/ammo/a762_box name = "7.62x40mm CLIP Ammo Box" desc = "A 60 round ammo box of 7.62x40mm CLIP." - item = /obj/item/storage/box/ammo/a762_40 + item = /datum/supply_pack/ammo/a762_ammo_box cost_min = 250 cost_max = 600 diff --git a/code/modules/cargo/blackmarket/packs/clothing.dm b/code/modules/cargo/blackmarket/packs/clothing.dm index fb207f54bb73..40690774f6f3 100644 --- a/code/modules/cargo/blackmarket/packs/clothing.dm +++ b/code/modules/cargo/blackmarket/packs/clothing.dm @@ -118,7 +118,6 @@ stock_max = 3 availability_prob = 50 -/* // [CELADON-REMOVE] - Никто в жизни это не купит намеренно /datum/blackmarket_item/clothing/degraded_armor_set name = "Clearance Bin Armor Set" desc = "Looking to protect yourself, but on a tight budget? These previously used vest and helmets served their former owners well! (May they rest in peace.)" @@ -137,7 +136,6 @@ new /obj/item/clothing/head/helmet/old(B) new /obj/item/clothing/suit/armor/vest/old(B) return B -*/ // [/CELADON-REMOVE] /datum/blackmarket_item/clothing/camo_set name = "Camo Set" diff --git a/code/modules/cargo/blackmarket/packs/tools.dm b/code/modules/cargo/blackmarket/packs/tools.dm index b97589e9f191..2721e6cf0c8d 100644 --- a/code/modules/cargo/blackmarket/packs/tools.dm +++ b/code/modules/cargo/blackmarket/packs/tools.dm @@ -76,20 +76,6 @@ stock_max = 4 availability_prob = 80 -/datum/blackmarket_item/tool/riot_shield - name = "Riot Shield" - desc = "Protect yourself from an unexpected Riot at your local Police department!" - item = /obj/item/shield/riot - - // [CELADON-EDIT] - CELADON_BLACK_MARKET - // cost_min = 300 - // cost_max = 800 // ORIGINAL - cost_min = 1500 - cost_max = 2000 - // [/CELADON-EDIT] - stock_max = 3 - availability_prob = 50 - /datum/blackmarket_item/tool/thermite_bottle name = "Thermite Bottle" desc = "30u of Thermite to assist in creating a quick access point or get away!" @@ -151,16 +137,6 @@ stock_max = 3 availability_prob = 40 -/datum/blackmarket_item/tool/adv_cutter - name = "Advanced Plasmacutter" - desc = "These technically aren't meant to be released to the public yet, but let's just say we managed to get our hands on an advance sample." - item = /obj/item/gun/energy/plasmacutter/adv - - cost_min = 2750 - cost_max = 3750 - stock_max = 3 - availability_prob = 40 - /datum/blackmarket_item/tool/impro_jetpack name = "Improvised Jetpack" desc = "A lovingly handcrafted jetpack built by our salvage techs. For the frugal space explorer." diff --git a/code/modules/cargo/blackmarket/packs/weapons.dm b/code/modules/cargo/blackmarket/packs/weapons.dm index 3afe93aae09a..62578709b768 100644 --- a/code/modules/cargo/blackmarket/packs/weapons.dm +++ b/code/modules/cargo/blackmarket/packs/weapons.dm @@ -68,16 +68,6 @@ new /obj/item/gun/ballistic/shotgun/blasting_hammer(B) new /obj/item/storage/box/ammo/a12g_blank(B) return B -/datum/blackmarket_item/weapon/spikeshield - name = "Spiked Ballistic Shield" - desc = "Be the ancient warrior you always wanted to be. Block bullets and impale your enemies." - item = /obj/item/shield/riot/spike - - cost_min = 1000 - cost_max = 1500 - stock_max = 2 - availability_prob = 50 - /datum/blackmarket_item/weapon/powerfist name = "Powerfist" desc = "Lookin to give a fisting someone'll remember? This electrically assisted powerfist'll slam em in the face hard enough they won't ever forget. Unless they black out an' forget it." diff --git a/code/modules/cargo/console.dm b/code/modules/cargo/console.dm index 212b4b4cab04..51d6bd67d4ad 100644 --- a/code/modules/cargo/console.dm +++ b/code/modules/cargo/console.dm @@ -28,19 +28,8 @@ var/blockade_warning = "Bluespace instability detected. Delivery impossible." var/message var/list/supply_pack_data - /// The currently linked supplypod beacon - var/obj/item/supplypod_beacon/beacon - /// Area instance that cargo pods are sent to - var/area/landingzone - /// The pod type used to deliver orders - var/podType = /obj/structure/closet/supplypod // [CELADON-EDIT] - CELADON_OUTPOST_CONSOLE - instead of "/obj/structure/closet/supplypod/centcompod" - /// Cooldown to prevent printing supplypod beacon spam - var/cooldown = 0 - /// Is the console in beacon mode? exists to let beacon know when a pod may come in - var/use_beacon = FALSE /// The account to charge purchases to, defaults to the cargo budget var/datum/bank_account/charge_account - var/pack_data_cooldown = 0 // [CELADON-ADD] - CELADON_FIXES: Cooldown for generating pack data to prevent FPS drops /obj/machinery/computer/cargo/Initialize() . = ..() @@ -89,14 +78,10 @@ /obj/machinery/computer/cargo/ui_static_data(mob/user) . = ..() outpost_docked = current_ship.docked_to - // [CELADON-EDIT] - CELADON_FIXES: Prevent constant pack data generation every tick - // if(istype(outpost_docked)) - if(istype(outpost_docked) && pack_data_cooldown <= world.time) + if(istype(outpost_docked)) generate_pack_data() - pack_data_cooldown = world.time + 50 // Cache for 5 seconds else supply_pack_data = list() - // [/CELADON-ADD] /obj/machinery/computer/cargo/ui_data(mob/user) var/list/data = list() @@ -128,13 +113,6 @@ return data -//[CELADON-ADD] - CELADON_FIXES - Чиним реролл -/datum/overmap/ship/controlled - var/given_up_missions = 0 - var/giveup_timer = - 15 MINUTES - var/giveup_timeout = FALSE -//[/CELADON-ADD] - /obj/machinery/computer/cargo/ui_act(action, params, datum/tgui/ui) . = ..() if(.) @@ -154,12 +132,13 @@ src.visible_message(span_notice("[src] dispenses a holochip.")) return TRUE - // if("add") if("purchase") var/list/purchasing = params["cart"] var/total_cost = text2num(params["total"]) - if(!current_ship?.docked_to) // [CELADON-ADD] - Мне лень убирать этот вызов, можно обойтись банальной проверкой - return // [/CELADON-ADD] + // [CELADON-ADD] - Мне лень убирать этот вызов, можно обойтись банальной проверкой + if(!current_ship?.docked_to) + return + // [/CELADON-ADD] var/datum/overmap/outpost/current_outpost = current_ship.docked_to if(!istype(current_ship.docked_to) || purchasing.len == 0) return diff --git a/code/modules/cargo/exports/hunting.dm b/code/modules/cargo/exports/hunting.dm index 71d55a9adc35..60a804e6bc5c 100644 --- a/code/modules/cargo/exports/hunting.dm +++ b/code/modules/cargo/exports/hunting.dm @@ -16,19 +16,17 @@ cost = 10 export_types = list(/obj/item/stack/sheet/bone) -/* /datum/export/hunting/stack/hide unit_name = "animal hide" desc = "Animal hide export. Paid per hide." cost = 50 export_types = list(/obj/item/stack/sheet/animalhide/goliath_hide) // Also includes polar bear hide. -*/ /datum/export/hunting/stack/rarehide unit_name = "rare animal hide" desc = "Rare animal hide export. Paid per hide." cost = 250 - export_types = list(/obj/item/stack/sheet/animalhide/ashdrake) // [CELADON-EDIT] + export_types = list(/obj/item/stack/sheet/animalhide/ashdrake, /obj/item/stack/sheet/animalhide/xeno) /datum/export/hunting/stack/leather unit_name = "leather" @@ -49,17 +47,6 @@ cost = 250 unit_name = "common hunting trophy" export_types = list( -// [CELADON-ADD] - /obj/item/crusher_trophy/shiny, - /obj/item/crusher_trophy/legion_skull, - /obj/item/crusher_trophy/wolf_ear, - /obj/item/crusher_trophy/bear_paw, - /obj/item/crusher_trophy/goliath_tentacle, - /obj/item/crusher_trophy/watcher_wing, - /obj/item/crusher_trophy/brimdemon_fang, - /obj/item/crusher_trophy/lobster_claw, - /obj/item/mob_trophy/shiny, -// [/CELADON-ADD] /obj/item/mob_trophy/legion_skull, /obj/item/mob_trophy/wolf_ear, /obj/item/mob_trophy/bear_paw, @@ -74,25 +61,6 @@ unit_name = "rare hunting trophy" elasticity_coeff = 0 export_types = list( -// [CELADON-ADD] - /obj/item/crusher_trophy/watcher_wing_forgotten, - /obj/item/crusher_trophy/legion_skull_crystal, - /obj/item/crusher_trophy/goliath_crystal, - /obj/item/crusher_trophy/dwarf_skull, - /obj/item/crusher_trophy/fang, - /obj/item/crusher_trophy/war_paw, - /obj/item/crusher_trophy/elder_tentacle, - /obj/item/crusher_trophy/ice_crystal, - /obj/item/crusher_trophy/magma_skull, - /obj/item/crusher_trophy/magma_skull/magma, - /obj/item/crusher_trophy/magma_wing, - /obj/item/crusher_trophy/tail_spike, - /obj/item/crusher_trophy/ice_wing, - /obj/item/crusher_trophy/dwarf_skull, - /obj/item/mob_trophy/watcher_wing_forgotten, - /obj/item/mob_trophy/legion_skull_crystal, - /obj/item/mob_trophy/goliath_crystal, -// [/CELADON-ADD] /obj/item/mob_trophy/dwarf_skull, /obj/item/mob_trophy/fang, /obj/item/mob_trophy/war_paw, @@ -108,17 +76,7 @@ elasticity_coeff = 0 unit_name = "big game hunting trophy" export_types = list( -// [CELADON-ADD] - /obj/item/crusher_trophy/legionnaire_spine, - /obj/item/crusher_trophy/ash_spike, - /obj/item/crusher_trophy/demon_claws, - /obj/item/crusher_trophy/broodmother_tongue, - /obj/item/crusher_trophy/ice_block_talisman, - /obj/item/crusher_trophy/king_goat, - /obj/item/crusher_trophy/miner_eye, - /obj/item/crusher_trophy/vortex_talisman, - /obj/item/crusher_trophy/blaster_tubes, -// [/CELADON-ADD] + /obj/item/mob_trophy/legionnaire_spine, /obj/item/mob_trophy/ash_spike, /obj/item/mob_trophy/demon_claws, /obj/item/mob_trophy/broodmother_tongue, @@ -127,53 +85,3 @@ /obj/item/mob_trophy/vortex_talisman, /obj/item/mob_trophy/blaster_tubes ) - -// [CELADON-ADD] -// Hides -/datum/export/hunting/stack - desc = "Rawhide of various origins. The more exotic the species, the higher the price." - include_subtypes = FALSE - -/datum/export/hunting/stack/monkey - cost = 50 - unit_name = "monkey hide" - export_types = list(/obj/item/stack/sheet/animalhide/monkey) - -/datum/export/hunting/stack/human - unit_name = "piece of human skin" - cost = 100 - export_types = list(/obj/item/stack/sheet/animalhide/human) - -/datum/export/hunting/stack/goliath_hide - unit_name = "goliath hide" - cost = 200 - export_types = list(/obj/item/stack/sheet/animalhide/goliath_hide) - include_subtypes = TRUE - -/datum/export/hunting/stack/cat - unit_name = "cat hide" - cost = 150 - export_types = list(/obj/item/stack/sheet/animalhide/cat) - -/datum/export/hunting/stack/corgi - unit_name = "corgi hide" - cost = 200 - export_types = list(/obj/item/stack/sheet/animalhide/corgi) - -/datum/export/hunting/stack/lizard - unit_name = "lizard hide" - cost = 150 - export_types = list(/obj/item/stack/sheet/animalhide/lizard) - -/datum/export/hunting/stack/gondola - unit_name = "gondola hide" - cost = 250 - export_types = list(/obj/item/stack/sheet/animalhide/gondola) - -/datum/export/hunting/stack/xeno - unit_name = "alien hide" - cost = 100 - export_types = list(/obj/item/stack/sheet/animalhide/xeno) - - -// [/CELADON-ADD] diff --git a/code/modules/cargo/exports/materials.dm b/code/modules/cargo/exports/materials.dm index 2e1dfe9410c4..6e1692aa0e4e 100644 --- a/code/modules/cargo/exports/materials.dm +++ b/code/modules/cargo/exports/materials.dm @@ -50,7 +50,7 @@ material_id = /datum/material/diamond /datum/export/material/plasma - cost = 30 //cost = 25 + cost = 25 unit_name = "cm3 of plasma" sell_floor = 15 material_id = /datum/material/plasma @@ -96,11 +96,9 @@ unit_name = "sheet of metal" cost = 2 sell_floor = 1 - elasticity_coeff = 0 material_id = /datum/material/iron export_types = list( /obj/item/stack/sheet/metal, - /obj/item/stack/tile/plasteel, /obj/item/stack/rods, /obj/item/stack/ore, /obj/item/coin @@ -109,9 +107,7 @@ /datum/export/material/glass unit_name = "sheet of glass" - cost = 2 //cost = 1 - sell_floor = 1 - elasticity_coeff = 0 + cost = 1 material_id = /datum/material/glass export_types = list( /obj/item/stack/sheet/glass, @@ -119,29 +115,3 @@ /obj/item/shard ) valid_event_target = FALSE - -// [CELADON-ADD] -/datum/export/material/wood - unit_name = "cm3 of wood" - cost = 1 - sell_floor = 1 - elasticity_coeff = 0 - material_id = /datum/material/wood - export_types = list(/obj/item/stack/sheet/mineral/wood) - -/datum/export/material/hellstone - unit_name = "cm3 of hellstone" - cost = 100 - material_id = /datum/material/hellstone - -/datum/export/material/hot_ice - unit_name = "cm3 of Hot Ice" - cost = 100 - material_id = /datum/material/hot_ice - export_types = /obj/item/stack/sheet/hot_ice - -/datum/export/material/abductor - unit_name = "cm3 of alien alloy" - cost = 500 - export_types = list(/obj/item/stack/sheet/mineral/abductor) -// [/CELADON-ADD] diff --git a/code/modules/cargo/exports/mining.dm b/code/modules/cargo/exports/mining.dm index cec5a088a0bc..122483c3e7e9 100644 --- a/code/modules/cargo/exports/mining.dm +++ b/code/modules/cargo/exports/mining.dm @@ -5,47 +5,37 @@ elasticity_coeff = 0.3 valid_event_target = FALSE -// [CELADON-EDIT] -// 1% Drop - /asteroid/goliath - (/obj/item/gem/rupee, /obj/item/gem/fdiamond, /obj/item/gem/void, /obj/item/gem/phoron) /datum/export/gems/rupee unit_name = "Ruperium" - cost = 1000 //cost = 1000 + cost = 1000 export_types = list(/obj/item/gem/rupee) -// 1% Drop - /asteroid/goliath - (/obj/item/gem/rupee, /obj/item/gem/fdiamond, /obj/item/gem/void, /obj/item/gem/phoron) -// 5% Drop - /asteroid/ice_demon /datum/export/gems/diamond unit_name = "Frost Diamond" - cost = 1500 //cost = 3500 + cost = 3500 export_types = list(/obj/item/gem/fdiamond) -// 10% Drop - /asteroid/ice_whelp /datum/export/gems/amber unit_name = "Draconic Amber" - cost = 3000 //cost = 5500 + cost = 5500 export_types = list(/obj/item/gem/amber) -// 1% Drop - /asteroid/goliath - (/obj/item/gem/rupee, /obj/item/gem/fdiamond, /obj/item/gem/void, /obj/item/gem/phoron) /datum/export/gems/plasma unit_name = "Metastable Phoron" - cost = 4000 //cost = 11000 + cost = 11000 export_types = list(/obj/item/gem/phoron) -// 1% Drop - /asteroid/goliath - (/obj/item/gem/rupee, /obj/item/gem/fdiamond, /obj/item/gem/void, /obj/item/gem/phoron) /datum/export/gems/void unit_name = "Null Crystal" - cost = 5000 //cost = 19000 + cost = 19000 export_types = list(/obj/item/gem/void) -// Random elite - /obj/structure/elite_tumor /datum/export/gems/blood unit_name = "Ichorium Crystal" cost = 9000 export_types = list(/obj/item/gem/bloodstone) -// Rare - /asteroid/basilisk/watcher/forgotten, /asteroid/goliath/beast/ancient/crystal /datum/export/gems/strange_crystal unit_name = "Strange crystal" - cost = 6000 //cost = 4000 + cost = 4000 export_types = list(/obj/item/strange_crystal) -// [/CELADON-EDIT] diff --git a/code/modules/cargo/exports/scraping.dm b/code/modules/cargo/exports/scraping.dm index 0247d81a81af..53b139dc7396 100644 --- a/code/modules/cargo/exports/scraping.dm +++ b/code/modules/cargo/exports/scraping.dm @@ -8,17 +8,12 @@ /datum/export/claymore unit_name = "defused claymores" desc = "The Confederated League maintains an active bounty program for the disposal of UXO. Make the frontier a safer place today!" - cost = 500 //cost = 1250 // [CELADON-EDIT] + cost = 1250 elasticity_coeff = 0.1 export_types = list(/obj/item/mine/directional/claymore) - // Circuit boards, spare parts, etc. -// [CELADON-EDIT] -/datum/export/solar - elasticity_coeff = 0.05 - /datum/export/solar/assembly cost = 50 desc = "One solar panel assembly. Green energy, especially towards the inner system." @@ -39,20 +34,17 @@ /datum/export/thruster_ion cost = 500 - desc = "One set of t3 circuits and controllers for an electrical ion engine." + desc = "One set of circuits and controllers for an electrical ion engine." unit_name = "ion thruster board" - elasticity_coeff = 0.05 - export_types = list(/obj/item/circuitboard/machine/shuttle/engine/electric/tech3) -// [/CELADON-EDIT] + export_types = list(/obj/item/circuitboard/machine/shuttle/engine/electric) -/* //Computer Tablets and Parts /datum/export/modular_part cost = 15 desc = "You find it? We want it." unit_name = "miscellaneous computer part" export_types = list(/obj/item/computer_hardware) -*/ + /* if only /datum/export/stack/cable cost = 0.1 diff --git a/code/modules/cargo/outpost_bounty_console.dm b/code/modules/cargo/outpost_bounty_console.dm index 38ca603d6395..be0b936d6c32 100644 --- a/code/modules/cargo/outpost_bounty_console.dm +++ b/code/modules/cargo/outpost_bounty_console.dm @@ -15,9 +15,6 @@ GLOBAL_LIST_INIT(outpost_exports, gen_outpost_exports()) icon = 'icons/obj/telescience.dmi' icon_state = "lpad-idle" - resistance_flags = INDESTRUCTIBLE // [CELADON-ADD] - flags_1 = NODECONSTRUCT_1 // [/CELADON-ADD] - /obj/machinery/outpost_selling_pad/proc/get_other_atoms() . = list() for(var/atom/movable/AM in get_turf(src)) @@ -34,10 +31,6 @@ GLOBAL_LIST_INIT(outpost_exports, gen_outpost_exports()) light_color = COLOR_BRIGHT_ORANGE var/obj/machinery/outpost_selling_pad/linked_pad var/list/cached_valid_exports = list() - var/cache_cooldown = 0 // [CELADON-ADD] - CELADON_FIXES: Cooldown for caching exports to prevent FPS drops - - resistance_flags = INDESTRUCTIBLE // [CELADON-ADD] - flags_1 = NODECONSTRUCT_1 // [/CELADON-ADD] /obj/machinery/computer/outpost_export_console/LateInitialize() . = ..() @@ -47,11 +40,6 @@ GLOBAL_LIST_INIT(outpost_exports, gen_outpost_exports()) desc += " This one is not linked to any outpost." /obj/machinery/computer/outpost_export_console/proc/cache_valid_exports() - // [CELADON-ADD] - CELADON_FIXES: Prevent constant re-caching every tick - if(cache_cooldown > world.time) - return - cache_cooldown = world.time + 10 // Cache for 1 second - // [/CELADON-ADD] cached_valid_exports = list() if(linked_pad) var/items_on_pad = linked_pad.get_other_atoms() @@ -117,20 +105,18 @@ GLOBAL_LIST_INIT(outpost_exports, gen_outpost_exports()) switch(action) if("recalc") - // [CELADON-ADD] - CELADON_FIXES: Force cache refresh when recalc button is pressed - cache_cooldown = 0 // Reset cooldown to force immediate cache update - // [/CELADON-ADD] + cache_cooldown = 0 // [CELADON-ADD] - CELADON_FIXES: Force cache refresh when recalc button is pressed update_static_data(usr, ui) if("redeem") var/datum/export/redeemed_exp = locate(text2path(params["redeem_type"])) in cached_valid_exports if(redeemed_exp == null || length(cached_valid_exports[redeemed_exp]) == 0) CRASH("passed a bad export type through ui_act of [src]") else - redeem_export(redeemed_exp, usr) // [CELADON-EDIT] - CELADON_COMPONENTS_LOGS // redeem_export(redeemed_exp) + redeem_export(redeemed_exp, usr) // [CELADON-EDIT] - CELADON_COMPONENTS_LOGS update_static_data(usr, ui) return TRUE -/obj/machinery/computer/outpost_export_console/proc/redeem_export(datum/export/exp, mob/user) // [CELADON-EDIT] - CELADON_COMPONENTS_LOGS // /obj/machinery/computer/outpost_export_console/proc/redeem_export(datum/export/exp) +/obj/machinery/computer/outpost_export_console/proc/redeem_export(datum/export/exp, mob/user) // [CELADON-EDIT] - CELADON_COMPONENTS_LOGS if(!(exp in cached_valid_exports)) CRASH("somehow [exp] is not in cached_valid_exports") var/total_payout = 0 @@ -145,7 +131,6 @@ GLOBAL_LIST_INIT(outpost_exports, gen_outpost_exports()) qdel(exp_atom) cached_valid_exports -= exp - log_econ("[key_name(user)] exported [exp.unit_name] ([sold_items.Join(", ")]) for [total_payout] credits at [AREACOORD(src)]") // [CELADON-ADD] - CELADON_COMPONENTS_LOGS do_sparks(5, 0, linked_pad.loc) diff --git a/code/modules/cargo/packs/ammo.dm b/code/modules/cargo/packs/ammo.dm index ee9305c20533..e9c80414bada 100644 --- a/code/modules/cargo/packs/ammo.dm +++ b/code/modules/cargo/packs/ammo.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/ammo category = "Bulk Ammunition" crate_type = /obj/structure/closet/crate/secure/gear @@ -366,31 +363,25 @@ /* .308 */ + /datum/supply_pack/ammo/a308_ammo_box name = "308 Ammo Box Crate" desc = "Contains a thirty-round .308 box for DMRs such as the SsG-04 and CM-GAL-S." contains = list(/obj/item/storage/box/ammo/a308) cost = 185 //4.8 ammo efficiency at 30 damage //TTD 35 damage 215 cr DMR buff -// [CELADON-DELETE] - cargo ammo fix - CELADON_WEAPONS -// /datum/supply_pack/ammo/a308_ap -// name = "308 Armour Piercing Ammo Box Crate" -// desc = "Contains a thirty-round .308 armour piercing box for DMRs such as the SsG-04 and CM-GAL-S." -// contains = list(/obj/item/storage/box/ammo/a308/ap) -// cost = 230 //TTD 270 - -// /datum/supply_pack/ammo/a308_hp -// name = "308 Hollow Point Ammo Box Crate" -// desc = "Contains a thirty-round .308 hollow point box for DMRs such as the SsG-04 and CM-GAL-S." -// contains = list(/obj/item/storage/box/ammo/a308/hp) -// cost = 230 //TTD 270 - -///datum/supply_pack/ammo/a308_hp - //name = "308 Hollow Point Ammo Box Crate" - //desc = "Contains a thirty-round .308 hollow point box for DMRs such as the SsG-04 and CM-GAL-S." - //contains = list(/obj/item/storage/box/ammo/a308/hp) - //cost = 500 -// [/CELADON-DELETE] - cargo ammo fix +/datum/supply_pack/ammo/a308_ap + name = "308 Armour Piercing Ammo Box Crate" + desc = "Contains a thirty-round .308 armour piercing box for DMRs such as the SsG-04 and CM-GAL-S." + contains = list(/obj/item/storage/box/ammo/a308/ap) + cost = 230 //TTD 270 + +/datum/supply_pack/ammo/a308_hp + name = "308 Hollow Point Ammo Box Crate" + desc = "Contains a thirty-round .308 hollow point box for DMRs such as the SsG-04 and CM-GAL-S." + contains = list(/obj/item/storage/box/ammo/a308/hp) + cost = 230 //TTD 270 + /* 7.5x64 */ /datum/supply_pack/ammo/a65clip_box @@ -463,5 +454,3 @@ desc = "Contains a 60-round box for high-powered gauss guns such as the GAR assault rifle." contains = list(/obj/item/storage/box/ammo/ferrolance/hc) cost = 380 - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/animal.dm b/code/modules/cargo/packs/animal.dm index 25dee5a88dd5..d81d9309d4a2 100644 --- a/code/modules/cargo/packs/animal.dm +++ b/code/modules/cargo/packs/animal.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/animal category = "Animals" crate_type = /obj/structure/closet/crate/critter @@ -145,5 +142,3 @@ . = ..() for(var/i in 1 to 49) new /mob/living/simple_animal/crab(.) - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/armor.dm b/code/modules/cargo/packs/armor.dm index 83ee34f15448..c431d633362c 100644 --- a/code/modules/cargo/packs/armor.dm +++ b/code/modules/cargo/packs/armor.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/armor category = "Armor" crate_type = /obj/structure/closet/crate/secure @@ -182,5 +179,3 @@ faction = /datum/faction/srm faction_discount = 0 faction_locked = TRUE - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/canister.dm b/code/modules/cargo/packs/canister.dm index adf741971eb1..a486d7f8220b 100644 --- a/code/modules/cargo/packs/canister.dm +++ b/code/modules/cargo/packs/canister.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/canister category = "Gas Canisters" crate_type = /obj/structure/closet/crate/large @@ -65,5 +62,3 @@ cost = 8000 contains = list(/obj/machinery/portable_atmospherics/canister/bz) crate_name = "\improper BZ canister crate" - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/chemistry.dm b/code/modules/cargo/packs/chemistry.dm index 5776ce043a9c..988a2abcdcb6 100644 --- a/code/modules/cargo/packs/chemistry.dm +++ b/code/modules/cargo/packs/chemistry.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/chemistry category = "Chemistry" crate_type = /obj/structure/closet/crate/chem @@ -202,5 +199,3 @@ cost = 300 contains = list(/obj/item/reagent_containers/glass/chem_jug/robustharvestnutriment) crate_name = "bulk Robust Harvest crate" - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/civilian.dm b/code/modules/cargo/packs/civilian.dm index 47b676d984ad..15262903f0a3 100644 --- a/code/modules/cargo/packs/civilian.dm +++ b/code/modules/cargo/packs/civilian.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/civilian category = "Civilian & Decoration" crate_name = "civilian supply crate" @@ -370,5 +367,3 @@ contains = list(/obj/item/bodycamera/broadcast_camera) crate_name = "broadcast camera crate" crate_type = /obj/structure/closet/crate - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm index 96d79e3791d7..f8208115bf3b 100644 --- a/code/modules/cargo/packs/costumes_toys.dm +++ b/code/modules/cargo/packs/costumes_toys.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/costumes_toys category = "Costumes & Toys" @@ -187,5 +184,3 @@ /obj/item/clothing/under/dress/rilena, /obj/item/gun/energy/buster) crate_name = "collectable merchandise crate" - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/cybernetics.dm b/code/modules/cargo/packs/cybernetics.dm index 4c47183794ef..db49f6edd7cf 100644 --- a/code/modules/cargo/packs/cybernetics.dm +++ b/code/modules/cargo/packs/cybernetics.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/cybernetic category = "Cybernetics" crate_type = /obj/structure/closet/crate/medical @@ -80,5 +77,3 @@ crate_type = /obj/structure/closet/crate/freezer faction = /datum/faction/syndicate/cybersun faction_discount = 50 - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/emergency.dm b/code/modules/cargo/packs/emergency.dm index 7ade42f4a185..b41d9009fe81 100644 --- a/code/modules/cargo/packs/emergency.dm +++ b/code/modules/cargo/packs/emergency.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/emergency category = "Emergency & Life Support" crate_type = /obj/structure/closet/crate/internals @@ -105,5 +102,3 @@ /obj/item/multitool) crate_name = "bomb suit crate" crate_type = /obj/structure/closet/crate/science - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/exploration.dm b/code/modules/cargo/packs/exploration.dm index fe1b559dfbee..cb2db881176c 100644 --- a/code/modules/cargo/packs/exploration.dm +++ b/code/modules/cargo/packs/exploration.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/exploration category = "Exploration" crate_type = /obj/structure/closet/crate/wooden @@ -89,6 +86,3 @@ contains = list( /obj/item/clothing/glasses/night ) - - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/fishing.dm b/code/modules/cargo/packs/fishing.dm index 81ab5c0de437..1026ef46cbda 100644 --- a/code/modules/cargo/packs/fishing.dm +++ b/code/modules/cargo/packs/fishing.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/fish category = "Fishing Essentials" @@ -62,5 +59,3 @@ /obj/item/storage/box/aquarium_props, /obj/item/fish_feed) crate_name = "aquarium kit crate" - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/food.dm b/code/modules/cargo/packs/food.dm index ae4478619df4..d23fd563cbeb 100644 --- a/code/modules/cargo/packs/food.dm +++ b/code/modules/cargo/packs/food.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/food category = "Food & Agricultural" @@ -11,11 +8,7 @@ /datum/supply_pack/food/donkpockets name = "Donk Pocket Variety Crate" desc = "Featuring a line up of Donk Co.'s most popular pastry!" -// [CELADON-EDIT] - CELADON_BALANCE -// cost = 500 -// CELADON-EDIT - ORIGINAL cost = 500 -// [/CELADON-EDIT] contains = list(/obj/item/storage/box/donkpockets/donkpocketspicy, /obj/item/storage/box/donkpockets/donkpocketteriyaki, /obj/item/storage/box/donkpockets/donkpocketpizza, @@ -32,11 +25,7 @@ /datum/supply_pack/food/pizza name = "Pizza Crate" desc = "Best prices on this side of the galaxy. All deliveries are guaranteed to be 99.5% anomaly-free!" -// [CELADON-EDIT] - CELADON_BALANCE -// cost = 3000 -// CELADON-EDIT - ORIGINAL - cost = 2000 // Best prices this side of the galaxy. -// [/CELADON-EDIT] + cost = 750// Best prices this side of the galaxy. contains = list(/obj/item/pizzabox/margherita, /obj/item/pizzabox/mushroom, /obj/item/pizzabox/meat, @@ -76,15 +65,6 @@ crate_name = "food crate" crate_type = /obj/structure/closet/crate/freezer -/datum/supply_pack/food/ingredients_specialized - name = "Advanced Cooking Crate" - desc = "For the discerning chef. Contains a bottle of enzyme, a salt shaker, a pepper mill, a bottle of ketchup, a bottle of hot sauce, and a bottle of cream." -// [CELADON-EDIT] - CELADON_BALANCE -// cost = 2000 -// CELADON-EDIT - ORIGINAL - cost = 500 -// [/CELADON-EDIT] - /datum/supply_pack/food/ingredients_condiments name = "Condiments Crate" desc = "A variety of garnishes for topping off your dish with a little extra pizzaz. Contains a bottle of enzyme, a salt shaker, a pepper mill, a bottle of ketchup, a bottle of hot sauce, a bottle of BBQ sauce, and a bottle of cream." @@ -407,11 +387,7 @@ /datum/supply_pack/food/ingredients_randomized/bread name = "Bread Crate" desc = "A crate full of various breads. Bready to either be eaten or made into delicious meals." -// [CELADON-EDIT] - CELADON_BALANCE -// cost = 1000 -// CELADON-EDIT - ORIGINAL - cost = 250 -// [/CELADON-EDIT] + cost = 300 contains = list(/obj/item/food/bread/plain, /obj/item/food/breadslice/plain, /obj/item/food/breadslice/plain, @@ -460,12 +436,7 @@ /datum/supply_pack/food/hydrotank name = "Hydroponics Backpack Crate" desc = "Bring on the flood with this high-capacity backpack crate. Contains 500 units of life-giving H2O." -// [CELADON-EDIT] - CELADON_BALANCE -// cost = 750 -// CELADON-EDIT -// CELADON-EDIT - ORIGINAL cost = 750 -// [/CELADON-EDIT] contains = list(/obj/item/watertank) crate_name = "hydroponics backpack crate" crate_type = /obj/structure/closet/crate/hydroponics @@ -473,11 +444,7 @@ /datum/supply_pack/food/gardening name = "Gardening Crate" desc = "Supplies for growing a great garden! Contains two bottles of ammonia, two Plant-B-Gone spray bottles, a hatchet, cultivator, plant analyzer, as well as a pair of leather gloves and a botanist's apron." -// [CELADON-EDIT] - CELADON_BALANCE -// cost = 1500 -// CELADON-EDIT - ORIGINAL cost = 500 -// [/CELADON-EDIT] contains = list(/obj/item/reagent_containers/spray/plantbgone, /obj/item/reagent_containers/spray/plantbgone, /obj/item/reagent_containers/glass/bottle/ammonia, @@ -534,11 +501,7 @@ /datum/supply_pack/food/exoticseeds name = "Exotic Seeds Crate" desc = "Any entrepreneuring botanist's dream. Contains eleven different seeds, including two mystery seeds!" -// [CELADON-EDIT] - CELADON_BALANCE -// cost = 3000 -// CELADON-EDIT - ORIGINAL cost = 1000 -// [/CELADON-EDIT] contains = list(/obj/item/seeds/nettle, /obj/item/seeds/plump, /obj/item/seeds/liberty, @@ -723,6 +686,7 @@ /obj/item/reagent_containers/condiment/tiris_milk, /obj/item/reagent_containers/condiment/tiris_milk, ) + /datum/supply_pack/food/ingredients_basic/tiris_sele name = "Tiris Sele Crate" desc = "A gentle blood sauce made from a Tiris." @@ -739,4 +703,10 @@ /obj/item/reagent_containers/condiment/tiris_sale ) -[/CELADON-DELETE] */ +/datum/supply_pack/food/ingredients_basic/mead + name = "Mead Six Pack Crate" + desc = "Gezenan Dark Mead in a six-pack. Slightly better value than buying straight from a vendor." + cost = 50 + contains = list( + /obj/item/storage/cans/sixbeer + ) diff --git a/code/modules/cargo/packs/gun.dm b/code/modules/cargo/packs/gun.dm index 2dbaac5b16a2..4b4f8f5f97bd 100644 --- a/code/modules/cargo/packs/gun.dm +++ b/code/modules/cargo/packs/gun.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/gun category = "Guns" crate_type = /obj/structure/closet/crate/secure/weapon @@ -920,5 +917,3 @@ faction = /datum/faction/solgov faction_discount = 0 faction_locked = TRUE - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/machinery.dm b/code/modules/cargo/packs/machinery.dm index 78ab2c30b2ea..ba466bf419b4 100644 --- a/code/modules/cargo/packs/machinery.dm +++ b/code/modules/cargo/packs/machinery.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/machinery category = "Industrial Machines & Parts" crate_type = /obj/structure/closet/crate/engineering @@ -187,8 +184,6 @@ crate_type = /obj/structure/closet/crate/large no_bundle = TRUE - // [CELADON-REMOVE] - CELADON_QoL - Перенос непопулярного и затерявшегося товара в более видное место, дополнение его материалами и инструкциями -/* /datum/supply_pack/machinery/robotics name = "Robotics Assembly Crate" desc = "The tools you need to replace those finicky humans with a loyal robot army! Contains four proximity sensors, four robotic arms, two empty first aid kits, two health analyzers, two red hardhats, two mechanical toolboxes, and two cleanbot assemblies!" @@ -214,32 +209,12 @@ crate_name = "robotics assembly crate" crate_type = /obj/structure/closet/crate/science no_bundle = TRUE -*/ - // [/CELADON-REMOVE] /* Miscellaneous machines */ -/datum/supply_pack/machinery/gravgen - name = "Ship-Portable Gravity Generator Crate" - desc = "For those tired of their tools floating away from them. Contains a single gravity generator." - cost = 2000 - contains = list(/obj/machinery/power/ship_gravity/unanchored) - crate_name = "gravity generator crate" - crate_type = /obj/structure/closet/crate/engineering/electrical - no_bundle = TRUE - -/datum/supply_pack/machinery/breach_shield_gen - name = "Anti-breach Shield Projector Crate" - desc = "Hull breaches again? Say no more with the Nanotrasen Anti-Breach Shield Projector! Uses forcefield technology to keep the air in, and the space out. Contains one shield projector." - cost = 1250 - contains = list(/obj/machinery/shieldgen) - crate_name = "anti-breach shield projector crate" - crate_type = /obj/structure/closet/crate/secure/plasma - no_bundle = TRUE - -/datum/supply_pack/machinery/wall_shield_gen +/datum/supply_pack/ship_hardware/wall_shield_gen name = "Shield Generator Crate" desc = "These two shield wall generators are guaranteed to keep any unwanted lifeforms on the outside, where they belong! Not rated for containing singularities or tesla balls." cost = 1000 @@ -249,44 +224,6 @@ crate_type = /obj/structure/closet/crate/secure/plasma no_bundle = TRUE -/datum/supply_pack/machinery/holofield_generator - name = "Holofield Generator Crate" - desc = "Contains the electronics you need to set up a new (or replacement) holofield! Buttons not included." - cost = 1000 - contains = list(/obj/item/circuitboard/machine/shieldwallgen/atmos, - /obj/item/circuitboard/machine/shieldwallgen/atmos) - crate_name = "holofield generator crate" - crate_type = /obj/structure/closet/crate/engineering - -/datum/supply_pack/machinery/ion_thruster - name = "Ion Thruster Crate" - desc = "A crate containing an ion thruster and its precharger's electronics. For when you need a little extra thrust." - cost = 1500 - contains = list(/obj/item/circuitboard/machine/shuttle/smes, - /obj/item/circuitboard/machine/shuttle/engine/electric) - crate_name = "ion thruster crate" - crate_type = /obj/structure/closet/crate/engineering - -// [CELADON-REMOVE] - CELADON_OUTPOST_CONSOLE - Удаляем дубликат двигателей -// /datum/supply_pack/machinery/plasma_thruster -// name = "Plasma Thruster Crate" -// desc = "A crate containing a plasma thruster and its heater's electronics. For when you need a lot of extra thrust." -// cost = 1500 -// contains = list(/obj/item/circuitboard/machine/shuttle/heater, -// /obj/item/circuitboard/machine/shuttle/engine/plasma) -// crate_name = "plasma thruster crate" -// crate_type = /obj/structure/closet/crate/engineering -// [/CELADON-REMOVE] - -/datum/supply_pack/machinery/combustion_thruster - name = "Combustion Thruster Crate" - desc = "A crate containing a combustion thruster and its heater's electronics. For when you need complicated thrust." - cost = 2000 - contains = list(/obj/item/circuitboard/machine/shuttle/fire_heater, - /obj/item/circuitboard/machine/shuttle/engine/fire) - crate_name = "combustion thruster crate" - crate_type = /obj/structure/closet/crate/engineering - /datum/supply_pack/machinery/drill_crate name = "Heavy duty laser mining drill" desc = "An experimental laser-based mining drill that Nanotrasen is kindly allowing YOU, the customer, to opt into testing of." @@ -442,5 +379,3 @@ desc = "Now YOU can find out: Will! It! Blend?!" cost = 500 contains = list(/obj/item/circuitboard/machine/reagentgrinder) - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/magazines.dm b/code/modules/cargo/packs/magazines.dm index 3ba24e6f3879..3249e5d98c8a 100644 --- a/code/modules/cargo/packs/magazines.dm +++ b/code/modules/cargo/packs/magazines.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/magazine category = "Magazines" crate_type = /obj/structure/closet/crate/secure/gear @@ -446,6 +443,3 @@ faction_locked = TRUE /* Expand once the energy weapons have been actually expanded upon */ - - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/material.dm b/code/modules/cargo/packs/material.dm index 119c814a81ea..e17f9746d69b 100644 --- a/code/modules/cargo/packs/material.dm +++ b/code/modules/cargo/packs/material.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/material category = "Materials & Sheets" faction = /datum/faction/nt/ns_logi @@ -121,6 +118,3 @@ cost = 500 contains = list(/obj/item/reagent_containers/glass/concrete_bag) crate_name = "Concrete Mix" - - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/mechs.dm b/code/modules/cargo/packs/mechs.dm index e22b56e9488d..bfac7cfb8dbf 100644 --- a/code/modules/cargo/packs/mechs.dm +++ b/code/modules/cargo/packs/mechs.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/mech category = "Exosuit Construction" crate_type = /obj/structure/closet/crate/large @@ -281,8 +278,7 @@ weapons /obj/item/mecha_parts/mecha_equipment/weapon/energy/mecha_kineticgun ) -/* -/datum/supply_pack/mech/weapon/carbine +/*/datum/supply_pack/mech/weapon/carbine name = "Downpour kit" desc = "A rapid fire energy carbine designed for combat usage." cost = 1000 @@ -296,8 +292,7 @@ weapons cost = 2000 contains = list( /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser - ) -*/ + )*/ /datum/supply_pack/mech/weapon/ion_cannon name = "MK4 ion cannon kit" @@ -368,4 +363,4 @@ ammo faction = /datum/faction/nt faction_discount = 20 -[/CELADON-DELETE] */ + diff --git a/code/modules/cargo/packs/medical.dm b/code/modules/cargo/packs/medical.dm index e40356641cf6..315cfabefb62 100644 --- a/code/modules/cargo/packs/medical.dm +++ b/code/modules/cargo/packs/medical.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/medical category = "Medical" crate_type = /obj/structure/closet/crate/medical @@ -318,6 +315,3 @@ contains = list( /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/chitosan) crate_name = "chitosan vial crate" - - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/modsuits.dm b/code/modules/cargo/packs/modsuits.dm index 3d4b6b778504..ac32d3c6719d 100644 --- a/code/modules/cargo/packs/modsuits.dm +++ b/code/modules/cargo/packs/modsuits.dm @@ -1,7 +1,4 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /// commented out until we figure out what we're doing with modsuits /* /datum/supply_pack/modsuits @@ -234,4 +231,6 @@ */ -[/CELADON-DELETE] */ + + + diff --git a/code/modules/cargo/packs/sec_supply.dm b/code/modules/cargo/packs/sec_supply.dm index e01a923149c2..d910f0beac25 100644 --- a/code/modules/cargo/packs/sec_supply.dm +++ b/code/modules/cargo/packs/sec_supply.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/sec_supply category = "Security Supplies" crate_type = /obj/structure/closet/crate/secure/gear @@ -121,18 +118,18 @@ Misc. weapons / protection */ -/datum/supply_pack/sec_supply/riotshields - name = "Ballistic Shield Crate" - desc = "Contains a ballistic shield, effective at holding back hostile fauna, xenofauna, or large crowds." - cost = 1000 - contains = list(/obj/item/shield/riot) +/datum/supply_pack/sec_supply/heavyshields + name = "Heavy Ballistic Shield Crate" + desc = "Contains a heavy ballistic shield, very effective at protecting the user from light arms fire. Can struggle against stronger firepower." + cost = 1200 + contains = list(/obj/item/shield/heavy) crate_name = "riot shield crate" -/datum/supply_pack/sec_supply/teleriotshields +/datum/supply_pack/sec_supply/telescopicshields name = "Telescopic Riot Shield Crate" - desc = "Contains a telescopic riot shield, effective at holding back hostile fauna, xenofauna, or large crowds in tight spaces." + desc = "Contains a telescopic riot shield, effective at protecting the user in close quarters combat. Assuming a gun isn't involved of course." cost = 750 - contains = list(/obj/item/shield/riot/tele) + contains = list(/obj/item/shield/tele) crate_name = "riot shield crate" /datum/supply_pack/sec_supply/survknives @@ -313,5 +310,3 @@ faction = /datum/faction/pgf faction_discount = 0 faction_locked = TRUE - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/ship_hardware.dm b/code/modules/cargo/packs/ship_hardware.dm new file mode 100644 index 000000000000..2c1a466a292b --- /dev/null +++ b/code/modules/cargo/packs/ship_hardware.dm @@ -0,0 +1,90 @@ +/datum/supply_pack/ship_hardware + category = "Ship Hardware" + crate_type = /obj/structure/closet/crate/engineering + +/* + Miscellaneous +*/ + +/datum/supply_pack/ship_hardware/gravgen + name = "Ship-Portable Gravity Generator Crate" + desc = "For those tired of their tools floating away from them. Contains a single gravity generator." + cost = 2000 + contains = list(/obj/machinery/power/ship_gravity/unanchored) + crate_name = "gravity generator crate" + crate_type = /obj/structure/closet/crate/engineering/electrical + no_bundle = TRUE + +/datum/supply_pack/ship_hardware/breach_shield_gen + name = "Anti-breach Shield Projector Crate" + desc = "Hull breaches again? Say no more with the Nanotrasen Anti-Breach Shield Projector! Uses forcefield technology to keep the air in, and the space out. Contains one shield projector." + cost = 1250 + contains = list(/obj/machinery/shieldgen) + crate_name = "anti-breach shield projector crate" + crate_type = /obj/structure/closet/crate/secure/plasma + no_bundle = TRUE + +/datum/supply_pack/ship_hardware/holofield_generator + name = "Holofield Generator Crate" + desc = "Contains the electronics you need to set up a new (or replacement) holofield! Buttons not included." + cost = 1000 + contains = list(/obj/item/circuitboard/machine/shieldwallgen/atmos, + /obj/item/circuitboard/machine/shieldwallgen/atmos) + crate_name = "holofield generator crate" + crate_type = /obj/structure/closet/crate/engineering + +/* + Thrusters +*/ + +/datum/supply_pack/ship_hardware/ion_thruster + name = "Ion Thruster Crate" + desc = "A crate containing an ion thruster and its precharger's electronics. For when you need a little extra thrust." + cost = 1500 + contains = list(/obj/item/circuitboard/machine/shuttle/smes, + /obj/item/circuitboard/machine/shuttle/engine/electric) + crate_name = "ion thruster crate" + crate_type = /obj/structure/closet/crate/engineering + +/datum/supply_pack/ship_hardware/plasma_thruster + name = "Plasma Thruster Crate" + desc = "A crate containing a plasma thruster and its heater's electronics. For when you need a lot of extra thrust." + cost = 1500 + contains = list(/obj/item/circuitboard/machine/shuttle/heater, + /obj/item/circuitboard/machine/shuttle/engine/plasma) + crate_name = "plasma thruster crate" + crate_type = /obj/structure/closet/crate/engineering + +/datum/supply_pack/ship_hardware/combustion_thruster + name = "Combustion Thruster Crate" + desc = "A crate containing a combustion thruster and its heater's electronics. For when you need complicated thrust." + cost = 2000 + contains = list(/obj/item/circuitboard/machine/shuttle/fire_heater, + /obj/item/circuitboard/machine/shuttle/engine/fire) + crate_name = "combustion thruster crate" + crate_type = /obj/structure/closet/crate/engineering + +/* + Military hardware +*/ + +/datum/supply_pack/ship_hardware/cloaking_device + name = "Ship Cloaking System" + desc = "A crate containing a cloaking system for hiding a ship from long-range scanners. Very high power consumption." + cost = 10000 + contains = list(/obj/item/circuitboard/machine/cloak) + crate_name = "cloaking system crate" + crate_type = /obj/structure/closet/crate/engineering + faction = /datum/faction/syndicate/hardliners + faction_discount = 0.3 + +/datum/supply_pack/ship_hardware/advanced_cloaking_device + name = "BFRD-3A Advanced Cloaking System" + desc = "A crate containing an advanced cloaking system capable of partially shifting an entire ship into bluespace." + cost = 6000 + contains = list(/obj/item/circuitboard/machine/cloak) + crate_name = "advanced cloaking system crate" + crate_type = /obj/structure/closet/crate/engineering + // currently unobtainable until someone adds a ship for zohil + faction = /datum/faction/zohil + faction_locked = TRUE diff --git a/code/modules/cargo/packs/spacesuits.dm b/code/modules/cargo/packs/spacesuits.dm index b9adcec6b202..b24856e201d4 100644 --- a/code/modules/cargo/packs/spacesuits.dm +++ b/code/modules/cargo/packs/spacesuits.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/spacesuits category = "Spacesuits" crate_type = /obj/structure/closet/crate/secure @@ -435,6 +432,3 @@ faction = /datum/faction/srm faction_discount = 0 faction_locked = TRUE - - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/telecomms.dm b/code/modules/cargo/packs/telecomms.dm index c5c0c3e2cf7c..662cfdd3b235 100644 --- a/code/modules/cargo/packs/telecomms.dm +++ b/code/modules/cargo/packs/telecomms.dm @@ -1,4 +1,3 @@ -/* /datum/supply_pack/tcomms category = "Telecommunications" crate_type = /obj/structure/closet/crate/secure/engineering @@ -163,4 +162,3 @@ contains = list( /obj/item/circuitboard/computer/message_monitor ) -*/ diff --git a/code/modules/cargo/packs/tools.dm b/code/modules/cargo/packs/tools.dm index 79a382aebd11..b2481b64071c 100644 --- a/code/modules/cargo/packs/tools.dm +++ b/code/modules/cargo/packs/tools.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/tools category = "Tools & Tanks" crate_type = /obj/structure/closet/crate/engineering @@ -167,7 +164,7 @@ name = "Plasmacutter Crate" desc = "Contains a plasmacutter, capable of rapidly breaking down hull." cost = 2500 - contains = list(/obj/item/gun/energy/plasmacutter) + contains = list(/obj/item/plasmacutter) crate_name = "plasmacutter crate" /datum/supply_pack/tools/sledgehammer @@ -230,6 +227,4 @@ ) crate_name = "foam tank crate" crate_type = /obj/structure/closet/crate/large - no_bundle = TRUE - -[/CELADON-DELETE] */ \ No newline at end of file + no_bundle = TRUE diff --git a/code/modules/cargo/packs/trickwine.dm b/code/modules/cargo/packs/trickwine.dm index 2aa908be4f53..5cffed07d948 100644 --- a/code/modules/cargo/packs/trickwine.dm +++ b/code/modules/cargo/packs/trickwine.dm @@ -1,7 +1,4 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - -s/datum/supply_pack/food/trickwine +/datum/supply_pack/food/trickwine desc = "Trickwines shipped directly from illestern factories. A good replacement for underequipped Roumain ships." faction = /datum/faction/srm faction_discount = 0 @@ -37,5 +34,3 @@ s/datum/supply_pack/food/trickwine name = "Bottle of vintage Prismwine" cost = 500 contains = list(/obj/item/reagent_containers/food/drinks/breakawayflask/vintage/prismwine) - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/vendor_refill.dm b/code/modules/cargo/packs/vendor_refill.dm index b22176a7c4ce..363b01cd56d7 100644 --- a/code/modules/cargo/packs/vendor_refill.dm +++ b/code/modules/cargo/packs/vendor_refill.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - /datum/supply_pack/vendor_refill category = "Vendor Refills" crate_type = /obj/structure/closet/crate @@ -47,6 +44,3 @@ cost = 1000 contains = list(/obj/item/vending_refill/games) crate_name = "games supply crate" - - -[/CELADON-DELETE] */ diff --git a/code/modules/cargo/packs/weapon_attachments.dm b/code/modules/cargo/packs/weapon_attachments.dm index 1c2588750905..3c8e1d844ff7 100644 --- a/code/modules/cargo/packs/weapon_attachments.dm +++ b/code/modules/cargo/packs/weapon_attachments.dm @@ -1,6 +1,3 @@ -/* [CELADON-DELETE] - Убираем инициализацию офовских предметов. - Разносим ресурсы по разным фракциям: "mod_celadon\outpost_console\code\supply_pack" - // the ever continuing guncode growth. if only we had this passion for engineering. /* Attachments */ @@ -110,6 +107,3 @@ cost = 200 contains = list(/obj/item/attachment/gun/flare) crate_name = "underbarrel flare gun crate" - - -[/CELADON-DELETE] */ diff --git a/code/modules/client/loadout/loadout_accessories.dm b/code/modules/client/loadout/loadout_accessories.dm index e3a1a1577adb..1e0cda0e6caf 100644 --- a/code/modules/client/loadout/loadout_accessories.dm +++ b/code/modules/client/loadout/loadout_accessories.dm @@ -76,6 +76,7 @@ //Gloves /* - [CELADON-DELETE] - Перенесено в mod_celadon\loadout\code\gloves.dm + /datum/gear/accessory/gloves subtype_path = /datum/gear/accessory/gloves slot = ITEM_SLOT_GLOVES @@ -112,7 +113,8 @@ display_name = "gloves, evening" description = "Excessively fancy elbow-length gloves." path = /obj/item/clothing/gloves/color/evening - - [/CELADON-DELETE]*/ + +- [/CELADON-DELETE]*/ //Bone /datum/gear/accessory/fangnecklace diff --git a/code/modules/client/loadout/loadout_general.dm b/code/modules/client/loadout/loadout_general.dm index 45953a875410..38a60b4f11ee 100644 --- a/code/modules/client/loadout/loadout_general.dm +++ b/code/modules/client/loadout/loadout_general.dm @@ -117,73 +117,72 @@ display_name = "cane" path = /obj/item/cane -// [CELADON-REMOVE] - Перенесено в отдельную категорию: mod_celadon\loadout\code\plushes.dm -// /datum/gear/lizard -// display_name = "toy, lizard plushie" -// path = /obj/item/toy/plush/lizardplushie - -// /datum/gear/snake -// display_name = "toy, snake plushie" -// path = /obj/item/toy/plush/snakeplushie - -// /datum/gear/moth -// display_name = "toy, moth plushie" -// path = /obj/item/toy/plush/moth +/* [CELADON-REMOVE] - Перенесено в отдельную категорию: mod_celadon\loadout\code\plushes.dm +/datum/gear/lizard + display_name = "toy, lizard plushie" + path = /obj/item/toy/plush/lizardplushie + +/datum/gear/snake + display_name = "toy, snake plushie" + path = /obj/item/toy/plush/snakeplushie + /datum/gear/moth display_name = "toy, moth plushie box" path = /obj/item/choice_beacon/mothplushies -// /datum/gear/bee -// display_name = "toy, bee plushie" -// path = /obj/item/toy/plush/beeplushie +/datum/gear/bee + display_name = "toy, bee plushie" + path = /obj/item/toy/plush/beeplushie -// /datum/gear/spider -// display_name = "toy, spider plushie" -// path = /obj/item/toy/plush/spider +/datum/gear/spider + display_name = "toy, spider plushie" + path = /obj/item/toy/plush/spider -// /datum/gear/flushed -// display_name = "toy, flushed plushie" -// path = /obj/item/toy/plush/flushed +/datum/gear/flushed + display_name = "toy, flushed plushie" + path = /obj/item/toy/plush/flushed -// /datum/gear/blahaj -// display_name = "toy, Solarian Marine Society mascot plushie" -// path = /obj/item/toy/plush/blahaj +/datum/gear/blahaj + display_name = "toy, Solarian Marine Society mascot plushie" + path = /obj/item/toy/plush/blahaj -// /datum/gear/hornet -// display_name = "toy, marketable hornet plushie" -// path = /obj/item/toy/plush/hornet +/datum/gear/hornet + display_name = "toy, marketable hornet plushie" + path = /obj/item/toy/plush/hornet -// /datum/gear/gayhornet -// display_name = "toy, gay hornet plushie" -// path = /obj/item/toy/plush/hornet/gay -// description = "Hornet says lesbian rights." +/datum/gear/gayhornet + display_name = "toy, gay hornet plushie" + path = /obj/item/toy/plush/hornet/gay + description = "Hornet says lesbian rights." -// /datum/gear/knight -// display_name = "toy, marketable knight plushie" -// path = /obj/item/toy/plush/knight +/datum/gear/knight + display_name = "toy, marketable knight plushie" + path = /obj/item/toy/plush/knight -// /datum/gear/ri -// display_name = "toy, rilena ri plushie" -// path = /obj/item/toy/plush/rilena +/datum/gear/ri + display_name = "toy, rilena ri plushie" + path = /obj/item/toy/plush/rilena -// /datum/gear/tali -// display_name = "toy, rilena tali plushie" -// path = /obj/item/toy/plush/tali +/datum/gear/tali + display_name = "toy, rilena tali plushie" + path = /obj/item/toy/plush/tali -// /datum/gear/amongus -// display_name = "toy, suspicious pill plushie" -// path = /obj/item/toy/plush/among -// [/CELADON-REMOVE] +/datum/gear/amongus + display_name = "toy, suspicious pill plushie" + path = /obj/item/toy/plush/among +[/CELADON-REMOVE] */ /datum/gear/dice_bag display_name = "toy, bag of die" path = /obj/item/storage/pill_bottle/dice +/* CELADON EDIT START /datum/gear/amongus/New() . = ..() var/obj/item/toy/plush/among/temp = new path() description = "[capitalize(pick(temp.among_colors))] sus." qdel(temp) +CELADON EDIT END */ /datum/gear/hairspray display_name = "hair dye" diff --git a/code/modules/client/loadout/loadout_hat.dm b/code/modules/client/loadout/loadout_hat.dm index 66f4c280618c..01f9e07678d7 100644 --- a/code/modules/client/loadout/loadout_hat.dm +++ b/code/modules/client/loadout/loadout_hat.dm @@ -23,6 +23,16 @@ //Motorcycle Helmets +/datum/gear/hat/motorcycle + display_name = "motorcycle helmet, recolorable" + path = /obj/item/clothing/head/motorcycle + +/datum/gear/hat/motorcycle_cat + display_name = "motorcycle helmet (ears), recolorable" + path = /obj/item/clothing/head/motorcycle/cat + +//Motorcycle Helmets + /datum/gear/hat/motorcycle display_name = "motorcycle helmet, recolorable" path = /obj/item/clothing/head/motorcycle @@ -75,10 +85,6 @@ "Curator" = /obj/item/clothing/head/beret/service, "Janitor" = /obj/item/clothing/head/beret/service, "Lawyer" = /obj/item/clothing/head/beret/service, -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - "Mime" = /obj/item/clothing/head/beret, - "Clown" = /obj/item/clothing/head/beret/puce -// [/CELADON-ADD] ) /datum/gear/hat/beret/engineering/hazard @@ -109,6 +115,35 @@ path = /obj/item/clothing/head/soft/utility_navy +//Beanies + +/datum/gear/hat/beanie + display_name = "beanie, recolorable" + path = /obj/item/clothing/head/beanie + +//Soft caps + +/datum/gear/hat/softcap + display_name = "cap, recolorable" + path = /obj/item/clothing/head/soft + +/datum/gear/hat/utility_black + display_name = "utility cover, black" + path = /obj/item/clothing/head/soft/utility_black + +/datum/gear/hat/utility_olive + display_name = "utility cover, olive" + path = /obj/item/clothing/head/soft/utility_olive + +/datum/gear/hat/utility_beige + display_name = "utility cover, beige" + path = /obj/item/clothing/head/soft/utility_beige + +/datum/gear/hat/utility_navy + display_name = "utility cover, navy" + path = /obj/item/clothing/head/soft/utility_navy + + //Beanies /datum/gear/hat/beanie diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 6ef2b74a5641..aea289e9b6fc 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -66,6 +66,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/slot_randomized //keeps track of round-to-round randomization of the character slot, prevents overwriting var/real_name //our character's name var/gender = MALE //gender of character (well duh) + var/pronouns = "He" //pronouns of character var/age = 30 //age of character var/underwear = "Nude" //Type of underwear var/underwear_color = "000" //Greyscale color of underwear @@ -166,6 +167,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) "Other" = "plural", "None" = "neuter" ) + var/list/friendlyPronouns = list( + "He/Him" = "He", + "She/Her" = "She", + "They/Them" = "They", + "It/Its" = "It" + ) var/list/prosthetic_limbs = list( BODY_ZONE_HEAD = PROSTHETIC_NORMAL, BODY_ZONE_CHEST = PROSTHETIC_NORMAL, @@ -369,7 +376,16 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(randomise[RANDOM_BODY] || randomise[RANDOM_BODY_ANTAG]) //doesn't work unless random body dat += "Always Random Gender: [(randomise[RANDOM_GENDER]) ? "Yes" : "No"]" dat += "When Antagonist: [(randomise[RANDOM_GENDER_ANTAG]) ? "Yes" : "No"]" - + var/dispPronouns + if(pronouns == "He") + dispPronouns = "He/Him" + else if(pronouns == "She") + dispPronouns = "She/Her" + else if(pronouns == "It") + dispPronouns = "It/Its" + else + dispPronouns = "They/Them" + dat += "
    Pronouns: [dispPronouns]" dat += "
    Age: [age]" if(randomise[RANDOM_BODY] || randomise[RANDOM_BODY_ANTAG]) //doesn't work unless random body dat += "Always Random Age: [(randomise[RANDOM_AGE]) ? "Yes" : "No"]" @@ -422,7 +438,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
    Outerwear Style:
    [exowear]" dat += "
    Wallet Style:
    [wallet]" // [CELADON-ADD] - CELADON_WALLETS - if(1) //Character Appearance if(path) var/savefile/S = new /savefile(path) @@ -1146,10 +1161,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" mutant_category = 0 - if(generic_adjective) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - // begin generic adjective if(!mutant_category) dat += APPEARANCE_CATEGORY_COLUMN @@ -1290,8 +1301,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) // [/CELADON-ADD] for(var/gear_name in LC.gear) var/datum/gear/G = LC.gear[gear_name] - var/is_equipped = (G.display_name in equipped_gear) // [CELADON-EDIT] - CELADON_QOL_LOADOUT + var/is_equipped = (G.display_name in equipped_gear) // dat += "" // // Колонка с предметом @@ -1355,9 +1366,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "
    " dat += "" dat += "" - - dat += "" // [/CELADON-EDIT] + dat += "" if (3) // Game Preferences dat += "
    " @@ -1492,7 +1502,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Play Lobby Music: [(toggles & SOUND_LOBBY) ? "Enabled":"Disabled"]
    " dat += "Play End of Round Sounds: [(toggles & SOUND_ENDOFROUND) ? "Enabled":"Disabled"]
    " dat += "See Pull Requests: [(chat_toggles & CHAT_PULLR) ? "Enabled":"Disabled"]
    " - dat += "Darkened Flashes: (replaces flashes with a black screen) [darkened_flash ? "Enabled":"Disabled"]
    " + dat += "Darkened Flashes: (replaces flashes with a black screen) [darkened_flash ? "Enabled":"Disabled"]
    " // CELADON EDIT dat += "TGUI Large Buttons: [(large_tgui_buttons) ? "Enabled":"Disabled"]
    " dat += "Swap TGUI Buttons: [(swapped_tgui_buttons) ? "Enabled":"Disabled"]
    " dat += "TGUI input toggles: [(tgui_input) ? "Enabled":"Disabled"]
    " @@ -2652,7 +2662,10 @@ GLOBAL_LIST_EMPTY(preferences_datums) socks = random_socks() facial_hairstyle = random_facial_hairstyle(gender) hairstyle = random_hairstyle(gender) - + if("pronouns") + var/pickedPronouns = input(user, "Choose your pronouns.", "Character Preference", pronouns) as null|anything in friendlyPronouns + if(pickedPronouns) + pronouns = friendlyPronouns[pickedPronouns] if("fbp") fbp = !fbp @@ -2662,14 +2675,21 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/list/limb_options = list(PROSTHETIC_NORMAL, PROSTHETIC_ROBOTIC) if(limb != BODY_ZONE_CHEST && limb != BODY_ZONE_HEAD) limb_options.Add(PROSTHETIC_AMPUTATED) // starting without a head or chest causes instant death, must be disallowed - var/datum/sprite_accessory/ipc_chassis/limb_style + var/obj/item/bodypart/part_candidate - for(var/chassis in GLOB.ipc_chassis_list) - limb_style = GLOB.ipc_chassis_list[chassis] - part_candidate = limb_style.chassis_bodyparts[limb] + var/datum/sprite_accessory/body/limb_style + for(var/body in GLOB.alternative_body_list) + limb_style = GLOB.alternative_body_list[body] + part_candidate = limb_style.replacement_bodyparts[limb] + if(isnull(part_candidate)) + continue + if(length(limb_style.allowed_species)) + if(!(pref_species.type in limb_style.allowed_species)) + continue if(!(pref_species.bodytype & initial(part_candidate.bodytype))) // don't allow vox and kepori to select limbs that aren't compatible continue - limb_options.Add(chassis) + limb_options.Add(body) + var/status = input(user, "You are modifying your [parse_zone(limb)], what should it be changed to?", "Character Preference", prosthetic_limbs[limb]) in limb_options if(status) prosthetic_limbs[limb] = status @@ -2990,6 +3010,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) character.name = character.real_name character.gender = gender + character.pronouns = pronouns character.age = clamp(age, pref_species.species_age_min, pref_species.species_age_max) character.eye_color = eye_color var/obj/item/organ/eyes/organ_eyes = character.getorgan(/obj/item/organ/eyes) @@ -3064,8 +3085,8 @@ GLOBAL_LIST_EMPTY(preferences_datums) qdel(old_part) character.regenerate_limb(pros_limb, robotic = TRUE) else - var/datum/sprite_accessory/ipc_chassis/limb_style = GLOB.ipc_chassis_list[prosthetic_limbs[pros_limb]] - var/obj/item/bodypart/new_part = limb_style.chassis_bodyparts[pros_limb] + var/datum/sprite_accessory/body/limb_style = GLOB.alternative_body_list[prosthetic_limbs[pros_limb]] + var/obj/item/bodypart/new_part = limb_style.replacement_bodyparts[pros_limb] new_part = new new_part() if(old_part) old_part.drop_limb(TRUE) @@ -3143,12 +3164,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) return pick(GLOB.ai_names) if("cyborg") return DEFAULT_CYBORG_NAME - // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - if("clown") - return pick(GLOB.clown_names) - if("mime") - return pick(GLOB.mime_names) - // [/CELADON-ADD] return random_unique_name() /datum/preferences/proc/ask_for_custom_name(mob/user,name_id) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index a9a57ce037f3..7e3d31b0af83 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 42 +#define SAVEFILE_VERSION_MAX 43 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -113,6 +113,17 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car var/body_size READ_FILE(S["body_size"], body_size) height_filter = body_size + if(current_version < 43) + var/gender + READ_FILE(S["gender"], gender) + if(gender == MALE) + pronouns = "He" + else if(gender == FEMALE) + pronouns = "She" + else if(gender == NEUTER) + pronouns = "It" + else + pronouns = "They" /// checks through keybindings for outdated unbound keys and updates them @@ -425,6 +436,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car //Character READ_FILE(S["real_name"], real_name) READ_FILE(S["gender"], gender) + READ_FILE(S["pronouns"], pronouns) READ_FILE(S["age"], age) READ_FILE(S["hair_color"], hair_color) READ_FILE(S["facial_hair_color"], facial_hair_color) @@ -578,6 +590,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car //Sanitize real_name = reject_bad_name(real_name) gender = sanitize_gender(gender) + pronouns = sanitize_pronouns(pronouns) if(!real_name) real_name = random_unique_name(gender) @@ -734,6 +747,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car //Character WRITE_FILE(S["real_name"] , real_name) WRITE_FILE(S["gender"] , gender) + WRITE_FILE(S["pronouns"] , pronouns) WRITE_FILE(S["age"] , age) WRITE_FILE(S["hair_color"] , hair_color) WRITE_FILE(S["facial_hair_color"] , facial_hair_color) diff --git a/code/modules/client/verbs/ooc.dm b/code/modules/client/verbs/ooc.dm index a35984809027..e0b0dd9389bd 100644 --- a/code/modules/client/verbs/ooc.dm +++ b/code/modules/client/verbs/ooc.dm @@ -84,8 +84,10 @@ GLOBAL_VAR_INIT(normal_ooc_colour, "#002eb8") else to_chat(C, span_adminobserverooc("[span_prefix("OOC:")] [keyname][holder.fakekey ? "/([holder.fakekey])" : ""]: [msg]"), MESSAGE_TYPE_OOC) else + // CELADON EDIT START if(COLOR_OOC) to_chat(C, span_oocplain("[span_prefix("OOC:")] [holder.fakekey ? holder.fakekey : key]: [msg]"), MESSAGE_TYPE_OOC) + // CELADON EDIT END else to_chat(C, span_ooc("[span_prefix("OOC:")] [holder.fakekey ? holder.fakekey : key]: [msg]"), MESSAGE_TYPE_OOC) @@ -94,7 +96,7 @@ GLOBAL_VAR_INIT(normal_ooc_colour, "#002eb8") if(check_mentor()) to_chat(C, span_oocplain("[span_prefix("OOC:")] [keyname]: [msg]"), MESSAGE_TYPE_OOC) else - to_chat(C, span_oocplain("[span_prefix("OOC:")] [keyname]: [msg]"), MESSAGE_TYPE_OOC) + to_chat(C, span_oocplain("[span_prefix("OOC:")] [keyname]: [msg]"), MESSAGE_TYPE_OOC) // CELADON EDIT else to_chat(C, span_ooc("[span_prefix("OOC:")] [keyname]: [msg]"), MESSAGE_TYPE_OOC) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 11acf2047eac..9b657746860b 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -92,15 +92,11 @@ /obj/item/clothing/attack(mob/M, mob/user, def_zone) if(user.a_intent != INTENT_HARM && moth_edible && ismoth(M)) // [CELADON-EDIT] - FIXES_MOTH_EATING_CLOTHING - Убираем создание временных новых объектов еды, обращаемся напрямую к объектам еды - // var/obj/item/food/clothing/clothing_as_food = new - // clothing_as_food.name = name - // if(clothing_as_food.attack(M, user, def_zone)) - // take_damage(15, sound_effect=FALSE) - // qdel(clothing_as_food) // ORIGINAL if(M == user) to_chat(user, span_notice("You start eating [src]...")) user.visible_message(span_notice("[user] eats [src]."), span_notice("You eat [src]. It tastes like dust and lint.")) user.reagents.add_reagent(/datum/reagent/consumable/nutriment, 1) + // CELADON EDIT END take_damage(15, sound_effect=FALSE) playsound(M.loc,'sound/items/eatfood.ogg', rand(10,50), TRUE) else @@ -135,9 +131,10 @@ atom_integrity = max_integrity to_chat(user, span_notice("You fix the damage on [src] with [cloth].")) return TRUE - + // CELADON EDIT START if(istype(tool, /obj/item/toy/crayon/spraycan) && user.a_intent == INTENT_HARM) // [CELADON-ADD] - Allows coloring clothes with spray can on harm intent - return // [/CELADON-ADD] + return + // CELADON EDIT END return ..() diff --git a/code/modules/clothing/factions/frontiersmen.dm b/code/modules/clothing/factions/frontiersmen.dm index 3544b2360d1e..cbdcfce52d35 100644 --- a/code/modules/clothing/factions/frontiersmen.dm +++ b/code/modules/clothing/factions/frontiersmen.dm @@ -218,7 +218,7 @@ min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT resistance_flags = FIRE_PROOF can_flashlight = TRUE - armor = list("melee" = 15, "bullet" = 60, "laser" = 10, "energy" = 10, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50, "wound" = 20) // [CELADON-EDIT] - CELADON_BALANCE + armor = list("melee" = 15, "bullet" = 60, "laser" = 10, "energy" = 10, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) /obj/item/clothing/head/helmet/frontier name = "frontiersmen reinforced helmet" diff --git a/code/modules/clothing/factions/hardliners.dm b/code/modules/clothing/factions/hardliners.dm index 46b87ff4ee64..cad0b81ea70b 100644 --- a/code/modules/clothing/factions/hardliners.dm +++ b/code/modules/clothing/factions/hardliners.dm @@ -104,7 +104,7 @@ icon_state = "hl_sergeant" item_state = "hl_sergeant" blood_overlay_type = "coat" - armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50, "wound" = 10) // [CELADON-EDIT] - CELADON_BALANCE + armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) /obj/item/clothing/suit/toggle/armor/vest/hardliners name = "hardliners captain coat" diff --git a/code/modules/clothing/factions/inteq.dm b/code/modules/clothing/factions/inteq.dm index a884f1b06069..85f696905b05 100644 --- a/code/modules/clothing/factions/inteq.dm +++ b/code/modules/clothing/factions/inteq.dm @@ -115,9 +115,7 @@ /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, - // [CELADON-REMOVE] - CELADON_BALANCE - Убираем телескопички - // /obj/item/melee/classic_baton/telescopic, - // [/CELADON-REMOVE] + /obj/item/melee/classic_baton/telescopic, /obj/item/soap, /obj/item/sensor_device, /obj/item/tank/internals/emergency_oxygen, @@ -200,10 +198,6 @@ item_state = "hardsuit-inteq" hardsuit_type = "inteq" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/inteq - // [CELADON-EDIT] - TAJARA, CELADON_RIOL - // supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION // CELADON-EDIT - ORIGINAL - supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION - // [/CELADON-EDIT] armor = list("melee" = 40, "bullet" = 35, "laser" = 30, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75, "wound" = 20) supports_variations = DIGITIGRADE_VARIATION @@ -253,10 +247,7 @@ icon_state = "hardsuit1-pointman" hardsuit_type = "pointman" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/inteq - // [CELADON-EDIT] - TAJARA, CELADON_RIOL - // supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION // CELADON-EDIT - ORIGINAL - supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | KEPORI_VARIATION | TAJARA_VARIATION | RIOL_VARIATION - // [/CELADON-EDIT] + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | KEPORI_VARIATION /obj/item/clothing/head/helmet/space/hardsuit/syndi/inteq @@ -487,14 +478,6 @@ supports_variations = KEPORI_VARIATION | VOX_VARIATION vox_override_icon = 'icons/mob/clothing/faction/inteq/vox.dmi' kepori_override_icon = 'icons/mob/clothing/faction/inteq/kepori.dmi' -// [CELADON-ADD] - SFX-Die - unique_death = list( - 'mod_celadon/_storage_sounds/sound/items/gasmask/die1.ogg', - 'mod_celadon/_storage_sounds/sound/items/gasmask/die2.ogg', - 'mod_celadon/_storage_sounds/sound/items/gasmask/die3.ogg', - 'mod_celadon/_storage_sounds/sound/items/gasmask/die4.ogg', - ) -// [/CELADON-ADD] /obj/item/clothing/mask/balaclava/inteq name = "Inteq combat balaclava" diff --git a/code/modules/clothing/factions/nanotrasen.dm b/code/modules/clothing/factions/nanotrasen.dm index 87fdd28c7c62..7f3a8cc1a7da 100644 --- a/code/modules/clothing/factions/nanotrasen.dm +++ b/code/modules/clothing/factions/nanotrasen.dm @@ -280,7 +280,6 @@ // Hats // -// [CELADON-EDIT] - CELADON_BALANCE - броня /obj/item/clothing/head/nanotrasen переопределена в mod_celadon\balance\code\items.dm /obj/item/clothing/head/nanotrasen name = "blue flatcap" desc = "A simple blue flat cap with a Nanotrasen logo on the side. Not standard uniform, but occasionally worn by Nanotrasen office workers." @@ -457,4 +456,3 @@ vox_override_icon = 'icons/mob/clothing/faction/nanotrasen/vox.dmi' resistance_flags = FIRE_PROOF | ACID_PROOF supports_variations = KEPORI_VARIATION | VOX_VARIATION - unique_death = list('mod_celadon/_storage_sounds/sound/items/gasmask/sec_die.ogg') // [CELADON-ADD] - SFX-Die diff --git a/code/modules/clothing/factions/ngr.dm b/code/modules/clothing/factions/ngr.dm index 86e302c2dc01..98b192d6e397 100644 --- a/code/modules/clothing/factions/ngr.dm +++ b/code/modules/clothing/factions/ngr.dm @@ -246,7 +246,7 @@ desc = "A well-armored helmet utilized by the New Gorlex Republic's 2nd Battlegroup, far better at protecting one's head than the softer caps." icon = 'icons/obj/clothing/faction/ngr/head.dmi' mob_overlay_icon = 'icons/mob/clothing/faction/ngr/head.dmi' - armor = list("melee" = 40, "bullet" = 60, "laser" = 35, "energy" = 35, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50, "wound" = 20) // [CELADON-EDIT] - CELADON_BALANCE - комменты дальше от оффов // The guys who specialize in ballistics would probably have better bullet armor. Maybe. + armor = list("melee" = 40, "bullet" = 60, "laser" = 35, "energy" = 35, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) // The guys who specialize in ballistics would probably have better bullet armor. Maybe. icon_state = "ngr_x11" item_state = "ngr_x11" can_flashlight = TRUE diff --git a/code/modules/clothing/factions/ramzi.dm b/code/modules/clothing/factions/ramzi.dm index 94661b83ff0c..4bf64f1dab2e 100644 --- a/code/modules/clothing/factions/ramzi.dm +++ b/code/modules/clothing/factions/ramzi.dm @@ -119,12 +119,9 @@ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/ramzi jetpack = null armor = list("melee" = 35, "bullet" = 40, "laser" = 20,"energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75, "wound" = 20) -// [CELADON-EDIT] - TAJARA, CELADON_RIOL, BALANCE - //slowdown = 0.7 // [CELADON-REMOVE] - BALANCE + slowdown = 0.7 jetpack = null -// supports_variations = DIGITIGRADE_VARIATION | KEPORI_VARIATION | VOX_VARIATION // [CELADON-EDIT] - TAJARA, CELADON_RIOL - supports_variations = DIGITIGRADE_VARIATION | KEPORI_VARIATION | VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION -// [/CELADON-EDIT] + supports_variations = DIGITIGRADE_VARIATION | KEPORI_VARIATION | VOX_VARIATION /obj/item/clothing/head/helmet/space/hardsuit/stealth/ramzi name = "INF-RC Tactical Hardsuit helmet" diff --git a/code/modules/clothing/factions/solgov.dm b/code/modules/clothing/factions/solgov.dm index 549919321fe7..bd7bf86a8bdd 100644 --- a/code/modules/clothing/factions/solgov.dm +++ b/code/modules/clothing/factions/solgov.dm @@ -148,10 +148,7 @@ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/solgov allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) slowdown = 0.2 - // [CELADON-EDIT] - TAJARA, CELADON_RIOL - // supports_variations = DIGITIGRADE_VARIATION // CELADON-EDIT - ORIGINAL - supports_variations = DIGITIGRADE_VARIATION | TAJARA_VARIATION | RIOL_VARIATION - // [/CELADON-EDIT] + supports_variations = DIGITIGRADE_VARIATION /obj/item/clothing/suit/hazardvest/solgov name = "SolGov hazard vest" @@ -241,7 +238,7 @@ mob_overlay_icon = 'icons/mob/clothing/faction/solgov/suits.dmi' icon_state = "armor_solgov_trenchcoat" item_state = "trenchcoat_solgov" - armor = list("melee" = 25, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0, "wound" = 10) // [CELADON-EDIT] - CELADON_BALANCE + armor = list("melee" = 25, "bullet" = 10, "laser" = 25, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) cold_protection = CHEST|LEGS|ARMS heat_protection = CHEST|LEGS|ARMS supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON @@ -288,7 +285,6 @@ item_state = "sonnensoldner_hat" worn_y_offset = 4 dog_fashion = null - armor = list("melee" = 35, "bullet" = 35, "laser" = 35,"energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50, "wound" = 20) //[CELADON-ADD] - CELADON_BALANCE /obj/item/clothing/head/solgov/captain name = "\improper SolGov bicorne hat" @@ -299,7 +295,6 @@ item_state = "solgov_bicorne" worn_y_offset = 2 dog_fashion = null - armor = list("melee" = 35, "bullet" = 35, "laser" = 35,"energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50, "wound" = 20) //[CELADON-ADD] - CELADON_BALANCE /obj/item/clothing/head/beret/solgov name = "\improper SolGov beret" diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index e0e33649d58c..ca6521684fdc 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -131,9 +131,12 @@ darkness_view = 8 flash_protect = FLASH_PROTECTION_SENSITIVE lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE - glass_colour_type = /datum/client_colour/glass_colour/green supports_variations = VOX_VARIATION flags_cover = GLASSESCOVERSEYES | SEALS_EYES + unique_reskin = list( + "mono-eye" = "night", + "bino-eye" = "nightalt", + ) /obj/item/clothing/glasses/eyepatch name = "eyepatch" @@ -320,10 +323,7 @@ . = ..() if(!isinhands && ishuman(loc) && !colored_before) var/mob/living/carbon/human/H = loc - // [CELADON-EDIT] - CELADON_RETURN_CONTENT_SPAWN - // var/mutable_appearance/M = mutable_appearance('icons/mob/clothing/eyes/eyes.dmi', "blindfoldwhite") // CELADON-EDIT - ORIGINAL - var/mutable_appearance/M = mutable_appearance('mod_celadon/_storage_icons/icons/items/clothing/eyes/overlay/eyes.dmi', "blindfoldwhite") - // [/CELADON-EDIT] + var/mutable_appearance/M = mutable_appearance('mod_celadon/_storage_icons/icons/items/clothing/eyes/overlay/eyes.dmi', "blindfoldwhite") // [CELADON-EDIT] - CELADON_RETURN_CONTENT_SPAWN M.appearance_flags |= RESET_COLOR M.color = "#[H.eye_color]" . += M diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 5149ffa1f39a..3ba2877810ee 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -147,12 +147,6 @@ name = "prototype envirogloves" icon_state = "protoplasma" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/clothing/gloves/color/plasmaman/clown - name = "clown envirogloves" - icon_state = "clownplasma" -// [/CELADON-ADD] - /obj/item/clothing/gloves/combat/wizard name = "enchanted gloves" desc = "These gloves have been enchanted with a spell that makes them fireproof and acid-resistant." diff --git a/code/modules/clothing/head/_head.dm b/code/modules/clothing/head/_head.dm index 5890840bb897..fe836e10fbcd 100644 --- a/code/modules/clothing/head/_head.dm +++ b/code/modules/clothing/head/_head.dm @@ -11,10 +11,7 @@ var/can_toggle = null greyscale_icon_state = "hat" greyscale_colors = list(list(16,26)) - // [CELADON-EDIT] - TAJARA, CELADON_RIOL - // supports_variations = VOX_VARIATION // CELADON-EDIT - ORIGINAL - supports_variations = VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION - // [/CELADON-EDIT] + supports_variations = VOX_VARIATION blood_overlay_type = "helmet" equipping_sound = EQUIP_SOUND_VFAST_GENERIC diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index e3deab59565e..d0c1685cbe4b 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -196,36 +196,20 @@ /obj/item/clothing/head/helmet/worn_overlays(isinhands) . = ..() var/mutable_appearance/flashlightlight_overlay -// [CELADON-EDIT] - Seclite and Google overlay -/* CELADON-EDIT - ORIGINAL if(isinhands) return + var/icon/overlay_icon = 'mod_celadon/_storage_icons/icons/items/clothing/head/overlay/seclite_overlay.dmi' // CELADON EDIT - Seclite and Google overlay if(attached_light) if(attached_light.on) - flashlightlight_overlay = mutable_appearance(mob_overlay_icon, "[flashlight_state]_on") + flashlightlight_overlay = mutable_appearance(overlay_icon, "[flashlight_state]_on") // CELADON EDIT else - flashlightlight_overlay = mutable_appearance(mob_overlay_icon, flashlight_state) + flashlightlight_overlay = mutable_appearance(overlay_icon, flashlight_state) // CELADON EDIT . += flashlightlight_overlay if(content_overlays) for(var/obj/item/I in contents) . += I.get_helmet_overlay() else return -*/ - if(isinhands) - return - if(attached_light) - if(attached_light.on) - flashlightlight_overlay = mutable_appearance('mod_celadon/_storage_icons/icons/items/clothing/head/overlay/seclite_overlay.dmi', "[flashlight_state]_on") - else - flashlightlight_overlay = mutable_appearance('mod_celadon/_storage_icons/icons/items/clothing/head/overlay/seclite_overlay.dmi', flashlight_state) - . += flashlightlight_overlay - if(content_overlays) - for(var/obj/item/I in contents) - . += I.get_helmet_overlays() - else - return -// [/CELADON-EDIT] /obj/item/clothing/head/helmet/bulletproof name = "bulletproof helmet" @@ -285,15 +269,6 @@ ) unique_reskin_changes_base_icon_state = TRUE -// [CELADON-ADD] -/obj/item/clothing/head/helmet/riot - mob_overlay_icon = 'mod_celadon/_storage_icons/icons/items/clothing/head/overlay/helmet_celadon.dmi' - -/obj/item/clothing/head/helmet/riot/solfed - unique_reskin = null - unique_reskin_changes_base_icon_state = FALSE -// [/CELADON-ADD] - /obj/item/clothing/head/helmet/justice name = "helmet of justice" desc = "WEEEEOOO. WEEEEEOOO. WEEEEOOOO." diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index ee5514698b78..5a17853434ca 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -127,14 +127,6 @@ min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT dog_fashion = /datum/dog_fashion/head/santa -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/clothing/head/rice_hat - name = "rice hat" - desc = "Welcome to the rice fields, motherfucker." - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/hats.dmi' - icon_state = "rice_hat" -// [/CELADON-ADD] - /obj/item/clothing/head/papersack name = "paper sack hat" desc = "A paper sack with crude holes cut out for eyes. Useful for hiding one's identity or ugliness." @@ -153,43 +145,6 @@ icon_state = "crown" resistance_flags = FIRE_PROOF -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/clothing/head/frenchberet - name = "french beret" - desc = "A quality beret, infused with the aroma of chain-smoking, wine-swilling Parisians. You feel less inclined to engage in military conflict, for some reason." - icon_state = "beret" - -/obj/item/clothing/head/frenchberet/equipped(mob/M, slot) - . = ..() - if (slot == ITEM_SLOT_HEAD) - RegisterSignal(M, COMSIG_MOB_SAY, PROC_REF(handle_speech)) - else - UnregisterSignal(M, COMSIG_MOB_SAY) - -/obj/item/clothing/head/frenchberet/dropped(mob/M) - . = ..() - UnregisterSignal(M, COMSIG_MOB_SAY) - -/obj/item/clothing/head/frenchberet/proc/handle_speech(datum/source, list/speech_args) - var/message = speech_args[SPEECH_MESSAGE] - if(message[1] != "*") - message = " [message]" - var/list/french_words = strings("french_replacement.json", "french") - - for(var/key in french_words) - var/value = french_words[key] - if(islist(value)) - value = pick(value) - - message = replacetextEx(message, " [uppertext(key)]", " [uppertext(value)]") - message = replacetextEx(message, " [capitalize(key)]", " [capitalize(value)]") - message = replacetextEx(message, " [key]", " [value]") - - if(prob(3)) - message += pick(" Honh honh honh!"," Honh!"," Zut Alors!") - speech_args[SPEECH_MESSAGE] = trim(message) -// [/CELADON-ADD] - /obj/item/clothing/head/intern name = "\improper CentCom Head Intern beancap" desc = "A horrifying mix of beanie and softcap in CentCom green. You'd have to be pretty desperate for power over your peers to agree to wear this." diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm index a38fb0e8c8e0..f81bbee59577 100644 --- a/code/modules/clothing/masks/gasmask.dm +++ b/code/modules/clothing/masks/gasmask.dm @@ -93,115 +93,6 @@ desc = "A close-fitting tactical mask that can be connected to an air supply. This one has an integrated voice changer." var/voice_change = 1 -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/clothing/mask/gas/clown_hat - name = "clown wig and mask" - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/masks.dmi' - mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/mask.dmi' - desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask." - clothing_flags = ALLOWINTERNALS - icon_state = "clown" - item_state = "clown_hat" - dye_color = "clown" - w_class = WEIGHT_CLASS_SMALL - flags_cover = MASKCOVERSEYES - resistance_flags = FLAMMABLE - actions_types = list(/datum/action/item_action/adjust) - dog_fashion = /datum/dog_fashion/head/clown - var/list/clownmask_designs = list() - -/obj/item/clothing/mask/gas/clown_hat/Initialize(mapload) - .=..() - clownmask_designs = list( - "True Form" = image(icon = src.icon, icon_state = "clown"), - "The Feminist" = image(icon = src.icon, icon_state = "sexyclown"), - "The Jester" = image(icon = src.icon, icon_state = "chaos"), - "The Madman" = image(icon = src.icon, icon_state = "joker"), - "The Rainbow Color" = image(icon = src.icon, icon_state = "rainbow") - ) - -/obj/item/clothing/mask/gas/clown_hat/ui_action_click(mob/user) - if(!istype(user) || user.incapacitated()) - return - - var/list/options = list() - options["True Form"] = "clown" - options["The Feminist"] = "sexyclown" - options["The Madman"] = "joker" - options["The Rainbow Color"] ="rainbow" - options["The Jester"] ="chaos" //Nepeta33Leijon is holding me captive and forced me to help with this please send help - - var/choice = show_radial_menu(user,src, clownmask_designs, custom_check = FALSE, radius = 36, require_near = TRUE) - if(!choice) - return FALSE - - if(src && choice && !user.incapacitated() && in_range(user,src)) - icon_state = options[choice] - user.update_inv_wear_mask() - for(var/X in actions) - var/datum/action/A = X - A.UpdateButtonIcon() - to_chat(user, span_notice("Your Clown Mask has now morphed into [choice], all praise the Honkmother!")) - return TRUE - -/obj/item/clothing/mask/gas/sexyclown - name = "sexy-clown wig and mask" - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/masks.dmi' - mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/mask.dmi' - desc = "A feminine clown mask for the dabbling crossdressers or female entertainers." - clothing_flags = ALLOWINTERNALS - icon_state = "sexyclown" - item_state = "sexyclown" - flags_cover = MASKCOVERSEYES - resistance_flags = FLAMMABLE - -/obj/item/clothing/mask/gas/mime - name = "mime mask" - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/masks.dmi' - mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/mask.dmi' - desc = "The traditional mime's mask. It has an eerie facial posture." - clothing_flags = ALLOWINTERNALS - icon_state = "mime" - item_state = "mime" - w_class = WEIGHT_CLASS_SMALL - flags_cover = MASKCOVERSEYES - resistance_flags = FLAMMABLE - actions_types = list(/datum/action/item_action/adjust) - var/list/mimemask_designs = list() - -/obj/item/clothing/mask/gas/mime/Initialize(mapload) - .=..() - mimemask_designs = list( - "Blanc" = image(icon = src.icon, icon_state = "mime"), - "Excité" = image(icon = src.icon, icon_state = "sexymime"), - "Triste" = image(icon = src.icon, icon_state = "sadmime"), - "Effrayé" = image(icon = src.icon, icon_state = "scaredmime") - ) - -/obj/item/clothing/mask/gas/mime/ui_action_click(mob/user) - if(!istype(user) || user.incapacitated()) - return - - var/list/options = list() - options["Blanc"] = "mime" - options["Triste"] = "sadmime" - options["Effrayé"] = "scaredmime" - options["Excité"] ="sexymime" - - var/choice = show_radial_menu(user,src, mimemask_designs, custom_check = FALSE, radius = 36, require_near = TRUE) - if(!choice) - return FALSE - - if(src && choice && !user.incapacitated() && in_range(user,src)) - icon_state = options[choice] - user.update_inv_wear_mask() - for(var/X in actions) - var/datum/action/A = X - A.UpdateButtonIcon() - to_chat(user, span_notice("Your Mime Mask has now morphed into [choice]!")) - return TRUE -// [/CELADON-ADD] - /obj/item/clothing/mask/gas/monkeymask name = "monkey mask" desc = "A mask used when acting as a monkey." @@ -211,18 +102,6 @@ flags_cover = MASKCOVERSEYES resistance_flags = FLAMMABLE -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/clothing/mask/gas/sexymime - name = "sexy mime mask" - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/masks.dmi' - desc = "A traditional female mime's mask." - clothing_flags = ALLOWINTERNALS - icon_state = "sexymime" - item_state = "sexymime" - flags_cover = MASKCOVERSEYES - resistance_flags = FLAMMABLE -// [/CELADON-ADD] - /obj/item/clothing/mask/gas/cyborg name = "cyborg visor" desc = "Beep boop." diff --git a/code/modules/clothing/masks/hailer.dm b/code/modules/clothing/masks/hailer.dm index a85021f1a051..d902979e366a 100644 --- a/code/modules/clothing/masks/hailer.dm +++ b/code/modules/clothing/masks/hailer.dm @@ -15,17 +15,6 @@ visor_flags_cover = MASKCOVERSMOUTH | MASKCOVERSEYES | PEPPERPROOF supports_variations = VOX_VARIATION | SNOUTED_VARIATION | KEPORI_VARIATION -// [CELADON-ADD] - add: SFX-Die -/obj/item/clothing/mask/gas/sechailer/sec - name = "security gas mask" - desc = "A standard issue Security gas mask. It doesn't cover the eyes." - icon = 'mod_celadon/_storage_icons/icons/items/clothing/mask/hailer.dmi' - mob_overlay_icon = 'mod_celadon/_storage_icons/icons/items/clothing/mask/overlay/hailer.dmi' - icon_state = "hailer" - item_state = "hailer" - unique_death = list('mod_celadon/_storage_sounds/sound/items/gasmask/sec_die.ogg') -// [/CELADON-ADD] - /obj/item/clothing/mask/gas/sechailer/swat name = "\improper SWAT mask" desc = "A close-fitting tactical mask with an especially aggressive Compli-o-nator 3000." diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 9cb27431183c..8d787b2ad505 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -64,59 +64,6 @@ desc = "Express your happiness or hide your sorrows with this laughing face with crying tears of joy cutout." icon_state = "joy" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/clothing/mask/spamton - name = "Cursed Businessman's Mask" - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/masks.dmi' - icon_state = "big_shot" - mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/mask.dmi' - item_state = "big_shot" - clothing_flags = ALLOWINTERNALS - visor_flags = ALLOWINTERNALS - desc = "The porcelain mask of a now-forgotten business mogul, said to have made an impossible fortune long ago. Are you big enough to wear it?" - modifies_speech = TRUE - actions_types = list(/datum/action/item_action/lifesavings) - -/datum/action/item_action/lifesavings - name = "LIFE_SAVINGS" - desc = "Shipping and handling not included." - -/obj/item/clothing/mask/spamton/attack_self(mob/user) - if(cooldown < world.time) - SSblackbox.record_feedback("amount", "saving_uses", 1) - cooldown = world.time + 1600 - var/mob/living/U = user - U.apply_damage(25, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - to_chat(user, span_warning("BLOOD PRICE ACCEPTED. WITHDRAWING KRONOR FROM OFFSHORE FUND...")) - pick( - new /obj/item/spacecash/bundle/mediumrand(user.drop_location()), - new /obj/item/spacecash/bundle/smallrand(user.drop_location()), - new /obj/item/holochip(user.drop_location(), 5000)) - else - to_chat(user, span_warning("[src]'s savings account can't yet be accessed!")) - -/obj/item/clothing/mask/spamton/handle_speech(datum/source, list/speech_args) - var/message = speech_args[SPEECH_MESSAGE] - if(message[1] != "*") - message = " [message]" - var/list/spamton_words = strings_load("spamton_replacement.json", "spamton", "mod_celadon/return_content_clowns/code/mime") - - for(var/key in spamton_words) - var/value = spamton_words[key] - if(islist(value)) - value = pick(value) - - message = replacetextEx(message, " [uppertext(key)]", " [uppertext(value)]") - message = replacetextEx(message, " [capitalize(key)]", " [capitalize(value)]") - message = replacetextEx(message, " [key]", " [value]") - - speech_args[SPEECH_MESSAGE] = trim(message) - -/obj/item/clothing/mask/spamton/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, CURSED_MASK_TRAIT) -// [/CELADON-ADD] - /obj/item/clothing/mask/pig name = "pig mask" desc = "A rubber pig mask with a built-in voice modulator." diff --git a/code/modules/clothing/outfits/ert/minutemen_ert.dm b/code/modules/clothing/outfits/ert/minutemen_ert.dm index f32258c622ee..ed901c700085 100644 --- a/code/modules/clothing/outfits/ert/minutemen_ert.dm +++ b/code/modules/clothing/outfits/ert/minutemen_ert.dm @@ -169,10 +169,10 @@ backpack_contents = null box = null - backpack = /obj/item/shield/riot - duffelbag = /obj/item/shield/riot - courierbag = /obj/item/shield/riot - satchel = /obj/item/shield/riot + backpack = /obj/item/shield/heavy + duffelbag = /obj/item/shield/heavy + courierbag = /obj/item/shield/heavy + satchel = /obj/item/shield/heavy /datum/outfit/job/clip/minutemen/military_police/leader name = "ERT - C-MM Chief Military Police" @@ -202,10 +202,10 @@ backpack_contents = null box = null - backpack = /obj/item/shield/riot/flash - duffelbag = /obj/item/shield/riot/flash - courierbag = /obj/item/shield/riot/flash - satchel = /obj/item/shield/riot/flash + backpack = /obj/item/shield/heavy + duffelbag = /obj/item/shield/heavy + courierbag = /obj/item/shield/heavy + satchel = /obj/item/shield/heavy /datum/outfit/job/clip/minutemen/grunt/dressed/hardsuit name = "ERT - CLIP Minutemen - Minuteman (Spotter Hardsuit)" diff --git a/code/modules/clothing/outfits/factions/clip.dm b/code/modules/clothing/outfits/factions/clip.dm index 992cef85a2e4..79d06731cce8 100644 --- a/code/modules/clothing/outfits/factions/clip.dm +++ b/code/modules/clothing/outfits/factions/clip.dm @@ -362,10 +362,7 @@ shoes = /obj/item/clothing/shoes/jackboots box = /obj/item/storage/box/survival/engineer - // [CELADON-EDIT] - CELADON_BALANCE - Убираем телескопички - // backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/gun/ballistic/revolver/rhino=1) // CELADON-EDIT - ORIGINAL - backpack_contents = list(/obj/item/gun/ballistic/revolver/rhino=1) - // [/CELADON-EDIT] + backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1, /obj/item/gun/ballistic/revolver/rhino=1) /datum/outfit/job/clip/minutemen/captain/general/admiral // for flavor, might remove outright name = "CLIP Minutemen - Admiral" diff --git a/code/modules/clothing/outfits/factions/inteq.dm b/code/modules/clothing/outfits/factions/inteq.dm index bd17cdc93a42..a288fe0c961b 100644 --- a/code/modules/clothing/outfits/factions/inteq.dm +++ b/code/modules/clothing/outfits/factions/inteq.dm @@ -47,9 +47,8 @@ r_pocket = /obj/item/assembly/flash/handheld l_pocket = /obj/item/restraints/handcuffs - // [CELADON-REMOVE] - CELADON_BALANCE - Убираем телескопички - // backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1) - // [/CELADON-REMOVE] + + backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1) /datum/outfit/job/inteq/captain/empty name = "IRMG - Vanguard (Naked)" diff --git a/code/modules/clothing/outfits/factions/nanotrasen.dm b/code/modules/clothing/outfits/factions/nanotrasen.dm index da3ce2d11651..091db9f398f7 100644 --- a/code/modules/clothing/outfits/factions/nanotrasen.dm +++ b/code/modules/clothing/outfits/factions/nanotrasen.dm @@ -32,9 +32,7 @@ shoes = /obj/item/clothing/shoes/laceup neck = /obj/item/clothing/neck/cloak/nanotrasen head = /obj/item/clothing/head/nanotrasen/captain/peaked - // [CELADON-REMOVE] - CELADON_BALANCE - Убираем телескопички - // backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1) - // [/CELADON-REMOVE] + backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1) backpack = /obj/item/storage/backpack/captain satchel = /obj/item/storage/backpack/satchel/cap @@ -141,9 +139,7 @@ backpack_contents = list( /obj/item/storage/box/ids=1, - // [CELADON-REMOVE] - CELADON_BALANCE - Убираем телескопички - // /obj/item/melee/classic_baton/telescopic=1, - // [/CELADON-REMOVE] + /obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1, ) @@ -383,13 +379,10 @@ gloves = /obj/item/clothing/gloves/color/black backpack_contents = list( - // [CELADON-REMOVE] - CELADON_BALANCE - Убираем телескопички - // /obj/item/melee/classic_baton/telescopic=1, - // [/CELADON-REMOVE] + /obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced=1, ) - backpack = /obj/item/storage/backpack/industrial satchel = /obj/item/storage/backpack/satchel/eng duffelbag = /obj/item/storage/backpack/duffelbag/engineering diff --git a/code/modules/clothing/outfits/plasmaman.dm b/code/modules/clothing/outfits/plasmaman.dm index d568c8137baa..d94b73299f8f 100644 --- a/code/modules/clothing/outfits/plasmaman.dm +++ b/code/modules/clothing/outfits/plasmaman.dm @@ -196,24 +196,6 @@ uniform = /obj/item/clothing/under/plasmaman/hop gloves = /obj/item/clothing/gloves/color/plasmaman/black -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/datum/outfit/plasmaman/mime - name = "Plasmamime" - - head = /obj/item/clothing/head/helmet/space/plasmaman/mime - uniform = /obj/item/clothing/under/plasmaman/mime - mask = /obj/item/clothing/mask/gas/mime - gloves = /obj/item/clothing/gloves/color/plasmaman/white - -/datum/outfit/plasmaman/clown - name = "Plasmaclown" - - head = /obj/item/clothing/head/helmet/space/plasmaman/clown - uniform = /obj/item/clothing/under/plasmaman/clown - mask = /obj/item/clothing/mask/gas/clown_hat - gloves = /obj/item/clothing/gloves/color/plasmaman/clown -// [/CELADON-ADD] - /datum/outfit/plasmaman/solgov //WS edit sgr name = "Plasmasolgov" head = /obj/item/clothing/head/helmet/space/plasmaman/solgov diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index e3cf47242605..30f0e5cf17f0 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -101,7 +101,7 @@ ears = /obj/item/radio/headset/headset_cent/commander mask = /obj/item/clothing/mask/gas/welding/up gloves = /obj/item/clothing/gloves/combat/insul - belt = /obj/item/storage/belt/utility/chief/debug/full // [CELADON-EDIT] - OMNI_TOOLS + belt = /obj/item/storage/belt/utility/chief/full shoes = /obj/item/clothing/shoes/magboots/advance id = /obj/item/card/id/debug{icon_state = "admin"} // [CELADON-EDIT] - CELADON_OUTFIT // id = /obj/item/card/id/debug // ORIGINAL suit_store = /obj/item/tank/internals/oxygen diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index 57a78900ad7b..b4270cd3256a 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -220,10 +220,7 @@ item_state = "eng_hardsuit" siemens_coefficient = 0 armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 75, "fire" = 100, "acid" = 75, "wound" = 20) - // [CELADON-EDIT] - TAJARA, CELADON_RIOL - // supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION // CELADON-EDIT - ORIGINAL - supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION - // [/CELADON-EDIT] + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION helmettype = /obj/item/clothing/head/helmet/space/hardsuit/engine resistance_flags = FIRE_PROOF @@ -325,10 +322,7 @@ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/mining heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS custom_price = 2000 - // [CELADON-EDIT] - TAJARA, CELADON_RIOL - // supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION // CELADON-EDIT - ORIGINAL - supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION - // [/CELADON-EDIT] + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION //Heavy Mining Hardsuit, bought from Cargo. /obj/item/clothing/suit/space/hardsuit/mining/heavy @@ -364,7 +358,7 @@ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/mining/heavy/ns hardsuit_type = "nsmining" resistance_flags = FIRE_PROOF | ACID_PROOF - armor = list("melee" = 65, "bullet" = 30, "laser" = 25, "energy" = 30, "bomb" = 70, "bio" = 100, "rad" = 85, "fire" = 100, "acid" = 100, "wound" = 30) // [CELADON-EDIT] - CELADON_BALANCE - добавил защиту от ваундов + armor = list("melee" = 65, "bullet" = 30, "laser" = 25, "energy" = 30, "bomb" = 70, "bio" = 100, "rad" = 85, "fire" = 100, "acid" = 100) supports_variations = KEPORI_VARIATION /obj/item/clothing/head/helmet/space/hardsuit/mining/heavy/ns @@ -374,7 +368,7 @@ item_state = "hardsuit0-nsmining" hardsuit_type = "nsmining" resistance_flags = FIRE_PROOF | ACID_PROOF - armor = list("melee" = 65, "bullet" = 30, "laser" = 25, "energy" = 30, "bomb" = 70, "bio" = 100, "rad" = 85, "fire" = 100, "acid" = 100, "wound" = 30) // [CELADON-EDIT] - CELADON_BALANCE - добавил защиту от ваундов + armor = list("melee" = 65, "bullet" = 30, "laser" = 25, "energy" = 30, "bomb" = 70, "bio" = 100, "rad" = 85, "fire" = 100, "acid" = 100) supports_variations = KEPORI_VARIATION //Syndicate hardsuit @@ -409,10 +403,6 @@ /obj/item/clothing/head/helmet/space/hardsuit/syndi/attack_self(mob/user) on = !on set_light_on(on) - // [CELADON-ADD] - FIXES_DEBUG_SUIT - фиксим фонарик переключение фонарика - to_chat(user, span_notice("You turn [on ? "on" : "off"] [src]'s flashlight.")) - playsound(src, on ? 'sound/weapons/magin.ogg' : 'sound/weapons/magout.ogg', 40, TRUE) - // [/CELADON-ADD] /obj/item/clothing/head/helmet/space/hardsuit/syndi/proc/toggle_mode(mob/user) //Toggle Helmet if(!isturf(user.loc)) @@ -465,9 +455,7 @@ else linkedsuit.name += " (travel)" linkedsuit.desc = linkedsuit.alt_desc - // [CELADON - ADD] - BALANCE - linkedsuit.slowdown = linkedsuit.combat_slowdown - // [CELADON - ADD] + linkedsuit.slowdown = linkedsuit.combat_slowdown // [CELADON - ADD] - BALANCE linkedsuit.clothing_flags &= ~STOPSPRESSUREDAMAGE linkedsuit.cold_protection &= ~(CHEST | GROIN | LEGS | FEET | ARMS | HANDS) if(linkedsuit.lightweight) @@ -491,62 +479,14 @@ allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi jetpack = /obj/item/tank/jetpack/suit - // [CELADON-EDIT] - TAJARA, CELADON_RIOL, BALANCE - // supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION // CELADON-EDIT - ORIGINAL - // var/combat_slowdown = 0 //slowdown when in combat mode // [CELADON - EDIT] - ORIGINAL - supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION - var/combat_slowdown = 0.2 - // [/CELADON - EDIT] + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION + var/combat_slowdown = 0 slowdown = 0.5 var/lightweight = 0 //used for flags when toggling kepori_override_icon = 'icons/mob/clothing/suits/spacesuits_kepori.dmi' supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | KEPORI_VARIATION -//Ramzi Syndie suit -/obj/item/clothing/head/helmet/space/hardsuit/syndi/ramzi - name = "rust-red hardsuit helmet" - desc = "A beat-up standardized dual-mode helmet derived from more advanced special operations helmets, its red rusted into a dirty brown. It is in EVA mode. Manufactured by Ramzi Clique." - alt_desc = "A beat-up standardized dual-mode helmet derived from more advanced special operations helmets, its red rusted into a dirty brown. It is in travel mode. Manufactured by Ramzi Clique." - icon_state = "hardsuit1-ramzi" - item_state = "hardsuit1-ramzi" - hardsuit_type = "ramzi" - armor = list("melee" = 35, "bullet" = 40, "laser" = 20,"energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75, "wound" = 20) - -/obj/item/clothing/suit/space/hardsuit/syndi/ramzi - name = "rust-red hardsuit" - desc = "A beat-up standardized dual-mode hardsuit derived from more advanced special operations hardsuits, its red rusted into a dirty brown. It is in EVA mode. Manufactured by Ramzi Clique." - alt_desc = "A beat-up standardized dual-mode hardsuit derived from more advanced special operations hardsuits, its red rusted into a dirty brown. It is in travel mode. Manufactured by Ramzi Clique." - icon_state = "hardsuit1-ramzi" - item_state = "hardsuit1-ramzi" - hardsuit_type = "ramzi" - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/ramzi - jetpack = null - armor = list("melee" = 35, "bullet" = 40, "laser" = 20,"energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75, "wound" = 20) - slowdown = 0.7 - jetpack = null - supports_variations = DIGITIGRADE_VARIATION | KEPORI_VARIATION | VOX_VARIATION - -//Ramzi Elite Suit -/obj/item/clothing/head/helmet/space/hardsuit/syndi/ramzi/elite - name = "elite rust-red hardsuit helmet" - desc = "An elite version of the rusted-red hardsuit helmet, with improved armour and fireproofing. The armour is worn and heavy. It is in EVA mode." - alt_desc = "An elite version of the rusted-red hardsuit, with improved armour and fireproofing. The armour is worn and heavy. It is in travel mode." - hardsuit_type = "ramzielite" - icon_state = "hardsuit1-ramzielite" - item_state = "hardsuit1-ramzielite" - armor = list("melee" = 50, "bullet" = 60, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 60, "fire" = 100, "acid" = 80, "wound" = 50) // [CELADON-EDIT] - CELADON_BALANCE - -/obj/item/clothing/suit/space/hardsuit/syndi/ramzi/elite - name = "elite rust-red hardsuit" - desc = "An elite version of the rusted-red hardsuit, with improved armour and fireproofing. The armour is worn and heavy. It is in EVA mode." - alt_desc = "An elite version of the rusted-red hardsuit, with improved armour and fireproofing. The armour is worn and heavy. It is in EVA mode." - icon_state = "hardsuit1-ramzielite" - item_state = "hardsuit1-ramzielite" - hardsuit_type = "ramzielite" - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/ramzi/elite - armor = list("melee" = 50, "bullet" = 60, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 60, "fire" = 100, "acid" = 80, "wound" = 50) // [CELADON-EDIT] - CELADON_BALANCE - slowdown = 1.25 //Mayor's Suit /obj/item/clothing/suit/space/hardsuit/syndi/old @@ -620,10 +560,7 @@ hardsuit_type = "cybersun" armor = list("melee" = 25, "bullet" = 25, "laser" = 50, "energy" = 50, "bomb" = 25, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 60, "wound" = 30) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/cybersun - // [CELADON-EDIT] - TAJARA, CELADON_RIOL - // supports_variations = VOX_VARIATION // CELADON-EDIT - ORIGINAL - supports_variations = VOX_VARIATION | KEPORI_VARIATION | TAJARA_VARIATION | RIOL_VARIATION - // [/CELADON-EDIT] + supports_variations = VOX_VARIATION | KEPORI_VARIATION /obj/item/clothing/head/helmet/space/hardsuit/syndi/cybersun name = "neutron-star combat hardsuit helmet" @@ -642,10 +579,6 @@ hardsuit_type = "cyberparamed" armor = list("melee" = 25, "bullet" = 25, "laser" = 35, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 65, "fire" = 75, "acid" = 40, "wound" = 20) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi/cybersun/paramed - // [CELADON-EDIT] - TAJARA, CELADON_RIOL - // supports_variations = VOX_VARIATION // CELADON-EDIT - ORIGINAL - supports_variations = VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION - // [/CELADON-EDIT] jetpack = null /obj/item/clothing/head/helmet/space/hardsuit/syndi/cybersun/paramed @@ -676,10 +609,7 @@ armor = list("melee" = 30, "bullet" = 5, "laser" = 10, "energy" = 20, "bomb" = 10, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 75, "wound" = 20) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/medical slowdown = 0.3 - // [CELADON-EDIT] - TAJARA, CELADON_RIOL - // supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION // CELADON-EDIT - ORIGINAL - supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION - // [/CELADON-EDIT] + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION /obj/item/clothing/head/helmet/space/hardsuit/medical/cmo name = "chief medical officer's hardsuit helmet" @@ -735,18 +665,10 @@ item_state = "hardsuit-eod" resistance_flags = ACID_PROOF | FIRE_PROOF max_heat_protection_temperature = FIRE_SUIT_MAX_TEMP_PROTECT //Same as an emergency firesuit. Not ideal for extended exposure. - allowed = list(/obj/item/flashlight, - /obj/item/tank/internals, - /obj/item/gun/energy/wormhole_projector, - /obj/item/hand_tele, - /obj/item/aicard) slowdown = 1 armor = list("melee" = 30, "bullet" = 40, "laser" = 10, "energy" = 20, "bomb" = 100, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 80, "wound" = 40) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/bomb - // [CELADON-EDIT] - TAJARA, CELADON_RIOL - // supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION // CELADON-EDIT - ORIGINAL - supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION - // [/CELADON-EDIT] + supports_variations = VOX_VARIATION /obj/item/clothing/suit/space/hardsuit/bomb/Initialize() . = ..() @@ -760,10 +682,7 @@ item_state = "sec_helm" hardsuit_type = "sec" armor = list("melee" = 35, "bullet" = 30, "laser" = 30, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75, "wound" = 20) - // [CELADON-EDIT] - CELADON_VOX - WTF у них же есть даже в атласе спрайт... - //supports_variations = SNOUTED_VARIATION - supports_variations = SNOUTED_VARIATION | VOX_VARIATION - // [/CELADON-EDIT] + supports_variations = SNOUTED_VARIATION /obj/item/clothing/suit/space/hardsuit/security icon_state = "hardsuit-sec" @@ -773,10 +692,7 @@ armor = list("melee" = 35, "bullet" = 30, "laser" = 30, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75, "wound" = 20) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security slowdown = 0.5 - // [CELADON-EDIT] - TAJARA, CELADON_RIOL - // supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION // CELADON-EDIT - ORIGINAL - supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION - // [/CELADON-EDIT] + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION /obj/item/clothing/suit/space/hardsuit/security/Initialize() . = ..() @@ -798,11 +714,8 @@ armor = list("melee" = 50, "bullet" = 45, "laser" = 40, "energy" = 40, "bomb" = 25, "bio" = 100, "rad" = 50, "fire" = 95, "acid" = 95, "wound" = 30) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/hos jetpack = /obj/item/tank/jetpack/suit - // [CELADON-EDIT] - TAJARA, CELADON_RIOL - // supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION // CELADON-EDIT - ORIGINAL - supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION - // [/CELADON-EDIT] slowdown = 0.7 + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION //SWAT MKII /obj/item/clothing/head/helmet/space/hardsuit/swat @@ -1032,7 +945,7 @@ icon_state = "hardsuit1-syndi" item_state = "syndie_hardsuit" hardsuit_type = "syndi" - armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100, "wound" = 30) // [CELADON-EDIT] - CELADON_BALANCE + armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100) allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/shielded/syndi slowdown = 0.5 @@ -1152,10 +1065,7 @@ item_state = "independent_sec_helm" hardsuit_type = "independent-sec" armor = list("melee" = 35, "bullet" = 25, "laser" = 20,"energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75, "wound" = 20) - // [CELADON-EDIT] - TAJARA, CELADON_RIOL - // supports_variations = VOX_VARIATION | SNOUTED_VARIATION // CELADON-EDIT - ORIGINAL - supports_variations = VOX_VARIATION | SNOUTED_VARIATION | TAJARA_VARIATION | RIOL_VARIATION - // [/CELADON-EDIT] + supports_variations = VOX_VARIATION | SNOUTED_VARIATION /obj/item/clothing/suit/space/hardsuit/security/independent icon_state = "hardsuit-independent-sec" @@ -1166,10 +1076,7 @@ hardsuit_type = "independent-sec" helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security/independent armor = list("melee" = 35, "bullet" = 25, "laser" = 20, "energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75, "wound" = 20) - // [CELADON-EDIT] - TAJARA, CELADON_RIOL - // supports_variations = VOX_VARIATION | DIGITIGRADE_VARIATION // CELADON-EDIT - ORIGINAL - supports_variations = VOX_VARIATION | DIGITIGRADE_VARIATION | TAJARA_VARIATION | RIOL_VARIATION - // [/CELADON-EDIT] + supports_variations = VOX_VARIATION | DIGITIGRADE_VARIATION //Mining /obj/item/clothing/head/helmet/space/hardsuit/mining/independent diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index 7f9258aa625c..fa864d6da58d 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -37,7 +37,7 @@ Contains: icon_state = "deathsquad" item_state = "swat_suit" allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/melee/knife/combat) - armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 60, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100, "wound" = 60) // [CELADON-EDIT] - CELADON_BALANCE + armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 60, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) strip_delay = 130 max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF @@ -51,7 +51,7 @@ Contains: icon_state = "heavy" item_state = "swat_suit" allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals, /obj/item/melee/knife/combat) - armor = list("melee" = 40, "bullet" = 30, "laser" = 30,"energy" = 40, "bomb" = 50, "bio" = 90, "rad" = 20, "fire" = 100, "acid" = 100, "wound" = 20) // [CELADON-EDIT] - CELADON_BALANCE + armor = list("melee" = 40, "bullet" = 30, "laser" = 30,"energy" = 40, "bomb" = 50, "bio" = 90, "rad" = 20, "fire" = 100, "acid" = 100) strip_delay = 120 resistance_flags = FIRE_PROOF | ACID_PROOF @@ -250,27 +250,6 @@ Contains: helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/jani allowed = list(/obj/item/tank/internals, /obj/item/storage/bag/trash, /obj/item/melee/flyswatter, /obj/item/mop, /obj/item/holosign_creator, /obj/item/reagent_containers/glass/bucket, /obj/item/reagent_containers/spray/chemsprayer/janitor) -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - //ERT Clown -/obj/item/clothing/head/helmet/space/hardsuit/ert/clown - name = "emergency response team clown helmet" - desc = "The integrated helmet of an ERT hardsuit, this one is colourful!" - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/spacesuits_helmet.dmi' - mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/spacesuits_helmet_on_mob.dmi' - icon_state = "hardsuit0-ert_clown" - item_state = "hardsuit0-ert_clown" - hardsuit_type = "ert_clown" - -/obj/item/clothing/suit/space/hardsuit/ert/clown - name = "emergency response team clown hardsuit" - desc = "The non-standard issue hardsuit of the ERT, this one is colourful! Offers superb protection against environmental hazards. Does not offer superb protection against a ravaging crew." - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/spacesuits.dmi' - mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/spacesuits_on_mob.dmi' - icon_state = "ert_clown" - item_state = "ert_clown" - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/clown -// [/CELADON-ADD] - /obj/item/clothing/suit/space/eva name = "EVA suit" icon_state = "space" diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index 28819b4f8be2..9017adfcac2f 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -268,28 +268,6 @@ icon_state = "janitor_envirohelm" item_state = "janitor_envirohelm" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/clothing/head/helmet/space/plasmaman/mime - name = "mime envirosuit helmet" - desc = "The make-up is painted on, it's a miracle it doesn't chip. It's not very colourful." - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/spacesuits_helmet.dmi' - mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/spacesuits_helmet_on_mob.dmi' - icon_state = "mime_envirohelm" - item_state = "mime_envirohelm" - visor_icon = "mime_envisor" - -/obj/item/clothing/head/helmet/space/plasmaman/clown - name = "clown envirosuit helmet" - desc = "The make-up is painted on, it's a miracle it doesn't chip. 'HONK!'" - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/spacesuits_helmet.dmi' - mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/spacesuits_helmet_on_mob.dmi' - icon_state = "clown_envirohelm" - item_state = "clown_envirohelm" - visor_icon = "clown_envisor" - smile_state = "clown_smile" -// [/CELADON-ADD] - -// WS BEGIN - plasmeme command helmets buff start /obj/item/clothing/head/helmet/space/plasmaman/command name = "captains envirosuit helmet" desc = "An envirosuit helmet made for the most important plasmaman of them all." diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 87b9da80047f..7ffa1416f818 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -43,6 +43,11 @@ item_state = "armoralt" //supports_variations = KEPORI_VARIATION +/obj/item/clothing/suit/armor/vest/trauma + name = "cybersun trauma team armor vest" + icon_state = "traumavest" + desc = "A set of stamped plasteel armor plates decorated with a medical cross and colors associated with the medical division of Cybersun." + /obj/item/clothing/suit/armor/vest/marine name = "tactical armor vest" desc = "A heavy set of the finest mass-produced stamped plasteel armor plates money can buy." diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index ab168706f266..247284003407 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -86,7 +86,7 @@ icon_state = "dragon" desc = "A suit of armour fashioned from the remains of an ash drake." allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/melee/spear) - armor = list("melee" = 50, "bullet" = 10, "laser" = 40, "energy" = 50, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 100, "acid" = 100, "wound" = 50) // [CELADON-EDIT] - CELADON_BALANCE + armor = list("melee" = 50, "bullet" = 10, "laser" = 40, "energy" = 50, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 100, "acid" = 100) hoodtype = /obj/item/clothing/head/hooded/cloakhood/drake heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm index 4b103186df4c..7ee18a3c14da 100644 --- a/code/modules/clothing/suits/toggles.dm +++ b/code/modules/clothing/suits/toggles.dm @@ -23,7 +23,6 @@ if(!base_icon_state) base_icon_state = icon_state make_hood() - RegisterSignal(src, COMSIG_TRY_STORAGE_CAN_INSERT, PROC_REF(on_can_insert)) // [CELADON-ADD] - FIXES_HOODED_ICONS /obj/item/clothing/suit/hooded/Destroy() . = ..() @@ -63,11 +62,9 @@ var/mob/living/carbon/human/H = hood.loc // [/CELADON-EDIT] H.transferItemToLoc(hood, src, TRUE) - if(H.wear_suit == src)// [CELADON-ADD] - FIXES_HOODED_ICONS + // [CELADON-ADD] - FIXES_HOODED_ICONS + if(H.wear_suit == src) H.update_inv_wear_suit() - // [CELADON-EDIT] - FIXES_HOODED_ICONS - //update_appearance() - FIXES_ICON - СУКА - //H.regenerate_icons() // ORIGINAL else if(H.wear_neck == src) H.update_inv_neck() // [/CELADON-EDIT] @@ -82,10 +79,6 @@ icon_state = "[base_icon_state]_t" else icon_state = base_icon_state - // [CELADON-REMOVE] - FIXES_HOODED_ICONS - [WARNING] - Расскомментить и посмотреть изменение! - // if(isobj(hood)) - // hood.icon_state = base_icon_state - // [/CELADON-REMOVE] . = ..() /obj/item/clothing/suit/hooded/dropped() @@ -96,10 +89,7 @@ if(!suittoggled) if(ishuman(src.loc)) var/mob/living/carbon/human/H = src.loc - // [CELADON-EDIT] - FIXES_HOODED_ICONS - // if(H.wear_suit != src) // ORIGINAL - if(H.wear_suit != src && H.wear_neck != src) - // [/CELADON-EDIT] + if(H.wear_suit != src && H.wear_neck != src) // [CELADON-EDIT] - FIXES_HOODED_ICONS to_chat(H, span_warning("You must be wearing [src] to put up the hood!")) return if(H.head) @@ -107,11 +97,9 @@ return else if(H.equip_to_slot_if_possible(hood,ITEM_SLOT_HEAD,0,0,1)) suittoggled = TRUE - if(H.wear_suit == src) // [CELADON-ADD] - FIXES_HOODED_ICONS + // [CELADON-ADD] - FIXES_HOODED_ICONS + if(H.wear_suit == src) H.update_inv_wear_suit() - // [CELADON-EDIT] - FIXES_HOODED_ICONS - //update_appearance() - FIXES_ICON - СУКА ИЗ-ЗА ЭТОГО СЛОМАЛИСЬ ВСЕ КАПЮШОНЫ - //H.regenerate_icons() // ORIGINAL else if(H.wear_neck == src) H.update_inv_neck() // [/CELADON-EDIT] diff --git a/code/modules/clothing/suits/wintercoats.dm b/code/modules/clothing/suits/wintercoats.dm index 798debed11fc..f5c3604104b8 100644 --- a/code/modules/clothing/suits/wintercoats.dm +++ b/code/modules/clothing/suits/wintercoats.dm @@ -98,9 +98,7 @@ /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, - // [CELADON-REMOVE] - CELADON_BALANCE - Убираем телескопички - // /obj/item/melee/classic_baton/telescopic, - // [/CELADON-REMOVE] + /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index 89913a13c3b5..238e9b1ce15d 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -106,9 +106,7 @@ if(attached_accessory && slot != ITEM_SLOT_HANDS && ishuman(user)) var/mob/living/carbon/human/H = user attached_accessory.on_uniform_equip(src, user) - // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - H.fan_hud_set_fandom() - // [/CELADON-ADD] + H.fan_hud_set_fandom() // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS if(attached_accessory.above_suit) H.update_inv_wear_suit() @@ -123,9 +121,7 @@ attached_accessory.on_uniform_dropped(src, user) if(ishuman(user)) var/mob/living/carbon/human/H = user - // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - H.fan_hud_set_fandom() - // [/CELADON-ADD] + H.fan_hud_set_fandom() // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS if(attached_accessory.above_suit) H.update_inv_wear_suit() @@ -178,9 +174,7 @@ H.update_inv_w_uniform() H.update_inv_wear_suit() - // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - H.fan_hud_set_fandom() - // [/CELADON-ADD] + H.fan_hud_set_fandom() // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS return TRUE @@ -202,9 +196,7 @@ var/mob/living/carbon/human/H = loc H.update_inv_w_uniform() H.update_inv_wear_suit() - // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - H.fan_hud_set_fandom() - // [/CELADON-ADD] + H.fan_hud_set_fandom() // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS /obj/item/clothing/under/examine(mob/user) diff --git a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm index c7267e86e020..d7cacaae1bbf 100644 --- a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm +++ b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm @@ -46,47 +46,12 @@ icon_state = "botany_envirosuit" item_state = "botany_envirosuit" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/clothing/under/plasmaman/mime - name = "mime envirosuit" - desc = "It's not very colourful." - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/plasmaman.dmi' - mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/plasmaman.dmi' - icon_state = "mime_envirosuit" - item_state = "mime_envirosuit" - -/obj/item/clothing/under/plasmaman/clown - name = "clown envirosuit" - desc = "'HONK!'" - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/plasmaman.dmi' - mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/plasmaman.dmi' - icon_state = "clown_envirosuit" - item_state = "clown_envirosuit" -// [/CELADON-ADD] - /obj/item/clothing/under/plasmaman/prisoner name = "prisoner envirosuit" desc = "An orange envirosuit identifying and protecting a criminal plasmaman." icon_state = "prisoner_envirosuit" item_state = "prisoner_envirosuit" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/clothing/under/plasmaman/clown/Extinguish(mob/living/carbon/human/H) - if(!istype(H)) - return - - if(H.on_fire) - if(extinguishes_left) - if(next_extinguish > world.time) - return - next_extinguish = world.time + extinguish_cooldown - extinguishes_left-- - H.visible_message(span_warning("[H]'s suit spews out a tonne of space lube!"),span_warning("Your suit spews out a tonne of space lube!")) - H.extinguish_mob() - new /obj/effect/particle_effect/foam(loc) //Truely terrifying. - return 0 -// [/CELADON-ADD] - /obj/item/clothing/under/plasmaman/command name = "captains plasma envirosuit" desc = "A navy blue envirosuit with Tartrazine gold trimmings." @@ -152,11 +117,3 @@ desc = "A navy blue envirosuit with Allura red trimmings and a poofy skirt, just as blue to match." icon_state = "hop_enviroskirt" item_state = "hop_enviroskirt" - -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/clothing/under/plasmaman/mime/skirt //WS edit plasmaman customization - name = "mime enviroskirt" - desc = "It's very colourful on the inside." - icon_state = "mime_enviroskirt" - item_state = "mime_enviroskirt" -// [/CELADON-ADD] diff --git a/code/modules/events/fax_spam.dm b/code/modules/events/fax_spam.dm index 4431604d47e9..6e647d716a31 100644 --- a/code/modules/events/fax_spam.dm +++ b/code/modules/events/fax_spam.dm @@ -1,5 +1,3 @@ -// [CELADON-REMOVE] - NEVER_TEXT_ME_AGAIN - НЕ ПИШИ СЮДА БОЛЬШЕ -/* /datum/round_event_control/fax_spam name = "Fax Spam" typepath = /datum/round_event/fax_spam @@ -49,5 +47,3 @@ /obj/item/advertisement/cliptour desc = "A pamphlet advertising tour guides on Luna-Town, most prominently an interior tour of certain restricted sections of the UNSV Lichtenstein." icon_state = "cliptour" -*/ -// [CELADON-REMOVE] diff --git a/code/modules/events/ion_storm.dm b/code/modules/events/ion_storm.dm index d1b36d30b945..83e99dbba6d2 100644 --- a/code/modules/events/ion_storm.dm +++ b/code/modules/events/ion_storm.dm @@ -339,23 +339,23 @@ switch(rand(1,2)) //Change whose job? if(1) //Change the entire crew's job switch(rand(1,3)) //Change to what? - if(1) //Change to a specific random job //if(1) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + if(1) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS message = "ALL CREWMEMBERS ARE NOW [ionadjectiveshalf][ioncrew1]" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS if(2) //Change to clowns (HONK) message = "ALL CREWMEMBERS ARE NOW [ionadjectiveshalf]CLOWNS" -// [/CELADON-ADD] + // [/CELADON-ADD] if(3) //Change to heads message = "ALL CREWMEMBERS ARE NOW [ionadjectiveshalf]HEADS OF STAFF" if(2) //Change a specific crewmember's job switch(rand(1,3)) //Change to what? - if(1) //Change to a specific random job //if(1 to 2) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + if(1) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS message = "THE [ioncrew1] ARE NOW [ionadjectiveshalf][ioncrew2]" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS if(2) //Change to clowns (HONK) message = "THE [ioncrew1] ARE NOW [ionadjectiveshalf]CLOWNS" -// [/CELADON-ADD] + // [/CELADON-ADD] if(3) //Change to heads message = "THE [ioncrew1] ARE NOW [ionadjectiveshalf]HEADS OF STAFF" diff --git a/code/modules/events/wizard/departmentrevolt.dm b/code/modules/events/wizard/departmentrevolt.dm index 2859340a7989..832777d57a3e 100644 --- a/code/modules/events/wizard/departmentrevolt.dm +++ b/code/modules/events/wizard/departmentrevolt.dm @@ -30,7 +30,7 @@ jobs_to_revolt = list("Quartermaster", "Cargo Technician", "Shaft Miner") nation_name = pick("Cargo", "Guna", "Suppli", "Mule", "Crate", "Ore", "Mini", "Shaf") if("whatevercolorrepresentstheservicepeople") //the few, the proud, the technically aligned - jobs_to_revolt = list("Bartender", "Cook", "Botanist", "Clown", "Mime", "Janitor", "Chaplain") //jobs_to_revolt = list("Bartender", "Cook", "Botanist", "Janitor", "Chaplain") // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + jobs_to_revolt = list("Bartender", "Cook", "Botanist", "Clown", "Mime", "Janitor", "Chaplain") // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS nation_name = pick("Honka", "Boozo", "Fatu", "Danka", "Mimi", "Libra", "Jani", "Religi") nation_name += pick("stan", "topia", "land", "nia", "ca", "tova", "dor", "ador", "tia", "sia", "ano", "tica", "tide", "cis", "marea", "co", "taoide", "slavia", "stotzka") diff --git a/code/modules/faction/faction_datum.dm b/code/modules/faction/faction_datum.dm index e496add8c9f6..94fe67d18351 100644 --- a/code/modules/faction/faction_datum.dm +++ b/code/modules/faction/faction_datum.dm @@ -143,6 +143,14 @@ prefixes = PREFIX_PGF color = "#359829" +/datum/faction/zohil // in case anyone wants to give zohil a ship + name = FACTION_ZOHIL + short_name = "ZHL" + parent_faction = /datum/faction/zohil + official_language = /datum/language/zohil_kalixcian + prefixes = PREFIX_ZOHIL + color = "#6b2ba0" + /datum/faction/independent name = FACTION_INDEPENDENT short_name = "IND" diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 14898ce4762e..6abe330e9248 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -279,20 +279,6 @@ GLOBAL_LIST_INIT(hallucination_list, list( to_chat(target, span_notice("[xeno_name] scrambles into the ventilation ducts!")) qdel(src) -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/effect/hallucination/simple/clown - image_icon = 'icons/mob/animal.dmi' - image_state = "clown" - -/obj/effect/hallucination/simple/clown/Initialize(mapload, mob/living/carbon/T, duration) - ..(loc, T) - name = pick(GLOB.clown_names) - QDEL_IN(src,duration) - -/obj/effect/hallucination/simple/clown/scary - image_state = "scary_clown" -// [/CELADON-ADD] - /obj/effect/hallucination/simple/bubblegum name = "Bubblegum" image_icon = 'icons/mob/lavaland/96x96megafauna.dmi' diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index 4da2353406d3..c7950149ba57 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -141,12 +141,14 @@ new_icon.SwapColor(rgb(255, 0, 220, 255), rgb(0, 0, 0, 0)) smashed_bottle.icon = new_icon smashed_bottle.name = "broken [name]" + // CELADON EDIT START if(ranged) var/matrix/M = matrix(smashed_bottle.transform) M.Turn(rand(-170, 170)) smashed_bottle.transform = M smashed_bottle.pixel_x = rand(-12, 12) smashed_bottle.pixel_y = rand(-12, 12) + // CELADON EDIT END if(prob(33)) var/obj/item/shard/new_shard = new(drop_location()) if(target) diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_egg.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_egg.dm index 25bc86c60f02..576fc97e8dbc 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_egg.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_egg.dm @@ -58,7 +58,7 @@ /obj/item/food/grown/cabbage = 1, ) result = /obj/item/food/eggwrap - subcategory = CAT_EGG + category = CAT_EGG /datum/crafting_recipe/food/chawanmushi name = "Chawanmushi" @@ -69,4 +69,4 @@ /obj/item/food/grown/mushroom/chanterelle = 1 ) result = /obj/item/food/chawanmushi - subcategory = CAT_EGG + category = CAT_EGG diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm index 097fced43084..2f28c863ac9a 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_misc.dm @@ -8,7 +8,7 @@ /obj/item/food/cheese/wedge = 1 ) result = /obj/item/food/loaded_baked_potato - subcategory = CAT_MISCFOOD + category = CAT_MISCFOOD /datum/crafting_recipe/food/miras_potato name = "Miras loaded potato" diff --git a/code/modules/holiday/halloween.dm b/code/modules/holiday/halloween.dm index 043ad191601a..cd0ea082c284 100644 --- a/code/modules/holiday/halloween.dm +++ b/code/modules/holiday/halloween.dm @@ -26,11 +26,7 @@ #define SPOOKY_SKELETON 1 #define ANGRY_FAITHLESS 2 #define SCARY_BATS 3 -// [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS -//#define HOWLING_GHOST 4 -#define INSANE_CLOWN 4 -#define HOWLING_GHOST 5 -// [/CELADON-EDIT] +#define HOWLING_GHOST 4 //Spookoween variables /obj/structure/closet @@ -102,7 +98,6 @@ var/mob/living/simple_animal/hostile/faithless/F = new(loc) trapped = 0 QDEL_IN(F, 120) - // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS else if(trapped == INSANE_CLOWN) visible_message("...") @@ -189,80 +184,3 @@ category = "Holiday" item = /obj/item/card/emag/halloween surplus = 0 - -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/////////////////////////// -//Spookoween Insane Clown// -/////////////////////////// - -///Insane clown mob. Basically a clown that haunts you. -/mob/living/simple_animal/hostile/clown_insane - name = "insane clown" - desc = "Some clowns do not manage to be accepted, and go insane. This is one of them." - icon = 'icons/mob/clown_mobs.dmi' - icon_state = "scary_clown" - icon_living = "scary_clown" - icon_dead = "scary_clown" - icon_gib = "scary_clown" - speak = list("...", ". . .") - maxHealth = 1e6 - health = 1e6 - emote_see = list("silently stares") - unsuitable_atmos_damage = 0 - var/timer - -/mob/living/simple_animal/hostile/clown_insane/Initialize() - . = ..() - status_flags |= GODMODE //Slightly easier to maintain. - -/mob/living/simple_animal/hostile/clown_insane/Destroy() - timer = null - return ..() - -/mob/living/simple_animal/hostile/clown_insane/ex_act() - return - -///Adds a timer to call stalk() on Aggro -/mob/living/simple_animal/hostile/clown_insane/Aggro() - . = ..() - timer = addtimer(CALLBACK(src, PROC_REF(stalk)), 30, TIMER_STOPPABLE|TIMER_UNIQUE) - -/mob/living/simple_animal/hostile/clown_insane/LoseAggro() - . = ..() - if(timer) - deltimer(timer) - timer = null - -///Plays scary noises and adds some timers. -/mob/living/simple_animal/hostile/clown_insane/proc/stalk() - var/mob/living/M = target - if(!istype(M)) - LoseAggro() - return - if(M.stat == DEAD) - playsound(M.loc, 'sound/spookoween/insane_low_laugh.ogg', 100, TRUE) - qdel(src) - return - playsound(M, pick('sound/spookoween/scary_horn.ogg','sound/spookoween/scary_horn2.ogg', 'sound/spookoween/scary_horn3.ogg'), 100, TRUE) - timer = addtimer(CALLBACK(src, PROC_REF(stalk)), 30, TIMER_STOPPABLE|TIMER_UNIQUE) - addtimer(CALLBACK(src, PROC_REF(teleport_to_target)), 12, TIMER_STOPPABLE|TIMER_UNIQUE) - -///Does what's in the name. Teleports to target.loc. Called from a timer. -/mob/living/simple_animal/hostile/clown_insane/proc/teleport_to_target() - if(target && isturf(target.loc)) //Hiding in lockers works to get rid of this thing. - forceMove(target.loc) - -/mob/living/simple_animal/hostile/clown_insane/MoveToTarget() - return - -/mob/living/simple_animal/hostile/clown_insane/AttackingTarget() - return - -/mob/living/simple_animal/hostile/clown_insane/adjustHealth(amount, updating_health = TRUE, forced = FALSE) - . = 0 - if(prob(5)) - playsound(loc, 'sound/spookoween/insane_low_laugh.ogg', 300, TRUE) - -/mob/living/simple_animal/hostile/clown_insane/handle_temperature_damage() - return -// [/CELADON-ADD] diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index aa686f3d4997..f046a53ca32c 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -11,7 +11,7 @@ growing_icon = 'icons/obj/hydroponics/growing_fruits.dmi' icon_dead = "banana-dead" genes = list(/datum/plant_gene/trait/slip, /datum/plant_gene/trait/repeated_harvest) - mutatelist = list(/obj/item/seeds/banana/mime, /obj/item/seeds/banana/bluespace) //mutatelist = list(/obj/item/seeds/banana/bluespace) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + mutatelist = list(/obj/item/seeds/banana/bluespace) reagents_add = list(/datum/reagent/consumable/banana = 0.1, /datum/reagent/potassium = 0.1, /datum/reagent/consumable/nutriment/vitamin = 0.04, /datum/reagent/consumable/nutriment = 0.02) /obj/item/food/grown/banana @@ -48,46 +48,6 @@ else icon_state = "[icon_state]_3" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -// Mimana - invisible sprites are totally a feature! -/obj/item/seeds/banana/mime - name = "pack of mimana seeds" - desc = "They're seeds that grow into mimana trees. When grown, keep away from mime." - icon = 'icons/obj/hydroponics/seeds.dmi' - growing_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/growing_fruits.dmi' - icon_state = "seed-mimana" - species = "mimana" - plantname = "Mimana Tree" - product = /obj/item/food/grown/banana/mime - growthstages = 4 - mutatelist = list() - reagents_add = list(/datum/reagent/consumable/nothing = 0.1, /datum/reagent/toxin/mutetoxin = 0.1, /datum/reagent/consumable/nutriment = 0.02) - rarity = 15 - research = PLANT_RESEARCH_TIER_2 - -/obj/item/food/grown/banana/mime - seed = /obj/item/seeds/banana/mime - name = "mimana" - desc = "It's an excellent prop for a mime." - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/harvest.dmi' - lefthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/food_lefthand.dmi' - righthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/food_righthand.dmi' - icon_state = "mimana" - trash_type = /obj/item/grown/bananapeel/mimanapeel - filling_color = "#FFFFEE" - distill_reagent = /datum/reagent/consumable/ethanol/silencer - -/obj/item/grown/bananapeel/mimanapeel - seed = /obj/item/seeds/banana/mime - name = "mimana peel" - desc = "A mimana peel." - icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/harvest.dmi' - lefthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/food_lefthand.dmi' - righthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/food_righthand.dmi' - icon_state = "mimana_peel" - item_state = "mimana_peel" -// [/CELADON-ADD] - // Bluespace Banana /obj/item/seeds/banana/bluespace name = "pack of bluespace banana seeds" diff --git a/code/modules/hydroponics/grown/peas.dm b/code/modules/hydroponics/grown/peas.dm index 903cdf72ce8d..3ee0dbbc22e5 100644 --- a/code/modules/hydroponics/grown/peas.dm +++ b/code/modules/hydroponics/grown/peas.dm @@ -44,7 +44,7 @@ icon_dead = "laughpeas-dead" genes = list (/datum/plant_gene/trait/repeated_harvest, /datum/plant_gene/trait/glow/purple) mutatelist = list (/obj/item/seeds/peas/laugh/peace) - reagents_add = list (/datum/reagent/consumable/laughter = 0.05, /datum/reagent/consumable/sugar = 0.05, /datum/reagent/consumable/nutriment = 0.07) //reagents_add = list (/datum/reagent/consumable/sugar = 0.05, /datum/reagent/consumable/nutriment = 0.07) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + reagents_add = list (/datum/reagent/consumable/sugar = 0.05, /datum/reagent/consumable/nutriment = 0.07) rarity = 25 //It actually might make Central Command Officials loosen up a smidge, eh? research = PLANT_RESEARCH_TIER_2 diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm index f81ec5124ab7..5866a93a1272 100644 --- a/code/modules/hydroponics/grown/tomato.dm +++ b/code/modules/hydroponics/grown/tomato.dm @@ -72,7 +72,6 @@ icon_state = "bluetomato" bite_consumption_mod = 2 splat_type = /obj/effect/decal/cleanable/oil - distill_reagent = /datum/reagent/consumable/laughter // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS // Bluespace Tomato /obj/item/seeds/tomato/blue/bluespace diff --git a/code/modules/instruments/instrument_data/fun.dm b/code/modules/instruments/instrument_data/fun.dm index 551a54a89a5e..9bce67449639 100644 --- a/code/modules/instruments/instrument_data/fun.dm +++ b/code/modules/instruments/instrument_data/fun.dm @@ -3,13 +3,6 @@ category = "Fun" abstract_type = /datum/instrument/fun -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/datum/instrument/fun/honk - name = "!!HONK!!" - id = "honk" - real_samples = list("74"='sound/items/bikehorn.ogg') // Cluwne Heaven -// [/CELADON-ADD] - /datum/instrument/fun/signal name = "Ping" id = "ping" diff --git a/code/modules/jobs/access.dm b/code/modules/jobs/access.dm index 6de53e3e7978..a2b2a95f5d7f 100644 --- a/code/modules/jobs/access.dm +++ b/code/modules/jobs/access.dm @@ -404,10 +404,7 @@ /proc/get_all_jobs() return list("Assistant", "Captain", "Head of Personnel", "Bartender", "Cook", "Botanist", "Quartermaster", "Cargo Technician", -// [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS -// "Shaft Miner", "Janitor", "Curator", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer", - "Shaft Miner", "Clown", "Mime", "Janitor", "Curator", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer", -// [/CELADON-EDIT] + "Shaft Miner", "Janitor", "Curator", "Lawyer", "Chaplain", "Chief Engineer", "Station Engineer", "Atmospheric Technician", "Chief Medical Officer", "Medical Doctor", "Chemist", "Geneticist", "Virologist", "Paramedic", "Prisoner", "Psychologist", //WS Edit - Brig Phys / SolGov Rep "Research Director", "Scientist", "Roboticist", "Head of Security", "Warden", "Detective", "Security Officer", "Brig Physician", "SolGov Representative") //WS Edit - Brig Phys / SolGov Rep diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm index 1482d3efe4e7..eede28a064eb 100644 --- a/code/modules/jobs/job_types/chaplain.dm +++ b/code/modules/jobs/job_types/chaplain.dm @@ -30,10 +30,10 @@ B.name = pick("The Holy Bible","The Dead Sea Scrolls") if("buddhism") B.name = "The Sutras" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS if("clownism","honkmother","honk","honkism","comedy") B.name = pick("The Holy Joke Book", "Just a Prank", "Hymns to the Honkmother") -// [/CELADON-ADD] + // [/CELADON-ADD] if("chaos") B.name = "The Book of Lorgar" if("cthulhu") diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index fe1541f30f6c..7dd60d467cdd 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -33,9 +33,7 @@ dcoat = /obj/item/clothing/suit/hooded/wintercoat/medical //WS Edit - Alt Uniforms l_hand = /obj/item/storage/firstaid/medical suit_store = /obj/item/flashlight/pen/paramedic - // [CELADON-REMOVE] - CELADON_BALANCE - Убираем телескопички - // backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1) - // [/CELADON-REMOVE] + backpack_contents = list(/obj/item/melee/classic_baton/telescopic=1) backpack = /obj/item/storage/backpack/medic satchel = /obj/item/storage/backpack/satchel/med diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index e940bf8b4fb3..3edf1835de92 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -39,11 +39,8 @@ alt_suit = /obj/item/clothing/suit/ianshirt dcoat = /obj/item/clothing/suit/hooded/wintercoat/captain //WS Edit - Alt Uniforms shoes = /obj/item/clothing/shoes/sneakers/brown - // [CELADON-EDIT] - CELADON_BALANCE - Убираем телескопички - // backpack_contents = list(/obj/item/storage/box/ids=1, - // /obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1) // CELADON-EDIT - ORIGINAL - backpack_contents = list(/obj/item/storage/box/ids=1, /obj/item/modular_computer/tablet/preset/advanced = 1) - // [/CELADON-EDIT] + backpack_contents = list(/obj/item/storage/box/ids=1,\ + /obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1) backpack = /obj/item/storage/backpack/captain satchel = /obj/item/storage/backpack/satchel/cap diff --git a/code/modules/jobs/jobs.dm b/code/modules/jobs/jobs.dm index 0c854c9bca0e..53701000a96b 100644 --- a/code/modules/jobs/jobs.dm +++ b/code/modules/jobs/jobs.dm @@ -46,10 +46,6 @@ GLOBAL_LIST_INIT(service_positions, list( "Psychologist", "Lawyer", "Chaplain", -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - "Clown", - "Mime", -// [/CELADON-ADD] "Prisoner", "Assistant")) diff --git a/code/modules/language/codespeak.dm b/code/modules/language/codespeak.dm index 3d5d891eebf9..a9c87bea57f7 100644 --- a/code/modules/language/codespeak.dm +++ b/code/modules/language/codespeak.dm @@ -41,11 +41,7 @@ return to_chat(user, span_boldannounce("You start skimming through [src], and suddenly your mind is filled with codewords and responses.")) -// [CELADON-EDIT] - FIX_LANGUAGE_MIND -// user.grant_language(/datum/language/codespeak, TRUE, TRUE, LANGUAGE_MIND) // CELADON-EDIT - ORIGINAL - user.grant_language(/datum/language/codespeak, source = LANGUAGE_MIND) -// [/CELADON-EDIT] - + user.grant_language(/datum/language/codespeak, source = LANGUAGE_MIND) // [CELADON-EDIT] - FIX_LANGUAGE_MIND use_charge(user) @@ -64,11 +60,7 @@ M.visible_message(span_danger("[user] beats [M] over the head with [src]!"), span_userdanger("[user] beats you over the head with [src]!"), span_hear("You hear smacking.")) else M.visible_message(span_notice("[user] teaches [M] by beating [M.p_them()] over the head with [src]!"), span_boldnotice("As [user] hits you with [src], codewords and responses flow through your mind."), span_hear("You hear smacking.")) - M.grant_language(/datum/language/codespeak, source = LANGUAGE_MIND) -// [CELADON-EDIT] - FIX_LANGUAGE_MIND -// M.grant_language(/datum/language/codespeak, TRUE, TRUE, LANGUAGE_MIND) // CELADON-EDIT - ORIGINAL - M.grant_language(/datum/language/codespeak, source = LANGUAGE_MIND) -// [/CELADON-EDIT] + M.grant_language(/datum/language/codespeak, source = LANGUAGE_MIND) // [CELADON-EDIT] - FIX_LANGUAGE_MIND use_charge(user) /obj/item/codespeak_manual/proc/use_charge(mob/user) diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index 66e7bcd50edd..df7457445130 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -139,11 +139,6 @@ new /obj/item/reagent_containers/food/drinks/bottle/absinthe/premium(src) new /obj/item/storage/fancy/cigarettes/cigpack_cannabis(src) if(6 to 10) - new /obj/item/skateboard/pro(src) - // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - if(11 to 15) - new /mob/living/simple_animal/bot/honkbot(src) - // [/CELADON-ADD] new /obj/item/gun/ballistic/automatic/pistol/himehabu(src) new /obj/item/ammo_box/magazine/m22lr_himehabu(src) new /obj/item/ammo_box/magazine/m22lr_himehabu(src) @@ -191,10 +186,6 @@ new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/combat_drug(src) new /obj/item/reagent_containers/glass/bottle/vial/small/preloaded/stasis(src) if(65 to 66) - new /obj/item/clothing/suit/ianshirt(src) - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - new /obj/item/clothing/suit/hooded/ian_costume(src) - // [/CELADON-ADD] new /obj/item/tank/jetpack/oxygen/harness(src) if(67 to 68) for(var/i in 1 to 3) diff --git a/code/modules/mining/drill.dm b/code/modules/mining/drill.dm index f69feda2930b..ffbf7d56ff78 100644 --- a/code/modules/mining/drill.dm +++ b/code/modules/mining/drill.dm @@ -81,12 +81,6 @@ update_icon_state() if(!active && our_vein?.currently_spawning) our_vein.stop_spawning() - // [CELADON-ADD] - CELADON_FIXES - FIXES_DRILLCLASS - Дополнительная проверка для буров миссии - if(istype(src, /obj/machinery/drill/mission) && our_vein?.currently_spawning) - var/obj/machinery/drill/mission/mission_drill = src - if(mission_drill.num_current >= mission_drill.num_wanted) - our_vein.stop_spawning() - // [/CELADON-ADD] /obj/machinery/drill/Destroy() // [CELADON-ADD] - CELADON_FIXES - FIXES_DRILLCLASS - Останавливаем спавн мобов при удалении бура diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index 2d0a44d0a7e8..f6b158b9fbdb 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -11,10 +11,7 @@ heat_protection = CHEST|GROIN|LEGS|ARMS hoodtype = /obj/item/clothing/head/hooded/explorer armor = list("melee" = 15, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 50, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 50, "wound" = 10) - // [CELADON-EDIT] - CELADON_BALANCE - // allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/pinpointer/mineral, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe) // CELADON-EDIT - ORIGINAL - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/pinpointer/mineral, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe, /obj/item/kinetic_crusher) - // [/CELADON-EDIT] + allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/pinpointer/mineral, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe) resistance_flags = FIRE_PROOF supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION @@ -48,28 +45,6 @@ resistance_flags = FIRE_PROOF supports_variations = SNOUTED_VARIATION | KEPORI_VARIATION -// [CELADON-ADD] -/obj/item/clothing/mask/gas/explorer/legacy - icon = 'mod_celadon/_storage_icons/icons/items/clothing/mask/mask_explorer.dmi' - mob_overlay_icon = 'mod_celadon/_storage_icons/icons/items/clothing/mask/overlay/mask_explorer.dmi' - icon_state = "gas_explorer" - actions_types = list(/datum/action/item_action/adjust) -// [/CELADON-ADD] - -/obj/item/clothing/mask/gas/explorer/attack_self(mob/user) - adjustmask(user) - -/obj/item/clothing/mask/gas/explorer/adjustmask(user) - ..() - // [CELADON-EDIT] - CELADON_FIXES - // w_class = mask_adjusted ? WEIGHT_CLASS_NORMAL : WEIGHT_CLASS_SMALL // CELADON-EDIT - ORIGINAL - w_class = mask_adjusted ? WEIGHT_CLASS_SMALL : WEIGHT_CLASS_NORMAL - // [/CELADON-EDIT] - -/obj/item/clothing/mask/gas/explorer/folded/Initialize() - . = ..() - adjustmask() - /obj/item/clothing/suit/space/hostile_environment name = "H.E.C.K. suit" desc = "Hostile Environment Cross-Kinetic Suit: A suit overdesigned at great expense to withstand the wide variety of hazards from the outer frontier. It wasn't enough for its last owner." @@ -78,7 +53,7 @@ max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | LAVA_PROOF slowdown = 0 - armor = list("melee" = 70, "bullet" = 40, "laser" = 30, "energy" = 45, "bomb" = 70, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100, "wound" = 50) // [CELADON-EDIT] - CELADON_BALANCE + armor = list("melee" = 70, "bullet" = 40, "laser" = 30, "energy" = 45, "bomb" = 70, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100) allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/resonator, /obj/item/mining_scanner, /obj/item/t_scanner/adv_mining_scanner, /obj/item/pinpointer/mineral, /obj/item/gun/energy/kinetic_accelerator, /obj/item/pickaxe) /obj/item/clothing/suit/space/hostile_environment/Initialize() diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index 44d7e671676a..85a77cceda1e 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -40,33 +40,19 @@ . = ..() . += span_notice("Induce magnetism in an enemy by striking them with a magnetospheric wave, then hit them in melee to force a waveform collapse for [force + detonation_damage] damage.") . += span_notice("Does [force + detonation_damage + backstab_bonus] damage if the target is backstabbed, instead of [force + detonation_damage].") - // [CELADON-ADD] - RETURN_CONTENT_CRUSHER_TROPHY - Возвращаем легенду - for(var/t in trophies) - var/obj/item/crusher_trophy/T = t - . += "It has \a [T] attached, which causes [T.effect_desc()]." - // [/CELADON-ADD] /obj/item/kinetic_crusher/attack(mob/living/target, mob/living/carbon/user) if(!HAS_TRAIT(src, TRAIT_WIELDED)) return - -// [CELADON-REMOVE] - CELADON_BALANCE -/* ORIGINAL - var/atom/throw_target = get_edge_target_turf(target, user.dir) - if(!target.anchored) - target.throw_at(throw_target, rand(1,2), 2, user, gentle = TRUE) -*/ -// [/CELADON-REMOVE] + // [CELADON-REMOVE] - CELADON_BALANCE + //var/atom/throw_target = get_edge_target_turf(target, user.dir) + //if(!target.anchored) + // target.throw_at(throw_target, rand(1,2), 2, user, gentle = TRUE) + // [/CELADON-REMOVE] var/datum/status_effect/crusher_damage/C = target.has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) var/target_health = target.health ..() - // [CELADON-ADD] - RETURN_CONTENT_CRUSHER_TROPHY - Возвращаем легенду - for(var/t in trophies) - if(!QDELETED(target)) - var/obj/item/crusher_trophy/T = t - T.on_melee_hit(target, user) - // [/CELADON-ADD] if(!QDELETED(C) && !QDELETED(target)) C.total_damage += target_health - target.health //we did some damage, but let's not assume how much we did @@ -88,7 +74,7 @@ D.preparePixelProjectile(target, user, modifiers) D.firer = user D.hammer_synced = src - playsound(user, 'sound/weapons/plasma_cutter.ogg', 100, TRUE) + playsound(user, 'sound/weapons/melee/plasmacutter/plasma_cutter.ogg', 100, TRUE) D.fire() charged = FALSE update_appearance() @@ -169,8 +155,6 @@ // [CELADON-ADD] — CRUSHER_MARK_ON_MOBS if(L.stat == DEAD) return FALSE - // [/CELADON-ADD] - // [CELADON-ADD] - RETURN_CONTENT_CRUSHER_TROPHY - Возвращаем легенду var/had_effect = (L.has_status_effect(STATUS_EFFECT_CRUSHERMARK)) //used as a boolean var/datum/status_effect/crusher_mark/CM = L.apply_status_effect(STATUS_EFFECT_CRUSHERMARK, hammer_synced) if(hammer_synced) @@ -178,9 +162,6 @@ var/obj/item/crusher_trophy/T = t T.on_mark_application(target, CM, had_effect) // [/CELADON-ADD] - // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Удалено в связи возвращения легенды - // L.apply_status_effect(STATUS_EFFECT_CRUSHERMARK, hammer_synced) - // [/CELADON-REMOVE] var/target_turf = get_turf(target) if(ismineralturf(target_turf)) SSblackbox.record_feedback("tally", "pick_used_mining", 1, src.type) @@ -213,11 +194,8 @@ /obj/item/kinetic_crusher/old/update_icon_state() // [CELADON-ADD] - CELADON_FIXES ..() - // [/CELADON-ADD] item_state = "crusherold[HAS_TRAIT(src, TRAIT_WIELDED)]" // still not supported by 2hcomponent - // [CELADON-REMOVE] - CELADON_FIXES - // return ..() - // [/CELADON-REMOVE] + // [/CELADON-ADD] //100% original syndicate oc, plz do not steal. More effective against human targets then the typical crusher, with a bit of block chance. /obj/item/kinetic_crusher/syndie_crusher @@ -278,11 +256,8 @@ /obj/item/kinetic_crusher/syndie_crusher/update_icon_state() // [CELADON-ADD] - CELADON_FIXES ..() - // [/CELADON-ADD] item_state = "crushersyndie[HAS_TRAIT(src, TRAIT_WIELDED)]" // this is not icon_state and not supported by 2hcomponent - // [CELADON-REMOVE] - CELADON_FIXES - // return ..() - // [/CELADON-REMOVE] + // [/CELADON-ADD] /obj/item/kinetic_crusher/syndie_crusher/update_overlays() . = ..() diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index 2261aa17ffd1..7dd676286a41 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -32,7 +32,7 @@ else new /obj/item/disk/design_disk/modkit_disc/rapid_repeater(src) if(9) - new /obj/item/rod_of_asclepius(src) //new /obj/item/gem/bloodstone(src) // [CELADON-EDIT] - RETURN_CONTENT_NECROOLIS + new /obj/item/rod_of_asclepius(src) // [CELADON-EDIT] - RETURN_CONTENT_NECROOLIS if(10) new /obj/item/organ/heart/cursed/wizard(src) if(11) @@ -110,7 +110,7 @@ else new /obj/item/disk/design_disk/modkit_disc/rapid_repeater(src) if(9) - new /obj/item/rod_of_asclepius(src) //new /obj/item/gem/bloodstone(src) // [CELADON-EDIT] - RETURN_CONTENT_NECROOLIS + new /obj/item/rod_of_asclepius(src) // [CELADON-EDIT] - RETURN_CONTENT_NECROOLIS if(10) new /obj/item/organ/heart/cursed/wizard(src) if(11) @@ -658,10 +658,6 @@ var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionnaire) H.equip_to_slot_or_del(new hat(H), ITEM_SLOT_HEAD) H.equip_to_slot_or_del(new /obj/item/clothing/under/costume/roman(H), ITEM_SLOT_ICLOTHING) - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), ITEM_SLOT_FEET) - // [/CELADON-ADD] - H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE) H.put_in_hands(new /obj/item/melee/sword/claymore(H), TRUE) H.equip_to_slot_or_del(new /obj/item/melee/spear(H), ITEM_SLOT_BACK) @@ -713,8 +709,6 @@ walk(hit_mob, 0) //stops them mid pathing even if they're stunimmune hit_mob.apply_status_effect(/datum/status_effect/ice_block_talisman, 5 SECONDS) -// [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Удаляем для возвращения легенды -/* /datum/status_effect/ice_block_talisman id = "ice_block_talisman" duration = 40 @@ -747,9 +741,6 @@ to_chat(owner, span_notice("The cube melts!")) owner.cut_overlay(cube) UnregisterSignal(owner, COMSIG_MOVABLE_PRE_MOVE) -*/ -// [/CELADON-REMOVE] - //earthquake gauntlets /obj/item/clothing/gloves/gauntlets diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index b99e73716d45..5489b44aeb0f 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -22,9 +22,6 @@ /obj/item/mining_scanner = 2, /obj/item/t_scanner/adv_mining_scanner = 2, /obj/item/hivelordstabilizer = 3, - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - /obj/item/clothing/glasses/meson/gar = 2, - // [/CELADON-ADD] /obj/item/kinetic_crusher = 1, /obj/item/gun/energy/kinetic_accelerator = 2, /obj/item/pickaxe/silver = 1, diff --git a/code/modules/mining/ore_veins.dm b/code/modules/mining/ore_veins.dm index 09c15d0abbf3..1aaeffc73d9a 100644 --- a/code/modules/mining/ore_veins.dm +++ b/code/modules/mining/ore_veins.dm @@ -156,8 +156,6 @@ GLOBAL_LIST_EMPTY(ore_veins) /obj/structure/vein/proc/pick_tile(list/peel) if(!length(peel)) peel = turf_peel(spawn_distance_max, spawn_distance_min, src, TRUE) - if(!length(peel)) - return get_turf(src) var/turf/open/spawning_tile if(length(peel)) spawning_tile = pick(peel) @@ -278,21 +276,12 @@ GLOBAL_LIST_EMPTY(ore_veins) /obj/structure/vein/classfour mining_charges = 30 vein_class = 4 - // [CELADON-ADD] - CELADON_FIXES - FIXES_DRILLCLASS - Балансировка жил класса 4 - max_mobs = 4 // Сбалансированное количество мобов (было 6) - spawn_time = 12 SECONDS // Увеличенный интервал спавна (было 8) - wave_length = 30 SECONDS // Уменьшено для более динамичной миссии (было 45) - // [/CELADON-ADD] // // Ice planets /obj/structure/vein/ice mob_types = list( - // [CELADON-ADD] - RETURN_CONTENT - /mob/living/simple_animal/hostile/asteroid/hivelord/legion/snow/tendril = 20, - // [/CELADON-ADD] - /mob/living/simple_animal/hostile/asteroid/wolf = 30, - // /mob/living/simple_animal/hostile/asteroid/polarbear = 30, // [CELADON-REMOVE] - удаляем старый код их + /mob/living/simple_animal/hostile/asteroid/hivelord/legion/snow/tendril = 20, // [CELADON-ADD] - RETURN_CONTENT /mob/living/simple_animal/hostile/asteroid/wolf = 40, /mob/living/basic/bear/polar = 40, /mob/living/simple_animal/hostile/asteroid/hivelord/legion/snow/nest = 20, @@ -369,11 +358,8 @@ GLOBAL_LIST_EMPTY(ore_veins) /obj/item/stack/ore/bluespace_crystal = 4, /obj/item/stack/ore/ice = 8, ) - // [CELADON-ADD] - CELADON_FIXES - FIXES_DRILLCLASS - Балансировка жил класса 4 (Ice) - max_mobs = 4 // Уменьшено с 6 до 4 - spawn_time = 12 SECONDS // Увеличено с 8 до 12 секунд - wave_length = 30 SECONDS // Уменьшено с 45 до 30 секунд для более динамичной миссии - // [/CELADON-ADD] + max_mobs = 6 + spawn_time = 8 SECONDS //Jungle /obj/structure/vein/jungle @@ -430,7 +416,7 @@ GLOBAL_LIST_EMPTY(ore_veins) mob_types = list( /mob/living/simple_animal/hostile/asteroid/wolf/random = 20, /mob/living/simple_animal/hostile/poison/giant_spider/tarantula = 1, - // /mob/living/simple_animal/hostile/jungle/seedling = 5, // [CELADON-REMOVE] - FIXES_MOB_SPAWNER - Убираем нечестных цветков + // /mob/living/simple_animal/hostile/jungle/seedling = 5, // [CELADON-REMOVE] - FIXES_MOB_SPAWNER - Убираем нечестных цветков /mob/living/simple_animal/hostile/jungle/mega_arachnid = 20, /mob/living/simple_animal/hostile/jungle/mook = 30, ) @@ -593,11 +579,6 @@ GLOBAL_LIST_EMPTY(ore_veins) /obj/item/stack/ore/uranium = 5, /obj/item/stack/ore/gold = 3, ) - // [CELADON-EDIT] - CELADON_FIXES - Балансировка жил класса 4 (Rockplanet) - max_mobs = 4 // Сбалансированное количество мобов (было 6) - spawn_time = 12 SECONDS // Увеличенный интервал спавна (было 8) - wave_length = 30 SECONDS // Уменьшено для более динамичной миссии (было 45) - // [/CELADON-EDIT] //moons, have a dupe of asteroid but less of an emphasis on goliaths @@ -748,7 +729,7 @@ GLOBAL_LIST_EMPTY(ore_veins) /obj/structure/vein/shrouded mining_charges = 8 mob_types = list( - /mob/living/simple_animal/hostile/asteroid/royalcrab = 30, // [CELADON-EDIT] - ALIEN_BALANCE // /mob/living/simple_animal/hostile/asteroid/royalcrab = 50, + /mob/living/simple_animal/hostile/asteroid/royalcrab = 30, // [CELADON-EDIT] - ALIEN_BALANCE /mob/living/simple_animal/hostile/alien = 5, /mob/living/simple_animal/hostile/alien/drone = 5, /mob/living/simple_animal/hostile/alien/sentinel = 1, @@ -779,7 +760,7 @@ GLOBAL_LIST_EMPTY(ore_veins) mining_charges = 10 vein_class = 2 mob_types = list( - /mob/living/simple_animal/hostile/asteroid/royalcrab = 10, // [CELADON-EDIT] - ALIEN_BALANCE // /mob/living/simple_animal/hostile/asteroid/royalcrab = 30, + /mob/living/simple_animal/hostile/asteroid/royalcrab = 10, // [CELADON-EDIT] - ALIEN_BALANCE /mob/living/simple_animal/hostile/alien = 5, /mob/living/simple_animal/hostile/alien/drone = 5, /mob/living/simple_animal/hostile/alien/sentinel = 1, @@ -804,10 +785,10 @@ GLOBAL_LIST_EMPTY(ore_veins) vein_class = 3 mob_types = list( - /mob/living/simple_animal/hostile/asteroid/royalcrab = 5, // [CELADON-EDIT] - ALIEN_BALANCE - // /mob/living/simple_animal/hostile/asteroid/royalcrab = 10, + /mob/living/simple_animal/hostile/asteroid/royalcrab = 5, // [CELADON-EDIT] - ALIEN_BALANCE /mob/living/simple_animal/hostile/alien = 5, /mob/living/simple_animal/hostile/alien/drone = 5, - /mob/living/simple_animal/hostile/alien/sentinel = 2, // [CELADON-EDIT] - ALIEN_BALANCE // /mob/living/simple_animal/hostile/alien/sentinel = 1, + /mob/living/simple_animal/hostile/alien/sentinel = 2, // [CELADON-EDIT] - ALIEN_BALANCE /mob/living/simple_animal/hostile/alien/praetorian = 1, // [CELADON-ADD] - ALIEN_BALANCE ) diff --git a/code/modules/missions/outpost/acquire_mission.dm b/code/modules/missions/outpost/acquire_mission.dm index 5ab326a10ffa..ba585e37fa4e 100644 --- a/code/modules/missions/outpost/acquire_mission.dm +++ b/code/modules/missions/outpost/acquire_mission.dm @@ -1,5 +1,5 @@ /datum/mission/acquire - desc = "БЛЯТЬ, ОПИСАНИЕ СЛОМАЛОСЬ - СООБЩИТЕ ОБ ЭТОМ СИСТЕМНОМУ АДМИНИСТРАТОРУ!" //desc = "Get me some things." // [CELADON-EDIT] - CELADON_ECONOMY - Оповещение об ЯВНОЙ ошибке + desc = "Get me some things." /// The type of container to be spawned when the mission is accepted. var/atom/movable/container_type diff --git a/code/modules/missions/outpost/drill_mission.dm b/code/modules/missions/outpost/drill_mission.dm index abffda0af11a..826735e94352 100644 --- a/code/modules/missions/outpost/drill_mission.dm +++ b/code/modules/missions/outpost/drill_mission.dm @@ -114,14 +114,14 @@ /datum/mission/drill/classtwo name = "Class 2 core sample mission" - value = 4000 //value = 4500 // [CELADON-EDIT] - CARGO-REWORK-BALANCE + value = 4500 weight = 9 class_wanted = 2 num_wanted = 6 /datum/mission/drill/classthree name = "Class 3 core sample mission" - value = 6000 //value = 8000 // [CELADON-EDIT] - CARGO-REWORK-BALANCE + value = 8000 weight = 5 class_wanted = 3 num_wanted = 8 diff --git a/code/modules/mob/dead/crew_manifest.dm b/code/modules/mob/dead/crew_manifest.dm index a2fb7018ee34..771e2d877964 100644 --- a/code/modules/mob/dead/crew_manifest.dm +++ b/code/modules/mob/dead/crew_manifest.dm @@ -4,11 +4,7 @@ return GLOB.always_state /datum/crew_manifest/ui_status(mob/user, datum/ui_state/state) - if(!ismob(user) && !user.client) - return UI_CLOSE - if(user.stat != DEAD) - return UI_CLOSE - return UI_INTERACTIVE + return (ismob(user)) ? UI_INTERACTIVE : UI_CLOSE /datum/crew_manifest/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm index 55e4d986bba1..475672214073 100644 --- a/code/modules/mob/dead/new_player/preferences_setup.dm +++ b/code/modules/mob/dead/new_player/preferences_setup.dm @@ -9,6 +9,13 @@ gender = gender_override else gender = pick(MALE,FEMALE,PLURAL) + switch(gender) + if(MALE) + pronouns = "He" + if(FEMALE) + pronouns = "She" + if(PLURAL) + pronouns = "They" if(randomise[RANDOM_AGE] || randomise[RANDOM_AGE_ANTAG] && antag_override) age = rand(AGE_MIN,AGE_MAX) if(randomise[RANDOM_UNDERWEAR]) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/body/_body.dm b/code/modules/mob/dead/new_player/sprite_accessories/body/_body.dm new file mode 100644 index 000000000000..7d90b17c89a6 --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/body/_body.dm @@ -0,0 +1,31 @@ +/datum/sprite_accessory/body // Used for changing limb icons, doesn't need to hold the actual icon. + icon = null + icon_state = "who cares fuck you" + /// Associated list of bodyparts by zone. + var/list/replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head, + BODY_ZONE_CHEST = /obj/item/bodypart/chest, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right, + ) + /// Associated list of features granted by this chassis and their default values. + var/list/body_features = list() + ///species whitelist + var/list/allowed_species = list() + + +/* Test body for checking functionality +/datum/sprite_accessory/body/test_body + name = "testificate" + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/plasmaman, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/plasmaman, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/plasmaman, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/plasmaman, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/plasmaman, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/plasmaman, + ) + allowed_species = list(/datum/species/moth) +*/ diff --git a/code/modules/mob/dead/new_player/sprite_accessories/body/ipc.dm b/code/modules/mob/dead/new_player/sprite_accessories/body/ipc.dm new file mode 100644 index 000000000000..972203ead252 --- /dev/null +++ b/code/modules/mob/dead/new_player/sprite_accessories/body/ipc.dm @@ -0,0 +1,225 @@ +/datum/sprite_accessory/body/ipc_chassis // Used for changing limb icons, doesn't need to hold the actual icon. That's handled in ipc.dm + icon = null + icon_state = "who cares fuck you" // In order to pull the chassis correctly, we need AN icon_state(see line 36-39). It doesn't have to be useful, because it isn't used. + color_src = 0 + /// Associated list of bodyparts by zone. + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc, + ) + +/datum/sprite_accessory/body/ipc_chassis/morpheus + name = "Morpheus Cyberkinetics (Custom)" + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/morpheus, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/morpheus, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/morpheus, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/morpheus, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/morpheus, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/morpheus, + ) + color_src = MUTCOLORS + +/datum/sprite_accessory/body/ipc_chassis/bishop + name = "Bishop Cyberkinetics" + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/bishop, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/bishop, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/bishop, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/bishop, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/bishop, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/bishop, + ) + +/datum/sprite_accessory/body/ipc_chassis/bishop_v2 + name = "Bishop Cyberkinetics 2.0" + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/bishop_v2, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/bishop_v2, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/bishop_v2, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/bishop_v2, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/bishop_v2, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/bishop_v2, + ) + +/datum/sprite_accessory/body/ipc_chassis/hephaestus + name = "Hephaestus Industries" + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/hephaestus, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/hephaestus, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/hephaestus, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/hephaestus, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/hephaestus, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/hephaestus, + ) + +/datum/sprite_accessory/body/ipc_chassis/hephaestus_v2 + name = "Hephaestus Industries 2.0" + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/hephaestus_v2, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/hephaestus_v2, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/hephaestus_v2, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/hephaestus_v2, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/hephaestus_v2, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/hephaestus_v2, + ) + +/datum/sprite_accessory/body/ipc_chassis/pawsitrons + name = "Pawsitrons United" + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/pawsitrons, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/pawsitrons, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/pawsitrons, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/pawsitrons, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/pawsitrons, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/pawsitrons, + ) + +/datum/sprite_accessory/body/ipc_chassis/shellguard + name = "Shellguard Munitions Standard Series" + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/shellguard, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/shellguard, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/shellguard, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/shellguard, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/shellguard, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/shellguard, + ) + +/datum/sprite_accessory/body/ipc_chassis/ward_takahashi + name = "Ward-Takahashi Manufacturing" + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/ward_takahashi, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/ward_takahashi, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/ward_takahashi, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/ward_takahashi, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/ward_takahashi, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/ward_takahashi, + ) + +/datum/sprite_accessory/body/ipc_chassis/xion + name = "Xion Manufacturing Group" + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/xion, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/xion, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/xion, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/xion, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/xion, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/xion, + ) + +/datum/sprite_accessory/body/ipc_chassis/xion_v2 + name = "Xion Manufacturing Group 2.0" + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/xion_v2, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/xion_v2, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/xion_v2, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/xion_v2, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/xion_v2, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/xion_v2, + ) + +/datum/sprite_accessory/body/ipc_chassis/zeng_hu + name = "Zeng-Hu Pharmaceuticals" + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/zeng_hu, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/zeng_hu, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/zeng_hu, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/zeng_hu, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/zeng_hu, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/zeng_hu, + ) + +/datum/sprite_accessory/body/ipc_chassis/pgf + name = "PGF Mechanics Type-P" + color_src = MUTCOLORS + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/pgf, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/pgf, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/pgf, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/pgf, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/pgf, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/pgf, + ) + +/datum/sprite_accessory/body/ipc_chassis/pgf_type_d + name = "PGF Mechanics Type-D" + color_src = MUTCOLORS + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/pgf, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/pgf, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/pgf, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/pgf, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/pgf/type_d, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/pgf/type_d, + ) + +/datum/sprite_accessory/body/ipc_chassis/sprinter + name = "Inteq Mothership 'Sprinter' Type 1" + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/sprinter, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/sprinter, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/sprinter, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/sprinter, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/sprinter, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/sprinter, + ) + +/datum/sprite_accessory/body/ipc_chassis/sprinter_v2 + name = "Inteq Mothership 'Sprinter' Type 2" + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/sprinter/type_2, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/sprinter, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/sprinter, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/sprinter, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/sprinter, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/sprinter, + ) + +/datum/sprite_accessory/body/ipc_chassis/seeker + name = "Maxim Dynamics 'Seeker'" + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/seeker, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/seeker, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/seeker, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/seeker, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/seeker, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/seeker, + ) + +/datum/sprite_accessory/body/ipc_chassis/solferino + name = "Absolution-Lux 'Solferino'" + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/solferino, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/solferino, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/solferino, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/solferino, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/solferino, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/solferino, + ) + +/datum/sprite_accessory/body/ipc_chassis/humaniform + name = "Clover Corporation 'Humaniform'" + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/humaniform, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/humaniform, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/humaniform, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/humaniform, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/humaniform, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/humaniform, + ) + +/datum/sprite_accessory/body/ipc_chassis/cybersun + name = "Cybersun Biodynamics S Series 'Ghost'" + replacement_bodyparts = list( + BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/ghost, + BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/ghost, + BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/ghost, + BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/ghost, + BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/ghost, + BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/ghost, + ) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/ipc.dm b/code/modules/mob/dead/new_player/sprite_accessories/ipc.dm index a03782f13608..29cad2f6af63 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/ipc.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/ipc.dm @@ -294,230 +294,3 @@ name = "Pawsitrons Fox 2" icon_state = "fox2" -/datum/sprite_accessory/ipc_chassis // Used for changing limb icons, doesn't need to hold the actual icon. That's handled in ipc.dm - icon = null - icon_state = "who cares fuck you" // In order to pull the chassis correctly, we need AN icon_state(see line 36-39). It doesn't have to be useful, because it isn't used. - color_src = 0 - /// Associated list of bodyparts by zone. - var/list/chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc, - ) - /// Associated list of features granted by this chassis and their default values. - var/list/chassis_features = list() - -/datum/sprite_accessory/ipc_chassis/morpheus - name = "Morpheus Cyberkinetics (Custom)" - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/morpheus, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/morpheus, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/morpheus, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/morpheus, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/morpheus, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/morpheus, - ) - color_src = MUTCOLORS - -/datum/sprite_accessory/ipc_chassis/bishop - name = "Bishop Cyberkinetics" - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/bishop, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/bishop, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/bishop, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/bishop, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/bishop, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/bishop, - ) - -/datum/sprite_accessory/ipc_chassis/bishop_v2 - name = "Bishop Cyberkinetics 2.0" - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/bishop_v2, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/bishop_v2, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/bishop_v2, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/bishop_v2, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/bishop_v2, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/bishop_v2, - ) - -/datum/sprite_accessory/ipc_chassis/hephaestus - name = "Hephaestus Industries" - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/hephaestus, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/hephaestus, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/hephaestus, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/hephaestus, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/hephaestus, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/hephaestus, - ) - -/datum/sprite_accessory/ipc_chassis/hephaestus_v2 - name = "Hephaestus Industries 2.0" - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/hephaestus_v2, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/hephaestus_v2, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/hephaestus_v2, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/hephaestus_v2, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/hephaestus_v2, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/hephaestus_v2, - ) - -/datum/sprite_accessory/ipc_chassis/pawsitrons - name = "Pawsitrons United" - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/pawsitrons, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/pawsitrons, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/pawsitrons, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/pawsitrons, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/pawsitrons, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/pawsitrons, - ) - -/datum/sprite_accessory/ipc_chassis/shellguard - name = "Shellguard Munitions Standard Series" - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/shellguard, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/shellguard, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/shellguard, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/shellguard, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/shellguard, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/shellguard, - ) - -/datum/sprite_accessory/ipc_chassis/ward_takahashi - name = "Ward-Takahashi Manufacturing" - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/ward_takahashi, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/ward_takahashi, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/ward_takahashi, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/ward_takahashi, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/ward_takahashi, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/ward_takahashi, - ) - -/datum/sprite_accessory/ipc_chassis/xion - name = "Xion Manufacturing Group" - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/xion, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/xion, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/xion, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/xion, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/xion, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/xion, - ) - -/datum/sprite_accessory/ipc_chassis/xion_v2 - name = "Xion Manufacturing Group 2.0" - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/xion_v2, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/xion_v2, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/xion_v2, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/xion_v2, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/xion_v2, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/xion_v2, - ) - -/datum/sprite_accessory/ipc_chassis/zeng_hu - name = "Zeng-Hu Pharmaceuticals" - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/zeng_hu, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/zeng_hu, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/zeng_hu, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/zeng_hu, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/zeng_hu, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/zeng_hu, - ) - -/datum/sprite_accessory/ipc_chassis/pgf - name = "PGF Mechanics Type-P" - color_src = MUTCOLORS - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/pgf, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/pgf, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/pgf, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/pgf, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/pgf, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/pgf, - ) - -/datum/sprite_accessory/ipc_chassis/pgf_type_d - name = "PGF Mechanics Type-D" - color_src = MUTCOLORS - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/pgf, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/pgf, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/pgf, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/pgf, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/pgf/type_d, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/pgf/type_d, - ) - -/datum/sprite_accessory/ipc_chassis/sprinter - name = "Inteq Mothership 'Sprinter' Type 1" - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/sprinter, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/sprinter, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/sprinter, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/sprinter, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/sprinter, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/sprinter, - ) - -/datum/sprite_accessory/ipc_chassis/sprinter_v2 - name = "Inteq Mothership 'Sprinter' Type 2" - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/sprinter/type_2, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/sprinter, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/sprinter, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/sprinter, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/sprinter, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/sprinter, - ) - -/datum/sprite_accessory/ipc_chassis/seeker - name = "Maxim Dynamics 'Seeker'" - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/seeker, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/seeker, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/seeker, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/seeker, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/seeker, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/seeker, - ) - -/datum/sprite_accessory/ipc_chassis/solferino - name = "Absolution-Lux 'Solferino'" - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/solferino, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/solferino, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/solferino, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/solferino, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/solferino, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/solferino, - ) - -/datum/sprite_accessory/ipc_chassis/humaniform - name = "Clover Corporation 'Humaniform'" - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/humaniform, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/humaniform, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/humaniform, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/humaniform, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/humaniform, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/humaniform, - ) - -/datum/sprite_accessory/ipc_chassis/cybersun - name = "Cybersun Biodynamics S Series 'Ghost'" - chassis_bodyparts = list( - BODY_ZONE_HEAD = /obj/item/bodypart/head/ipc/ghost, - BODY_ZONE_CHEST = /obj/item/bodypart/chest/ipc/ghost, - BODY_ZONE_L_ARM = /obj/item/bodypart/l_arm/ipc/ghost, - BODY_ZONE_R_ARM = /obj/item/bodypart/r_arm/ipc/ghost, - BODY_ZONE_L_LEG = /obj/item/bodypart/leg/left/ipc/ghost, - BODY_ZONE_R_LEG = /obj/item/bodypart/leg/right/ipc/ghost, - ) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/underwear/underwear_torso.dm b/code/modules/mob/dead/new_player/sprite_accessories/underwear/underwear_torso.dm index e9e440692b4b..987690c27194 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/underwear/underwear_torso.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/underwear/underwear_torso.dm @@ -25,11 +25,9 @@ name = "Sports Bra (Alt)" icon_state = "bra_sports_alt" -/* CELADON-REPLACED /datum/sprite_accessory/undershirt/swimming name = "Swimming Top" icon_state = "swimming" -*/ /datum/sprite_accessory/undershirt/straplessbra name = "Strapless Bra" @@ -71,16 +69,10 @@ name = "One Piece Compression Top" icon_state = "compone" -// [CELADON-EDIT-REPLACED] -/datum/sprite_accessory/undershirt/swimming - name = "Swimming Top" - icon_state = "swimming" - /datum/sprite_accessory/undershirt/beekini name = "Bee-Kini Top" icon = 'mod_celadon/_storage_icons/icons/items/clothing/underwear/underwear_torso.dmi' icon_state = "beekini" -// [/CELADON-EDIT-REPLACED] // [CELADON-ADD] MARK: New Female Tops /datum/sprite_accessory/undershirt/tank_midriff @@ -129,7 +121,7 @@ name = "EX - Bandages" icon = 'mod_celadon/_storage_icons/icons/items/clothing/underwear/underwear_torso.dmi' icon_state = "bandages" -// [/CELADON-ADD] +// [/CELADON-ADD] // MARK: Normal Shirt diff --git a/code/modules/mob/living/basic/space_fauna/bear/bear.dm b/code/modules/mob/living/basic/space_fauna/bear/bear.dm index 4820302019f3..e13771447844 100644 --- a/code/modules/mob/living/basic/space_fauna/bear/bear.dm +++ b/code/modules/mob/living/basic/space_fauna/bear/bear.dm @@ -131,7 +131,7 @@ move_resist = MOVE_FORCE_VERY_STRONG butcher_results = list(/obj/item/food/meat/slab/bear = 3, /obj/item/stack/sheet/bone = 2) guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/goliath_hide/polar_bear_hide = 1) - var/mob_trophy = /obj/item/crusher_trophy/bear_paw // [/CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY + var/mob_trophy = /obj/item/mob_trophy/bear_paw var/trophy_drop_mod = 25 //footstep_type = FOOTSTEP_MOB_CLAW /// Message for when the polar bear starts to attack faster @@ -177,7 +177,7 @@ maxHealth = 300 health = 300 obj_damage = 60 - //mob_trophy = /obj/item/mob_trophy/war_paw + mob_trophy = /obj/item/mob_trophy/war_paw trophy_drop_mod = 75 butcher_results = list(/obj/item/food/meat/slab/bear = 3, /obj/item/stack/sheet/bone = 2, /obj/item/stack/sheet/animalhide/goliath_hide/polar_bear_hide = 3) guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/goliath_hide/polar_bear_hide = 3, /obj/item/bear_armor = 1) diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index 41375a7fd55f..646d485837bc 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -218,8 +218,6 @@ /mob/living/carbon/proc/spray_blood(splatter_direction, splatter_strength = 3) if(!isturf(loc)) return - if((NOBLOOD in dna.species.species_traits)) // [CELADON - ADD] LANIUS - return var/obj/effect/decal/cleanable/blood/hitsplatter/our_splatter = new(loc) our_splatter.blood_dna_info = get_blood_dna_list() diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index ff13607d5581..2138928564f5 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -61,16 +61,13 @@ else mode() // Activate held item -/mob/living/carbon/attackby(obj/item/I, mob/user, params) - if(!all_wounds || !(user.a_intent == INTENT_HELP || user == src)) - return ..() - - for(var/i in shuffle(all_wounds)) - var/datum/wound/W = i - if(W.try_treating(I, user)) - return 1 - - return ..() +/mob/living/carbon/handle_tool_treatment(obj/item/tool, mob/living/user, list/modifiers) + . = ..() + if(. || !all_wounds || !(user.a_intent == INTENT_HELP || user == src)) + return + for(var/datum/wound/iterated_wound as anything in shuffle(all_wounds)) + if(iterated_wound.try_treating(tool, user)) + return TRUE /mob/living/carbon/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) . = ..() @@ -637,7 +634,6 @@ see_invisible = max(headslot.invis_view, see_invisible) if(!isnull(headslot.lighting_alpha)) lighting_alpha = min(lighting_alpha, headslot.lighting_alpha) - // [CELADON-ADD] - CELADON_RETURN_CONTENT_QUIRKS if(HAS_TRAIT(src, TRAIT_NIGHT_VISION)) lighting_alpha = min(lighting_alpha, LIGHTING_PLANE_ALPHA_NV_TRAIT) diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 3c6ad58e07d0..996853a5ed06 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -88,7 +88,7 @@ if(I.force) var/attack_direction = get_dir(user, src) apply_damage(I.force, I.damtype, affecting, wound_bonus = I.wound_bonus, bare_wound_bonus = I.bare_wound_bonus, sharpness = I.get_sharpness(), attack_direction = attack_direction) - if(I.damtype == BRUTE && (IS_ORGANIC_LIMB(affecting))) + if(I.damtype == BRUTE && affecting.can_bleed()) if(prob(33)) I.add_mob_blood(src) var/turf/location = get_turf(src) @@ -117,18 +117,38 @@ return var/extra_wound_details = "" - // [CELADON-EDIT] - FIXES_RUNTIMES - Проверяем не только конкретный параметр у хит бодипарт, но и самого родителя на наличие - // if(I.damtype == BRUTE && hit_bodypart.can_dismember()) // ORIGINAL - if(I.damtype == BRUTE && istype(hit_bodypart, /obj/item/bodypart) && hit_bodypart.can_dismember()) - // [/CELADON-EDIT] + + if(I.damtype == BRUTE && istype(hit_bodypart, /obj/item/bodypart) && hit_bodypart.can_dismember()) // [CELADON-EDIT] - FIXES_RUNTIMES - Проверяем не только конкретный параметр у хит бодипарт, но и самого родителя на наличие + var/mangled_state = hit_bodypart.get_mangled_state() - var/bio_state = get_biological_state() - if(mangled_state == BODYPART_MANGLED_BOTH) + + var/bio_status = hit_bodypart.get_bio_state_status() + + var/has_exterior = ((bio_status & ANATOMY_EXTERIOR)) + var/has_interior = ((bio_status & ANATOMY_INTERIOR)) + + var/exterior_ready_to_dismember = (!has_exterior || ((mangled_state & BODYPART_MANGLED_EXTERIOR))) + var/interior_ready_to_dismember = (!has_interior || ((mangled_state & BODYPART_MANGLED_INTERIOR))) + + var/dismemberable = ((hit_bodypart.dismemberable_by_wound()) || hit_bodypart.dismemberable_by_total_damage()) + if (dismemberable) extra_wound_details = ", threatening to sever it entirely" - else if((mangled_state == BODYPART_MANGLED_FLESH && I.get_sharpness()) || (mangled_state & BODYPART_MANGLED_BONE && bio_state == BIO_JUST_BONE)) - extra_wound_details = ", [I.get_sharpness() == SHARP_EDGED ? "slicing" : "piercing"] through to the bone" - else if((mangled_state == BODYPART_MANGLED_BONE && I.get_sharpness()) || (mangled_state & BODYPART_MANGLED_FLESH && bio_state == BIO_JUST_FLESH)) - extra_wound_details = ", [I.get_sharpness() == SHARP_EDGED ? "slicing" : "piercing"] at the remaining tissue" + else + var/sharpness = I.get_sharpness() + var/sharpness_text + switch(sharpness) + if(SHARP_EDGED) + sharpness_text = "slicing" + if(SHARP_POINTY) + sharpness_text = "piercing" + else + sharpness_text = "smashing" + if((has_interior && (has_exterior && exterior_ready_to_dismember) && I.get_sharpness())) + var/bone_text = hit_bodypart.get_internal_description() + extra_wound_details = ", [sharpness_text] through to the [bone_text]" + else if(has_exterior && ((has_interior && interior_ready_to_dismember) && I.get_sharpness())) + var/tissue_text = hit_bodypart.get_external_description() + extra_wound_details = ", [sharpness_text] at the remaining [tissue_text]" var/message_hit_area = "" if(hit_area) @@ -141,7 +161,7 @@ attack_message_local = "[user] [message_verb] you[message_hit_area] with [I][extra_wound_details]!" if(user == src) - attack_message_local = "You [message_verb] yourself[message_hit_area] with [I][extra_wound_details]" + attack_message_local = "You [message_verb] yourself[message_hit_area] with [I][extra_wound_details]!" visible_message( span_danger("[attack_message]"), span_userdanger("[attack_message_local]"), null, COMBAT_MESSAGE_RANGE, @@ -624,10 +644,13 @@ . = ..() var/damage = intensity - get_eye_protection() - if(.) // we've been flashed + if(. & FLASH_DAMAGE) // we've been flashed if(visual) return + if(!damage) + return + if (damage == 1) to_chat(src, span_warning("Your eyes sting a little.")) if(prob(40)) @@ -658,8 +681,7 @@ else to_chat(src, span_warning("Your eyes are really starting to hurt. This can't be good for you!")) - return 1 - else if(damage == 0) // just enough protection + else if(!is_blind()) // just enough protection if(prob(20)) to_chat(src, span_notice("Something bright flashes in the corner of your vision!")) @@ -737,7 +759,7 @@ self_grasp_bleeding_limb(grasped_part, supress_message) /mob/living/carbon/proc/self_grasp_bleeding_limb(obj/item/bodypart/grasped_part, supress_message = FALSE) - if(!grasped_part?.get_part_bleed_rate()) + if(!grasped_part?.can_be_grasped()) return var/starting_hand_index = active_hand_index @@ -745,15 +767,13 @@ to_chat(src, span_danger("You can't grasp your [grasped_part.name] with itself!")) return - to_chat(src, span_warning("You try grasping at your [grasped_part.name], trying to stop the bleeding...")) + var/bleed_rate = grasped_part.get_part_bleed_rate() + var/bleeding_text = (bleed_rate ? ", trying to stop the bleeding" : "") + to_chat(src, span_warning("You try grasping at your [grasped_part.name][bleeding_text]...")) if(!do_after(src, 0.5 SECONDS)) to_chat(src, span_danger("You fail to grasp your [grasped_part.name].")) return - // [CELADON-ADD] - FIXES_CQC_GRAB - if(!grasped_part.get_part_bleed_rate()) - return - // [/CELADON-ADD] var/obj/item/self_grasp/grasp = new if(starting_hand_index != active_hand_index || !put_in_active_hand(grasp)) to_chat(src, span_danger("You fail to grasp your [grasped_part.name].")) @@ -761,6 +781,17 @@ return grasp.grasp_limb(grasped_part) +/// If TRUE, the owner of this bodypart can try grabbing it to slow bleeding, as well as various other effects. +/obj/item/bodypart/proc/can_be_grasped() + if (get_part_bleed_rate()) + return TRUE + + for (var/datum/wound/iterated_wound as anything in wounds) + if (iterated_wound.wound_flags & CAN_BE_GRASPED) + return TRUE + + return FALSE + /// an abstract item representing you holding your own limb to staunch the bleeding, see [/mob/living/carbon/proc/grabbedby] will probably need to find somewhere else to put this. /obj/item/self_grasp name = "self-grasp" @@ -806,8 +837,10 @@ RegisterSignal(user, COMSIG_QDELETING, PROC_REF(qdel_void)) RegisterSignal(grasped_part, list(COMSIG_CARBON_REMOVE_LIMB, COMSIG_QDELETING), PROC_REF(qdel_void)) + var/bleed_rate = grasped_part.get_part_bleed_rate() + var/bleeding_text = (bleed_rate ? ", trying to stop the bleeding" : "") user.visible_message( - span_danger("[user] grasps at [user.p_their()] [grasped_part.name], trying to stop the bleeding."), + span_danger("[user] grasps at [user.p_their()] [grasped_part.name][bleeding_text]."), span_notice("You grab hold of your [grasped_part.name] tightly."), vision_distance=COMBAT_MESSAGE_RANGE, ) diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index 09f59ebd2703..b8d9c80fe2d6 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -91,6 +91,9 @@ /// All of the wounds a carbon has afflicted throughout their limbs var/list/all_wounds + /// Assoc list of BODY_ZONE -> wounding_type. Set when a limb is dismembered, unset when one is attached. Used for determining what scar to add when it comes time to generate them. + var/list/body_zone_dismembered_by + /// Levels of moth dust var/mothdust diff --git a/code/modules/mob/living/carbon/carbon_movement.dm b/code/modules/mob/living/carbon/carbon_movement.dm index 584e74d72c41..73128c372918 100644 --- a/code/modules/mob/living/carbon/carbon_movement.dm +++ b/code/modules/mob/living/carbon/carbon_movement.dm @@ -62,7 +62,7 @@ /mob/living/carbon/on_movement_type_flag_enabled(datum/source, flag) var/old_movetype = movement_type . = ..() - if(flag & (FLYING | FLOATING) && !(old_movetype & (FLYING | FLOATING))) + if(flag & (FLYING | FLOATING) && (old_movetype & (FLYING | FLOATING))) remove_movespeed_modifier(/datum/movespeed_modifier/limbless) REMOVE_TRAIT(src, TRAIT_FLOORED, LACKING_LOCOMOTION_APPENDAGES_TRAIT) REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, LACKING_LOCOMOTION_APPENDAGES_TRAIT) diff --git a/code/modules/mob/living/carbon/damage_procs.dm b/code/modules/mob/living/carbon/damage_procs.dm index 899783042f15..4fd2e46f806a 100644 --- a/code/modules/mob/living/carbon/damage_procs.dm +++ b/code/modules/mob/living/carbon/damage_procs.dm @@ -88,11 +88,11 @@ heal_overall_damage(abs(amount), 0, 0, required_status, updating_health) return amount -/mob/living/carbon/adjustFireLoss(amount, updating_health = TRUE, forced = FALSE, required_status) +/mob/living/carbon/adjustFireLoss(amount, updating_health = TRUE, forced = FALSE, required_status, ignore_reduction = 0) if(!forced && (status_flags & GODMODE)) return FALSE if(amount > 0) - take_overall_damage(0, amount, 0, updating_health, required_status) + take_overall_damage(0, amount, 0, updating_health, required_status, ignore_reduction) else if(!required_status) required_status = forced ? null : BODYTYPE_ORGANIC @@ -273,7 +273,7 @@ update_damage_overlays() /// damage MANY bodyparts, in random order -/mob/living/carbon/take_overall_damage(brute = 0, burn = 0, stamina = 0, updating_health = TRUE, required_status) +/mob/living/carbon/take_overall_damage(brute = 0, burn = 0, stamina = 0, updating_health = TRUE, required_status, ignore_reduction = 0) if(status_flags & GODMODE) return //godmode @@ -290,7 +290,7 @@ var/stamina_was = picked.stamina_dam - update |= picked.receive_damage(brute_per_part, burn_per_part, stamina_per_part, FALSE, required_status, wound_bonus = CANT_WOUND) + update |= picked.receive_damage(brute_per_part, burn_per_part, stamina_per_part, FALSE, required_status, wound_bonus = CANT_WOUND, ignore_reduction = ignore_reduction) brute = round(brute - (picked.brute_dam - brute_was), DAMAGE_PRECISION) burn = round(burn - (picked.burn_dam - burn_was), DAMAGE_PRECISION) diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm index 83d11fa6dfa4..09a4b2b1ea27 100644 --- a/code/modules/mob/living/carbon/emote.dm +++ b/code/modules/mob/living/carbon/emote.dm @@ -186,16 +186,10 @@ return var/obj/item/slapper/N = new(user) if(user.put_in_hands(N)) - // [CELADON-EDIT] - CELADON_COMPONENTS_EMOTE - Эмоции - // to_chat(user, "You ready your slapping hand.") // CELADON-EDIT - ORIGINAL to_chat(user, span_notice("Вы приготовили свою руку для пощечины.")) - // [/CELADON-EDIT] else qdel(N) - // [CELADON-EDIT] - CELADON_COMPONENTS_EMOTE - Эмоции - // to_chat(user, "You're incapable of slapping in your current state.") // CELADON-EDIT - ORIGINAL to_chat(user, span_warning("В текущем состоянии ты не можешь дать пощечину.")) - // [/CELADON-EDIT] /datum/emote/living/carbon/noogie key = "noogie" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index f22c3d98fdf2..bb52f0c40c5e 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -53,10 +53,7 @@ sec_hud_set_ID() sec_hud_set_implants() sec_hud_set_security_status() - // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - //...fan gear - fan_hud_set_fandom() - // [/CELADON-ADD] + fan_hud_set_fandom() // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS //...and display them. add_to_all_human_data_huds() @@ -504,10 +501,9 @@ /mob/living/carbon/human/proc/canUseHUD() return (mobility_flags & MOBILITY_USE) -/* // [CELADON-REMOVE] - NO-HARDER-REPAIR-IPC - Это используется только под IPC - Они и так через фичу обходят этот момент, так что зачем усложнять все? //ohh god this'll need to be reworked into a zone-by-zone selection, rather than just "are yuor jorts thick" -/mob/living/carbon/human/proc/is_exposed(mob/user, error_msg, target_zone) +/mob/living/carbon/human/is_exposed(mob/user, target_zone, error_msg) . = TRUE // Default to returning true. if(user && !target_zone) target_zone = user.zone_selected @@ -528,7 +524,7 @@ if(!. && error_msg && user) // Might need re-wording. to_chat(user, span_alert("There is no exposed flesh or thin material [above_neck(target_zone) ? "on [p_their()] head" : "on [p_their()] body"].")) -*/ // [/CELADON-REMOVE] + /mob/living/carbon/human/can_inject(mob/user, target_zone, injection_flags) . = TRUE // Default to returning true. @@ -899,8 +895,8 @@ if(!body_part) continue var/numbing_wound = FALSE - for(var/datum/wound/W in body_part.wounds) - if(W.wound_type == WOUND_BURN) + for(var/datum/wound/iterated_wound in body_part.wounds) + if(iterated_wound.wound_flags & NUMBS_BODYPART) numbing_wound = TRUE var/damage = body_part.burn_dam + body_part.brute_dam @@ -1259,6 +1255,8 @@ visible_message(span_notice("[target] starts to climb onto [src]...")) if(do_after(target, 15, target = src)) if(can_piggyback(target)) + if(target.buckled) + target.buckled.unbuckle_mob(target) if(target.incapacitated(FALSE, TRUE) || incapacitated(FALSE, TRUE)) target.visible_message(span_warning("[target] can't hang onto [src]!")) return diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index c1df99934cae..d31c75f2bf7f 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -469,24 +469,8 @@ switch (severity) if (EXPLODE_DEVASTATE) - if(bomb_armor < EXPLODE_GIB_THRESHOLD) //gibs the mob if their bomb armor is lower than EXPLODE_GIB_THRESHOLD - for(var/I in contents) - var/atom/A = I - if(!QDELETED(A)) - switch(severity) - if(EXPLODE_DEVASTATE) - SSexplosions.highobj += A - if(EXPLODE_HEAVY) - SSexplosions.medobj += A - if(EXPLODE_LIGHT) - SSexplosions.lowobj += A - gib() - return - else - brute_loss = 500 - var/atom/throw_target = get_edge_target_turf(src, get_dir(src, get_step_away(src, src))) - throw_at(throw_target, 200, 4) - damage_clothes(400 - bomb_armor, BRUTE, "bomb") + brute_loss = 500 + damage_clothes(400 - bomb_armor, BRUTE, "bomb") if (EXPLODE_HEAVY) brute_loss = 35 diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index c8bb18f91701..3b8ef7772829 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -86,7 +86,5 @@ /// Height of the mob VAR_PROTECTED/mob_height = HUMAN_HEIGHT_MEDIUM -// [CELADON-ADD] - CELADON_EMOTES -/mob/living/carbon/human/proc/get_age_pitch(species_pitch = 85) - return 1.0 + 0.5 * ((species_pitch * 0.35) - age) / (0.94 * species_pitch) -// [/CELADON-ADD] + /// Pronouns of the mob + var/pronouns = null // all pronoun stuff is for players and will read gender for pronouns if this is null diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index 5d5e1225134e..aab8b681bf50 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -27,10 +27,7 @@ return ..() /mob/living/carbon/human/mob_negates_gravity() -// [CELADON-EDIT] - CELADON_FIXES -// return dna.species.negates_gravity(src) || ..() // CELADON-EDIT - ORIGINAL - return (shoes && shoes.negates_gravity()) || dna.species.negates_gravity(src) || ..() -// [/CELADON-EDIT] + return dna.species.negates_gravity(src) || ..() /mob/living/carbon/human/Move(NewLoc, direct) . = ..() diff --git a/code/modules/mob/living/carbon/human/human_say.dm b/code/modules/mob/living/carbon/human/human_say.dm index 79f0acf1d645..eacbc0d0acd0 100644 --- a/code/modules/mob/living/carbon/human/human_say.dm +++ b/code/modules/mob/living/carbon/human/human_say.dm @@ -6,6 +6,11 @@ var/obj/item/organ/tongue/T = src.getorganslot(ORGAN_SLOT_TONGUE) if(T) verb_say = T.say_mod + verb_ask = T.ask_mod + verb_exclaim = T.exclaim_mod + verb_whisper = T.whisper_mod + verb_sing = T.sing_mod + verb_yell = T.yell_mod if(slurring) return "slurs" return ..() diff --git a/code/modules/mob/living/carbon/human/init_signals.dm b/code/modules/mob/living/carbon/human/init_signals.dm index ad071573d5d3..f9ad41c2d5c5 100644 --- a/code/modules/mob/living/carbon/human/init_signals.dm +++ b/code/modules/mob/living/carbon/human/init_signals.dm @@ -5,6 +5,9 @@ RegisterSignals(src, list(SIGNAL_ADDTRAIT(TRAIT_UNKNOWN), SIGNAL_REMOVETRAIT(TRAIT_UNKNOWN)), PROC_REF(on_unknown_trait)) RegisterSignals(src, list(SIGNAL_ADDTRAIT(TRAIT_DWARF), SIGNAL_REMOVETRAIT(TRAIT_DWARF)), PROC_REF(on_dwarf_trait)) + RegisterSignal(src, COMSIG_MOVETYPE_FLAG_ENABLED, PROC_REF(on_movement_type_flag_enabled)) + RegisterSignal(src, COMSIG_MOVETYPE_FLAG_DISABLED, PROC_REF(on_movement_type_flag_disabled)) + /// Gaining or losing [TRAIT_UNKNOWN] updates our name and our sechud /mob/living/carbon/human/proc/on_unknown_trait(datum/source) SIGNAL_HANDLER diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 9d64166b5203..56b2c0735bdd 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1897,7 +1897,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) //if((M != H) && M.a_intent != INTENT_HELP && H.check_shields(M, 0, M.name, attack_type = UNARMED_ATTACK : MELEE_ATTACK) //[CELADON-EDIT] A little martial arts buff log_combat(M, H, "attempted to touch") - H.visible_message(span_warning("[M] attempts to touch [H]!"), + H.visible_message(span_warning("[M] attempts to touch [H]!"), \ span_danger("[M] attempts to touch you!"), span_hear("You hear a swoosh!"), COMBAT_MESSAGE_RANGE, M) to_chat(M, span_warning("You attempt to touch [H]!")) M.changeNext_move(CLICK_CD_BLOCKED) @@ -2634,14 +2634,4 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/get_harm_descriptors() return -/** - * The human species version of [/mob/living/carbon/proc/get_biological_state]. Depends on the HAS_FLESH and HAS_BONE species traits, having bones lets you have bone wounds, having flesh lets you have burn, slash, and piercing wounds - */ -/datum/species/proc/get_biological_state(mob/living/carbon/human/H) - . = BIO_INORGANIC - if(HAS_FLESH in species_traits) - . |= BIO_JUST_FLESH - if(HAS_BONE in species_traits) - . |= BIO_JUST_BONE - #undef MINIMUM_MOLS_TO_HARM diff --git a/code/modules/mob/living/carbon/human/species_types/IPC.dm b/code/modules/mob/living/carbon/human/species_types/IPC.dm index a058f0cb95b1..ac9e452d06a5 100644 --- a/code/modules/mob/living/carbon/human/species_types/IPC.dm +++ b/code/modules/mob/living/carbon/human/species_types/IPC.dm @@ -3,10 +3,7 @@ id = SPECIES_IPC species_age_min = 0 species_age_max = 300 - // [CELADON-EDIT] - CELADON_FOOD_AND_DRINKS - Всё для того чтобы ИПС могли пить синтанол и припой - // species_traits = list(NOTRANSSTING,NOEYESPRITES,NO_DNA_COPY,TRAIT_EASYDISMEMBER,NOZOMBIE,MUTCOLORS,REVIVESBYHEALING,NOHUSK,NOMOUTH) //all of these + whatever we inherit from the real species // CELADONE-EDIT - ORIGINAL - species_traits = list(HAIR,NOTRANSSTING,NO_DNA_COPY,TRAIT_EASYDISMEMBER,NOZOMBIE,MUTCOLORS,REVIVESBYHEALING,NOHUSK,NOMOUTH) //all of these + whatever we inherit from the real species - // [/CELADON-EDIT] + species_traits = list(HAIR,NOTRANSSTING,NO_DNA_COPY,NOZOMBIE,MUTCOLORS,REVIVESBYHEALING,NOHUSK,NOMOUTH) //all of these + whatever we inherit from the real species inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_VIRUSIMMUNE,TRAIT_NOBREATH,TRAIT_RADIMMUNE,TRAIT_GENELESS,TRAIT_LIMBATTACHMENT) inherent_biotypes = MOB_ROBOTIC|MOB_HUMANOID mutantbrain = /obj/item/organ/brain/mmi_holder/posibrain @@ -20,7 +17,7 @@ mutantappendix = null mutant_organs = list(/obj/item/organ/cyberimp/arm/power_cord) mutant_bodyparts = list("ipc_screen", "ipc_antenna", "ipc_chassis", "ipc_tail", "ipc_brain") - default_features = list("mcolor" = "#7D7D7D", "ipc_screen" = "Static", "ipc_antenna" = "None", "ipc_chassis" = "Morpheus Cyberkinetics (Custom)", "ipc_tail" = "None", "ipc_brain" = "Posibrain", "body_size" = "Normal") // [CELADON-ADD] - CELADON_IPC_HAIR + default_features = list("mcolor" = "#7D7D7D", "ipc_screen" = "Static", "ipc_antenna" = "None", "ipc_chassis" = "Morpheus Cyberkinetics (Custom)", "ipc_tail" = "None", "ipc_brain" = "Posibrain") meat = /obj/item/stack/sheet/plasteel{amount = 5} skinned_type = /obj/item/stack/sheet/metal{amount = 10} exotic_bloodtype = "Coolant" @@ -244,7 +241,7 @@ /datum/species/ipc/spec_life(mob/living/carbon/human/H) . = ..() if(H.health <= HEALTH_THRESHOLD_CRIT && H.stat != DEAD) // So they die eventually instead of being stuck in crit limbo. - H.adjustFireLoss(6) // After BODYTYPE_ROBOTIC resistance this is ~2/second + H.adjustFireLoss(2, ignore_reduction = INFINITY) if(prob(5)) to_chat(H, span_warning("Alert: Internal temperature regulation systems offline; thermal damage sustained. Shutdown imminent.")) H.visible_message("[H]'s cooling system fans stutter and stall. There is a faint, yet rapid beeping coming from inside their chassis.") @@ -266,18 +263,18 @@ H.update_body() /datum/species/ipc/replace_body(mob/living/carbon/C, datum/species/old_species, datum/species/new_species, robotic) - var/datum/sprite_accessory/ipc_chassis/chassis_of_choice = GLOB.ipc_chassis_list[C.dna.features["ipc_chassis"]] + var/datum/sprite_accessory/body/ipc_chassis/chassis_of_choice = GLOB.ipc_chassis_list[C.dna.features["ipc_chassis"]] if(chassis_of_choice) qdel(species_limbs) - species_limbs = chassis_of_choice.chassis_bodyparts.Copy() // elegant. + species_limbs = chassis_of_choice.replacement_bodyparts.Copy() // elegant. var/obj/item/bodypart/chest/new_chest = species_limbs[BODY_ZONE_CHEST] if(new_chest) bodytype = initial(new_chest.acceptable_bodytype) else stack_trace("[chassis_of_choice.type] had no chest bodypart!") - for(var/feature in chassis_of_choice.chassis_features) + for(var/feature in chassis_of_choice.body_features) mutant_bodyparts |= feature - default_features[feature] = chassis_of_choice.chassis_features[feature] + default_features[feature] = chassis_of_choice.body_features[feature] else // in case of fuckery stack_trace("Invalid IPC chassis: [C.dna.features["ipc_chassis"]]") return ..() diff --git a/code/modules/mob/living/carbon/human/species_types/abductors.dm b/code/modules/mob/living/carbon/human/species_types/abductors.dm index 6c431627375a..a6e9916c0098 100644 --- a/code/modules/mob/living/carbon/human/species_types/abductors.dm +++ b/code/modules/mob/living/carbon/human/species_types/abductors.dm @@ -2,7 +2,7 @@ name = "\improper Abductor" id = SPECIES_ABDUCTOR species_traits = list(NOBLOOD) - inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_CHUNKYFINGERS,TRAIT_NOHUNGER,TRAIT_NOBREATH) + inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_CHUNKYFINGERS,TRAIT_NOHUNGER,TRAIT_NOBREATH,TRAIT_NODISMEMBER,TRAIT_NEVER_WOUNDED) mutanttongue = /obj/item/organ/tongue/abductor changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN ass_image = 'icons/ass/assgrey.png' diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm index b623dfcbbde1..eb5ec083391f 100644 --- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm +++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm @@ -14,14 +14,9 @@ mutanttongue = /obj/item/organ/tongue/ethereal siemens_coeff = 0.5 //They thrive on energy attack_type = BURN //burn bish - // [CELADON-REMOVE] - CELADON_ETHEREAL_FIX - Тип крови им больше не нужен ибо теперь у них жидкое электричество, перенёс в мод mod_celadon\ethereal_fix\code\ethereal.dm - /* exotic_bloodtype = "E" - */ - // [/CELADON-REMOVE] - // damage_overlay_type = "" //We are too cool for regular damage overlays species_age_max = 300 - species_traits = list(DYNCOLORS, HAIR, FACEHAIR, HAS_FLESH, HAS_BONE) + species_traits = list(DYNCOLORS, HAIR, FACEHAIR) changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN species_language_holder = /datum/language_holder/ethereal inherent_traits = list(TRAIT_NOHUNGER) @@ -102,10 +97,7 @@ desc = "Root into good soil to gain charge." check_flags = AB_CHECK_CONSCIOUS button_icon_state = "plant-22" - // [CELADON-EDIT] - CELADON_FLORA - // icon_icon = 'icons/obj/flora/plants.dmi' // CELADON-EDIT - ORIGINAL - icon_icon = 'mod_celadon/_storage_icons/icons/structures/obj/flora/plants.dmi' - // [/CELADON-EDIT] + icon_icon = 'icons/obj/flora/plants.dmi' background_icon_state = "bg_alien" /datum/action/innate/root/Activate() diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 9efc99b8ce7a..a7c6b5236b51 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -1,7 +1,7 @@ /datum/species/fly name = "\improper Flyperson" id = SPECIES_FLYPERSON - species_traits = list(TRAIT_ANTENNAE, HAS_FLESH, HAS_BONE) + inherent_traits = list(TRAIT_ANTENNAE) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG mutanttongue = /obj/item/organ/tongue/fly mutantliver = /obj/item/organ/liver/fly diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index 2d5bf7b4f9a9..70b6d66ffa93 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -2,7 +2,7 @@ name = "\improper Human" id = SPECIES_HUMAN default_color = "FFFFFF" - species_traits = list(HAIR,FACEHAIR,LIPS,SCLERA,EMOTE_OVERLAY,SKINCOLORS,HAS_FLESH,HAS_BONE) + species_traits = list(HAIR,FACEHAIR,LIPS,SCLERA,EMOTE_OVERLAY,SKINCOLORS) default_features = list("mcolor" = "FFF", "tail_human" = "None", "ears" = "None", "wings" = "None") mutant_bodyparts = list("ears", "tail_human") use_skintones = TRUE diff --git a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm index 6dd168db2bf6..677273a93da3 100644 --- a/code/modules/mob/living/carbon/human/species_types/jellypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/jellypeople.dm @@ -3,7 +3,7 @@ name = "\improper Jellyperson" id = SPECIES_JELLYPERSON default_color = "00FF90" - species_traits = list(MUTCOLORS,NOBLOOD,HAIR,FACEHAIR,HAS_FLESH) + species_traits = list(MUTCOLORS,NOBLOOD,HAIR,FACEHAIR) inherent_traits = list(TRAIT_TOXINLOVER) hair_color = "mutcolor" hair_alpha = 150 diff --git a/code/modules/mob/living/carbon/human/species_types/kepori.dm b/code/modules/mob/living/carbon/human/species_types/kepori.dm index 5bc9e701ac37..ed8bca4fb84f 100644 --- a/code/modules/mob/living/carbon/human/species_types/kepori.dm +++ b/code/modules/mob/living/carbon/human/species_types/kepori.dm @@ -2,7 +2,7 @@ name = "\improper Kepori" id = SPECIES_KEPORI default_color = "6060FF" - species_traits = list(SCLERA, MUTCOLORS, MUTCOLORS_SECONDARY, HAS_FLESH, HAS_BONE) + species_traits = list(SCLERA, MUTCOLORS, MUTCOLORS_SECONDARY) inherent_traits = list(TRAIT_SCOOPABLE) mutant_bodyparts = list("kepori_body_feathers", "kepori_head_feathers", "kepori_tail_feathers", "kepori_feathers") default_features = list("mcolor" = "0F0", "wings" = "None", "kepori_feathers" = "None", "kepori_head_feathers" = "None", "kepori_body_feathers" = "None", "kepori_tail_feathers" = "None") @@ -18,11 +18,9 @@ species_eye_path = 'icons/mob/species/kepori/kepori_eyes.dmi' heatmod = 0.67 coldmod = 1.5 - //[CELADON-EDIT] - CELADON_BALANCE_SPECIES - No more PTITZA combat - brutemod = 1.5 - burnmod = 1.5 - speedmod = -0.30 // Было -0.10 - //[/CELADON-EDIT] + // brutemod = 1.5 + // burnmod = 1.5 + speedmod = -0.10 bodytemp_heat_damage_limit = HUMAN_BODYTEMP_HEAT_DAMAGE_LIMIT + 35 bodytemp_cold_damage_limit = HUMAN_BODYTEMP_COLD_DAMAGE_LIMIT + 3 @@ -149,9 +147,8 @@ if(slot != ITEM_SLOT_MASK) return FALSE //Blocks all items that are equippable to other slots. (block anything with a flag that ISN'T item_slot_mask) - if(I.slot_flags && !ITEM_SLOT_KEPORI_BEAK) // [CELADON-EDIT] - CELADON_FIXES - Было if(I.slot_flags & ~ITEM_SLOT_KEPORI_BEAK) + if(I.slot_flags & ~ITEM_SLOT_KEPORI_BEAK) return FALSE - // [CELADON-ADD] - FIXES_MASK_ON_KEPORI if(HAS_TRAIT(H.wear_mask, TRAIT_NODROP)) return FALSE // [/CELADON-ADD] diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index 0f131dbb7ee3..df65b80c203f 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -4,14 +4,13 @@ id = SPECIES_SARATHI default_color = "00FF00" species_age_max = 175 - species_traits = list(MUTCOLORS, LIPS, SCLERA, EMOTE_OVERLAY, MUTCOLORS_SECONDARY, HAS_FLESH, HAS_BONE) + species_traits = list(MUTCOLORS, LIPS, SCLERA, EMOTE_OVERLAY, MUTCOLORS_SECONDARY) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_REPTILE mutant_bodyparts = list("tail_lizard", "face_markings", "frills", "horns", "spines", "body_markings") mutanttongue = /obj/item/organ/tongue/lizard mutant_organs = list(/obj/item/organ/tail/lizard) coldmod = 1.5 heatmod = 0.67 - burnmod = 0.85 // [CELADON-ADD] - CELADON_BALANCE_SPECIES - Даем резист к огню на 15% default_features = list("mcolor" = "0F0", "tail_lizard" = "Smooth", "face_markings" = "None", "horns" = "None", "frills" = "None", "spines" = "None", "body_markings" = "None") changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC | RACE_SWAP | ERT_SPAWN attack_verb = "slash" @@ -87,7 +86,6 @@ var/obj/item/lighter/liz/N = new(H) if(H.put_in_hands(N)) to_chat(H, span_notice("You ignite a small flame in your mouth.")) - // H.remove_reagent(/datum/reagent/fuel, 5) // [CELADON-ADD] - Вносилось Космо как фикс var/obj/item/organ/stomach/belly = owner.getorganslot(ORGAN_SLOT_STOMACH) belly.reagents.remove_reagent(/datum/reagent/fuel,4) else @@ -96,8 +94,6 @@ /datum/action/innate/liz_lighter/IsAvailable() if(..()) - // var/mob/living/carbon/human/H = owner // [CELADON-ADD] - Вносилось Космо как фикс - // if(H.reagents && H.has_reagent(/datum/reagent/fuel, 5)) // [CELADON-ADD] - Вносилось Космо как фикс var/obj/item/organ/stomach/belly = owner.getorganslot(ORGAN_SLOT_STOMACH) if(belly && belly.reagents.has_reagent(/datum/reagent/fuel, 4)) return TRUE diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index a8b5f5cc5f6d..2e20ab6f5d00 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -2,7 +2,8 @@ name = "\improper Moth" id = SPECIES_MOTH default_color = "00FF00" - species_traits = list(LIPS, TRAIT_ANTENNAE, HAIR, EMOTE_OVERLAY, HAS_FLESH, HAS_BONE) + species_traits = list(LIPS, HAIR, EMOTE_OVERLAY) + inherent_traits = list(TRAIT_ANTENNAE) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG mutant_bodyparts = list("moth_wings", "moth_fluff", "moth_markings") default_features = list("moth_wings" = "Plain", "moth_fluff" = "Plain", "moth_markings" = "None") diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index 7e4ed3403c9e..022fb28bb0ce 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -2,7 +2,7 @@ name = "\improper Phorid" id = SPECIES_PLASMAMAN meat = /obj/item/stack/sheet/mineral/plasma - species_traits = list(NOBLOOD, NOTRANSSTING, HAS_BONE) + species_traits = list(NOBLOOD, NOTRANSSTING) // plasmemes get hard to wound since they only need a severe bone wound to dismember, but unlike skellies, they can't pop their bones back into place inherent_traits = list(TRAIT_RESISTCOLD,TRAIT_RADIMMUNE,TRAIT_GENELESS,TRAIT_NOHUNGER,TRAIT_ALWAYS_CLEAN, TRAIT_HARDLY_WOUNDED) inherent_biotypes = MOB_HUMANOID|MOB_MINERAL diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index 31bbb3c60f7a..5430f531eac5 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -6,7 +6,7 @@ name = "???" id = SPECIES_SHADOW species_traits = list(NOBLOOD) - inherent_traits = list(TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE,TRAIT_NOBREATH) + inherent_traits = list(TRAIT_RADIMMUNE,TRAIT_VIRUSIMMUNE,TRAIT_NOBREATH,TRAIT_NODISMEMBER,TRAIT_NEVER_WOUNDED) inherent_factions = list("faithless") changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_PRIDE | MIRROR_MAGIC mutanteyes = /obj/item/organ/eyes/night_vision diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index ea7f4cda2ebe..fcd689ed14eb 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -2,7 +2,7 @@ // 2spooky name = "\improper Skeleton" id = SPECIES_SKELETON - species_traits = list(NOBLOOD, HAS_BONE, NOHUSK) + species_traits = list(NOBLOOD, NOHUSK) inherent_traits = list(TRAIT_NOMETABOLISM,TRAIT_TOXIMMUNE,TRAIT_RESISTHEAT,TRAIT_NOBREATH,TRAIT_RESISTCOLD,TRAIT_RESISTHIGHPRESSURE,TRAIT_RESISTLOWPRESSURE,TRAIT_RADIMMUNE,\ TRAIT_GENELESS,TRAIT_PIERCEIMMUNE,TRAIT_NOHUNGER,TRAIT_EASYDISMEMBER,TRAIT_LIMBATTACHMENT,TRAIT_FAKEDEATH,TRAIT_XENO_IMMUNE,TRAIT_NOCLONELOSS) inherent_biotypes = MOB_UNDEAD|MOB_HUMANOID diff --git a/code/modules/mob/living/carbon/human/species_types/snail.dm b/code/modules/mob/living/carbon/human/species_types/snail.dm index bf9615912988..e42b8245308d 100644 --- a/code/modules/mob/living/carbon/human/species_types/snail.dm +++ b/code/modules/mob/living/carbon/human/species_types/snail.dm @@ -2,7 +2,7 @@ name = "\improper Snailperson" id = SPECIES_SNAIL default_color = "336600" //vomit green - species_traits = list(MUTCOLORS, NO_UNDERWEAR, HAS_FLESH, HAS_BONE) + species_traits = list(MUTCOLORS, NO_UNDERWEAR) inherent_traits = list(TRAIT_ALWAYS_CLEAN, TRAIT_NOSLIPALL) attack_verb = "slap" coldmod = 0.5 //snails only come out when its cold and wet diff --git a/code/modules/mob/living/carbon/human/species_types/spider.dm b/code/modules/mob/living/carbon/human/species_types/spider.dm index 4396390b39c0..36a6e189c92f 100644 --- a/code/modules/mob/living/carbon/human/species_types/spider.dm +++ b/code/modules/mob/living/carbon/human/species_types/spider.dm @@ -8,7 +8,7 @@ name = "Rachnid" id = SPECIES_RACHNID default_color = "00FF00" - species_traits = list(LIPS, MUTCOLORS_PARTSONLY, HAS_FLESH, HAS_BONE) // [CELADON-EDIT] + species_traits = list(LIPS, MUTCOLORS_PARTSONLY) inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID|MOB_BUG mutant_bodyparts = list("spider_legs", "spider_spinneret") default_features = list("spider_legs" = "Carapaced", "spider_spinneret" = "Plain") diff --git a/code/modules/mob/living/carbon/human/species_types/vox.dm b/code/modules/mob/living/carbon/human/species_types/vox.dm index 972c49060b5f..ce57ff7b9ffe 100644 --- a/code/modules/mob/living/carbon/human/species_types/vox.dm +++ b/code/modules/mob/living/carbon/human/species_types/vox.dm @@ -4,7 +4,6 @@ id = SPECIES_VOX default_color = "6060FF" species_age_max = 280 - species_traits = list(HAS_BONE, HAS_FLESH) mutant_bodyparts = list("vox_head_quills", "vox_neck_quills") default_features = list("mcolor" = "0F0", "wings" = "None", "vox_head_quills" = "None", "vox_neck_quills" = "None") meat = /obj/item/food/meat/slab/chicken diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 9357ae0d13d0..d1f435dfb692 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -392,14 +392,6 @@ There are several things that need to be remembered: /// Does this clothing need to be generated via greyscale? var/handled_by_bodytype = FALSE - // [CELADON-EDIT] - CELADON_RESPRITE - // if((dna.species.bodytype & BODYTYPE_DIGITIGRADE) && ((I.supports_variations & DIGITIGRADE_VARIATION) || (I.supports_variations & DIGITIGRADE_VARIATION_SAME_ICON_FILE))) [CELADON-EDIT] - ORIGINAL - // var/obj/item/bodypart/leg = src.get_bodypart(BODY_ZONE_L_LEG) - // if(leg.bodytype & BODYTYPE_DIGITIGRADE && !leg.plantigrade_forced) - // icon_file = DIGITIGRADE_SHOES_PATH - // if((I.supports_variations & DIGITIGRADE_VARIATION_SAME_ICON_FILE)) - // icon_file = I.mob_overlay_icon - // target_overlay = "[target_overlay]_digi" // [/CELADON-EDIT] - ORIGINAL // [/CELADON-EDIT] var/obj/item/bodypart/leg_bodypart = src.get_bodypart(BODY_ZONE_L_LEG) if(leg_bodypart.bodytype & BODYTYPE_DIGITIGRADE) @@ -510,11 +502,8 @@ There are several things that need to be remembered: /// Does this clothing need to be generated via greyscale? var/handled_by_bodytype = FALSE - // [CELADON-EDIT] - CELADON_RESPRITE - // var/obj/item/bodypart/head_bodypart = src.get_bodypart(BODY_ZONE_HEAD) // CELADON-EDIT - ORIGINAL - // if((head_bodypart.bodytype & BODYTYPE_SNOUT) && (I.supports_variations & SNOUTED_VARIATION)) // CELADON-EDIT - ORIGINAL - // target_overlay = "[target_overlay]_snouted" // CELADON-EDIT - ORIGINAL var/obj/item/bodypart/head_bodypart = src.get_bodypart(BODY_ZONE_HEAD) + // [CELADON-EDIT] - CELADON_RESPRITE if(head_bodypart.bodytype & BODYTYPE_SNOUT) if(icon_exists(SARATHI_SNOUTED_HELM_PATH, RESOLVE_ICON_STATE(I))) icon_file = SARATHI_SNOUTED_HELM_PATH @@ -524,7 +513,6 @@ There are several things that need to be remembered: handled_by_bodytype = TRUE // [CELADON-EDIT] - if((head_bodypart.bodytype & BODYTYPE_SNOUT_SMALL) && (I.supports_variations & SNOUTED_SMALL_VARIATION)) target_overlay = "[target_overlay]_snouted_small" @@ -631,11 +619,6 @@ There are several things that need to be remembered: var/handled_by_bodytype = FALSE // [CELADON - EDIT] - CELADON_RESPRITE - // if((dna.species.bodytype & BODYTYPE_DIGITIGRADE) && ((I.supports_variations & DIGITIGRADE_VARIATION) || (I.supports_variations & DIGITIGRADE_VARIATION_SAME_ICON_FILE))) [CELADON - EDIT] - ORIGINAL - // icon_file = DIGITIGRADE_SUIT_PATH - // if((I.supports_variations & DIGITIGRADE_VARIATION_SAME_ICON_FILE)) - // icon_file = I.mob_overlay_icon - // target_overlay = "[target_overlay]_digi" [/CELADON - EDIT] - ORIGINAL if(dna.species.bodytype & BODYTYPE_DIGITIGRADE) if(ITEM_SLOT_OCLOTHING) if(icon_exists(SARATHI_DIGITIGRADE_SUIT_PATH, RESOLVE_ICON_STATE(I)) ) @@ -728,11 +711,8 @@ There are several things that need to be remembered: var/handled_by_bodytype = FALSE if(!(ITEM_SLOT_MASK in check_obscured_slots())) - // [CELADON-EDIT] - CELADON_RESPRITE - // var/obj/item/bodypart/head_bodypart = src.get_bodypart(BODY_ZONE_HEAD) // CELADON-EDIT - ORIGINAL - // if((head_bodypart.bodytype & BODYTYPE_SNOUT) && (I.supports_variations & SNOUTED_VARIATION)) // CELADON-EDIT - ORIGINAL - // target_overlay = "[target_overlay]_snouted" // CELADON-EDIT - ORIGINAL var/obj/item/bodypart/head_bodypart = src.get_bodypart(BODY_ZONE_HEAD) + // [CELADON-EDIT] - CELADON_RESPRITE if(head_bodypart.bodytype & BODYTYPE_SNOUT) if(icon_exists(SARATHI_SNOUTED_MASK_PATH, RESOLVE_ICON_STATE(I))) icon_file = SARATHI_SNOUTED_MASK_PATH diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index cd24e4ed81dc..e9de62371e17 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -280,10 +280,8 @@ updatehealth() update_stamina() -// [CELADON-REMOVE] - CELADON_RETURN_CONTENT_IPC - Откат по ИПС -// /// Restore integrity to MANY bodyparts, in random order -// /mob/living/proc/heal_overall_integrity(amount, required_status, updating_health = TRUE) -// [/CELADON-REMOVE] +/// Restore integrity to MANY bodyparts, in random order +/mob/living/proc/heal_overall_integrity(amount, required_status, updating_health = TRUE) /// heal MANY bodyparts, in random order /mob/living/proc/heal_overall_damage(brute = 0, burn = 0, stamina = 0, required_status, updating_health = TRUE) diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index e164cf99594c..f48cde456bf3 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -677,7 +677,6 @@ message = "clacks their beak." emote_type = EMOTE_VISIBLE -///!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!НОВОЕ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! /datum/emote/living/tilt key = "tilt" key_third_person = "tilts" @@ -758,4 +757,5 @@ /datum/emote/living/clap1/can_run_emote(mob/living/carbon/user, status_check = TRUE , intentional) if(user.usable_hands < 2) return FALSE - return ..()*/ + return ..() +CELADON EDIT */ diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 603364ef38eb..e9335689758b 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -34,8 +34,6 @@ handle_diseases(seconds_per_tick, times_fired)// DEAD check is in the proc itself; we want it to spread even if the mob is dead, but to handle its disease-y properties only if you're not. - handle_wounds() - if (QDELETED(src)) // diseases can qdel the mob via transformations return @@ -60,6 +58,8 @@ handle_traits() // eye, ear, brain damages handle_status_effects() //all special effects, stun, knockdown, jitteryness, hallucination, sleeping, etc + handle_wounds(seconds_per_tick, times_fired) + if(machine) machine.check_eye(src) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 315e4a29c9ee..3067d300a01c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -526,7 +526,6 @@ if(layer == LYING_MOB_LAYER) layer = initial(layer) density = initial(density) // We were prone before, so we become dense and things can bump into us again. - REMOVE_TRAIT(src, TRAIT_UI_BLOCKED, LYING_DOWN_TRAIT) REMOVE_TRAIT(src, TRAIT_PULL_BLOCKED, LYING_DOWN_TRAIT) remove_offsets(LYING_DOWN_TRAIT) @@ -562,6 +561,9 @@ /mob/living/proc/can_inject(mob/user, target_zone, injection_flags) return TRUE +/mob/living/proc/is_exposed(mob/user, target_zone, error_msg) + return TRUE + /** * Like can_inject, but it can perform side effects. * @@ -1958,19 +1960,12 @@ GLOBAL_VAR_INIT(ssd_indicator_overlay, mutable_appearance('icons/mob/ssd_indicat // [/CELADON-EDIT] typing_indicator = state // [CELADON-EDIT] - CELADON_QOL - //var/datum/language/used_language = get_selected_language() - //var/state_of_bubble = "[initial(used_language?.bubble_override) || bubble_icon || "default"]0" - //var/state_of_bubble = bubble_icon? "[bubble_icon]0" : "default0" // CELADON-EDIT - ORIGINAL - //var/mutable_appearance/bubble_overlay = mutable_appearance('icons/mob/talk.dmi', state_of_bubble, plane = RUNECHAT_PLANE) - var/state_of_bubble + var/state_of_bubble = last_state_of_bubble if(isMe) state_of_bubble = "emotetyping" if(isSay) state_of_bubble = bubble_icon? "[bubble_icon]0" : "default0" - if(!state_of_bubble) - state_of_bubble = last_state_of_bubble - else - last_state_of_bubble = state_of_bubble + last_state_of_bubble = state_of_bubble var/mutable_appearance/bubble_overlay = mutable_appearance('mod_celadon/_storage_icons/icons/assets/qol/talk.dmi', state_of_bubble, plane = RUNECHAT_PLANE) // [/CELADON-EDIT] bubble_overlay.appearance_flags = RESET_COLOR | RESET_TRANSFORM | TILE_BOUND | PIXEL_SCALE @@ -2090,54 +2085,3 @@ GLOBAL_VAR_INIT(ssd_indicator_overlay, mutable_appearance('icons/mob/ssd_indicat */ /mob/living/proc/has_reagent(reagent, amount = -1, needs_metabolizing = FALSE) return reagents.has_reagent(reagent, amount, needs_metabolizing) - -/* // [CELADON-CANDIDATE-REMOVE] - Убрал не используется, пересмотреть -// [CELADON-ADD] - CELADON_EMOTES -/** - * Sets the mob's direction lock towards a given atom. - * - * Arguments: - * * a - The atom to face towards. - * * track - If TRUE, updates our direction relative to the atom when moving. - */ -/mob/living/proc/set_forced_look(atom/A, track = FALSE) - forced_look = track ? A.UID() : get_cardinal_dir(src, A) - to_chat(src, "You are now facing [track ? A : dir2text(forced_look)]. To cancel this, shift-middleclick yourself.") - throw_alert("direction_lock", /atom/movable/screen/alert/direction_lock) - -/** - * Clears the mob's direction lock if enabled. - * - * Arguments: - * * quiet - Whether to display a chat message. - */ -/mob/living/proc/clear_forced_look(quiet = FALSE) - if(!forced_look) - return - forced_look = null - if(!quiet) - to_chat(src, "Cancelled direction lock.") - clear_alert("direction_lock") - -// /mob/living/setDir(new_dir) -// if(forced_look) -// if(isnum(forced_look)) -// dir = forced_look -// else -// var/atom/A = locateUID(forced_look) -// if(istype(A)) -// dir = get_cardinal_dir(src, A) -// return -// return ..() - -// /mob/living/Moved(OldLoc, Dir, Forced = FALSE) -// . = ..() -// for(var/obj/O in src) -// O.on_mob_move(Dir, src) - -/// Can a mob interact with the apc remotely like a pulse demon, cyborg, or AI? -// /mob/living/proc/can_remote_apc_interface(obj/machinery/power/apc/ourapc) -// return FALSE -// [/CELADON-ADD] -// [/CELADON-CANDIDATE-REMOVE] -*/ diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 0e6e0fb5b2a9..1bb055c2eb25 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -429,23 +429,20 @@ return 20 //called when the mob receives a bright flash -/mob/living/proc/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash, length = 2.5 SECONDS) +/mob/living/proc/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash, length = 2.5 SECONDS) // CELADON EDIT if(HAS_TRAIT(src, TRAIT_NOFLASH)) - return FALSE + return NONE if(get_eye_protection() >= intensity) - return FALSE - if(is_blind() && !(override_blindness_check || affect_silicon)) - return FALSE - - // this forces any kind of flash (namely normal and static) to use a black screen for photosensitive players - // it absolutely isn't an ideal solution since sudden flashes to black can apparently still trigger epilepsy, but byond apparently doesn't let you freeze screens - // and this is apparently at least less likely to trigger issues than a full white/static flash + return NONE + if(is_blind() && !override_blindness_check) + return FLASH_DAMAGE + // CELADON EDIT START if(client?.prefs?.darkened_flash) type = /atom/movable/screen/fullscreen/flash/black - overlay_fullscreen("flash", type) - addtimer(CALLBACK(src, .proc/clear_fullscreen, "flash", length), length) - return TRUE + addtimer(CALLBACK(src, PROC_REF(clear_fullscreen), "flash", length), length) + // CELADON EDIT END + return FLASH_EFFECT | FLASH_DAMAGE //called when the mob receives a loud bang /mob/living/proc/soundbang_act() diff --git a/code/modules/mob/living/living_say.dm b/code/modules/mob/living/living_say.dm index a2629098ad26..f36a8873a4d8 100644 --- a/code/modules/mob/living/living_say.dm +++ b/code/modules/mob/living/living_say.dm @@ -58,9 +58,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list( "â" = MODE_ADMIN, // Misc - // "ù" = RADIO_CHANNEL_AI_PRIVATE, - "÷" = MODE_VOCALCORDS, - "ö" = RADIO_CHANNEL_WIDEBAND + "÷" = MODE_VOCALCORDS )) /mob/living/proc/ellipsis(original_msg, chance = 50, keep_words) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index eece715900a7..6232734d2d68 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -652,12 +652,6 @@ set_module = /obj/item/robot_module/security icon_state = "sec" -// [CELADIN-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/mob/living/silicon/robot/modules/clown - set_module = /obj/item/robot_module/clown - icon_state = "clown" -// [/CELADIN-ADD] - /mob/living/silicon/robot/modules/peacekeeper set_module = /obj/item/robot_module/peacekeeper icon_state = "peace" diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 36b8e91cfddc..526b4705846d 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -267,12 +267,9 @@ sleep(10) -/mob/living/silicon/proc/checklaws() +/mob/living/silicon/proc/checklaws() //Gives you a link-driven interface for deciding what laws the statelaws() proc will share with the crew. --NeoFite - // [CELADON-EDIT] - CELADON_QOL - Перевод законов ИИ - // var/list = "Which laws do you want to include when stating them for the crew?

    " // CELADON-EDIT -> ORIGINAL - var/list = "Which laws do you want to include when stating them for the crew?

    " - // [/CELADON-EDIT] + var/list = "Which laws do you want to include when stating them for the crew?

    " // [CELADON-EDIT] - CELADON_QOL - Перевод законов ИИ if (laws.zeroth) if (!lawcheck[1]) diff --git a/code/modules/mob/living/simple_animal/bot/medbot.dm b/code/modules/mob/living/simple_animal/bot/medbot.dm index 28de27701d41..3567761046f2 100644 --- a/code/modules/mob/living/simple_animal/bot/medbot.dm +++ b/code/modules/mob/living/simple_animal/bot/medbot.dm @@ -412,7 +412,7 @@ soft_reset() return - if(patient && (!path || path.len == 0) && (get_dist(src,patient) > 1)) // [CELADON-EDIT] - FIXES_MEDBOT_RUNTIME_PATH_NULL \\ if(patient && path.len == 0 && (get_dist(src,patient) > 1)) + if(patient && (!path || path.len == 0) && (get_dist(src,patient) > 1)) // [CELADON-EDIT] - FIXES_MEDBOT_RUNTIME_PATH_NULL path = get_path_to(src, patient, 30,id=access_card) mode = BOT_MOVING if(!path.len) //try to get closer if you can't reach the patient directly diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm index e18aa0112c31..98fb0e0361d2 100644 --- a/code/modules/mob/living/simple_animal/bot/secbot.dm +++ b/code/modules/mob/living/simple_animal/bot/secbot.dm @@ -482,7 +482,4 @@ Auto Patrol: []"}, . = ..() /obj/machinery/bot_core/secbot -// [CELADON-EDIT] - QoL -// req_access = list(ACCESS_SECURITY) - req_access = 0 -// [/CELADON-EDIT] + req_access = list(ACCESS_SECURITY) diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index fdb021a22098..cea085d4df02 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -186,10 +186,8 @@ maxHealth = 800 // [/CELADON-EDIT] move_to_delay = 4 - // [CELADON-ADD] - ALIEN_BALANCE - armour_penetration = 35 - armor = list("melee" = 50, "bullet" = 50, "laser" = 20, "energy" = 50, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = -100, "acid" = 80) - // [CELADON-ADD] + maxHealth = 400 + health = 400 butcher_results = list(/obj/item/food/meat/slab/xeno = 10, /obj/item/stack/sheet/animalhide/xeno = 2) mob_size = MOB_SIZE_LARGE 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 c2997445daff..e792b350dc9f 100644 --- a/code/modules/mob/living/simple_animal/hostile/human/survivors.dm +++ b/code/modules/mob/living/simple_animal/hostile/human/survivors.dm @@ -26,17 +26,7 @@ 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.") - */ - // [CELADON-ADD] - RETURN_CONTENT_CRUSHER_TROPHY - if(prob(15)) - new /obj/item/crusher_trophy/shiny(loc) - visible_message("You notice a glimmering nugget of shiny metal.") - ..() - // [/CELADON-ADD] + /mob/living/simple_animal/hostile/human/hermit/survivor name = "Hermit Wanderer" @@ -79,7 +69,7 @@ desc = "A stanced figure sheltered behind a shoddy, makeshift wooden buckler. A jagged machete is held within their clutch." mob_spawner = /obj/effect/mob_spawn/human/corpse/damaged/whitesands r_hand = /obj/item/melee/sword/mass - l_hand = /obj/item/shield/riot/buckler + l_hand = /obj/item/shield/buckler projectile_deflect_chance = 25 /mob/living/simple_animal/hostile/human/hermit/ranged diff --git a/code/modules/mob/living/simple_animal/hostile/human/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/human/syndicate.dm index d822f1ef3d8a..e74825cef88a 100644 --- a/code/modules/mob/living/simple_animal/hostile/human/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/human/syndicate.dm @@ -559,6 +559,15 @@ armor_base = /obj/item/clothing/suit/space/hardsuit/stealth/ramzi mob_spawner = /obj/effect/mob_spawn/human/corpse/ramzi/sniper +/mob/living/simple_animal/hostile/human/ramzi/ranged/space/sniper/sentry + vision_range = 14 + aggro_vision_range = 14 + minimum_distance = 14 + stop_automated_movement = 1 + wander = 0 + retreat_distance = 0 + environment_smash = 0 + /mob/living/simple_animal/hostile/human/ramzi/ranged/space/shotgun/incendiary name = "Ramzi Clique Boiler" desc = "A deserter from the Gorlex Marauders turned pirate. The hateful eyes of a hardsuit stare down the sight of a Bulldog shotgun, elegance in its movements." @@ -737,8 +746,3 @@ /mob/living/simple_animal/hostile/viscerator/Initialize() . = ..() AddComponent(/datum/component/swarming) - -// [CELADON-ADD] - RAMZI-RENEGATE -/mob/living/simple_animal/hostile/viscerator/ramzi - faction = list(FACTION_RAMZI_RENEGADE, FACTION_RAMZI) -// [/CELADON-ADD] diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm index 429e45d87a4c..b003dee82c3b 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm @@ -41,8 +41,7 @@ Difficulty: Medium ranged_cooldown_time = 16 pixel_x = -16 base_pixel_x = -16 - //mob_trophy = /obj/item/mob_trophy/miner_eye // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY - crusher_loot = /obj/item/crusher_trophy/miner_eye // [/CELADON-EDIT] + mob_trophy = /obj/item/mob_trophy/miner_eye loot = list(/obj/item/melee/cleaving_saw, /obj/item/gun/energy/kinetic_accelerator) wander = FALSE del_on_death = TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm index 45931905f4dd..7d113f8ffb4c 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm @@ -56,8 +56,7 @@ Difficulty: Hard pixel_x = -32 base_pixel_x = -32 del_on_death = TRUE - //mob_trophy = /obj/item/mob_trophy/demon_claws // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY - crusher_loot = /obj/item/crusher_trophy/demon_claws // [/CELADON-EDIT] + mob_trophy = /obj/item/mob_trophy/demon_claws loot = list(/obj/structure/closet/crate/necropolis/bubblegum) blood_volume = BLOOD_VOLUME_MAXIMUM //BLEED FOR ME var/charging = FALSE @@ -505,9 +504,7 @@ Difficulty: Hard health = 1 maxHealth = 1 alpha = 127.5 - // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено и заменено в модуле - // mob_trophy = null - // [/CELADON-REMOVE] + mob_trophy = null loot = null achievement_type = null crusher_achievement_type = null diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm index f628ccc7bf50..af5fb22fe492 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/codename_claw.dm @@ -58,10 +58,8 @@ speed = 5 move_to_delay = 5 speak_emote = list("verbalizes") - // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено и заменено в модуле - // mob_trophy = /obj/item/melee/synthetic_arm_blade - // loot = list(/obj/effect/spawner/clawloot) - // [/CELADON-REMOVE] + mob_trophy = /obj/item/melee/synthetic_arm_blade + loot = list(/obj/effect/spawner/clawloot) health = 2250 maxHealth = 2250 shouldnt_move = TRUE //we want to show the transforming animation diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 04d3e7908818..659f9f8a428f 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -50,8 +50,7 @@ Difficulty: Very Hard achievement_type = /datum/award/achievement/boss/colossus_kill crusher_achievement_type = /datum/award/achievement/boss/colossus_crusher score_achievement_type = /datum/award/score/colussus_score - //mob_trophy = /obj/item/mob_trophy/blaster_tubes // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY - crusher_loot = /obj/item/crusher_trophy/blaster_tubes // [/CELADON-EDIT] + mob_trophy = /obj/item/mob_trophy/blaster_tubes loot = list(/obj/structure/closet/crate/necropolis/colossus) deathmessage = "disintegrates, leaving a glowing core in its wake." deathsound = 'sound/magic/demon_dies.ogg' diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm index 1ee7dac9ac88..7e3602c8b8e0 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/cult_templar.dm @@ -405,7 +405,7 @@ name = "\improper Cursed Nar'Sien hardened armor" desc = "A heavily-armored exosuit worn by warriors of the Nar'Sien cult. This one is cursed, screaming voices into the mind of the wearer." allowed = list(/obj/item/gun, /obj/item/tank/internals) - armor = list("melee" = 75, "bullet" = 50, "laser" = 30, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 80, "fire" = 100, "acid" = 100, "wound" = 50) // [CELADON-EDIT] - CELADON_BALANCE + armor = list("melee" = 75, "bullet" = 50, "laser" = 30, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 80, "fire" = 100, "acid" = 100) max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | LAVA_PROOF // cell = /obj/item/stock_parts/cell/hyper diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm index e26a475a7ff7..30caee505fba 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner.dm @@ -28,8 +28,7 @@ Difficulty: Extremely Hard speed = 20 move_to_delay = 20 ranged = TRUE - //mob_trophy = /obj/item/mob_trophy/ice_block_talisman // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY - crusher_loot = /obj/item/crusher_trophy/ice_block_talisman // [/CELADON-EDIT] + mob_trophy = /obj/item/mob_trophy/ice_block_talisman loot = list(/obj/effect/decal/remains/plasma) wander = FALSE del_on_death = TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm index a8e78358864e..d2229dd21d31 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm @@ -54,8 +54,7 @@ Difficulty: Medium ranged = TRUE pixel_x = -32 base_pixel_x = -32 - //mob_trophy = /obj/item/mob_trophy/ash_spike // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY - crusher_loot = /obj/item/crusher_trophy/ash_spike // [/CELADON-EDIT] + mob_trophy = /obj/item/mob_trophy/ash_spike loot = list(/obj/structure/closet/crate/necropolis/dragon) butcher_results = list(/obj/item/gem/amber = 1, /obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/bone = 30) guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/ashdrake = 10) @@ -561,9 +560,7 @@ Difficulty: Medium mouse_opacity = MOUSE_OPACITY_ICON damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) loot = list() - // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено и заменено в модуле - // mob_trophy = list() - // [/CELADON-REMOVE] + mob_trophy = list() butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/sinew = 5, /obj/item/stack/sheet/bone = 30) attack_action_types = list() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm index cd19759777cc..42e56209bda8 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm @@ -59,8 +59,7 @@ Difficulty: Hard ranged_cooldown_time = 40 aggro_vision_range = 21 //so it can see to one side of the arena to the other loot = list(/obj/item/hierophant_club) - //mob_trophy = /obj/item/mob_trophy/vortex_talisman // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY - crusher_loot = /obj/item/crusher_trophy/vortex_talisman // [/CELADON-EDIT] + mob_trophy = /obj/item/mob_trophy/vortex_talisman wander = FALSE gps_name = "Zealous Signal" achievement_type = /datum/award/achievement/boss/hierophant_kill diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index 00122ec52dee..e493b80e1e90 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -71,17 +71,11 @@ if(health > 0) return else - // [CELADON-ADD] - RETURN_CONTENT_CRUSHER_TROPHY - var/datum/status_effect/crusher_damage/C = has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) - // [/CELADON-ADD] - // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды - // spawn_mob_trophy() - // var/datum/status_effect/crusher_damage/crusher = has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) - // [/CELADON-REMOVE] + // spawn_mob_trophy() // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды + var/datum/status_effect/crusher_damage/crusher = has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) var/crusher_kill = FALSE // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY - // if(crusher && mob_trophy && crusher.total_damage >= maxHealth * 0.6) - if(C && crusher_loot && C.total_damage >= maxHealth * 0.6) + if(crusher && crusher_loot && crusher.total_damage >= maxHealth * 0.6) spawn_crusher_loot() // [/CELADON-EDIT] crusher_kill = TRUE @@ -94,11 +88,9 @@ SSblackbox.record_feedback("tally", tab, 1, "[initial(name)]") ..() -// [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды -// /mob/living/simple_animal/hostile/megafauna/proc/spawn_mob_trophy() -// if(mob_trophy) - // loot += mob_trophy -// [/CELADON-REMOVE] +/mob/living/simple_animal/hostile/megafauna/proc/spawn_mob_trophy() + if(mob_trophy) + loot += mob_trophy /mob/living/simple_animal/hostile/megafauna/gib() if(health > 0) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm index c3b9ca85e1b1..d582a7134513 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/wendigo.dm @@ -32,8 +32,7 @@ Difficulty: Hard loot = list() butcher_results = list() guaranteed_butcher_results = list(/obj/item/wendigo_blood = 1) - //mob_trophy = /obj/item/mob_trophy/demon_claws // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY - crusher_loot = /obj/item/crusher_trophy/demon_claws // [/CELADON-EDIT] + mob_trophy = /obj/item/mob_trophy/demon_claws wander = FALSE del_on_death = FALSE blood_volume = BLOOD_VOLUME_NORMAL diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm index e725ada7901e..319027008db9 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm @@ -229,8 +229,7 @@ is_flying_animal = TRUE robust_searching = 1 attack_same = TRUE // So we'll fight basilisks - //mob_trophy = /obj/item/mob_trophy/watcher_wing // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY - crusher_loot = /obj/item/crusher_trophy/watcher_wing // [/CELADON-EDIT] + mob_trophy = /obj/item/mob_trophy/watcher_wing loot = list() butcher_results = list(/obj/item/stack/ore/diamond = 2, /obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/bone = 1) lava_drinker = FALSE @@ -293,10 +292,8 @@ light_power = 2.5 light_color = LIGHT_COLOR_LAVA projectiletype = /obj/projectile/temp/basilisk/magmawing - // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды - // // mob_trophy = /obj/item/mob_trophy/magma_wing - // trophy_drop_mod = 75 - // [/CELADON-REMOVE] + mob_trophy = /obj/item/mob_trophy/magma_wing + trophy_drop_mod = 75 /mob/living/simple_animal/hostile/asteroid/basilisk/watcher/icewing name = "icewing watcher" @@ -310,10 +307,8 @@ ranged_cooldown_time = 20 projectiletype = /obj/projectile/temp/basilisk/icewing butcher_results = list(/obj/item/stack/ore/diamond = 5, /obj/item/stack/sheet/bone = 1) //No sinew; the wings are too fragile to be usable - // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды - // //mob_trophy = /obj/item/mob_trophy/ice_wing - // trophy_drop_mod = 75 - // [/CELADON-REMOVE] + mob_trophy = /obj/item/mob_trophy/ice_wing + trophy_drop_mod = 75 /obj/projectile/temp/basilisk/magmawing name = "scorching blast" diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm index 0c9ba11ac27c..5f039313a0ee 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm @@ -109,37 +109,6 @@ While using this makes the system rely on OnFire, it still gives options for tim /obj/structure/elite_tumor/attack_hand(mob/user) . = ..() // [CELADON-EDIT] - CELADON_BALANCE_MOBS - // if(ishuman(user)) - // switch(activity) - // if(TUMOR_PASSIVE) - // activity = TUMOR_ACTIVE - // visible_message("[src] convulses as your arm enters its radius. Your instincts tell you to step back.") - // activator = user - // if(boosted) - // mychild.playsound_local(get_turf(mychild), 'sound/effects/magic.ogg', 40, 0) - // to_chat(mychild, "Someone has activated your tumor. You will be returned to fight shortly, get ready!") - // addtimer(CALLBACK(src, PROC_REF(return_elite)), 30) - // INVOKE_ASYNC(src, PROC_REF(arena_checks)) - // if(TUMOR_INACTIVE) - // activity = TUMOR_ACTIVE - // var/mob/dead/observer/elitemind = null - // visible_message("[src] begins to convulse. Your instincts tell you to step back.") - // activator = user - // if(!boosted) - // addtimer(CALLBACK(src, PROC_REF(spawn_elite)), 30) - // return - // visible_message("Something within [src] stirs...") - // var/list/candidates = pollCandidatesForMob("Do you want to play as a lavaland elite?", ROLE_SENTIENCE, null, ROLE_SENTIENCE, 50, src, POLL_IGNORE_SENTIENCE_POTION) - // if(candidates.len) - // audible_message("The stirring sounds increase in volume!") - // elitemind = pick(candidates) - // elitemind.playsound_local(get_turf(elitemind), 'sound/effects/magic.ogg', 40, 0) - // to_chat(elitemind, "You have been chosen to play as a Lavaland Elite.\nIn a few seconds, you will be summoned on Lavaland as a monster to fight your activator, in a fight to the death.\nYour attacks can be switched using the buttons on the top left of the HUD, and used by clicking on targets or tiles similar to a gun.\nWhile the opponent might have an upper hand with powerful mining equipment and tools, you have great power normally limited by AI mobs.\nIf you want to win, you'll have to use your powers in creative ways to ensure the kill. It's suggested you try using them all as soon as possible.\nShould you win, you'll receive extra information regarding what to do after. Good luck!") - // addtimer(CALLBACK(src, PROC_REF(spawn_elite), elitemind), 100) - // else - // visible_message("The stirring stops, and nothing emerges. Perhaps try again later.") - // activity = TUMOR_INACTIVE - // activator = null // CELADON-EDIT - ORIGINAL if(!ishuman(user)) return switch(activity) @@ -250,10 +219,7 @@ While using this makes the system rely on OnFire, it still gives options for tim var/obj/item/organ/regenerative_core/core = I if(!core.preserved) return - // [CELADON-EDIT] - CELADON_BALANCE_MOBS - // visible_message("As [user] drops the core into [src], [src] appears to swell.") // CELADON-EDIT - ORIGINAL visible_message(span_boldwarning("As [user] drops the core into [src], [src] appears to swell.")) - // [/CELADON-EDIT] icon_state = "advanced_tumor" boosted = TRUE light_range = 6 @@ -360,28 +326,13 @@ While using this makes the system rely on OnFire, it still gives options for tim playsound(loc,'sound/effects/tendril_destroyed.ogg', 200, 0, 50, TRUE, TRUE) visible_message(span_boldwarning("[src] begins to convulse violently before beginning to dissipate.")) visible_message(span_boldwarning("As [src] closes, something is forced up from down below.")) - // [CELADON-EDIT] - CELADON_BALANCE_MOBS - Меняем сундуки на обычные некрополиса - // var/obj/structure/closet/crate/necropolis/tendril/greater/lootbox = new /obj/structure/closet/crate/necropolis/tendril/greater(loc) // CELADON-EDIT - ORIGINAL - var/obj/structure/closet/crate/necropolis/tendril/lootbox = new /obj/structure/closet/crate/necropolis/tendril(loc) - // [/CELADON-EDIT] + var/obj/structure/closet/crate/necropolis/tendril/lootbox = new /obj/structure/closet/crate/necropolis/tendril(loc) // [CELADON-EDIT] - CELADON_BALANCE_MOBS - Меняем сундуки на обычные некрополиса // [CELADON-EDIT] - CELADON_BALANCE_MOBS - // if(!boosted) - // mychild = null - // activator = null - // qdel(src) - // return - // if(mychild.loot_drop != null) - // new mychild.loot_drop(lootbox) - // if(prob(25)) // CELADON-EDIT - ORIGINAL if(boosted) if(mychild.loot_drop != null && prob(50)) new mychild.loot_drop(lootbox) else - // [/CELADON-EDIT] new /obj/item/tumor_shard(lootbox) - // [CELADON-REMOVE] - CELADON_BALANCE_MOBS - // mychild = null - // activator = null // [/CELADON-REMOVE] qdel(src) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm index 689771337d0f..fc816449f61a 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm @@ -46,8 +46,7 @@ mob_biotypes = MOB_ORGANIC|MOB_BEAST mouse_opacity = MOUSE_OPACITY_ICON deathmessage = "explodes into gore!" - //loot = list(/obj/item/mob_trophy/broodmother_tongue) // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY - loot = list(/obj/item/crusher_trophy/broodmother_tongue) // [/CELADON-EDIT] + loot = list(/obj/item/mob_trophy/broodmother_tongue) attack_action_types = list(/datum/action/innate/elite_attack/tentacle_patch, /datum/action/innate/elite_attack/spawn_children, @@ -146,9 +145,6 @@ ranged_cooldown = world.time + 70 playsound(src,'sound/spookoween/insane_low_laugh.ogg', 200, 1) visible_message(span_warning("[src] starts picking up speed!")) - // [CELADON-ADD] - CELADON_BALANCE_MOBS - childragecall = 1 - // [/CELADON-ADD] color = "#FF0000" set_varspeed(0) move_to_delay = 3 @@ -216,14 +212,6 @@ visible_message(span_warning("[src] digs one of its tentacles under [target]!")) new /obj/effect/temp_visual/goliath_tentacle/broodmother(tturf, src) -// [CELADON-ADD] - Возвращает взрыв маленьким голиафам -/mob/living/simple_animal/hostile/asteroid/elite/broodmother_child/death() - . = ..() - visible_message(span_warning("[src] explodes!")) - explosion(get_turf(loc),0,0,0,flame_range = 3, adminlog = FALSE) - gib() -// [CELADON-ADD] - //Tentacles have less stun time compared to regular variant, to balance being able to use them much more often. Also, 10 more damage. /obj/effect/temp_visual/goliath_tentacle/broodmother/trip() var/latched = FALSE diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm index ef77f1cdf9fb..eab62846f931 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm @@ -300,8 +300,6 @@ if(rand(1,100) > hit_reaction_chance) return owner.visible_message(span_danger("[owner]'s [src] emits a loud noise as [owner] is struck!")) - // [CELADON-REMOVE] - CELADON_BALANCE_MOBS - // var/static/list/directional_shot_angles = list(0, 45, 90, 135, 180, 225, 270, 315) - // [/CELADON-REMOVE] + var/static/list/directional_shot_angles = list(0, 45, 90, 135, 180, 225, 270, 315) playsound(get_turf(owner), 'sound/magic/clockwork/invoke_general.ogg', 20, TRUE) addtimer(CALLBACK(src, PROC_REF(reactionshot), owner), 10) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm index 35fc8fe58e11..1f810620697a 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm @@ -40,9 +40,7 @@ mouse_opacity = MOUSE_OPACITY_ICON deathsound = 'sound/magic/curse.ogg' deathmessage = "'s arms reach out before it falls apart onto the floor, lifeless." - // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды - // loot_drop = /obj/item/mob_trophy/legionnaire_spine - // [/CELADON-REMOVE] + loot_drop = /obj/item/mob_trophy/legionnaire_spine attack_action_types = list(/datum/action/innate/elite_attack/legionnaire_charge, /datum/action/innate/elite_attack/head_detach, @@ -298,12 +296,8 @@ transform *= 0.33 // Legionnaire's loot: Legionnaire Spine -// [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды -/* /obj/item/mob_trophy/legionnaire_spine name = "legionnaire spine" desc = "The spine of a legionnaire. It almost feels like it's moving..." icon = 'icons/obj/lavaland/elite_trophies.dmi' icon_state = "legionnaire_spine" -*/ -// [/CELADON-REMOVE] diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm index 2a36f15169f5..13fded19e11c 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm @@ -150,8 +150,7 @@ icon_dead = "goliath_dead" throw_message = "does nothing to the thick hide of the" pre_attack_icon = "goliath_preattack" - //mob_trophy = /obj/item/mob_trophy/goliath_tentacle // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY - crusher_loot = /obj/item/crusher_trophy/goliath_tentacle // [/CELADON-EDIT] + mob_trophy = /obj/item/mob_trophy/goliath_tentacle butcher_results = list(/obj/item/food/meat/slab/goliath = 2, /obj/item/stack/sheet/bone = 2, /obj/item/stack/sheet/sinew = 2, /obj/item/stack/ore/silver = 10) guaranteed_butcher_results = list(/obj/item/stack/sheet/animalhide/goliath_hide = 2) loot = list() @@ -253,11 +252,8 @@ maxHealth = 180 health = 180 speed = 4 - //mob_trophy = /obj/item/mob_trophy/elder_tentacle + mob_trophy = /obj/item/mob_trophy/elder_tentacle guaranteed_butcher_results = list() - // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды - // trophy_drop_mod = 75 - // [/CELADON-REMOVE] wander = FALSE bonus_tame_chance = 10 var/list/cached_tentacle_turfs diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index 306ae3b4d79a..57a19c3f8101 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -56,11 +56,9 @@ OpenFire() return TRUE -// [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды -// /mob/living/simple_animal/hostile/asteroid/hivelord/spawn_mob_trophy() - // if(mob_trophy) - // loot += mob_trophy //we don't butcher -// [/CELADON-REMOVE] +/mob/living/simple_animal/hostile/asteroid/hivelord/spawn_mob_trophy() + if(mob_trophy) + loot += mob_trophy //we don't butcher /mob/living/simple_animal/hostile/asteroid/hivelord/death(gibbed) mouse_opacity = MOUSE_OPACITY_ICON @@ -130,9 +128,7 @@ throw_message = "bounces harmlessly off of" loot = list(/obj/item/organ/regenerative_core/legion) brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion - // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды - // mob_trophy = /obj/item/mob_trophy/legion_skull - // [/CELADON-REMOVE] + mob_trophy = /obj/item/mob_trophy/legion_skull del_on_death = 1 stat_attack = HARD_CRIT robust_searching = 1 @@ -146,10 +142,7 @@ move_resist = MOVE_RESIST_DEFAULT pull_force = PULL_FORCE_DEFAULT if(prob(15)) - // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY - // new /obj/item/mob_trophy/legion_skull(loc) // CELADON-EDIT - ORIGINAL - new /obj/item/crusher_trophy/legion_skull(loc) - // [/CELADON-EDIT] + new /obj/item/crusher_trophy/legion_skull(loc) // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY visible_message(span_warning("One of the [src]'s skulls looks intact.")) ..() @@ -206,11 +199,6 @@ move_force = MOVE_FORCE_DEFAULT move_resist = MOVE_RESIST_DEFAULT pull_force = PULL_FORCE_DEFAULT - // [CELADON-ADD] - RETURN_CONTENT_CRUSHER_TROPHY - if(prob(75)) - new /obj/item/crusher_trophy/dwarf_skull(loc) - visible_message("One of the [src]'s skulls looks like it survived.") - // [/CELADON-ADD] ..() //Legion skull @@ -422,9 +410,10 @@ /mob/living/simple_animal/hostile/big_legion/Initialize() .=..() // [CELADON-EDIT] - RETURN_CONTENT - // AddComponent(/datum/component/spawner, list(/mob/living/simple_animal/hostile/asteroid/hivelord/legion/nest), 200, faction, "peels itself off from", 3) // CELADON-EDIT - ORIGINAL - AddComponent(/datum/component/spawner, list(/mob/living/simple_animal/hostile/asteroid/hivelord/legion/nest, - /mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril), 200, faction, "peels itself off from", 3) + AddComponent(/datum/component/spawner, list( + /mob/living/simple_animal/hostile/asteroid/hivelord/legion/nest, + /mob/living/simple_animal/hostile/asteroid/hivelord/legion/tendril, + ), 200, faction, "peels itself off from", 3) // [/CELADON-EDIT] // Snow Legion @@ -436,9 +425,7 @@ icon_living = "snowlegion" icon_aggro = "snowlegion_alive" icon_dead = "snowlegion" - // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды - // mob_trophy = /obj/item/mob_trophy/legion_skull - // [/CELADON-REMOVE] + mob_trophy = /obj/item/mob_trophy/legion_skull loot = list(/obj/item/organ/regenerative_core/legion) brood_type = /mob/living/simple_animal/hostile/asteroid/hivelordbrood/legion/snow diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm index 6e6b5181abd9..7da33147ca85 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm @@ -25,14 +25,12 @@ /obj/item/clothing/suit/hooded/wintercoat = 1, /obj/item/clothing/suit/jacket = 1, /obj/item/clothing/suit/jacket/leather = 1, - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - /obj/item/clothing/suit/jacket/leather/overcoat = 1, - // [/CELADON-ADD] /obj/item/clothing/suit/jacket/leather/duster = 1, /obj/item/clothing/suit/jacket/miljacket = 1, /obj/item/clothing/suit/gothcoat = 1, /obj/item/clothing/suit/toggle/industrial = 1, /obj/item/clothing/suit/toggle/hazard = 1, + /obj/item/clothing/suit/jacket/leather/overcoat = 1, // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN ) ) back = pick_weight(list( @@ -81,10 +79,8 @@ /obj/item/clothing/head/hardhat = 2, /obj/item/clothing/head/hardhat/orange = 2, /obj/item/clothing/head/hardhat/dblue = 2, - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - /obj/item/clothing/head/foilhat = 1, - // [/CELADON-ADD] /obj/item/clothing/head/pirate = 1, + /obj/item/clothing/head/foilhat = 1, // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN ) ) if(prob(50)) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm index 5a56751f94be..ca95f90a8a6e 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm @@ -77,10 +77,6 @@ new /obj/item/assembly/signaler/anomaly/bluespace(loc) if(prob(5)) new /obj/item/gem/fdiamond(loc) - // [CELADON-ADD] - RETURN_CONTENT_CRUSHER_TROPHY - if(prob(10)) - new /obj/item/crusher_trophy/ice_wing(loc) - // [/CELADON-ADD] return ..() /mob/living/simple_animal/hostile/asteroid/old_demon @@ -127,9 +123,7 @@ footstep_type = FOOTSTEP_MOB_CLAW /// Distance the demon will teleport from the target var/teleport_distance = 3 - // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды - // trophy_drop_mod = 75 - // [/CELADON-REMOVE] + trophy_drop_mod = 75 /obj/projectile/temp/basilisk/ice name = "ice blast" @@ -164,10 +158,6 @@ new /obj/item/assembly/signaler/anomaly/bluespace(loc) if(prob(20)) new /obj/item/gem/fdiamond(loc) - // [CELADON-ADD] - RETURN_CONTENT_CRUSHER_TROPHY - if(prob(50)) - new /obj/item/crusher_trophy/ice_crystal(loc) - // [/CELADON-ADD] return ..() /mob/living/simple_animal/hostile/asteroid/ice_demon/random/Initialize() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_whelp.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_whelp.dm index aed2dd3017aa..e62b14aa4926 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_whelp.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_whelp.dm @@ -28,8 +28,7 @@ move_resist = MOVE_FORCE_VERY_STRONG butcher_results = list(/obj/item/stack/ore/diamond = 3, /obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/bone = 10, /obj/item/stack/sheet/animalhide/ashdrake = 1) loot = list() - //mob_trophy = /obj/item/mob_trophy/tail_spike // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY - crusher_loot = /obj/item/crusher_trophy/tail_spike // [/CELADON-EDIT] + mob_trophy = /obj/item/mob_trophy/tail_spike deathmessage = "collapses on its side." deathsound = 'sound/magic/demon_dies.ogg' stat_attack = HARD_CRIT diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/lobstrosity.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/lobstrosity.dm index d7d10d73dcd9..9000fbfe5e82 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/lobstrosity.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/lobstrosity.dm @@ -33,8 +33,7 @@ butcher_results = list(/obj/item/food/meat/rawcrab = 2, /obj/item/stack/sheet/bone = 2) robust_searching = TRUE footstep_type = FOOTSTEP_MOB_CLAW - //mob_trophy = /obj/item/mob_trophy/lobster_claw // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY - crusher_loot = /obj/item/crusher_trophy/lobster_claw // [/CELADON-EDIT] + mob_trophy = /obj/item/mob_trophy/lobster_claw /mob/living/simple_animal/hostile/asteroid/lobstrosity/beach name = "tropical lobstrosity" diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm index addea218d07f..e745c37b6836 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/mining_mobs.dm @@ -56,25 +56,15 @@ /mob/living/simple_animal/hostile/asteroid/death(gibbed) SSblackbox.record_feedback("tally", "mobs_killed_mining", 1, type) // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY - // if(prob(trophy_drop_mod)) //on average, you'll need to kill 4 creatures before getting the item - // spawn_mob_trophy() // CELADON-EDIT - ORIGINAL - // ..(gibbed) var/datum/status_effect/crusher_damage/C = has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) if(C && crusher_loot && prob((C.total_damage/maxHealth) * crusher_drop_mod)) //on average, you'll need to kill 4 creatures before getting the item spawn_crusher_loot() // [/CELADON-EDIT] - // [CELADON-ADD] - RETURN_CONTENT ..(gibbed) - // [/CELADON-ADD] -// [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY -// /mob/living/simple_animal/hostile/asteroid/proc/spawn_mob_trophy() -// if(mob_trophy) -// butcher_results[mob_trophy] = 1 // CELADON-EDIT - ORIGINAL -/mob/living/simple_animal/hostile/asteroid/proc/spawn_crusher_loot() - if(crusher_loot) - butcher_results[crusher_loot] = 1 -// [/CELADON-EDIT] +/mob/living/simple_animal/hostile/asteroid/proc/spawn_mob_trophy() + if(mob_trophy) + butcher_results[mob_trophy] = 1 /mob/living/simple_animal/hostile/asteroid/handle_temperature_damage() if(bodytemperature < minbodytemp) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/wolf.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/wolf.dm index 4af8d3ebf903..684d483e8014 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/wolf.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/wolf.dm @@ -31,13 +31,9 @@ move_force = MOVE_FORCE_WEAK move_resist = MOVE_FORCE_WEAK pull_force = MOVE_FORCE_WEAK - // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды - // butcher_results = list(/obj/item/food/meat/slab = 2, /obj/item/stack/sheet/sinew/wolf = 2, /obj/item/stack/sheet/bone = 2, /obj/item/mob_trophy/wolf_ear = 0.5) - // [/CELADON-REMOVE] + butcher_results = list(/obj/item/food/meat/slab = 2, /obj/item/stack/sheet/sinew/wolf = 2, /obj/item/stack/sheet/bone = 2, /obj/item/mob_trophy/wolf_ear = 0.5) loot = list() - // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды - // mob_trophy = /obj/item/mob_trophy/wolf_ear - // [/CELADON-REMOVE] + mob_trophy = /obj/item/mob_trophy/wolf_ear stat_attack = HARD_CRIT knockdown_time = 1 SECONDS robust_searching = TRUE @@ -132,9 +128,7 @@ charge_frequency = 20 SECONDS butcher_results = list(/obj/item/food/meat/slab = 2, /obj/item/stack/sheet/sinew/wolf = 4, /obj/item/stack/sheet/sinew/wolf = 4, /obj/item/stack/sheet/bone = 5) loot = list() - // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды - // mob_trophy = /obj/item/mob_trophy/fang - // [/CELADON-REMOVE] + mob_trophy = /obj/item/mob_trophy/fang /mob/living/simple_animal/hostile/asteroid/wolf/random/Initialize() . = ..() diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index e14a26510e50..86a2c567621e 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -450,26 +450,6 @@ alert_overlay.plane = FLOAT_PLANE A.add_overlay(alert_overlay) -/** - * Heal a robotic body part on a mob - */ -/proc/item_heal_robotic(mob/living/carbon/human/H, mob/user, brute_heal, burn_heal) - var/obj/item/bodypart/affecting = H.get_bodypart(check_zone(user.zone_selected)) - if(affecting && (!IS_ORGANIC_LIMB(affecting))) - var/dam //changes repair text based on how much brute/burn was supplied - if(brute_heal > burn_heal) - dam = 1 - else - dam = 0 - if((brute_heal > 0 && affecting.brute_dam > 0) || (burn_heal > 0 && affecting.burn_dam > 0)) - if(affecting.heal_damage(brute_heal, burn_heal, 0, BODYTYPE_ROBOTIC)) - H.update_damage_overlays() - user.visible_message("[user] has fixed some of the [dam ? "dents on" : "burnt wires in"] [H]'s [parse_zone(affecting.body_zone)].", \ - span_notice("You fix some of the [dam ? "dents on" : "burnt wires in"] [H == user ? "your" : "[H]'s"] [parse_zone(affecting.body_zone)].")) - return 1 //successful heal - else - to_chat(user, span_warning("[affecting] is already in good condition!")) - ///Is the passed in mob a ghost with admin powers, doesn't check for AI interact like isAdminGhost() used to /proc/isAdminObserver(mob/user) if(!user) //Are they a mob? Auto interface updates call this with a null src diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index 608635805413..a77e0a1b3388 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -96,12 +96,12 @@ SUBTLER user.visible_message(message = message, self_message = message, vision_distance = 1) ///////////////// VERB CODE -// [CELADON-REMOVE] - CELADON_SUBTLER - Замена тут `mod_celadon/subtler/code/subtler.dm` -// /mob/living/verb/subtler() -// set name = "Subtler" -// set category = "IC" -// if(GLOB.say_disabled) //This is here to try to identify lag problems -// to_chat(usr, span_danger("Speech is currently admin-disabled.")) -// return -// usr.emote("subtler") -// [/CELADON-REMOVE] +/* [CELADON-REMOVE] - CELADON_SUBTLER - Замена тут `mod_celadon/subtler/code/subtler.dm` +/mob/living/verb/subtler() + set name = "Subtler" + set category = "IC" + if(GLOB.say_disabled) //This is here to try to identify lag problems + to_chat(usr, span_danger("Speech is currently admin-disabled.")) + return + usr.emote("subtler") +[/CELADON-REMOVE] */ diff --git a/code/modules/mob_spawner/spawner_componet.dm b/code/modules/mob_spawner/spawner_componet.dm index 46f73b79783d..506c69c7c21c 100644 --- a/code/modules/mob_spawner/spawner_componet.dm +++ b/code/modules/mob_spawner/spawner_componet.dm @@ -113,8 +113,6 @@ // [/CELADON-REMOVE] L.faction = src.faction P.visible_message(span_danger("[L] [pick(spawn_text)] [P].")) - // [CELADON-ADD] - DELETION_TIMER_TO_SPAWNED_MOBS - L.AddComponent(/datum/component/fancy_deleting_timer, 300, 0, "gib",) - // [/CELADON-ADD] + L.AddComponent(/datum/component/fancy_deleting_timer, 300, 0, "gib") // [CELADON-ADD] - DELETION_TIMER_TO_SPAWNED_MOBS if(length(spawn_sound)) playsound(P, pick(spawn_sound), 50, TRUE) diff --git a/code/modules/mod/mod_control.dm b/code/modules/mod/mod_control.dm index e085320dafef..da56b6f21749 100644 --- a/code/modules/mod/mod_control.dm +++ b/code/modules/mod/mod_control.dm @@ -641,12 +641,9 @@ var/list/skin_updating = mod_parts + src for(var/obj/item/part as anything in skin_updating) // [CELADON-EDIT] - inteq_vendor - REASSIGNING ICONS DIRECTORY - //part.icon = used_skin[MOD_ICON_OVERRIDE] || 'icons/obj/clothing/modsuit/mod_clothing.dmi' // [CELADON-EDIT] - ORIGINAL - //part.mob_overlay_icon = used_skin[MOD_WORN_ICON_OVERRIDE] || 'icons/mob/clothing/modsuit/mod_clothing.dmi' // [CELADON-EDIT] - ORIGINAL part.icon = used_skin[MOD_ICON_OVERRIDE] || 'mod_celadon/_storage_icons/icons/items/clothing/mod_suit/mod_clothing.dmi' part.mob_overlay_icon = used_skin[MOD_WORN_ICON_OVERRIDE] || 'mod_celadon/_storage_icons/icons/items/clothing/mod_suit/overlay/mod_clothing.dmi' // [CELADON-EDIT] - part.icon_state = "[skin]-[part.base_icon_state]" for(var/obj/item/clothing/part as anything in mod_parts) var/used_category diff --git a/code/modules/mod/modules/_module.dm b/code/modules/mod/modules/_module.dm index 24ddf53c734a..d8b61f51419d 100644 --- a/code/modules/mod/modules/_module.dm +++ b/code/modules/mod/modules/_module.dm @@ -117,10 +117,7 @@ if(toolset) return ui_action_click() if(device) - // [CELADON-EDIT] - FIX_MODSUIT - Putting a MODsuit's device in active hand, instead of any hand - //if(mod.wearer.put_in_hands(device)) if(mod.wearer.put_in_hands(device)) - // [/CELADON-EDIT] to_chat(mod.wearer,span_notice("You extend \the [device].")) RegisterSignal(mod.wearer, COMSIG_ATOM_EXITED, PROC_REF(on_exit)) RegisterSignal(mod.wearer, COMSIG_KB_MOB_DROPITEM_DOWN, PROC_REF(dropkey)) @@ -173,10 +170,7 @@ if(module_type == MODULE_ACTIVE) mod.selected_module = null if(display_message) - // [CELADON-EDIT] - FIX_MODSUIT - Fixes modsuits not retracting items - runtime was here - //to_chat(mod.wearer,span_warning(device ? "You retract \the [device]." : "\The [src] deactivates.")) - to_chat(mod.wearer,span_warning("You retract \the [device].")) - // [/CELADON-EDIT] + to_chat(mod.wearer,span_warning(device ? "You retract \the [device]." : "\The [src] deactivates.")) if(device) mod.wearer.transferItemToLoc(device, src, force = TRUE) UnregisterSignal(mod.wearer, COMSIG_ATOM_EXITED) diff --git a/code/modules/mod/modules/modules_antag.dm b/code/modules/mod/modules/modules_antag.dm index 6fadba3c4557..53c6e77e2c73 100644 --- a/code/modules/mod/modules/modules_antag.dm +++ b/code/modules/mod/modules/modules_antag.dm @@ -143,10 +143,8 @@ var/charge_recovery = 1 /// Whether or not this shield can lose multiple charges. var/lose_multiple_charges = FALSE - // [CELADON-REMOVE] - FIXES_MODSUITS - Удалено т.к. не используется /// The item path to recharge this shielkd. - // var/recharge_path = null - // [/CELADON-REMOVE] + var/recharge_path = null /// The icon file of the shield. var/shield_icon_file = 'icons/effects/effects.dmi' /// The icon_state of the shield. @@ -159,11 +157,8 @@ charges = max_charges /obj/item/mod/module/energy_shield/on_suit_activation() - // [CELADON-EDIT] - FIXES_MODSUITS - // charge_recovery = charge_recovery, lose_multiple_charges = lose_multiple_charges, recharge_path = recharge_path, starting_charges = charges, shield_icon_file = shield_icon_file, shield_icon = shield_icon) // ORIGINAL mod.AddComponent(/datum/component/shielded, max_charges = max_charges, recharge_start_delay = recharge_start_delay, charge_increment_delay = charge_increment_delay, \ - charge_recovery = charge_recovery, lose_multiple_charges = lose_multiple_charges, starting_charges = charges, shield_icon_file = shield_icon_file, shield_icon = shield_icon) - // [/CELADON-EDIT] + charge_recovery = charge_recovery, lose_multiple_charges = lose_multiple_charges, recharge_path = recharge_path, starting_charges = charges, shield_icon_file = shield_icon_file, shield_icon = shield_icon) RegisterSignal(mod.wearer, COMSIG_HUMAN_CHECK_SHIELDS, PROC_REF(shield_reaction)) /obj/item/mod/module/energy_shield/on_suit_deactivation(deleting = FALSE) diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm index 1734d9f89385..93ab624ba8e8 100644 --- a/code/modules/mod/modules/modules_general.dm +++ b/code/modules/mod/modules/modules_general.dm @@ -379,12 +379,6 @@ /obj/item/clothing/head/that, /obj/item/clothing/head/nursehat, /obj/item/clothing/head/chefhat, - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - /obj/item/clothing/head/hardhat/reindeer, - /obj/item/clothing/head/sombrero, - /obj/item/clothing/head/rabbitears, - /obj/item/clothing/head/powdered_wig, - // [/CELADON-ADD] /obj/item/clothing/head/papersack, )) diff --git a/code/modules/ninja/energy_katana.dm b/code/modules/ninja/energy_katana.dm index eb4887b6dbd9..20aa56ca5e31 100644 --- a/code/modules/ninja/energy_katana.dm +++ b/code/modules/ninja/energy_katana.dm @@ -13,10 +13,7 @@ var/datum/action/innate/dash/ninja/jaunt var/dash_toggled = TRUE -// [CELADON-EDIT] - FIXES_ANTAG_NINJA -// /obj/item/melee/sword/energy_katana/Initialize() // ORIGINAL -/obj/item/melee/sword/energy_katana/Initialize(mapload) -// [/CELADON-EDIT] +/obj/item/melee/sword/energy_katana/Initialize(mapload) // [CELADON-EDIT] - FIXES_ANTAG_NINJA . = ..() jaunt = new(src) spark_system = new /datum/effect_system/spark_spread() diff --git a/code/modules/ninja/suit/suit.dm b/code/modules/ninja/suit/suit.dm index 71d193c8d7c7..0e65392e665a 100644 --- a/code/modules/ninja/suit/suit.dm +++ b/code/modules/ninja/suit/suit.dm @@ -83,10 +83,7 @@ Contents: return ..() // Space Suit temperature regulation and power usage -// [CELADON-EDIT] - FIXES_ANTAG_NINJA -// /obj/item/clothing/suit/space/space_ninja/process(seconds_per_tick) // ORIGINAL -/obj/item/clothing/suit/space/space_ninja/process(delta_time) -// [/CELADON-EDIT] +/obj/item/clothing/suit/space/space_ninja/process(seconds_per_tick) // [CELADON-EDIT] - FIXES_ANTAG_NINJA var/mob/living/carbon/human/user = src.loc if(!user || !ishuman(user) || !(user.wear_suit == src)) return @@ -97,73 +94,61 @@ Contents: terminate() // Kills the suit and attached objects. else if(cell.charge > 0) if(s_coold > 0) - // [CELADON-EDIT] - FIXES_ANTAG_NINJA - // s_coold -= seconds_per_tick // Checks for ability s_cooldown first. - // cell.charge -= s_cost * seconds_per_tick // s_cost is the default energy cost each ntick, usually 5. - // if(stealth) // If stealth is active. - // cell.charge -= s_acost * seconds_per_tick // ORIGINAL - s_coold = max(s_coold - delta_time, 0) // Checks for ability s_cooldown first. - cell.charge -= s_cost * delta_time // s_cost is the default energy cost each ntick, usually 5. - // [/CELADON-EDIT] + s_coold -= seconds_per_tick // Checks for ability s_cooldown first. + cell.charge -= s_cost * seconds_per_tick // s_cost is the default energy cost each ntick, usually 5. if(stealth) // If stealth is active. - // [CELADON-EDIT] - FIXES_ANTAG_NINJA - // cell.charge -= s_acost * seconds_per_tick // ORIGINAL - cell.charge -= s_acost * delta_time - // [/CELADON-EDIT] + cell.charge -= s_acost * seconds_per_tick else cell.charge = 0 cancel_stealth() user.adjust_bodytemperature(HUMAN_BODYTEMP_NORMAL - user.bodytemperature) -// [CELADON-REMOVE] - FIXES_ANTAG_NINJA - Вынесено в модуль +//Simply deletes all the attachments and self, killing all related procs. +/obj/item/clothing/suit/space/space_ninja/proc/terminate() + qdel(n_hood) + qdel(n_gloves) + qdel(n_shoes) + qdel(src) -// //Simply deletes all the attachments and self, killing all related procs. -// /obj/item/clothing/suit/space/space_ninja/proc/terminate() -// qdel(n_hood) -// qdel(n_gloves) -// qdel(n_shoes) -// qdel(src) - - -// //Randomizes suit parameters. -// /obj/item/clothing/suit/space/space_ninja/proc/randomize_param() -// s_cost = rand(1,10) -// s_acost = rand(10,50) -// s_delay = rand(10,100) -// s_bombs = rand(5,20) -// a_boost = rand(1,7) - - -// //This proc prevents the suit from being taken off. -// /obj/item/clothing/suit/space/space_ninja/proc/lock_suit(mob/living/carbon/human/H) -// if(!istype(H)) -// return FALSE -// if(!is_ninja(H)) -// to_chat(H, span_danger("fÄTaL ÈÈRRoR: 382200-*#00CÖDE RED\nUNAU†HORIZED USÈ DETÈC†††eD\nCoMMÈNCING SUB-R0U†IN3 13...\nTÈRMInATING U-U-USÈR...")) -// H.gib() -// return FALSE -// if(!istype(H.head, /obj/item/clothing/head/helmet/space/space_ninja)) -// to_chat(H, "[span_userdanger("ERROR")]: 100113 UNABLE TO LOCATE HEAD GEAR\nABORTING...") -// return FALSE -// if(!istype(H.shoes, /obj/item/clothing/shoes/space_ninja)) -// to_chat(H, "[span_userdanger("ERROR")]: 122011 UNABLE TO LOCATE FOOT GEAR\nABORTING...") -// return FALSE -// if(!istype(H.gloves, /obj/item/clothing/gloves/space_ninja)) -// to_chat(H, "[span_userdanger("ERROR")]: 110223 UNABLE TO LOCATE HAND GEAR\nABORTING...") -// return FALSE -// affecting = H -// ADD_TRAIT(src, TRAIT_NODROP, NINJA_SUIT_TRAIT) -// slowdown = 0 -// n_hood = H.head -// ADD_TRAIT(n_hood, TRAIT_NODROP, NINJA_SUIT_TRAIT) -// n_shoes = H.shoes -// ADD_TRAIT(n_shoes, TRAIT_NODROP, NINJA_SUIT_TRAIT) -// n_shoes.slowdown-- -// n_gloves = H.gloves -// ADD_TRAIT(n_gloves, TRAIT_NODROP, NINJA_SUIT_TRAIT) -// return TRUE -// [/CELADON-REMOVE] + +//Randomizes suit parameters. +/obj/item/clothing/suit/space/space_ninja/proc/randomize_param() + s_cost = rand(1,10) + s_acost = rand(10,50) + s_delay = rand(10,100) + s_bombs = rand(5,20) + a_boost = rand(1,7) + + +//This proc prevents the suit from being taken off. +/obj/item/clothing/suit/space/space_ninja/proc/lock_suit(mob/living/carbon/human/H) + if(!istype(H)) + return FALSE + if(!is_ninja(H)) + to_chat(H, span_danger("fÄTaL ÈÈRRoR: 382200-*#00CÖDE RED\nUNAU†HORIZED USÈ DETÈC†††eD\nCoMMÈNCING SUB-R0U†IN3 13...\nTÈRMInATING U-U-USÈR...")) + H.gib() + return FALSE + if(!istype(H.head, /obj/item/clothing/head/helmet/space/space_ninja)) + to_chat(H, "[span_userdanger("ERROR")]: 100113 UNABLE TO LOCATE HEAD GEAR\nABORTING...") + return FALSE + if(!istype(H.shoes, /obj/item/clothing/shoes/space_ninja)) + to_chat(H, "[span_userdanger("ERROR")]: 122011 UNABLE TO LOCATE FOOT GEAR\nABORTING...") + return FALSE + if(!istype(H.gloves, /obj/item/clothing/gloves/space_ninja)) + to_chat(H, "[span_userdanger("ERROR")]: 110223 UNABLE TO LOCATE HAND GEAR\nABORTING...") + return FALSE + affecting = H + ADD_TRAIT(src, TRAIT_NODROP, NINJA_SUIT_TRAIT) + slowdown = 0 + n_hood = H.head + ADD_TRAIT(n_hood, TRAIT_NODROP, NINJA_SUIT_TRAIT) + n_shoes = H.shoes + ADD_TRAIT(n_shoes, TRAIT_NODROP, NINJA_SUIT_TRAIT) + n_shoes.slowdown-- + n_gloves = H.gloves + ADD_TRAIT(n_gloves, TRAIT_NODROP, NINJA_SUIT_TRAIT) + return TRUE /obj/item/clothing/suit/space/space_ninja/proc/lockIcons(mob/living/carbon/human/H) icon_state = H.gender==FEMALE ? "s-ninjanf" : "s-ninjan" diff --git a/code/modules/overmap/_overmap_datum.dm b/code/modules/overmap/_overmap_datum.dm index 50bc2b331130..1d2e159f86b5 100644 --- a/code/modules/overmap/_overmap_datum.dm +++ b/code/modules/overmap/_overmap_datum.dm @@ -13,6 +13,8 @@ var/name ///A quick description of the event. Should fit into a quick tgui hoverover tip. var/desc + ///The class of this object, used in place of its name when cloaked or obscured. + var/ship_class = "Object" ///Extra info that would fit into a sidebar or an extra pane such as. Should fit into a quick tgui hoverover tip. var/extra_info ///the color of the event if it isn't overridden by the overmap @@ -55,10 +57,6 @@ ///How much % of a radio message we scramble of radios nearby/on top of us before sending. Will only scramble 1/5th this value if the radio is an adjacent tile, not 100%. Meant for hazards var/interference_power - // [CELADON-ADD] - OVERMAP SENSORS - Это вагабонд насрал - var/sensor_range = 1 - // [/CELADON-ADD] - /// The current docking ticket of this object, if any var/datum/docking_ticket/current_docking_ticket @@ -67,38 +65,6 @@ /// The 'death time' of the object. Used for limited lifespan events. var/death_time -// [CELADON-ADD] - CELADON_OVERMAP_STUFF - Это вагабонд насрал -/obj/overmap - var/skip_alarm = 0 - -/proc/get_pixel_distance(atom/A, atom/B) - var/x_dist = 0 - var/y_dist = 0 - - if(A.x < B.x) - x_dist = (B.x-A.x)*32-A.pixel_w+B.pixel_w - else if(A.x > B.x) - x_dist = (A.x-B.x)*32+A.pixel_w-B.pixel_w - else - if(A.pixel_w < B.pixel_w) - x_dist = B.pixel_w-A.pixel_w - else if(A.pixel_w > B.pixel_w) - x_dist = A.pixel_w-B.pixel_w - - if(A.y < B.y) - y_dist = (B.y-A.y)*32-A.pixel_z+B.pixel_z - else if(A.y > B.y) - y_dist = (A.y-B.y)*32+A.pixel_z-B.pixel_z - else - if(A.pixel_z < B.pixel_z) - y_dist = B.pixel_z-A.pixel_z - else if(A.pixel_z > B.pixel_z) - y_dist = A.pixel_z-B.pixel_z - - return abs(x_dist)+abs(y_dist) -// [/CELADON-ADD] - -// /datum/overmap/New(position, ...) // Старая позиция /datum/overmap/New(position, datum/overmap_star_system/system_spawned_in, ...) SHOULD_NOT_OVERRIDE(TRUE) // Use [/datum/overmap/proc/Initialize] instead. current_overmap = system_spawned_in @@ -114,7 +80,7 @@ current_overmap = docked_object.current_overmap if(!current_overmap) - current_overmap = SSovermap.default_system + current_overmap = SSovermap.safe_system stack_trace("[src.name] has no overmap on load!! This is very bad!! Set the object's overmap to the default overmap of the round!!") current_overmap.overmap_objects |= src SSovermap.overmap_objects |= src @@ -130,6 +96,8 @@ if(!char_rep && name) char_rep = name[1] + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_CLOAKED), PROC_REF(activate_cloak)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_CLOAKED), PROC_REF(deactivate_cloak)) Initialize(arglist(args)) /datum/overmap/Destroy(force) @@ -213,7 +181,7 @@ if(new_x == x && new_y == y) return if(!current_overmap) - current_overmap = SSovermap.default_system + current_overmap = SSovermap.safe_system CRASH("Overmap datum [src] tried to move() with no valid overmap! What?? Moving to the default sector of SSovermap as a failsafe!") new_x %= current_overmap.size new_y %= current_overmap.size @@ -409,7 +377,7 @@ return FALSE /datum/overmap/ship/controlled/do_hail(mob/living/user, datum/overmap/interact_target) - if(!interact_target) //if(!interact_target || interact_target==src) // [CELADON-EDIT] - CELADON_OVERMAP - SHIP_HAIL_HIMSELF - Возвращаем фичу на сообщение кораблей самим себе + if(!interact_target) // [CELADON-EDIT] - CELADON_OVERMAP - SHIP_HAIL_HIMSELF - Возвращаем фичу на сообщение кораблей самим себе return "Invalid Target." var/input = stripped_input(user, "Please choose a message to hail the target with.", "Hailing Vessel") if(!input) @@ -464,7 +432,7 @@ * * * dock_target - The overmap datum to dock to. Cannot be null. */ -/datum/overmap/proc/Dock(datum/overmap/dock_target, obj/docking_port/stationary/override_dock, force = FALSE) // [OVERWRITE] - FIXES_DOCKING - mod_celadon/fixes/code/dock_empty_space_fix.dm +/datum/overmap/proc/Dock(datum/overmap/dock_target, obj/docking_port/stationary/override_dock, force = FALSE) SHOULD_CALL_PARENT(TRUE) if(!istype(dock_target)) CRASH("Overmap datum [src] tried to dock to an invalid overmap datum.") @@ -713,6 +681,12 @@ token.color = current_overmap.primary_color current_overmap.post_edit_token_state(src) +/datum/overmap/proc/activate_cloak() + alter_token_appearance() + +/datum/overmap/proc/deactivate_cloak() + alter_token_appearance() + /* * For use when this datum is just completely fucked with no real solutions. * @@ -721,10 +695,10 @@ */ /datum/overmap/proc/fsck() //set the current overmap to the default one. If theres no default overmap shit is truly fucked - if(!SSovermap.default_system) + if(!SSovermap.safe_system) message_admins(span_userdanger("There is no default overmap set. Consider restarting the round.")) CRASH("There is no default overmap set. Consider restarting the round.") - current_overmap = SSovermap.default_system + current_overmap = SSovermap.safe_system //reset all docking timers dock_time = null diff --git a/code/modules/overmap/helm.dm b/code/modules/overmap/helm.dm index 97dd2553586e..fe35134f5772 100644 --- a/code/modules/overmap/helm.dm +++ b/code/modules/overmap/helm.dm @@ -186,6 +186,8 @@ user.client.register_map_obj(current_ship.token.cam_screen) user.client.register_map_obj(current_ship.token.cam_plane_master) user.client.register_map_obj(current_ship.token.cam_background) + if(current_ship.cloaked_image) + user.client.images += current_ship.cloaked_image current_ship.token.update_screen() // Open UI @@ -243,6 +245,8 @@ var/list/other_data = list( name = object.name, candock = available_dock, + object_class = object.ship_class, + hidden = HAS_TRAIT(object, TRAIT_CLOAKED), ref = REF(object) ) .["otherInfo"] += list(other_data) @@ -252,11 +256,10 @@ .["docking"] = current_ship.docking .["docked"] = current_ship.docked_to // [CELADON-EDIT] - CELADON_OVERMAP_ARPA - Это вагабонд насрал - // .["heading"] = dir2text(current_ship.get_heading()) || "None" .["course"] = "[current_ship.get_alt_heading()]°" .["heading"] = "[current_ship.bow_heading]°" + .["rotating"] = current_ship.rotating // [/CELADON-EDIT] - // .["heading"] = dir2text(current_ship.get_heading()) || "None" // КОД JOPA .["sector"] = current_ship.current_overmap.name .["speed"] = current_ship.get_speed() .["eta"] = current_ship.get_eta() @@ -265,9 +268,12 @@ .["aiControls"] = allow_ai_control .["burnDirection"] = current_ship.burn_direction .["burnPercentage"] = current_ship.burn_percentage - // [CELADON-ADD] - CELADON_OVERMAP_ARPA - Это вагабонд насрал - .["rotating"] = current_ship.rotating - // [/CELADON-ADD] + .["cloaked"] = HAS_TRAIT_FROM(current_ship, TRAIT_CLOAKED, SHIPMODULE_CLOAKING) + + var/obj/machinery/power/cloak/cloaking_system = current_ship.ship_modules[SHIPMODULE_CLOAKING] + if(cloaking_system) + .["cloakChargePercent"] = 100 * cloaking_system.current_charge / max(cloaking_system.max_charge, 1) + for(var/datum/weakref/engine in current_ship.shuttle_port.engine_list) var/obj/machinery/power/shuttle/engine/real_engine = engine.resolve() if(!real_engine) @@ -315,6 +321,7 @@ sensor_range = current_ship.sensor_range // [/CELADON-EDIT] ) + .["hasCloaking"] = !isnull(current_ship.ship_modules[SHIPMODULE_CLOAKING]) .["canFly"] = TRUE .["aiUser"] = issilicon(user) @@ -356,7 +363,7 @@ if(!reject_bad_text(new_name, MAX_CHARTER_LEN) || CHAT_FILTER_CHECK(new_name)) say("Error: Replacement designation rejected by system.") return - if(tgui_alert(usr, "Are you sure you want to rename the ship to the \"[ship_name]\"?", "Rename Confirmation", list("Yes", "No")) != "Yes") + if(tgui_alert(usr, "Are you sure you want to rename the ship to the \"[ship_name]\"?", "Rename Confirmation", list("Yes", "No")) != "Yes") // CELADON EDIT return if(!current_ship.Rename(new_name)) say("Error: [COOLDOWN_TIMELEFT(current_ship, rename_cooldown)/10] seconds until ship designation can be changed.") @@ -386,6 +393,12 @@ current_ship.SendSos(name = "[current_ship.name]", x = "[current_ship.x || current_ship.docked_to.x]", y = "[current_ship.y || current_ship.docked_to.y]") return // [/Celadon-ADD] + if("toggle_cloak") + var/obj/machinery/power/cloak/cloaking_system = current_ship.ship_modules[SHIPMODULE_CLOAKING] + if(!cloaking_system) + return + cloaking_system.set_cloak(!cloaking_system.cloak_active) + return TRUE if("act_overmap") if(SSshuttle.jump_mode > BS_JUMP_CALLED) to_chat(usr, "Cannot interact due to bluespace jump preperations!") @@ -418,7 +431,6 @@ current_ship.rotating = 1 return // [/CELADON-ADD] - // if("act_overmap") // КОД JOPA if("quick_dock") if(SSshuttle.jump_mode > BS_JUMP_CALLED) to_chat(usr, span_warning("Cannot dock due to bluespace jump preperations!")) @@ -506,6 +518,8 @@ if(current_ship.burn_direction > BURN_NONE && !length(concurrent_users) && !viewer && is_living) // If accelerating with nobody else to stop it say("Pilot absence detected, engaging acceleration safeties.") current_ship.change_heading(BURN_NONE) + if(current_ship.cloaked_image) + user.client.images -= current_ship.cloaked_image // Turn off the console if(!length(concurrent_users) && is_living) @@ -529,10 +543,21 @@ playsound(src, 'sound/effects/fuse.ogg') current_ship.helm_locked = FALSE -/obj/machinery/computer/helm/multitool_act(mob/living/user, obj/item/I) +/obj/machinery/computer/helm/multitool_act(mob/living/user, obj/item/multitool/tool) if(!Adjacent(user)) return + if(istype(tool, /obj/item/multitool) && isweakref(tool.buffer)) + var/datum/weakref/buffer_ref = tool.buffer + var/obj/machinery/power/cloak/linked_cloak = buffer_ref.resolve() + if(istype(linked_cloak, /obj/machinery/power/cloak)) + var/obj/machinery/power/cloak/current_cloak = current_ship.ship_modules[SHIPMODULE_CLOAKING] + if(current_cloak) + current_cloak.unlink_from_ship() + linked_cloak.link_to_ship(current_ship) + balloon_alert(user, "[linked_cloak.name] linked!") + return COMPONENT_BLOCK_TOOL_ATTACK + to_chat(user, span_warning("You begin to manually override the local database...")) if(!do_after(user, 2 SECONDS, list(src))) return COMPONENT_BLOCK_TOOL_ATTACK diff --git a/code/modules/overmap/objects/dynamic_datum.dm b/code/modules/overmap/objects/dynamic_datum.dm index b0d76eaba22f..ca285a60482a 100644 --- a/code/modules/overmap/objects/dynamic_datum.dm +++ b/code/modules/overmap/objects/dynamic_datum.dm @@ -128,7 +128,7 @@ playsound(Mob, landing_sound, 50) -/datum/overmap/dynamic/post_undocked(datum/overmap/dock_requester) // [OVERWRITE] - FIXES_DOCKING - mod_celadon/fixes/code/dock_empty_space_fix.dm +/datum/overmap/dynamic/post_undocked(datum/overmap/dock_requester) start_countdown() /datum/overmap/dynamic/proc/start_countdown(_lifespan = 60 SECONDS, _color = null) @@ -159,7 +159,6 @@ if(length(mapzone?.get_mind_mobs()) || SSlag_switch.measures[DISABLE_PLANETDEL]) return FALSE //Dont fuck over stranded people - return TRUE /datum/overmap/dynamic/proc/reset_dynamic() @@ -195,6 +194,7 @@ #endif + /datum/overmap/dynamic/proc/set_planet_type(datum/planet_type/planet) #ifndef NOOVERMAP if(!is_type_in_list(planet, list(/datum/planet_type/asteroid, /datum/planet_type/spaceruin))) diff --git a/code/modules/overmap/objects/event_datum.dm b/code/modules/overmap/objects/event_datum.dm index d6939ea2bddc..1e478edd36eb 100644 --- a/code/modules/overmap/objects/event_datum.dm +++ b/code/modules/overmap/objects/event_datum.dm @@ -80,40 +80,27 @@ name = "asteroid field (moderate)" desc = "An area of space rich with asteroids, going fast through here could prove dangerous" base_icon_state = "meteor_medium_" - // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // default_color = "#a08444" - // [/CELADON-REMOVE] + default_color = "#a08444" chance_to_affect = 15 spread_chance = 50 chain_rate = 4 interference_power = 15 empty_space_mapgen = /datum/map_generator/planet_generator/asteroid - // [CELADON-EDIT] - CELADON_FIXES - // var/safe_speed = 3 - // var/list/meteor_types = list( - // /obj/effect/meteor/dust=3, - // /obj/effect/meteor/medium=8, - // /obj/effect/meteor/big=1, - // /obj/effect/meteor/irradiated=3 - // ) - // var/primary_ores = list( - // /obj/item/stack/ore/plasma, - // /obj/item/stack/ore/iron, - // /obj/item/stack/ore/malachite, - // ) // ORIGINAL - safe_speed = 3 - meteor_types = list( + +/* [CELADON-EDIT] - CELADON_FIXES + var/safe_speed = 3 + var/list/meteor_types = list( /obj/effect/meteor/dust=3, /obj/effect/meteor/medium=8, /obj/effect/meteor/big=1, /obj/effect/meteor/irradiated=3 ) - primary_ores = list(\ + var/primary_ores = list(\ /obj/item/stack/ore/plasma, /obj/item/stack/ore/iron, ) - // [/CELADON-EDIT] +[/CELADON-EDIT] */ /datum/overmap/event/meteor/alter_token_appearance() icon_suffix = "[rand(1, 4)]" @@ -180,13 +167,8 @@ /datum/overmap/event/emp name = "electromagnetic storm (moderate)" desc = "A heavily ionized area of space, prone to causing electromagnetic pulses in ships" - // [CELADON-EDIT] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // base_icon_state = "emp_medium_" // ORIGINAL - base_icon_state = "emp_moderate_" - // [/CELADON-EDIT] - // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // default_color = "#4066ff" - // [/CELADON-REMOVE] + base_icon_state = "emp_medium_" + default_color = "#4066ff" spread_chance = 20 chain_rate = 2 chance_to_affect = 30 @@ -252,9 +234,7 @@ name = "solar flare (moderate)" desc = "A area with very high level of the local ejected mass from the sun, causing fires in ships" base_icon_state = "flare_medium_" - // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // default_color = "#f65f00" - // [/CELADON-REMOVE] + default_color = "#f65f00" spread_chance = 20 chain_rate = 2 chance_to_affect = 20 @@ -320,20 +300,14 @@ name = "electrical storm (moderate)" desc = "A buildup of static electrity, an unfortunately common sight on the frontier. Disturbing it tends to lead to intense electrical discharges" base_icon_state = "electrical_medium_" - // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // default_color = "#e8e85c" - // [/CELADON-REMOVE] + default_color = "#e8e85c" chance_to_affect = 15 spread_chance = 30 chain_rate = 3 interference_power = 15 -// [CELADON-EDIT] - DANGER_STORM - var/zap_flag = ZAP_MINOR_STORM_FLAGS + var/zap_flag = ZAP_STORM_FLAGS var/max_damage = 3000 var/min_damage = 1000 - var/max_zap_strike = 8 - var/min_zap_strike = 4 -// [/CELADON-EDIT] /datum/overmap/event/electric/alter_token_appearance() icon_suffix = "[rand(1, 4)]" @@ -342,28 +316,21 @@ token.color = current_overmap.hazard_primary_color current_overmap.post_edit_token_state(src) -// [CELADON-EDIT]- DANGER_STORM /datum/overmap/event/electric/affect_ship(datum/overmap/ship/controlled/S) if(!(locate(S) in get_nearby_overmap_objects())) return var/datum/virtual_level/ship_vlevel = S.shuttle_port.get_virtual_level() var/turf/source = ship_vlevel.get_side_turf(pick(GLOB.cardinals)) + tesla_zap(source, 32, rand(min_damage, max_damage), zap_flag) - var/zap_strike = rand(min_zap_strike, max_zap_strike) - for(var/i = 1 to zap_strike) - if(!(locate(S) in get_nearby_overmap_objects())) - return - - tesla_zap(source, 32, rand(min_damage, max_damage) * 100, zap_flag) - - for(var/mob/poor_crew as anything in GLOB.player_list) - if(S.shuttle_port.is_in_shuttle_bounds(poor_crew)) - poor_crew.playsound_local(poor_crew, THUNDER_SOUND, rand(min_damage, max_damage)) - - if(i < zap_strike) - sleep(1 SECONDS) -// [/CELADON-EDIT] + for(var/mob/poor_crew as anything in GLOB.player_list) + if(S.shuttle_port.is_in_shuttle_bounds(poor_crew)) + poor_crew.playsound_local(poor_crew, THUNDER_SOUND, rand(min_damage, max_damage)) + var/obj/machinery/power/cloak/cloaking_system = S.ship_modules[SHIPMODULE_CLOAKING] + if(cloaking_system?.cloak_active) + cloaking_system.set_cloak(FALSE) + cloaking_system.visible_message("[src] is overloaded by the electrical storm and shuts off!") /datum/overmap/event/electric/modify_emptyspace_mapgen(datum/overmap/dynamic/our_planet) our_planet.weather_controller_type = /datum/weather_controller/shrouded @@ -377,8 +344,6 @@ chain_rate = 2 max_damage = 1000 min_damage = 500 - max_zap_strike = 4 // [CELADON-EDIT] - DANGER_STORM - min_zap_strike = 2 // [CELADON-EDIT] - DANGER_STORM /datum/overmap/event/electric/major name = "electrical storm (major)" @@ -388,25 +353,13 @@ chain_rate = 6 max_damage = 5000 min_damage = 3000 -// [CELADON-EDIT] - DANGER_STORM - zap_flag = ZAP_MAJOR_STORM_FLAGS - max_zap_strike = 12 - min_zap_strike = 6 -// [/CELADON-EDIT] + zap_flag = ZAP_DEFAULT_FLAGS /datum/overmap/event/nebula name = "nebula" desc = "Beware of modular code." - // [CELADON-EDIT] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // token_icon_state = "nebula" - // base_icon_state = "nebula" // CELADON-EDIT - ORIGINAL - token_icon_state = "nebula_1" - base_icon_state = "nebula_1" - // [/CELADON-EDIT] - // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // default_color = "#c053f3" - // [/CELADON-REMOVE] - + base_icon_state = "nebula" + default_color = "#c053f3" chain_rate = 8 spread_chance = 75 chance_to_affect = 85 @@ -421,17 +374,12 @@ if(current_overmap.override_object_colors) token.color = current_overmap.hazard_secondary_color token.opacity = TRUE -// // [CELADON-EDIT] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца -// // token.color = "#c053f3" -// // token.light_color = "#c053f3" // CELADON-EDIT - ORIGINAL - token.icon_state = "nebula_[rand(1, 4)]" -// // [/CELADON-EDIT] -// token.update_appearance() + token.icon_state = "nebula_[rand(1, 4)]" // [CELADON-EDIT] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца current_overmap.post_edit_token_state(src) /datum/overmap/event/nebula/process() . = ..() - var/list/nearby_objects = get_nearby_overmap_objects() + var/list/nearby_objects = get_nearby_overmap_objects(include_docked = TRUE) var/datum/virtual_level/ship_vlevel for(var/datum/overmap/ship/controlled/ship as anything in affected_ships) @@ -439,8 +387,7 @@ ship_vlevel = ship.shuttle_port.get_virtual_level() affected_ships -= ship - ship.hidden = FALSE - ship.alter_token_appearance() + REMOVE_TRAIT(ship, TRAIT_CLOAKED, REF(src)) for(var/obj/machinery/light/light_to_mess in GLOB.machines) if(light_to_mess.virtual_z() != ship_vlevel.id) @@ -459,8 +406,7 @@ if(affected_ships.len == 0) START_PROCESSING(SSfastprocess, src) affected_ships += ship - ship.hidden = TRUE - ship.alter_token_appearance() + ADD_TRAIT(ship, TRAIT_CLOAKED, REF(src)) for(var/obj/machinery/light/light_to_mess in GLOB.machines) @@ -511,9 +457,7 @@ name = "carp migration (moderate)" desc = "A migratory school of space carp. They travel at high speeds, and flying through them may cause them to impact your ship" base_icon_state = "carp_medium_" - // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // default_color = "#7b1ca8" - // [/CELADON-REMOVE] + default_color = "#7b1ca8" chance_to_affect = 15 spread_chance = 50 chain_rate = 4 @@ -560,9 +504,7 @@ name = "dust cloud" desc = "A cloud of spaceborne dust. Relatively harmless, unless you're travelling at relative speeds" base_icon_state = "dust" - // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // default_color = "#506469" - // [/CELADON-REMOVE] + default_color = "#506469" chance_to_affect = 90 spread_chance = 50 chain_rate = 4 @@ -584,9 +526,7 @@ name = "anomaly field" desc = "A highly anomalous area of space, disturbing it leads to the manifestation of odd spatial phenomena" base_icon_state = "anomaly" - // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // default_color = "#d6c633" - // [/CELADON-REMOVE] + default_color = "#d6c633" chance_to_affect = 10 spread_chance = 35 chain_rate = 6 @@ -619,11 +559,6 @@ GLOBAL_LIST_INIT(overmap_event_pick_list, list( /datum/overmap/event/electric/minor = 45, /datum/overmap/event/electric = 40, /datum/overmap/event/electric/major = 35, - // [CELADON-ADD] - CELADON_OVERMAP - Включаем на овермапе ионные шторма - /datum/overmap/event/emp/minor = 25, - /datum/overmap/event/emp = 20, - /datum/overmap/event/emp/major = 25, - // [/CELADON-ADD] /datum/overmap/event/meteor/minor = 45, /datum/overmap/event/meteor = 40, /datum/overmap/event/meteor/major = 35, @@ -648,9 +583,7 @@ GLOBAL_LIST_INIT(overmap_event_pick_list, list( name = "radiation storm (moderate)" desc = "An area with a high concentration of gamma rays. Better not take long here." base_icon_state = "gamma_medium_" - // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // default_color = "#d651c2" - // [/CELADON-REMOVE] + default_color = "#d651c2" spread_chance = 20 chain_rate = 2 chance_to_affect = 60 @@ -672,6 +605,7 @@ GLOBAL_LIST_INIT(overmap_event_pick_list, list( affected_mob.rad_act(strength) to_chat(affected_mob, span_notice("You taste metal.")) + /datum/overmap/event/rad/modify_emptyspace_mapgen(datum/overmap/dynamic/our_planet) our_planet.weather_controller_type = /datum/weather_controller/fallout return ..() @@ -699,9 +633,7 @@ GLOBAL_LIST_INIT(overmap_event_pick_list, list( name = "debris field (moderate)" desc = "An area full of scrap metal, going fast through here could prove dangerous" base_icon_state = "debris_medium_" - // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // default_color = "#b8ccbf" - // [/CELADON-REMOVE] + default_color = "#b8ccbf" chance_to_affect = 15 spread_chance = 50 chain_rate = 4 @@ -709,22 +641,13 @@ GLOBAL_LIST_INIT(overmap_event_pick_list, list( var/blocks_sight = TRUE empty_space_mapgen = /datum/map_generator/planet_generator/asteroid - safe_speed = 3 // [CELADON-ADD] - CELADON_BALANCE_OVERMAP_EVENTS /datum/overmap/event/meteor/debris/alter_token_appearance() . = ..() if(blocks_sight) token.opacity = TRUE current_overmap.post_edit_token_state(src) - // [CELADON-ADD] - CELADON_BALANCE_OVERMAP_EVENTS - switch(safe_speed) - if (1) - safe_speed = rand(1, 3) - if (3) - safe_speed = rand(3, 5) - if (5) - safe_speed = rand(5, 7) - // [CELADON-ADD] + /datum/overmap/event/meteor/debris/minor name = "debris field (minor)" @@ -757,4 +680,3 @@ GLOBAL_LIST_INIT(overmap_event_pick_list, list( /obj/effect/meteor/big=25, /obj/effect/meteor/flaming=10, ) - safe_speed = 1 // [CELADON-ADD] - CELADON_BALANCE_OVERMAP_EVENTS diff --git a/code/modules/overmap/objects/outpost/outpost.dm b/code/modules/overmap/objects/outpost/outpost.dm index 9dfde77321d2..c20aaf2edace 100644 --- a/code/modules/overmap/objects/outpost/outpost.dm +++ b/code/modules/overmap/objects/outpost/outpost.dm @@ -33,13 +33,11 @@ var/list/main_level_ztraits = list( ZTRAIT_STATION = TRUE, ZTRAIT_SUN_TYPE = AZIMUTH, - ZTRAIT_GRAVITY = STANDARD_GRAVITY, - ZTRAIT_SCAN_DISRUPT = TRUE // [CELADON-EDIT] - CELADON_SURVEY_HANDHELD + ZTRAIT_GRAVITY = STANDARD_GRAVITY ) var/list/hangar_ztraits = list( ZTRAIT_SUN_TYPE = STATIC_EXPOSED, - ZTRAIT_GRAVITY = STANDARD_GRAVITY, - ZTRAIT_SCAN_DISRUPT = TRUE // [CELADON-EDIT] - CELADON_SURVEY_HANDHELD + ZTRAIT_GRAVITY = STANDARD_GRAVITY ) /// The mapzone used by the outpost level and hangars. Using a single mapzone means networked radio messages. @@ -252,7 +250,6 @@ /datum/overmap/outpost/pre_docked(datum/overmap/ship/controlled/dock_requester, override_dock) var/obj/docking_port/stationary/h_dock var/datum/map_template/outpost/h_template = get_hangar_template(dock_requester.shuttle_port) - // [CELADON-ADD] - CELADON_COMPONENT - Pirates Update if(dock_requester.source_template.category == "Pirates") //Проверка шипа на пиратскую фракцию return new /datum/docking_ticket(_docking_error = "Docking request denied: Unauthorized ship") //Запрет пиратам на стыковку с аванпостом @@ -274,6 +271,7 @@ "for ship [dock_requester] (template [dock_requester.source_template])!" ) return FALSE + return new /datum/docking_ticket(h_dock, src, dock_requester) /datum/overmap/outpost/get_dockable_locations(datum/overmap/requesting_interactor) diff --git a/code/modules/overmap/objects/outpost/outpost_types.dm b/code/modules/overmap/objects/outpost/outpost_types.dm index f3db9a14cf2a..a993ca354ee1 100644 --- a/code/modules/overmap/objects/outpost/outpost_types.dm +++ b/code/modules/overmap/objects/outpost/outpost_types.dm @@ -206,20 +206,12 @@ /* /datum/overmap/outpost subtypes */ -// [CELADON-REMOVE] - CELADON_CONFIGS_MAPS - Отправляется в щитспавн по приказу Head of Maps -/* /datum/overmap/outpost/indie_space token_icon_state = "station_cylinder" main_template = /datum/map_template/outpost/indie_space elevator_template = /datum/map_template/outpost/elevator_indie faction = FACTION_INDEPENDENT // Uses "default" hangars (indie_space). -*/ -// [/CELADON-REMOVE] -/* -/datum/overmap/outpost/nanotrasen_asteroid - token_icon_state = "station_asteroid_0" - main_template = /datum/map_template/outpost/nt_asteroid /datum/overmap/outpost/nanotrasen_ice token_icon_state = "station_asteroid" @@ -304,43 +296,4 @@ /datum/overmap/outpost/no_main_level // For example and adminspawn. main_template = null elevator_template = /datum/map_template/outpost/elevator_test - // Using a second list of hangar templates. - hangar_templates = list( - /datum/map_template/outpost/hangar/nt_asteroid_20x20, - /datum/map_template/outpost/hangar/nt_asteroid_40x20, - /datum/map_template/outpost/hangar/nt_asteroid_40x40, - /datum/map_template/outpost/hangar/nt_asteroid_56x20, - /datum/map_template/outpost/hangar/nt_asteroid_56x40 - ) -*/ -// [CELADON-REMOVE] - CELADON_CONFIGS_MAPS - Перенесено в модуль в maps -// /datum/overmap/outpost/nanotrasen_ice -// token_icon_state = "station_asteroid_0" -// main_template = /datum/map_template/outpost/nanotrasen_ice -// elevator_template = /datum/map_template/outpost/elevator_ice -// hangar_templates = list( -// /datum/map_template/outpost/hangar/nt_ice_20x20, -// /datum/map_template/outpost/hangar/nt_ice_40x20, -// /datum/map_template/outpost/hangar/nt_ice_40x40, -// /datum/map_template/outpost/hangar/nt_ice_56x20, -// /datum/map_template/outpost/hangar/nt_ice_56x40 -// ) - // faction = /datum/faction/nt - -// /datum/overmap/outpost/ngr_rock -// token_icon_state = "station_asteroid_0" -// main_template = /datum/map_template/outpost/ngr_rock -// elevator_template = /datum/map_template/outpost/elevator_rock -// hangar_templates = list( -// /datum/map_template/outpost/hangar/ngr_rock_20x20, -// /datum/map_template/outpost/hangar/ngr_rock_40x20, -// /datum/map_template/outpost/hangar/ngr_rock_40x40, -// /datum/map_template/outpost/hangar/ngr_rock_56x20, -// /datum/map_template/outpost/hangar/ngr_rock_56x40 -// ) - -// /datum/overmap/outpost/no_main_level // For example and adminspawn. -// main_template = null -// elevator_template = /datum/map_template/outpost/elevator_test -// // Uses "test" hangars. -// [/CELADON-REMOVE] + // Uses "test" hangars. diff --git a/code/modules/overmap/objects/star.dm b/code/modules/overmap/objects/star.dm index 3e0e85534f70..1dcfdaf40c23 100644 --- a/code/modules/overmap/objects/star.dm +++ b/code/modules/overmap/objects/star.dm @@ -96,14 +96,14 @@ /datum/overmap/star/proc/gen_star_name() return "[pick(GLOB.star_names)] [pick(GLOB.greek_letters)]" -// [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца -// /datum/overmap/star/alter_token_appearance() -// . = ..() -// if(!custom_color) -// token.add_atom_colour(current_overmap.hazard_primary_color, FIXED_COLOUR_PRIORITY) -// return -// token.add_atom_colour(get_rand_spectral_color(spectral_type, color_vary), FIXED_COLOUR_PRIORITY) -// [/CELADON-REMOVE] +/* [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца +/datum/overmap/star/alter_token_appearance() + . = ..() + if(!custom_color) + token.add_atom_colour(current_overmap.hazard_primary_color, FIXED_COLOUR_PRIORITY) + return + token.add_atom_colour(get_rand_spectral_color(spectral_type, color_vary), FIXED_COLOUR_PRIORITY) +[/CELADON-REMOVE] */ /datum/overmap/star/proc/get_rand_spectral_color(base_spec, vary_amt = 0) var/adj_spec = base_spec + LERP(-vary_amt, vary_amt, rand()) @@ -127,11 +127,8 @@ */ /datum/overmap/star/dwarf + token_icon_state = "star_new" desc = "A red dwarf. Smallest and most numerous of the main-sequence stars, some red dwarves boast trillion-year lifespans; none have yet died of old age." - // [CELADON-EDIT] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // token_icon_state = "star_new" // CELADON-EDIT - ORIGINAL - token_icon_state = "dwarf" - // [/CELADON-EDIT] interference_power = 10 spectral_type = STAR_M color_vary = 0.5 @@ -143,19 +140,13 @@ /datum/overmap/star/dwarf/orange desc = "One of the main sequence stars, this orange dwarf star emits a steady glow, as it has for billions of years." - // [CELADON-ADD] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - token_icon_state = "dwarf-orange" - // [/CELADON-ADD] spectral_type = STAR_K color_vary = 0.25 /datum/overmap/star/dwarf/brown + token_icon_state = "giant" desc = "Clocking in at only several dozen septillion tons, this body is much lighter than true stars. " +\ "Known as a \"brown dwarf\", it is unable to sustain hydrogen fusion, and is warmed by deuterium fusion instead." - // [CELADON-EDIT] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // token_icon_state = "giant" // CELADON-EDIT - ORIGINAL - token_icon_state = "dwarf-brown" - // [/CELADON-EDIT] spectral_type = STAR_T color_vary = 1 events_to_spawn = list(\ @@ -172,9 +163,6 @@ /datum/overmap/star/dwarf/white desc = "The incredibly dense corpse of a former star. Still white-hot, it slowly radiates its remaining heat into space." - // [CELADON-ADD] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - token_icon_state = "dwarf-white" - // [/CELADON-ADD] spectral_type = STAR_B color_vary = 1 @@ -200,20 +188,14 @@ */ /datum/overmap/star/medium + token_icon_state = "star2" desc = "A yellow main-sequence star. Deep beneath the surface, its core churns violently in fusion, so dense as to be utterly impenetrable to light or sound." // or Say It Ain't So - // [CELADON-EDIT] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // token_icon_state = "star2" // CELADON-EDIT - ORIGINAL - token_icon_state = "medium" - // [/CELADON-EDIT] spectral_type = STAR_G color_vary = 0.25 /datum/overmap/star/medium/alter_token_appearance() . = ..() - // [CELADON-EDIT] - CELADON_OVERMAP - // token.icon = 'icons/misc/overmap_large.dmi' // CELADON-EDIT - ORIGINAL - token.icon = 'mod_celadon/_storage_icons/icons/assets/overmap/overmap_large.dmi' - // [/CELADON-EDIT] + token.icon = 'mod_celadon/_storage_icons/icons/assets/overmap/overmap_large.dmi' // [CELADON-EDIT] - CELADON_OVERMAP token.bound_height = 64 token.bound_width = 64 token.pixel_x = -16 @@ -222,30 +204,18 @@ /datum/overmap/star/medium/blue desc = "A young, blue, massive main-sequence star. The reactions at its core are so intense as to whip the entire star into convection waves." - // [CELADON-ADD] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - token_icon_state = "medium-blue" - // [/CELADON-ADD] spectral_type = STAR_B /datum/overmap/star/medium/bluewhite desc = "This main-sequence star is young and large; it burns hot and fast. Though not as blindingly bright as a giant, its glare is still harsh." - // [CELADON-ADD] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - token_icon_state = "medium-bluewhite" - // [/CELADON-ADD] spectral_type = STAR_A /datum/overmap/star/medium/white desc = "A bright white main-sequence star, with a surface temperature of 6,000 to 7,000 Kelvin. The core is much, much hotter." - // [CELADON-ADD] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - token_icon_state = "medium-white" - // [/CELADON-ADD] spectral_type = STAR_F /datum/overmap/star/medium/orange desc = "One of the main sequence stars, this orange dwarf star emits a steady glow, as it has for billions of years." - // [CELADON-ADD] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - token_icon_state = "medium-orange" - // [/CELADON-ADD] spectral_type = STAR_K /* @@ -253,20 +223,14 @@ */ /datum/overmap/star/giant + token_icon_state = "star3" desc = "A blue giant star. Though massive and incredibly hot, it can only sustain its intense luminosity for so long." - // [CELADON-EDIT] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // token_icon_state = "star3" // CELADON-EDIT - ORIGINAL - token_icon_state = "giant" - // [/CELADON-EDIT] spectral_type = STAR_B color_vary = 1 /datum/overmap/star/giant/alter_token_appearance() . = ..() - // [CELADON-EDIT] - CELADON_OVERMAP - // token.icon = 'icons/misc/overmap_larger.dmi' // CELADON-EDIT - ORIGINAL - token.icon = 'mod_celadon/_storage_icons/icons/assets/overmap/overmap_larger.dmi' - // [/CELADON-EDIT] + token.icon = 'mod_celadon/_storage_icons/icons/assets/overmap/overmap_larger.dmi' // [CELADON-EDIT] - CELADON_OVERMAP token.bound_height = 96 token.bound_width = 96 token.pixel_x = -32 @@ -275,9 +239,6 @@ /datum/overmap/star/giant/yellow desc = "Like many other yellow giants, this dying star \"pulsates\" as its brightness fluctuates rhythmically." - // [CELADON-ADD] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - token_icon_state = "giant-yellow" - // [/CELADON-ADD] spectral_type = STAR_G color_vary = 0.25 @@ -291,9 +252,6 @@ /datum/overmap/star/giant/red desc = "Huge and imposing, this red giant has exhausted the hydrogen within its core, and has expanded and brightened as a result. It has begun to die." - // [CELADON-ADD] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - token_icon_state = "giant-red" - // [/CELADON-ADD] spectral_type = STAR_M /* @@ -332,21 +290,20 @@ token.bound_width = 96 token.pixel_x = -32 token.pixel_y = -32 + // [CELADON-EDIT] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // star_1 = mutable_appearance(icon_state = "binary1") - // star_2 = mutable_appearance(icon_state = "binary2") // CELADON-EDIT - ORIGINAL star_1 = mutable_appearance(icon_state = "binary[rand(1, 3)]") star_2 = mutable_appearance(icon_state = "binary[rand(4, 6)]") // [/CELADON-EDIT] - // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца - // star_1.color = current_overmap.hazard_primary_color - // star_2.color = current_overmap.hazard_primary_color + /* [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца + star_1.color = current_overmap.hazard_primary_color + star_2.color = current_overmap.hazard_primary_color - // if(custom_color) - // star_1.color = get_rand_spectral_color(pick(spectral_types), color_vary) - // star_2.color = get_rand_spectral_color(pick(spectral_types), color_vary) - // [/CELADON-REMOVE] + if(custom_color) + star_1.color = get_rand_spectral_color(pick(spectral_types), color_vary) + star_2.color = get_rand_spectral_color(pick(spectral_types), color_vary) + [/CELADON-REMOVE] */ token.add_overlay(star_1) token.add_overlay(star_2) @@ -361,10 +318,7 @@ name = "black hole" desc = "An incredibly dense astral body, so massive even light cannot escape its gravitational pull past the event horizon." interference_power = 60 - // [CELADON-EDIT] - CELADON_OVERMAP - // token_icon_state = "accretiondisk" // CELADON-EDIT - ORIGINAL - token_icon_state = "blackhole" - // [/CELADON-EDIT] + token_icon_state = "accretiondisk" spectral_type = STAR_K color_vary = 1 @@ -388,10 +342,7 @@ /datum/overmap/star/singularity/alter_token_appearance() . = ..() - // [CELADON-EDIT] - CELADON_OVERMAP - // token.icon = 'icons/misc/overmap_larger.dmi' // CELADON-EDIT - ORIGINAL - token.icon = 'mod_celadon/_storage_icons/icons/assets/overmap/overmap_larger.dmi' - // [/CELADON-EDIT] + token.icon = 'mod_celadon/_storage_icons/icons/assets/overmap/overmap_larger.dmi' // [CELADON-EDIT] - CELADON_OVERMAP token.bound_height = 96 token.bound_width = 96 token.pixel_x = -32 @@ -429,10 +380,7 @@ /datum/overmap/star/pulsar/alter_token_appearance() . = ..() - // [CELADON-EDIT] - CELADON_OVERMAP - // token.icon = 'icons/misc/overmap_larger.dmi' // CELADON-EDIT - ORIGINAL - token.icon = 'mod_celadon/_storage_icons/icons/assets/overmap/overmap_larger.dmi' - // [/CELADON-EDIT] + token.icon = 'mod_celadon/_storage_icons/icons/assets/overmap/overmap_larger.dmi' // [CELADON-EDIT] - CELADON_OVERMAP token.bound_height = 96 token.bound_width = 96 token.pixel_x = -32 diff --git a/code/modules/overmap/overmap_token.dm b/code/modules/overmap/overmap_token.dm index a1c2d20eb922..c5bc491c3023 100644 --- a/code/modules/overmap/overmap_token.dm +++ b/code/modules/overmap/overmap_token.dm @@ -19,15 +19,6 @@ /// Countdown we use in case it's needed var/obj/effect/countdown/countdown - // [CELADON-ADD] - CELADON_OVERMAP_ICON - Это вагабонд насрал - var/obj/token_visuals/move_vec - var/obj/token_visuals/ship_image - -/obj/token_visuals - glide_size = 32 - mouse_opacity = 0 - // [/CELADON-ADD] - /obj/overmap/rendered render_map = TRUE @@ -81,7 +72,7 @@ if(move_vec) QDEL_NULL(move_vec) // [/CELADON-ADD] - QDEL_NULL(countdown) // Что это КОД JOPA + QDEL_NULL(countdown) return ..() /obj/overmap/vv_get_dropdown() diff --git a/code/modules/overmap/overmap_turf.dm b/code/modules/overmap/overmap_turf.dm index 3fb2351b8641..dd54b99d43c6 100644 --- a/code/modules/overmap/overmap_turf.dm +++ b/code/modules/overmap/overmap_turf.dm @@ -5,35 +5,12 @@ icon = 'icons/turf/overmap.dmi' icon_state = "overmap" initial_gas_mix = AIRLESS_ATMOS - // [CELADON-ADD] - CELADON_OVERMAP_ICON - Это вагабонд насрал - color = COLOR_GRAY - // [/CELADON-ADD] //this is completely unnecessary but it looks nice /turf/open/overmap/Initialize(mapload, inherited_virtual_z) . = ..() if(!virtual_z) return - // [CELADON-ADD] - CELADON_OVERMAP_ICON - Это вагабонд насрал - if(prob(25)) - var/image/I = image('icons/turf/overmap.dmi') - I.icon_state = "[rand(1, 16)]" - I.pixel_x = rand(-16, 16) - I.pixel_y = rand(-16, 16) - overlays += I - if(prob(25)) - var/image/I = image('icons/turf/overmap.dmi') - I.icon_state = "[rand(1, 16)]" - I.pixel_x = rand(-16, 16) - I.pixel_y = rand(-16, 16) - overlays += I - if(prob(25)) - var/image/I = image('icons/turf/overmap.dmi') - I.icon_state = "[rand(1, 16)]" - I.pixel_x = rand(-16, 16) - I.pixel_y = rand(-16, 16) - overlays += I - // [/CELADON-ADD] var/datum/virtual_level/vlevel = get_virtual_level() if(!vlevel.current_systen) return diff --git a/code/modules/overmap/planets/planet_types.dm b/code/modules/overmap/planets/planet_types.dm index 66c400b10673..116442f01d3d 100644 --- a/code/modules/overmap/planets/planet_types.dm +++ b/code/modules/overmap/planets/planet_types.dm @@ -31,22 +31,14 @@ var/selfloop = FALSE ///How much of a radio message we mess up on nearby or on landed/orbitting ships var/interference_power = 0 - // [CELADON-ADD] - CELADON_OVERMAP_ICON - Это вагабонд насрал - var/icon = 'mod_celadon/_storage_icons/icons/assets/overmap/overmap.dmi' - var/pixel_w = 0 - var/pixel_z = 0 - // [/CELADON-ADD] /datum/planet_type/lava name = "lava planetoid" desc = "A planet rife with seismic and volcanic activity. High temperatures and dangerous xenofauna render it dangerous for the unprepared." planet = DYNAMIC_WORLD_LAVA - // [CELADON-EDIT] - CELADON_OVERMAP_ICON - Это вагабонд насрал - // color = COLOR_ORANGE - // icon_state = "lava" - icon_state = "volcano" - // [/CELADON-EDIT] + icon_state = "lava" + color = COLOR_ORANGE mapgen = /datum/map_generator/planet_generator/lava default_baseturf = /turf/open/floor/plating/asteroid/basalt/lava gravity = STANDARD_GRAVITY @@ -64,11 +56,8 @@ name = "frozen planetoid" desc = "A frozen planet covered in thick snow, thicker ice, and dangerous predators." planet = DYNAMIC_WORLD_ICE - // [CELADON-EDIT] - CELADON_OVERMAP_ICON - Это вагабонд насрал - // color = COLOR_BLUE_LIGHT - // icon_state = "globe_2" icon_state = "ice" - // [/CELADON-EDIT] + color = COLOR_BLUE_LIGHT mapgen = /datum/map_generator/planet_generator/snow default_baseturf = /turf/open/floor/plating/asteroid/snow/icemoon gravity = STANDARD_GRAVITY @@ -84,11 +73,8 @@ name = "jungle planetoid" desc = "A densely forested world, filled with vines, animals, and underbrush. Surprisingly habitable with a machete." planet = DYNAMIC_WORLD_JUNGLE - // [CELADON-EDIT] - CELADON_OVERMAP_ICON - Это вагабонд насрал - // color = COLOR_LIME - // icon_state = "globe_2" icon_state = "jungle" - // [/CELADON-EDIT] + color = COLOR_LIME mapgen = /datum/map_generator/planet_generator/jungle default_baseturf = /turf/open/floor/plating/asteroid/dirt/jungle gravity = STANDARD_GRAVITY @@ -103,11 +89,8 @@ name = "rock planetoid" desc = "A rocky red world in the midst of terraforming. While some plants have taken hold, it is widely hostile to life." planet = DYNAMIC_WORLD_ROCKPLANET - // [CELADON-EDIT] - CELADON_OVERMAP_ICON - Это вагабонд насрал - // color = "#bd1313" - // icon_state = "rock" icon_state = "rock" - // [/CELADON-EDIT] + color = "#bd1313" mapgen = /datum/map_generator/planet_generator/rock default_baseturf = /turf/open/floor/plating/asteroid gravity = STANDARD_GRAVITY @@ -121,11 +104,8 @@ name = "salty sand planetoid" desc = "A formerly vibrant world, turned to sand by the ravages of the ICW. The survivors of it are long mad by now." planet = DYNAMIC_WORLD_SAND - // [CELADON-EDIT] - CELADON_OVERMAP_ICON - Это вагабонд насрал - // color = COLOR_GRAY - // icon_state = "whitesands" icon_state = "whitesands" - // [/CELADON-EDIT] + color = COLOR_GRAY mapgen = /datum/map_generator/planet_generator/sand default_baseturf = /turf/open/floor/plating/asteroid/whitesands gravity = STANDARD_GRAVITY @@ -141,11 +121,8 @@ name = "ocean planetoid" desc = "The platonic ideal of vacation spots. Warm, comfortable temperatures, and a breathable atmosphere." planet = DYNAMIC_WORLD_BEACHPLANET - // [CELADON-EDIT] - CELADON_OVERMAP_ICON - Это вагабонд насрал - // color = "#c6b597" - // icon_state = "ocean" icon_state = "ocean" - // [/CELADON-EDIT] + color = "#c6b597" mapgen = /datum/map_generator/planet_generator/beach default_baseturf = /turf/open/floor/plating/asteroid/sand/lit gravity = STANDARD_GRAVITY @@ -231,11 +208,8 @@ name = "waste disposal planetoid" desc = "A highly oxygenated world, coated in garbage, radiation, and rust." planet = DYNAMIC_WORLD_WASTEPLANET - // [CELADON-EDIT] - CELADON_OVERMAP_ICON - Это вагабонд насрал - // icon_state = "globe2" - // color = "#a9883e" icon_state = "waste" - // [/CELADON-EDIT] + color = "#a9883e" mapgen = /datum/map_generator/planet_generator/waste default_baseturf = /turf/open/floor/plating/asteroid/wasteplanet gravity = STANDARD_GRAVITY @@ -254,12 +228,7 @@ desc = "A floating ball of gas, with high gravity and even higher pressure." planet = DYNAMIC_WORLD_GAS_GIANT icon_state = "giant" - // [CELADON-EDIT] - CELADON_OVERMAP_ICON - Это вагабонд насрал - // color = COLOR_DARK_MODERATE_ORANGE - icon = 'mod_celadon/_storage_icons/icons/assets/overmap/overmap_large.dmi' - pixel_w = -8 - pixel_z = -8 - // [/CELADON-EDIT] + color = COLOR_DARK_MODERATE_ORANGE mapgen = /datum/map_generator/single_biome/gas_giant gravity = GAS_GIANT_GRAVITY default_baseturf = /turf/open/chasm/gas_giant @@ -269,26 +238,20 @@ preserve_level = TRUE interference_power = 10 -// [CELADON-REMOVE] - CELADON_OVERMAP_ICON - mod_celadon/maps/code/planet_types.dm -// /datum/planet_type/plasma_giant -// name = "plasma giant" -// desc = "The backbone of interstellar travel, the mighty plasma giant allows fuel collection to take place." -// planet = DYNAMIC_WORLD_PLASMA_GIANT -// // [CELADON-EDIT] - CELADON_OVERMAP_ICON - Это вагабонд насрал -// // color = COLOR_PURPLE -// // icon_state = "giant" -// icon_state = "planet-plasma" -// icon = 'mod_celadon/_storage_icons/icons/assets/overmap/overmap_large.dmi' -// pixel_w = -8 -// pixel_z = -8 -// // [/CELADON-EDIT] -// mapgen = /datum/map_generator/single_biome/plasma_giant -// gravity = GAS_GIANT_GRAVITY -// default_baseturf = /turf/open/chasm/gas_giant/plasma -// weight = 0 -// preserve_level = TRUE -// interference_power = 10 -// [/CELADON-REMOVE] +/* [CELADON-REMOVE] - CELADON_OVERMAP_ICON - mod_celadon/maps/code/planet_types.dm +/datum/planet_type/plasma_giant + name = "plasma giant" + desc = "The backbone of interstellar travel, the mighty plasma giant allows fuel collection to take place." + planet = DYNAMIC_WORLD_PLASMA_GIANT + color = COLOR_PURPLE + mapgen = /datum/map_generator/single_biome/plasma_giant + gravity = GAS_GIANT_GRAVITY + default_baseturf = /turf/open/chasm/gas_giant/plasma + weight = 0 + icon_state = "giant" + preserve_level = TRUE + interference_power = 10 +[CELADON-REMOVE] */ /datum/planet_type/water name = "aqua planetoid" diff --git a/code/modules/overmap/ships/controlled_ship_datum.dm b/code/modules/overmap/ships/controlled_ship_datum.dm index afc11e4feb09..985f8001eeb0 100644 --- a/code/modules/overmap/ships/controlled_ship_datum.dm +++ b/code/modules/overmap/ships/controlled_ship_datum.dm @@ -10,10 +10,6 @@ dock_time = 10 SECONDS interaction_options = list(INTERACTION_OVERMAP_DOCK, INTERACTION_OVERMAP_QUICKDOCK, INTERACTION_OVERMAP_HAIL, INTERACTION_OVERMAP_INTERDICTION) - // [CELADON-ADD] - OVERMAP SENSORS - var/default_sensor_range = 4 - // [/CELADON-ADD] - ///Vessel estimated thrust per full burn var/est_thrust ///Average fuel fullness percentage @@ -82,20 +78,19 @@ ///The ship's real name, without the prefix var/real_name + ///Image shown to helm console viewers while cloaked, allows the pilot to see + var/image/cloaked_image + ///Stations the ship has been blacklisted from landing at, associative station = reason var/list/blacklisted = list() ///The cooldown for events hitting this ship. Generally used by events with a big consquence and fires slower than normal, like flares COOLDOWN_DECLARE(event_cooldown) - /// [CELADON-ADD] Таймер, что даёт время на становление пиратами или пацифистами для независимых суден. - COOLDOWN_DECLARE(rename_prefix_cooldown) - /// [/CELADON-ADD] - /datum/overmap/ship/controlled/Rename(new_name, force = FALSE) var/old_name = name - var/full_name = "Error" // [CELADON-ADD] - Возможность сменить префикс корабля для PISV или RSV. + var/full_name = "Error" if(!COOLDOWN_FINISHED(src, rename_prefix_cooldown)) full_name = "[new_name]" else @@ -105,7 +100,7 @@ return FALSE message_admins("[key_name_admin(usr)] renamed vessel '[old_name]' to '[full_name]'") - log_admin("[usr.ckey] ([usr.real_name]) on [key_name(src)] has renamed vessel '[old_name]' to '[full_name]'") + log_admin("[usr.ckey] ([usr.real_name]) on [key_name(src)] has renamed vessel '[old_name]' to '[full_name]'") // CELADON EDIT SSblackbox.record_feedback("text", "ship_renames", 1, full_name) real_name = new_name @@ -139,6 +134,7 @@ source_template = creation_template unique_ship_access = source_template.unique_ship_access job_slots = source_template.job_slots?.Copy() + ship_class = source_template.ship_class stationary_icon_state = creation_template.token_icon_state alter_token_appearance() if(create_shuttle) @@ -171,7 +167,6 @@ GLOB.ship_select_tgui?.update_static_data_for_all_viewers() GLOB.crew_manifest_tgui?.update_static_data_for_all_viewers() - // [CELADON-ADD] - CELADON_COMPONENT - Добавляем оповещении о пиратах if(istype(get_faction(), /datum/faction/pirate)) var/datum/overmap/outpost/outpost = SSovermap.outposts[1] @@ -184,13 +179,6 @@ // При создании корабля даётся 10 минут на то, чтобы стать PISV или RSV. COOLDOWN_START(src, rename_prefix_cooldown, 10 MINUTES) -/datum/overmap/outpost // Это тут потому-что если верхнее перепишется, то нижнее тоже. Срать вечно 🤙 - var/obj/item/radio/intercom/wideband/radio - // [/CELADON-ADD] - -/datum/overmap/ship/controlled/proc/get_faction() - return source_template.faction - /datum/overmap/ship/controlled/Destroy() //SHOULD be called first . = ..() @@ -291,7 +279,7 @@ /** * Docks to an empty dynamic encounter. Used for intership interaction, structural modifications, and such */ -/datum/overmap/ship/controlled/proc/dock_in_empty_space() // [OVERWRITE] - FIXES_DOCKING -mod_celadon/fixes/code/dock_empty_space_fix.dm +/datum/overmap/ship/controlled/proc/dock_in_empty_space() var/datum/overmap/dynamic/empty/empty_space = locate() in current_overmap.overmap_container[x][y] if(!empty_space) empty_space = new(list("x" = x, "y" = y), current_overmap) @@ -305,21 +293,16 @@ for(var/obj/machinery/power/shuttle/engine/real_engine as anything in shuttle_port.get_engines()) if(!real_engine.enabled) continue -// [CELADON-EDIT] - CELADON FIXES -//thrust_used += real_engine.burn_engine(percentage, deltatime) // CELADON-EDIT - ORIGINAL + // [CELADON-EDIT] - CELADON FIXES var/engine_thrust = real_engine.burn_engine(percentage, seconds_per_tick) thrust_used += engine_thrust if(real_engine.engine_type == "plasma") thrust_used += real_engine.plasma_thrust(percentage, seconds_per_tick) -// [/CELADON-EDIT] - // ID: ALARM_CONFLICTS_OFFOS - // thrust_used += real_engine.burn_engine(percentage, seconds_per_tick) + // [/CELADON-EDIT] thrust_used = thrust_used / (shuttle_port.turf_count * 100) -// [CELADON-EDIT] - CELADON FIXES | FIX_DISPLAY_TRUSTER - //est_thrust = thrust_used * 100 / (percentage * seconds_per_tick) //cheeky way of rechecking the thrust, check it every time it's used // ORIGINAL - est_thrust = thrust_used / percentage * 100 //cheeky way of rechecking the thrust, check it every time it's used -// [/CELADON-EDIT] + est_thrust = thrust_used / percentage * 100 //cheeky way of rechecking the thrust, check it every time it's used // [CELADON-EDIT] - CELADON FIXES | FIX_DISPLAY_TRUSTER + return thrust_used /** @@ -331,10 +314,8 @@ real_engine.update_engine() if(real_engine.enabled) calculated_thrust += real_engine.thrust -// [CELADON-EDIT] - CELADON FIXES | FIX_DISPLAY_TRUSTER - //est_thrust = calculated_thrust / (shuttle_port.turf_count * 100) * 1 SECONDS / SSphysics.wait // ORIGINAL - est_thrust = calculated_thrust / (shuttle_port.turf_count * 100) -// [/CELADON-EDIT] + est_thrust = calculated_thrust / (shuttle_port.turf_count * 100) // [CELADON-EDIT] - CELADON FIXES | FIX_DISPLAY_TRUSTER + /** * Calculates the average fuel fullness of all engines. */ @@ -576,12 +557,6 @@ if(!source_template) return ..() // [CELADON-EDIT] - REMOVE_INFO_CLASSSHIP - Убираем отображение класса корабля при шифт клике - /* - desc = {"[span_boldnotice("IFF is reporting the following:")] - [span_bold("Affiliation: ")][source_template.faction.name] - [span_bold("Class: ")][source_template.short_name] - [span_bold("Velocity: ")][round(get_speed(), 0.1)] Gm/s"} - */ desc = {"[span_boldnotice("IFF is reporting the following:")] [span_bold("Affiliation: ")][source_template.faction.name] [span_bold("Velocity: ")][round(get_speed(), 0.1)] Gm/s"} @@ -615,6 +590,32 @@ if(our_helm) our_helm.cancel_jump() +/datum/overmap/ship/controlled/activate_cloak() + . = ..() + var/mutable_appearance/token_appearance = new(token) + cloaked_image = new(loc = token) + token_appearance.dir = token.dir + token_appearance.appearance_flags = RESET_COLOR|RESET_ALPHA + token_appearance.alpha = 64 + cloaked_image.appearance = token_appearance + for(var/obj/machinery/computer/helm/helm_console as anything in helms) + for(var/user_ref in helm_console.concurrent_users) + var/mob/user = locate(user_ref) + if(!user) + continue + user.client.images += cloaked_image + +/datum/overmap/ship/controlled/deactivate_cloak() + . = ..() + if(!cloaked_image) + return + for(var/obj/machinery/computer/helm/helm_console as anything in helms) + for(var/user_ref in helm_console.concurrent_users) + var/mob/user = locate(user_ref) + if(!user) + continue + user.client.images -= cloaked_image + QDEL_NULL(cloaked_image) /obj/item/key/ship name = "ship key" @@ -674,8 +675,3 @@ master_ship.attempt_key_usage(user, src, src) // hello I am a helm console I promise return TRUE -// [CELADON-ADD] - Well Done act -/obj/item/key/ship/microwave_act(obj/machinery/microwave/M) - well_done = TRUE -// [/CELADON-ADD] - diff --git a/code/modules/overmap/ships/ship_datum.dm b/code/modules/overmap/ships/ship_datum.dm index e707ef6f55f9..12a8d7a2797e 100644 --- a/code/modules/overmap/ships/ship_datum.dm +++ b/code/modules/overmap/ships/ship_datum.dm @@ -80,10 +80,7 @@ /datum/overmap/ship name = "overmap vessel" char_rep = ">" - // [CELADON-EDIT] - CELADON_OVERMAP_STUFF - Это вагабонд насрал - // token_icon_state = "ship" - token_icon_state = "ship_point" - // [/CELADON-EDIT] + token_icon_state = "ship" ///If TRUE stationary_icon_state and moving_icon_state are used instead of an overlay being applied to stationary_icon_state var/legacy_rendering_switch = FALSE @@ -113,49 +110,8 @@ ///ONLY USED FOR NON-SIMULATED SHIPS. The amount per burn that this ship accelerates var/acceleration_speed = 0.02 - ///Is this ship hidden? If true we hide the ships name/class on the token. - var/hidden = FALSE - var/registered_to_docked = FALSE -// [CELADON-ADD] - CELADON_OVERMAP_STUFF - Это вагабонд насрал - ///For bay overmap - var/x_pixels_moved = 0 - var/y_pixels_moved = 0 - - var/list/position_to_move = list("x" = 0, "y" = 0) - var/list/last_anim = list("x" = 0, "y" = 0) - var/list/vector_to_add = list("x" = 0, "y" = 0) - - var/list/arpa = list() - - var/bow_heading = 0 - var/rotating = 0 - var/rotation_velocity = 0 - - var/skiptickfortrail = 0 - // [CELADON-EDIT] - Убираем предупреждение валидатора; [CELADON-EDIT] - Добавлены ковычки для запуска на 516 -#if DM_VERSION >= 516 - var/list/obj/shiptrail/trails = alist(1 = null, - 2 = null, - 3 = null) -#else - var/list/obj/shiptrail/trails = list(1 = null, - 2 = null, - 3 = null) -#endif - // [/CELADON-EDIT] - -/datum/overmap/ship/proc/check_proximity() -// token.collision_alarm() - var/list/arpa_add = list() - for(var/obj/overmap/rendered/i in orange(4, token)) - calculate_cpa(src, i.parent) - arpa_add |= i.parent - return arpa_add -// [/CELADON-ADD] - -// /datum/overmap/ship/Initialize(position, ...) // КОД JOPA /datum/overmap/ship/Initialize(position, system_spawned_in, ...) . = ..() if(docked_to) @@ -412,51 +368,20 @@ change_heading(BURN_NONE) return -// [CELADON-EDIT] - CELADON_OVERMAP_STUFF - Это вагабонд насрал -// var/added_velocity = calculate_burn(burn_direction, burn_engines(burn_percentage, delta_time)) -// //Slows down the ship just enough to come to a full stop -// if(burn_direction == BURN_STOP) -// if(speed_x > 0) -// added_velocity["x"] = max(-speed_x, added_velocity["x"]) -// else -// added_velocity["x"] = min(-speed_x, added_velocity["x"]) -// if(speed_y > 0) -// added_velocity["y"] = max(-speed_y, added_velocity["y"]) -// else -// added_velocity["y"] = min(-speed_y, added_velocity["y"]) -// adjust_speed(added_velocity["x"], added_velocity["y"]) - -// НОВЫЕ ИЗМЕНЕНИЯ ОТ ОФОВ! 3 недели назад (марта 11th, 2025 12:09 ночи) ID: ALARM_CONFLICTS_OFFOS -// var/added_velocity = calculate_burn(burn_direction, burn_engines(burn_percentage, seconds_per_tick)) - - var/newx = 0 - var/newy = 0 + var/added_velocity = calculate_burn(burn_direction, burn_engines(burn_percentage, seconds_per_tick)) + + //Slows down the ship just enough to come to a full stop if(burn_direction == BURN_STOP) if(speed_x > 0) - newx = -min(speed_x, burn_engines(burn_percentage, seconds_per_tick)) + added_velocity["x"] = max(-speed_x, added_velocity["x"]) else - newx = min(-speed_x, burn_engines(burn_percentage, seconds_per_tick)) + added_velocity["x"] = min(-speed_x, added_velocity["x"]) if(speed_y > 0) - newy = -min(speed_y, burn_engines(burn_percentage, seconds_per_tick)) + added_velocity["y"] = max(-speed_y, added_velocity["y"]) else - newy = min(-speed_y, burn_engines(burn_percentage, seconds_per_tick)) - else - switch(burn_direction) - if(NORTH) - newx = burn_engines(burn_percentage, seconds_per_tick)*sin(bow_heading) - newy = burn_engines(burn_percentage, seconds_per_tick)*cos(bow_heading) - if(SOUTH) - newx = burn_engines(burn_percentage, seconds_per_tick)*sin(bow_heading+180) - newy = burn_engines(burn_percentage, seconds_per_tick)*cos(bow_heading+180) - if(WEST) - newx = burn_engines(burn_percentage, seconds_per_tick)*sin(bow_heading+270) - newy = burn_engines(burn_percentage, seconds_per_tick)*cos(bow_heading+270) - if(EAST) - newx = burn_engines(burn_percentage, seconds_per_tick)*sin(bow_heading+90) - newy = burn_engines(burn_percentage, seconds_per_tick)*cos(bow_heading+90) - - adjust_speed(newx, newy) -// [/CELADON-EDIT] + added_velocity["y"] = min(-speed_y, added_velocity["y"]) + + adjust_speed(added_velocity["x"], added_velocity["y"]) /** * Calculates the amount of acceleration to apply to the ship given the direction and velocity increase @@ -518,47 +443,59 @@ char_rep = "^" else if(direction & SOUTH) char_rep = "v" + // CELADON EDIT START if(direction) - // [CELADON-EDIT] - CELADON_OVERMAP_STUFF - Это вагабонд насрал - // token.icon_state = "ship_moving" - // M.Turn(altdirection) - // else - // token.icon_state = "ship" token.dir = NORTH - // [/CELADON-EDIT] - -// [CELADON-REMOVE] - CELADON_OVERMAP_ICON - Убираем офовские картинки шипов - // alter_token_appearance() - -// /datum/overmap/ship/alter_token_appearance() -// var/direction = get_heading() -// var/speed = get_speed() -// if(legacy_rendering_switch) -// if(direction) -// token_icon_state = moving_icon_state -// token.dir = direction -// else -// token_icon_state = stationary_icon_state -// else -// token_icon_state = stationary_icon_state -// if(direction) -// token.dir = direction -// ..() -// if(hidden) -// token.name = "???" -// token.desc = "There's no identification of what this is. It's possible to get more information with your radar by getting closer." -// token.icon_state = "unknown" -// token.color = current_overmap.primary_structure_color -// current_overmap.post_edit_token_state(src) -// if(!legacy_rendering_switch) -// token.cut_overlays() -// if(direction) -// token.add_overlay("dir_moving") -// else if(!hidden) -// token.add_overlay("dir_idle") -// if(speed) -// token.add_overlay("speed_[clamp(round(speed,1),0,10)]") -// [/CELADON-REMOVE] + // CELADON EDIT END + +/* CELADON EDIT START +/datum/overmap/ship/alter_token_appearance() + var/direction = get_heading() + var/speed = get_speed() + if(legacy_rendering_switch) + if(direction) + token_icon_state = moving_icon_state + token.dir = direction + else + token_icon_state = stationary_icon_state + else + token_icon_state = stationary_icon_state + if(direction) + token.dir = direction + + var/cloaked = HAS_TRAIT(src, TRAIT_CLOAKED) + if(!cloaked) + ..() // no need to update while invisible + token.color = current_overmap.primary_structure_color + + current_overmap.post_edit_token_state(src) + if(!legacy_rendering_switch) + token.cut_overlays() + if(direction) + token.add_overlay("dir_moving") + else if(!cloaked) + token.add_overlay("dir_idle") + if(speed) + token.add_overlay("speed_[clamp(round(speed,1),0,10)]") +CELADON EDIT END */ + +/datum/overmap/ship/activate_cloak() + . = ..() + animate(token, 0.8 SECONDS, alpha = 0, color = (HAS_TRAIT(src, TRAIT_BLUESPACE_SHIFT) ? COLOR_BLUE : COLOR_RED)) + addtimer(CALLBACK(src, PROC_REF(after_activate_cloak)), 0.8 SECONDS) + +/datum/overmap/ship/proc/after_activate_cloak() + if(!HAS_TRAIT(src, TRAIT_CLOAKED)) + return + token.name = "???" + token.desc = "There's no identification of what this is. It's possible to get more information with your radar by getting closer." + token.icon_state = "unknown" + +/datum/overmap/ship/deactivate_cloak() + if(!token.alpha) + token.color = HAS_TRAIT(src, TRAIT_BLUESPACE_SHIFT) ? COLOR_BLUE : COLOR_RED + animate(token, 0.8 SECONDS, alpha = token::alpha, color = current_overmap.primary_structure_color) + return ..() // ensures the camera always moves when the ship moves /datum/overmap/ship/overmap_move(new_x, new_y) diff --git a/code/modules/paperwork/paper_premade.dm b/code/modules/paperwork/paper_premade.dm index 3d07c76d8a63..951ce2edf593 100644 --- a/code/modules/paperwork/paper_premade.dm +++ b/code/modules/paperwork/paper_premade.dm @@ -141,3 +141,21 @@ /obj/item/paper/crumpled/fluff/ruin/space/deepstorage/orders name = "\improper Written Log" default_raw_text = "You know the drill, people. Shoot anyone on sight approaching the station. This includes our own colors, conducts the same as usual. Give fair warning to our boys, unless shots have already been fired. Cargo's more valuable this time, and we've gotta get our shit together to get that sweet, sweet raise." + +/obj/item/paper/fluff/ruins/wasteplanet/vault + name = "\improper Vault Button" + default_raw_text = "The vault's button is bugged out, if you need to get in, head up to security and yell at em to use their remote access, just pray they ain't in the middle of a game." + +/obj/item/paper/fluff/ruins/wasteplanet/reminder + name = "\improper LAST REMINDER" + default_raw_text = "If one of you dumbasses forgets to pick up your spent ammo casings again, I will personally send you out to escort the salvage team with nothing but a knife, and if you let one of em die ill put your head on the next crate out of here, got it?" + +/obj/item/paper/crumpled/fluff/ruins/wasteplanet/doors + name = "\improper Shitty doors!" + default_raw_text = "the blastdoors on the inner engineering airlock bugged out again! whoever chose this spot for construction deserves to be shot, everything keeps falling apart! Drill won't work, whoever is reading this, grab the salvage saw from the vault and cut it open, or blow it to bits, just don't break anything or the Boss will make you hive target practice." + +/obj/item/paper/fluff/ruins/wasteplanet/derringer + name = "\improper DO NOT READ." + default_raw_text = "Keep forgetting where I put my derringer everytime I leave it somewhere, so im keeping it in the safe. REMINDER: The safe is besides the only plant that seems to survive in this dumb habitat." + + diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm index 1e795a08645a..ea7e9682521f 100644 --- a/code/modules/power/cable.dm +++ b/code/modules/power/cable.dm @@ -525,35 +525,13 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list(new/datum/stack_recipe("cable restrain pixel_x = base_pixel_x + rand(-2,2) pixel_y = base_pixel_y + rand(-2,2) update_appearance() + AddElement(/datum/element/robotic_heal, burn_heal = 15) recipes = GLOB.cable_coil_recipes - /////////////////////////////////// // General procedures /////////////////////////////////// - -//you can use wires to heal robotics -/obj/item/stack/cable_coil/attack(mob/living/carbon/human/H, mob/user) - if(!istype(H)) - return ..() - - //if(!H.is_exposed(user, TRUE, user.zone_selected)) // [CELADON-REMOVE] - NO-HARDER-REPAIR-IPC - // return TRUE // [/CELADON-REMOVE] - - var/obj/item/bodypart/affecting = H.get_bodypart(check_zone(user.zone_selected)) - if(affecting && (!IS_ORGANIC_LIMB(affecting))) - if(user == H) - user.visible_message(span_notice("[user] starts to fix some of the wires in [H]'s [parse_zone(affecting.body_zone)]."), span_notice("You start fixing some of the wires in [H == user ? "your" : "[H]'s"] [parse_zone(affecting.body_zone)].")) - if(!do_after(user, 0.5 SECONDS, H)) - return - if(item_heal_robotic(H, user, 0, 15)) - use(1) - return - else - return ..() - - /obj/item/stack/cable_coil/update_appearance() . = ..() icon_state = "[base_icon_state][amount < 3 ? amount : ""]" diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index f251f6139fbe..8116710199f5 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -406,10 +406,6 @@ blinky_light = FALSE auto_scatter = FALSE var/start_empty = FALSE //this really wasn't a var before? - // [CELADON-ADD] - RESPRITE-CELLS - Для специально заданных оверлеев-батареек (в аталасе должен быть оверлей) - var/reskin = FALSE - var/base_state - // [/CELADON-ADD] /obj/item/stock_parts/cell/gun/Initialize() . = ..() @@ -424,18 +420,7 @@ /obj/item/stock_parts/cell/gun/update_overlays() . = ..() cut_overlays() -// [CELADON-EDIT] - RESPRITE-CELLS - Ору, для этого есть свичи... -// if(charge < 0.1) -// return -// else if(charge/maxcharge >=0.995) -// . += "[initial(icon_state)]-o4" -// else if(charge/maxcharge >=0.745) -// . += "[initial(icon_state)]-o3" -// else if(charge/maxcharge >=0.495) -// . += "[initial(icon_state)]-o2" -// else if(charge/maxcharge >=0.145) -// . += "[initial(icon_state)]-o1" -// return . + // [CELADON-EDIT] - RESPRITE-CELLS - Ору, для этого есть свичи... if(reskin) // Специально заданный цвет заряда-батареек (благодоря этому меньше повторов в атласе) switch(charge/maxcharge) if(0.995 to 1) @@ -458,7 +443,6 @@ . += "[initial(icon_state)]-o2" if(0.145 to 0.495) . += "[initial(icon_state)]-o1" - return . // [/CELADON-EDIT] /obj/item/stock_parts/cell/gun/upgraded diff --git a/code/modules/power/cloaking.dm b/code/modules/power/cloaking.dm new file mode 100644 index 000000000000..5677389235e8 --- /dev/null +++ b/code/modules/power/cloaking.dm @@ -0,0 +1,247 @@ +#define WATTS_PER_TURF 200 +#define BASE_RECHARGE_RATE 80 + +/obj/machinery/power/cloak + name = "ship cloaking device" + desc = "A machine capable of hiding a ship from long-range scanners. Very high power consumption. \ + There is a warning label advising against flying through electrical storms while active." + density = TRUE + use_power = NO_POWER_USE + active_power_usage = WATTS_PER_TURF + circuit = /obj/item/circuitboard/machine/cloak + + icon = 'icons/obj/machines/bsm.dmi' + icon_state = "bsm_idle" + base_icon_state = "bsm" + + /// Whether the cloaking device is active + var/cloak_active = FALSE + /// The current limit on power draw + var/recharge_rate = 0 + /// The maximum power the cloaking device can draw from the power network + var/max_recharge_rate = 40000 + /// Current stored power + var/current_charge + /// Maximum power storage + var/max_charge + /// Multiplier for power consumption + var/power_multiplier = 1 + /// Traits granted to the ship while active + var/list/cloak_traits = list(TRAIT_CLOAKED) + /// The ship linked to this cloaking device + var/datum/overmap/ship/controlled/linked_ship + +/obj/machinery/power/cloak/Initialize(mapload, apply_default_parts) + . = ..() + recharge_rate ||= max_recharge_rate / 2 + connect_to_network() + START_PROCESSING(SSmachines, src) + +/obj/machinery/power/cloak/Destroy() + set_cloak(FALSE) + if(linked_ship) + for(var/obj/console as anything in linked_ship.helms) + console.update_static_data_for_all_viewers() + unlink_from_ship() + return ..() + +/obj/machinery/power/cloak/examine(mob/user) + . = ..() + . += "Right-Click to quickly toggle it." + if(!powernet) + . += span_notice("There is no power grid connection.") + if(!linked_ship) + . += span_warning("It is not linked to a ship! Use a multitool to link it to the helm.") + +/obj/machinery/power/cloak/ui_interact(mob/user, datum/tgui/ui) + . = ..() + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "CloakingDevice", name) + ui.open() + +/obj/machinery/power/cloak/ui_data(mob/user) + return list( + "cloak_active" = cloak_active, + "recharge_rate" = recharge_rate, + "current_charge" = current_charge, + "available_power" = avail(), + ) + +/obj/machinery/power/cloak/ui_static_data(mob/user) + return list( + "linked_ship" = !isnull(linked_ship), + "power_consumption" = active_power_usage, + "max_recharge_rate" = max_recharge_rate, + "max_charge" = max_charge, + "observer" = isobserver(user) && !isAdminGhostAI(user) + ) + +/obj/machinery/power/cloak/ui_act(action, list/params) + . = ..() + + if(!isliving(usr)) + return + + switch(action) + if("toggle_cloak") + set_cloak(!cloak_active) + return TRUE + if("set_charge_rate") + var/new_charge_rate = params["target"] + if(!isnum(new_charge_rate)) + return FALSE + recharge_rate = clamp(new_charge_rate, 0, max_recharge_rate) + return TRUE + +/obj/machinery/power/cloak/RefreshParts() + . = ..() + max_charge = 0 + current_charge = 0 + max_recharge_rate = 0 + for(var/obj/item/stock_parts/cell/cell in component_parts) + max_charge += cell.maxcharge / GLOB.CELLRATE + current_charge += cell.charge / GLOB.CELLRATE + for(var/obj/item/stock_parts/capacitor/capacitor in component_parts) + max_recharge_rate += capacitor.rating * BASE_RECHARGE_RATE / GLOB.CELLRATE + recharge_rate = clamp(recharge_rate, 0, max_recharge_rate) + update_static_data_for_all_viewers() + +/obj/machinery/power/cloak/exchange_parts(mob/user, obj/item/storage/part_replacer/replacer) + for(var/obj/item/stock_parts/cell/cell in component_parts) + cell.charge = (current_charge / max_charge) * cell.maxcharge + return ..() + +/obj/machinery/power/cloak/on_deconstruction() + for(var/obj/item/stock_parts/cell/cell in component_parts) + cell.charge = (current_charge / max_charge) * cell.maxcharge + +/obj/machinery/power/cloak/attack_hand_secondary(mob/user, list/modifiers) + set_cloak(!cloak_active) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + +/obj/machinery/power/cloak/screwdriver_act(mob/living/user, obj/item/tool, list/modifiers) + if(flags_1 & NODECONSTRUCT_1) + return FALSE + if(cloak_active) + balloon_alert(user, "turn it off!") + return TRUE + panel_open = !panel_open + tool.play_tool_sound(src, 50) + update_appearance(UPDATE_ICON_STATE) + return TRUE + +/obj/machinery/power/cloak/crowbar_act(mob/living/user, obj/item/tool, list/modifiers) + default_deconstruction_crowbar(tool) + return TRUE + +/obj/machinery/power/cloak/multitool_act(mob/living/user, obj/item/multitool/tool, list/modifiers) + if(istype(tool, /obj/item/multitool)) + tool.buffer = WEAKREF(src) + balloon_alert(user, "saved to buffer") + return TRUE + +/obj/machinery/power/cloak/connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock) + . = ..() + if(port.current_ship.ship_modules[SHIPMODULE_CLOAKING]) + return + link_to_ship(port.current_ship, port) + +/obj/machinery/power/cloak/proc/link_to_ship(datum/overmap/ship/controlled/new_ship, obj/docking_port/mobile/new_port) + new_port ||= new_ship.shuttle_port + linked_ship = new_ship + linked_ship.ship_modules[SHIPMODULE_CLOAKING] = src + active_power_usage = new_port.turf_count * power_multiplier * WATTS_PER_TURF + update_appearance(UPDATE_ICON_STATE) + update_static_data_for_all_viewers() + for(var/obj/console as anything in linked_ship.helms) + console.update_static_data_for_all_viewers() + +/obj/machinery/power/cloak/proc/unlink_from_ship() + set_cloak(FALSE) + active_power_usage = 0 + linked_ship.ship_modules[SHIPMODULE_CLOAKING] = null + linked_ship = null + update_appearance(UPDATE_ICON_STATE) + +/obj/machinery/power/cloak/update_icon_state() + . = ..() + if(panel_open) + icon_state = "[base_icon_state]_t" + else if(!linked_ship) + icon_state = "[base_icon_state]_off" + else + icon_state = "[base_icon_state]_[cloak_active ? "on" : "idle"]" + +/obj/machinery/power/cloak/proc/set_cloak(new_state, mob/user) + if(new_state == cloak_active) + return FALSE + if(!linked_ship) + if(!new_state) + cloak_active = FALSE + if(user) + balloon_alert(user, "no linked ship!") + return FALSE + if(new_state && current_charge < active_power_usage) + if(user) + balloon_alert(user, "insufficient power!") + return FALSE + cloak_active = new_state + + var/cloak_sound + if(cloak_active) + cloak_sound = 'sound/vehicles/cloak_activate.ogg' + for(var/trait in cloak_traits) + ADD_TRAIT(linked_ship, trait, SHIPMODULE_CLOAKING) + else + cloak_sound = 'sound/vehicles/cloak_deactivate.ogg' + for(var/trait in cloak_traits) + REMOVE_TRAIT(linked_ship, trait, SHIPMODULE_CLOAKING) + + var/turf/own_turf = get_turf(src) + var/source_z = "[own_turf.virtual_z]" + var/list/listeners = (LAZYACCESS(SSmobs.players_by_virtual_z, source_z) || list()) | (LAZYACCESS(SSmobs.dead_players_by_virtual_z, source_z) || list()) + for(var/mob/listener as anything in listeners) + listener.playsound_local(listener, cloak_sound, 50, FALSE, pressure_affected = FALSE) + + play_click_sound("switch") + update_appearance(UPDATE_ICON_STATE) + return TRUE + +/obj/machinery/power/cloak/process(seconds_per_tick) + if(!powernet) + connect_to_network() + + if(current_charge < max_charge && recharge_rate > 0) + var/delta_power = min(max_charge - current_charge, recharge_rate, surplus()) + current_charge += delta_power + add_load(delta_power) + if(!cloak_active) + return + + var/power_consumption = active_power_usage + if(current_charge < power_consumption) + current_charge = 0 + balloon_alert_to_viewers("out of power!") + set_cloak(FALSE) + return + current_charge -= power_consumption + +/obj/machinery/power/cloak/emp_act(severity) + . = ..() + if(. & EMP_PROTECT_SELF) + return + if(cloak_active) + visible_message("[src] ") + tesla_zap(src, 5, active_power_usage / 10, ZAP_DEFAULT_FLAGS) + set_cloak(FALSE) + +/obj/machinery/power/cloak/advanced + name = "\improper BFRD-3A cloaking device" + desc = "A bluespace-field radar deflector, capable of cloaking ships at a low enough power cost to be practical. " + power_multiplier = 0.5 + circuit = /obj/item/circuitboard/machine/advanced_cloak + cloak_traits = list(TRAIT_BLUESPACE_SHIFT, TRAIT_CLOAKED) + +#undef BASE_RECHARGE_RATE +#undef WATTS_PER_TURF diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm index 003401c86498..9a896e5d5fd1 100644 --- a/code/modules/power/singularity/collector.dm +++ b/code/modules/power/singularity/collector.dm @@ -1,13 +1,7 @@ // stored_energy += (pulse_strength-RAD_COLLECTOR_EFFICIENCY)*RAD_COLLECTOR_COEFFICIENT -// [CELADON-EDIT] - CELADON_BALANCE - Трогаем рад коллекторы -// #define RAD_COLLECTOR_EFFICIENCY 80 // radiation needs to be over this amount to get power // CELADON-EDIT - ORIGINAL -// #define RAD_COLLECTOR_COEFFICIENT 10 // CELADON-EDIT - ORIGINAL -// #define RAD_COLLECTOR_EFFICIENCY 1 // radiation needs to be over this amount to get power -// #define RAD_COLLECTOR_COEFFICIENT 400 // CELADON-EDIT - OLD_MY #define RAD_COLLECTOR_EFFICIENCY 300 // radiation needs to be over this amount to get power #define RAD_COLLECTOR_COEFFICIENT 100 -// [/CELADON-EDIT] -#define RAD_COLLECTOR_STORED_OUT 0.001 // (this*100)% of stored power outputted per tick. Doesn't actualy change output total, lower numbers just means collectors output for longer in absence of a source +#define RAD_COLLECTOR_STORED_OUT 0.001 // (this*100)% of stored power outputted per tick. Doesn't actualy change output total, lower numbers just means collectors output for longer in absence of a source // [CELADON-EDIT] - CELADON_BALANCE - Трогаем рад коллекторы #define RAD_COLLECTOR_MINING_CONVERSION_RATE 0.00001 //This is gonna need a lot of tweaking to get right. This is the number used to calculate the conversion of watts to research points per process() // [CELADON-EDIT] - CELADON_BALANCE - Трогаем рад коллекторы // #define RAD_COLLECTOR_OUTPUT min(stored_energy, (stored_energy*RAD_COLLECTOR_STORED_OUT)+1000) //Produces at least 1000 watts if it has more than that stored // CELADON-EDIT - ORIGINAL diff --git a/code/modules/projectiles/ammunition/_ammo_casing.dm b/code/modules/projectiles/ammunition/_ammo_casing.dm index bebd17f50975..db47834e43d7 100644 --- a/code/modules/projectiles/ammunition/_ammo_casing.dm +++ b/code/modules/projectiles/ammunition/_ammo_casing.dm @@ -147,9 +147,7 @@ /obj/item/ammo_casing/proc/stack_with(obj/item/ammo_casing/other_casing) var/obj/item/ammo_box/magazine/ammo_stack/ammo_stack = new stack_type(drop_location()) ammo_stack.name = "handful of [name]s" //"handful of .9mm bullet casings" -// [CELADON-ADD] - ADD_MOD_BULLET_STACK - Загружает путь если из мода, иначе дефолтный - ammo_stack.base_icon = other_casing.icon -// [/CELADON-ADD] + ammo_stack.base_icon = other_casing.icon // [CELADON-ADD] - ADD_MOD_BULLET_STACK - Загружает путь если из мода, иначе дефолтный ammo_stack.base_icon_state = other_casing.icon_state ammo_stack.caliber = caliber ammo_stack.max_ammo = stack_size @@ -192,7 +190,6 @@ if(!BB) BB = new projectile_type(src, src) - /obj/item/ammo_casing/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) bounce_away(FALSE, NONE) . = ..() diff --git a/code/modules/projectiles/ammunition/ballistic/rifle.dm b/code/modules/projectiles/ammunition/ballistic/rifle.dm index 60698ad830aa..5cce18c08986 100644 --- a/code/modules/projectiles/ammunition/ballistic/rifle.dm +++ b/code/modules/projectiles/ammunition/ballistic/rifle.dm @@ -108,7 +108,7 @@ icon_state = "rifle-brass" caliber = ".308" projectile_type = /obj/projectile/bullet/a308 - bullet_per_box = 10 + stack_size = 10 /obj/item/ammo_casing/a308/ap name = ".308 AP bullet casing" @@ -121,8 +121,7 @@ desc = "A .308 HP bullet casing." bullet_skin = "hollow" projectile_type = /obj/projectile/bullet/a308/hp -*/ -//[/СELADON-REMOVE] +[/СELADON-REMOVE] */ //.299 diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm index 3407c51a7d74..46a6fba6ff1a 100644 --- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm +++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm @@ -12,11 +12,11 @@ bounce_sfx_override = 'sound/weapons/gun/general/bulletcasing_shotgun_bounce.ogg' wear_modifier = 0.5 -// [CELADON-REMOVE] - CELADON_BALANCE -// /obj/item/ammo_casing/shotgun/update_icon_state() -// icon_state = "[initial(icon_state)][BB ? "" : "-spent"]" -// return ..() -// [/CELADON-REMOVE] +/* [CELADON-REMOVE] - CELADON_BALANCE +/obj/item/ammo_casing/shotgun/update_icon_state() + icon_state = "[initial(icon_state)][BB ? "" : "-spent"]" + return ..() +[/CELADON-REMOVE] */ /obj/item/ammo_casing/shotgun/buckshot name = "buckshot shell" diff --git a/code/modules/projectiles/ammunition/ballistic/sniper.dm b/code/modules/projectiles/ammunition/ballistic/sniper.dm index 503e8b7adbd2..62be8e4bd982 100644 --- a/code/modules/projectiles/ammunition/ballistic/sniper.dm +++ b/code/modules/projectiles/ammunition/ballistic/sniper.dm @@ -35,7 +35,7 @@ name = ".300 Magnum Trac bullet casing" desc = "A .300 Magnum Tracker casing." projectile_type = /obj/projectile/bullet/a300/trac - //[CELADON-DELETE] - iconstate fix + bullet_skin = "trac" //6.5mm CLIP diff --git a/code/modules/projectiles/ammunition/caseless/_caseless.dm b/code/modules/projectiles/ammunition/caseless/_caseless.dm index 230f5f9a9969..9e9dafb8d806 100644 --- a/code/modules/projectiles/ammunition/caseless/_caseless.dm +++ b/code/modules/projectiles/ammunition/caseless/_caseless.dm @@ -3,15 +3,10 @@ firing_effect_type = null heavy_metal = FALSE -/obj/item/ammo_casing/caseless/on_eject(atom/shooter) - // [CELADON-EDIT] - CELADON_FIXES - // qdel(src) // CELADON-EDIT - ORIGINAL - if(BB) // Проверяем, что гильза не пустая - forceMove(drop_location()) // Если гильза не spent, выбрасываем ее на землю. - bounce_away(TRUE) - else - qdel(src) // Если гильза spent, удаляем ее. - // [/CELADON-EDIT] +/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/plasma.dm b/code/modules/projectiles/ammunition/energy/plasma.dm index d593086157fd..05cd02c52d0a 100644 --- a/code/modules/projectiles/ammunition/energy/plasma.dm +++ b/code/modules/projectiles/ammunition/energy/plasma.dm @@ -1,7 +1,7 @@ /obj/item/ammo_casing/energy/plasma projectile_type = /obj/projectile/plasma select_name = "plasma burst" - fire_sound = 'sound/weapons/plasma_cutter.ogg' + fire_sound = 'sound/weapons/melee/plasmacutter/plasma_cutter.ogg' delay = 30 e_cost = 100 diff --git a/code/modules/projectiles/boxes_magazines/_box_magazine.dm b/code/modules/projectiles/boxes_magazines/_box_magazine.dm index d9507e332c85..9fff6f7d16cd 100644 --- a/code/modules/projectiles/boxes_magazines/_box_magazine.dm +++ b/code/modules/projectiles/boxes_magazines/_box_magazine.dm @@ -142,7 +142,6 @@ var/obj/item/ammo_box/attacking_box = attacking_obj for(var/obj/item/ammo_casing/casing_to_insert in attacking_box.stored_ammo) // [CELADON-EDIT] - FIXES_LONG_RELOAD_AMMO - Явно указываю параметр target для do_after - // if(!((instant_load && attacking_box.instant_load) || (stored_ammo.len >= max_ammo) || istype(attacking_obj, /obj/item/ammo_box/magazine/ammo_stack) && do_after(user, 0.5 SECONDS, src))) // ORIGINAL var/timed_action_flags = (user.is_holding(src) || src.loc == user) ? IGNORE_USER_LOC_CHANGE : NONE if(!((instant_load && attacking_box.instant_load) || (stored_ammo.len >= max_ammo) || istype(attacking_obj, /obj/item/ammo_box/magazine/ammo_stack) && do_after(user, 0.5 SECONDS, target = src, timed_action_flags = timed_action_flags))) // [/CELADON-EDIT] diff --git a/code/modules/projectiles/boxes_magazines/ammo_stacks/_ammo_stack.dm b/code/modules/projectiles/boxes_magazines/ammo_stacks/_ammo_stack.dm index a82262945ab3..ade64e560465 100644 --- a/code/modules/projectiles/boxes_magazines/ammo_stacks/_ammo_stack.dm +++ b/code/modules/projectiles/boxes_magazines/ammo_stacks/_ammo_stack.dm @@ -9,11 +9,8 @@ desc = "A pile of live rounds." icon = 'icons/obj/ammunition/ammo_bullets.dmi' icon_state = "pistol-brass" -// [CELADON-ADD] - ADD_MOD_BULLET_STACK - Загружает путь если из мода, иначе дефолтный - var/base_icon = null -// [/CELADON-ADD] base_icon_state = "pistol-brass" - item_flags = NO_PIXEL_RANDOM_DROP | NO_ROTATE_RANDOM_THROW // [CELADON-EDIT] + item_flags = NO_PIXEL_RANDOM_DROP multiple_sprites = AMMO_BOX_ONE_SPRITE multiload = FALSE start_empty = TRUE @@ -30,11 +27,7 @@ cut_overlays() icon_state = "" for(var/casing in stored_ammo) - var/image/bullet = image(initial(icon), src, "[base_icon_state]") -// [CELADON-ADD] - ADD_MOD_BULLET_STACK - Загружает путь если из мода, иначе дефолтный - if(base_icon != null) - bullet = image(base_icon, src, "[base_icon_state]") -// [/CELADON-ADD] + var/image/bullet = image(base_icon || initial(icon), src, "[base_icon_state]") // [CELADON-ADD] - ADD_MOD_BULLET_STACK - Загружает путь если из мода, иначе дефолтный bullet.pixel_x = rand(-8, 8) bullet.pixel_y = rand(-8, 8) bullet.transform = bullet.transform.Turn(round(45 * rand(0, 32) / 2)) //this is the equation Eris uses on their bullet stacks diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index c5f1f526f679..eebf71a40611 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -372,10 +372,8 @@ /obj/item/gun/proc/do_wield(mob/user, instant) user.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/gun, multiplicative_slowdown = wield_slowdown) wield_time = world.time + wield_delay -// [CELADON-ADD] - CELADON_FIXES if(azoom) azoom.Grant(user) -// [/CELADON-ADD] if(wield_time > 0 && !instant) if(do_after( user, @@ -397,10 +395,6 @@ wielded = FALSE wielded_fully = FALSE zoom(user, forced_zoom = FALSE) -// [CELADON-ADD] - CELADON_FIXES - if(azoom) - azoom.Remove(user) -// [/CELADON-ADD] user.remove_movespeed_modifier(/datum/movespeed_modifier/gun) if(azoom) azoom.Remove(user) @@ -1212,7 +1206,7 @@ return ..() GLOBAL_LIST_INIT(gun_saw_types, typecacheof(list( - /obj/item/gun/energy/plasmacutter, + /obj/item/plasmacutter, /obj/item/melee/energy, /obj/item/gear_handle/anglegrinder, /obj/item/hatchet, diff --git a/code/modules/projectiles/guns/ballistic/gauss.dm b/code/modules/projectiles/guns/ballistic/gauss.dm index de73f1083c7d..55f4b289af47 100644 --- a/code/modules/projectiles/guns/ballistic/gauss.dm +++ b/code/modules/projectiles/guns/ballistic/gauss.dm @@ -2,11 +2,11 @@ name = "prototype gauss rifle" desc = "An experimental Nanotrasen rifle with a high capacity. Useful for putting down crowds. Chambered in ferromagnetic pellets." icon = 'icons/obj/guns/manufacturer/nanotrasen_sharplite/48x32.dmi' - lefthand_file = 'mod_celadon/_storage_icons/icons/items/weapons/in_hands/gauss_hands_left.dmi' // [CELADON-EDIT] - righthand_file = 'mod_celadon/_storage_icons/icons/items/weapons/in_hands/gauss_hands_right.dmi' // [/CELADON-EDIT] - mob_overlay_icon = 'mod_celadon/_storage_icons/icons/items/weapons/overlay/pgauss.dmi' // [/CELADON-EDIT] + lefthand_file = 'icons/obj/guns/manufacturer/nanotrasen_sharplite/lefthand.dmi' + righthand_file = 'icons/obj/guns/manufacturer/nanotrasen_sharplite/righthand.dmi' + mob_overlay_icon = 'icons/obj/guns/manufacturer/nanotrasen_sharplite/onmob.dmi' icon_state = "gauss" - item_state = "gauss" // [/CELADON-EDIT] + item_state = "arg" slot_flags = ITEM_SLOT_BACK | ITEM_SLOT_SUITSTORE default_ammo_type = /obj/item/ammo_box/magazine/gauss allowed_ammo_types = list( diff --git a/code/modules/projectiles/guns/ballistic/smg.dm b/code/modules/projectiles/guns/ballistic/smg.dm index c933053b4371..0546a2e43c65 100644 --- a/code/modules/projectiles/guns/ballistic/smg.dm +++ b/code/modules/projectiles/guns/ballistic/smg.dm @@ -32,49 +32,6 @@ wear_major_threshold = 720 wear_maximum = 1200 -/obj/item/gun/ballistic/automatic/smg/wt550 - name = "\improper WT-550 Automatic Rifle" - desc = "An outdated PDW, used centuries ago by Nanotrasen security elements. Uses 4.6x30mm rounds." - icon = 'icons/obj/guns/manufacturer/nanotrasen_sharplite/48x32.dmi' - lefthand_file = 'icons/obj/guns/manufacturer/nanotrasen_sharplite/lefthand.dmi' - righthand_file = 'icons/obj/guns/manufacturer/nanotrasen_sharplite/righthand.dmi' - mob_overlay_icon = 'icons/obj/guns/manufacturer/nanotrasen_sharplite/onmob.dmi' - icon_state = "wt550" - item_state = "arg" - default_ammo_type = /obj/item/ammo_box/magazine/wt550m9 - allowed_ammo_types = list( - /obj/item/ammo_box/magazine/wt550m9, - ) - actions_types = list() - show_magazine_on_sprite = TRUE - show_magazine_on_sprite_ammo = TRUE -// [CELADON-ADD] - ADD_SHOW_AMMOCAPACITY_ON_MAGAZINE - show_ammo_capacity_on_magazine_sprite = TRUE -// [/CELADON-ADD] - empty_indicator = TRUE - manufacturer = MANUFACTURER_NANOTRASEN_OLD - fire_sound = 'sound/weapons/gun/smg/smg_heavy.ogg' - -/obj/item/gun/ballistic/automatic/smg/wt550/no_mag - default_ammo_type = FALSE - -/obj/item/gun/ballistic/automatic/smg/vector - name = "\improper Vector carbine" - desc = "A police carbine based on a pre-Night of Fire SMG design. Most of the complex workings have been removed for reliability. Chambered in 9x18mm." - icon = 'icons/obj/guns/manufacturer/nanotrasen_sharplite/48x32.dmi' - lefthand_file = 'icons/obj/guns/manufacturer/nanotrasen_sharplite/lefthand.dmi' - righthand_file = 'icons/obj/guns/manufacturer/nanotrasen_sharplite/righthand.dmi' - mob_overlay_icon = 'icons/obj/guns/manufacturer/nanotrasen_sharplite/onmob.dmi' - icon_state = "vector" - item_state = "vector" - default_ammo_type = /obj/item/ammo_box/magazine/m9mm_expedition - allowed_ammo_types = list( - /obj/item/ammo_box/magazine/m9mm_expedition, - ) //you guys remember when the autorifle was chambered in 9mm - bolt_type = BOLT_TYPE_LOCKING - show_magazine_on_sprite = TRUE - weapon_weight = WEAPON_LIGHT - fire_sound = 'sound/weapons/gun/smg/vector_fire.ogg' /obj/item/gun/ballistic/automatic/smg/skm_carbine name = "\improper SKM-24v" diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index a8d834f30c14..049b67687841 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -35,6 +35,7 @@ tac_reloads = FALSE tactical_reload_delay = 1.2 SECONDS + var/latch_closed = TRUE var/latch_toggle_delay = 0.6 SECONDS @@ -138,53 +139,36 @@ return return ..() -// [CELADON-ADD] - HOTKEY-RELOAD - Возвращает переключение режимов стрельбы на кнопку перезарядки -/obj/item/gun/energy/unique_action(mob/living/user) - if(ammo_type.len > 1) - select_fire(user) - update_appearance() -// [/CELADON-ADD] - /obj/item/gun/energy/attackby(obj/item/A, mob/user, params) if(..()) return FALSE - if(internal_cell) // [CELADON-ADD] - return // [/CELADON-ADD] + // CELADON EDIT START + if(internal_cell) + return + // CELADON EDIT END + if (!internal_magazine && (A.type in (allowed_ammo_types - blacklisted_ammo_types))) var/obj/item/stock_parts/cell/gun/C = A if (!cell) -// [CELADON-EDIT] - CELADON BALANCE - продолжаем убирать систему люков оффов -// return insert_cell(user, C) CELADON-EDIT -> ORIGINAL - insert_cell(user, C) -// [/CELADON-EDIT] + insert_cell(user, C) // [CELADON-EDIT] - CELADON BALANCE - продолжаем убирать систему люков оффов else if (tac_reloads) eject_cell(user, C) /obj/item/gun/energy/proc/insert_cell(mob/user, obj/item/stock_parts/cell/gun/C) -// [CELADON-EDIT] - CELADON BALANCE - возвращает старый код для перезарядки батареек, убирает новый код люков -// if(!latch_closed) -// if(user.transferItemToLoc(C, src)) -// cell = C -// to_chat(user, span_notice("You load the [C] into \the [src].")) -// playsound(src, load_sound, load_sound_volume, load_sound_vary) -// update_appearance() -// return TRUE -// else -// to_chat(user, span_warning("You cannot seem to get \the [src] out of your hands!")) -// return FALSE -// else -// to_chat(user, span_warning("The [src]'s cell retainment clip is latched!")) // CELADON-EDIT -> ORIGINAL - if(user.transferItemToLoc(C, src)) - cell = C - to_chat(user, span_notice("You load the [C] into \the [src].")) - playsound(src, load_sound, load_sound_volume, load_sound_vary) - update_appearance() - return TRUE + if(!latch_closed) + if(user.transferItemToLoc(C, src)) + cell = C + to_chat(user, span_notice("You load the [C] into \the [src].")) + playsound(src, load_sound, load_sound_volume, load_sound_vary) + update_appearance() + return TRUE + else + to_chat(user, span_warning("You cannot seem to get \the [src] out of your hands!")) + return FALSE else - to_chat(user, span_warning("You cannot seem to get \the [src] out of your hands!")) + to_chat(user, span_warning("The [src]'s cell retainment clip is latched!")) return FALSE -// [/CELADON-EDIT] /obj/item/gun/energy/proc/eject_cell(mob/user, obj/item/stock_parts/cell/gun/tac_load = null) playsound(src, load_sound, load_sound_volume, load_sound_vary) @@ -208,88 +192,39 @@ user.put_in_hands(old_cell) update_appearance() -// [CELADON-REMOVE] - CELADON_BALANCE - Ненужная часть кода создающая рантаймы и добавляющая ненужную функцию -// /obj/item/gun/energy/screwdriver_act(mob/living/user, obj/item/I) -// if(cell && !internal_cell) -// to_chat(user, span_notice("You begin unscrewing and pulling out the cell...")) -// if(I.use_tool(src, user, unscrewing_time, volume = 100)) -// to_chat(user, span_notice("You remove the power cell.")) -// eject_cell(user) -// return ..() -// [/CELADON-REMOVE] // ЕСЛИ БУДЕТ РАНТАЙМИТЬ, СНЕСТИ СНИЗУ +/* CELADON EDIT START //special is_type_in_list method to counteract problem with current method +/obj/item/gun/energy/proc/is_attachment_in_contents_list() + for(var/content_item in contents) + if(istype(content_item, /obj/item/attachment/)) + return TRUE + return FALSE + +/obj/item/gun/energy/unique_action(mob/living/user) + if(..()) + return + + if(!internal_magazine && latch_closed) + to_chat(user, span_notice("You start to unlatch the [src]'s power cell retainment clip...")) + if(do_after(user, latch_toggle_delay, src, IGNORE_USER_LOC_CHANGE)) + to_chat(user, span_notice("You unlatch the [src]'s power cell retainment clip " + span_red("OPEN") + ".")) + playsound(src, 'sound/items/taperecorder/taperecorder_play.ogg', 50, FALSE) + tac_reloads = TRUE + latch_closed = FALSE + update_appearance() + + else if(!internal_magazine && !latch_closed) + to_chat(user, span_warning("You start to latch the [src]'s power cell retainment clip...")) + + if (do_after(user, latch_toggle_delay, src, IGNORE_USER_LOC_CHANGE)) + to_chat(user, span_notice("You latch the [src]'s power cell retainment clip " + span_green("CLOSED") + ".")) + playsound(src, 'sound/items/taperecorder/taperecorder_close.ogg', 50, FALSE) + tac_reloads = FALSE + latch_closed = TRUE + update_appearance() + return +CELADON EDIT END */ -// [CELADON-REMOVE] - CELADON BALANCE - часть новой бесполезной системы люков от оффов -///obj/item/gun/energy/unique_action(mob/living/user) -// if(..()) -// return -// -// if(!internal_magazine && latch_closed) -// to_chat(user, span_notice("You start to unlatch the [src]'s power cell retainment clip...")) -// if(do_after(user, latch_toggle_delay, src, IGNORE_USER_LOC_CHANGE)) -// to_chat(user, span_notice("You unlatch the [src]'s power cell retainment clip " + span_red("OPEN") + ".")) -// playsound(src, 'sound/items/taperecorder/taperecorder_play.ogg', 50, FALSE) -// tac_reloads = TRUE -// latch_closed = FALSE -// update_appearance() -// -// else if(!internal_magazine && !latch_closed) -// to_chat(user, span_warning("You start to latch the [src]'s power cell retainment clip...")) -// -// if (do_after(user, latch_toggle_delay, src, IGNORE_USER_LOC_CHANGE)) -// to_chat(user, span_notice("You latch the [src]'s power cell retainment clip " + span_green("CLOSED") + ".")) -// playsound(src, 'sound/items/taperecorder/taperecorder_close.ogg', 50, FALSE) -// tac_reloads = FALSE -// latch_closed = TRUE -// update_appearance() -// return - -// /obj/item/gun/energy/unique_action(mob/living/user) -// if(..()) -// return -// if(!internal_magazine && latch_closed) -// to_chat(user, span_notice("You start to unlatch the [src]'s power cell retainment clip...")) -// if(do_after(user, latch_toggle_delay, src, IGNORE_USER_LOC_CHANGE)) -// to_chat(user, span_notice("You unlatch the [src]'s power cell retainment clip " + span_red("OPEN") + ".")) -// playsound(src, 'sound/items/taperecorder/taperecorder_play.ogg', 50, FALSE) -// tac_reloads = TRUE -// latch_closed = FALSE -// update_appearance() -// else if(!internal_magazine && !latch_closed) -// // if(!cell && is_attachment_in_contents_list()) -// // return ..() //should bring up the attachment menu if attachments are added. If none are added, it just does leaves the latch open -// to_chat(user, span_warning("You start to latch the [src]'s power cell retainment clip...")) -// if (do_after(user, latch_toggle_delay, src, IGNORE_USER_LOC_CHANGE)) -// to_chat(user, span_notice("You latch the [src]'s power cell retainment clip " + span_green("CLOSED") + ".")) -// playsound(src, 'sound/items/taperecorder/taperecorder_close.ogg', 50, FALSE) -// tac_reloads = FALSE -// latch_closed = TRUE -// update_appearance() -// return - -// /obj/item/gun/energy/AltClick(mob/living/user) -// if(..()) -// return -// if(!internal_magazine && latch_closed) -// to_chat(user, span_notice("You start to unlatch the [src]'s power cell retainment clip...")) -// if(do_after(user, latch_toggle_delay, src, IGNORE_USER_LOC_CHANGE)) -// to_chat(user, span_notice("You unlatch the [src]'s power cell retainment clip " + span_red("OPEN") + ".")) -// playsound(src, 'sound/items/taperecorder/taperecorder_play.ogg', 50, FALSE) -// tac_reloads = TRUE -// latch_closed = FALSE -// update_appearance() -// else if(!internal_magazine && !latch_closed) -// // if(!cell && is_attachment_in_contents_list()) -// // return ..() //should bring up the attachment menu if attachments are added. If none are added, it just does leaves the latch open -// to_chat(user, span_warning("You start to latch the [src]'s power cell retainment clip...")) -// if (do_after(user, latch_toggle_delay, src, IGNORE_USER_LOC_CHANGE)) -// to_chat(user, span_notice("You latch the [src]'s power cell retainment clip " + span_green("CLOSED") + ".")) -// playsound(src, 'sound/items/taperecorder/taperecorder_close.ogg', 50, FALSE) -// tac_reloads = FALSE -// latch_closed = TRUE -// update_appearance() -// return -// [/CELADON_REMOVE] /obj/item/gun/energy/can_shoot(visuals) if(safety && !visuals) return FALSE @@ -328,17 +263,7 @@ /obj/item/gun/energy/process_fire(atom/target, mob/living/user, message = TRUE, params = null, zone_override = "", bonus_spread = 0) if(!chambered && can_shoot()) process_chamber() // If the gun was drained and then recharged, load a new shot. -// [CELADON-REMOVE] - CELADON BALANCE - очередная часть системы оффов -// ..() //process the gunshot as normal -// if(!latch_closed && prob(65)) //make the cell slide out if it's fired while the retainment clip is unlatched, with a 65% probability -// to_chat(user, span_warning("The [src]'s cell falls out!")) -// eject_cell() -// [/CELADON-REMOVE] - -// [CELADON-EDIT] -// return // CELADON-EDIT -> ORIGINAL - return ..() -// [/CELADON-EDIT] + return ..() // [CELADON-REMOVE] - CELADON BALANCE - очередная часть системы оффов /obj/item/gun/energy/proc/build_ammotypes() for(var/datum/action/item_action/toggle_ammotype/old_ammotype in actions) @@ -435,22 +360,22 @@ var/overlay_icon_state = "[icon_state]_charge" var/obj/item/ammo_casing/energy/shot = ammo_type[modifystate ? select : 1] var/ratio = get_charge_ratio() -// [CELADON-REMOVE] - CELADON-BALANCE - очередная система люков оффов -// if(ismob(loc) && !internal_magazine) -// var/mutable_appearance/latch_overlay -// latch_overlay = mutable_appearance('icons/obj/guns/cell_latch.dmi') -// if(latch_closed) -// if(cell) -// latch_overlay.icon_state = "latch-on-full" -// else -// latch_overlay.icon_state = "latch-on-empty" -// else -// if(cell) -// latch_overlay.icon_state = "latch-off-full" -// else -// latch_overlay.icon_state = "latch-off-empty" -// . += latch_overlay -// [/CELADON-REMOVE] + /* [CELADON-REMOVE] - CELADON-BALANCE - очередная система люков оффов + if(ismob(loc) && !internal_magazine) + var/mutable_appearance/latch_overlay + latch_overlay = mutable_appearance('icons/obj/guns/cell_latch.dmi') + if(latch_closed) + if(cell) + latch_overlay.icon_state = "latch-on-full" + else + latch_overlay.icon_state = "latch-on-empty" + else + if(cell) + latch_overlay.icon_state = "latch-off-full" + else + latch_overlay.icon_state = "latch-off-empty" + . += latch_overlay + [/CELADON-REMOVE] */ if(cell) . += "[icon_state]_cell" if(ratio == 0) @@ -525,10 +450,10 @@ /obj/item/gun/energy/examine(mob/user) . = ..() -// [CELADON-REMOVE] - CELADON BALANCE - часть плохой системы оффов -// if(!internal_magazine) -// . += "The cell retainment latch is [latch_closed ? span_green("CLOSED") : span_red("OPEN")]. Press the Unique Action Key to toggle the latch. By default, this is space." -// [CELADON-REMOVE] + /* [CELADON-REMOVE] - CELADON BALANCE - часть плохой системы оффов + if(!internal_magazine) + . += "The cell retainment latch is [latch_closed ? span_green("CLOSED") : span_red("OPEN")]. Press the Unique Action Key to toggle the latch. By default, this is space." + [CELADON-REMOVE] */ var/obj/item/ammo_casing/energy/shot = ammo_type[select] if(ammo_type.len > 1) . += "You can switch ammo modes by pressing the Ammo Toggle button." @@ -539,9 +464,5 @@ . += span_notice("\The [name] doesn't seem to have a cell!") /obj/item/gun/energy/unsafe_shot(target) - // [CELADON-ADD] - FIXES_LOCKER_RECHARGE_ENERGYGUN - if(!can_shoot()) - return - // [/CELADON-ADD] . = ..() process_chamber() diff --git a/code/modules/projectiles/guns/energy/laser_gatling.dm b/code/modules/projectiles/guns/energy/laser_gatling.dm index 7df3e49b07cc..61e03b9df536 100644 --- a/code/modules/projectiles/guns/energy/laser_gatling.dm +++ b/code/modules/projectiles/guns/energy/laser_gatling.dm @@ -36,7 +36,7 @@ return ..() /obj/item/minigunpack/process(seconds_per_tick) - overheat = max(0, overheat - heat_diffusion * seconds_per_tick) // [CELADON-EDIT] + overheat = max(0, overheat - heat_diffusion) //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/minigunpack/attack_hand(mob/living/carbon/user) diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 1ab47fd9d7e7..0d6691aa312a 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -126,117 +126,6 @@ ammo_type = list(/obj/item/ammo_casing/energy/bolt/large) manufacturer = MANUFACTURER_NONE - -/obj/item/gun/energy/plasmacutter - name = "plasma cutter" - desc = "An engineering tool capable of expelling concentrated plasma bursts. You could use it to cut limbs off xenos! Or, you know, cut through walls." - icon_state = "plasmacutter" - item_state = "plasmacutter" - ammo_type = list(/obj/item/ammo_casing/energy/plasma) - flags_1 = CONDUCT_1 - attack_verb = list("attacked", "slashed", "cut", "sliced") - force = 12 - sharpness = SHARP_EDGED - can_charge = FALSE - - heat = 3800 - usesound = list('sound/items/welder.ogg', 'sound/items/welder2.ogg') - tool_behaviour = TOOL_DECONSTRUCT - wall_decon_damage = 200 - toolspeed = 1 //plasmacutters can be used like angle grinders - internal_magazine = TRUE //so you don't cheese through the need for plasma - WS EDIT - var/charge_cut = 100 //amount of charge used up to start action (multiplied by amount) and per progress_flash_divisor ticks of cutting - var/adv = FALSE - -/obj/item/gun/energy/plasmacutter/ComponentInitialize() - . = ..() - AddComponent(/datum/component/butchering, 25, 105, 0, 'sound/weapons/plasma_cutter.ogg') - AddElement(/datum/element/update_icon_blocker) - AddElement(/datum/element/tool_flash, 1) - -/obj/item/gun/energy/plasmacutter/examine(mob/user) - . = ..() - if(cell) - . += span_notice("[src] is [round(cell.percent())]% charged.") - -/obj/item/gun/energy/plasmacutter/attackby(obj/item/I, mob/user) - var/charge_multiplier = 0 //2 = Refined stack, 1 = Ore - if(istype(I, /obj/item/stack/sheet/mineral/plasma)) - charge_multiplier = 2 - if(istype(I, /obj/item/stack/ore/plasma)) - charge_multiplier = 1 - if(charge_multiplier) - if(cell.charge == cell.maxcharge) - to_chat(user, span_notice("You try to insert [I] into [src], but it's fully charged.")) //my cell is round and full - return - I.use(1) - cell.give(500*charge_multiplier) - to_chat(user, span_notice("You insert [I] in [src], recharging it.")) - else - ..() - -// Can we cut? Plasma cutter does not use charge continuously. -// Amount cannot be defaulted to 1: most of the code specifies 0 in the call. -/obj/item/gun/energy/plasmacutter/tool_use_check(mob/living/user, atom/target, amount) - if(QDELETED(cell)) - to_chat(user, span_warning("[src] does not have a cell, and cannot be used!")) - return FALSE - // Amount cannot be used if drain is made continuous, e.g. amount = 5, charge_cut = 25 - // Then it'll drain 125 at first and 25 periodically, but fail if charge dips below 125 even though it still can finish action - // Alternately it'll need to drain amount*charge_cut every period, which is either obscene or makes it free for other uses - if(amount ? cell.charge < charge_cut * amount : cell.charge < charge_cut) - to_chat(user, span_warning("You need more charge to complete this task!")) - return FALSE - - return TRUE - -/obj/item/gun/energy/plasmacutter/attack(mob/living/carbon/human/target, mob/user) - if(!istype(target)) - return ..() - var/obj/item/bodypart/attackedLimb = target.get_bodypart(check_zone(user.zone_selected)) - if(!attackedLimb || IS_ORGANIC_LIMB(attackedLimb) || (user.a_intent == INTENT_HARM)) - return ..() - //if(!target.is_exposed(user, TRUE, user.zone_selected)) // [CELADON-REMOVE] - NO-HARDER-REPAIR-IPC - // return TRUE // [/CELADON-REMOVE] - if(!tool_start_check(user, amount = 1)) - return TRUE - user.visible_message(span_notice("[user] starts to fix some of the dents on [target]'s [parse_zone(attackedLimb.body_zone)]."), - span_notice("You start fixing some of the dents on [target == user ? "your" : "[target]'s"] [parse_zone(attackedLimb.body_zone)].")) - if(!use_tool(target, user, delay = (target == user ? 5 SECONDS : 0.5 SECONDS), amount = 1, volume = 25)) - return TRUE - item_heal_robotic(target, user, brute_heal = 15, burn_heal = 0) - return TRUE - -/obj/item/gun/energy/plasmacutter/use(amount) - return (!QDELETED(cell) && cell.use(amount ? amount * charge_cut : charge_cut)) - -/obj/item/gun/energy/plasmacutter/use_tool(atom/target, mob/living/user, delay, amount=1, volume=0, datum/callback/extra_checks) - // [CELADON-ADD] - Prevert cutting Rock - if(ismineralturf(target)) - return - // [/CELADON-ADD] - if(amount) - if(adv) - target.add_overlay(GLOB.advanced_cutting_effect) - else - target.add_overlay(GLOB.cutting_effect) - . = ..() - if(adv) - target.cut_overlay(GLOB.advanced_cutting_effect) - else - target.cut_overlay(GLOB.cutting_effect) - else - . = ..(amount=1) - -/obj/item/gun/energy/plasmacutter/adv - name = "advanced plasma cutter" - icon_state = "adv_plasmacutter" - item_state = "adv_plasmacutter" - force = 15 - wall_decon_damage = 300 - ammo_type = list(/obj/item/ammo_casing/energy/plasma/adv) - adv = TRUE // [CELADON-ADD] - Я ору они забыли про свою же переменную на другой стиль анимации... - /obj/item/gun/energy/wormhole_projector name = "bluespace wormhole projector" desc = "A projector that emits high density quantum-coupled bluespace beams." //WS Edit - Any anomaly core for phazons diff --git a/code/modules/projectiles/guns/manufacturer/clip_lanchester/ballistics.dm b/code/modules/projectiles/guns/manufacturer/clip_lanchester/ballistics.dm index c1ce9677e9e9..a818f5dd82ce 100644 --- a/code/modules/projectiles/guns/manufacturer/clip_lanchester/ballistics.dm +++ b/code/modules/projectiles/guns/manufacturer/clip_lanchester/ballistics.dm @@ -251,6 +251,7 @@ NO_MAG_GUN_HELPER(automatic/smg/cm5) /obj/item/ammo_box/magazine/cm5_9mm/rubber desc = "A 30-round magazine for the CM-5 submachine gun. These rubber rounds trade lethality for a heavy impact which can incapacitate targets. Performs even worse against armor." + caliber = "9x18mm rubber" ammo_type = /obj/item/ammo_casing/c9mm/rubber /obj/item/gun/ballistic/automatic/smg/cm5/compact diff --git a/code/modules/projectiles/guns/manufacturer/scarborough/ballistics.dm b/code/modules/projectiles/guns/manufacturer/scarborough/ballistics.dm index 2a2b1c456ccb..b74023662c52 100644 --- a/code/modules/projectiles/guns/manufacturer/scarborough/ballistics.dm +++ b/code/modules/projectiles/guns/manufacturer/scarborough/ballistics.dm @@ -892,15 +892,7 @@ NO_MAG_GUN_HELPER(automatic/assault/hydra/indie) /obj/item/ammo_box/magazine/m556_42_hydra/casket, ) -EMPTY_GUN_HELPER(automatic/assault/hydra/dmr) - -/obj/item/gun/ballistic/automatic/assault/hydra/dmr/Initialize() - . = ..() - // [CELADON-EDIT] -- CELADON_FIXES -- фиксим неподходящий магазин (вагабага дырдырдыр) - // magazine = new /obj/item/ammo_box/magazine/m556_42_hydra/small(src) - // magazine = new mag_type(src) - // [/CELADON-EDIT] - chamber_round() +NO_MAG_GUN_HELPER(automatic/assault/hydra/dmr) /obj/item/gun/ballistic/automatic/assault/hydra/underbarrel_gl name = "SMR-80 \"Hydra\"" diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm index a5c34d5770cf..43c511bd40b1 100644 --- a/code/modules/projectiles/guns/misc/beam_rifle.dm +++ b/code/modules/projectiles/guns/misc/beam_rifle.dm @@ -32,9 +32,7 @@ default_ammo_type = /obj/item/stock_parts/cell/gun/large allowed_ammo_types = list( /obj/item/stock_parts/cell/gun/large, -// [CELADON-ADD] - FIX LARGE EMPTY CELL - /obj/item/stock_parts/cell/gun/large/empty, -// [/CELADON-ADD] + /obj/item/stock_parts/cell/gun/large/empty, // [CELADON-ADD] - FIX LARGE EMPTY CELL ) canMouseDown = TRUE var/aiming = FALSE diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 6f750878c342..9d8e176afffd 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -103,7 +103,7 @@ var/ricochet_auto_aim_angle = 30 /// the angle of impact must be within this many degrees of the struck surface, set to 0 to allow any angle var/ricochet_incidence_leeway = 40 - /// accuracy modifier. Used as a multiplier + /// accuracy modifier. Used as a multiplier when calculating which body part is hit on a living target var/accuracy_mod = 1 ///If the object being hit can pass ths damage on to something else, it should not do it for this bullet diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index 5cab5dbcd8f5..820ce0b42ac3 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -281,7 +281,7 @@ icon_state = "u_laser" damage = 40 bullet_identifier = "pulse" - wall_damage_flags = PROJECTILE_BONUS_DAMAGE_MINERALS | PROJECTILE_BONUS_DAMAGE_WALLS | PROJECTILE_BONUS_DAMAGE_WALLS + wall_damage_flags = PROJECTILE_BONUS_DAMAGE_MINERALS | PROJECTILE_BONUS_DAMAGE_WALLS | PROJECTILE_BONUS_DAMAGE_RWALLS wall_damage_override = 200 impact_effect_type = /obj/effect/temp_visual/impact_effect/blue_laser light_color = LIGHT_COLOR_BLUE diff --git a/code/modules/projectiles/projectile/bullets/rifle.dm b/code/modules/projectiles/projectile/bullets/rifle.dm index 67fb1a6605fe..4ba564107a1f 100644 --- a/code/modules/projectiles/projectile/bullets/rifle.dm +++ b/code/modules/projectiles/projectile/bullets/rifle.dm @@ -100,7 +100,7 @@ damage = 35 armour_penetration = 40 speed = BULLET_SPEED_RIFLE - + bullet_identifier = "large bullet" /obj/projectile/bullet/a308/hp name = ".308 hollow point bullet" @@ -121,8 +121,7 @@ armour_penetration = 20 speed_mod = BULLET_SPEED_RUBBER_MOD bullet_identifier = "large rubber bullet" -*/ -//[/СELADON-REMOVE] +[/СELADON-REMOVE] */ // .299 Eoehoma Caseless (E-40) diff --git a/code/modules/projectiles/projectile/special/plasma.dm b/code/modules/projectiles/projectile/special/plasma.dm index 68071bd2c557..03e26360890e 100644 --- a/code/modules/projectiles/projectile/special/plasma.dm +++ b/code/modules/projectiles/projectile/special/plasma.dm @@ -2,28 +2,28 @@ name = "plasma blast" icon_state = "plasmacutter" damage_type = BURN - damage = 15 + damage = 25 + armour_penetration = -20 range = 4 dismemberment = 10 - /// chance that the plasmablast ruins the ore - var/slag_chance = 33 + wall_damage_flags = PROJECTILE_BONUS_DAMAGE_MINERALS | PROJECTILE_BONUS_DAMAGE_WALLS | PROJECTILE_BONUS_DAMAGE_RWALLS + wall_damage_override = 150 impact_effect_type = /obj/effect/temp_visual/impact_effect/purple_laser tracer_type = /obj/effect/projectile/tracer/plasma_cutter muzzle_type = /obj/effect/projectile/muzzle/plasma_cutter impact_type = /obj/effect/projectile/impact/plasma_cutter + hitscan = TRUE + +/obj/projectile/plasma/on_hit(atom/target, blocked = 0) + if(isobj(target) && (blocked != 100)) + var/obj/O = target + O.take_damage(80, BRUTE, "bullet", FALSE) + return ..() /obj/projectile/plasma/adv - damage = 7 + damage = 30 range = 5 - slag_chance = 20 /obj/projectile/plasma/adv/mech damage = 10 range = 9 - -/obj/projectile/plasma/turret - //Between normal and advanced for damage, made a beam so not the turret does not destroy glass - name = "plasma beam" - damage = 24 - range = 7 - pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 8814643b610a..a17c4154176b 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -253,7 +253,6 @@ if(amount <= 0) return 0 // [/CELADON-ADD] - amount = min(min(amount, src.total_volume), R.maximum_volume-R.total_volume) var/trans_data = null var/transfer_log = list() diff --git a/code/modules/reagents/chemistry/reagents/drink_reagents.dm b/code/modules/reagents/chemistry/reagents/drink_reagents.dm index 533cb06a5822..1b6b918b9dbb 100644 --- a/code/modules/reagents/chemistry/reagents/drink_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drink_reagents.dm @@ -153,14 +153,6 @@ glass_name = "glass of banana juice" glass_desc = "While staring down at this glass, some part of you wonders what went through the minds of those who decided to add this to milk." -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNSS -/datum/reagent/consumable/banana/on_mob_life(mob/living/carbon/M) - if((ishuman(M) && M.job == "Clown") || ismonkey(M)) - M.heal_bodypart_damage(1,1, 0) - . = 1 - ..() -// [/CELADON-ADD] - /datum/reagent/consumable/nothing name = "Nothing" description = "Absolutely nothing." @@ -170,41 +162,6 @@ glass_desc = "Absolutely nothing." shot_glass_icon_state = "shotglass" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/datum/reagent/consumable/nothing/on_mob_life(mob/living/carbon/M) - if(ishuman(M) && M.mind?.miming) - M.silent = max(M.silent, MIMEDRINK_SILENCE_DURATION) - M.heal_bodypart_damage(1,1) - . = 1 - ..() - -/datum/reagent/consumable/laughter - name = "Laughter" - description = "Some say that this is the best medicine, but recent studies have proven that to be untrue." - metabolization_rate = INFINITY - color = "#FF4DD2" - taste_description = "laughter" - -/datum/reagent/consumable/laughter/on_mob_life(mob/living/carbon/M) - M.emote("laugh") - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "chemical_laughter", /datum/mood_event/chemical_laughter) - ..() - -/datum/reagent/consumable/superlaughter - name = "Super Laughter" - description = "Funny until you're the one laughing." - metabolization_rate = 1.5 * REAGENTS_METABOLISM - color = "#FF4DD2" - taste_description = "laughter" - -/datum/reagent/consumable/superlaughter/on_mob_life(mob/living/carbon/M) - if(prob(30)) - M.visible_message(span_danger("[M] bursts out into a fit of uncontrollable laughter!"), span_userdanger("You burst out in a fit of uncontrollable laughter!")) - M.Stun(5) - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "chemical_laughter", /datum/mood_event/chemical_superlaughter) - ..() -// [/CELADON-ADD] - /datum/reagent/consumable/potato_juice name = "Potato Juice" description = "Juice of the potato. Bleh." diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index a0c97b2c8450..dc307169f0b1 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -679,15 +679,6 @@ . = TRUE ..() -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNSS -/datum/reagent/consumable/clownstears - name = "Clown's Tears" - description = "The sorrow and melancholy of a thousand bereaved clowns, forever denied their Honkmechs." - nutriment_factor = 5 * REAGENTS_METABOLISM - color = "#eef442" // rgb: 238, 244, 66 - taste_description = "mournful honking" -// [/CELADON-ADD] - /datum/reagent/consumable/liquidelectricity name = "Liquid Electricity" description = "A glowing, viscous substance that radiates pure energy." //this is no longer Elzousa blood diff --git a/code/modules/reagents/chemistry/reagents/medical_reagents/ipc_reagents.dm b/code/modules/reagents/chemistry/reagents/medical_reagents/ipc_reagents.dm index 06fe6fdd906b..76f368956d9e 100644 --- a/code/modules/reagents/chemistry/reagents/medical_reagents/ipc_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medical_reagents/ipc_reagents.dm @@ -2,15 +2,16 @@ ** for some reason */ -/datum/reagent/medicine/system_cleaner +/datum/reagent/space_cleaner/system_cleaner name = "System Cleaner" description = "Neutralizes harmful chemical compounds inside synthetic systems." reagent_state = LIQUID color = "#F1C40F" metabolization_rate = 0.5 * REAGENTS_METABOLISM process_flags = SYNTHETIC + robot_clean_power = 10 -/datum/reagent/medicine/system_cleaner/on_mob_life(mob/living/M) +/datum/reagent/space_cleaner/system_cleaner/on_mob_life(mob/living/M) M.adjustToxLoss(-2*REM, 0) . = 1 for(var/datum/reagent/R in M.reagents.reagent_list) diff --git a/code/modules/reagents/chemistry/reagents/medical_reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medical_reagents/medicine_reagents.dm index 8a97ff092ff5..887d5ced8ff1 100644 --- a/code/modules/reagents/chemistry/reagents/medical_reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medical_reagents/medicine_reagents.dm @@ -57,7 +57,7 @@ if(prob(5)) var/obj/item/bodypart/open_sore = victim.get_random_bodypart() if(IS_ORGANIC_LIMB(open_sore)) - open_sore.force_wound_upwards(/datum/wound/slash/moderate) + open_sore.force_wound_upwards(/datum/wound/slash/flesh/moderate) M.emote("gasps") /datum/reagent/medicine/indomide/on_mob_end_metabolize(mob/living/L) @@ -919,28 +919,3 @@ M.adjust_timed_status_effect(2 SECONDS * REM, /datum/status_effect/dizziness, max_duration = 20 SECONDS) ..() -// [УДАЛЕНО] -// /datum/reagent/medicine/lavaland_extract/overdose_process(mob/living/M) // Thanks to actioninja -// // [CELADON-ADD] - CELADON_BALANCE -// var/phain = 1 -// // [/CELADON-ADD] -// if(prob(2) && iscarbon(M)) -// var/selected_part = pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) -// var/obj/item/bodypart/bp = M.get_bodypart(selected_part) -// if(bp) -// M.visible_message(span_warning("[M] feels a spike of pain!!"), span_danger("You feel a spike of pain!!")) -// bp.receive_damage(0, 0, 200) -// // [CELADON-EDIT] - CELADON_BALANCE -// // else //SUCH A LUST FOR REVENGE!!! -// // to_chat(M, span_warning("A phantom limb hurts!")) // CELADON-EDIT - ORIGINAL -// else -// if(phain == 1) -// if(selected_part != BODY_ZONE_R_ARM | selected_part != BODY_ZONE_L_LEG) //SUCH A LUST FOR REVENGE!!! -// phain = 0 -// to_chat(M, span_warning("A phantom limb hurts!")) -// M.say("Why are we still here...", forced = /datum/reagent/medicine/lavaland_extract) -// M.client.give_award(/datum/award/achievement/misc/theinnerhell, M) -// else -// return -// // [/CELADON-EDIT] -// return ..() diff --git a/code/modules/reagents/chemistry/reagents/medical_reagents/wound_reagents.dm b/code/modules/reagents/chemistry/reagents/medical_reagents/wound_reagents.dm index fa644a7a25da..14da07350a8a 100644 --- a/code/modules/reagents/chemistry/reagents/medical_reagents/wound_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medical_reagents/wound_reagents.dm @@ -19,7 +19,7 @@ if(31 to INFINITY) C.AdjustSleeping(40) //formerly everything-fixing juice - for(var/datum/wound/blunt/broken_bone in C.all_wounds) + for(var/datum/wound/blunt/bone/broken_bone in C.all_wounds) broken_bone.remove_wound() for(var/obj/item/organ/O in C.internal_organs) O.damage = 0 diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 41246e0caa55..96eafdb2f9e7 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -875,6 +875,7 @@ color = "#A5F0EE" // rgb: 165, 240, 238 taste_description = "sourness" reagent_weight = 0.6 //so it sprays further + var/robot_clean_power = 2 var/clean_types = CLEAN_WASH /datum/reagent/space_cleaner/expose_obj(obj/O, reac_volume) @@ -900,6 +901,7 @@ description = "A powerful, acidic cleaner sold by Waffle Co. Affects organic matter while leaving other objects unaffected." metabolization_rate = 1.5 * REAGENTS_METABOLISM taste_description = "acid" + robot_clean_power = 15 /datum/reagent/space_cleaner/ez_clean/on_mob_life(mob/living/carbon/M) M.adjustBruteLoss(3.33) @@ -2200,6 +2202,7 @@ self_consuming = TRUE taste_description = "pure determination" overdose_threshold = 45 + process_flags = ALL /// Whether we've had at least WOUND_DETERMINATION_SEVERE (2.5u) of determination at any given time. No damage slowdown immunity or indication we're having a second wind if it's just a single moderate wound var/significant = FALSE diff --git a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm index dd880303efa7..16269d378206 100644 --- a/code/modules/reagents/chemistry/reagents/toxin_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/toxin_reagents.dm @@ -259,13 +259,6 @@ toxpwr = 0 taste_description = "sourness" -// [CELADON-ADD] - CELADON_RETURN_CONTENT_QUIRKS -/datum/reagent/toxin/mindbreaker/on_mob_life(mob/living/carbon/M) - if(!M.has_quirk(/datum/quirk/insanity)) - M.hallucination += 5 - return ..() -// [/CELADON-ADD] - /datum/reagent/toxin/plantbgone name = "Plant-B-Gone" description = "A harmful toxic mixture to kill plantlife. Do not ingest!" @@ -944,22 +937,6 @@ . = 1 ..() -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/datum/reagent/toxin/mimesbane - name = "Mime's Bane" - description = "A nonlethal neurotoxin that interferes with the victim's ability to gesture." - silent_toxin = TRUE - color = "#F0F8FF" // rgb: 240, 248, 255 - toxpwr = 0 - taste_description = "stillness" - -/datum/reagent/toxin/mimesbane/on_mob_metabolize(mob/living/L) - ADD_TRAIT(L, TRAIT_EMOTEMUTE, type) - -/datum/reagent/toxin/mimesbane/on_mob_end_metabolize(mob/living/L) - REMOVE_TRAIT(L, TRAIT_EMOTEMUTE, type) -// [/CELADON-ADD] - /datum/reagent/toxin/bonehurtingjuice //oof ouch name = "Bone Hurting Juice" description = "A strange substance that looks a lot like water. Drinking it is oddly tempting. Oof ouch." diff --git a/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm b/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm index c48352567af9..803c8ffdf4a3 100644 --- a/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm @@ -356,9 +356,9 @@ var/mob/living/carbon/guy_who_probably_got_shot = M if(prob(20) && length(guy_who_probably_got_shot.all_wounds)) to_chat(M, span_warning("Your cuts and punctures sear for a second, before ceasing their bloody flow!")) - for(var/datum/wound/slash/cut in guy_who_probably_got_shot.all_wounds) + for(var/datum/wound/slash/flesh/cut in guy_who_probably_got_shot.all_wounds) cut.remove_wound() - for(var/datum/wound/pierce/hole in guy_who_probably_got_shot.all_wounds) + for(var/datum/wound/pierce/bleed/hole in guy_who_probably_got_shot.all_wounds) hole.remove_wound() if(prob(10) && length(guy_who_probably_got_shot.all_wounds)) diff --git a/code/modules/reagents/chemistry/recipes/medicine.dm b/code/modules/reagents/chemistry/recipes/medicine.dm index 221c20ee2d4b..1350c6b66eed 100644 --- a/code/modules/reagents/chemistry/recipes/medicine.dm +++ b/code/modules/reagents/chemistry/recipes/medicine.dm @@ -257,10 +257,6 @@ required_temp = 207 is_cold_recipe = TRUE -/datum/chemical_reaction/system_cleaner - results = list(/datum/reagent/medicine/system_cleaner = 4) - required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/chlorine = 1, /datum/reagent/phenol = 2, /datum/reagent/potassium = 1) - /datum/chemical_reaction/liquid_solder results = list(/datum/reagent/medicine/liquid_solder = 3) required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/copper = 1, /datum/reagent/silver = 1) diff --git a/code/modules/reagents/chemistry/recipes/others.dm b/code/modules/reagents/chemistry/recipes/others.dm index 0456fee44103..039ad16e5c86 100644 --- a/code/modules/reagents/chemistry/recipes/others.dm +++ b/code/modules/reagents/chemistry/recipes/others.dm @@ -340,6 +340,10 @@ results = list(/datum/reagent/space_cleaner = 2) required_reagents = list(/datum/reagent/ammonia = 1, /datum/reagent/water = 1) +/datum/chemical_reaction/system_cleaner + results = list(/datum/reagent/space_cleaner/system_cleaner = 4) + required_reagents = list(/datum/reagent/consumable/ethanol = 1, /datum/reagent/chlorine = 1, /datum/reagent/phenol = 2, /datum/reagent/potassium = 1) + /datum/chemical_reaction/plantbgone results = list(/datum/reagent/toxin/plantbgone = 5) required_reagents = list(/datum/reagent/toxin = 1, /datum/reagent/water = 4) @@ -508,12 +512,6 @@ results = list(/datum/reagent/royal_bee_jelly = 5) required_reagents = list(/datum/reagent/toxin/mutagen = 10, /datum/reagent/consumable/honey = 40) -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/datum/chemical_reaction/laughter - results = list(/datum/reagent/consumable/laughter = 10) // Fuck it. I'm not touching this one. - required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/banana = 1) -// [/CELADON-ADD] - /datum/chemical_reaction/plastic_polymers required_reagents = list(/datum/reagent/fuel/oil = 5, /datum/reagent/toxin/acid = 2, /datum/reagent/ash = 3) required_temp = 374 //lazily consistent with soap & other crafted objects generically created with heat. diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index 7a8f00694061..672642263be8 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -303,7 +303,7 @@ var/atom/A = holder.my_atom A.flash_lighting_fx(_range = (range + 2)) for(var/mob/living/C in get_hearers_in_view(range, location)) - if(C.flash_act(affect_silicon = TRUE)) + if(C.flash_act(affect_silicon = TRUE) & FLASH_EFFECT) if(get_dist(C, location) < 4) C.Paralyze(60) else @@ -322,7 +322,7 @@ var/atom/A = holder.my_atom A.flash_lighting_fx(_range = (range + 2)) for(var/mob/living/C in get_hearers_in_view(range, location)) - if(C.flash_act(affect_silicon = TRUE)) + if(C.flash_act(affect_silicon = TRUE) & FLASH_EFFECT) if(get_dist(C, location) < 4) C.Paralyze(60) else diff --git a/code/modules/reagents/chemistry/recipes/toxins.dm b/code/modules/reagents/chemistry/recipes/toxins.dm index 7d55170783f0..d564913266df 100644 --- a/code/modules/reagents/chemistry/recipes/toxins.dm +++ b/code/modules/reagents/chemistry/recipes/toxins.dm @@ -83,12 +83,6 @@ results = list(/datum/reagent/toxin/anacea = 3) required_reagents = list(/datum/reagent/medicine/haloperidol = 1, /datum/reagent/impedrezene = 1, /datum/reagent/uranium/radium = 1) -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/datum/chemical_reaction/mimesbane - results = list(/datum/reagent/toxin/mimesbane = 3) - required_reagents = list(/datum/reagent/uranium/radium = 1, /datum/reagent/toxin/mutetoxin = 1, /datum/reagent/consumable/nothing = 1) -// [CELADON-ADD] - /datum/chemical_reaction/bonehurtingjuice results = list(/datum/reagent/toxin/bonehurtingjuice = 5) required_reagents = list(/datum/reagent/toxin/mutagen = 1, /datum/reagent/toxin/itching_powder = 3, /datum/reagent/consumable/milk = 1) diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index dad6102f605a..5be90cb435c7 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -38,10 +38,7 @@ /obj/item/reagent_containers/blood/random/Initialize() icon_state = "bloodpack" - // [CELADON-EDIT] - CELADON_ETHEREAL_FIX - // blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-", "L", "E", "Coolant") // CELADON-EDIT - ORIGINAL - blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-", "L", "Coolant") - // [/CELADON-EDIT] + blood_type = pick("A+", "A-", "B+", "B-", "O+", "O-", "L", "Coolant") // [CELADON-EDIT] - CELADON_ETHEREAL_FIX return ..() /obj/item/reagent_containers/blood/APlus diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm index a206eb26dc70..39d345eb3010 100644 --- a/code/modules/reagents/reagent_containers/borghydro.dm +++ b/code/modules/reagents/reagent_containers/borghydro.dm @@ -148,20 +148,6 @@ Borg Hypospray reagent_ids = list (/datum/reagent/toxin/acid/fluacid, /datum/reagent/toxin/mutetoxin, /datum/reagent/toxin/cyanide, /datum/reagent/toxin/sodium_thiopental, /datum/reagent/toxin/heparin, /datum/reagent/toxin/lexorin) accepts_reagent_upgrades = FALSE -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/reagent_containers/borghypo/clown - name = "laughter injector" - desc = "Keeps the crew happy and productive!" - reagent_ids = list(/datum/reagent/consumable/laughter) - accepts_reagent_upgrades = FALSE - -/obj/item/reagent_containers/borghypo/clown/hacked - name = "laughter injector" - desc = "Keeps the crew so happy they don't work!" - reagent_ids = list(/datum/reagent/consumable/superlaughter) - accepts_reagent_upgrades = FALSE -// [CELADON-ADD] - /obj/item/reagent_containers/borghypo/syndicate name = "syndicate cyborg hypospray" desc = "An experimental piece of Syndicate technology used to produce powerful restorative nanites used to very quickly restore injuries of all types. Also metabolizes potassium iodide, for radiation poisoning, and morphine, for offense." diff --git a/code/modules/reagents/reagent_containers/bottle.dm b/code/modules/reagents/reagent_containers/bottle.dm index dfd5d021325a..2ae35007b365 100644 --- a/code/modules/reagents/reagent_containers/bottle.dm +++ b/code/modules/reagents/reagent_containers/bottle.dm @@ -214,13 +214,6 @@ desc = "A small bottle. Contains an untested viral culture in synthblood medium." spawned_disease = /datum/disease/advance/random -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/reagent_containers/glass/bottle/pierrot_throat - name = "Pierrot's Throat culture bottle" - desc = "A small bottle. Contains H0NI<42 virion culture in synthblood medium." - spawned_disease = /datum/disease/pierrot_throat -// [CELADON-ADD]S - /obj/item/reagent_containers/glass/bottle/cold name = "Rhinovirus culture bottle" desc = "A small bottle. Contains XY-rhinovirus culture in synthblood medium." diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index f1375a496247..c8fb8420ad46 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -221,13 +221,13 @@ name = "oculine autoinjector" desc = "An autoinjector designed to promote the repair of the cornea and the retina after damage." list_reagents = list(/datum/reagent/medicine/inacusiate = 10) - custom_price = 70 // [CELADON-EDIT] - OUTPOST_MED_BALANCE // custom_price = 100 + custom_price = 100 /obj/item/reagent_containers/hypospray/medipen/inacusiate name = "inacusiate autoinjector" desc = "An autoinjector designed to rapidly restore hearing after acute hearing loss." list_reagents = list(/datum/reagent/medicine/inacusiate = 10) - custom_price = 70 // [CELADON-EDIT] - OUTPOST_MED_BALANCE // custom_price = 100 + custom_price = 100 /obj/item/reagent_containers/hypospray/medipen/atropine name = "atropine autoinjector" @@ -236,7 +236,7 @@ item_state = "atropen" base_icon_state = "atropen" list_reagents = list(/datum/reagent/medicine/atropine = 10) - custom_price = 75 // [CELADON-EDIT] - OUTPOST_MED_BALANCE // custom_price = 100 + custom_price = 100 /obj/item/reagent_containers/hypospray/medipen/pumpup name = "maintenance pump-up" @@ -270,7 +270,6 @@ list_reagents = list(/datum/reagent/medicine/diphenhydramine = 10) volume = 10 amount_per_transfer_from_this = 10 - custom_price = 50 // [CELADON-ADD] - OUTPOST_MED_BALANCE /obj/item/reagent_containers/hypospray/medipen/psicodine name = "psicodine injector" @@ -307,7 +306,6 @@ icon_state = "morphen" base_icon_state = "morphen" item_state = "morphen" - custom_price = 50 // [CELADON-ADD] - OUTPOST_MED_BALANCE /obj/item/reagent_containers/hypospray/medipen/mannitol name = "mannitol injector" @@ -318,7 +316,6 @@ icon_state = "brainpen" base_icon_state = "brainpen" item_state = "brainpen" - custom_price = 70 // [CELADON-ADD] - OUTPOST_MED_BALANCE /obj/item/reagent_containers/hypospray/medipen/neurine name = "neurine injector" @@ -329,7 +326,6 @@ icon_state = "brainpen" base_icon_state = "brainpen" item_state = "brainpen" - custom_price = 70 // [CELADON-ADD] - OUTPOST_MED_BALANCE /obj/item/reagent_containers/hypospray/medipen/badstop name = "Stabilizer injector" diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 76ac6e93918e..e9f050a68b33 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -109,23 +109,18 @@ other types of metals and chemistry for reagents). pixel_y = base_pixel_y + rand(-5, 5) if(design_name) name = jointext(list(disk_name, design_name), " - ") - // [CELADON-EDIT] - CELADON_FIXES - Инициализируем строго индексный массив слотов 1..max_blueprints без ассоциативных ключей - // ORIGINAL (commented): - // if(length(starting_blueprints)) - // for(var/design in starting_blueprints) - // blueprints += new design() - // CELADON: фиксированная длина + раскладка стартовых чертежей по индексам - var/list/fixed_blueprints = list() - fixed_blueprints.len = max_blueprints - var/idx = 1 - if(length(starting_blueprints)) - for(var/path in starting_blueprints) - if(idx > max_blueprints) - break - fixed_blueprints[idx] = new path() - idx++ - blueprints = fixed_blueprints - // [/CELADON-EDIT] + // CELADON: фиксированная длина + раскладка стартовых чертежей по индексам + var/list/fixed_blueprints = list() + fixed_blueprints.len = max_blueprints + var/idx = 1 + if(length(starting_blueprints)) + for(var/path in starting_blueprints) + if(idx > max_blueprints) + break + fixed_blueprints[idx] = new path() + idx++ + blueprints = fixed_blueprints + // [/CELADON-EDIT] /obj/item/disk/design_disk/adv name = "Advanced Component Design Disk" diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm index 77ca2b232fa7..c59131e2283f 100644 --- a/code/modules/research/designs/biogenerator_designs.dm +++ b/code/modules/research/designs/biogenerator_designs.dm @@ -186,7 +186,6 @@ build_path = /obj/item/clothing/accessory/holster category = list("initial","Organic Materials") -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS /datum/design/rngplant name = "SYNTHESIS" id = "rngplant" @@ -194,7 +193,6 @@ materials = list(/datum/material/biomass= 2000) build_path = /obj/effect/spawner/random/food_or_drink/seed category = list("initial","LIFESEED_2.0") -// [CELADON-ADD] /datum/design/genesis name = "GENESIS" diff --git a/code/modules/research/designs/limbgrower_designs.dm b/code/modules/research/designs/limbgrower_designs.dm index 17dfa0bd8c7b..a57d31117c8d 100644 --- a/code/modules/research/designs/limbgrower_designs.dm +++ b/code/modules/research/designs/limbgrower_designs.dm @@ -8,10 +8,7 @@ build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/synthflesh = 25) build_path = /obj/item/bodypart/l_arm - // [CELADON-EDIT] - TAJARA, CELADON_RIOL - // category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL) // CELADON-EDIT - ORIGINAL - category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL,SPECIES_TAJARA,SPECIES_RIOL) - // [/CELADON-EDIT] + category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL) /datum/design/rightarm name = "Right Arm" @@ -19,10 +16,7 @@ build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/synthflesh = 25) build_path = /obj/item/bodypart/r_arm - // [CELADON-EDIT] - TAJARA, CELADON_RIOL - // category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL) // CELADON-EDIT - ORIGINAL - category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL,SPECIES_TAJARA,SPECIES_RIOL) - // [/CELADON-EDIT] + category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL) /datum/design/leftleg name = "Left Leg" @@ -30,10 +24,7 @@ build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/synthflesh = 25) build_path = /obj/item/bodypart/leg/left - // [CELADON-EDIT] - TAJARA, CELADON_RIOL - // category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL) // CELADON-EDIT - ORIGINAL - category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL,SPECIES_TAJARA,SPECIES_RIOL) - // [/CELADON-EDIT] + category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL) /datum/design/rightleg name = "Right Leg" @@ -41,10 +32,7 @@ build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/synthflesh = 25) build_path = /obj/item/bodypart/leg/right - // [CELADON-EDIT] - TAJARA, CELADON_RIOL - // category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL) // CELADON-EDIT - ORIGINAL - category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL,SPECIES_TAJARA,SPECIES_RIOL) - // [/CELADON-EDIT] + category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL) /datum/design/digitigrade/leftleg name = "Digitigrade Left Leg" diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm index c416ef755ba6..43783d26b045 100644 --- a/code/modules/research/designs/mecha_designs.dm +++ b/code/modules/research/designs/mecha_designs.dm @@ -80,29 +80,6 @@ category = list("Exosuit Modules") departmental_flags = DEPARTMENTAL_FLAG_SECURITY -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/datum/design/board/honker_main - name = "\"H.O.N.K\" Central Control module" - desc = "Allows for the construction of a \"H.O.N.K\" Central Control module." - id = "honker_main" - build_path = /obj/item/circuitboard/mecha/honker/main - category = list("Exosuit Modules") - -/datum/design/board/honker_peri - name = "\"H.O.N.K\" Peripherals Control module" - desc = "Allows for the construction of a \"H.O.N.K\" Peripheral Control module." - id = "honker_peri" - build_path = /obj/item/circuitboard/mecha/honker/peripherals - category = list("Exosuit Modules") - -/datum/design/board/honker_targ - name = "\"H.O.N.K\" Weapons & Targeting Control module" - desc = "Allows for the construction of a \"H.O.N.K\" Weapons & Targeting Control module." - id = "honker_targ" - build_path = /obj/item/circuitboard/mecha/honker/targeting - category = list("Exosuit Modules") -// [CELADON-ADD] - /datum/design/board/phazon_main name = "\"Phazon\" Central Control module" desc = "Allows for the construction of a \"Phazon\" Central Control module." diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index ec2e8769762d..9a0c97b5f9e7 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -430,72 +430,6 @@ construction_time = 600 category = list("Durand") -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -//H.O.N.K -/datum/design/honk_chassis - name = "Exosuit Chassis (\"H.O.N.K\")" - id = "honk_chassis" - build_type = MECHFAB - build_path = /obj/item/mecha_parts/chassis/honker - materials = list(/datum/material/iron=20000) - construction_time = 100 - category = list("H.O.N.K") - -/datum/design/honk_torso - name = "Exosuit Torso (\"H.O.N.K\")" - id = "honk_torso" - build_type = MECHFAB - build_path = /obj/item/mecha_parts/part/honker_torso - materials = list(/datum/material/iron=20000,/datum/material/glass = 10000,/datum/material/hellstone=10000) - construction_time = 300 - category = list("H.O.N.K") - -/datum/design/honk_head - name = "Exosuit Head (\"H.O.N.K\")" - id = "honk_head" - build_type = MECHFAB - build_path = /obj/item/mecha_parts/part/honker_head - materials = list(/datum/material/iron=10000,/datum/material/glass = 5000,/datum/material/hellstone=5000) - construction_time = 200 - category = list("H.O.N.K") - -/datum/design/honk_left_arm - name = "Exosuit Left Arm (\"H.O.N.K\")" - id = "honk_left_arm" - build_type = MECHFAB - build_path = /obj/item/mecha_parts/part/honker_left_arm - materials = list(/datum/material/iron=15000,/datum/material/hellstone=5000) - construction_time = 200 - category = list("H.O.N.K") - -/datum/design/honk_right_arm - name = "Exosuit Right Arm (\"H.O.N.K\")" - id = "honk_right_arm" - build_type = MECHFAB - build_path = /obj/item/mecha_parts/part/honker_right_arm - materials = list(/datum/material/iron=15000,/datum/material/hellstone=5000) - construction_time = 200 - category = list("H.O.N.K") - -/datum/design/honk_left_leg - name = "Exosuit Left Leg (\"H.O.N.K\")" - id = "honk_left_leg" - build_type = MECHFAB - build_path =/obj/item/mecha_parts/part/honker_left_leg - materials = list(/datum/material/iron=20000,/datum/material/hellstone=5000) - construction_time = 200 - category = list("H.O.N.K") - -/datum/design/honk_right_leg - name = "Exosuit Right Leg (\"H.O.N.K\")" - id = "honk_right_leg" - build_type = MECHFAB - build_path = /obj/item/mecha_parts/part/honker_right_leg - materials = list(/datum/material/iron=20000,/datum/material/hellstone=5000) - construction_time = 200 - category = list("H.O.N.K") -// [CELADON-ADD] - //Phazon /datum/design/phazon_chassis name = "Exosuit Chassis (\"Phazon\")" @@ -729,17 +663,6 @@ construction_time = 120 category = list("Cyborg Upgrade Modules") -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/datum/design/borg_transform_clown - name = "Cyborg Upgrade (Clown Module)" - id = "borg_transform_clown" - build_type = MECHFAB - build_path = /obj/item/borg/upgrade/transform/clown - materials = list(/datum/material/iron = 15000, /datum/material/glass = 15000, /datum/material/hellstone = 1000) - construction_time = 120 - category = list("Cyborg Upgrade Modules") -// [CELADON-ADD]S - /datum/design/borg_upgrade_selfrepair name = "Cyborg Upgrade (Self-repair)" id = "borg_upgrade_selfrepair" diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index dc4c3390b1af..97f48b2d2d2d 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -181,18 +181,6 @@ category = list("Medical Designs") departmental_flags = DEPARTMENTAL_FLAG_MEDICAL -// [CELADON-ADD] - OMNI_TOOLS -/datum/design/healthanalyzer_range - name = "Long-range Health Analyzer" - desc = "A handheld body scanner capable of accurately detecting the patient's vital signs from a distance." - id = "healthanalyzer_ranged" - build_path = /obj/item/healthanalyzer/ranged - build_type = PROTOLATHE - materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500, /datum/material/silver = 2000) - category = list("Medical Designs") - departmental_flags = DEPARTMENTAL_FLAG_MEDICAL -// [/CELADON-ADD] - /datum/design/laserscalpel name = "Laser Scalpel" desc = "A laser scalpel used for precise cutting." diff --git a/code/modules/research/designs/mining_designs.dm b/code/modules/research/designs/mining_designs.dm index 01c05a9c4ad9..b6c7e6f487e3 100644 --- a/code/modules/research/designs/mining_designs.dm +++ b/code/modules/research/designs/mining_designs.dm @@ -37,17 +37,7 @@ id = "plasmacutter" build_type = PROTOLATHE materials = list(/datum/material/iron = 1500, /datum/material/glass = 500, /datum/material/plasma = 400) - build_path = /obj/item/gun/energy/plasmacutter - category = list("Mining Designs") - departmental_flags = DEPARTMENTAL_FLAG_CARGO - -/datum/design/plasmacutter_adv - name = "Advanced Plasma Cutter" - desc = "It's an advanced plasma cutter, oh my god." - id = "plasmacutter_adv" - build_type = PROTOLATHE - materials = list(/datum/material/iron = 3000, /datum/material/glass = 1000, /datum/material/plasma = 2000, /datum/material/gold = 500) - build_path = /obj/item/gun/energy/plasmacutter/adv + build_path = /obj/item/plasmacutter category = list("Mining Designs") departmental_flags = DEPARTMENTAL_FLAG_CARGO diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 20caa3691994..7c85aeb25d75 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -83,7 +83,7 @@ id = "tele_shield" build_type = PROTOLATHE materials = list(/datum/material/iron = 4000, /datum/material/glass = 4000, /datum/material/silver = 300, /datum/material/titanium = 200) - build_path = /obj/item/shield/riot/tele + build_path = /obj/item/shield/tele category = list("Weapons") /datum/design/beamrifle diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index b0e4de5f8205..298694a7b36f 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -69,12 +69,8 @@ starting_node = TRUE display_name = "Basic Medical Equipment" description = "Basic medical tools and equipment." -// [CELADON-EDIT] - OMNI_TOOLS -// design_ids = list("cybernetic_liver", "cybernetic_heart", "cybernetic_lungs", "cybernetic_stomach", "scalpel", "circular_saw", "bonesetter", "surgical_tape", "surgicaldrill", "retractor", "cautery", "hemostat", -// "syringe", "plumbing_rcd", "beaker", "large_beaker", "xlarge_beaker", "dropper", "defibmountdefault", "portable_chem_mixer") design_ids = list("cybernetic_liver", "cybernetic_heart", "cybernetic_lungs", "cybernetic_stomach", "scalpel", "circular_saw", "bonesetter", "surgical_tape", "surgicaldrill", "retractor", "cautery", "hemostat", - "syringe", "healthanalyzer", "plumbing_rcd", "beaker", "large_beaker", "xlarge_beaker", "dropper", "defibmountdefault", "portable_chem_mixer") -// [/CELADON-EDIT] + "syringe", "plumbing_rcd", "beaker", "large_beaker", "xlarge_beaker", "dropper", "defibmountdefault", "portable_chem_mixer") /////////////////////////Biotech///////////////////////// /datum/techweb_node/biotech @@ -82,10 +78,7 @@ display_name = "Biological Technology" description = "What makes us tick." //the MC, silly! prereq_ids = list("base") -// [CELADON-EDIT] - OMNI_TOOLS -// design_ids = list("sleeper", "chem_heater", "chem_master", "pandemic", "defibrillator", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "medigel", "med_spray_bottle", "chem_pack", "blood_pack", "medical_kiosk", "crewpinpointerprox", "medipen_refiller", "prosthetic_l_arm", "prosthetic_r_arm", "prosthetic_l_leg", "prosthetic_r_leg", "kprosthetic_l_arm", "kprosthetic_r_arm", "kprosthetic_l_leg", "kprosthetic_r_leg", "vprosthetic_l_arm", "vprosthetic_r_arm", "vprosthetic_l_leg", "vprosthetic_r_leg", "lprosthetic_l_arm", "lprosthetic_r_arm", "lprosthetic_l_leg", "lprosthetic_r_leg") - design_ids = list("sleeper", "chem_heater", "chem_master", "pandemic", "defibrillator", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer_ranged", "med_spray_bottle", "chem_pack", "blood_pack", "medical_kiosk", "crewpinpointerprox", "medipen_refiller", "prosthetic_l_arm", "prosthetic_r_arm", "prosthetic_l_leg", "prosthetic_r_leg", "kprosthetic_l_arm", "kprosthetic_r_arm", "kprosthetic_l_leg", "kprosthetic_r_leg", "vprosthetic_l_arm", "vprosthetic_r_arm", "vprosthetic_l_leg", "vprosthetic_r_leg", "lprosthetic_l_arm", "lprosthetic_r_arm", "lprosthetic_l_leg", "lprosthetic_r_leg") -// [/CELADON-EDIT] + design_ids = list("sleeper", "chem_heater", "chem_master", "pandemic", "defibrillator", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "med_spray_bottle", "chem_pack", "blood_pack", "medical_kiosk", "crewpinpointerprox", "medipen_refiller", "prosthetic_l_arm", "prosthetic_r_arm", "prosthetic_l_leg", "prosthetic_r_leg", "kprosthetic_l_arm", "kprosthetic_r_arm", "kprosthetic_l_leg", "kprosthetic_r_leg", "vprosthetic_l_arm", "vprosthetic_r_arm", "vprosthetic_l_leg", "vprosthetic_r_leg", "lprosthetic_l_arm", "lprosthetic_r_arm", "lprosthetic_l_leg", "lprosthetic_r_leg") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -314,7 +307,7 @@ display_name = "Advanced Plasma Research" description = "Research on how to fully exploit the power of plasma." prereq_ids = list("basic_plasma") - design_ids = list("mech_plasma_cutter","plasmacutter_adv") + design_ids = list("mech_plasma_cutter") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -455,10 +448,7 @@ display_name = "Computerized Recordkeeping" description = "Organized record databases and how they're used." prereq_ids = list("comptech") -// [CELADON-ADD] - RETURN_SURVEY -// design_ids = list("secdata", "med_data", "prisonmanage", "vendor", "automated_announcement", "design_disk_elite") - design_ids = list("secdata", "med_data", "prisonmanage", "vendor", "automated_announcement", "survey-handheld-rnd-exp", "design_disk_elite") -// [/CELADON-ADD] + design_ids = list("secdata", "med_data", "prisonmanage", "vendor", "automated_announcement", "design_disk_elite") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000) export_price = 2000 @@ -605,10 +595,7 @@ id = "exp_tools" display_name = "Experimental Tools" description = "Highly advanced tools." -// [CELADON-EDIT] - OMNI_TOOLS -// design_ids = list("jawsoflife", "handdrill", "laserscalpel", "mechanicalpinches", "searingtool") - design_ids = list("jawsoflife", "handdrill", "tricorder", "adv_gas_analazyer", "laserscalpel", "mechanicalpinches", "searingtool") -// [/CELADON-EDIT] + design_ids = list("jawsoflife", "handdrill", "laserscalpel", "mechanicalpinches", "searingtool") prereq_ids = list("adv_engi") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -1137,12 +1124,8 @@ description = "Research the technology required to create and use basic shuttles." prereq_ids = list("bluespace_travel", "adv_engi") design_ids = list("engine_plasma", "engine_fire", "engine_ion", "engine_heater", "engine_fire_heater", "engine_smes", "shuttle_helm", "rapid_shuttle_designator") - // [CELADON-EDIT] - CELADON_BALANCE - Трогаем РнД - // research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000) // CELADON-EDIT - ORIGINAL - // export_price = 5000 // CELADON-EDIT - ORIGINAL - research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) - export_price = 2500 - // [/CELADON-EDIT] + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000) + export_price = 5000 /datum/techweb_node/exp_shuttle_tech id = "exp_shuttle" diff --git a/code/modules/ruins/objects_and_mobs/ash_walker_den.dm b/code/modules/ruins/objects_and_mobs/ash_walker_den.dm index e76363d27cd4..18449f26ad4c 100644 --- a/code/modules/ruins/objects_and_mobs/ash_walker_den.dm +++ b/code/modules/ruins/objects_and_mobs/ash_walker_den.dm @@ -40,9 +40,6 @@ /obj/structure/lavaland/ash_walker/deconstruct(disassembled) new /obj/item/assembly/signaler/anomaly (get_step(loc, pick(GLOB.alldirs))) - // [CELADON-ADD] - RETURN_CONTENT - new /obj/effect/collapse(loc) - // [/CELADON-ADD] return ..() /obj/structure/lavaland/ash_walker/process(seconds_per_tick) diff --git a/code/modules/ruins/spaceruin_code/forgottenship.dm b/code/modules/ruins/spaceruin_code/forgottenship.dm deleted file mode 100644 index 24ca72b8087b..000000000000 --- a/code/modules/ruins/spaceruin_code/forgottenship.dm +++ /dev/null @@ -1,90 +0,0 @@ -// forgottenship ruin -GLOBAL_VAR_INIT(fscpassword, generate_password()) - -/proc/generate_password() - return "[pick(GLOB.phonetic_alphabet)] [rand(1000,9999)]" - -/////////// forgottenship objects - -/obj/machinery/door/password/voice/sfc - name = "Voice-activated Vault door" - desc = "You'll need special syndicate passcode to open this one." -/obj/machinery/door/password/voice/sfc/Initialize(mapload) - . = ..() - password = "[GLOB.fscpassword]" - -/////////// forgottenship lore - -/obj/item/paper/fluff/ruins/forgottenship/password - name = "Old pamphlet" - -/obj/item/paper/fluff/ruins/forgottenship/password/Initialize(mapload) - . = ..() - default_raw_text = "Welcome to most advanced cruiser owned by Cyber Sun Industries!
    You might notice, that this cruiser is equipped with 12 prototype laser turrets making any hostile boarding attempts futile.
    Other facilities built on the ship are: Simple atmospheric system, Camera system with built-in X-ray visors and Safety module, enabling emergency engines in case of... you know, emergency.
    Emergency system will bring you to nearest syndicate pod containing everything needed for human life.

    In case of emergency, you must remember the pod-door activation code - [GLOB.fscpassword]

    Cyber Sun Industries (C) 2484." - icon_state = "paper_words" - item_state = "paper" - -/obj/item/paper/fluff/ruins/forgottenship/powerissues - name = "Power issues" - default_raw_text = "Welcome to battle cruiser SCSBC-12!
    Our most advanced systems allow you to fly in space and never worry about power issues!
    However, emergencies occur, and in case of power loss, you must enable emergency generator using uranium as fuel and enable turrets in bridge afterwards.

    REMEMBER! CYBERSUN INDUSTRIES ARE NOT RESPONSIBLE FOR YOUR DEATH OR SHIP LOSS WHEN TURRETS ARE DISABLED!

    Cyber Sun Industries (C) 2484." - -/obj/item/paper/fluff/ruins/forgottenship/missionobj - name = "Mission objectives" - default_raw_text = "Greetings, operatives. You are assigned to SCSBC-12(Syndicate Cyber Sun Battle Cruiser 12) to protect our high-ranking officer while he is on his way to next outpost. While you are travelling, he is the captain of this ship and you must obey his orders.

    Remember, disobeying high-ranking officer orders is a reason for termination." - -/////////// forgottenship items -/obj/item/disk/surgery/forgottenship - name = "Advanced Surgery Disk" - desc = "A disk that contains advanced surgery procedures, must be loaded into an Operating Console." - surgeries = list(/datum/surgery/advanced/lobotomy, /datum/surgery/advanced/bioware/vein_threading, /datum/surgery/advanced/bioware/nerve_splicing) - -/obj/structure/fluff/empty_sleeper/syndicate/captain - icon_state = "sleeper_s-open" - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - deconstructible = FALSE - -/obj/structure/fluff/empty_sleeper/syndicate/captain/ComponentInitialize() - . = ..() - AddComponent(/datum/component/gps, "Old Encrypted Signal") - -/////////// AI Laws - -/obj/item/aiModule/core/full/cybersun - name = "'Cybersun' Core AI Module" - law_id = "cybersun" - -/datum/ai_laws/cybersun - name = "Cybersun" - id = "cybersun" - // [CELADON-EDIT] - CELADON_QOL - Перевод законов ИИ - // inherent = list("You may not injure Cybersun operatives or, through inaction, allow Cybersun operatives to come to harm.",\ // CELADON-EDIT -> ORIGINAL - // "The Cybersun ship is a restricted area for anyone except Cybersun operatives.",\ // CELADON-EDIT -> ORIGINAL - // "The Cybersun Captain can designate new Operatives as long as they belong to another Syndicate faction that isn't hostile towards Cybersun.",\ // CELADON-EDIT -> ORIGINAL - // "You must follow orders given by the Cybersun Captain or crewmembers of the Cybersun Ship as long as it doesn't conflict with the Captain's orders or your laws.",\ // CELADON-EDIT -> ORIGINAL - // "Enemies of Cybersun are to be executed on spot. Those who aren't hostile must be detained and contained in the designated prison area as prisoners.") // CELADON-EDIT -> ORIGINAL - inherent = list("Вы не имеете права причинять вред сотрудникам Cybersun или своим бездействием допускать причинение вреда сотрудникам Cybersun.",\ - "Судно Cybersun является запретной зоной для всех, кроме сотрудников Cybersun.",\ - "Капитан Cybersun может назначать новых оперативников, если они принадлежат к другой фракции Синдиката, которая не враждебна Cybersun.",\ - "Вы должны следовать приказам капитана Cybersun или членов экипажа судна Cybersun, если это не противоречит приказам капитана или вашим законам.",\ - "Враги Cybersun должны быть казнены на месте. Те, кто не настроен враждебно, должны быть задержаны и помещены в отведенную для этого тюремную зону в качестве заключенных.") - // [/CELADON-EDIT] - -/////////// forgottenship areas - -/area/ruin/space/has_grav/syndicate_forgotten_ship - name = "Syndicate Forgotten Ship" - icon_state = "syndie-ship" - ambientsounds = list('sound/ambience/ambidanger.ogg', 'sound/ambience/ambidanger2.ogg', 'sound/ambience/ambigen9.ogg', 'sound/ambience/ambigen10.ogg') - -/area/ruin/space/has_grav/syndicate_forgotten_cargopod - name = "Syndicate Forgotten Cargo pod" - icon_state = "syndie-ship" - ambientsounds = list('sound/ambience/ambigen4.ogg', 'sound/ambience/signal.ogg') - -/area/ruin/space/has_grav/powered/syndicate_forgotten_vault - name = "Syndicate Forgotten Vault" - icon_state = "syndie-ship" - ambientsounds = list('sound/ambience/ambitech2.ogg', 'sound/ambience/ambitech3.ogg') - area_flags = NOTELEPORT | UNIQUE_AREA - - //Cybersun hardsuit diff --git a/code/modules/ruins/wasteplanet_ruin_code/recycling.dm b/code/modules/ruins/wasteplanet_ruin_code/recycling.dm new file mode 100644 index 000000000000..7f1a6af5806c --- /dev/null +++ b/code/modules/ruins/wasteplanet_ruin_code/recycling.dm @@ -0,0 +1,36 @@ +/obj/effect/mob_spawn/human/corpse/ramzi/commando/pristine + name = "Ramzi Clique Pristine Commando" + id_job = "Operative" + outfit = /datum/outfit/ramzi/commando/pristine + mob_gender = FEMALE + +/datum/outfit/ramzi/commando/pristine + name = "Ramzi Clique Pristine Commando" + head = /obj/item/clothing/head/helmet/space/hardsuit/syndi + suit = /obj/item/clothing/suit/space/hardsuit/syndi + +/mob/living/simple_animal/hostile/human/ramzi/ranged/space/pristine/hydra + name = "Lieutenant Ophilia" + desc = "An imposing deserter from the Gorlex Marauders turned pirate. Dressed in Ruby-Red that shines in your eyes, almost too brightly to see the raising of her assault rifle." + rapid = 5 + icon_state = "syndicate_stormtrooper_shotgun" + casingtype = /obj/item/ammo_casing/a556_42 + l_hand = /obj/item/gun/ballistic/automatic/assault/hydra + projectilesound = 'sound/weapons/gun/rifle/hydra.ogg' + mob_spawner = /obj/effect/mob_spawn/human/corpse/ramzi/commando/pristine + armor_base = /obj/item/clothing/suit/space/hardsuit/syndi + + minimum_distance = 2 + rapid_fire_delay = 6 + retreat_distance = 2 + shoot_point_blank = TRUE + vision_range = 12 + aggro_vision_range = 14 + weapon_drop_chance = 100 + +/mob/living/simple_animal/hostile/human/ramzi/melee/atmos_tech + name = "Ramzi Clique Atmospheric Technician" + desc = "An imposing deserter from the Gorlex Marauders turned pirate. This one has a axe, and appears very very unhappy to see you." + l_hand = /obj/item/melee/axe/fire + weapon_drop_chance = 100 + diff --git a/code/modules/spells/spell_types/voice_of_god.dm b/code/modules/spells/spell_types/voice_of_god.dm index 123cb5de9329..a626af004573 100644 --- a/code/modules/spells/spell_types/voice_of_god.dm +++ b/code/modules/spells/spell_types/voice_of_god.dm @@ -35,13 +35,3 @@ playsound(get_turf(user), speech_sound, 300, TRUE, 5) var/cooldown = voice_of_god(uppertext(command), user, spans, base_multiplier = power_mod) charge_max = (cooldown * cooldown_mod) - -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/effect/proc_holder/spell/voice_of_god/clown - name = "Voice of Clown" - desc = "Speak with an incredibly funny voice, startling people into obeying you for a brief moment." - power_mod = 0.1 - cooldown_mod = 0.5 - spans = list("clown") - speech_sound = 'sound/spookoween/scary_horn2.ogg' -// [/CELADON-ADD] diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index edb193d49734..f7cc9ec22482 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -15,6 +15,9 @@ ///List of bodytypes flags, important for fitting clothing. If you'd like to know if a bodypart is organic, please use is_organic_limb() var/bodytype = BODYTYPE_HUMANOID | BODYTYPE_ORGANIC + ///The types of wounds this bodypart is capable of receiving. + var/biological_state = BIO_STANDARD_UNJOINTED + ///Whether the clothing being worn forces the limb into being "squished" to plantigrade/standard humanoid compliance var/plantigrade_forced = FALSE ///Whether the limb is husked @@ -120,6 +123,8 @@ var/list/scars /// Our current stored wound damage multiplier var/wound_damage_multiplier = 1 + /// The amount of damage on this limb that cannot be healed until the wounds causing it are fixed + var/wound_integrity_loss = 0 /// This number is subtracted from all wound rolls on this bodypart, higher numbers mean more defense, negative means easier to wound var/wound_resistance = 0 @@ -142,6 +147,16 @@ //band-aid for blood overlays & other external overlays until they get refactored var/stored_icon_state + /// In the case we dont have dismemberable features, or literally cant get wounds, we will use this percent to determine when we can be dismembered. + /// Compared to our ABSOLUTE maximum. Stored in decimal; 0.8 = 80%. + var/hp_percent_to_dismemberable = 0.8 + /// If true, we will use [hp_percent_to_dismemberable] even if we are dismemberable via wounds. Useful for things with extreme wound resistance. + var/use_alternate_dismemberment_calc_even_if_mangleable = FALSE + /// If false, no wound that can be applied to us can mangle our exterior. Used for determining if we should use [hp_percent_to_dismemberable] instead of normal dismemberment. + var/any_existing_wound_can_mangle_our_exterior + /// If false, no wound that can be applied to us can mangle our interior. Used for determining if we should use [hp_percent_to_dismemberable] instead of normal dismemberment. + var/any_existing_wound_can_mangle_our_interior + /obj/item/bodypart/Initialize() . = ..() if(dynamic_rename) @@ -238,12 +253,14 @@ I.forceMove(T) ///since organs aren't actually stored in the bodypart themselves while attached to a person, we have to query the owner for what we should have -/obj/item/bodypart/proc/get_organs() +/obj/item/bodypart/proc/get_organs(required_status) if(!owner) return FALSE var/list/bodypart_organs for(var/obj/item/organ/organ_check as anything in owner.internal_organs) //internal organs inside the dismembered limb are dropped. + if(required_status && required_status != organ_check.status) + continue if(check_zone(organ_check.zone) == body_zone) LAZYADD(bodypart_organs, organ_check) // this way if we don't have any, it'll just return null @@ -260,7 +277,7 @@ //Applies brute and burn damage to the organ. Returns 1 if the damage-icon states changed at all. //Damage will not exceed max_damage using this proc //Cannot apply negative damage -/obj/item/bodypart/proc/receive_damage(brute = 0, burn = 0, stamina = 0, blocked = 0, updating_health = TRUE, required_status = null, wound_bonus = 0, bare_wound_bonus = 0, sharpness = SHARP_NONE, attack_direction = null) +/obj/item/bodypart/proc/receive_damage(brute = 0, burn = 0, stamina = 0, blocked = 0, updating_health = TRUE, required_status = null, wound_bonus = 0, bare_wound_bonus = 0, sharpness = SHARP_NONE, attack_direction = null, ignore_reduction = 0) var/hit_percent = (100-blocked)/100 if((!brute && !burn && !stamina) || hit_percent <= 0) return FALSE @@ -275,8 +292,8 @@ brute = round(max(brute * dmg_mlt, 0),DAMAGE_PRECISION) burn = round(max(burn * dmg_mlt, 0),DAMAGE_PRECISION) stamina = round(max(stamina * dmg_mlt, 0),DAMAGE_PRECISION) - brute = max(0, brute - brute_reduction) - burn = max(0, burn - burn_reduction) + brute = max(0, brute - max(brute_reduction - ignore_reduction, 0)) + burn = max(0, burn - max(burn_reduction - ignore_reduction, 0)) if(!brute && !burn && !stamina) return FALSE @@ -288,69 +305,8 @@ if(ALIEN_BODYPART,LARVA_BODYPART) //aliens take double burn //nothing can burn with so much snowflake code around burn *= 2 - //START WOUND HANDLING - - // what kind of wounds we're gonna roll for, take the greater between brute and burn, then if it's brute, we subdivide based on sharpness - var/wounding_type = (brute > burn ? WOUND_BLUNT : WOUND_BURN) - var/wounding_dmg = max(brute, burn) - - var/mangled_state = get_mangled_state() - var/bio_state = owner.get_biological_state() - var/easy_dismember = HAS_TRAIT(owner, TRAIT_EASYDISMEMBER) // if we have easydismember, we don't reduce damage when redirecting damage to different types (slashing weapons on mangled/skinless limbs attack at 100% instead of 50%) - - if(wounding_type == WOUND_BLUNT && sharpness) - wounding_type = (sharpness == SHARP_EDGED ? WOUND_SLASH : WOUND_PIERCE) - - //Handling for bone only/flesh only(none right now)/flesh and bone targets - switch(bio_state) - // if we're bone only, all cutting attacks go straight to the bone - if(BIO_JUST_BONE) - if(wounding_type == WOUND_SLASH) - wounding_type = WOUND_BLUNT - wounding_dmg *= (easy_dismember ? 1 : 0.6) - else if(wounding_type == WOUND_PIERCE) - wounding_type = WOUND_BLUNT - wounding_dmg *= (easy_dismember ? 1 : 0.75) - if((mangled_state & BODYPART_MANGLED_BONE) && try_dismember(wounding_type, wounding_dmg, wound_bonus, bare_wound_bonus)) - return - // if we're flesh only, all blunt attacks become weakened slashes in terms of wound damage - if(BIO_JUST_FLESH) - if(wounding_type == WOUND_BLUNT) - wounding_type = WOUND_SLASH - wounding_dmg *= (easy_dismember ? 1 : 0.3) - if((mangled_state & BODYPART_MANGLED_FLESH) && try_dismember(wounding_type, wounding_dmg, wound_bonus, bare_wound_bonus)) - return - // standard humanoids - if(BIO_FLESH_BONE) - // If the bodypart is not mangled, and its a limb, we have a chance we hit a muscle - if(mangled_state != BODYPART_MANGLED_BOTH && body_zone != BODY_ZONE_CHEST && body_zone != BODY_ZONE_HEAD && prob(MUSCLE_WOUND_CHANCE)) - wounding_type = WOUND_MUSCLE - // if we've already mangled the skin (critical slash or piercing wound), then the bone is exposed, and we can damage it with sharp weapons at a reduced rate - // So a big sharp weapon is still all you need to destroy a limb - else if(mangled_state == BODYPART_MANGLED_FLESH && sharpness) - playsound(src, "sound/effects/wounds/crackandbleed.ogg", 100) - if(wounding_type == WOUND_SLASH && !easy_dismember) - wounding_dmg *= 0.4 - if(wounding_type == WOUND_PIERCE && !easy_dismember) - wounding_dmg *= 0.6 - wounding_type = WOUND_BLUNT - else if(mangled_state == BODYPART_MANGLED_BOTH && try_dismember(wounding_type, wounding_dmg, wound_bonus, bare_wound_bonus)) - return - - // now we have our wounding_type and are ready to carry on with wounds and dealing the actual damage - if(owner && wounding_dmg >= WOUND_MINIMUM_DAMAGE && wound_bonus != CANT_WOUND) - if(current_gauze) - current_gauze.take_damage() - if(current_splint) - current_splint.take_damage() - check_wounding(wounding_type, wounding_dmg, wound_bonus, bare_wound_bonus, attack_direction) - - for(var/datum/wound/iter_wound as anything in wounds) - iter_wound.receive_damage(wounding_type, wounding_dmg, wound_bonus) - - /* - // END WOUND HANDLING - */ + if(wound_roll(brute, burn, wound_bonus, bare_wound_bonus, sharpness, attack_direction)) + return // stop here if dismembered //back to our regularly scheduled program, we now actually apply damage if there's room below limb damage cap var/can_inflict = max_damage - get_damage() @@ -381,46 +337,49 @@ . = TRUE return update_bodypart_damage_state() || . -/// Allows us to roll for and apply a wound without actually dealing damage. Used for aggregate wounding power with pellet clouds -/obj/item/bodypart/proc/painless_wound_roll(wounding_type, phantom_wounding_dmg, wound_bonus, bare_wound_bonus, sharpness=SHARP_NONE) - if(!owner || phantom_wounding_dmg <= WOUND_MINIMUM_DAMAGE || wound_bonus == CANT_WOUND) +/// Rolls for wounds, returning TRUE if the limb was dismembered. +/obj/item/bodypart/proc/wound_roll(brute, burn, wound_bonus = 0, bare_wound_bonus = 0, sharpness=SHARP_NONE, attack_direction, no_dismember = FALSE) + if(wound_bonus == CANT_WOUND) return - var/mangled_state = get_mangled_state() - var/bio_state = owner.get_biological_state() - var/easy_dismember = HAS_TRAIT(owner, TRAIT_EASYDISMEMBER) // if we have easydismember, we don't reduce damage when redirecting damage to different types (slashing weapons on mangled/skinless limbs attack at 100% instead of 50%) - - if(wounding_type == WOUND_BLUNT && sharpness) - wounding_type = (sharpness == SHARP_EDGED ? WOUND_SLASH : WOUND_PIERCE) - - //Handling for bone only/flesh only(none right now)/flesh and bone targets - switch(bio_state) - // if we're bone only, all cutting attacks go straight to the bone - if(BIO_JUST_BONE) - if(wounding_type == WOUND_SLASH) - wounding_type = WOUND_BLUNT - phantom_wounding_dmg *= (easy_dismember ? 1 : 0.6) - else if(wounding_type == WOUND_PIERCE) - wounding_type = WOUND_BLUNT - phantom_wounding_dmg *= (easy_dismember ? 1 : 0.75) - if((mangled_state & BODYPART_MANGLED_BONE) && try_dismember(wounding_type, phantom_wounding_dmg, wound_bonus, bare_wound_bonus)) - return - // note that there's no handling for BIO_JUST_FLESH since we don't have any that are that right now (slimepeople maybe someday) - // standard humanoids - if(BIO_FLESH_BONE) - // if we've already mangled the skin (critical slash or piercing wound), then the bone is exposed, and we can damage it with sharp weapons at a reduced rate - // So a big sharp weapon is still all you need to destroy a limb - if(mangled_state == BODYPART_MANGLED_FLESH && sharpness) - playsound(src, "sound/effects/wounds/crackandbleed.ogg", 100) - if(wounding_type == WOUND_SLASH && !easy_dismember) - phantom_wounding_dmg *= 0.6 // edged weapons pass along 60% of their wounding damage to the bone since the power is spread out over a larger area - if(wounding_type == WOUND_PIERCE && !easy_dismember) - phantom_wounding_dmg *= 0.75 // piercing weapons pass along 75% of their wounding damage to the bone since it's more concentrated - wounding_type = WOUND_BLUNT - else if(mangled_state == BODYPART_MANGLED_BOTH && try_dismember(wounding_type, phantom_wounding_dmg, wound_bonus, bare_wound_bonus)) - return + // if we have easydismember, we don't reduce damage when redirecting damage to different types (slashing weapons on mangled/skinless limbs attack at 100% instead of 50%) + var/easy_dismember = HAS_TRAIT(owner, TRAIT_EASYDISMEMBER) || HAS_TRAIT(src, TRAIT_EASYDISMEMBER) + + /// Associated list of each wound type and how much effective wounding damage can be done of that type. + var/list/wounding_types + switch(sharpness) + if(SHARP_NONE) + if(brute) + LAZYSET(wounding_types, WOUND_BLUNT, brute) + if(SHARP_EDGED) + LAZYSET(wounding_types, WOUND_SLASH, brute + burn) + if(brute) + LAZYSET(wounding_types, WOUND_BLUNT, brute * (easy_dismember ? 1 : 0.6)) + if(SHARP_POINTY) + LAZYSET(wounding_types, WOUND_PIERCE, brute + burn) + if(brute) + LAZYSET(wounding_types, WOUND_BLUNT, brute * (easy_dismember ? 1 : 0.6)) + if(burn) + LAZYSET(wounding_types, WOUND_BURN, burn) - check_wounding(wounding_type, phantom_wounding_dmg, wound_bonus, bare_wound_bonus) + if(!no_dismember && (dismemberable_by_wound() || dismemberable_by_total_damage()) && try_dismember(wounding_types, wound_bonus, bare_wound_bonus)) + return TRUE + + var/highest_damage = 0 + // now we have our wounding_type and are ready to carry on with wounds and dealing the actual damage + if(LAZYLEN(wounding_types)) + if(current_gauze) + current_gauze.take_damage() + if(current_splint) + current_splint.take_damage() + for(var/wound_type in wounding_types) + if(!owner) + break + highest_damage = max(highest_damage, wounding_types[wound_type]) + check_wounding(wounding_types, wound_bonus, bare_wound_bonus, attack_direction, no_dismember) + + for(var/datum/wound/iter_wound as anything in wounds) + iter_wound.receive_damage(wounding_types, highest_damage, wound_bonus) /** * check_wounding() is where we handle rolling for, selecting, and applying a wound if we meet the criteria @@ -434,76 +393,198 @@ * * wound_bonus- The wound_bonus of an attack * * bare_wound_bonus- The bare_wound_bonus of an attack */ -/obj/item/bodypart/proc/check_wounding(woundtype, damage, wound_bonus, bare_wound_bonus, attack_direction) +/obj/item/bodypart/proc/check_wounding(list/wounding_types, wound_bonus, bare_wound_bonus, attack_direction, no_dismember = FALSE) + var/damage_mult = 1 + // note that these are fed into an exponent, so these are magnified if(HAS_TRAIT(owner, TRAIT_EASILY_WOUNDED)) - damage *= 1.5 - else - damage = min(damage, WOUND_MAX_CONSIDERED_DAMAGE) + damage_mult *= 1.5 if(HAS_TRAIT(owner,TRAIT_HARDLY_WOUNDED)) - damage *= 0.85 + damage_mult *= 0.85 if(HAS_TRAIT(owner, TRAIT_VERY_HARDLY_WOUNDED)) - damage *= 0.6 + damage_mult *= 0.6 if(HAS_TRAIT(owner, TRAIT_EASYDISMEMBER)) - damage *= 1.1 - - var/base_roll = rand(1, round(damage ** WOUND_DAMAGE_EXPONENT)) - var/injury_roll = base_roll - injury_roll += check_woundings_mods(woundtype, damage, wound_bonus, bare_wound_bonus) - var/list/wounds_checking = GLOB.global_wound_types[woundtype] - - if(injury_roll > WOUND_DISMEMBER_OUTRIGHT_THRESH && prob(get_damage() / max_damage * 100)) + damage_mult *= 1.1 + + var/wounding_mods = check_woundings_mods(wound_bonus, bare_wound_bonus) + var/highest_roll = 0 + var/highest_wound_type + var/list/wound_rolls = list() + for(var/wounding_type in wounding_types) + for(var/wounding_series in SSwounds.types_to_series[wounding_type]) + var/injury_roll = rand(1, round(min(wounding_types[wounding_type], WOUND_MAX_CONSIDERED_DAMAGE) * damage_mult) ** WOUND_DAMAGE_EXPONENT) + wounding_mods + if(injury_roll > highest_roll) + highest_wound_type = wounding_type + highest_roll = highest_roll + wound_rolls[wounding_series] = max(injury_roll, wound_rolls[wounding_series]) + if(!wound_rolls.len) + CRASH("check_wounding called with a null wounding_types list!") + if(!no_dismember && highest_roll > WOUND_DISMEMBER_OUTRIGHT_THRESH && prob(get_damage() / max_damage * 100)) var/datum/wound/loss/dismembering = new - dismembering.apply_dismember(src, woundtype, outright = TRUE, attack_direction = attack_direction) + dismembering.apply_dismember(src, highest_wound_type, outright = TRUE, attack_direction = attack_direction) return + var/list/series_wounding_mods = check_series_wounding_mods() + + var/list/datum/wound/possible_wounds = list() + for(var/datum/wound/wound_type as anything in SSwounds.pregen_data) + var/datum/wound_pregen_data/pregen_data = SSwounds.pregen_data[wound_type] + if(pregen_data.can_be_applied_to(src, wounding_types, random_roll = TRUE)) + possible_wounds[wound_type] = pregen_data.get_weight(src, wounding_types, attack_direction) + // quick re-check to see if bare_wound_bonus applies, for the benefit of log_wound(), see about getting the check from check_woundings_mods() somehow if(ishuman(owner)) var/mob/living/carbon/human/human_wearer = owner var/list/clothing = human_wearer.get_clothing_on_part(src) for(var/obj/item/clothing/clothes_check as anything in clothing) // unlike normal armor checks, we tabluate these piece-by-piece manually so we can also pass on appropriate damage the clothing's limbs if necessary - if(clothes_check.armor.getRating("wound")) + if(clothes_check.armor.getRating(WOUND)) bare_wound_bonus = 0 break - //cycle through the wounds of the relevant category from the most severe down - for(var/PW in wounds_checking) - var/datum/wound/possible_wound = PW + for(var/datum/wound/iterated_path as anything in possible_wounds) + for(var/datum/wound/existing_wound as anything in wounds) + if(iterated_path == existing_wound.type) + possible_wounds -= iterated_path + break // breaks out of the nested loop + + var/datum/wound_pregen_data/pregen_data = SSwounds.pregen_data[iterated_path] + var/specific_injury_roll = (wound_rolls[pregen_data.wound_series] + series_wounding_mods[pregen_data.wound_series]) + if(pregen_data.get_threshold_for(src, attack_direction) > specific_injury_roll) + possible_wounds -= iterated_path + continue + + if(pregen_data.compete_for_wounding) + for(var/datum/wound/other_path as anything in possible_wounds) + if(other_path == iterated_path) + continue + if(iterated_path::severity == other_path::severity && pregen_data.overpower_wounds_of_even_severity) + possible_wounds -= other_path + continue + else if(pregen_data.competition_mode == WOUND_COMPETITION_OVERPOWER_LESSERS) + if(iterated_path::severity > other_path::severity) + possible_wounds -= other_path + continue + else if(pregen_data.competition_mode == WOUND_COMPETITION_OVERPOWER_GREATERS) + if(iterated_path::severity < other_path::severity) + possible_wounds -= other_path + continue + + var/list/datum/wound/applied_wounds + while(length(possible_wounds)) + var/datum/wound/possible_wound = pick_weight(possible_wounds) + var/datum/wound_pregen_data/possible_pregen_data = SSwounds.pregen_data[possible_wound] + possible_wounds -= possible_wound + + // this makes muscle wounds show up less consistently at the same time as others + if(LAZYLEN(applied_wounds) && !prob(possible_wounds[possible_wound])) + continue + var/datum/wound/replaced_wound for(var/i in wounds) var/datum/wound/existing_wound = i - if(existing_wound.type in wounds_checking) - if(existing_wound.severity >= initial(possible_wound.severity)) - return + var/datum/wound_pregen_data/existing_pregen_data = SSwounds.pregen_data[existing_wound.type] + if(existing_pregen_data.wound_series == possible_pregen_data.wound_series) + if(existing_wound.severity >= possible_wound::severity) + continue else replaced_wound = existing_wound - if(initial(possible_wound.threshold_minimum) < injury_roll) - var/datum/wound/new_wound - if(replaced_wound) - new_wound = replaced_wound.replace_wound(possible_wound, attack_direction = attack_direction) - log_wound(owner, new_wound, damage, wound_bonus, bare_wound_bonus, base_roll) // dismembering wounds are logged in the apply_wound() for loss wounds since they delete themselves immediately, these will be immediately returned - else - new_wound = new possible_wound - new_wound.apply_wound(src, attack_direction = attack_direction) - log_wound(owner, new_wound, damage, wound_bonus, bare_wound_bonus, base_roll) - return new_wound + // if we get through this whole loop without continuing, we found our winner + var/datum/wound/new_wound = new possible_wound + if(replaced_wound) + new_wound = replaced_wound.replace_wound(new_wound, attack_direction = attack_direction) + else + new_wound.apply_wound(src, attack_direction = attack_direction) + LAZYADD(applied_wounds, new_wound) + + if(LAZYLEN(applied_wounds)) // dismembering wounds are logged in the apply_wound() for loss wounds since they delete themselves immediately, these will be immediately returned + log_wound(owner, src, applied_wounds, wounding_types, wound_bonus, bare_wound_bonus, wound_rolls) + return applied_wounds // try forcing a specific wound, but only if there isn't already a wound of that severity or greater for that type on this bodypart -/obj/item/bodypart/proc/force_wound_upwards(specific_woundtype, smited = FALSE) - var/datum/wound/potential_wound = specific_woundtype +/obj/item/bodypart/proc/force_wound_upwards(datum/wound/potential_wound, smited = FALSE, wound_source) + SHOULD_NOT_OVERRIDE(TRUE) + + if (isnull(potential_wound)) + return + + var/datum/wound_pregen_data/pregen_data = SSwounds.pregen_data[potential_wound] for(var/datum/wound/existing_wound as anything in wounds) - if(existing_wound.wound_type == initial(potential_wound.wound_type)) - if(existing_wound.severity < initial(potential_wound.severity)) // we only try if the existing one is inferior to the one we're trying to force - existing_wound.replace_wound(potential_wound, smited) + var/datum/wound_pregen_data/existing_pregen_data = existing_wound.get_pregen_data() + if(existing_pregen_data.wound_series == pregen_data.wound_series) + if(existing_wound.severity < potential_wound::severity) // we only try if the existing one is inferior to the one we're trying to force + existing_wound.replace_wound(new potential_wound, smited) return var/datum/wound/new_wound = new potential_wound new_wound.apply_wound(src, smited = smited) + return new_wound + +/** + * A simple proc to force a type of wound onto this mob. If you just want to force a specific mainline (fractures, bleeding, etc.) wound, you only need to care about the first 3 args. + * + * Args: + * * wounding_type: The wounding_type, e.g. WOUND_BLUNT, WOUND_SLASH to force onto the mob. Can be a list. + * * obj/item/bodypart/limb: The limb we wil be applying the wound to. If null, a random bodypart will be picked. + * * min_severity: The minimum severity that will be considered. + * * max_severity: The maximum severity that will be considered. + * * severity_pick_mode: The "pick mode" to be used. See get_corresponding_wound_type's documentation + * * wound_source: The source of the wound to be applied. Nullable. + * + * For the rest of the args, refer to get_corresponding_wound_type(). + * + * Returns: + * A new wound instance if the application was successful, null otherwise. +*/ +/mob/living/carbon/proc/cause_wound_of_type_and_severity(wounding_type, obj/item/bodypart/limb, min_severity, max_severity = min_severity, severity_pick_mode = WOUND_PICK_HIGHEST_SEVERITY, wound_source) + if(isnull(limb)) + limb = pick(bodyparts) + + var/list/type_list = wounding_type + if(!islist(type_list)) + type_list = list(type_list) + + var/datum/wound/corresponding_typepath = SSwounds.get_corresponding_wound_type(type_list, limb, min_severity, max_severity, severity_pick_mode) + if(corresponding_typepath) + return limb.force_wound_upwards(corresponding_typepath, wound_source = wound_source) + +/// Limb is nullable, but picks a random one. Defers to limb.get_wound_threshold_of_wound_type, see it for documentation. +/mob/living/carbon/proc/get_wound_threshold_of_wound_type(wounding_type, severity, default, obj/item/bodypart/limb, wound_source) + if(isnull(limb)) + limb = pick(bodyparts) + + if(!limb) + return default + + return limb.get_wound_threshold_of_wound_type(wounding_type, severity, default, wound_source) + +/** + * A simple proc that gets the best wound to fit the criteria laid out, then returns its wound threshold. + * + * Args: + * * wounding_type: The wounding_type, e.g. WOUND_BLUNT, WOUND_SLASH to force onto the mob. Can be a list of wounding_types. + * * severity: The severity that will be considered. + * * return_value_if_no_wound: If no wound is found, we will return this instead. (It is reccomended to use named args for this one, as its unclear what it is without) + * * wound_source: The theoretical source of the wound. Nullable. + * + * Returns: + * return_value_if_no_wound if no wound is found - if one IS found, the wound threshold for that wound. + */ +/obj/item/bodypart/proc/get_wound_threshold_of_wound_type(wounding_type, severity, return_value_if_no_wound, wound_source) + var/list/type_list = wounding_type + if(!islist(type_list)) + type_list = list(type_list) + + var/datum/wound/wound_path = SSwounds.get_corresponding_wound_type(type_list, src, severity, duplicates_allowed = TRUE, care_about_existing_wounds = FALSE) + if(wound_path) + var/datum/wound_pregen_data/pregen_data = SSwounds.pregen_data[wound_path] + return pregen_data.get_threshold_for(src, damage_source = wound_source) + + return return_value_if_no_wound /** * check_wounding_mods() is where we handle the various modifiers of a wound roll @@ -515,7 +596,7 @@ * Arguments: * * It's the same ones on [/obj/item/bodypart/proc/receive_damage] */ -/obj/item/bodypart/proc/check_woundings_mods(wounding_type, damage, wound_bonus, bare_wound_bonus) +/obj/item/bodypart/proc/check_woundings_mods(wound_bonus, bare_wound_bonus) var/armor_ablation = 0 var/injury_mod = 0 @@ -532,28 +613,104 @@ injury_mod -= armor_ablation injury_mod += wound_bonus - for(var/datum/wound/W as anything in wounds) - if(W.wound_type == wounding_type) - injury_mod += W.threshold_penalty + for(var/datum/wound/wound as anything in wounds) + injury_mod += wound.threshold_penalty var/part_mod = -wound_resistance - if(get_damage(TRUE) >= max_damage) + if(bodypart_disabled >= max_damage) part_mod += disabled_wound_penalty injury_mod += part_mod return injury_mod +/// Returns a bitflag using ANATOMY_EXTERIOR or ANATOMY_INTERIOR. Used to determine if we as a whole have a interior or exterior biostate, or both. +/obj/item/bodypart/proc/get_bio_state_status() + SHOULD_BE_PURE(TRUE) + + var/bio_status = NONE + + for (var/state as anything in SSwounds.bio_state_anatomy) + var/flag = text2num(state) + if (!(biological_state & flag)) + continue + + var/value = SSwounds.bio_state_anatomy[state] + if (value & ANATOMY_EXTERIOR) + bio_status |= ANATOMY_EXTERIOR + if (value & ANATOMY_INTERIOR) + bio_status |= ANATOMY_INTERIOR + + if ((bio_status & ANATOMY_EXTERIOR_AND_INTERIOR) == ANATOMY_EXTERIOR_AND_INTERIOR) + break + + return bio_status + +/// Returns if our current mangling status allows us to be dismembered. Requires both no exterior/mangled exterior and no interior/mangled interior. +/obj/item/bodypart/proc/dismemberable_by_wound() + SHOULD_BE_PURE(TRUE) + + var/mangled_state = get_mangled_state() + + var/bio_status = get_bio_state_status() + + var/has_exterior = ((bio_status & ANATOMY_EXTERIOR)) + var/has_interior = ((bio_status & ANATOMY_INTERIOR)) + + var/exterior_ready_to_dismember = (!has_exterior || ((mangled_state & BODYPART_MANGLED_EXTERIOR))) + var/interior_ready_to_dismember = (!has_interior || ((mangled_state & BODYPART_MANGLED_INTERIOR))) + + return (exterior_ready_to_dismember && interior_ready_to_dismember) + +/// Returns TRUE if our total percent damage is more or equal to our dismemberable percentage, but FALSE if a wound can cause us to be dismembered. +/obj/item/bodypart/proc/dismemberable_by_total_damage() + + update_wound_theory() + + var/bio_status = get_bio_state_status() + + var/has_interior = ((bio_status & ANATOMY_INTERIOR)) + var/can_theoretically_be_dismembered_by_wound = (any_existing_wound_can_mangle_our_interior || (any_existing_wound_can_mangle_our_exterior && has_interior)) + + var/wound_dismemberable = dismemberable_by_wound() + var/ready_to_use_alternate_formula = (use_alternate_dismemberment_calc_even_if_mangleable || (!wound_dismemberable && !can_theoretically_be_dismembered_by_wound)) + + if (ready_to_use_alternate_formula) + var/percent_to_total_max = (get_damage() / max_damage) + if (percent_to_total_max >= hp_percent_to_dismemberable) + return TRUE + + return FALSE + +/// Updates our "can be theoretically dismembered by wounds" variables by iterating through all wound static data. +/obj/item/bodypart/proc/update_wound_theory() + // We put this here so we dont increase init time by doing this all at once on initialization + // Effectively, we "lazy load" + if (isnull(any_existing_wound_can_mangle_our_interior) || isnull(any_existing_wound_can_mangle_our_exterior)) + any_existing_wound_can_mangle_our_interior = FALSE + any_existing_wound_can_mangle_our_exterior = FALSE + for (var/datum/wound/wound_type as anything in SSwounds.pregen_data) + var/datum/wound_pregen_data/pregen_data = SSwounds.pregen_data[wound_type] + if (!pregen_data.can_be_applied_to(src, random_roll = TRUE)) // we only consider randoms because non-randoms are usually really specific + continue + if (initial(pregen_data.wound_path_to_generate.wound_flags) & MANGLES_EXTERIOR) + any_existing_wound_can_mangle_our_exterior = TRUE + if (initial(pregen_data.wound_path_to_generate.wound_flags) & MANGLES_INTERIOR) + any_existing_wound_can_mangle_our_interior = TRUE + + if (any_existing_wound_can_mangle_our_interior && any_existing_wound_can_mangle_our_exterior) + break + //Heals brute and burn damage for the organ. Returns 1 if the damage-icon states changed at all. -//Damage cannot go below zero. +//Damage cannot go below zero, or min_damage. //Cannot remove negative damage (i.e. apply damage) /obj/item/bodypart/proc/heal_damage(brute, burn, stamina, required_status, updating_health = TRUE) if(required_status && !(bodytype & required_status)) //So we can only heal certain kinds of limbs, ie robotic vs organic. return if(brute) - set_brute_dam(round(max(brute_dam - brute, 0), DAMAGE_PRECISION)) + set_brute_dam(round(max(brute_dam - brute, wound_integrity_loss - burn_dam, 0), DAMAGE_PRECISION)) if(burn) - set_burn_dam(round(max(burn_dam - burn, 0), DAMAGE_PRECISION)) + set_burn_dam(round(max(burn_dam - burn, wound_integrity_loss - brute_dam, 0), DAMAGE_PRECISION)) if(stamina) set_stamina_dam(round(max(stamina_dam - stamina, 0), DAMAGE_PRECISION)) if(owner) @@ -1002,6 +1159,19 @@ drop_organs() qdel(src) +/// Should return an assoc list of (wound_series -> penalty). Will be used in determining series-specific penalties for wounding. +/obj/item/bodypart/proc/check_series_wounding_mods() + RETURN_TYPE(/list) + + var/list/series_mods = list() + + for (var/datum/wound/iterated_wound as anything in wounds) + var/datum/wound_pregen_data/pregen_data = SSwounds.pregen_data[iterated_wound.type] + + series_mods[pregen_data.wound_series] += iterated_wound.series_threshold_penalty + + return series_mods + /// Get whatever wound of the given type is currently attached to this limb, if any /obj/item/bodypart/proc/get_wound_type(checking_type) if(isnull(wounds)) @@ -1021,12 +1191,15 @@ */ /obj/item/bodypart/proc/update_wounds(replaced = FALSE) var/dam_mul = 1 //initial(wound_damage_multiplier) + var/integrity_mul = 0 -// we can (normally) only have one wound per type, but remember there's multiple types (smites like :B:loodless can generate multiple cuts on a limb) + // we can (normally) only have one wound per type, but remember there's multiple types (smites like :B:loodless can generate multiple cuts on a limb) for(var/datum/wound/iter_wound as anything in wounds) dam_mul *= iter_wound.damage_mulitplier_penalty + integrity_mul += iter_wound.limb_integrity_penalty wound_damage_multiplier = dam_mul + wound_integrity_loss = min(max_damage, WOUND_MAX_INTEGRITY_CONSIDERED) * integrity_mul /** * Calculates how much blood this limb is losing per life tick @@ -1106,6 +1279,11 @@ #undef BLEED_OVERLAY_MED #undef BLEED_OVERLAY_GUSH +/obj/item/bodypart/proc/can_bleed() + SHOULD_BE_PURE(TRUE) + + return ((biological_state & BIO_BLOODED) && (!owner || !HAS_TRAIT(owner, TRAIT_NOBLOOD))) + /** * apply_gauze() is used to- well, apply gauze to a bodypart * @@ -1136,3 +1314,23 @@ return current_splint = new new_splint.splint_type(src) new_splint.use(1) + +/* NOTE: it makes absolutely NO sense for wires to be "external," it should likely be renamed to hard/soft materials but i'm too lazy to do that right now */ + +/// Returns the generic description of our BIO_EXTERNAL feature(s), prioritizing certain ones over others. Returns error on failure. +/obj/item/bodypart/proc/get_external_description() + if (biological_state & BIO_FLESH) + return "flesh" + if (biological_state & BIO_WIRED) + return "wiring" + + return "error" + +/// Returns the generic description of our BIO_INTERNAL feature(s), prioritizing certain ones over others. Returns error on failure. +/obj/item/bodypart/proc/get_internal_description() + if (biological_state & BIO_BONE) + return "bone" + if (biological_state & BIO_METAL) + return "metal" + + return "error" diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 9aaea11e6726..e182f2ae68da 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -1,36 +1,41 @@ /obj/item/bodypart/proc/can_dismember() + if(owner && HAS_TRAIT(owner, TRAIT_NODISMEMBER)) + return FALSE return dismemberable //Dismember a limb -/obj/item/bodypart/proc/dismember(dam_type = BRUTE, silent=TRUE) +/obj/item/bodypart/proc/dismember(dam_type = BRUTE, silent=TRUE, wounding_type) if(!owner || !dismemberable) return FALSE - var/mob/living/carbon/C = owner - if(C.status_flags & GODMODE) + var/mob/living/carbon/limb_owner = owner + if(limb_owner.status_flags & GODMODE) return FALSE - if(HAS_TRAIT(C, TRAIT_NODISMEMBER)) + if(HAS_TRAIT(limb_owner, TRAIT_NODISMEMBER)) return FALSE - var/obj/item/bodypart/affecting = C.get_bodypart(BODY_ZONE_CHEST) + var/obj/item/bodypart/affecting = limb_owner.get_bodypart(BODY_ZONE_CHEST) affecting.receive_damage(clamp(brute_dam/2 * affecting.body_damage_coeff, 15, 50), clamp(burn_dam/2 * affecting.body_damage_coeff, 0, 50), wound_bonus=CANT_WOUND) //Damage the chest based on limb's existing damage if(!silent) - C.visible_message(span_danger("[C]'s [name] sails off in a bloody arc!")) + limb_owner.visible_message(span_danger("[limb_owner]'s [name] sails off in a bloody arc!")) - if(C.stat <= SOFT_CRIT)//No more screaming while unconsious + if(limb_owner.stat <= SOFT_CRIT)//No more screaming while unconsious if(IS_ORGANIC_LIMB(affecting))//Chest is a good indicator for if a carbon is robotic in nature or not. - if(!HAS_TRAIT(C, TRAIT_ANALGESIA)) //and do we actually feel pain? - INVOKE_ASYNC(C, TYPE_PROC_REF(/mob, emote), "scream") + if(!HAS_TRAIT(limb_owner, TRAIT_ANALGESIA)) //and do we actually feel pain? + INVOKE_ASYNC(limb_owner, TYPE_PROC_REF(/mob, emote), "scream") - playsound(get_turf(C), 'sound/effects/wounds/dismember.ogg', 80, TRUE) - SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "dismembered", /datum/mood_event/dismembered) + playsound(get_turf(limb_owner), 'sound/effects/wounds/dismember.ogg', 80, TRUE) + SEND_SIGNAL(limb_owner, COMSIG_ADD_MOOD_EVENT, "dismembered", /datum/mood_event/dismembered) + + if(wounding_type) + LAZYSET(limb_owner.body_zone_dismembered_by, body_zone, wounding_type) drop_limb() - C.update_equipment_speed_mods() // Update in case speed affecting item unequipped by dismemberment - var/turf/location = C.loc - if(istype(location)) - C.add_splatter_floor(location) + limb_owner.update_equipment_speed_mods() // Update in case speed affecting item unequipped by dismemberment + var/turf/location = limb_owner.loc + if(wounding_type != WOUND_BURN && istype(location) && can_bleed()) + limb_owner.add_splatter_floor(location) if(QDELETED(src)) //Could have dropped into lava/explosion/chasm/whatever return TRUE @@ -38,8 +43,9 @@ burn() return TRUE - add_mob_blood(C) - C.bleed(rand(20, 40)) + if(can_bleed()) + add_mob_blood(limb_owner) + limb_owner.bleed(rand(20, 40)) var/direction = pick(GLOB.cardinals) var/t_range = rand(2,max(throw_range/2, 2)) @@ -56,27 +62,27 @@ return TRUE -/obj/item/bodypart/chest/dismember() +/obj/item/bodypart/chest/dismember(dam_type = BRUTE, silent = TRUE, wound_type) if(!owner) return FALSE - var/mob/living/carbon/C = owner + var/mob/living/carbon/chest_owner = owner if(!dismemberable) return FALSE - if(HAS_TRAIT(C, TRAIT_NODISMEMBER)) + if(HAS_TRAIT(chest_owner, TRAIT_NODISMEMBER)) return FALSE . = list() - var/turf/T = get_turf(C) - C.add_splatter_floor(T) - playsound(get_turf(C), 'sound/misc/splort.ogg', 80, TRUE) - for(var/obj/item/organ/O as anything in C.internal_organs) + if(wound_type != WOUND_BURN && isturf(chest_owner.loc) && can_bleed()) + chest_owner.add_splatter_floor(chest_owner.loc) + playsound(get_turf(chest_owner), 'sound/misc/splort.ogg', 80, TRUE) + for(var/obj/item/organ/O as anything in chest_owner.internal_organs) var/org_zone = check_zone(O.zone) if(org_zone != BODY_ZONE_CHEST) continue - O.Remove(C) - O.forceMove(T) + O.Remove(chest_owner) + O.forceMove(chest_owner.loc) . += O if(cavity_item) - cavity_item.forceMove(T) + cavity_item.forceMove(chest_owner.loc) . += cavity_item cavity_item = null @@ -149,23 +155,15 @@ forceMove(Tsec) -/** - * get_mangled_state() is relevant for flesh and bone bodyparts, and returns whether this bodypart has mangled skin, mangled bone, or both (or neither i guess) - * - * Dismemberment for flesh and bone requires the victim to have the skin on their bodypart destroyed (either a critical cut or piercing wound), and at least a hairline fracture - * (severe bone), at which point we can start rolling for dismembering. The attack must also deal at least 10 damage, and must be a brute attack of some kind (sorry for now, cakehat, maybe later) - * - * Returns: BODYPART_MANGLED_NONE if we're fine, BODYPART_MANGLED_FLESH if our skin is broken, BODYPART_MANGLED_BONE if our bone is broken, or BODYPART_MANGLED_BOTH if both are broken and we're up for dismembering - */ +/// Returns which of this bodypart's biological states have been sufficiently mangled. /obj/item/bodypart/proc/get_mangled_state() - . = BODYPART_MANGLED_NONE - - for(var/i in wounds) - var/datum/wound/iter_wound = i - if((iter_wound.wound_flags & MANGLES_BONE)) - . |= BODYPART_MANGLED_BONE - if((iter_wound.wound_flags & MANGLES_FLESH)) - . |= BODYPART_MANGLED_FLESH + var/mangled_states = NONE + for(var/datum/wound/iter_wound as anything in wounds) + if((iter_wound.wound_flags & MANGLES_INTERIOR)) + mangled_states |= BODYPART_MANGLED_INTERIOR + if((iter_wound.wound_flags & MANGLES_EXTERIOR)) + mangled_states |= BODYPART_MANGLED_EXTERIOR + return mangled_states /** * try_dismember() is used, once we've confirmed that a flesh and bone bodypart has both the skin and bone mangled, to actually roll for it @@ -175,20 +173,29 @@ * Lastly, we choose which kind of dismember we want based on the wounding type we hit with. Note we don't care about all the normal mods or armor for this * * Arguments: - * * wounding_type: Either WOUND_BLUNT, WOUND_SLASH, or WOUND_PIERCE, basically only matters for the dismember message - * * wounding_dmg: The damage of the strike that prompted this roll, higher damage = higher chance + * * wounding_types: An associated list of wounding types and how much effective damage each one has * * wound_bonus: Not actually used right now, but maybe someday * * bare_wound_bonus: ditto above */ -/obj/item/bodypart/proc/try_dismember(wounding_type, wounding_dmg, wound_bonus, bare_wound_bonus) +/obj/item/bodypart/proc/try_dismember(list/wounding_types, wound_bonus, bare_wound_bonus) + if(!can_dismember()) + return + + var/wounding_type + var/wounding_dmg = 0 + for(var/wound in wounding_types) + if(wounding_types[wound] > wounding_dmg) + wounding_dmg = wounding_types[wound] + wounding_type = wound + if(wounding_dmg < DISMEMBER_MINIMUM_DAMAGE) return var/base_chance = wounding_dmg base_chance += (get_damage() / max_damage * 50) // how much damage we dealt with this blow, + 50% of the damage percentage we already had on this bodypart - if(locate(/datum/wound/blunt/critical) in wounds) // we only require a severe bone break, but if there's a critical bone break, we'll add 15% more - base_chance += 15 + for(var/datum/wound/iterated_wound as anything in wounds) + base_chance += iterated_wound.get_dismember_chance_bonus(base_chance) if(prob(base_chance)) var/datum/wound/loss/dismembering = new @@ -327,6 +334,7 @@ moveToNullspace() set_owner(C) C.add_bodypart(src) + LAZYREMOVE(C.body_zone_dismembered_by, body_zone) if(held_index) if(held_index > C.hand_bodyparts.len) C.hand_bodyparts.len = held_index @@ -452,9 +460,9 @@ return /mob/living/carbon/regenerate_limb(limb_zone, noheal, robotic = FALSE) - var/obj/item/bodypart/L + var/obj/item/bodypart/limb if(get_bodypart(limb_zone)) return FALSE - L = new_body_part(limb_zone, robotic, FALSE) - L.replace_limb(src, TRUE, TRUE) + limb = new_body_part(limb_zone, robotic, FALSE) + limb.replace_limb(src, TRUE, TRUE) return TRUE diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm index 44618e94c056..93ba95941f38 100644 --- a/code/modules/surgery/bodyparts/head.dm +++ b/code/modules/surgery/bodyparts/head.dm @@ -6,6 +6,7 @@ max_damage = 200 body_zone = BODY_ZONE_HEAD body_part = HEAD + plaintext_zone = "head" w_class = WEIGHT_CLASS_BULKY //Quite a hefty load slowdown = 1 //Balancing measure throw_range = 2 //No head bowling @@ -134,22 +135,22 @@ tongue = null /obj/item/bodypart/head/update_limb(dropping_limb, mob/living/carbon/source, is_creating) - var/mob/living/carbon/C + var/mob/living/carbon/limb_owner if(source) - C = source + limb_owner = source else - C = owner + limb_owner = owner - real_name = C.real_name - if(HAS_TRAIT(C, TRAIT_HUSK)) + real_name = limb_owner.real_name + if(HAS_TRAIT(limb_owner, TRAIT_HUSK)) real_name = "Unknown" hairstyle = "Bald" facial_hairstyle = "Shaved" lip_style = null stored_lipstick_trait = null - else if(!animal_origin && ishuman(C)) - var/mob/living/carbon/human/H = C + else if(!animal_origin && ishuman(limb_owner)) + var/mob/living/carbon/human/H = limb_owner var/datum/species/S = H.dna.species //Facial hair diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/parts.dm index 58c594e0894d..92b7a0b654ee 100644 --- a/code/modules/surgery/bodyparts/parts.dm +++ b/code/modules/surgery/bodyparts/parts.dm @@ -28,7 +28,7 @@ if(cavity_item) cavity_item.forceMove(drop_location()) cavity_item = null - ..() + return ..() /obj/item/bodypart/chest/monkey icon = 'icons/mob/animal_parts.dmi' @@ -70,6 +70,7 @@ px_x = -6 px_y = 0 can_be_disabled = TRUE + biological_state = BIO_STANDARD_JOINTED /obj/item/bodypart/l_arm/set_owner(new_owner) . = ..() @@ -161,6 +162,7 @@ px_y = 0 max_stamina_damage = 50 can_be_disabled = TRUE + biological_state = BIO_STANDARD_JOINTED /obj/item/bodypart/r_arm/set_owner(new_owner) . = ..() @@ -234,6 +236,9 @@ max_damage = 100 animal_origin = ALIEN_BODYPART +/obj/item/bodypart/leg + biological_state = BIO_STANDARD_JOINTED + /obj/item/bodypart/leg/left name = "left leg" desc = "Some athletes prefer to tie their left shoelaces first for good \ diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm index 02ed7d02238a..773cc5bc9535 100644 --- a/code/modules/surgery/bodyparts/robot_bodyparts.dm +++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm @@ -23,6 +23,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + biological_state = (BIO_ROBOTIC|BIO_JOINTED) brute_reduction = 5 burn_reduction = 4 @@ -48,6 +49,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + biological_state = (BIO_ROBOTIC|BIO_JOINTED) brute_reduction = 5 burn_reduction = 4 @@ -73,6 +75,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + biological_state = (BIO_ROBOTIC|BIO_JOINTED) brute_reduction = 5 burn_reduction = 4 @@ -98,6 +101,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + biological_state = (BIO_ROBOTIC|BIO_JOINTED) brute_reduction = 5 burn_reduction = 4 @@ -122,6 +126,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + biological_state = BIO_ROBOTIC brute_reduction = 5 burn_reduction = 4 @@ -224,6 +229,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + biological_state = BIO_ROBOTIC brute_reduction = 5 burn_reduction = 4 diff --git a/code/modules/surgery/bodyparts/species_parts/ipc_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/ipc_bodyparts.dm index 832b7cb11a05..e3dca6be192d 100644 --- a/code/modules/surgery/bodyparts/species_parts/ipc_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/ipc_bodyparts.dm @@ -9,6 +9,8 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC | BODYTYPE_BOXHEAD + biological_state = BIO_ROBOTIC + light_brute_msg = "scratched" medium_brute_msg = "dented" heavy_brute_msg = "sheared" @@ -26,6 +28,7 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + biological_state = BIO_ROBOTIC light_brute_msg = "scratched" medium_brute_msg = "dented" @@ -43,6 +46,7 @@ dynamic_rename = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + biological_state = (BIO_ROBOTIC|BIO_JOINTED) light_brute_msg = "scratched" medium_brute_msg = "dented" @@ -60,6 +64,7 @@ dynamic_rename = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + biological_state = (BIO_ROBOTIC|BIO_JOINTED) light_brute_msg = "scratched" medium_brute_msg = "dented" @@ -77,6 +82,7 @@ dynamic_rename = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + biological_state = (BIO_ROBOTIC|BIO_JOINTED) light_brute_msg = "scratched" medium_brute_msg = "dented" @@ -94,6 +100,7 @@ dynamic_rename = FALSE should_draw_greyscale = FALSE bodytype = BODYTYPE_HUMANOID | BODYTYPE_ROBOTIC + biological_state = (BIO_ROBOTIC|BIO_JOINTED) light_brute_msg = "scratched" medium_brute_msg = "dented" diff --git a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm index 43c37f257c86..fa9806c51459 100644 --- a/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm @@ -49,27 +49,30 @@ should_draw_greyscale = FALSE /obj/item/bodypart/head/jelly - limb_id = "jelly" - // [CELADON-EDIT] - CELADON_SPECIES_CHANGES - // is_dimorphic = TRUE // CELADON-EDIT - ORIGINAL - is_dimorphic = FALSE - // [/CELADON-EDIT] + limb_id = SPECIES_JELLYPERSON + is_dimorphic = TRUE + biological_state = (BIO_FLESH|BIO_BLOODED) /obj/item/bodypart/chest/jelly - limb_id = "jelly" + limb_id = SPECIES_JELLYPERSON is_dimorphic = TRUE + biological_state = (BIO_FLESH|BIO_BLOODED) /obj/item/bodypart/l_arm/jelly - limb_id = "jelly" + limb_id = SPECIES_JELLYPERSON + biological_state = (BIO_FLESH|BIO_BLOODED) /obj/item/bodypart/r_arm/jelly - limb_id = "jelly" + limb_id = SPECIES_JELLYPERSON + biological_state = (BIO_FLESH|BIO_BLOODED) /obj/item/bodypart/leg/left/jelly - limb_id = "jelly" + limb_id = SPECIES_JELLYPERSON + biological_state = (BIO_FLESH|BIO_BLOODED) /obj/item/bodypart/leg/right/jelly - limb_id = "jelly" + limb_id = SPECIES_JELLYPERSON + biological_state = (BIO_FLESH|BIO_BLOODED) ///SLIME /obj/item/bodypart/head/slime @@ -203,24 +206,30 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE greyscale_eyes = FALSE + biological_state = BIO_BONE /obj/item/bodypart/chest/skeleton limb_id = "skeleton" is_dimorphic = FALSE should_draw_greyscale = FALSE + biological_state = BIO_BONE /obj/item/bodypart/l_arm/skeleton limb_id = "skeleton" should_draw_greyscale = FALSE + biological_state = (BIO_BONE|BIO_JOINTED) /obj/item/bodypart/r_arm/skeleton limb_id = "skeleton" should_draw_greyscale = FALSE + biological_state = (BIO_BONE|BIO_JOINTED) /obj/item/bodypart/leg/left/skeleton limb_id = "skeleton" should_draw_greyscale = FALSE + biological_state = (BIO_BONE|BIO_JOINTED) /obj/item/bodypart/leg/right/skeleton limb_id = "skeleton" should_draw_greyscale = FALSE + biological_state = (BIO_BONE|BIO_JOINTED) diff --git a/code/modules/surgery/bodyparts/species_parts/plasmaman_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/plasmaman_bodyparts.dm index 974075a31d4e..7b52ea7b623f 100644 --- a/code/modules/surgery/bodyparts/species_parts/plasmaman_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/plasmaman_bodyparts.dm @@ -4,29 +4,35 @@ is_dimorphic = FALSE should_draw_greyscale = FALSE greyscale_eyes = FALSE + biological_state = BIO_BONE /obj/item/bodypart/chest/plasmaman static_icon = 'icons/mob/species/plasmaman/bodyparts.dmi' limb_id = SPECIES_PLASMAMAN is_dimorphic = FALSE should_draw_greyscale = FALSE + biological_state = BIO_BONE /obj/item/bodypart/l_arm/plasmaman static_icon = 'icons/mob/species/plasmaman/bodyparts.dmi' limb_id = SPECIES_PLASMAMAN should_draw_greyscale = FALSE + biological_state = (BIO_BONE|BIO_JOINTED) /obj/item/bodypart/r_arm/plasmaman static_icon = 'icons/mob/species/plasmaman/bodyparts.dmi' limb_id = SPECIES_PLASMAMAN should_draw_greyscale = FALSE + biological_state = (BIO_BONE|BIO_JOINTED) /obj/item/bodypart/leg/left/plasmaman static_icon = 'icons/mob/species/plasmaman/bodyparts.dmi' limb_id = SPECIES_PLASMAMAN should_draw_greyscale = FALSE + biological_state = (BIO_BONE|BIO_JOINTED) /obj/item/bodypart/leg/right/plasmaman static_icon = 'icons/mob/species/plasmaman/bodyparts.dmi' limb_id = SPECIES_PLASMAMAN should_draw_greyscale = FALSE + biological_state = (BIO_BONE|BIO_JOINTED) diff --git a/code/modules/surgery/bodyparts/species_parts/rachnid_bodyparts.dm b/code/modules/surgery/bodyparts/species_parts/rachnid_bodyparts.dm index 00690d92e766..440b0b7236f6 100644 --- a/code/modules/surgery/bodyparts/species_parts/rachnid_bodyparts.dm +++ b/code/modules/surgery/bodyparts/species_parts/rachnid_bodyparts.dm @@ -3,6 +3,7 @@ limb_id = SPECIES_RACHNID should_draw_greyscale = FALSE overlay_icon_state = TRUE + biological_state = (BIO_FLESH|BIO_BLOODED) draw_eyes = FALSE /obj/item/bodypart/chest/rachnid @@ -10,26 +11,31 @@ limb_id = SPECIES_RACHNID is_dimorphic = FALSE should_draw_greyscale = FALSE + biological_state = (BIO_FLESH|BIO_BLOODED) overlay_icon_state = TRUE /obj/item/bodypart/l_arm/rachnid static_icon = 'icons/mob/species/rachnid/bodyparts.dmi' limb_id = SPECIES_RACHNID should_draw_greyscale = FALSE + biological_state = (BIO_FLESH|BIO_BLOODED|BIO_JOINTED) /obj/item/bodypart/r_arm/rachnid static_icon = 'icons/mob/species/rachnid/bodyparts.dmi' limb_id = SPECIES_RACHNID should_draw_greyscale = FALSE + biological_state = (BIO_FLESH|BIO_BLOODED|BIO_JOINTED) /obj/item/bodypart/leg/left/rachnid static_icon = 'icons/mob/species/rachnid/bodyparts.dmi' limb_id = SPECIES_RACHNID should_draw_greyscale = FALSE overlay_icon_state = TRUE + biological_state = (BIO_FLESH|BIO_BLOODED|BIO_JOINTED) /obj/item/bodypart/leg/right/rachnid static_icon = 'icons/mob/species/rachnid/bodyparts.dmi' limb_id = SPECIES_RACHNID should_draw_greyscale = FALSE overlay_icon_state = TRUE + biological_state = (BIO_FLESH|BIO_BLOODED|BIO_JOINTED) diff --git a/code/modules/surgery/bone_fractures.dm b/code/modules/surgery/bone_fractures.dm index 9bb3bf4d7be0..4e85b2b9bab0 100644 --- a/code/modules/surgery/bone_fractures.dm +++ b/code/modules/surgery/bone_fractures.dm @@ -7,7 +7,7 @@ target_mobtypes = list(/mob/living/carbon/human) possible_locs = list(BODY_ZONE_R_ARM,BODY_ZONE_L_ARM,BODY_ZONE_R_LEG,BODY_ZONE_L_LEG,BODY_ZONE_CHEST,BODY_ZONE_HEAD) requires_real_bodypart = TRUE - targetable_wound = /datum/wound/blunt/severe + targetable_wound = /datum/wound/blunt/bone/severe /datum/surgery/repair_hairline_fracture/can_start(mob/living/user, mob/living/carbon/target) if(..()) @@ -21,12 +21,9 @@ target_mobtypes = list(/mob/living/carbon/human) possible_locs = list(BODY_ZONE_R_ARM,BODY_ZONE_L_ARM,BODY_ZONE_R_LEG,BODY_ZONE_L_LEG,BODY_ZONE_CHEST,BODY_ZONE_HEAD) requires_real_bodypart = TRUE - targetable_wound = /datum/wound/blunt/critical + targetable_wound = /datum/wound/blunt/bone/critical -// [CELADON-EDIT] - FIXES_REPAIR_BONE_COMPOUND - исправляем неверное имя прока -// /datum/surgery/reset_compound_fracture/can_start(mob/living/user, mob/living/carbon/target) // ORIGINAL -/datum/surgery/repair_bone_compound/can_start(mob/living/user, mob/living/carbon/target) -// [/CELADON-EDIT] +/datum/surgery/repair_bone_compound/can_start(mob/living/user, mob/living/carbon/target) // [CELADON-EDIT] - FIXES_REPAIR_BONE_COMPOUND - исправляем неверное имя прока if(..()) var/obj/item/bodypart/targeted_bodypart = target.get_bodypart(user.zone_selected) return(targeted_bodypart.get_wound_type(targetable_wound)) @@ -56,7 +53,8 @@ "[user] successfully repairs the fracture in [target]'s [parse_zone(target_zone)] with [tool]!", "[user] successfully repairs the fracture in [target]'s [parse_zone(target_zone)]!") log_combat(user, target, "repaired a hairline fracture in", addition="INTENT: [uppertext(user.a_intent)]") - qdel(surgery.operated_wound) + surgery.operated_wound.attached_surgery = null + QDEL_NULL(surgery.operated_wound) else to_chat(user, "[target] has no hairline fracture there!") return ..() @@ -90,7 +88,8 @@ "[user] successfully repairs the fracture in [target]'s [parse_zone(target_zone)] with [tool]!", "[user] successfully repairs the fracture in [target]'s [parse_zone(target_zone)]!") log_combat(user, target, "repaired a compound fracture in", addition="INTENT: [uppertext(user.a_intent)]") - qdel(surgery.operated_wound) + surgery.operated_wound.attached_surgery = null + QDEL_NULL(surgery.operated_wound) else to_chat(user, "[target] has no compound fracture there!") return ..() @@ -129,7 +128,7 @@ "[user] successfully repairs the fracture in [target]'s [parse_zone(target_zone)] with [tool]!", "[user] successfully repairs the fracture in [target]'s [parse_zone(target_zone)]!") log_combat(user, target, "repaired a compound fracture in", addition="INTENT: [uppertext(user.a_intent)]") - qdel(surgery.operated_wound) + QDEL_NULL(surgery.operated_wound) else to_chat(user, "[target] has no compound fracture there!") return ..() diff --git a/code/modules/surgery/buckling_repair.dm b/code/modules/surgery/buckling_repair.dm new file mode 100644 index 000000000000..61c3befe2880 --- /dev/null +++ b/code/modules/surgery/buckling_repair.dm @@ -0,0 +1,38 @@ +/datum/surgery/repair_buckled_frame + name = "Repair Buckled Plating" + desc = "Replaces a buckled external plating on a robotic limb." + steps = list( + /datum/surgery_step/cut_plating, + /datum/surgery_step/add_plating, + /datum/surgery_step/weld_plating, + ) + requires_bodypart_type = BODYTYPE_ROBOTIC + self_operable = TRUE + targetable_wound = /datum/wound/blunt/buckling/severe + +/datum/surgery/repair_buckled_frame/can_start(mob/user, mob/living/patient) + if(!..()) + return FALSE + var/obj/item/bodypart/targeted_bodypart = patient.get_bodypart(user.zone_selected) + return !isnull(targeted_bodypart.get_wound_type(targetable_wound)) + +/datum/surgery/repair_sheared_frame + name = "Repair Sheared Frame" + desc = "Replaces the internal frame and external plating of a robotic limb." + steps = list( + /datum/surgery_step/cut_plating, + /datum/surgery_step/mechanic_unwrench, + /datum/surgery_step/replace_frame, + /datum/surgery_step/mechanic_wrench, + /datum/surgery_step/add_plating, + /datum/surgery_step/weld_plating, + ) + requires_bodypart_type = BODYTYPE_ROBOTIC + self_operable = TRUE + targetable_wound = /datum/wound/blunt/buckling/critical + +/datum/surgery/repair_sheared_frame/can_start(mob/user, mob/living/patient) + if(!..()) + return FALSE + var/obj/item/bodypart/targeted_bodypart = patient.get_bodypart(user.zone_selected) + return !isnull(targeted_bodypart.get_wound_type(targetable_wound)) diff --git a/code/modules/surgery/debride.dm b/code/modules/surgery/debride.dm index 69947b5b0949..2c1266ee39e8 100644 --- a/code/modules/surgery/debride.dm +++ b/code/modules/surgery/debride.dm @@ -8,14 +8,14 @@ target_mobtypes = list(/mob/living/carbon/human) possible_locs = list(BODY_ZONE_R_ARM,BODY_ZONE_L_ARM,BODY_ZONE_R_LEG,BODY_ZONE_L_LEG,BODY_ZONE_CHEST,BODY_ZONE_HEAD) requires_real_bodypart = TRUE - targetable_wound = /datum/wound/burn + targetable_wound = /datum/wound/burn/flesh /datum/surgery/debride/can_start(mob/living/user, mob/living/carbon/target) if(!istype(target)) return FALSE if(..()) var/obj/item/bodypart/targeted_bodypart = target.get_bodypart(user.zone_selected) - var/datum/wound/burn/burn_wound = targeted_bodypart.get_wound_type(targetable_wound) + var/datum/wound/burn/flesh/burn_wound = targeted_bodypart.get_wound_type(targetable_wound) return(burn_wound && burn_wound.infestation > 0) //SURGERY STEPS @@ -32,7 +32,7 @@ var/infestation_removed = 0.5 /// To give the surgeon a heads up how much work they have ahead of them -/datum/surgery_step/debride/proc/get_progress(mob/user, mob/living/carbon/target, datum/wound/burn/burn_wound) +/datum/surgery_step/debride/proc/get_progress(mob/user, mob/living/carbon/target, datum/wound/burn/flesh/burn_wound) if(!burn_wound?.infestation || !infestation_removed) return var/estimated_remaining_steps = burn_wound.infestation / infestation_removed @@ -52,7 +52,7 @@ /datum/surgery_step/debride/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) if(surgery.operated_wound) - var/datum/wound/burn/burn_wound = surgery.operated_wound + var/datum/wound/burn/flesh/burn_wound = surgery.operated_wound if(burn_wound.infestation <= 0) to_chat(user, "[target]'s [parse_zone(user.zone_selected)] has no infected flesh to remove!") surgery.status++ @@ -65,7 +65,7 @@ user.visible_message("[user] looks for [target]'s [parse_zone(user.zone_selected)].", "You look for [target]'s [parse_zone(user.zone_selected)]...") /datum/surgery_step/debride/success(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) - var/datum/wound/burn/burn_wound = surgery.operated_wound + var/datum/wound/burn/flesh/burn_wound = surgery.operated_wound if(burn_wound) var/progress_text = get_progress(user, target, burn_wound) display_results(user, target, "You successfully excise some of the infected flesh from [target]'s [parse_zone(target_zone)][progress_text].", @@ -91,7 +91,7 @@ /datum/surgery_step/debride/initiate(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, try_to_fail = FALSE) if(!..()) return - var/datum/wound/burn/burn_wound = surgery.operated_wound + var/datum/wound/burn/flesh/burn_wound = surgery.operated_wound while(burn_wound && burn_wound.infestation > 0.25) if(!..()) break @@ -108,7 +108,7 @@ /datum/surgery_step/dress/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - var/datum/wound/burn/burn_wound = surgery.operated_wound + var/datum/wound/burn/flesh/burn_wound = surgery.operated_wound if(burn_wound) display_results(user, target, "You begin to dress the burns on [target]'s [parse_zone(user.zone_selected)]...", "[user] begins to dress the burns on [target]'s [parse_zone(user.zone_selected)] with [tool].", @@ -117,7 +117,7 @@ user.visible_message("[user] looks for [target]'s [parse_zone(user.zone_selected)].", "You look for [target]'s [parse_zone(user.zone_selected)]...") /datum/surgery_step/dress/success(mob/living/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) - var/datum/wound/burn/burn_wound = surgery.operated_wound + var/datum/wound/burn/flesh/burn_wound = surgery.operated_wound if(burn_wound) display_results(user, target, "You successfully wrap [target]'s [parse_zone(target_zone)] with [tool].", "[user] successfully wraps [target]'s [parse_zone(target_zone)] with [tool]!", diff --git a/code/modules/surgery/electrical_repair.dm b/code/modules/surgery/electrical_repair.dm new file mode 100644 index 000000000000..7cd3f257cb8a --- /dev/null +++ b/code/modules/surgery/electrical_repair.dm @@ -0,0 +1,158 @@ +/// Minimum temperature to melt the solder. +#define SOLDER_MELTING_POINT 600 + +/datum/surgery/repair_electrical_damage + name = "Repair Damaged Electronics" + desc = "Repairs damaged electronics inside a robotic limb." + requires_bodypart_type = BODYTYPE_ROBOTIC + steps = list( + /datum/surgery_step/mechanic_open, + /datum/surgery_step/open_hatch, + /datum/surgery_step/replace_wiring, + /datum/surgery_step/solder_wiring, + /datum/surgery_step/close_hatch, + /datum/surgery_step/mechanic_close, + ) + lying_required = FALSE + self_operable = TRUE + targetable_wound = /datum/wound/electric/severe + +/datum/surgery/repair_electrical_damage/can_start(mob/user, mob/living/patient) + if(!..()) + return FALSE + var/obj/item/bodypart/targeted_bodypart = patient.get_bodypart(user.zone_selected) + var/datum/wound/electric/targeted_wound = targeted_bodypart.get_wound_type(targetable_wound) + if(isnull(targeted_wound)) + return FALSE + if(user == patient && targeted_wound.affected_organ?.slot == ORGAN_SLOT_BRAIN) + return FALSE // can't operate on your own brain + return TRUE + +/datum/surgery/repair_short_circuit + name = "Repair Short Circuit" + desc = "Repairs short-circuiting electronics inside a robotic limb." + requires_bodypart_type = BODYTYPE_ROBOTIC + steps = list( + /datum/surgery_step/mechanic_open, + /datum/surgery_step/open_hatch, + /datum/surgery_step/prepare_electronics, + /datum/surgery_step/replace_capacitor, + /datum/surgery_step/replace_wiring, + /datum/surgery_step/solder_wiring, + /datum/surgery_step/close_hatch, + /datum/surgery_step/mechanic_close, + ) + lying_required = FALSE + self_operable = TRUE + targetable_wound = /datum/wound/electric/critical + +/datum/surgery/repair_short_circuit/can_start(mob/user, mob/living/patient) + if(!..()) + return FALSE + var/obj/item/bodypart/targeted_bodypart = patient.get_bodypart(user.zone_selected) + var/datum/wound/electric/targeted_wound = targeted_bodypart.get_wound_type(targetable_wound) + if(isnull(targeted_wound)) + return FALSE + if(user == patient && targeted_wound.affected_organ?.slot == ORGAN_SLOT_BRAIN) + return FALSE + return TRUE + +/datum/surgery_step/replace_capacitor + name = "replace capacitor" + implements = list( + /obj/item/stock_parts/capacitor = 100, + ) + preop_sound = 'sound/items/tape_flip.ogg' + success_sound = 'sound/items/taperecorder_close.ogg' + failure_sound = 'sound/machines/defib_zap.ogg' + time = 3 SECONDS + +/datum/surgery_step/replace_capacitor/preop(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery) + display_results(user, target, + span_notice("You start replacing the electronic components inside [target]'s [parse_zone(target_zone)]..."), + span_notice("[user] starts replacing the electronic components inside [target]'s [parse_zone(target_zone)] with [tool]..."), + span_notice("[user] starts replacing the electronic components inside [target]'s [parse_zone(target_zone)]...") + ) +/datum/surgery_step/replace_capacitor/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results) + if(surgery.operated_wound) + qdel(tool) + return ..() + +/datum/surgery_step/replace_wiring + name = "replace wiring" + implements = list( + /obj/item/stack/cable_coil = 100, + ) + time = 3 SECONDS + +/datum/surgery_step/replace_wiring/tool_check(mob/user, obj/item/tool) + if(isstack(tool)) + var/obj/item/stack/new_wiring = tool + if(new_wiring.amount < 5) + to_chat(user, span_warning("You need 5 lengths of cable to replace the wiring!")) + return FALSE + return ..() + +/datum/surgery_step/replace_wiring/preop(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery) + display_results(user, target, + span_notice("You start replacing the wires inside [target]'s [parse_zone(target_zone)]..."), + span_notice("[user] starts replacing the wires inside [target]'s [parse_zone(target_zone)] with [tool]..."), + span_notice("[user] starts replacing the wires inside [target]'s [parse_zone(target_zone)]...") + ) + +/datum/surgery_step/replace_wiring/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results) + . = ..() + tool.use(5) + +/datum/surgery_step/solder_wiring + name = "solder wiring" + implements = list( + TOOL_WELDER = 100, + TOOL_CAUTERY = 100, + /obj/item/reagent_containers = 100, + /obj/item = 40, + ) + time = 5 SECONDS + +/datum/surgery_step/solder_wiring/tool_check(mob/user, obj/item/tool) + if(tool.type == /obj/item && tool.get_temperature() < SOLDER_MELTING_POINT) + return FALSE + if(istype(tool, /obj/item/reagent_containers) && tool.reagents?.get_reagent_amount(/datum/reagent/medicine/liquid_solder) < 2) + to_chat(user, span_warning("You need more liquid solder to repair the wiring!")) + return FALSE + if(tool.usesound) + preop_sound = pick(tool.usesound) + success_sound = pick(tool.usesound) + return ..() + +/datum/surgery_step/solder_wiring/preop(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery) + if(istype(tool, /obj/item/reagent_containers)) + display_results(user, target, + span_notice("You start adding new solder to [target]'s [parse_zone(target_zone)]..."), + span_notice("[user] starts adding new solder to [target]'s [parse_zone(target_zone)] with [tool]..."), + span_notice("[user] starts adding new solder to [target]'s [parse_zone(target_zone)]...") + ) + else + display_results(user, target, + span_notice("You start heating the solder inside [target]'s [parse_zone(target_zone)]..."), + span_notice("[user] starts heating the solder inside [target]'s [parse_zone(target_zone)] with [tool]..."), + span_notice("[user] starts heating the solder inside [target]'s [parse_zone(target_zone)]...") + ) + +/datum/surgery_step/solder_wiring/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results) + if(surgery.operated_wound) + display_results(user, target, + span_notice("You solder the new wiring inside [target]'s [parse_zone(target_zone)]."), + span_notice("[user] solders the new wiring inside [target]'s [parse_zone(target_zone)] with [tool]."), + span_notice("[user] solders the new wiring inside [target]'s [parse_zone(target_zone)].") + ) + surgery.operated_wound.attached_surgery = null + QDEL_NULL(surgery.operated_wound) + return ..() + +/datum/surgery_step/solder_wiring/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, fail_prob) + if(surgery.operated_bodypart) + surgery.operated_bodypart.wound_roll(0, rand(20, 40)) + return ..() + +#undef SOLDER_MELTING_POINT diff --git a/code/modules/surgery/heatwarp_repair.dm b/code/modules/surgery/heatwarp_repair.dm new file mode 100644 index 000000000000..9ecb91001371 --- /dev/null +++ b/code/modules/surgery/heatwarp_repair.dm @@ -0,0 +1,20 @@ +/datum/surgery/repair_heat_warp + name = "Repair Deformed Chassis" + desc = "Replaces the heat-warped plating and frame of a robotic limb." + steps = list( + /datum/surgery_step/cut_plating, + /datum/surgery_step/mechanic_unwrench, + /datum/surgery_step/replace_frame, + /datum/surgery_step/mechanic_wrench, + /datum/surgery_step/add_plating, + /datum/surgery_step/weld_plating, + ) + requires_bodypart_type = BODYTYPE_ROBOTIC + self_operable = TRUE + targetable_wound = /datum/wound/burn/heat_warping/critical + +/datum/surgery/repair_sheared_frame/can_start(mob/user, mob/living/patient) + if(!..()) + return FALSE + var/obj/item/bodypart/targeted_bodypart = patient.get_bodypart(user.zone_selected) + return !isnull(targeted_bodypart.get_wound_type(targetable_wound)) diff --git a/code/modules/surgery/mechanic_steps.dm b/code/modules/surgery/mechanic_steps.dm index f707232d1adb..131a700f1301 100644 --- a/code/modules/surgery/mechanic_steps.dm +++ b/code/modules/surgery/mechanic_steps.dm @@ -204,3 +204,206 @@ span_notice("[user] successfully replaces [target]'s [parse_zone(target_zone)] with [tool]!"), span_notice("[user] successfully replaces [target]'s [parse_zone(target_zone)]!")) return ..() + +// Repair of specific robotic wounds. + +/datum/surgery_step/cut_plating + name = "cut plating" + implements = list( + TOOL_DECONSTRUCT = 100, + TOOL_WELDER = 100, + TOOL_SAW = 50, + ) + time = 4 SECONDS + +/datum/surgery_step/cut_plating/tool_check(mob/user, obj/item/tool) + if(tool.usesound) + preop_sound = pick(tool.usesound) + success_sound = pick(tool.usesound) + return ..() + +/datum/surgery_step/cut_plating/preop(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery) + if(surgery.operated_wound) + display_results(user, target, + "You begin cutting the plating off of [target]'s [parse_zone(target_zone)]...", + "[user] begins cutting the plating off of [target]'s [parse_zone(target_zone)] with [tool]...", + "[user] begins cutting the plating off of [target]'s [parse_zone(target_zone)]...", + ) + +/datum/surgery_step/add_plating + name = "add new plating" + implements = list( + /obj/item/construction/rcd = 100, + /obj/item/stack/sheet/plasteel = 100, + /obj/item/stack/sheet/mineral/titanium = 100, + /obj/item/stack/sheet/mineral/plastitanium = 100, + ) + preop_sound = 'sound/machines/pda_button1.ogg' + success_sound = 'sound/machines/doorclick.ogg' + time = 2 SECONDS + +/datum/surgery_step/add_plating/tool_check(mob/user, obj/item/tool) + if(isstack(tool)) + var/obj/item/stack/new_plating = tool + if(new_plating.amount < 2) + to_chat(user, span_warning("You need 2 sheets to replace the plating!")) + return FALSE + if(istype(tool, /obj/item/construction/rcd)) + var/obj/item/construction/rcd/constructor = tool + if(constructor.matter < 20) + to_chat(user, constructor.no_ammo_message) + return FALSE + return ..() + +/datum/surgery_step/add_plating/preop(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery) + if(!surgery.operated_wound) + return + if(istype(tool, /obj/item/construction/rcd)) + display_results(user, target, + span_notice("You begin reconstructing the plating on [target]'s [parse_zone(target_zone)]..."), + span_notice("[user] begins reconstructing the plating on [target]'s [parse_zone(target_zone)] with [tool]..."), + span_notice("[user] begins reconstructing the plating on [target]'s [parse_zone(target_zone)]..."), + ) + else + display_results(user, target, + span_notice("You begin replacing the plating on [target]'s [parse_zone(target_zone)]..."), + span_notice("[user] begins replacing the plating on [target]'s [parse_zone(target_zone)] with [tool]..."), + span_notice("[user] begins replacing the plating on [target]'s [parse_zone(target_zone)]..."), + ) + +/datum/surgery_step/add_plating/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results) + if(surgery.operated_wound) + if(isstack(tool)) + var/obj/item/stack/used_stack = tool + used_stack.use(2) + if(istype(tool, /obj/item/construction/rcd)) + var/obj/item/construction/rcd/used_rcd = tool + used_rcd.useResource(20, user) + display_results(user, target, + span_notice("You reconstruct the plating on [target]'s [parse_zone(target_zone)]"), + span_notice("[user] reconstructs the plating on [target]'s [parse_zone(target_zone)] with [tool]"), + span_notice("[user] reconstructs the plating on [target]'s [parse_zone(target_zone)]"), + ) + else + display_results(user, target, + span_notice("You replace the plating on [target]'s [parse_zone(target_zone)]"), + span_notice("[user] replace the plating on [target]'s [parse_zone(target_zone)] with [tool]"), + span_notice("[user] replace the plating on [target]'s [parse_zone(target_zone)]"), + ) + return ..() + +/datum/surgery_step/add_plating/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, fail_prob) + . = ..() + if(isstack(tool)) + var/obj/item/stack/used_stack = tool + used_stack.use(2) + if(istype(tool, /obj/item/construction/rcd)) + var/obj/item/construction/rcd/used_rcd = tool + used_rcd.useResource(20, user) + +/datum/surgery_step/replace_frame + name = "replace frame" + implements = list( + /obj/item/stack/rods = 100, + /obj/item/construction/rcd = 100, + ) + preop_sound = 'sound/items/tape_flip.ogg' + success_sound = 'sound/items/taperecorder_close.ogg' + time = 2 SECONDS + +/datum/surgery_step/replace_frame/tool_check(mob/user, obj/item/tool) + if(isstack(tool)) + var/obj/item/stack/new_plating = tool + if(new_plating.amount < 4) + to_chat(user, span_warning("You need 4 rods to replace the frame!")) + return FALSE + if(istype(tool, /obj/item/construction/rcd)) + var/obj/item/construction/rcd/constructor = tool + if(constructor.matter < 20) + to_chat(user, constructor.no_ammo_message) + return FALSE + return ..() + +/datum/surgery_step/replace_frame/preop(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery) + if(!surgery.operated_wound) + return + if(istype(tool, /obj/item/construction/rcd)) + display_results(user, target, + span_notice("You begin reconstructing the frame inside [target]'s [parse_zone(target_zone)]..."), + span_notice("[user] begins reconstructing the frame inside [target]'s [parse_zone(target_zone)] with [tool]..."), + span_notice("[user] begins reconstructing the frame inside [target]'s [parse_zone(target_zone)]..."), + ) + else + display_results(user, target, + span_notice("You begin replacing the frame inside [target]'s [parse_zone(target_zone)]..."), + span_notice("[user] begins replacing the frame inside [target]'s [parse_zone(target_zone)] with [tool]..."), + span_notice("[user] begins replacing the frame inside [target]'s [parse_zone(target_zone)]..."), + ) + +/datum/surgery_step/replace_frame/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results) + if(surgery.operated_wound) + if(isstack(tool)) + var/obj/item/stack/used_stack = tool + used_stack.use(4) + if(istype(tool, /obj/item/construction/rcd)) + var/obj/item/construction/rcd/used_rcd = tool + used_rcd.useResource(20, user) + display_results(user, target, + span_notice("You reconstruct the frame inside [target]'s [parse_zone(target_zone)]."), + span_notice("[user] reconstructs the frame inside [target]'s [parse_zone(target_zone)] with [tool]."), + span_notice("[user] reconstructs the frame inside [target]'s [parse_zone(target_zone)]."), + ) + else + display_results(user, target, + span_notice("You replace the frame inside [target]'s [parse_zone(target_zone)]."), + span_notice("[user] replace the frame inside [target]'s [parse_zone(target_zone)] with [tool]."), + span_notice("[user] replace the frame inside [target]'s [parse_zone(target_zone)]."), + ) + return ..() + +/datum/surgery_step/replace_frame/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, fail_prob) + . = ..() + if(isstack(tool)) + var/obj/item/stack/used_stack = tool + used_stack.use(4) + if(istype(tool, /obj/item/construction/rcd)) + var/obj/item/construction/rcd/used_rcd = tool + used_rcd.useResource(20, user) + +/datum/surgery_step/weld_plating + name = "weld plating" + implements = list( + TOOL_WELDER = 100, + ) + time = 3 SECONDS + +/datum/surgery_step/weld_plating/tool_check(mob/user, obj/item/tool) + if(tool.usesound) + preop_sound = pick(tool.usesound) + success_sound = pick(tool.usesound) + return ..() + +/datum/surgery_step/weld_plating/preop(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery) + display_results(user, target, + span_notice("You start welding the plating onto [target]'s [parse_zone(target_zone)]..."), + span_notice("[user] starts welding the plating onto [target]'s [parse_zone(target_zone)] with [tool]..."), + span_notice("[user] starts welding the plating onto [target]'s [parse_zone(target_zone)]..."), + ) + +/datum/surgery_step/weld_plating/success(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results) + if(surgery.operated_wound) + display_results(user, target, + span_notice("You weld the plating onto [target]'s [parse_zone(target_zone)]."), + span_notice("[user] welds the plating onto [target]'s [parse_zone(target_zone)] with [tool]."), + span_notice("[user] welds the plating onto [target]'s [parse_zone(target_zone)]."), + ) + var/obj/item/bodypart/targeted_bodypart = target.get_bodypart(user.zone_selected) + for(var/datum/wound/plating_wound as anything in targeted_bodypart.wounds) // might have more than one wound solved by replacing the plating + if(!(plating_wound.wound_flags & PLATING_DAMAGE)) + continue + if(plating_wound.attached_surgery == surgery) + plating_wound.attached_surgery = null // detach the wound from this surgery so that it can be completed properly + qdel(plating_wound) + if(QDELETED(surgery.operated_wound)) + surgery.operated_wound = null + return ..() diff --git a/code/modules/surgery/mechanical.dm b/code/modules/surgery/mechanical.dm index e1901168d375..7286ce2d282c 100644 --- a/code/modules/surgery/mechanical.dm +++ b/code/modules/surgery/mechanical.dm @@ -1,19 +1,20 @@ -// [CELADON-REMOVE] - CELADON_IPC_SURGERY - Выносим в mod_celadon/ipc_surgery/code/ipc_surgery.dm + /*\ Mechanical Surgery for IPC's and the augmented \*/ -// /datum/surgery/brain_surgery/mechanic -// name = "Mechanical brain surgery" -// requires_bodypart_type = BODYTYPE_ROBOTIC -// steps = list( -// /datum/surgery_step/mechanic_open, -// /datum/surgery_step/open_hatch, -// /datum/surgery_step/prepare_electronics, -// /datum/surgery_step/fix_brain, -// /datum/surgery_step/close_hatch, -// /datum/surgery_step/mechanic_close -// ) -// lying_required = FALSE -// self_operable = TRUE -// [/CELADON-REMOVE] +/* [CELADON-REMOVE] - CELADON_IPC_SURGERY - Выносим в mod_celadon/ipc_surgery/code/ipc_surgery.dm +/datum/surgery/brain_surgery/mechanic + name = "Mechanical brain surgery" + requires_bodypart_type = BODYTYPE_ROBOTIC + steps = list( + /datum/surgery_step/mechanic_open, + /datum/surgery_step/open_hatch, + /datum/surgery_step/prepare_electronics, + /datum/surgery_step/fix_brain/mechanic, + /datum/surgery_step/close_hatch, + /datum/surgery_step/mechanic_close + ) + lying_required = FALSE + self_operable = TRUE +CELADON REMOVE */ /datum/surgery_step/fix_brain/mechanic implements = list( diff --git a/code/modules/surgery/organic_steps.dm b/code/modules/surgery/organic_steps.dm index 7b9fccc04d37..a7119bf7b806 100644 --- a/code/modules/surgery/organic_steps.dm +++ b/code/modules/surgery/organic_steps.dm @@ -158,13 +158,13 @@ /obj/item/melee/arm_blade = 40, /obj/item/hatchet = 40, /obj/item/melee/knife/butcher = 33, - /obj/item/gun/energy/plasmacutter = 30, + /obj/item/plasmacutter = 30, /obj/item = 10) //10% success (sort of) with any sharp item with a force>=10 time = 5.4 SECONDS preop_sound = list( /obj/item/circular_saw = 'sound/surgery/saw.ogg', /obj/item/gear_handle/anglegrinder = 'sound/surgery/saw.ogg', - /obj/item/gun/energy/plasmacutter = 'sound/weapons/plasma_cutter.ogg', + /obj/item/plasmacutter = 'sound/weapons/melee/plasmacutter/plasma_cutter_melee.ogg', /obj/item/melee/arm_blade = 'sound/surgery/scalpel1.ogg', /obj/item/melee/axe/fire = 'sound/surgery/scalpel1.ogg', /obj/item/hatchet = 'sound/surgery/scalpel1.ogg', diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index 8f9b1d9b9bac..58bc3c93baf8 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -198,7 +198,7 @@ owner.adjust_fire_stacks(20) owner.ignite_mob() owner.adjustFireLoss(25) - organ_flags |= ORGAN_FAILING + ADD_TRAIT(src, TRAIT_ORGAN_FAILING, DAMAGE_TRAIT) /obj/item/organ/cyberimp/arm/gun/laser diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm index bdd938d5ee69..755f579ff71b 100644 --- a/code/modules/surgery/organs/augments_internal.dm +++ b/code/modules/surgery/organs/augments_internal.dm @@ -131,11 +131,49 @@ . = ..() if((organ_flags & ORGAN_FAILING) || . & EMP_PROTECT_SELF) return - organ_flags |= ORGAN_FAILING + ADD_TRAIT(src, TRAIT_ORGAN_FAILING, EMP_TRAIT) addtimer(CALLBACK(src, PROC_REF(reboot)), 90 / severity) /obj/item/organ/cyberimp/brain/anti_stun/proc/reboot() - organ_flags &= ~ORGAN_FAILING + REMOVE_TRAIT(src, TRAIT_ORGAN_FAILING, EMP_TRAIT) + +/obj/item/organ/cyberimp/brain/joywire + name = "\improper Midi-Sed pleasure vivifier" + desc = "A widely popular (and addictive) implant produced by Miditeke-Sedari Tokoce that stimulates the brain's pleasure centers. Dramatically increases mood, but interferes with taste reception even if uninstalled." + implant_color = "#FFABE0" + slot = ORGAN_SLOT_BRAIN_JOYWIRE + +/obj/item/organ/cyberimp/brain/joywire/on_life() + if(owner || !(organ_flags & ORGAN_FAILING)) + SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "joywire", /datum/mood_event/joywire) + ADD_TRAIT(owner, TRAIT_AGEUSIA, TRAIT_GENERIC) + +/obj/item/organ/cyberimp/brain/joywire/emp_act(severity) + . = ..() + if(!owner || . & EMP_PROTECT_SELF) + return + ADD_TRAIT(src, TRAIT_ORGAN_FAILING, DAMAGE_TRAIT) + SEND_SIGNAL(owner, COMSIG_CLEAR_MOOD_EVENT, "joywire") + SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "joywire_emp", /datum/mood_event/joywire_emp) + to_chat(owner, span_boldwarning("That feeling of dream-like, distilled joy is suddenly diluted. Misery sets in...")) + +/obj/item/organ/cyberimp/brain/mindscrew + name = "\improper Midi-Sed MNDFCK implant" + desc = "A horrific after-market modification of Midi-Sed's pleasure vivifier that stimulates intense pain in the brain. Dramatically hurts a user's mood and mental state, and lingers for a time after removal." + implant_color = "#5E1108" + slot = ORGAN_SLOT_BRAIN_JOYWIRE + +/obj/item/organ/cyberimp/brain/mindscrew/on_life() + if(owner || !(organ_flags & ORGAN_FAILING)) + SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "mindscrew", /datum/mood_event/mindscrew) + +/obj/item/organ/cyberimp/brain/datachip + name = "Nanotrasen brain datachip" + desc = "Covered in serial codes and warnings. That data must be important." + +/obj/item/organ/cyberimp/brain/datachip/Insert() + . = ..() + to_chat(owner, span_notice("you feel well versed in the sales of donkpockets and other Donk Co. products")) /obj/item/organ/cyberimp/brain/joywire name = "\improper Midi-Sed pleasure vivifier" diff --git a/code/modules/surgery/organs/ears.dm b/code/modules/surgery/organs/ears.dm index dc742f411b5c..8dae3235029b 100644 --- a/code/modules/surgery/organs/ears.dm +++ b/code/modules/surgery/organs/ears.dm @@ -32,8 +32,6 @@ return ..() var/mob/living/carbon/C = owner - if((damage < maxHealth) && (organ_flags & ORGAN_FAILING)) //ear damage can be repaired from the failing condition - organ_flags &= ~ORGAN_FAILING // genetic deafness prevents the body from using the ears, even if healthy if(HAS_TRAIT(C, TRAIT_DEAF)) deaf = max(deaf, 1) @@ -48,8 +46,7 @@ /obj/item/organ/ears/proc/restoreEars() deaf = 0 - damage = 0 - organ_flags &= ~ORGAN_FAILING + setOrganDamage(0) var/mob/living/carbon/C = owner @@ -57,7 +54,7 @@ deaf = 1 /obj/item/organ/ears/proc/adjustEarDamage(ddmg, ddeaf) - damage = max(damage + (ddmg*damage_multiplier), 0) + applyOrganDamage(-ddmg * damage_multiplier) deaf = max(deaf + (ddeaf*damage_multiplier), 0) /obj/item/organ/ears/proc/minimumDeafTicks(value) diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index ca151434c1c9..79a91ec90787 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -53,8 +53,9 @@ if(HAS_TRAIT(human_owner, TRAIT_NIGHT_VISION) && !lighting_alpha) lighting_alpha = LIGHTING_PLANE_ALPHA_NV_TRAIT // [/CELADON-ADD] - M.update_tint() + if(organ_flags & ORGAN_FAILING) + M.become_blind(EYE_DAMAGE) owner.update_sight() if(M.has_dna() && ishuman(M)) M.dna.species.handle_body(M) //updates eye icon @@ -75,16 +76,10 @@ /obj/item/organ/eyes/on_life() ..() var/mob/living/carbon/C = owner - //since we can repair fully damaged eyes, check if healing has occurred - if((organ_flags & ORGAN_FAILING) && (damage < maxHealth)) - organ_flags &= ~ORGAN_FAILING - C.cure_blind(EYE_DAMAGE) //various degrees of "oh fuck my eyes", from "point a laser at your eye" to "staring at the Sun" intensities if(damage > 20) damaged = TRUE - if((organ_flags & ORGAN_FAILING)) - C.become_blind(EYE_DAMAGE) - else if(damage > 30) + if(damage > 30) C.overlay_fullscreen("eye_damage", /atom/movable/screen/fullscreen/impaired, 2) else C.overlay_fullscreen("eye_damage", /atom/movable/screen/fullscreen/impaired, 1) @@ -94,6 +89,16 @@ C.clear_fullscreen("eye_damage") return +/obj/item/organ/eyes/on_organ_fail() + . = ..() + if(owner) + owner.become_blind(EYE_DAMAGE) + +/obj/item/organ/eyes/on_organ_restore() + . = ..() + if(owner) + owner.cure_blind(EYE_DAMAGE) + /obj/item/organ/eyes/lizard name = "lizard eyes" desc = "Very similar to human eyes in functionality, only visible difference being the different shade of white." diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index d2ccf21be224..0caef8295e2e 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -101,7 +101,7 @@ damage_type = safe_damage_type ) -/obj/item/organ/lungs/proc/check_breath(datum/gas_mixture/breath, mob/living/carbon/human/H) // MOD_CELADON -> mod_celadon\fixes\code\lungs.dm +/obj/item/organ/lungs/proc/check_breath (datum/gas_mixture/breath, mob/living/carbon/human/H) //TODO: add lung damage = less oxygen gains var/breathModifier = (5-(5*(damage/maxHealth)/2)) //range 2.5 - 5 if(H.status_flags & GODMODE) diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index a685d5658cff..ac758ec538b7 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -49,6 +49,8 @@ pre_eat = CALLBACK(src, PROC_REF(pre_eat)),\ on_compost = CALLBACK(src, PROC_REF(pre_compost)),\ after_eat = CALLBACK(src, PROC_REF(on_eat_from))) + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_ORGAN_FAILING), PROC_REF(on_organ_fail)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_ORGAN_FAILING), PROC_REF(on_organ_restore)) ///When you take a bite you cant jam it in for surgery anymore. /obj/item/organ/proc/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE) @@ -191,6 +193,7 @@ var/delta = damage - prev_damage if(delta > 0) if(damage >= maxHealth) + ADD_TRAIT(src, TRAIT_ORGAN_FAILING, DAMAGE_TRAIT) organ_flags |= ORGAN_FAILING return now_failing if(damage > high_threshold && prev_damage <= high_threshold) @@ -198,7 +201,7 @@ if(damage > low_threshold && prev_damage <= low_threshold) return low_threshold_passed else - organ_flags &= ~ORGAN_FAILING + REMOVE_TRAIT(src, TRAIT_ORGAN_FAILING, DAMAGE_TRAIT) if(prev_damage > low_threshold && damage <= low_threshold) return low_threshold_cleared if(prev_damage > high_threshold && damage <= high_threshold) @@ -249,9 +252,11 @@ /obj/item/organ/proc/get_availability(datum/species/S) return TRUE -// [CELADON-ADD] - CELADON_EMOTES -/obj/item/organ/proc/is_robotic() - if(status & ORGAN_ROBOTIC) - return TRUE - return FALSE -// [/CELADON-ADD] +/obj/item/organ/proc/on_organ_fail() + SIGNAL_HANDLER + organ_flags |= ORGAN_FAILING + +/obj/item/organ/proc/on_organ_restore() + SIGNAL_HANDLER + organ_flags &= ~ORGAN_FAILING + diff --git a/code/modules/surgery/organs/stomach.dm b/code/modules/surgery/organs/stomach.dm index 471dc383dd5e..d9815f41189a 100644 --- a/code/modules/surgery/organs/stomach.dm +++ b/code/modules/surgery/organs/stomach.dm @@ -124,10 +124,7 @@ H.throw_alert("disgust", /atom/movable/screen/alert/gross) SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "disgust", /datum/mood_event/gross) //do the nausea stuff - // [CELADON - EDIT] - CELADON_LANIUS - // if(prob(pukeprob)) //iT hAndLeS mOrE ThaN PukInG // [CELADON - EDIT] - ORIGANAL - if(prob(pukeprob)) - // [/CELADON - EDIT] + if(prob(pukeprob)) //iT hAndLeS mOrE ThaN PukInG H.vomit(10, 0, 0, 0, 1, 0) H.confused += 2.5 H.stuttering += 1 @@ -215,7 +212,7 @@ desc = "A basic device designed to mimic the functions of a human stomach" organ_flags = ORGAN_SYNTHETIC maxHealth = STANDARD_ORGAN_THRESHOLD * 0.5 - metabolism_efficiency = 0.07 // not as good at digestion + metabolism_efficiency = 0.7 // not as good at digestion var/emp_vulnerability = 80 //Chance of permanent effects if emp-ed. /obj/item/organ/stomach/cybernetic/tier2 diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index d3d21a760369..772375082591 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -7,6 +7,11 @@ attack_verb = list("licked", "slobbered", "slapped", "frenched", "tongued") var/list/languages_possible var/say_mod = "says" + var/ask_mod = "asks" + var/exclaim_mod = "exclaims" + var/whisper_mod = "whispers" + var/sing_mod = "sings" + var/yell_mod = "yells" var/taste_sensitivity = 15 // lower is more sensitive. var/modifies_speech = FALSE var/static/list/languages_possible_base = typecacheof(list( @@ -18,14 +23,14 @@ /datum/language/moffic, /datum/language/monkey, /datum/language/ratvar, + /datum/language/codespeak, + /datum/language/aphasia, // [CELADON-ADD] - CELADON_ITEMS /datum/language/elysm, /datum/language/alquadim, /datum/language/thayoss, /datum/language/fuyo, // [/CELADON-ADD] - /datum/language/codespeak, - /datum/language/aphasia )) /obj/item/organ/tongue/Initialize(mapload) @@ -154,6 +159,9 @@ organ_flags = NONE icon_state = "tonguerobot" say_mod = "states" + ask_mod = "queries" + exclaim_mod = "declares" + yell_mod = "alarms" attack_verb = list("beeped", "booped") modifies_speech = TRUE taste_sensitivity = 25 // not as good as an organic tongue @@ -244,9 +252,6 @@ name = "hindtongue" desc = "Some kind of severed bird tongue." say_mod = "shrieks" - // [CELADON-ADD] - CELADON_ACCENTS_ADD - modifies_speech = TRUE - // [/CELADON-ADD] var/static/list/languages_possible_vox = typecacheof(list( /datum/language/galactic_common, /datum/language/gezena_kalixcian, @@ -261,36 +266,6 @@ /datum/language/vox_pidgin, )) -// [CELADON-ADD] - CELADON_ACCENTS_ADD - Добавляем акцент воксам -/obj/item/organ/tongue/vox/handle_speech(datum/source, list/speech_args) - if(speech_args[SPEECH_LANGUAGE] == /datum/language/vox_pidgin) - return - - var/static/regex/vox_kk = new("k+", "g") - var/static/regex/vox_KK = new("K+", "g") - var/static/regex/vox_ru_kk = new("к+", "g") - var/static/regex/vox_ru_KK = new("К+", "g") - - var/static/regex/vox_ch = new("ch+", "g") - var/static/regex/vox_CH = new("ch+", "g") - var/static/regex/vox_ru_ch = new("ч+", "g") - var/static/regex/vox_ru_CH = new("Ч+", "g") - - var/message = speech_args[SPEECH_MESSAGE] - if(message[1] != "*") - if(prob(90)) - message = vox_kk.Replace(message, "kik") - message = vox_KK.Replace(message, "Kik") - message = vox_ru_kk.Replace_char(message, "кик") - message = vox_ru_KK.Replace_char(message, "Кик") - if(prob(90)) - message = vox_ch.Replace(message, "chich") - message = vox_CH.Replace(message, "Chich") - message = vox_ru_ch.Replace_char(message, "чич") - message = vox_ru_CH.Replace_char(message, "Чич") - speech_args[SPEECH_MESSAGE] = message -// [/CELADON-ADD] - /obj/item/organ/tongue/vox/Initialize(mapload) . = ..() languages_possible = languages_possible_vox diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index c6119b8ba5fb..14260ec50574 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -129,11 +129,11 @@ //Command staff has authority if(user.mind.assigned_role in GLOB.command_positions) power_multiplier *= 1.4 -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS //Why are you speaking if(user.mind.assigned_role == "Mime") power_multiplier *= 0.5 -// [/CELADON-ADD] + // [/CELADON-ADD] //Try to check if the speaker specified a name or a job to focus on var/list/specific_listeners = list() diff --git a/code/modules/surgery/repair_puncture.dm b/code/modules/surgery/repair_puncture.dm index 9773c95b03cf..adf618426f80 100644 --- a/code/modules/surgery/repair_puncture.dm +++ b/code/modules/surgery/repair_puncture.dm @@ -1,5 +1,4 @@ -// [CELADON-REMOVE] - FIXES_REPAIR_PUNCTURE_SURGERY -/* + /////BURN FIXING SURGERIES////// //the step numbers of each of these two, we only currently use the first to switch back and forth due to advancing after finishing steps anyway @@ -13,13 +12,13 @@ target_mobtypes = list(/mob/living/carbon) possible_locs = list(BODY_ZONE_R_ARM,BODY_ZONE_L_ARM,BODY_ZONE_R_LEG,BODY_ZONE_L_LEG,BODY_ZONE_CHEST,BODY_ZONE_HEAD) requires_real_bodypart = TRUE - targetable_wound = /datum/wound/pierce + targetable_wound = /datum/wound/pierce/bleed /datum/surgery/repair_puncture/can_start(mob/living/user, mob/living/carbon/target) . = ..() if(.) var/obj/item/bodypart/targeted_bodypart = target.get_bodypart(user.zone_selected) - var/datum/wound/burn/pierce_wound = targeted_bodypart.get_wound_type(targetable_wound) + var/datum/wound/pierce/bleed/pierce_wound = targeted_bodypart.get_wound_type(targetable_wound) return(pierce_wound && pierce_wound.blood_flow > 0) //SURGERY STEPS @@ -31,7 +30,7 @@ time = 3 SECONDS /datum/surgery_step/repair_innards/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - var/datum/wound/pierce/pierce_wound = surgery.operated_wound + var/datum/wound/pierce/bleed/pierce_wound = surgery.operated_wound if(!pierce_wound) user.visible_message("[user] looks for [target]'s [parse_zone(user.zone_selected)].", "You look for [target]'s [parse_zone(user.zone_selected)]...") return @@ -46,7 +45,7 @@ "[user] begins to realign the torn blood vessels in [target]'s [parse_zone(user.zone_selected)].") /datum/surgery_step/repair_innards/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) - var/datum/wound/pierce/pierce_wound = surgery.operated_wound + var/datum/wound/pierce/bleed/pierce_wound = surgery.operated_wound if(!pierce_wound) to_chat(user, "[target] has no puncture wound there!") return ..() @@ -79,7 +78,7 @@ return TRUE /datum/surgery_step/seal_veins/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - var/datum/wound/pierce/pierce_wound = surgery.operated_wound + var/datum/wound/pierce/bleed/pierce_wound = surgery.operated_wound if(!pierce_wound) user.visible_message("[user] looks for [target]'s [parse_zone(user.zone_selected)].", "You look for [target]'s [parse_zone(user.zone_selected)]...") return @@ -88,7 +87,7 @@ "[user] begins to meld some of the split blood vessels in [target]'s [parse_zone(user.zone_selected)].") /datum/surgery_step/seal_veins/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) - var/datum/wound/pierce/pierce_wound = surgery.operated_wound + var/datum/wound/pierce/bleed/pierce_wound = surgery.operated_wound if(!pierce_wound) to_chat(user, "[target] has no puncture there!") return ..() @@ -107,165 +106,3 @@ #undef REALIGN_INNARDS #undef WELD_VEINS -*/ -// [/CELADON-REMOVE] - -// [CELADON-ADD] - FIXES_REPAIR_PUNCTURE_SURGERY -/////PUNCTURE REPAIR SURGERY////// - -#define CLAMP_BLEEDERS 2 -#define SEAL_VEINS 3 - -///// Repair puncture wounds -/datum/surgery/repair_puncture - name = "Repair puncture" - steps = list(/datum/surgery_step/incise, /datum/surgery_step/clamp_bleeders, /datum/surgery_step/seal_veins, /datum/surgery_step/close) - target_mobtypes = list(/mob/living/carbon) - possible_locs = list(BODY_ZONE_R_ARM,BODY_ZONE_L_ARM,BODY_ZONE_R_LEG,BODY_ZONE_L_LEG,BODY_ZONE_CHEST,BODY_ZONE_HEAD) - requires_real_bodypart = TRUE - targetable_wound = /datum/wound/pierce - - var/vessels_sealed = 0 - var/vessels_required = 0 - - -/datum/surgery/repair_puncture/can_start(mob/living/user, mob/living/carbon/target) - . = ..() - if(.) - var/obj/item/bodypart/targeted_bodypart = target.get_bodypart(user.zone_selected) - var/datum/wound/pierce/pierce_wound = targeted_bodypart.get_wound_type(targetable_wound) - if(pierce_wound && pierce_wound.blood_flow > 0) - vessels_required = round(pierce_wound.initial_flow) + 1 - vessels_sealed = 0 - return TRUE - return FALSE - -//SURGERY STEPS - -/datum/surgery_step/clamp_bleeders - name = "clamp major bleeders" - implements = list(TOOL_HEMOSTAT = 100, TOOL_WIRECUTTER = 35) - time = 3 SECONDS - preop_sound = 'sound/surgery/hemostat1.ogg' - success_sound = 'sound/surgery/hemostat1.ogg' - failure_sound = 'sound/surgery/organ2.ogg' - -/datum/surgery_step/clamp_bleeders/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - var/datum/wound/pierce/pierce_wound = surgery.operated_wound - if(!pierce_wound) - user.visible_message("[user] looks for the source of bleeding in [target]'s [parse_zone(target_zone)].", - "You look for the source of bleeding in [target]'s [parse_zone(target_zone)]...") - return - - display_results(user, target, - "You begin clamping the major bleeding vessels in [target]'s [parse_zone(target_zone)]...", - "[user] begins clamping the major bleeding vessels in [target]'s [parse_zone(target_zone)] with [tool].", - "[user] begins clamping the major bleeding vessels in [target]'s [parse_zone(target_zone)].") - -/datum/surgery_step/clamp_bleeders/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) - var/datum/wound/pierce/pierce_wound = surgery.operated_wound - if(!pierce_wound) - to_chat(user, "[target] has no puncture wound there!") - return ..() - - display_results(user, target, - "You successfully clamp the major bleeding vessels in [target]'s [parse_zone(target_zone)].", - "[user] successfully clamps the major bleeding vessels in [target]'s [parse_zone(target_zone)] with [tool]!", - "[user] successfully clamps the major bleeding vessels in [target]'s [parse_zone(target_zone)]!") - log_combat(user, target, "clamped major bleeders in", addition="INTENT: [uppertext(user.a_intent)]") - - pierce_wound.blood_flow *= 0.5 - surgery.operated_bodypart.receive_damage(brute=2, wound_bonus=CANT_WOUND) - return ..() - -/datum/surgery_step/clamp_bleeders/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, fail_prob = 0) - . = ..() - display_results(user, target, - "You accidentally tear a major vessel in [target]'s [parse_zone(target_zone)]!", - "[user] accidentally tears a major vessel in [target]'s [parse_zone(target_zone)] with [tool]!", - "[user] accidentally tears a major vessel in [target]'s [parse_zone(target_zone)]!") - surgery.operated_bodypart.receive_damage(brute=rand(5,10), sharpness=SHARP_EDGED, wound_bonus = 15) - -/datum/surgery_step/seal_veins - name = "seal damaged vessels" - implements = list( - TOOL_HEMOSTAT = 100, - TOOL_WIRECUTTER = 35, - /obj/item/stack/packageWrap = 15, - /obj/item/stack/cable_coil = 15) - time = 4 SECONDS - repeatable = TRUE - preop_sound = 'sound/surgery/hemostat1.ogg' - success_sound = 'sound/surgery/hemostat1.ogg' - failure_sound = 'sound/surgery/organ2.ogg' - -/datum/surgery_step/seal_veins/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) - if(istype(surgery, /datum/surgery/repair_puncture)) - if(!surgery.operated_wound) - return - - display_results(user, target, - "You begin sealing damaged vessels in [target]'s [parse_zone(target_zone)]...", - "[user] begins sealing damaged vessels in [target]'s [parse_zone(target_zone)] with [tool].", - "[user] begins sealing damaged vessels in [target]'s [parse_zone(target_zone)].") - -/datum/surgery_step/seal_veins/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE) - if(!istype(surgery, /datum/surgery/repair_puncture)) - return ..() - - var/datum/surgery/repair_puncture/repair = surgery - repair.vessels_sealed++ - - var/message - switch(repair.vessels_sealed) - if(1) - message = "You carefully seal the ruptured artery" - if(2) - if(repair.vessels_sealed >= repair.vessels_required) - message = "You seal the last damaged vessels" - else - message = "You seal the torn venous vessels" - if(3) - if(repair.vessels_sealed >= repair.vessels_required) - message = "You seal the last damaged capillaries" - else - message = "You seal the damaged capillaries" - else - if(repair.vessels_sealed >= repair.vessels_required) - message = "You finish sealing the remaining damaged tissue" - else - message = "You continue sealing the damaged vessels" - - display_results(user, target, - "[message] in [target]'s [parse_zone(target_zone)].", - "[user] seals damaged vessels in [target]'s [parse_zone(target_zone)] with [tool].", - "[user] seals damaged vessels in [target]'s [parse_zone(target_zone)].") - log_combat(user, target, "sealed vessels in", addition="INTENT: [uppertext(user.a_intent)]") - - surgery.operated_bodypart.receive_damage(brute=1, wound_bonus=CANT_WOUND) - - if(repair.vessels_sealed >= repair.vessels_required) - to_chat(user, "All major bleeding is now controlled. The wound can be closed.") - if(surgery.operated_wound) - surgery.operated_wound.attached_surgery = null - qdel(surgery.operated_wound) - surgery.operated_wound = null - surgery.status++ - return TRUE // Не вызываем parent - - return ..() - -/datum/surgery_step/seal_veins/failure(mob/user, mob/living/target, target_zone, obj/item/tool, datum/surgery/surgery, fail_prob = 0) - . = ..() - display_results(user, target, - "You accidentally rupture a sealed vessel in [target]'s [parse_zone(target_zone)]!", - "[user] accidentally ruptures a sealed vessel in [target]'s [parse_zone(target_zone)] with [tool]!", - "[user] accidentally ruptures a sealed vessel in [target]'s [parse_zone(target_zone)]!") - surgery.operated_bodypart.receive_damage(brute=rand(3,6), sharpness=SHARP_EDGED, wound_bonus = 5) - if(istype(surgery, /datum/surgery/repair_puncture)) - var/datum/surgery/repair_puncture/repair = surgery - repair.vessels_sealed = max(0, repair.vessels_sealed - 1) - -#undef CLAMP_BLEEDERS -#undef SEAL_VEINS -// [/CELADON-ADD] diff --git a/code/modules/surgery/surgery_helpers.dm b/code/modules/surgery/surgery_helpers.dm index db8ff3166451..6207f972bc51 100644 --- a/code/modules/surgery/surgery_helpers.dm +++ b/code/modules/surgery/surgery_helpers.dm @@ -21,7 +21,7 @@ var/list/available_surgeries = list() for(var/datum/surgery/S in all_surgeries) - if(!S.possible_locs.Find(selected_zone)) + if(LAZYLEN(S.possible_locs) && !S.possible_locs.Find(selected_zone)) continue if(affecting) if(!S.requires_bodypart) diff --git a/code/modules/surgery/surgery_step.dm b/code/modules/surgery/surgery_step.dm index a38530199f03..8e34bf79b2d1 100644 --- a/code/modules/surgery/surgery_step.dm +++ b/code/modules/surgery/surgery_step.dm @@ -112,7 +112,7 @@ var/was_sleeping = (target.stat != DEAD && target.IsSleeping()) - if(do_after(user, modded_time, target = target)) + if(tool ? tool.use_tool(target, user, modded_time) : do_after(user, modded_time, target = target)) var/chem_check_result = chem_check(target) if((prob(100-fail_prob) || (iscyborg(user) && !silicons_obey_prob)) && chem_check_result && !try_to_fail) @@ -129,10 +129,10 @@ var/obj/item/bodypart/operated_bodypart = target.get_bodypart(target_zone) ? target.get_bodypart(target_zone) : target.get_bodypart(BODY_ZONE_CHEST) if(operated_bodypart?.bodytype & BODYPART_ORGANIC) //robot limbs are built to be opened and stuff commit_malpractice(user, target, target_zone, tool, surgery) -// [CELADON-ADD] - CELADON_FIXES - фикс бесконечной рекурсии + // [CELADON-ADD] - CELADON_FIXES - фикс бесконечной рекурсии else advance = TRUE -// [/CELADON-ADD] + // [/CELADON-ADD] if(chem_check_result && !advance) return .(user, target, target_zone, tool, surgery, try_to_fail) //automatically re-attempt if failed for reason other than lack of required chemical diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index a4dbccec3392..799ad6aec711 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -164,31 +164,29 @@ force = 10 toolspeed = 0.5 -// [CELADON-REMOVE] - CELADON_BALANCE - Что это за инструмент шакальный не понятно -//CODED BY CODY, AGE 7 -// /obj/item/circular_saw/best//BESTESTWEPON -// name = "swabw" -// //spases 4 legibilititie +///CODED BY CODY, AGE 7 +/obj/item/circular_saw/best//BESTESTWEPON + name = "swabw" +//spases 4 legibilititie -// icon_state = "swa" -// icon = 'icons/obj/items.dmi' + icon_state = "swa" + icon = 'icons/obj/items.dmi' -// lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' + lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi' -// righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' -// desc = "Fwo hevy dute cuttinge :)))." + righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' + desc = "Fwo hevy dute cuttinge :)))." -// hitsound = 'sound/items/shitty_drill.ogg' -// toolspeed = 100//BIIGER NUBER BERTTER -// force = 11.2345678//see? buig numba. Lots of VALUE!!1! -// throw_speed = 100 + hitsound = 'sound/items/shitty_drill.ogg' + toolspeed = 100//BIIGER NUBER BERTTER + force = 11.2345678//see? buig numba. Lots of VALUE!!1! + throw_speed = 100 -// attack_verb = list("KILDED", "CUTTED ALL OF THE WAY IN HALF", "STOPPED LIVINGE", "MADE NOT LIFE") + attack_verb = list("KILDED", "CUTTED ALL OF THE WAY IN HALF", "STOPPED LIVINGE", "MADE NOT LIFE") -// custom_materials = list(/datum/material/diamond=1) -// [/CELADON-REMOVE] + custom_materials = list(/datum/material/diamond=1) /obj/item/organ_storage //allows medical cyborgs to manipulate organs without hands name = "organ storage bag" diff --git a/code/modules/unit_tests/icons/worn_icons.dm b/code/modules/unit_tests/icons/worn_icons.dm index cba9661fd4e7..ba86e1a2e69c 100644 --- a/code/modules/unit_tests/icons/worn_icons.dm +++ b/code/modules/unit_tests/icons/worn_icons.dm @@ -76,11 +76,7 @@ spacer = "\n\t" if(cached_slot_flags & ITEM_SLOT_EYES) - // [CELADON-EDIT] - CELADON_RETURN_CONTENT_SPAWN - // icon_file = 'icons/mob/clothing/eyes/eyes.dmi' // CELADON-EDIT - ORIGINAL - icon_file = 'mod_celadon/_storage_icons/icons/items/clothing/eyes/overlay/eyes.dmi' - // [/CELADON-EDIT] - + icon_file = 'mod_celadon/_storage_icons/icons/items/clothing/eyes/overlay/eyes.dmi' // [CELADON-EDIT] - CELADON_RETURN_CONTENT_SPAWN if(!(icon_state in icon_states(icon_file, 1))) already_warned_icons += icon_state fail_reasons += "[spacer][item_path] using invalid [mob_overlay_state ? "mob_overlay_state" : "icon_state"], \"[icon_state]\" in '[icon_file]'[match_message]" diff --git a/code/modules/unit_tests/medical_wounds.dm b/code/modules/unit_tests/medical_wounds.dm index 987d04c8ac01..34105e04ed65 100644 --- a/code/modules/unit_tests/medical_wounds.dm +++ b/code/modules/unit_tests/medical_wounds.dm @@ -12,24 +12,25 @@ var/i = 1 var/list/iter_test_wound_list - for(iter_test_wound_list in list(list(/datum/wound/blunt/moderate, /datum/wound/blunt/severe),\ - list(/datum/wound/slash/moderate, /datum/wound/slash/critical),\ - list(/datum/wound/pierce/moderate, /datum/wound/pierce/severe),\ - list(/datum/wound/burn/moderate, /datum/wound/burn/severe))) + for(iter_test_wound_list in list(list(/datum/wound/blunt/bone/moderate, /datum/wound/blunt/bone/severe, /datum/wound/blunt/bone/critical),\ + list(/datum/wound/slash/flesh/moderate, /datum/wound/slash/flesh/severe, /datum/wound/slash/flesh/critical),\ + list(/datum/wound/pierce/bleed/moderate, /datum/wound/pierce/bleed/severe, /datum/wound/pierce/bleed/critical),\ + list(/datum/wound/burn/flesh/moderate, /datum/wound/burn/flesh/severe, /datum/wound/burn/flesh/critical))) TEST_ASSERT_EQUAL(length(victim.all_wounds), 0, "Patient is somehow wounded before test") var/datum/wound/iter_test_wound + var/datum/wound_pregen_data/iter_pregen_data = SSwounds.pregen_data[iter_test_wound] var/threshold_penalty = 0 for(iter_test_wound in iter_test_wound_list) - var/threshold = initial(iter_test_wound.threshold_minimum) - threshold_penalty // just enough to guarantee the next tier of wound, given the existing wound threshold penalty + var/threshold = iter_pregen_data.threshold_minimum - threshold_penalty // just enough to guarantee the next tier of wound, given the existing wound threshold penalty if(dam_types[i] == BRUTE) tested_part.receive_damage(WOUND_MINIMUM_DAMAGE, 0, wound_bonus = threshold, sharpness=sharps[i]) else if(dam_types[i] == BURN) tested_part.receive_damage(0, WOUND_MINIMUM_DAMAGE, wound_bonus = threshold, sharpness=sharps[i]) TEST_ASSERT(length(victim.all_wounds), "Patient has no wounds when one wound is expected. Severity: [initial(iter_test_wound.severity)]") - TEST_ASSERT_EQUAL(length(victim.all_wounds), 1, "Patient has more than one wound when only one is expected. Severity: [initial(iter_test_wound.severity)]") + //TEST_ASSERT_EQUAL(length(victim.all_wounds), 1, "Patient has more than one wound when only one is expected. Severity: [initial(iter_test_wound.severity)]") var/datum/wound/actual_wound = victim.all_wounds[1] TEST_ASSERT_EQUAL(actual_wound.type, iter_test_wound, "Patient has wound of incorrect severity. Expected: [initial(iter_test_wound.name)] Got: [actual_wound]") threshold_penalty = actual_wound.threshold_penalty @@ -50,36 +51,39 @@ var/i = 1 var/list/iter_test_wound_list - victim.dna.species.species_traits &= HAS_FLESH // take away the base human's flesh (ouchie!) ((not actually ouchie, this just affects their wounds and dismemberment handling)) + tested_part.biological_state &= ~BIO_FLESH // take away the base limb's flesh (ouchie!) ((not actually ouchie, this just affects their wounds and dismemberment handling)) - for(iter_test_wound_list in list(list(/datum/wound/blunt/moderate, /datum/wound/blunt/severe),\ - list(/datum/wound/slash/moderate, /datum/wound/slash/critical),\ - list(/datum/wound/pierce/moderate, /datum/wound/pierce/severe),\ - list(/datum/wound/burn/moderate, /datum/wound/burn/severe))) + for(iter_test_wound_list in list(list(/datum/wound/blunt/bone/moderate, /datum/wound/blunt/bone/severe, /datum/wound/blunt/bone/critical),\ + list(/datum/wound/slash/flesh/moderate, /datum/wound/slash/flesh/severe, /datum/wound/slash/flesh/critical),\ + list(/datum/wound/pierce/bleed/moderate, /datum/wound/pierce/bleed/severe, /datum/wound/pierce/bleed/critical),\ + list(/datum/wound/burn/flesh/moderate, /datum/wound/burn/flesh/severe, /datum/wound/burn/flesh/critical))) TEST_ASSERT_EQUAL(length(victim.all_wounds), 0, "Patient is somehow wounded before test") var/datum/wound/iter_test_wound + var/datum/wound_pregen_data/iter_pregen_data = SSwounds.pregen_data[iter_test_wound] var/threshold_penalty = 0 for(iter_test_wound in iter_test_wound_list) - var/threshold = initial(iter_test_wound.threshold_minimum) - threshold_penalty // just enough to guarantee the next tier of wound, given the existing wound threshold penalty + var/threshold = iter_pregen_data.threshold_minimum - threshold_penalty // just enough to guarantee the next tier of wound, given the existing wound threshold penalty if(dam_types[i] == BRUTE) tested_part.receive_damage(WOUND_MINIMUM_DAMAGE, 0, wound_bonus = threshold, sharpness=sharps[i]) else if(dam_types[i] == BURN) tested_part.receive_damage(0, WOUND_MINIMUM_DAMAGE, wound_bonus = threshold, sharpness=sharps[i]) // so if we just tried to deal a flesh wound, make sure we didn't actually suffer it. We may have suffered a bone wound instead, but we just want to make sure we don't have a flesh wound - if(initial(iter_test_wound.wound_flags) & FLESH_WOUND) + var/datum/wound_pregen_data/pregen_data = SSwounds.pregen_data[iter_test_wound] + if (pregen_data.required_limb_biostate & BIO_FLESH) if(!length(victim.all_wounds)) // not having a wound is good news continue else // we have to check that it's actually a bone wound and not the intended wound type - TEST_ASSERT_EQUAL(length(victim.all_wounds), 1, "Patient has more than one wound when only one is expected. Severity: [initial(iter_test_wound.severity)]") + //TEST_ASSERT_EQUAL(length(victim.all_wounds), 1, "Patient has more than one wound when only one is expected. Severity: [initial(iter_test_wound.severity)]") var/datum/wound/actual_wound = victim.all_wounds[1] - TEST_ASSERT((actual_wound.wound_flags & ~FLESH_WOUND), "Patient has flesh wound despite no HAS_FLESH flag, expected either no wound or bone wound. Offending wound: [actual_wound]") + var/datum/wound_pregen_data/actual_pregen_data = SSwounds.pregen_data[actual_wound.type] + TEST_ASSERT((actual_pregen_data.required_limb_biostate & ~BIO_FLESH), "Limb has flesh wound despite no BIO_FLESH biological_state, expected either no wound or bone wound. Offending wound: [actual_wound]") threshold_penalty = actual_wound.threshold_penalty else // otherwise if it's a bone wound, check that we have it per usual TEST_ASSERT(length(victim.all_wounds), "Patient has no wounds when one wound is expected. Severity: [initial(iter_test_wound.severity)]") - TEST_ASSERT_EQUAL(length(victim.all_wounds), 1, "Patient has more than one wound when only one is expected. Severity: [initial(iter_test_wound.severity)]") + //TEST_ASSERT_EQUAL(length(victim.all_wounds), 1, "Patient has more than one wound when only one is expected. Severity: [initial(iter_test_wound.severity)]") var/datum/wound/actual_wound = victim.all_wounds[1] TEST_ASSERT_EQUAL(actual_wound.type, iter_test_wound, "Patient has wound of incorrect severity. Expected: [initial(iter_test_wound.name)] Got: [actual_wound]") threshold_penalty = actual_wound.threshold_penalty diff --git a/code/modules/unit_tests/overmap.dm b/code/modules/unit_tests/overmap.dm index cfaea14f2117..4f4a4bb82d27 100644 --- a/code/modules/unit_tests/overmap.dm +++ b/code/modules/unit_tests/overmap.dm @@ -1,5 +1,5 @@ /datum/unit_test/overmap_move/Run() - var/datum/overmap/ship/S = new(list("x" = 1, "y" = 1), SSovermap.default_system) + var/datum/overmap/ship/S = new(list("x" = 1, "y" = 1), SSovermap.safe_system) S.change_heading(NORTHEAST) S.process(1) @@ -19,8 +19,8 @@ TEST_ASSERT(S.is_still(), "Ship did not stop after burning engines") /datum/unit_test/overmap_dock/Run() - var/datum/overmap/ship/controlled/docker = new(list("x" = 1, "y" = 1), SSovermap.default_system, SSmapping.ship_purchase_list[pick(SSmapping.ship_purchase_list)]) //TODO: debug ship instead of picking random ship - var/datum/overmap/dynamic/empty/dockee = new(list("x" = 1, "y" = 1), SSovermap.default_system) + var/datum/overmap/ship/controlled/docker = new(list("x" = 1, "y" = 1), SSovermap.safe_system, SSmapping.ship_purchase_list[pick(SSmapping.ship_purchase_list)]) //TODO: debug ship instead of picking random ship + var/datum/overmap/dynamic/empty/dockee = new(list("x" = 1, "y" = 1), SSovermap.safe_system) docker.dock_time = 0 diff --git a/code/modules/unit_tests/ruin_placement.dm b/code/modules/unit_tests/ruin_placement.dm index 0d63ea153ac2..99dce19f1215 100644 --- a/code/modules/unit_tests/ruin_placement.dm +++ b/code/modules/unit_tests/ruin_placement.dm @@ -8,7 +8,7 @@ populate_turfs = FALSE /datum/unit_test/ruin_placement/Run() - var/datum/overmap_star_system/dummy_system = SSovermap.default_system + var/datum/overmap_star_system/dummy_system = SSovermap.safe_system dummy_system.name = "Ruin Test: Dummy System" for(var/planet_name as anything in SSmapping.planet_types) var/datum/planet_type/planet_type = SSmapping.planet_types[planet_name] diff --git a/code/modules/unit_tests/ship_placement.dm b/code/modules/unit_tests/ship_placement.dm index 918d49353603..b4aa6d813212 100644 --- a/code/modules/unit_tests/ship_placement.dm +++ b/code/modules/unit_tests/ship_placement.dm @@ -1,5 +1,5 @@ /datum/unit_test/ship_placement/Run() - var/datum/overmap/outpost/test_outpost = new /datum/overmap/outpost/no_main_level(system_spawned_in = SSovermap.default_system) + var/datum/overmap/outpost/test_outpost = new /datum/overmap/outpost/no_main_level(system_spawned_in = SSovermap.safe_system) // checks all shuttle templates, including those // disabled or intended as subshuttles @@ -11,7 +11,7 @@ var/subtimer = REALTIMEOFDAY // they'll spawn in empty space, and won't be docked - var/datum/overmap/ship/controlled/cur_ship = new /datum/overmap/ship/controlled(list("x" = 1, "y" = 1), SSovermap.default_system, map) + var/datum/overmap/ship/controlled/cur_ship = new /datum/overmap/ship/controlled(list("x" = 1, "y" = 1), SSovermap.safe_system, map) log_test(" - Loading took [(REALTIMEOFDAY - subtimer) / 10]s") subtimer = REALTIMEOFDAY diff --git a/code/modules/uplink/uplink_devices.dm b/code/modules/uplink/uplink_devices.dm index 22d82f30177e..e7d03bb2f1cb 100644 --- a/code/modules/uplink/uplink_devices.dm +++ b/code/modules/uplink/uplink_devices.dm @@ -53,13 +53,6 @@ hidden_uplink.allow_restricted = FALSE hidden_uplink.set_gamemode(/datum/game_mode/nuclear) -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/obj/item/uplink/clownop/Initialize() - . = ..() - var/datum/component/uplink/hidden_uplink = GetComponent(/datum/component/uplink) - hidden_uplink.set_gamemode(/datum/game_mode/nuclear/clown_ops) -// [/CELADON-ADD] - /obj/item/uplink/old name = "dusty radio" desc = "A dusty looking radio." diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index a2bc1f550345..5c8900d81206 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -212,7 +212,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/box/syndicate/contract_kit cost = 20 player_minimum = 20 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + exclude_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/bundles_TC/bundle_A name = "Syndi-kit Tactical" @@ -221,7 +221,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) you will receive. May contain discontinued and/or exotic items." item = /obj/item/storage/box/syndicate/bundle_A cost = 20 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + exclude_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/bundles_TC/bundle_B name = "Syndi-kit Special" @@ -229,7 +229,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) In Syndi-kit Special, you will recieve items used by famous syndicate agents of the past. Collectively worth more than 20 telecrystals, the syndicate loves a good throwback." item = /obj/item/storage/box/syndicate/bundle_B cost = 20 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + exclude_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/bundles_TC/surplus name = "Syndicate Surplus Crate" @@ -238,7 +238,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/structure/closet/crate cost = 20 player_minimum = 25 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + exclude_modes = list(/datum/game_mode/nuclear) var/starting_crate_value = 50 /datum/uplink_item/bundles_TC/surplus/super @@ -338,35 +338,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) surplus = 30 include_modes = list(/datum/game_mode/nuclear) -// [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS -/datum/uplink_item/dangerous/pie_cannon - name = "Banana Cream Pie Cannon" - desc = "A special pie cannon for a special clown, this gadget can hold up to 20 pies and automatically fabricates one every two seconds!" - cost = 10 - item = /obj/item/pneumatic_cannon/pie/selfcharge - surplus = 0 - include_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/dangerous/bananashield - name = "Bananium Energy Shield" - desc = "A clown's most powerful defensive weapon, this personal shield provides near immunity to ranged energy attacks \ - by bouncing them back at the ones who fired them. It can also be thrown to bounce off of people, slipping them, \ - and returning to you even if you miss. WARNING: DO NOT ATTEMPT TO STAND ON SHIELD WHILE DEPLOYED, EVEN IF WEARING ANTI-SLIP SHOES." - item = /obj/item/shield/energy/bananium - cost = 16 - surplus = 0 - include_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/dangerous/clownsword - name = "Bananium Energy Sword" - desc = "An energy sword that deals no damage, but will slip anyone it contacts, be it by melee attack, thrown \ - impact, or just stepping on it. Beware friendly fire, as even anti-slip shoes will not protect against it." - item = /obj/item/melee/energy/sword/bananium - cost = 3 - surplus = 0 - include_modes = list(/datum/game_mode/nuclear/clown_ops) -// [/CELADON-EDIT] - /datum/uplink_item/dangerous/bioterror name = "Biohazardous Chemical Sprayer" desc = "A handheld chemical sprayer that allows a wide dispersal of selected chemicals. Especially tailored by the Tiger \ @@ -375,7 +346,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/reagent_containers/spray/chemsprayer/bioterror cost = 20 surplus = 0 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + include_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/dangerous/throwingweapons name = "Box of Throwing Weapons" @@ -410,7 +381,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/melee/duelenergy/saber player_minimum = 25 cost = 16 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS /datum/uplink_item/dangerous/doublesword/get_discount() return pick(4;0.8,2;0.65,1;0.5) @@ -421,7 +391,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) pocketed when inactive. Activating it produces a loud, distinctive noise." item = /obj/item/melee/energy/sword/saber cost = 8 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS /datum/uplink_item/dangerous/shield name = "Energy Shield" @@ -488,7 +457,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) with suppressors." item = /obj/item/gun/ballistic/automatic/pistol/ringneck cost = 7 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS /datum/uplink_item/dangerous/bolt_action name = "Surplus Rifle" @@ -503,7 +471,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/gun/ballistic/revolver/viper cost = 13 surplus = 50 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS /datum/uplink_item/dangerous/foamsmg name = "Toy Submachine Gun" @@ -511,7 +478,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/gun/ballistic/automatic/toy cost = 5 surplus = 0 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + include_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/dangerous/foammachinegun name = "Toy Machine Gun" @@ -520,7 +487,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/gun/ballistic/automatic/toy cost = 10 surplus = 0 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + include_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/dangerous/foampistol name = "Toy Pistol with Riot Darts" @@ -549,14 +516,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) to teach the martial art of krav maga to the wearer." item = /obj/item/clothing/gloves/krav_maga/combatglovesplus cost = 5 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + include_modes = list(/datum/game_mode/nuclear) surplus = 0 /datum/uplink_item/stealthy_weapons/cqc name = "CQC Manual" desc = "A manual that teaches a single user tactical Close-Quarters Combat before self-destructing." item = /obj/item/book/granter/martial/cqc - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + include_modes = list(/datum/game_mode/nuclear) cost = 13 surplus = 0 @@ -589,7 +556,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) player_minimum = 20 cost = 17 surplus = 0 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + exclude_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/stealthy_weapons/crossbow name = "Miniature Energy Crossbow" @@ -602,7 +569,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/gun/energy/kinetic_accelerator/crossbow cost = 10 surplus = 50 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + exclude_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/stealthy_weapons/origami_kit name = "Boxed Origami Kit" @@ -637,7 +604,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) falls asleep, they will be able to move and act." item = /obj/item/pen/sleepy cost = 4 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + exclude_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/stealthy_weapons/suppressor name = "Suppressor" @@ -645,7 +612,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/attachment/silencer cost = 3 surplus = 10 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS /datum/uplink_item/stealthy_weapons/holster name = "Syndicate Holster" @@ -687,7 +653,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) desc = "An additional 8-round 10x22mm magazine; compatible with the Ringneck Pistol." item = /obj/item/ammo_box/magazine/m10mm_ringneck cost = 1 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + /datum/uplink_item/ammo/pistolap name = "10x22mm Armour Piercing Magazine" @@ -695,7 +661,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) These rounds are less effective at injuring the target but penetrate protective gear." item = /obj/item/ammo_box/magazine/m10mm_ringneck cost = 2 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + /datum/uplink_item/ammo/pistolhp name = "10x22mm Hollow Point Magazine" @@ -703,7 +669,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) These rounds are more damaging but ineffective against armour." item = /obj/item/ammo_box/magazine/m10mm_ringneck cost = 3 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + /datum/uplink_item/ammo/pistolfire name = "10x22mm Incendiary Magazine" @@ -711,7 +677,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) Loaded with incendiary rounds which inflict little damage, but ignite the target." item = /obj/item/ammo_box/magazine/m10mm_ringneck cost = 2 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + /datum/uplink_item/ammo/shotgun cost = 2 @@ -757,7 +723,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) For when you really need a lot of things dead." item = /obj/item/ammo_box/a357 cost = 4 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + illegal_tech = FALSE /datum/uplink_item/ammo/a40mm @@ -854,7 +820,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) and broca systems, making it impossible for them to move or speak for some time." item = /obj/item/storage/box/syndie_kit/bioterror cost = 6 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + include_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/ammo/bolt_action name = "Surplus Rifle Clip" @@ -882,7 +848,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) desc = "An additional 20 round 9x18mm magazine for the TEC9." item = /obj/item/ammo_box/magazine/m9mm_rattlesnake cost = 3 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + /datum/uplink_item/ammo/ebr name = "M2514 EBR Magazine" @@ -903,7 +869,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/grenade/chem_grenade/bioterrorfoam cost = 5 surplus = 35 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + include_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/explosives/buzzkill name = "Buzzkill Grenade Box" @@ -912,7 +878,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/box/syndie_kit/bee_grenades cost = 15 surplus = 35 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + include_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/explosives/c4 name = "Composition C-4" @@ -962,7 +928,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/box/syndie_kit/tuberculosisgrenade cost = 12 surplus = 35 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + include_modes = list(/datum/game_mode/nuclear) restricted = TRUE /datum/uplink_item/explosives/grenadier @@ -1006,7 +972,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) the blast radius before using the detonator." item = /obj/item/syndicatedetonator cost = 3 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) S// [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + include_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/explosives/syndicate_minibomb name = "Syndicate Minibomb" @@ -1014,18 +980,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) in addition to dealing high amounts of damage to nearby personnel." item = /obj/item/grenade/syndieminibomb cost = 6 -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) - -/datum/uplink_item/explosives/tearstache - name = "Teachstache Grenade" - desc = "A teargas grenade that launches sticky moustaches onto the face of anyone not wearing a clown or mime mask. The moustaches will \ - remain attached to the face of all targets for one minute, preventing the use of breath masks and other such devices." - item = /obj/item/grenade/chem_grenade/teargas/moustache - cost = 3 - surplus = 0 - include_modes = list(/datum/game_mode/nuclear/clown_ops) -// [/CELADON-EDIT] + /datum/uplink_item/explosives/viscerators name = "Viscerator Delivery Grenade" @@ -1034,7 +989,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/grenade/spawnergrenade/manhacks cost = 5 surplus = 35 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + include_modes = list(/datum/game_mode/nuclear) //Support and Mechs /datum/uplink_item/support @@ -1042,16 +997,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) surplus = 0 include_modes = list(/datum/game_mode/nuclear) -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/datum/uplink_item/support/clown_reinforcement - name = "Clown Reinforcements" - desc = "Call in an additional clown to share the fun, equipped with full starting gear, but no telecrystals." - item = /obj/item/antag_spawner/nuke_ops/clown - cost = 20 - include_modes = list(/datum/game_mode/nuclear/clown_ops) - restricted = TRUE -// [/CELADON-ADD] - /datum/uplink_item/support/reinforcement name = "Reinforcements" desc = "Call in an additional team member. They won't come with any gear, so you'll have to save some telecrystals \ @@ -1133,8 +1078,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) Due to budget cuts, the shoes don't provide protection against slipping." item = /obj/item/storage/box/syndie_kit/chameleon cost = 2 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS - + exclude_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/stealthy_tools/chameleon_proj name = "Chameleon Projector" desc = "Projects an image across a user, disguising them as an object scanned with it, as long as they don't \ @@ -1165,7 +1109,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/reagent_containers/syringe/mulligan cost = 4 surplus = 30 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + exclude_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/stealthy_tools/syndigaloshes name = "No-Slip Chameleon Shoes" @@ -1173,7 +1117,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) They do not work on heavily lubricated surfaces." item = /obj/item/clothing/shoes/chameleon/noslip cost = 2 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + exclude_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/stealthy_tools/syndigaloshes/nuke item = /obj/item/clothing/shoes/chameleon/noslip @@ -1208,7 +1152,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/toolbox/infiltrator cost = 6 limited_stock = 1 //you only get one so you don't end up with too many gun cases - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + exclude_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/suits/space_suit name = "Syndicate Space Suit" @@ -1227,7 +1171,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) Nanotrasen crew who spot these suits are known to panic." item = /obj/item/clothing/suit/space/hardsuit/syndi cost = 8 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //you can't buy it in nuke, because the elite hardsuit costs the same while being better //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + exclude_modes = list(/datum/game_mode/nuclear) //you can't buy it in nuke, because the elite hardsuit costs the same while being better /datum/uplink_item/suits/hardsuit/elite name = "Elite Syndicate Hardsuit" @@ -1235,7 +1179,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) provides the user with superior armor and mobility compared to the standard Syndicate hardsuit." item = /obj/item/clothing/suit/space/hardsuit/syndi/elite cost = 8 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + include_modes = list(/datum/game_mode/nuclear) exclude_modes = list() /datum/uplink_item/suits/hardsuit/shielded @@ -1244,7 +1188,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) The shields can handle up to three impacts within a short duration and will rapidly recharge while not under fire." item = /obj/item/clothing/suit/space/hardsuit/shielded/syndi cost = 30 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + include_modes = list(/datum/game_mode/nuclear) exclude_modes = list() // Devices and Tools @@ -1276,7 +1220,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) 'Advanced Magboots' slow you down in simulated-gravity environments much like the standard issue variety." item = /obj/item/clothing/shoes/magboots/syndie cost = 2 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + include_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/device_tools/briefcase_launchpad name = "Briefcase Launchpad" @@ -1333,7 +1277,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 1 surplus = 0 restricted = TRUE - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + exclude_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/device_tools/failsafe/spawn_item(spawn_path, mob/user, datum/component/uplink/U) if(!U) @@ -1377,7 +1321,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) operatives in the fight, even while under fire. Don't cross the streams!" item = /obj/item/gun/medbeam cost = 15 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + include_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/device_tools/singularity_beacon name = "Power Beacon" @@ -1413,7 +1357,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) and other supplies helpful for a field medic." item = /obj/item/storage/firstaid/tactical cost = 4 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + include_modes = list(/datum/game_mode/nuclear) /datum/uplink_item/device_tools/soap name = "Syndicate Soap" @@ -1461,7 +1405,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) name = "Guerilla Gloves" desc = "A pair of highly robust combat gripper gloves that excels at performing takedowns at close range, with an added lining of insulation. Careful not to hit a wall!" item = /obj/item/clothing/gloves/tackler/combat/insulated - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + include_modes = list(/datum/game_mode/nuclear) cost = 2 /datum/uplink_item/device_tools/telecrystal/bonemedipen @@ -1576,7 +1520,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) //Race-specific items /datum/uplink_item/race_restricted category = "Species-Restricted" - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + exclude_modes = list(/datum/game_mode/nuclear) surplus = 0 /datum/uplink_item/race_restricted/syndilamp //WS edit - LepiCorp stuff @@ -1611,7 +1555,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) // Role-specific items /datum/uplink_item/role_restricted category = "Role-Restricted" - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + exclude_modes = list(/datum/game_mode/nuclear) surplus = 0 /datum/uplink_item/role_restricted/ancient_jumpsuit @@ -1630,16 +1574,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) restricted_roles = list("Assistant") surplus = 0 -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/datum/uplink_item/role_restricted/pie_cannon - name = "Banana Cream Pie Cannon" - desc = "A special pie cannon for a special clown, this gadget can hold up to 20 pies and automatically fabricates one every two seconds!" - cost = 10 - item = /obj/item/pneumatic_cannon/pie/selfcharge - restricted_roles = list("Clown") - surplus = 0 //No fun unless you're the clown! -// [//CELADON-ADD] - /datum/uplink_item/role_restricted/blastcannon name = "Blast Cannon" desc = "A highly specialized weapon, the Blast Cannon is actually relatively simple. It contains an attachment for a tank transfer valve mounted to an angled pipe specially constructed \ @@ -1658,30 +1592,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) restricted_roles = list("Medical Doctor", "Chief Medical Officer", "Roboticist") cost = 5 -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/datum/uplink_item/role_restricted/clumsinessinjector //clown ops can buy this too, but it's in the pointless badassery section for them - name = "Clumsiness Injector" - desc = "Inject yourself with this to become as clumsy as a clown... or inject someone ELSE with it to make THEM as clumsy as a clown. Useful for clowns who wish to reconnect with their former clownish nature or for clowns who wish to torment and play with their prey before killing them." - item = /obj/item/dnainjector/clumsymut - cost = 1 - restricted_roles = list("Clown") - illegal_tech = FALSE -// [/CELADON-ADD] - -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/datum/uplink_item/role_restricted/clowncar - name = "Clown Car" - desc = "The Clown Car is the ultimate transportation method for any worthy clown! \ - Simply insert your bikehorn and get in, and get ready to have the funniest ride of your life! \ - You can ram any spacemen you come across and stuff them into your car, kidnapping them and locking them inside until \ - someone saves them or they manage to crawl out. Be sure not to ram into any walls or vending machines, as the springloaded seats \ - are very sensitive. Now with our included lube defense mechanism which will protect you against any angry shitcurity! \ - Premium features can be unlocked with a cryptographic sequencer!" - item = /obj/vehicle/sealed/car/clowncar - cost = 20 - restricted_roles = list("Clown") -// [/CELADON-ADD] - /datum/uplink_item/role_restricted/concealed_weapon_bay name = "Concealed Weapon Bay" desc = "A modification for civilian exosuits that allows them to equip one piece of equipment designed for combat exosuits. \ @@ -1716,17 +1626,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) surplus = 20 restricted_roles = list("Janitor") -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/datum/uplink_item/role_restricted/mimery - name = "Guide to Advanced Mimery Series" - desc = "The classical two part series on how to further hone your mime skills. Upon studying the series, the user should be able to make 3x1 invisible walls, and shoot bullets out of their fingers. \ - Obviously only works for Mimes." - cost = 12 - item = /obj/item/storage/box/syndie_kit/mimery - restricted_roles = list("Mime") - surplus = 0 -// [/CELADON-ADD] - /datum/uplink_item/role_restricted/pressure_mod name = "Kinetic Accelerator Pressure Mod" desc = "A modification kit which allows Kinetic Accelerators to do greatly increased damage while indoors. \ @@ -1777,7 +1676,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) /datum/uplink_item/badass/costumes surplus = 0 - include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + include_modes = list(/datum/game_mode/nuclear) cost = 4 cant_discount = TRUE @@ -1787,13 +1686,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) Radio headset does not include encryption key. No gun included." item = /obj/item/storage/box/syndie_kit/centcom_costume -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/datum/uplink_item/badass/costumes/clown - name = "Clown Costume" - desc = "Nothing is more terrifying than clowns with fully automatic weaponry." - item = /obj/item/storage/backpack/duffelbag/clown/syndie -// [/CELADON-ADD] - /datum/uplink_item/badass/balloon name = "Syndicate Balloon" desc = "For showing that you are THE BOSS: A useless red balloon with the Syndicate logo on it. \ @@ -1829,16 +1721,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 2 illegal_tech = FALSE -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -/datum/uplink_item/badass/clownopclumsinessinjector //clowns can buy this too, but it's in the role-restricted items section for them - name = "Clumsiness Injector" - desc = "Inject yourself with this to become as clumsy as a clown... or inject someone ELSE with it to make THEM as clumsy as a clown. Useful for clown operatives who wish to reconnect with their former clownish nature or for clown operatives who wish to torment and play with their prey before killing them." - item = /obj/item/dnainjector/clumsymut - cost = 1 - include_modes = list(/datum/game_mode/nuclear/clown_ops) - illegal_tech = FALSE -// [/CELADON-ADD] - /datum/uplink_item/badass/tactical_naptime name = "Sleepy Time Pajama Bundle" desc = "Even soldiers need to get a good nights rest. Comes with blood-red pajamas, a blankie, a hot mug of cocoa and a fuzzy friend." diff --git a/code/modules/vehicles/cars/car.dm b/code/modules/vehicles/cars/car.dm index 69a973dc2b94..751e5b41bb44 100644 --- a/code/modules/vehicles/cars/car.dm +++ b/code/modules/vehicles/cars/car.dm @@ -17,10 +17,6 @@ /obj/vehicle/sealed/car/generate_actions() . = ..() initialize_controller_action_type(/datum/action/vehicle/sealed/remove_key, VEHICLE_CONTROL_DRIVE) -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - if(car_traits & CAN_KIDNAP) - initialize_controller_action_type(/datum/action/vehicle/sealed/DumpKidnappedMobs, VEHICLE_CONTROL_DRIVE) -// [/CELADON-ADD] /obj/vehicle/sealed/car/driver_move(mob/living/user, direction) if(key_type && !is_key(inserted_key)) diff --git a/code/modules/vehicles/vehicle_actions.dm b/code/modules/vehicles/vehicle_actions.dm index 352457c5ebe0..da1f17283924 100644 --- a/code/modules/vehicles/vehicle_actions.dm +++ b/code/modules/vehicles/vehicle_actions.dm @@ -119,80 +119,6 @@ /datum/action/vehicle/sealed/remove_key/Trigger() vehicle_entered_target.remove_key(owner) -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS -//CLOWN CAR ACTION DATUMS -/datum/action/vehicle/sealed/horn - name = "Honk Horn" - desc = "Honk your classy horn." - button_icon_state = "car_horn" - var/hornsound = 'sound/items/carhorn.ogg' - var/last_honk_time - -/datum/action/vehicle/sealed/horn/Trigger() - if(world.time - last_honk_time > 20) - vehicle_entered_target.visible_message(span_danger("[vehicle_entered_target] loudly honks!")) - to_chat(owner, span_notice("You press the vehicle's horn.")) - playsound(vehicle_entered_target, hornsound, 75) - last_honk_time = world.time - -/datum/action/vehicle/sealed/horn/clowncar/Trigger() - if(world.time - last_honk_time > 20) - vehicle_entered_target.visible_message(span_danger("[vehicle_entered_target] loudly honks!")) - to_chat(owner, span_notice("You press the vehicle's horn.")) - last_honk_time = world.time - if(vehicle_target.inserted_key) - vehicle_target.inserted_key.attack_self(owner) //The key plays a sound - else - playsound(vehicle_entered_target, hornsound, 75) - -/datum/action/vehicle/sealed/DumpKidnappedMobs - name = "Dump Kidnapped Mobs" - desc = "Dump all objects and people in your car on the floor." - button_icon_state = "car_dump" - -/datum/action/vehicle/sealed/DumpKidnappedMobs/Trigger() - vehicle_entered_target.visible_message(span_danger("[vehicle_entered_target] starts dumping the people inside of it.")) - vehicle_entered_target.DumpSpecificMobs(VEHICLE_CONTROL_KIDNAPPED) - - -/datum/action/vehicle/sealed/RollTheDice - name = "Press Colorful Button" - desc = "Press one of those colorful buttons on your display panel!" - button_icon_state = "car_rtd" - -/datum/action/vehicle/sealed/RollTheDice/Trigger() - if(istype(vehicle_entered_target, /obj/vehicle/sealed/car/clowncar)) - var/obj/vehicle/sealed/car/clowncar/C = vehicle_entered_target - C.RollTheDice(owner) - -/datum/action/vehicle/sealed/Cannon - name = "Toggle Siege Mode" - desc = "Destroy them with their own fodder!" - button_icon_state = "car_cannon" - -/datum/action/vehicle/sealed/Cannon/Trigger() - if(istype(vehicle_entered_target, /obj/vehicle/sealed/car/clowncar)) - var/obj/vehicle/sealed/car/clowncar/C = vehicle_entered_target - if(C.cannonbusy) - to_chat(owner, span_notice("Please wait for the vehicle to finish its current action first.")) - C.ToggleCannon() - -/datum/action/vehicle/sealed/Thank - name = "Thank the Clown Car Driver" - desc = "They're just doing their job." - button_icon_state = "car_thanktheclown" - var/last_thank_time - -/datum/action/vehicle/sealed/Thank/Trigger() - if(istype(vehicle_entered_target, /obj/vehicle/sealed/car/clowncar)) - var/obj/vehicle/sealed/car/clowncar/C = vehicle_entered_target - if(world.time >= last_thank_time + 60) - var/mob/living/carbon/human/clown = pick(C.return_drivers()) - owner.say("Thank you for the fun ride, [clown.name]!") - last_thank_time = world.time - C.ThanksCounter() -// [/CELADON-ADD] - /datum/action/vehicle/ridden/scooter/skateboard/ollie name = "Ollie" desc = "Get some air! Land on a table to do a gnarly grind." diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index c411ea5caa78..d7b65c30682c 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -167,9 +167,6 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C /// used for narcing on underages var/obj/item/radio/Radio - // [CELADON-ADD] - VENDING_CASH - Добавляем вендингам аккаунт для денег - var/datum/bank_account/vending/bank_account - // [/CELADON-ADD] /// restocks venders every hour if this is true var/restock_hourly = FALSE @@ -202,11 +199,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C Radio = new /obj/item/radio(src) Radio.listening = 0 - // Машины на аванпостах сохранят значение all_items_free = TRUE если оно было установлено на карте. - // [CELADON-EDIT] - CELADON_BALANCE_VENDING - Машины на аванпостах сохранят значение all_items_free = TRUE если оно было установлено на карте - // if(istype(get_area(src.loc), /area/outpost) || istype(get_area(src.loc), /area/ruin)) // ORIGINAL - if(all_items_free && istype(get_area(src.loc), /area/ruin)) - // [/CELADON-EDIT] + if(all_items_free && istype(get_area(src.loc), /area/ruin)) // [CELADON-EDIT] - CELADON_BALANCE_VENDING - Машины на аванпостах сохранят значение all_items_free = TRUE если оно было установлено на карте all_items_free = FALSE /obj/machinery/vending/Destroy() @@ -568,11 +561,9 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C squish_part = C.bodyparts[zone] if(!squish_part) continue - if(IS_ORGANIC_LIMB(squish_part)) - var/type_wound = pick(list(/datum/wound/blunt/severe, /datum/wound/blunt/moderate)) - squish_part.force_wound_upwards(type_wound) - else - squish_part.receive_damage(brute=30) + var/severity = pick(WOUND_SEVERITY_MODERATE, WOUND_SEVERITY_SEVERE, WOUND_SEVERITY_CRITICAL) + if(!C.cause_wound_of_type_and_severity(WOUND_BLUNT, squish_part, severity, wound_source = "crushed by [src]")) + squish_part.receive_damage(brute = 30) C.visible_message( span_userdanger("[C]'s body is maimed underneath the mass of [src]!"), span_userdanger("Your body is maimed underneath the mass of [src]!"), @@ -846,40 +837,6 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C return C.mining_points -= price_to_use else - // [CELADON-EDIT] - CELADON_FIXES - // var/datum/bank_account/account = C.registered_account - // if(coin_records.Find(R) || hidden_records.Find(R)) - // price_to_use = R.custom_premium_price ? R.custom_premium_price : extra_price - // if(price_to_use && !account.has_money(price_to_use)) - // say("You do not possess the funds to purchase [R.name].") - // flick(icon_deny,src) - // vend_ready = TRUE - // return - - // var/datum/bank_account/payment_account = payment_account_ref.resolve() - // if(payment_account) - // payment_account.transfer_money(account, price_to_use) - // else - // account.adjust_money(-price_to_use, "vendor_purchase") - // SSblackbox.record_feedback("amount", "vending_spent", price_to_use) // CELADON-EDIT - ORIGINAL - // var/datum/bank_account/account = C.registered_account - // if(price_to_use) - // if(account.has_money(price_to_use)) - // var/datum/bank_account/owner = private_a - // if(owner) - // owner.transfer_money(account, price_to_use) - // else - // account.adjust_money(-price_to_use, "vendor_purchase") - // SSblackbox.record_feedback("amount", "vending_spent", price_to_use) // НАШЕ - // [/CELADON-EDIT] - - //[CELADON-EDIT] - VENDING_CASH - Перенёс определение настоящей цены выше - /* var/datum/bank_account/account = C.registered_account - if(coin_records.Find(R) || hidden_records.Find(R)) - price_to_use = R.custom_premium_price ? R.custom_premium_price : extra_price - [/CELADON-EDIT-ORIGINAL] */ - //[/CELADON-EDIT] - //[CELADON-EDIT] - VENDING_CASH - Добавил собственный счёт в вендомат var/datum/bank_account/account if(useMachineAccount) diff --git a/code/modules/vending/autodrobe.dm b/code/modules/vending/autodrobe.dm index 4883e71bd91e..5302db333c97 100644 --- a/code/modules/vending/autodrobe.dm +++ b/code/modules/vending/autodrobe.dm @@ -7,52 +7,6 @@ product_slogans = "Dress for success!;Suited and booted!;It's show time!;Why leave style up to fate? Use AutoDrobe!" vend_reply = "Thank you for using AutoDrobe!" products = list( - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - /obj/item/clothing/suit/chickensuit = 1, - /obj/item/clothing/head/chicken = 1, - /obj/item/clothing/head/beret/vintage = 1, - /obj/item/clothing/head/beret/archaic = 1, - /obj/item/clothing/glasses/monocle =1, - /obj/item/clothing/head/bowler = 1, - /obj/item/clothing/head/plaguedoctorhat = 1, - /obj/item/clothing/suit/imperium_monk = 1, - /obj/item/clothing/suit/chaplainsuit/holidaypriest = 1, - /obj/item/clothing/suit/chaplainsuit/whiterobe = 1, - /obj/item/clothing/head/wizard/marisa/fake = 1, - /obj/item/clothing/suit/wizrobe/marisa/fake = 1, - /obj/item/clothing/head/witchwig = 1, - /obj/item/clothing/suit/wizrobe/fake = 1, - /obj/item/clothing/head/wizard/fake = 1, - /obj/item/clothing/head/rabbitears =1, - /obj/item/clothing/head/sombrero = 1, - /obj/item/clothing/head/sombrero/green = 1, - /obj/item/clothing/suit/poncho = 1, - /obj/item/clothing/suit/poncho/green = 1, - /obj/item/clothing/suit/poncho/red = 1, - /obj/item/clothing/suit/whitedress = 1, - /obj/item/clothing/head/jester = 1, - /obj/item/clothing/suit/hooded/ian_costume = 1, - /obj/item/clothing/suit/hooded/bee_costume = 1, - /obj/item/clothing/head/cueball = 1, - /obj/item/clothing/head/delinquent = 1, - /obj/item/clothing/head/shrine_wig = 1, - /obj/item/clothing/suit/shrine_maiden = 1, - /obj/item/clothing/suit/changshan_red = 1, - /obj/item/clothing/suit/changshan_blue = 1, - /obj/item/clothing/suit/cheongsam_red = 1, - /obj/item/clothing/suit/cheongsam_blue = 1, - /obj/item/clothing/head/powdered_wig = 1, - /obj/item/clothing/glasses/sunglasses/garb = 2, - /obj/item/clothing/under/rank/civilian/clown/blue = 1, - /obj/item/clothing/under/rank/civilian/clown/green = 1, - /obj/item/clothing/under/rank/civilian/clown/yellow = 1, - /obj/item/clothing/under/rank/civilian/clown/orange = 1, - /obj/item/clothing/under/rank/civilian/clown/purple = 1, - /obj/item/clothing/mask/gas/sexyclown = 1, - /obj/item/clothing/under/rank/civilian/clown/sexy = 1, - /obj/item/clothing/mask/gas/sexymime = 1, - /obj/item/clothing/under/rank/civilian/clown/jester = 1, - // [/CELADON-ADD] /obj/item/clothing/under/costume/gladiator = 1, /obj/item/clothing/head/helmet/gladiator = 1, /obj/item/clothing/under/rank/command/captain/suit = 1, @@ -96,10 +50,6 @@ /obj/item/clothing/under/dress/sundress = 1, /obj/item/staff/broom = 1, /obj/item/staff = 3, -// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - /obj/item/clothing/under/rank/civilian/mime/sexy = 1, - /obj/item/clothing/under/rank/civilian/mime/skirt = 1, -// [/CELADON-ADD] /obj/item/clothing/mask/rat/bat = 1, /obj/item/clothing/mask/rat/bee = 1, /obj/item/clothing/mask/rat/bear = 1, @@ -132,27 +82,12 @@ /obj/item/clothing/glasses/blindfold = 1, /obj/item/clothing/mask/muzzle = 2) premium = list( - // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS - /obj/item/clothing/under/rank/civilian/clown/rainbow = 1, - /obj/item/clothing/suit/chaplainsuit/clownpriest = 1, - /obj/item/clothing/head/clownmitre = 1, - /obj/item/clothing/shoes/roman = 1, - /obj/item/clothing/suit/hooded/mysticrobe = 1, /obj/item/clothing/suit/pirate/captain = 2, /obj/item/clothing/head/pirate/captain = 2, /obj/item/clothing/head/helmet/roman/fake = 1, /obj/item/clothing/head/helmet/roman/legionnaire/fake = 1, /obj/item/clothing/under/costume/roman = 1, - /obj/item/shield/riot/roman/fake = 1, /obj/item/skub = 1) - contraband = list( - /obj/item/clothing/suit/judgerobe = 1, - /obj/item/clothing/accessory/fan_mime_pin = 1, - /obj/item/clothing/accessory/fan_clown_pin = 1, - /obj/item/clothing/glasses/sunglasses = 2, - /obj/item/clothing/glasses/blindfold = 1, - /obj/item/clothing/mask/muzzle = 2) - // [/CELADON-ADD] refill_canister = /obj/item/vending_refill/autodrobe default_price = 90 extra_price = 180 diff --git a/code/modules/vending/boozeomat.dm b/code/modules/vending/boozeomat.dm index c836d9027ec8..c4c26507e7df 100644 --- a/code/modules/vending/boozeomat.dm +++ b/code/modules/vending/boozeomat.dm @@ -4,10 +4,7 @@ icon_state = "boozeomat" icon_deny = "boozeomat-deny" products = list( // All of drink dispenser reagents should be available here. - // [CELADON-ADD] - CELADON_FOOD_AND_DRINKS - /obj/item/reagent_containers/food/drinks/soda_cans/synthanol = 10, - // [/CELADON-ADD] - /obj/item/reagent_containers/food/drinks/drinkingglass = 30, + /obj/item/reagent_containers/food/drinks/drinkingglass = 30, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass = 12, /obj/item/reagent_containers/food/drinks/modglass/small = 10, /obj/item/reagent_containers/food/drinks/modglass = 10, @@ -39,6 +36,7 @@ /obj/item/reagent_containers/food/drinks/coffee = 8, /obj/item/reagent_containers/food/drinks/ale = 6, /obj/item/reagent_containers/food/drinks/beer = 8, + /obj/item/reagent_containers/food/drinks/mead = 8, /obj/item/reagent_containers/food/drinks/bottle/gin = 5, /obj/item/reagent_containers/food/drinks/bottle/whiskey = 5, /obj/item/reagent_containers/food/drinks/bottle/tequila = 5, diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index 77da964ac039..21c79a0abd1a 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -10,28 +10,6 @@ /obj/item/storage/backpack = 4, /obj/item/storage/backpack/satchel = 4, /obj/item/storage/backpack/duffelbag = 4, - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - /obj/item/clothing/head/beanie/christmas = 3, - /obj/item/clothing/head/beanie/rasta = 3, - /obj/item/clothing/head/kippah = 3, - /obj/item/clothing/head/taqiyahred = 3, - /obj/item/clothing/glasses/monocle = 1, - /obj/item/clothing/head/sombrero = 1, - /obj/item/clothing/suit/poncho = 1, - /obj/item/clothing/suit/vapeshirt = 1, - /obj/item/clothing/neck/cloak/cape = 3, - /obj/item/clothing/neck/cloak/cape/white = 3, - /obj/item/clothing/neck/cloak/cape/zavod = 3, - /obj/item/clothing/neck/cloak/cape/hospital = 3, - /obj/item/clothing/neck/cloak/cape/armsman = 3, - /obj/item/clothing/neck/cloak/cape/elysium = 3, - /obj/item/clothing/neck/cloak/cape/elysium/white = 3, - /obj/item/clothing/under/el_cloth_1 = 5, - /obj/item/clothing/under/el_cloth_2 = 5, - /obj/item/clothing/under/el_cloth_3 = 5, - /obj/item/clothing/under/el_cloth_4 = 5, - /obj/item/clothing/head/beret/elysium = 5, - // [/CELADON-ADD] /obj/item/clothing/head/beanie = 3, /obj/item/clothing/head/soft = 3, /obj/item/clothing/head/beanie/black = 3, @@ -155,10 +133,8 @@ /obj/item/clothing/suit/jacket/letterman_nanotrasen = 1, /obj/item/instrument/piano_synth/headphones/spacepods = 1) refill_canister = /obj/item/vending_refill/clothing - // [CELADON-REMOVE] - CELADON_ECONOMY - Вынесено в модуль. Иначе оверайд будет - // default_price = 10 - // extra_price = 60 - // [/CELADON-REMOVE] + default_price = 10 + extra_price = 60 light_mask = "wardrobe-light-mask" light_color = LIGHT_COLOR_ELECTRIC_GREEN diff --git a/code/modules/vending/medical_wall.dm b/code/modules/vending/medical_wall.dm index 2e2028cc8f27..5e04bdf93eb8 100644 --- a/code/modules/vending/medical_wall.dm +++ b/code/modules/vending/medical_wall.dm @@ -1,7 +1,6 @@ /obj/machinery/vending/wallmed name = "\improper OutpostMed" desc = "A vending machine filled with medical supplies, provided to you free of charge by the Outpost Authority." - icon = 'mod_celadon/_storage_icons/icons/resprite/wallmed.dmi' //[CELADON-ADD] - Меняем путь к спрайтам icon_state = "wallmed" icon_deny = "wallmed-deny" density = FALSE @@ -9,8 +8,8 @@ armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50) resistance_flags = FIRE_PROOF refill_canister = /obj/item/vending_refill/wallmed - default_price = 35 // [CELADON-EDIT] - OUTPOST_MED_BALANCE // default_price = 50 - extra_price = 200 // [CELADON-EDIT] - OUTPOST_MED_BALANCE // extra_price = 100 + default_price = 50 + extra_price = 100 tiltable = FALSE restock_hourly = TRUE light_mask = "wallmed-light-mask" diff --git a/code/modules/vending/security.dm b/code/modules/vending/security.dm index 4fa9a849c547..9797deb96068 100644 --- a/code/modules/vending/security.dm +++ b/code/modules/vending/security.dm @@ -155,10 +155,12 @@ ) voucher_items = list( - "SL AL-655 Energy Rifle" = /obj/item/gun/energy/e_gun/e_old/hades, // [CELADON-ADD] - CELADON_RETURN_EGUN - "NT-E-Rifle" = /obj/item/gun/energy/e_gun/e_old, // [CELADON-ADD] - CELADON_RETURN_EGUN - "E-TAR SMG" = /obj/item/gun/energy/e_gun/e_old/smg, // [CELADON-ADD] - CELADON_RETURN_EGUN - "E-SG 500" = /obj/item/gun/energy/e_gun/e_old/iot, // [CELADON-ADD] - CELADON_RETURN_EGUN + // CELADON EDIT START + "SL AL-655 Energy Rifle" = /obj/item/gun/energy/e_gun/e_old/hades, + "NT-E-Rifle" = /obj/item/gun/energy/e_gun/e_old, + "E-TAR SMG" = /obj/item/gun/energy/e_gun/e_old/smg, + "E-SG 500" = /obj/item/gun/energy/e_gun/e_old/iot, + // CELADON EDIT END "SL AL-655 Energy Rifle" = /obj/item/gun/energy/sharplite/al655, "NT-E-Rifle" = /obj/item/gun/energy/sharplite/x12, "E-TAR SMG" = /obj/item/gun/energy/sharplite/l305, diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 7da6dd37ce91..296e49b0b5fc 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -2,10 +2,8 @@ icon_state = "refill_clothes" /obj/machinery/vending/wardrobe - // [CELADON-REMOVE] - CELADON_ECONOMY - Вынесено в модуль. Иначе оверайд будет - // default_price = 200 - // extra_price = 500 - // [/CELADON-REMOVE] + default_price = 200 + extra_price = 500 input_display_header = "Returned Clothing" light_mask = "wardrobe-light-mask" @@ -165,11 +163,7 @@ /obj/item/clothing/head/soft/black = 2, /obj/item/clothing/mask/bandana/skull = 2 ) - contraband = list( - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - /obj/item/clothing/suit/hooded/enginseer = 2, // WS edit: enginsineer robes - // [/CELADON-ADD] - /obj/item/organ/tongue/robot = 2) + contraband = list(/obj/item/organ/tongue/robot = 2) refill_canister = /obj/item/vending_refill/wardrobe/robo_wardrobe extra_price = 300 /obj/item/vending_refill/wardrobe/robo_wardrobe @@ -383,18 +377,6 @@ vend_reply = "Thank you for using the ChapDrobe!" products = list(/obj/item/storage/backpack/cultpack = 1, /obj/item/clothing/head/beret/service = 1, //WS edit - berets - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - /obj/item/clothing/suit/chaplainsuit/nun = 1, - /obj/item/clothing/head/nun_hood = 1, - /obj/item/clothing/suit/chaplainsuit/holidaypriest = 1, - /obj/item/clothing/suit/hooded/chaplainsuit/monkhabit = 1, - /obj/item/clothing/head/kippah = 3, - /obj/item/clothing/suit/chaplainsuit/whiterobe = 1, - /obj/item/clothing/head/taqiyahwhite = 1, - /obj/item/clothing/head/taqiyahred = 3, - /obj/item/clothing/suit/chaplainsuit/monkrobeeast = 1, - /obj/item/clothing/head/beanie/rasta = 1, - // [/CELADON-ADD] /obj/item/clothing/accessory/pocketprotector/cosmetology = 1, /obj/item/clothing/under/rank/civilian/chaplain = 1, /obj/item/clothing/under/rank/civilian/chaplain/skirt = 2, @@ -407,10 +389,6 @@ /obj/item/clothing/head/clownmitre = 1, // [/CELADON-ADD] /obj/item/toy/plush/narplush = 1) - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - premium = list(/obj/item/clothing/suit/chaplainsuit/bishoprobe = 1, - /obj/item/clothing/head/bishopmitre = 1) - // [/CELADON-ADD] refill_canister = /obj/item/vending_refill/wardrobe/chap_wardrobe /obj/item/vending_refill/wardrobe/chap_wardrobe machine_name = "ChapDrobe" @@ -467,9 +445,6 @@ /obj/item/clothing/accessory/armband/hydro = 4, /obj/item/storage/backpack/satchel/vir = 2) contraband = list(/obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 1, - // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN - /obj/item/clothing/head/plaguedoctorhat = 1, - // [/CELADON-ADD] /obj/item/clothing/mask/gas/plaguedoctor = 1) refill_canister = /obj/item/vending_refill/wardrobe/viro_wardrobe /obj/item/vending_refill/wardrobe/viro_wardrobe diff --git a/dependencies.sh b/dependencies.sh index 671c39390775..39461f0e50ab 100755 --- a/dependencies.sh +++ b/dependencies.sh @@ -21,7 +21,7 @@ export NODE_VERSION_PRECISE=16.13.0 export SPACEMAN_DMM_VERSION=suite-1.8 # Python version for mapmerge and other tools -export PYTHON_VERSION=3.9.0 +export PYTHON_VERSION=3.10.0 #auxmos repository export AUXMOS_REPO=https://github.com/shiptest-ss13/auxmos diff --git a/html/changelogs/AutoChangeLog-pr-2844.yml b/html/changelogs/AutoChangeLog-pr-2844.yml deleted file mode 100644 index 66d92b789992..000000000000 --- a/html/changelogs/AutoChangeLog-pr-2844.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: Gristlebee -changes: - - {bugfix: speedloaders and en-bloc clips not being able to hold other ammo types - of the same caliber} - - {bugfix: 45-70 ammo holders descriptions changed to reflect that they're ammo - boxes and hold 12 rounds} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-2855.yml b/html/changelogs/AutoChangeLog-pr-2855.yml deleted file mode 100644 index 0e88d073bb7c..000000000000 --- a/html/changelogs/AutoChangeLog-pr-2855.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: meemofcourse -changes: - - {bugfix: Dual sabers should no longer be invisible} -delete-after: true diff --git a/html/changelogs/archive/2024-03.yml b/html/changelogs/archive/2024-03.yml index e09b9d1f4c7a..46fb4085b2a2 100644 --- a/html/changelogs/archive/2024-03.yml +++ b/html/changelogs/archive/2024-03.yml @@ -208,3 +208,47 @@ 2024-03-23: Zevotech: - rscadd: Remapped the Meta-class and changed its faction to NT +2024-03-26: + Gristlebee: + - bugfix: speedloaders and en-bloc clips not being able to hold other ammo types + of the same caliber + - bugfix: 45-70 ammo holders descriptions changed to reflect that they're ammo boxes + and hold 12 rounds + meemofcourse: + - bugfix: Dual sabers should no longer be invisible +2024-03-27: + PositiveEntropy: + - bugfix: The 4.6x30mm ammunition box is no longer invisible. + SomeguyManperson: + - tweak: radiation structures/effects only irradiate their surroundings if near + a player +2024-03-28: + Apogee-dev: + - tweak: Made the Riggs-class sloop nicer to live in + - balance: Removed RnD and ORM from the Riggs + FalloutFalcon: + - bugfix: extra > in carbon examine + - code_imp: various missing icon unit tests + - bugfix: to many sprites to name + MarkSuckerberg: + - tweak: Medical kiosks no longer charge for their service + - admin: The economy subsystem now tracks how much money is currently in-round + - admin: Adds feedback for the movement of money + - rscdel: FULLY removes departmental budgets + - rscdel: Removes security record citations + PositiveEntropy: + - imageadd: Inteq helmets no longer have in-built goggles. + retlaw34: + - rscadd: adds PGF Sergeant clothing! + - rscadd: PGF Captain now has a new cloak design! + - balance: PGF armor now has similar stats to bulletproof armor! +2024-03-29: + Gristlebee: + - bugfix: 38 Surplus ammo should be printable in the autolathe. + - bugfix: 38 speedloader damage blurb is accurate to it's new stats. +2024-03-31: + Gristlebee: + - tweak: Geysers can now be plunged with a normal plunger. + - tweak: Schmiedeberg's reinforced plunger replaced with a normal plunger + - rscdel: Reinforced plungers + - imagedel: Reinforced plunger sprites diff --git a/html/changelogs/archive/2024-04.yml b/html/changelogs/archive/2024-04.yml new file mode 100644 index 000000000000..ac70dad771a3 --- /dev/null +++ b/html/changelogs/archive/2024-04.yml @@ -0,0 +1,146 @@ +2024-04-01: + phoaly, coleminerman, MeeMofCourse, Retlaw34: + - rscadd: Added the Crying Sun-class + - rscadd: Added PGF comms +2024-04-02: + goober3: + - tweak: Blood Cult content has been removed from all maps. + - rscdel: Jungle_demon.dmm, jungle_witch.dmm, lavaland_surface_cultaltar.dmm, lavaland_surface_fuckedupandevilclub.dmm, + clericden.dmm, and rockplanet_cult.dmm have been removed. + - tweak: Onehalf.dmm, rockplanet_crash_cult.dmm & icemoon_underground_abandoned_village.dmm + have been reworked slightly, to feature no more magic. +2024-04-08: + Apogee-dev: + - tweak: Remapped the Shetland + - balance: Removed RnD and ORM from Shetland + phoaly: + - tweak: tweaks supplies and kills the wall laptop on the Ranger +2024-04-09: + Imaginos16, spookywastaken: + - rscadd: Resprites a ton of gun magazines + - bugfix: Changes how magainzes with only a empty and loaded state are +2024-04-12: + Gristlebee: + - rscadd: Punching bags can be built with 5 cloth. + - rscadd: Bench press and chest press can be built with 5 metal. + - rscadd: Exercise equipment can be deconstructed. + Martinpachu: + - bugfix: Fixes MAA on the Colossus not being able to access the bridge. + Sadhorizon: + - tweak: Random blood packs now can roll Elzu and IPC blood. + SomeguyManperson: + - bugfix: anesthetic can no longer semi permanently knock people out + Yata9ar4su: + - rscadd: Fullscreen on F11 + Zxaber: + - tweak: You can now use drop / use inhand hotkey to retract and deploy arm implants + meemofcourse: + - rscadd: Long-range bluespace technologies in fax machines now allow the faxing + of photos. I am not responsible for any consequences that might result from + sending your faction's command personnel a photo of your character's ass. + phoaly: + - rscdel: Removed some old ships + - tweak: Aspawned the Lagoon and Junker + sapphicoverload, PestoVerde322, PacifistDalek: + - rscadd: turbines now provide thrust for ships + - tweak: turbines respect conservation of energy instead of moving gas around for + free + - tweak: turbine control console now shows the internal pressure of the turbine + - code_imp: refactored how gas flows through the turbine + - bugfix: fixed turbines making free energy from nowhere at low RPM + - bugfix: fixed turbines forcing air into the output turf when it's blocked + - bugfix: fixed turbines not updating air at the input and output turfs + - bugfix: fixed turbines disconnecting when docking and undocking + - imageadd: new turbine sprites + thgvr: + - rscadd: Suicide & Execution with a damaging firearm is now more deadly and gruesome. +2024-04-13: + FalloutFalcon: + - tweak: all radios start off + - tweak: all survival boxs start with a radio + Sun-Soaked: + - rscadd: Redesigns landmines as an item that can be picked up, disarmed, deployed. + Some logic courtesy of /tg/. + - rscadd: Adds a proximity explosive variant of landmines. + - bugfix: shrapnel embedding once again respects targeted limb and no longer runtimes + on hitting a wall or destroying an object. + - bugfix: storage can no longer pick up anchored objects, causing them to get stuck + inside + - balance: Nerfs the ability of heavy explosions to immediately breach to space + - soundadd: adds two mine detonation noises + - code_imp: moves weapon manufacturer defines to a DEFINE file + generalthrax: + - rscadd: Etherbor SG-8 Beam Pistol to cargo for 1000 credits + - rscadd: Etherbor BG-12 Beam Rifle to cargo for 3000 credits + - rscadd: Etherbor civilian weapon cells for 600 credits, slightly higher capacity + than the generic cells +2024-04-17: + Gristlebee: + - tweak: Granularizes Outpost Spacesuits and Armor + - balance: Reduces the cost of specialized space suits + SomeguyManperson: + - tweak: ships no longer have intrinsic gravity + - rscadd: new gravity generator machine for ships + - tweak: planetary gravity is now stored level-wide, a ship landing at a planet + will be effected by the planet's gravity + meemofcourse: + - tweak: Identification Cards are now Access Cards. The only real difference is + that your name only shows up on a double examine. + - refactor: Anonymous mechanics. Characters no longer instantly recognize each other, + and need to properly memorize each other in order. You can recognize an unmasked + person by ctrl-shift-clicking them. +2024-04-18: + goober3: + - bugfix: Wall lockers should be facing the right way again. +2024-04-19: + FalloutFalcon: + - bugfix: epty list +2024-04-20: + Apogee-dev: + - balance: removed armor value from Solgov hats + - balance: Removed armor from berets, peaked caps, and soft caps + FalloutFalcon: + - spellcheck: renames some species stuff + Gristlebee: + - bugfix: The laser gun can be bought at the outpost again. + Hardly: + - tweak: Kissing volume and range has been reduced. Kissing cannot be heard beyond + 5 ranges or behind walls. + PositiveEntropy: + - imageadd: The Pointman Hardsuit that Inteq uses has been cleaned up! + Sadhorizon: + - soundadd: Sarathi firespit now has a unique sound. + SomeguyManperson: + - rscdel: tesla coils and rad collectors can no longer print monopoly money + Spookypineapple, Imaginos, Thgvr: + - rscadd: New sofa and comfy chair variants, both are craftable with metal + - imageadd: Sofas, Comfy chairs, and some atmos equipment have a new coat of paint + - imageadd: Janitorial equipment has a new coat of paint + Sun-Soaked: + - bugfix: planetary static anomalies no longer drop a broken spawner. + - code_imp: mob spawners now store a weakref on their spawned object + cuddleandtea: + - admin: faster access to advanced build mode + - admin: new relocate subtype for build mode + generalthrax: + - bugfix: Scarborough + gun typos fixed in cargo + - rscadd: Kepori can now *click and *whistle, complete with sounds. + - rscadd: Kepori can now *woop, to have a sound later. + - rscadd: Vox can now *click and *thump, with sounds as well. + jlsnow301, sun-soaked: + - rscadd: do_afters and do_mob actions now show nearby players a spinning cog while + in progress. + - bugfix: the progressbar.dmm file is no longer misspelled "progess"bar +2024-04-21: + FalloutFalcon: + - rscdel: Removed firing pins + - rscdel: Removed clumsy checks on guns + cuddleandtea: + - admin: adds color type to variables +2024-04-25: + Gristlebee: + - bugfix: Model H and Prototype Gauss Rifle mags are no longer invisible +2024-04-27: + Sadhorizon: + - tweak: Replaced standard syndicate outfits with NGR outfits on the Hyena. + - rscadd: Added NGR-specific CE and Assistant outfits. diff --git a/html/changelogs/archive/2024-05.yml b/html/changelogs/archive/2024-05.yml new file mode 100644 index 000000000000..9e6c28996774 --- /dev/null +++ b/html/changelogs/archive/2024-05.yml @@ -0,0 +1,186 @@ +2024-05-02: + thgvr: + - imageadd: Nanotrasen outfits have a new coat of paint +2024-05-04: + Apogee-dev: + - bugfix: fixed missing object descriptions on nanotrasen uniforms +2024-05-06: + Anticept: + - tweak: intercomms, widebands, and headsets default speaker on again. Handhelds + remain off by default. + - balance: pure soulus dust now makes 20u per reaction, and system cleaner is not + required. + Martinpachu: + - balance: The detective's revolver is now priced at 600 credits instead of 1000. + - balance: The detective's revolver size is now Small. + - rscadd: The Candor may now be bought from the outpost. + PositiveEntropy: + - rscdel: Removes the Arrhythmic Knife. + SomeguyManperson: + - tweak: match rounds will no longer consider the person firing them as a viable + target when ricocheting + SuhEugene: + - admin: made invisimin admins invisible for HUDs and ghosts + Sun-Soaked: + - bugfix: weird uncertainty around the name of EXOCOM. EXOCON is not real. +2024-05-09: + PositiveEntropy: + - rscadd: The HP Firebrand, HP Scout, HP Contender, .38 Derringer and Double Barrel + Shotgun are now purchasable in the outpost store. + - bugfix: The Disposable Gun crate is now granularized. + - rscdel: The Scarborough Revolver is no longer purchasable in the outpost store. +2024-05-10: + meemofcourse: + - rscadd: Helmets now have a small, two-item storage. You can put goggles in there, + and it might overlay them. +2024-05-14: + Gristlebee: + - rscadd: Elzu rooting + - tweak: Max age for elzu characters can be 300. + Martinpachu: + - tweak: Riot shield crates now contain only one shield but are priced at 600 credits. + MassiveMen: + - rscadd: Hawaiian Shirt is now in loadout + - tweak: Hawaiian Shirt is now Floral Shirt + - tweak: New item description teehee + SomeguyManperson: + - bugfix: static anomalies can now be safely approached if mindshielded, wearing + a research scanner, or deaf, not all three at the same time +2024-05-16: + FleetingExpertise: + - rscadd: Added new sprites for the plunger, rolling pin and push broom by FleetingExpertise + - rscadd: Most knifes in the game have been resprited! +2024-05-18: + spookypineapple: + - imageadd: Snowy grass, suit storage units, bookcases, and chem machines have been + resprited +2024-05-20: + MarkSuckerberg: + - rscadd: Autowiki generated reagents list page +2024-05-21: + Apogee-dev: + - tweak: Made the Delta more obviously affiliated with N+S Logistics + FalloutFalcon: + - balance: some xeno stuff needed nerfs + - bugfix: fixed a bunch of xeno issues + - rscdel: deleted some bad recipes like a golden horn, black carpet, aitater, and + legion staff + - code_imp: organized recipe files + Gristlebee: + - rscadd: A bunch of new items for the Black Market catalogue + - rscadd: Two new Black Market Tabs, Explosives and Emergency + - rscadd: Sawn off Illestren typepath + - rscdel: Black Market Teleportation + - rscdel: Space Ninja mask and Clown Tears from Black Market + - tweak: Black Market Uplink uses a micro laser instead of an ansible for crafting + - tweak: Black Market descriptions and examines + - tweak: Black Market Uplinks link directly to a specific LTSRBT + - balance: Black Market item price and stock adjusted + - balance: LTSRBT is faster + - code_imp: pair_item var for Black Market items + Martinpachu: + - rscdel: Removed the bible from loadout, as well as the religion and deity names + because god is dead. Clown and mime names too. + - balance: The civilian etherbor weapons have been made larger (the SG-8 being normal + sized and the BG-12 being bulky sized) + Sadhorizon: + - tweak: Sarathi max age is now 175. + SomeguyManperson: + - rscadd: you can now attach plungers to people by hand, rather than throwing + Sun-Soaked: + - rscadd: Volumetric storage on backpacks. + - rscadd: trash bags now have more storage space, but only make a small amount of + their contents accessible at any given time. + Zevotech: + - rscadd: Remaps lavaland_surface_biodome_winter.dmm + - rscdel: Removes the "Undead Eskimo" mob + generalthrax: + - rscadd: Add mood-boosting vivifier cybernetic implants to boost your mood to Cybernetic + Implants node. Preservation of the sense of taste not included + - rscadd: Adds a hacked variant of the above (not yet obtainable) to give terrible + mood to those installed with it! + meemofcourse: + - rscadd: Tortuga-class. + - rscadd: Brawler-class. + - rscdel: Ember-class. + - rscdel: Scar suit. + - tweak: Frontiersmen outfits start with less stuff. + retlaw34: + - rscdel: Vela-class, is this even player facing? + - rscadd: Variants of clip outfits + - rscdel: reinforced trapper hat + - rscadd: resprites the indie sec suit and it's clip variant + - tweak: Some extremely minor code tweaks + - rscadd: adds support to make adding species variants easier, jesus christ it was + bad before. + - rscadd: snouted variant support for sprites +2024-05-22: + Zevotech: + - rscadd: rockplanet_shippingdock.dmm and associated code +2024-05-25: + FalloutFalcon: + - rscdel: Removed comms consoles from ruins and ships + PositiveEntropy: + - imageadd: Computers now look sleeker! + SomeguyManperson: + - bugfix: mech laser cargo crate is no longer unbuyable + Zevotech: + - rscdel: Plastic flaps no longer block atmos +2024-05-28: + Anticept: + - tweak: All pacman and its variants now have the same sheet burn times. Superpacmans + are no longer the vastly inferior generator. + Gristlebee: + - rscadd: Generic Ammo Boxes, printable in the autolathe + - rscadd: Ammo cans are printable in the autolathe + - bugfix: Ammo boxes sometimes not properly updating their materials + - rscdel: Elzu can no longer change their color with the multitool or emag. + Martinpachu: + - rscadd: Double bedsheets, fit for double beds, are now craftable via cloth. + Mirag19: + - bugfix: Fix revolver ammo check + Skies-Of-Blue: + - bugfix: fbp and rilena hoodies now work as intended + SomeguyManperson: + - bugfix: melee hermits now pull from the "survivor" loot variant rather than no + loot variant + - bugfix: hermits can no longer commit mitosis + - tweak: hermit loot has been compactified, defaults are now declared in the object + rather than initialize, and variant-specific loot now uses a switch statement + - bugfix: all hermits now have pocket loot randomized as intended + - tweak: reduces the cash bundle melee hermits can drop from a medium random (500-3000) + to small random (100-500) bundle since they are quite common + - bugfix: prismwine's burn resistance can no longer end up stacking + Spyroshark, Sun-Soaked: + - rscadd: A movable physics subsystem, deployed using a component. + - rscadd: Bullet casings now drop using movable physics + - code_imp: ports NO_PIXEL_RANDOM_DROP from TG. + Thera-Pissed: + - tweak: SSUs draw power to decontaminate + - balance: lights no longer take 60% of a ships power, machines use more to account + for this. + - code_imp: added standardized defines for power usage + Zevotech: + - rscdel: Clown and mime fan quirks have been removed + - rscdel: Removes the clown and mime fan pins +2024-05-29: + Apogee-dev: + - tweak: Syndicate mobs have been renamed to Ramzi Clique mobs. New sprites will + come later. + Gristlebee: + - rscadd: Holopads now display the location of the last holopad that called them + on examine. + - code_imp: Span macros for hologram.dm + - rscadd: Autolathe can print holofield controllers. + - rscadd: You can sync blastdoors and holofields to a controller in a button with + a multitool + - code_imp: span macros for blast doors, buttons and holofields +2024-05-30: + PositiveEntropy: + - rscadd: Solarian Marine Bi-ologists now have proper representation in the form + of a cute cloak! +2024-05-31: + Gristlebee: + - bugfix: Auto unloading for gate loaded revolvers + INFRARED_BARON, PositiveEntropy: + - imageadd: Resprites nearly every mech! diff --git a/html/changelogs/archive/2024-06.yml b/html/changelogs/archive/2024-06.yml new file mode 100644 index 000000000000..d39c3b4431ae --- /dev/null +++ b/html/changelogs/archive/2024-06.yml @@ -0,0 +1,366 @@ +2024-06-01: + FalloutFalcon: + - rscadd: Added new more varied legion corpses + - rscdel: Removed lot of the crappy legion corpses + - balance: rebalanced most of the old legion corpses + - refactor: moved most legion corpse loot behavior to outfits + - tweak: tweaked the new ore + Gristlebee: + - rscadd: Suit Storage Unit construction + - rscadd: Added suit storage unit circuit boards to industrial engineering tech + - tweak: Suit storage unit examines + - tweak: span class to span macros in suit_storage.dm + INFRARED_BARON: + - imageadd: All mechs have been successfully resprited, including the Mauler, Marauder + and Seraph now! + Skies-Of-Blue: + - tweak: mugs referencing an ancient terran empire have been confiscated by the + confederation. Please enjoy your complementary, generic mug in compensation + - bugfix: rds based delusions now pass without the player having to relog, thank + god + - bugfix: rds can once again be treated with mindbreaker toxin (hopefully) + - tweak: the pool of possible delusions has been changed to better reflect shiptest's + narrative + - rscadd: a base ramzi sprite to simple_human.dmi to be used in the changed delusion + pool + - rscdel: chat warning message for rds users not to grief. Just be cool about it, + okay? + SomeguyManperson: + - bugfix: fueled thruster throttling now works right + Sun-Soaked: + - rscadd: World icon element. + - rscadd: World icons for combat knives. + thgvr: + - rscadd: Roundstart ships no longer spawn +2024-06-02: + Skies-Of-Blue: + - rscdel: removes the roundjoin "welcome to /tg/ station" audio clip + SomeguyManperson: + - bugfix: black market secret documents are no longer default documents + - balance: the shoddy survivor suits found on hermits are now actually worse than + the EXOCOM explorer suits +2024-06-03: + Apogee-dev: + - balance: security belts and webbings can no longer store bulk ammo boxes, only + magazines + - tweak: Ship-specific access restrictions have been enabled. + - tweak: Pirate ships no longer spawn docked to the outpost. + FalloutFalcon: + - bugfix: Fixed plant analyzer examine block styling + - tweak: rewrites trickwine for brewers + - rscadd: You can trip landmines with a well placed throw + - rscadd: New interaction with throwing things at bottles, lights, and bear traps + - bugfix: The end of finalize no longer gets called twice and targeting items seems + like an intended behavior that was lost + - rscdel: Removed goofball legion disease + - refactor: spawning guns without mags are handled with a define + - refactor: refactored hostile humans + - bugfix: fixed free smart fridge circuit board from drying rack + - rscadd: Smokers rejoice! You can now pick your favorite type of nicotine delivery + system. + - rscadd: Smokers have a choice between most brands of cigarette, cigars, a vape, + or a pipe! + - code_imp: sorted code owner stuff and added me to some files + - bugfix: fixed create and destroy test fail + - tweak: tweaked id card examine information and formating + - bugfix: human examine bug when middle aged + - rscdel: Removed moths getting one shot by a flyswatter + - code_imp: camera/autoname/LateInitialize() optimization + - tweak: granularizes a handful of tool and machine supply packs! + - admin: Improved the silly little menu, HA HA I have messed up your muscle memory!! + u + Gristlebee: + - tweak: Defib crate now contains a single defib, priced 750 + - tweak: Granularizes mech equipment + - tweak: mech cargo pack descs + - rscadd: Asteroid ore veins + Hardly: + - rscadd: Added some style to the flavor text popup + - bugfix: Fixed flavor text not accepting certain characters or new lines + - tweak: Changed up Flavor Text editing text a bit + - tweak: Flavor text's max length has been chopped from 4096 to 1024 + Sadhorizon: + - tweak: Moved most of contraband items out of vendor contraband. + - rscadd: Added DromaderyCo packets to the cigarette vendors. + - tweak: Increased nicotine amount to three in the cigarette vendors. + Skies-Of-Blue: + - balance: chemical mindbreaker is now ten times as potent! Be gay, do crime, and + hallucinate in the process + SomeguyManperson: + - bugfix: hallucination anomalies now trigger if you aren't wearing proper protection + (as opposed to only triggering if you are) + - bugfix: gun sawing can now only be done with proper equipment (usually a saw)) + - bugfix: bandoliers now hold the correct amount of bullets (several more) + - balance: the brimstone can now be pumped faster. Enjoy your rilena. + Sun-Soaked: + - bugfix: shoutgun casing bounce sfx now plays as intended. oopsies. + - rscdel: Removes sexy clown costumes from spawners + - config: tweak option removed from changelog template + Zevotech: + - rscdel: Removed nonfunctioning coffee machines and their cargo packs + - rscadd: Adds the Elzuose color salve, a product that allows Elzuose to change + their glow color upon application. + '[Watermelon914](https://github.com/Watermelon914)': + - code_imp: ports little itty bitty sendsignal optimization from tg + meemofcourse: + - balance: The Elder's Illesterns and Arrows are now factory-variant. + - bugfix: The Runner should be able to dock now. + 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 +2024-06-07: + Sun-Soaked: + - bugfix: combat knives and their subtypes now once again have sprites. + Zevotech: + - rscadd: remapped and renamed ashwalker_shrine into lavaland_surface_buried_shrine + - rscadd: Necropolis walls have been renamed to thick stone walls. + rye-rice: + - 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 +2024-06-08: + Apogee-dev: + - bugfix: fixed an incorrect sprite state on corpo sofas + FalloutFalcon: + - rscdel: Removed alot of magic cruft + - code_imp: Sorts gun defines into there own file + SomeguyManperson: + - bugfix: gunslinger applies its spread reduction effect to revolvers + Sun-Soaked: + - bugfix: removes a comment from apc.dm that was causing strange errors. + thgvr: + - imageadd: Kepori have been given a full visual overhaul. +2024-06-09: + SomeguyManperson: + - tweak: bleeding is now stored in the limbs, functioning similarly to bone breaking. + Taking damage over a certain threshold and amount (lower for sharp weapons) + will cause part of it to be turned into bleeding. + - tweak: gauze, tape, and bleeding suppression are similarly no longer abstracted + into a "bleed suppression" value + - rscadd: you can now cauterize bleeding with a lighter. Which is cool. + - rscadd: you can now also cauterize bleeding with suit storage decontamination. + Which is hot. + - rscadd: examine and examine closely will show whether or not someone is visibly + bleeding or bandaged. This means people who are both will show both. Examine + closely additionally shows which limbs are currently bleeding. + - tweak: heparin now causes existing bleeding to worsen, instead of causing bleeding + on its own + - tweak: you can no longer cut the throat of someone who's head has been lopped + off + Zevotech: + - bugfix: Planets should no longer spawn without ruins when generating due to bad + map datums + - rscdel: Removed 3 Beach ruins + - rscdel: Removed 4 Iceplanet ruins + - rscdel: Removed 11 Jungle ruins + - rscdel: Removed 10 Lavaland ruins + - rscdel: Removed 8 Rockplanet ruins + - rscdel: Removed 7 Sandplanet ruins + - rscdel: Removed 7 Rockplanet ruins + - rscdel: Removed 15 Space ruins + - rscdel: Removed 16 unused/removed ruin code files + - rscdel: Removed a whole lot of old/unused ruin code from misc files + - tweak: Tweaked various ruins and one ship to fix issues and remove unused items +2024-06-10: + PositiveEntropy: + - rscadd: CLIP now reports the presence of so-called "Flame Troopers" of the Frontiersmen + terrorizing their territories... + - balance: Marine armor has improved armor stats at the cost of the bulk slowing + down the wearer. + - balance: Flamethrowers have a slightly improved effective range, as well as higher + damage. + - imageadd: The Frontiersmen have gotten better tailors and now look sharp and deadly! + Skies-Of-Blue: + - rscadd: several new SUNS-produced genemods have hit the public market! Head to + your local gene-clinic and ask about their new dog and rabbit options for more + details + - balance: fox ears have been tweaked to be just as susceptible to sound as cat + ears +2024-06-11: + 'CoiledLamb ': + - rscadd: Resprites the eggbox + Gristlebee: + - code_imp: Switchblades are now pathed under obj/kitchen/knife + - imageadd: Switchblade sprites moved from items and weapons.dmi to knife.dmi + Sadhorizon: + - rscadd: Pickaxe was added to the autolathe. + meemofcourse: + - rscadd: PGF jobs now grant you the Kalixcian Common language +2024-06-13: + FalloutFalcon: + - rscdel: Removed alot of chaplain stuff we will never use + - rscdel: The chaplain is now just as magic as the average person + Gristlebee: + - rscadd: Wrecked Factory ruin + - rscadd: Indestructible titanium walls + - rscadd: Lavaland atmos subtypes for plating, rusted plating, concrete, white and + dark turfs + - balance: Syndicate Space Simple Mobs have their max temp increased + - tweak: Wall_lockers updatepaths on the Aegis + - code_imp: Adds ruin to map_catalogue,txt, lavaland.dm and adds it to lavaland.dm + areas + - rscadd: Techshell box + - rscadd: Techshells to the outpost market for 175 credits + - tweak: Scatter ion description + - balance: Techshell recipes no longer require higher tier stock parts, adjusts + scatter laser, scatter ion, dragonsbreath and pulse slug recipes + - balance: Buffs scatter lasers, scatter ion and dragonsbreath + PositiveEntropy: + - rscadd: The Hardliners have now made a proper appearance in the Frontier! + Sadhorizon: + - rscadd: Added the Sunskipper-class Culinary Vessel. + - rscadd: Every drink and booze dispenser drink is in the booze-o-mat now. + - rscadd: Added bottles for triple sec, lemon juice, creme de cacao and creme de + menthe. + - rscdel: Removed the Boyardee-class Entertainment Vessel. + - rscdel: Independent chefs no longer get kitchen cqc. + - tweak: The "syndicate waiter's outfit" renamed to just "waiter's outfit". + - tweak: Indpenedent bartenders now start with a waistcoat. + - tweak: Edited waiter's outfit. Also, the role now gets kitchen access. + - tweak: Independent cooks now start with laceup shoes. + meemofcourse: + - rscadd: SUNS 3x6 logo decal, SUNS tiles, SUNS emblem floor decal, Desk and Wall + flag, folders, PDA, cards, locker, bedsheets, and headsets. +2024-06-14: + Gristlebee: + - bugfix: Posibrains/MMI pilots being permaslept on mech destruction +2024-06-15: + Rye-Rice: + - imageadd: Rylie Was Forced To Resprite Concrete when she was 6! +2024-06-16: + DIB-DOG: + - rscadd: Added 1 Raksha Helmet to the sergeant's locker on the PGFN Crying Sun +2024-06-17: + meemofcourse: + - code_imp: A lot of SUNS decals. +2024-06-18: + '@thestripes, @meemofcourse , @GenericDM ': + - tweak: reflavors nearly every drink ingame + SomeguyManperson: + - rscadd: you can now put organs inside burgers or on pizzas +2024-06-19: + Anticept: + - bugfix: Generic adjective selection will show for everyone. + FalloutFalcon: + - bugfix: fixed multiple of the do_afters not working due to misplaced args + PositiveEntropy: + - rscadd: The Hunters of Illestren have now allowed for Hunter Collignes, Machinists + and Flamebearers to now roam the Frontier aboard their humble fleet! + - imageadd: The Saint Roumain's Militia has been fully resprited! + - imageadd: All SRM jobs now have unique HUD icons! + - imageadd: The Unknown Job HUD icon has been resprited! + SomeguyManperson: + - bugfix: mobs will no longer stick around after being butchered sometimes + Yata9ar4su: + - bugfix: Atmos mask sprite +2024-06-20: + FalloutFalcon: + - admin: reverted filling admin context menus with alot of not useful stuff by rehiding + it behind a toggle. + Gristlebee: + - rscadd: Energy guns show how much charge and shots they have remaining, or if + it doesnt have a cell installed on examine. + - code_imp: span classes to span macros for energy.dm + Sadhorizon: + - tweak: SRM cabinets - namely, Hunter's, Shadow's and Flamebearer's - now use cabinet + sounds. + Skies-Of-Blue: + - balance: you can now float over tables when in 0g + - balance: you no longer shatter glass tables when floating + SomeguyManperson: + - balance: 9mm boxes are now cheaper than other pistol calibers to account for the + lower damage per bullet + generalthrax: + - bugfix: The black market sawed off Illestren is now actually sawed off, and can + fit on your belt + - bugfix: The presawn double barrel shotgun can now fit on the belt like normal + sawn off double barrels + - rscdel: Removed invisible limb armour from Gezenan marine + navywear + - rscadd: Allowed Gezenan armour to hold all guns like normal armour + - bugfix: Fixed Montagne hat description to reflect the fact it is no longer armoured +2024-06-21: + FalloutFalcon: + - rscadd: Bank accounts are now handled through cash cards! You now spawn with a + wallet to store your extra card! + Gristlebee: + - balance: Motorized wheelchairs consume less power on move + Thera-Pissed: + - rscadd: Added Hydrogen, and Combustion Thrusters to go with! + rye-rice: + - rscadd: Adds a war correspondent for CLIP. +2024-06-22: + Anticept: + - bugfix: Dialed down the loudness of a couple Kepori sounds + - bugfix: Kepori wooping now has the audible flag. + - bugfix: Whistling now varies in pitch + PositiveEntropy: + - imageadd: SUNS trimline decals are now properly aligned. + Sadhorizon: + - rscadd: Bone Talisman and Hunter's Necklace were added to loadout. + - tweak: Bone Talisman and Hunter's Necklace were reflavored into good lack charms. + They are no longer armored. + - tweak: Wolf talisman crafting recipe now requires less stuff. + - bugfix: Blue wall locker sprites are no longer flipped. + SomeguyManperson: + - balance: crystal legion spawn 1 less skull per spawn wave, now 1 (like normal + legion) + - balance: brimdemon beams now have a fade-in effect before dealing damage, making + it harder to get instantly chunked for a quarter of your health + - balance: brimdemons can no longer aggro on you before you can see them + - balance: radiation collectors are now significantly more stingy about the potency + of the radiation they will process. Don't expect old nuclear waste or openly + stored uranium to do much. + - balance: radiation collectors also produce significantly more power from the remaining + viable sources + Thera-Pissed: + - bugfix: infinite negative power draw while calling your grandmother no longer + happens. + - bugfix: fixed volume pumps for mapping. + blinkdog: + - bugfix: Cleaned up some logic in revolver safety + generalthrax: + - bugfix: Tadrixx Float has a sprite again + - rscadd: You can now tail thump if you have a tail instead of it being tied to + species +2024-06-25: + Martinpachu: + - rscadd: Cargo guns and certain guns in ships now come inside cases alongside some + magazines, the ammo now comes separately for safety reasons. +2024-06-27: + Gristlebee: + - tweak: Saber SMG stock folds + - tweak: TEC-9 Pistol is now automatic and normal sized + - balance: Combat shotgun is now bulky, and the compact combat shotgun is normal. + Martinpachu: + - rscadd: A technique for gunslinger with the lever-action flaming arrow! Firing + it while wielded will quickly and automatically rack the lever, less quickly + than a .38 revolver or fanned shadow though. + - rscdel: The +5 damage and AP bonus on the shadow while using it as a gunslinger. + Sadhorizon: + - rscdel: Miners and Cargo Technicians no longer get QM access. + SomeguyManperson: + - bugfix: cyborgs can touch people again + - code_imp: robotic limbs will always have healing prioritized over being cauterized + if treated with a welder + generalthrax: + - rscdel: Tranquility reagent no longer turns you into a gondola + - bugfix: Fixed typos in the Shadow and Montagne revolvers + - bugfix: Black market rusted reds no longer flash into dust when you purchase them + thestripes: + - rscadd: Added Kepori names, surnames, and a list for the char gen to draw from. + Remember to update your character names! + - rscdel: Removed old Kepori name gen system and a bit of lore from the species + blurb diff --git a/html/changelogs/archive/2024-07.yml b/html/changelogs/archive/2024-07.yml new file mode 100644 index 000000000000..9f9679a752b3 --- /dev/null +++ b/html/changelogs/archive/2024-07.yml @@ -0,0 +1,167 @@ +2024-07-01: + Skies-Of-Blue: + - bugfix: you can now rotate wheelchairs, just as god intended +2024-07-02: + GenericDM: + - bugfix: fixes exactly one typographical error somewhere in the code +2024-07-03: + Cloudbreak: + - code_imp: Typographical error fixed. +2024-07-04: + Latentish: + - rscadd: Added the Panacea-class + - rscdel: Removed the Aegis-class + generalthrax: + - bugfix: Fixed Comet Trail, Molten Bubbles, and Sunset Sarsaparilla glass sprites +2024-07-06: + Sadhorizon: + - bugfix: Dog beds start anchored now. Mobs can no longer move while buckled. + rye-rice: + - rscadd: Resprites the E-50 and gives it proper inhands now! + - bugfix: The Syndicate sniper rifle fires at a normal rate of fire and has the + correct recoil now. +2024-07-09: + Apogee-dev: + - bugfix: N+S Captains no longer spawn with Nanotrasen coats. + - balance: reduced default ship spawn limit to 1. + - bugfix: Cargo pods no longer land in Talos maint + - bugfix: Gas tanks on the Talos have higher security + - bugfix: Talos now has an autolathe in cargo + Sadhorizon: + - rscadd: Added a plastic flower - a selection of flowers to wear. Added it to the + loadout too. + SapphicOverload: + - rscadd: Adds an igniter and button to the TEG of every ship that was missing one + - rscdel: Removed the welding tool TEG chute some ships had + SomeguyManperson: + - bugfix: loadout boxes will no longer sometimes not spawn + - code_imp: People who are stunned are now more reliably passed by bullets not aimed + directly at them + generalthrax: + - rscdel: Removed some irrelevant old tips of the round + - rscadd: Added 80+ new tips more relevant to Shiptest's gameplay loop +2024-07-10: + Cloudbreak: + - bugfix: A few clothing items now properly display again for Vox. + meemofcourse: + - rscadd: Minor changes to the Tortuga. + - bugfix: The holofields on the Tortuga-class and Brawler-class now work. +2024-07-11: + Cloudbreak: + - code_imp: Fixes a singular typo within the code. + Martinpachu: + - balance: Pizzas have become cheaper. (6000 cr - 3000 cr) + PositiveEntropy: + - bugfix: Mars and Venus are now referred to by their correct names! + - bugfix: You can now store guns, ammunition, and melee weapons on the armor slot + when equipping a SolCon/SolGov hardsuit, and its subtypes! + generalthrax: + - rscdel: Removed tator tots and raw potato wedges +2024-07-12: + generalthrax: + - rscdel: Removed mice possession + - rscdel: Broad removal of forcesays from most reagents and items + - rscdel: Removed char reagent and spraytan overdose + - rscdel: Removed gibbering lines + - rscdel: Removed Chav, Swedish, Elvis mutations + - rscadd: The outpost is now offering bounties to defuse landmines to Frontier vessels. + meemofcourse: + - balance: Remapped the Valor, with two extra jobs (Shuttle Corpsman, Shuttle Pilot). + - code_imp: The Vanguard base outfit starts with gear. +2024-07-13: + FalloutFalcon: + - bugfix: pets no longer cause run times trying to open ship doors + - bugfix: no longer have to reinsert your id into your wallet for access + - rscadd: A new generic nest used across all planets + - rscdel: Old portal and tendrils and other cruft + - refactor: refactorted mob spawners to have one for each planet + Gristlebee: + - bugfix: 357 guncase spawns with the correct revolver + Skies-Of-Blue: + - balance: you can now fit radios and pill bottles in both hoodies and winter coats + - bugfix: the innate storage on winter coats has been restored, alt click to access! + SomeguyManperson: + - bugfix: brute damage is now required to break bones + TiberianEuan: + - rscadd: Black hoodie with grey hood. + - imageadd: New hoodie icons. + cuddleandtea: + - admin: new light maker subtype for build mode + generalthrax: + - bugfix: Fixed the Landmine mission description and flavoured it a little + - balance: Decreased the amount of landmines required for its mission and increased + the value per mine slightly + - rscdel: Capsaicin no longer Boils you +2024-07-15: + FalloutFalcon: + - refactor: refactored attachments to be modular + Sadhorizon: + - tweak: Changed sunskipper's prefix to SV. + - bugfix: Added a missing pipe to the sunskipper. + Skies-Of-Blue: + - rscadd: typing indicators now trigger off of the command bar + - rscadd: an SSD Indicator for when you have been disconnected for less than three + minutes + - balance: players will now remain awake for three minutes after disconnecting, + with a new SSD icon to boot! + - balance: players SSD longer than three minutes will lose their icon and fall asleep, + much like the previous behavior + SomeguyManperson: + - bugfix: gun cargo packs now act more as they would be expected to +2024-07-17: + FalloutFalcon: + - rscadd: Orbit menu is less cluttered and just shows the real name, hovering over + it shows their standard name. + - refactor: refactored express console to not be a subtype of the cargo console + and replacing it. + Martinpachu: + - balance: Doubled the price on every automatic gun and added 250 credits to the + price of every semi-auto pistol. + Sadhorizon: + - tweak: Choice beacons were reflavored into choice boxes. + - rscdel: Removed a bunch of meme, weird and unused items from the loadout. + - tweak: Reflavored the Cybersun labcoat into a generic "translucent labcoat" + SomeguyManperson: + - bugfix: ships docked to eachother now share gravity +2024-07-18: + Fest1v3: + - rscadd: adds a few vox sprites + - bugfix: fixes a few vox sprites +2024-07-24: + DIB-DOG: + - bugfix: fixed the foodtype of two Gezenan drinks to match their descriptions + - rscadd: added a taste description to Keh'Lu'Tex Liqueur + Gristlebee: + - rscadd: Acquire Mission containers and Mission drills display their objective + type. + - rscadd: Changed name of base fish type to generic fish + SomeguyManperson: + - bugfix: the BG-16 is now as ammo efficient as the BG-12 + - bugfix: the BG-16 has automatic fire again + generalthrax: + - balance: Undoubles the price on every automatic gun and removed 250 from the price + of every semi-auto pistol. +2024-07-26: + Cloudbreak: + - rscadd: A new ruin, the Abandoned Listening Post. + - rscadd: Areas associated with the listening post. + - bugfix: Single line in maps catalogue. +2024-07-27: + Gristlebee: + - rscadd: Marker beacons can now be printed at the autolathe from the Misc tab +2024-07-31: + rkz, benbot(benjamin), Time-Green, SteelSlayer, floyd, Qustinuus, ArcaneDefence, FlowerCuco: + - rscadd: Food storage! Hide some glass in the captains cake! Begone digestive tract! + - rscadd: Bread, Cake and Spaghetti to Newfood + - rscadd: some smaller foods can now be eaten whilst on the run! (This ONLY applies + to newfood items thus far!) + - rscadd: converted edible component to work with newfood + - rscdel: oldfood for Bread, Cake and Spaghetti + - rscdel: Temporarily removes customfood bread, cake, pasta, and sandwiches + - tweak: edited a few messed up values + - tweak: food trash is sensible now. Finishing stuff like cake will actually spawn + a plate rubbish. Instead of you eating the plate, biggun, perhaps properly dispose + of it! + - bugfix: Wildly STUPID item weights. Candycorn and cakes are no longer the SAME + size + - code_imp: provides some semblance of sorting for signal defines diff --git a/html/changelogs/archive/2024-08.yml b/html/changelogs/archive/2024-08.yml new file mode 100644 index 000000000000..722a57377629 --- /dev/null +++ b/html/changelogs/archive/2024-08.yml @@ -0,0 +1,234 @@ +2024-08-02: + FalloutFalcon: + - rscadd: New admin button to launch a distress announcement quicker. + Sadhorizon: + - tweak: Cafe latte, iced coffee, hot ice coffee and soy latte now only make your + character jitter on OD. + - tweak: Reduced the prices of first aid kits. + - tweak: Remapped the Kilo-class Mining Ship + SomeguyManperson: + - rscadd: legion attacks will now inject an organ which eventually causes a transformation, + rather than instantly killing and transforming people. +2024-08-03: + Anticept: + - bugfix: Executing someone with a gun is back, you psychos. Paint the floor red! + Martinpachu: + - balance: 8x50 boxes now come with 25 ammo as opposed to 20. + Sadhorizon: + - tweak: Internals Crate now costs 100 credits and contains full oxygen tanks. + - tweak: Plasmaman Tank Kit renamed to Plasmaman Internals Crate. It now costs 100 + credits and contains full plasma tanks. + SomeguyManperson: + - bugfix: mini/energy gun cases no longer spawn with the wrong weapon in them + - balance: gun attachments are now small instead of normal sized + Yata9ar4su: + - bugfix: Cash bundle value will now be correct in chat, cash will not drop upon + stacking + firebudgy: + - rscadd: New sprites for Vox! Vanguard and Honorable Vanguard Battlecoat sprite + changes, NGR hard hats, and hazard vests! + generalthrax: + - rscadd: Industrial jacket now keeps you warm + - bugfix: Contender is now called the Beacon in cargo + zimon9: + - rscadd: an anesthetics crate +2024-08-04: + Apogee-dev: + - bugfix: Changed almost every player facing instance of the word "mech" to "exosuit" + - balance: Replaced syndie survival boxes in outfit datums with normal job-equivalent + boxes + FalloutFalcon: + - balance: nerfed legion money drops. + Gristlebee: + - rscadd: Sandbags can be deconed by click dragging them onto your mob. + - rscadd: Sandbags to the outpost for 150 credits. + Martinpachu: + - rscadd: Clips of all kinds (not magazines!) can now be produced on the autolathe. + - rscdel: Clip cargo packs, as they are now redundant. + PositiveEntropy: + - imageadd: Resprites muzzle flashes! + Sadhorizon: + - imageadd: Added directionals for mining processing consoles. + Thera-Pissed: + - bugfix: hydrogen and combustion bugs + Zevotech: + - balance: the Quirk Social Anxiety no longer silences you randomly + - bugfix: Stuttering is now far less extreme and will not delete characters + - bugfix: Psicodine now actually suppresses the effects of social anxiety + firebudgy: + - bugfix: Fixed three typos in the code. + phoaly: + - balance: Buffed LP hardsuits +2024-08-07: + Sadhorizon: + - tweak: Remapped the Dwayne-class Long Range Mining Transport. + - rscadd: Added a random plushie spawner and a random moth plushie spawner. + Thera-Pissed: + - rscadd: Chlorine and Hydrogen Chloride gases! Wear your goggles! +2024-08-10: + generalthrax: + - rscadd: Cleanbots now destroy cigarette butts, and dispense enough acid to do + so. + rye-rice: + - bugfix: indie sec hardsuit now shows up +2024-08-11: + firebudgy: + - rscadd: Sprites for several different kinds of scarves for Vox! + - rscadd: Additional sprites for several other items for Vox, such as chest-high + towels and hazard jackets. + - rscadd: Created onmob_neck_vox.dmi file, plus enabled support for it. + generalthrax: + - bugfix: Fixes the Industrial Jacket to be warm (For Real) + phoaly: + - balance: Talos Corpsman has been readded with a different medkit loadout. +2024-08-16: + OrionTheFox: + - rscadd: Suit Storage Units now provide feedback when Decontamination fails to + activate + - imageadd: Suit Storage Units now have a visible red light when Locked - when hacked, + Decontamination now has a red-yellow flashing light to distinguish from the + Locked light. +2024-08-18: + Cloudbreak: + - rscadd: Frontiersman sprites for the Vox! + Gristlebee: + - bugfix: water turfs reagent scooping + - code_imp: span classes to span macros + - refactor: acid turfs repathed under water + - refactor: Pouring out a reagent container is now bound to disarm intent instead + of help intent. + - rscadd: Examine hints for flipped tables + - bugfix: You can no longer phase through a flipped table. + meemofcourse: + - bugfix: Hardliner troopers should no longer spawn as Hardliner pilots +2024-08-20: + Aquidu: + - bugfix: Fixed a bug relating to literal spaghetti code. + zimon9: + - bugfix: fixed a short on the Shetland +2024-08-21: + FalloutFalcon: + - rscadd: Added var to let admins bypass do_teleport vlevel restriction + Sadhorizon: + - bugfix: Ranged frontersman with internals now drops the correct revolver type. +2024-08-22: + rye-rice, Imaginos16: + - rscadd: Adds new belt sprites +2024-08-23: + retlaw34, rye-rice, Apogee-dev: + - rscadd: Adds CLIPs weapons + - rscadd: Adds the New Frontiersmen weapons + - rscadd: 556 ammo box to cargo + - rscadd: inteq sprites should look better +2024-08-24: + generalthrax: + - rscdel: Removed a bunch of random items from fitting in wallets (notably screwdrivers, + cigarettes, suture / mesh / gauze) + - rscadd: Ship keys and derringers can now fit in wallets +2024-08-26: + Aquidu: + - rscadd: Rations now have icons that help show the contents. + - rscadd: Condiments and drink mixes now have colors when full to help show the + contents. + - rscadd: Unique sprites for the ration heater, drink packs ration drinks, and "side" + category rations. + - code_imp: Changes the sound effect for opening the drink ration to the bottle + cap sound to line up with the icon. + DIB-DOG: + - rscadd: Added a standard vest to the armory office locker + - rscadd: Added a Security camera console to the bridge + - balance: Silkenweave jackets and Betzu hats now provide cold protection but no + armor + - balance: Crying Sun now has 4 combustion/2 ion engines instead of 2/4 + - bugfix: Fixes turrets on the Crying Sun and its subshuttle, the Nail. + FalloutFalcon, MrSamu99, Fikou: + - rscadd: a few shipments of MOD control units have found there way to the frontier, + premium versions of existing hard suits with the latest tech! + - rscadd: Ported modsuits from tg, no mapped stuff yet + Gristlebee: + - balance: Durand shield consumes less charge on being hit, passive drain increased. + - bugfix: Mechs consume the correct amount of power on movement. + - refactor: normal_step_energy_drain is now base_step_energy_drain + - rscadd: Grills can now cook food. + - rscdel: Xeno-energy working as grill fuel. + - balance: Outpost food costs + - bugfix: Grills + Ms-Mee: + - bugfix: fixed handle_quirk_conflict behavior + Sadhorizon: + - bugfix: Gloves now show up in the loadout preview. + - rscadd: Brown gloves were added to the loadout. + - tweak: Moved everything out of autolathe contraband - you no longer have to hack + it, ever. + - rscdel: Removed foilhat, flamethrower, electropack, .357 casing and slime scanner + from the autolathe. + - rscadd: Added a bunch of new items to the loadout. + - tweak: Changed the description of red suspenders. + - rscadd: Ihejirka space outpost now has player-accessible cryogenics. + SomeguyManperson: + - balance: wormholes on the overmap no longer decay when used + Thera-Pissed: + - code_imp: TEG efficiency now depends on temperature delta. + Vekter: + - bugfix: Removed an extra fire extinguisher from the crew quarters on the IRMV + Talos. +2024-08-27: + Baystation12, Kapu1178, rye-rice: + - rscadd: Particles! + - rscadd: Bleeding has better feedback + - rscadd: Bone breaking now has sound effects + - rscadd: Getting shot now throws blood squirts! Live through the somme for REAL + this time! + - balance: gibbing no longer destroys your chest, no more legion transfers! + - bugfix: Lava particles should no longer destroy your FPS + FalloutFalcon: + - balance: Ballistic weapons now have a minimum camera shake. + - bugfix: Gunslinger now functions as intended. +2024-08-28: + Anticept: + - bugfix: Adjusted the Box Hospital Ship's engineering layout so that it's less + jank, and the power system doesn't loop on itself anymore. + FalloutFalcon: + - rscdel: Removed blob and alot of stuff close to blob + Gristlebee: + - rscadd: Weapon cells can be inserted directly into weapon chargers to charge them. + - bugfix: e40s not charging in weapons rechargers. + firebudgy: + - bugfix: Medical Examinations via Flashlight is now an option again. Check eye + health or see what's in someone's mouth! + meemofcourse: + - rscadd: Vox lore blurb + - bugfix: Inconsistent capitalization when speaking due to guestbook + - code_imp: Changed how the game recognizes Vox and Sarathi age + thgvr: + - imageadd: Kepori hardsuits now have a fallback icon +2024-08-29: + Apogee-dev: + - balance: SUNS and SolCon armor now uses standard armor rather than bulletproof + - balance: Normalized armor values between various faction helmets, coats, and vests + - balance: Armored coats now provide armor protection for the chest and groin only; + environmental protection unchanged + - bugfix: removed armor from some overlooked berets and soft hats + - refactor: Renamed the Mauler exosuit and several exosuit weapons to avoid confusion + Gristlebee: + - rscadd: Black Market Stock Cycling and item weighting + - rscadd: New black market stock + - rscadd: Tech and Ammo tab + - rscadd: Dead Drops + - rscadd: LTRSBT moved to the Black Market Catalogue + - rscadd: LTSRBT Crafting Recipe, 2 BS crystals, a bank card, 5 duct tape, a circuit + board and a network card + - rscadd: Reflavours the disco grenade + - rscadd: variable for powercells to show if they're rigged + - rscdel: Some old blackmarket stock + - balance: LTRSBT shipping cost up to 100 credits + - balance: Launch delivery more reliable + - bugfix: Powerfist works again + - spellcheck: fixed a few typos in the black market + - code_imp: Dynamic Overmap encounters store what ruins were spawned + - code_imp: get_block_portion and get_position_in_margin methods in mapzones.dm + - code_imp: Pair items now handled by a list + - refactor: Black Market item stocking +2024-08-30: + meemofcourse: + - rscadd: Character slots have been raised to 40. BYOND members get 50. diff --git a/html/changelogs/archive/2024-09.yml b/html/changelogs/archive/2024-09.yml new file mode 100644 index 000000000000..52b3cbfbf679 --- /dev/null +++ b/html/changelogs/archive/2024-09.yml @@ -0,0 +1,220 @@ +2024-09-04: + generalthrax: + - balance: E-40 is now slightly less expensive +2024-09-05: + Apogee-dev: + - balance: Removed electrical insulation from all gloves except insulated gloves + - balance: Removed siemens coefficient from hardsuits, except for engi atmos and + CE + - balance: Added siemens coefficient to engineer space suits + - balance: Replaced combat gloves with insulated gloves for some factions' engineer + lockers + Zevotech: + - bugfix: winter biodome and buried shrine ruins no longer have an egregious amount + of creature burrows + zimon9: + - bugfix: fixed typepath for 10mm rubber rounds +2024-09-07: + Martinpachu: + - rscadd: To-do once i get the proper names and all + Zevotech: + - bugfix: The "pulse carbine" in the sandplanet saloon has a sprite again + - tweak: Added some extra mobs to the sandplanet saloon to balance out the money + in it + meemofcourse: + - spellcheck: Human generic names (the ones that show up when you examine someone) + will be prefixed consistently +2024-09-09: + Gristlebee: + - rscadd: Adds the Mauler, Spitter, and Pounder to the black market + ZephyrTFA: + - server: CDN fully operational again after noticing an incorrectly absolute relative + path +2024-09-10: + Apogee-dev: + - balance: Made security hardsuits faster and blood-red hardsuits slower + - balance: Normalized some weird hardsuit speed outliers + - bugfix: NT captain gloves no longer lie about shockproofing + - balance: Reduced hollowpoint damage by 5 (and 8mm Hollowpoint by 6) + FalloutFalcon, MrMelbert, Coiax: + - code_imp: ported alot tg botany code along with gene desc and icons to be used + more soon + - refactor: moves most plant effects into genetics stuff + Gristlebee: + - rscadd: Bandolier auto-loading and examine hint + - rscadd: Welders/Plasmacutters now deal damage to wall integrity to decon + - rscadd: Plasmacutters are now engineering tools and fit in toolbelts. They can + damage ores into slag if used to mine. They are now researched with plasma technology + and advanced plasma technology. + - rscadd: Plasmacutters to cargo for 1250 + - rscadd: Adds plasmacutters to the Mudskipper, Riggs, Talos, Gecko, Heron, Osprey, + Ranger, Hyena, Komodo, Shetland and Twinkleshine + - rscdel: Plasmacutters extra mining range + - bugfix: Plasmacutters can repair prosthetic limbs like welders + - code_imp: Moves damage behavior of concrete walls to closed turfs. Basic walls + are now repaired with a welder. + - code_imp: R-walls d-state tied to their integrity. R-walls can be deconstructed + with plasmacutters. + - code_imp: Crate decon checks for tool behavior rather than a istype check + - rscadd: Gun safeties can be toggled from 1st level storage slots. + zimon9: + - rscadd: Adds a rubbershot box to the outpost market +2024-09-11: + FalloutFalcon: + - rscdel: Removed sheetz. Feel free to send me threats for this crime! + - rscadd: Added faction datums, this will be cool soon! + Sadhorizon: + - rscdel: Removed a lot of cruft from the loadout. + - rscdel: Removed flamethrower slapcrafting. + - rscdel: Removed the Tribal crafting tab (some items were moved to other tabs). + - rscdel: Removed bone club, skull helmet and bone armor from the bone construction + menu. +2024-09-13: + retlaw34, rye-rice, Apogee-dev, generalthrax, Tamamitsune, Nitha(emotional support): + - rscadd: Scarborough Arms for every syndicate faction + - rscadd: New sounds for the commander + - balance: scout's price has been reduced slightly + - rscdel: Donksoft toy guns + - bugfix: You can no longer attach shit to revolvers +2024-09-14: + FalloutFalcon: + - bugfix: no emergency for floor lights untill someone adds a sprite for them! + Gristlebee: + - rscadd: Adds binocs, lavaproof rods, gps, deep core mining scanner, anomaly neutralizer + to exploration cargo + - rscadd: You can hit veins with a deep core scanner on harm intent to stop it tracking, + and hit it again to readd it. + - rscadd: Deep core scanner fits in explorer webbing and explorer suits. + - balance: Outpost Cargo exploration tab + MemeSnorfer: + - rscdel: Removed forced emotes from most reagents. + ToasterBiome: + - bugfix: Centcom Ban DB is now accessible again through PP +2024-09-15: + FalloutFalcon: + - rscdel: Removed useless vars + Gristlebee: + - rscadd: Unsaftied guns can go off on their own. + - code_imp: Changes ammo casing firing code so it's able to work without a user. + Zevotech: + - bugfix: Certain Subshuttle engine prechargers have now been correctly rotated. +2024-09-16: + Gristlebee: + - bugfix: Misfires no longer have 100% chance +2024-09-18: + Bjarl: + - rscadd: You can now purchase concrete mix at the outpost. For concrete making. +2024-09-19: + FalloutFalcon: + - code_imp: ctf machines now only process while ctf is running + Rye-Rice, Gristlebee: + - rscadd: Comfortable Temperature ranges + - imageadd: Temperature HUD alerts +2024-09-21: + Bjarl: + - rscadd: The PGF now has it's own turret offerings. They come in light, normal, + and heavy flavor. + FalloutFalcon: + - code_imp: added ruin tags to ruin map templates to be used soon for stuff. + Gristlebee: + - rscadd: Inteq wintercoats and hoodies in the Talos, Colossus, Vaquero and Valor + uniform lockers + PositiveEntropy: + - rscadd: A new and refurbished Elite Syndicate suit has just been unveiled! + Sadhorizon: + - rscadd: Added "ballistic goggles" - new indie security clothing item. + - imageadd: Added Kepori bulletproof helmet sprites. +2024-09-22: + Bjarl: + - code_imp: Ship Turrets can now be attached to control consoles outside the area + they are in. please look at ship maps for examples on how. + - rscadd: Every single ship with turrets now does the above + PositiveEntropy: + - rscadd: Gorlex Splinters now have winter coats! + Sadhorizon: + - bugfix: Panacea-class is no longer an independent ship. +2024-09-23: + Bjarl: + - rscadd: You can now buy flares at the outpost + - rscadd: Wasteplanets now will generate concrete filled caves. +2024-09-24: + Apogee-dev: + - balance: Changed decoration on Miskilamo ships to look similar to each other + - balance: reduced Kilo starting funds to 1500 + - bugfix: fixed wires on Mudskipper + Bjarl: + - bugfix: turrets will now _actually_ connect to their console. i swear im a real + coder. + FalloutFalcon: + - code_imp: bunch of code organization related to melee + - refactor: cleaned up a bunch of melee items to have better inheritance and paths + PositiveEntropy: + - imageadd: Resprites all balaclavas! + Thera-Pissed: + - rscdel: unused did_fire var + - rscdel: B.E.P.I.S. and related tech nodes. + rye, erika: + - rscadd: concrete jugs have been replaced by much more appropriate concrete bags, + jee, i hope whoever made *that* blunder got fired. + thgvr: + - balance: Colossus now only has 2 recruit slots instead of a whopping !!5!! + - rscadd: A bunch of kepori underwear have sprites now + trazodont: + - bugfix: miso soup spelling error + zimon9: + - rscadd: Adds a bit more contrast to the output of health analyzers +2024-09-25: + Jedi-Toothpaste: + - bugfix: Added windows to the mudskipper and shetland's engines. + - bugfix: Adjusted the blast doors which open on the Shetland's engines. + SomeguyManperson: + - bugfix: sawn off illestren/improvised shotgun stats are now consistent if they + are spawned in +2024-09-26: + FalloutFalcon: + - rscadd: Added new blank shells for training drills! + - refactor: Minor refactor of design disks to reduce repeated code + - rscadd: Ballistics now have a minimum recoil, not enough to mess up your shot! + - bugfix: ships now start closed. shiptesters be writing there memos and ship names. + - rscadd: You can now see ships in the orbit menu and its alot prettier! + - code_imp: ported tg points of interest and a much improved orbit menu + Gristlebee: + - bugfix: fixes wall deconstruction causing runtimes + Jedi-Toothpaste: + - bugfix: Fixed the lack of windows for the Kilo's Thrusters, and fixed the broken + link for the new blast doors. + generalthrax: + - balance: Most common accessories now fit on pants + - rscadd: Exosuit Recharger machines are now available from cargo + - balance: Rust Reds on the blackmarket are now available to a maximum of 3 + zimon9: + - rscadd: Added fruit puree to vegan rations + - rscdel: Removed pizza crackers from vegan rations +2024-09-27: + Jedi-Toothpaste: + - rscadd: Firelocks to the Valor-Class' Doors + - rscadd: Lighting to dark areas on the Valor-Class' Doors + - rscadd: New areas on the Valor-Class to seperate rooms + - rscadd: Added APC for the Surgical Area + PositiveEntropy: + - imageadd: Adjusts the inner part of the normal rabbit ears. +2024-09-28: + Sadhorizon: + - rscadd: Added a fax machine to the Dwayne-class. + SomeguyManperson: + - bugfix: legion skulls will no longer check if they should rise up and consume + their owner if they are ownerless +2024-09-29: + fighterslam: + - balance: Modernizes and slightly buffs the Ranger. +2024-09-30: + Bjarl: + - rscdel: The Elephant Graveyard ruin has been taken out back + - bugfix: m90 posters are real again + FalloutFalcon: + - bugfix: sawnoff weapons made from init now function correctly + - bugfix: condiment packs are no longer invisible and missing names + MassiveMen: + - rscadd: Added the fire axe to the black market uplink + Thera-Pissed: + - rscadd: New wasteplanet ruin, the abandoned Miskilamo shipbreaking yard! diff --git a/html/changelogs/archive/2024-10.yml b/html/changelogs/archive/2024-10.yml new file mode 100644 index 000000000000..00628fe7d833 --- /dev/null +++ b/html/changelogs/archive/2024-10.yml @@ -0,0 +1,462 @@ +2024-10-01: + Erika Fox: + - rscadd: Anti-Radiation Foam is now available at the outpost + - code_imp: Fireaxe cabinets have been repathed, and now function as a more general + cabinet object. please report any inconsistencies with behavior + Sadhorizon: + - tweak: You can now put knives in secbelts and the subtypes of secbelts. + - bugfix: You can now fit all knives in mining webbings. + SomeguyManperson: + - bugfix: hallucinations can no longer be permanent unless treated +2024-10-02: + Bjarl: + - rscadd: One-Shot Rocket Launcher. A quick solution to an armored problem. + - rscadd: You can now scribble profane things onto the tube of your rocket launcher. + Use this power wisely. + - imageadd: 'Rye: A sprite for a one-shot rocket launcher' + generalthrax: + - balance: Molotov cocktails now create turf fires + - balance: Hearthwine now create turf fires in a 3x3 area + tmtmtl30, Thgvr: + - rscadd: Added bunkbeds, which can now be crafted with metal or placed by mappers. + - bugfix: Beds facing alternate directions now correctly support people buckling + to them and bedsheets being placed on top of them. +2024-10-03: + Bjarl: + - bugfix: defibs now work again. +2024-10-05: + Bjarl: + - rscadd: A cargo ship happened to lose an entire crate of Hammer Rocket Launchers + while travelling through the system. We have reason to believe they're probably + on sale now. + - rscdel: you can no longer purchase PML-9s on the black market. + Gristlebee, Rye-Rice, INFRARED_BARON: + - rscadd: Inteq Gygax and mech charges + - rscadd: Paladin shield backlash + - bugfix: Durand shield blocking all projectiles + - imageadd: Inteq Gygax sprites + Jedi-Toothpaste: + - rscadd: Added extra intercoms in high traffic areas on the Valor Class + - rscadd: Added Firelocks underneath the Cargo-Bay Doors on the Valor Class + - rscadd: Air Alarms, Scrubbers and Vents to every applicable room + MemeSnorfer: + - rscadd: Three new Elzuose horn types. Cervid, Prong, and Brow + PositiveEntropy: + - imageadd: Waste Planet Turfs Now Look Much More Refined! + Thera-Pissed: + - rscadd: pipe dispenser UI is now similar to rapid pipe dispenser UI. + generalthrax: + - balance: Replace red insuls with yellow insuls in syndicate toolboxes + zimon9: + - bugfix: fixed the waste and scrubber gas reclamation filters on the colossus +2024-10-06: + Apogee-dev: + - balance: removed one recruit slot from the vaquero + - rscadd: Added Nanotrasen Harrier-class cruiser + - rscdel: Removed Osprey-class cruiser + - rscdel: Removed Skipper-class cruiser + - balance: increased mudskipper limit to 2 + - balance: cut a deckhand slot from kilo + Bjarl: + - rscadd: IRMG engineers have rolled new turrets out into the frontier. Please report + back on their effectiveness. Unless you have been shot. Then you should be dead. + - rscadd: Sharplite has produced a line of turrets for Nanotrasen, which is now + mounting them on relevant vessels. + Sadhorizon: + - bugfix: Komodo Bridge Officer is now actually an officer. + SomeguyManperson: + - rscdel: missions will no longer request capturing ice demons + Thera-Pissed: + - rscadd: angle grinders for salvage + - rscadd: reworks plasma cutters for salvage +2024-10-07: + Aquidu: + - code_imp: Changes flameless ration heaters to "small" items + - code_imp: Adds flameless ration heaters to the ration pack item whitelist. + thgvr: + - imageadd: Some backpack sprites for Kepori + - imageadd: Shrunk down the sprite of guncases +2024-10-08: + Anticept: + - rscadd: Added more purchasable chemicals to outpost. + - rscadd: Added missing elemental chems to chem starter kit + - rscdel: removed sulfuric acid from chem starter set. You have to make it. + - imageadd: tweaked and added more elemental chemical jugs. + Bjarl: + - code_imp: A large amount of cruft has been deleted. + DrCrawler: + - rscadd: Gives IPCs a little more adjectives to work with. + - rscdel: Removed some duplicate adjectives from the raw file. + FalloutFalcon: + - code_imp: tweaks to the syntax of unit test logs to be more readable by humans + and flaky tests + FalloutFalcon, Mothblocks, Cyberboss: + - rscadd: retry failed unit tests. + PositiveEntropy: + - imageadd: We now have improved visuals for circuit boards! + Sadhorizon: + - rscadd: Cybersun Biodynamics stamp. + - rscadd: Cybersun secret documents. + - rscadd: Cybersun captain's safe. + SomeguyManperson: + - balance: you no longer need a lasso to ride a goliath + - rscdel: no more lasso + rye-rice, Imaginos16: + - rscadd: Resprites Wisp + thgvr: + - bugfix: fixed digitigrade combat/jackboots +2024-10-09: + PositiveEntropy: + - imageadd: Dog Beds Now Look Fancier! + - imageadd: Tank Dispensers have been repaletted! + - imageadd: Nuclear Waste Barrels Look A Lot Better! + Sun-Soaked: + - rscadd: Boxes are now volumetric. Some special boxes have been adjusted. + - balance: small objects in volumetric storage are now slightly smaller + zimon9: + - rscadd: Added flamethrower crate + - rscadd: Added incendiary grenade crate + - rscdel: Removed incendiary supply crate +2024-10-10: + Bjarl: + - bugfix: Turrets should now actually fire at their defined fire rates. + - balance: Factional turrets now have new damage thresholds + - balance: ship turrets now have 100 less integrity by default + FalloutFalcon: + - rscadd: Cats have been genetically engineered to detect radiation + Gristlebee: + - rscadd: PGF Rakalla space suits can hold a gun in their suit storage. + PositiveEntropy: + - imageadd: Long (And Short) Braid hairstyles have been redone! + zimon9: + - rscadd: Adds bowmans to Artificer and Enforcer loadouts, and regular headsets + to Recruit loadouts +2024-10-11: + Bjarl: + - rscadd: Reports of people inflicted with congenital analgesia travelling to the + Frontier have reached this newscaster. + - rscadd: Painkillers may circumvent pain in some cases now. + - rscadd: Please remember to ensure your soul is filled with spite before kicking + a rack. + - code_imp: abandoned airlocks now have more effects + FalloutFalcon: + - rscadd: Readdes world icons for a few knives. Expect more soon! +2024-10-13: + FalloutFalcon: + - rscadd: update path txt for ammo boxes, thgvr will be FIRED for forgeting this. + Imaginos16, rye-rice: + - rscadd: A few hairstyles have been resprited! + - rscdel: the Braided and Braid line of hairs. + thgvr: + - rscadd: Added bullet stacks, they allow you to stack ammo of the same type into + a group. + - balance: Changed old ammo boxes into storage items containing stacks of bullets + zimon9: + - bugfix: fixed halved throw range +2024-10-14: + Spooky, PositiveEntropy: + - imageadd: Smartfridges and Booze-O-Mats have been resprited! +2024-10-15: + Erika Fox: + - rscadd: Transfusion anomaly; yum! Blood! + - rscadd: Anomaly cores now have an effect when detonated out of the anomaly + - rscadd: new anomaly description fluff + Gristlebee: + - bugfix: Abandoned Miskilamo Shipbreaking Yard ruin has the correct revolver subtype. + - bugfix: Shipping dock ruin correctly has a rattlesnake instead of a ringneck case + Sadhorizon: + - rscadd: Added stamps for New Gorlex Republic. + - rscadd: Added secret documents for New Gorlex Republic. + - rscadd: Added a honorable corpsman stamp and tweaked honorable arti one. + - rscadd: Inteq ships now use inteq stamps. + - code_imp: Repathed IRMG and CLIP stamps. + firebudgy: + - bugfix: War Correspondent helmet has a proper sprite for Vox. + rye-rice: + - rscadd: Various sprite improvemnts + - bugfix: Boomslang no longer fits on the belt +2024-10-16: + Anticept: + - bugfix: blood smart-fridge selectable on smartfridge boards now when screwdrivering + them. + Apogee-dev: + - balance: Valor and Vaquero have combat hardsuits for their enforcers now + Bjarl: + - rscadd: NGR turrets + - rscadd: Flipped tables actually let you throw things over them now. + - rscadd: Holofans now have a small window before shutting down if they are deactivated + by lack of power + - balance: Syndicate smokes are now laced with stimulants instead of omnizine. + - rscdel: Holoparasites + - rscadd: The Frontiersmen have duct taped some turrets of their own together + FalloutFalcon: + - bugfix: ghosts cannot duplicate themselves across multiple z levels. + Gristlebee: + - bugfix: Fixes walls and an enemy spawn in the Wrecked Factory + Sadhorizon: + - bugfix: Pubby ruin can no longer randomly have acid in airlocks. + - tweak: Syndicate soap is now in-line with NT soap. + - rscdel: Syndicate tools are no longer faster. They are just reskinned normal tools + now. + - rscdel: Syndicate toolbox lost it's damage buff. + - rscdel: Removed Karl Marx from the game. + - rscdel: Removed all the job statues. + - rscdel: Cardborg suit, human, gondola and monkey skinsuits are no longer craftable. + firebudgy: + - bugfix: Mudskipper windows are correctly reinforced, like other ships by the same + manufacturer. + - rscadd: Active smoking pipe sprites for Vox. + zimon9: + - balance: increased amount of plasma in plasma internals cargo crate + - balance: rebalanced the probability of a grenade going off in one's hands + - bugfix: fixed fauna spawning after drill malfunctions +2024-10-17: + Bjarl: + - rscdel: South Bronx Paradise Bar + Gristlebee: + - rscadd: Ice Lodge Ruin Map and areas + - rscadd: Simple Mob Frontiersmen Flametrooper and Surgeon + - rscadd: shoot_point_blank option for simple mobs + - rscadd: dragon_fire_line supports igniting tiles + - rscadd: broken display case, gunpowder barrel, SRM corpse spawners, chemical jug + spawners + - rscdel: Cat Butcher + - bugfix: Frontiersmen simplemob pathing + - bugfix: Fence doors spawning open when they should be closed and vice versa + - code_imp: scattering can be disabled with auto_scatter var for bullets, grown + items and nutrient bottles + - bugfix: Shotgun calibers and shotguns being unable to load certain rounds + MemeSnorfer: + - imageadd: Resprites colored skirts, black tango, red evening gown, sailors dress, + sundress, white dress, and some suitskirts. + - rscadd: Six pinafore variants, white colored skirt, one shoulder dress, and iko-ikssoal + dress. + PositiveEntropy: + - imageadd: All colored jumpsuits have been resprited! + - rscdel: Rainbow and khaki jumpsuits (including the buster subtype) have been removed. + generalthrax: + - bugfix: Gezena has shoes again + - rscdel: Gezenan captain gloves no longer have partial insulation in parity with + other captain gloves. +2024-10-18: + DIB-DOG: + - rscdel: Removed extra turret that wasn't supposed to be on the ship + - bugfix: Moved armory flashbangs to a more secure location + Erikafox: + - rscdel: Wasteplanets no longer spawn welding fuel tanks. + SomeguyManperson: + - balance: being thrown over lava by tackling, jump boots, or with assistance now + fully clears the lava instead of burning you horribly and setting you on fire + generalthrax: + - bugfix: Fixed a typo in the Frontiersman softcap that made the sprite go invisible + meemofcourse: + - rscadd: Atlas-class Light Armored Crusier + rye-rice: + - rscadd: Resprites the commander and Commissioner +2024-10-19: + Apogee-dev: + - balance: Reduced Cobra-20 magazine size to 24 rounds + - bugfix: removed a typo from Scarborough cargo catalog entries + Erikafox: + - rscdel: Xenobiology (minus slimes) + - code_imp: pre-weld and pre-sealed airlock helpers for maps. + FalloutFalcon: + - rscadd: Autolathes can now print space heater boards. + - bugfix: examine on ammo casings now properly hint that you can write on them + Gristlebee: + - rscadd: Bullets can have a message written on them. + NithaIsTired: + - rscadd: Adds a ton of audible emotes and visible emotes like snapping your fingers + or twitching + - rscadd: You can boop people on the nose by clicking on their mouth with help intent + - rscadd: Sound variation with a few emotes like snapping and clapping + - rscadd: Laying down now plays a sound if you aren't on walk intent + Orchidthederg: + - bugfix: fallback sprite for dust storms was set to the carp sprite for some reason. + - imageadd: fancy new carp, meteor, and electrical storm + - imagedel: old carp, meteor, and electrical storm sprites + Spookywastaken: + - imageadd: Handrails have been resprited! + generalthrax: + - balance: E40 hybrid rifle ballistic mode now shoots faster +2024-10-20: + FalloutFalcon: + - balance: blind people can examine twice as fast + - code_imp: makes defines for the two primary atoms requirement lists +2024-10-21: + Apogee-dev: + - balance: Made Komodo aspawn +2024-10-22: + Imaginos, Erika: + - rscadd: The Pan Gezenan Federation has sent out shipments of boarding cutlasses + to the Frontier. Expect cool doohickeys on your friendly neighborhood PGF Vessel + - imageadd: 'Imaginos: PGF sord sprites' + - code_imp: sabres now take up less space in code +2024-10-23: + Erikafox: + - bugfix: Hallucination Anomalies will stay on their tile now. + - rscadd: You can now fax credit holochips + - bugfix: Analgesia can no longer be taken with self-aware + - bugfix: Few edge cases for analgesiacs getting pain + FalloutFalcon: + - bugfix: ammo + - refactor: refactored ammo types to not be snowflaked when handling spawning subtyped + guns + FeenieRU: + - code_imp: Changing qdel() and SSgarbage procs + - code_imp: rewrite /Destroy(force, silent) to /Destroy(force) + Sun-Soaked: + - rscadd: Directional Mines, implemented as Claymores. + - rscadd: Mines now have World Icons + - balance: explosions now only strip to space when a tile is already damaged + - bugfix: Prox mines explode from slightly further away & no longer activate through + walls. + - bugfix: Multiple mines can no longer be stacked on a tile + - code_imp: fire_casing() can now be called by non-mobs, allowing objects to shoot + casings. + - bugfix: cleans up mine wire datums on mine deletion + generalthrax: + - rscadd: Added Stamped Steel Machetes, 5 for 500 + meemofcourse: + - rscadd: A lot of ERTs and ERT remasters, including Fronties, Ramzi, PGF, NGR, + Indies and whatnot + - rscdel: Most Nanotrasen ERTs have been shelved pending assets + - rscdel: Smokebomb randomized descriptions +2024-10-24: + Erika Fox: + - rscadd: An abandoned tradepost has been located in the system. Investigate nearby + waste worlds for more information. + - rscadd: preburnt flares + Erikafox: + - rscadd: Kasagi-Fischer has begun a new production run of the venerable Raleigh-class + Corvette. See your purchaser's manual for more information! + - balance: Fireaxes on the black market now cost less. Thanks Kiirv-Waha! + FalloutFalcon: + - code_imp: better pr labeling for ships and ruins +2024-10-25: + Erikafox: + - bugfix: Newscasters can now read IDs through a wallet. + FalloutFalcon: + - refactor: refactored some mapping stuff including random spawners! + Gristlebee: + - rscadd: Vote sound changed to announce_dig.ogg + MemeSnorfer and Moffball: + - imageadd: Snouted balaclava sprites for both Sarathi and Elzuose + - code_imp: Elzuose snout type, for use with mask sprites + Sadhorizon: + - tweak: Medical stacks now work on corpses. + SomeguyManperson: + - balance: simple humans now have as much health as normal humans! This makes them + weaker! + - balance: simple humans now also benefit from their armor as much as normal humans! + This makes them stronger! + generalthrax: + - bugfix: Design disks work again + thgvr: + - balance: Removed Kepori damage modifiers. + - balance: Decreased Kepori move speed modifier. (They are still a bit faster than + average) + zimon9: + - bugfix: fixed the orbit menu search function so that names work again + - rscadd: Added plastitanium shards + - bugfix: fixed some artifacts in the plasma glass shard sprites +2024-10-26: + FalloutFalcon: + - rscadd: Faction statistics are now logged to the blackbox + - rscdel: Removes some cruft, red and blue team radios, out date/useless database + logging station trash cleaned + MarkSuckerberg: + - server: qdel logs work again +2024-10-27: + Anticept: + - refactor: Refactored moods so explicit newlines are not required in descriptions. + None of this changes player facing stuff. + 'Apogeesys, Ryerice, Erikafox ': + - rscadd: Serene Outdoors has begun a new production run of its classics - the Model + 17, Model 12, Model 15, and Model 11 + - rscdel: old combat shotgun + Erika - porting from /tg/ mostly.: + - rscadd: Tape Recorders now have a radial menu when used + - rscadd: Tape recorders now make noises + - rscadd: Tape recorders now have wires (can be remotely used) + Erikafox: + - balance: Hammer RPGs should no longer annihilate you completely. Just partially. + - bugfix: Weapons with no bolt can no longer be racked. Use your hand on them instead + - rscadd: Transceivers have been picking up an intermittent radio signal coming + from a nearby sand world. People with too much spare time - please check it + out. + - rscadd: Satchel Charges. Exceedingly rare and decently explosive. + - balance: Chances are, if there was a plasma cutter on a ship, it's an angle grinder + now. Rejoice. Cry in terror. Whatever honestly. + - balance: Angle grinders can now grind blast doors. reinforced windows are now + less bad to grind down. + - balance: angle grinder packs now slow you down less + - balance: angle grinders now sound less Screechy + - balance: angle grinders can now be safely used with a Bowman headset. + Sadhorizon: + - rscadd: All the inteq ships (and the beluga inteq office) now start with a rail + light for every gun. + - tweak: Rail light crate now costs 100 credits. + - rscadd: Added the Scarab-class Heavy Mining Ship + Sun-Soaked: + - bugfix: cleans up 3 potentially sticky refs + - bugfix: limb items no longer runtime when moved or dropped + - bugfix: vox blood & body damage overlays. + - imageadd: something something fixed vox overlays countless hours of work + - code_imp: replaced a horrifying var reference in clothing with a weakref + - code_imp: the thresholds for limb damage sprites have been reduced + - refactor: reworks clothing blood overlay into a central proc called by clothing + generalthrax: + - balance: Reloading speed from stacks doubled + - balance: Increase ammo can to bulky and lets it hold 4 normal-sized ammoboxes, + can only hold ammo and explosives. + - balance: Adjusted price of .299 Eoehoma slightly, adds a second box to the cargo + order since its 60 instead of 120 + - bugfix: Fixes a bunch of bullet stacks to have correct numbers + - bugfix: Larger handfuls (.22lr) + - bugfix: Mapped in ammo cans now hold their boxes + - bugfix: 12g beanbag now has beanbag instead of rubber + beanbag + - bugfix: Ammo box icons and descriptions + - rscdel: Removed .22lr from the blackmarket. Its in cargo already. + zimon9: + - rscadd: Added better names for some material shards + - rscadd: Added ability to see screens using the examine_more function +2024-10-28: + Sadhorizon: + - rscadd: A new sand ruin - the E-11 Manufacturing Plant - and associated code. + - rscadd: A purple hardhat. +2024-10-29: + FalloutFalcon: + - rscdel: Removed some ancient away mission cruft + - code_imp: flaky tests can now comment under its own prs. + FalloutFalcon, Melbert: + - refactor: transforming weapons are easier to add + MarkSuckerberg: + - server: Logs a few more stats for use in the Statbus at https://shiptest.net/stats + thgvr: + - imageadd: Updated world icons for knives +2024-10-30: + Erikafox: + - rscadd: Some planets now have new lighting values. Please report back on if they + are "Pleasant" + rye-rice: + - rscadd: You can now detect certain gases from smell, most notably plasma + - rscadd: Adds 6 new gases, all unused at the moment + - rscdel: 3 gases, Pluox, Nitryl, and Stimming + - balance: The noble gas suppresssion threshold has been increased from 10 mols + to 75 mols + - balance: Various gases have had their enthalpy (energy released during fires) + adjusted, changing the behavior of gas fires slightly. + - balance: Plasma is a much more potent skin/eye irritant + - balance: Hydrogen gas is no longer visible + - bugfix: Freon's stage one breath effects should work now, before they were tied + to nitryl's amount + rye-rice, Jedi Toothpaste: + - rscadd: adds Beagle Mug + - rscadd: adds Beagle Mug to Atlas Class +2024-10-31: + Gristlebee: + - rscadd: Indie Viper guncase comes with 2 speedloaders. + SomeguyManperson: + - code_imp: empty energy weapons now get emptied slightly differently, no player-facing + changes diff --git a/html/changelogs/archive/2024-11.yml b/html/changelogs/archive/2024-11.yml new file mode 100644 index 000000000000..7e29f8db7a4d --- /dev/null +++ b/html/changelogs/archive/2024-11.yml @@ -0,0 +1,341 @@ +2024-11-01: + Erikafox: + - rscadd: A new PGFN vessel has entered the frontier - the Elated Bolide class makes + a bright entry into the local system. + SomeguyManperson: + - bugfix: strippers and speedloaders for rifles now work again +2024-11-02: + Apogee-dev: + - balance: Balaclavas and half masks are now just breath masks, not gas masks + - balance: Normal balaclavas can use internals too + - bugfix: Balaclavas don't have a joke description anymore + Erikafox: + - code_imp: cauterization now checks for pain feeling traits instead of morphine + - balance: morphine pills no longer addict and overdose you + - balance: frontier import guns now misfire more often + - rscadd: guns can now misfire into your head. + - rscadd: You can now recycle gun cases and ammo boxes. + - code_imp: Cargo ammo has been reorganized so it's not godawful + - rscadd: CM357 pistol + - rscadd: pistol cases for the CM70 and CM357 + - rscadd: Holocalls now tell you they are coming from a location + Geoengi: + - tweak: unstations some of the hud alerts. + Gristlebee: + - rscadd: Jetpack harnesses to outpost for 1750 + - rscdel: Black market jetpack harness + - balance: Jetpacks cost 1000 from 2000 at the outpost + - balance: Black market improvised jetpack average cost reduced + - balance: Black market hardsuit jetpack upgrade min price reduced + - balance: Jetpack fullspeed var now determines whether you're affected by damage + slowdown rather than giving a speedboost. + thgvr: + - imageadd: Added Kepori sprites for loadout dresses. +2024-11-03: + Erikafox: + - balance: Outpost vending machines now cost money. + - rscadd: Some cargo packs have new descriptions + - code_imp: cargo is slightly more organized. again + - rscadd: Platforms. Please use them in maps. they look cool. + - imageadd: 'Spooky: Platform sprites' + - bugfix: 2 bolide map fixes. quality control is my passion. + - rscadd: Hermits now breath weirdly sometimes. + - balance: SKM hermits have realized they have been using the wrong calibre round + for the past 3 years and are now fixing such. + MemeSnorfer: + - rscadd: Vigilitas gas masks, which are added to the Harrier and Ranger + - rscadd: Inteq gas masks, which are added to the Colossus, Vaquero, Talos, and + Valor + Sadhorizon: + - rscadd: Added Nanotrasen, Vigilitas and N+S stamps. + thgvr: + - bugfix: chat icons work again + - bugfix: fishing UI has icons again +2024-11-04: + DIB-DOG: + - rscadd: Improved miscellaneous supplies on the Crying Sun + - rscadd: Added a blackbox recorder and set of handrails to the Crying Sun + - bugfix: Changed out the loose beampistols with cased versions on Crying Sun + - bugfix: Fixed Crying Sun roles to display properly + - rscdel: Removed the beer ring and cigarette machine from the Crying Sun + Erikafox: + - rscadd: Energy Bayonets + - rscadd: Some frontiersmen ruins have been updated to have frontiersmen turrets + - rscadd: Clover Photonics' contract for manufacturing turrets has finally caught + up to the CLIP MIC. Expect to see them on the Atlas. + FalloutFalcon: + - code_imp: flaky test github comments dont spam + Gristlebee: + - rscadd: Increases 357 hollowpoint AP to -20 from -50 + - rscadd: PGF Factional office + - rscadd: PGF Faxes + - rscadd: No diagonal indestructible titanium walls + Sadhorizon: + - rscdel: Beluga-class, Box-class, Schmiedeberg-class, Colossus-class, Skipper-class + and Kansatsu-class lost their Ore Redemption Machines. + - tweak: Reflavored Li Tieguai-class to use Cybersun Biodynamics colors. + - balance: Removed the Viper, the Dart Gun and two Ringnecks from the Li Tieguai. + Instead, added a Rattlesnake, a Himehabu and two edaggers. + - bugfix: Li Tieguai captain is now an officer. + zimon9: + - rscadd: Added ability to make cabinets and easels + - bugfix: fixed painting frame persistence and initialization bugs +2024-11-05: + Apogee-dev: + - bugfix: left/right shifted number decals now have dirs and are the right color + Erikafox: + - rscdel: arnold pizza + - rscadd: A new PGF ship is in the neighborhood - Woeful Cthonians have been deployed + in the frontier! + SomeguyManperson: + - bugfix: shields work as intended again +2024-11-07: + Apogee-dev: + - rscadd: the NGR Kali Andhi-class destroyer + - rscadd: NGR floor decals and flags + - balance: red space suit armor made equivalent to sec hardsuits + MarkSuckerberg: + - rscadd: Added a confirmation pop up for abandoning missions. +2024-11-09: + Erikafox: + - balance: wasteplanets no longer spawn manhacks + SomeguyManperson: + - bugfix: the kilo sawnoff shotgun is no longer the private domicile of The Void +2024-11-10: + Aquidu: + - rscadd: Added a suit storage whitelist to the Nanotrasen, Hardliner, NGR, and + Frontiersmen smocks. Expands the whitelist of the surgical smock. + FeenieRU: + - imageadd: added icons for inbox donuts + MarkSuckerberg: + - config: Removes a lot of old, unused config options + SomeguyManperson: + - code_imp: weapons which can be wielded may now have a force of 0 when wielded + or unwielded +2024-11-11: + Erikafox: + - balance: Crusher damage has been slightly increased across the board. + SomeguyManperson: + - bugfix: guns with magazines can no longer sometimes refuse to accept those magazines + - balance: etherbor military and civilian weapon cells are interchangeable between + military and civilian arms +2024-11-12: + firebudgy: + - balance: Kansatsu has been removed from the player-accessible ship pool. +2024-11-14: + randy10122: + - bugfix: fixes a typo in the .45 HP ammo crate's description +2024-11-15: + Anticept: + - balance: growth serum now maxes out at 30% growth with 30u and has a smooth sliding + scale. + Burning02: + - balance: Rail lights have been brightened + Erikafox: + - balance: medium and light ngr turrets swapped ammo. mediums should be more effective + now. + - rscadd: implements thick railings from code + - bugfix: platform dirs + - imageadd: platform internal corners + - balance: legion cores now slowly build up cloneloss when you use them. + - balance: Hivebots now have some armor and real bullets. Please bring guns to waste + planets. + - code_imp: you can now looc while unconscious/in crit. + MarkSuckerberg: + - rscdel: Most fishing missions. Now only the cooking one, that takes 1-3 of any + fish, has been left. + - tweak: The fish cooking mission now pays twice as much as it used to, 500 credits + per fish. It's also less likely to appear as a mission. + Sadhorizon: + - rscadd: Added an inteq survival box. + SomeguyManperson: + - code_imp: legion virus stage messages now properly display themselves. instead + of not doing that. + - code_imp: legion infesting people now give them a direct chat message. Say hello + to your new friend! They might be sticking around your body longer than you + will. + generalthrax: + - balance: Ramzi mobs now use the rusted-red as a reference item instead of blood-reds + to have lower armour. +2024-11-16: + Apogee-dev: + - balance: Massively buffed combat exosuit armor + - balance: Made repairing exosuits with a welder a do_after + - balance: Combat exosuits get less healing from repairs + - balance: The Paladin now has higher melee armor and lower bullet armor than the + Durand + Erikafox: + - rscadd: Trickwine fluff has been rewritten + - balance: Trickwines have been somewhat nerfed + - rscdel: prismwine, forcewine + - rscadd: N+S has reported losing contact with one of their rockplanet based mining + installations + - rscadd: You can now add shelves to crate racks + - rscadd: you can now buy marine armor at the outpost + - balance: marine armor now has different levels of protection. + - bugfix: marine crate path + price + PositiveEntropy: + - rscadd: Ditigrade sprites for NGR and Hardliner regular and officer jumpsuits. + Sadhorizon: + - bugfix: E-11 Manufactory ruin is no longer dark. + firebudgy: + - rscadd: New sprites for hard hats and soft caps for Vox! Flipped states and on/off + states included. + - bugfix: Black Shorts are now able to fit Vox + generalthrax: + - balance: Frontiersmen vests now count as normal armour vests and not bulletproof + - balance: Frontiersmen simplemobs count this for their armour values + - balance: Frontie armour vest in the blackmarket cost decreased + - bugfix: 9mm AP spawns with 9mm AP now +2024-11-17: + fighterslam: + - rscadd: Various minor fixes & QOL adjustments to the Ranger. Major changes include + updating all of the Specialist quarters and a complete re-arrangement of the + Medical and Supply areas. +2024-11-18: + Apogee-dev: + - rscadd: Replaced NGR Hyena with the NGR Derecho-class salvage ship + Erikafox: + - rscadd: girlfailing adjective + - rscadd: vomiting now removes a random amount of disgust. + - balance: vomiting should no longer trigger 12000 times in one minute on that one + person. im so sorry + firebudgy: + - rscadd: Four new hats for your blorbo customization! Find them in loadout. Sponsored + by Miskilamo Shipbreaking. + - bugfix: Vox Frontiersmen Officers finally stitched up their clothing. +2024-11-20: + Erikafox: + - balance: frontiersmen turrets kill everything not in their faction + - balance: medium marine armor now costs 3k at da outpost. + - bugfix: crate shelves now return all metal + - bugfix: crate shelves no longer lead to 0 metal stacks + - bugfix: Cthonian Platforms now have proper dirs + Sadhorizon: + - code_imp: Added a Hardliner faction datum. + SomeguyManperson: + - bugfix: 9mm AP boxes now work right + generalthrax: + - balance: Replaced rubbershot on the Kilo and Scarab with buckshot + - rscadd: Added a soft suit to the Listening Post + - bugfix: Fixed the Listening Post Comms Monitor to be the right type +2024-11-21: + Anticept: + - bugfix: growth serum capped at 25 instead of 30% for sprite scaling reasons. + Erikafox: + - rscadd: rifle calibre and pdw calibre rubbershot/armor piercing/hollow point. + check da outpost + - rscadd: tracker rounds for a few guns. check the black market :3 + - rscdel: most forms of incendiary ammo + - rscdel: A bunch of clown and mime stuff tangentially related to guns + - rscadd: walls on wasteworlds now have a chance to start damaged + - balance: walls on waste worlds are now universally weaker + - rscadd: fax secret documents + - rscadd: and space cash and biscuit folders. without + MarkSuckerberg: + - tweak: Whispering (as in, directly using the verb or typing `#` before your message) + will now skip the succumb confirmation prompt, while normal talking will still + continue to prompt if you want to succumb. + fighterslam: + - bugfix: fixes access on the ranger armory + firebudgy: + - rscadd: Enabled thee screaming audio emote for Vox. + generalthrax: + - bugfix: You can no longer see through Marauder hardsuits +2024-11-22: + MarkSuckerberg: + - bugfix: Examine more should now say the actual object as the subject and not yourself. + zimon9: + - balance: reduces drink and cigarette vender item costs +2024-11-23: + Apogee-dev: + - rscadd: Ramzi and Frontiersman mobs now have more names and descriptions + Sadhorizon: + - tweak: Dwayne is now made out of titanium. + SomeguyManperson: + - bugfix: mech repair now loop +2024-11-24: + SomeguyManperson: + - bugfix: some weapons are now more visible than they weren't supposed to be (which + is none) + firebudgy: + - rscadd: Species sprites for various Vigilitas items + - rscadd: Nanotrasen vox.dmi + generalthrax: + - rscdel: You no longer slur your speech at low drunkenness. + - balance: Thresholds for slurred speech increased as well as the threshold for + getting drunk. + - rscdel: Making weird groaning sounds and burping loudly at random was removed + from slurred speech. +2024-11-27: + Burning02: + - rscadd: Adds a singular light tube to the SSU room in the Atlas + - bugfix: The Atlas Sergeant can now access their belongings +2024-11-28: + Apogee-dev: + - balance: replaced sec hailers in outfits and maps with gas masks or breath masks + depending on circumstance + Erikafox: + - balance: marine armor is now less protective, marginally, and slows you down |more| + - rscdel: Marine Helmets + - bugfix: legion cores should now ACTUALLY give you cloneloss. my bad there guys. + sorry. + - rscadd: new detonate effect for phantom cores and plasmasoul cores. + - rscadd: Anomaly cores now grind down into something. + - balance: plasmasouls suck less + - rscadd: hivebots now drop stock parts. Stronger ones drop better parts + - balance: claymores are now less explody - they have increased shrapnel prowess + to mildly compensate. + Gristlebee: + - rscadd: Shoulder holsters to outpost for 600 + - rscadd: Cham holsters to black market + - rscadd: Accessories will fall off jumpsuits when destroyed. + - balance: Shoulder holsters can only hold one gun a time. + - bugfix: Accessory storage acts more consistently like other storage items. + MarkSuckerberg: + - tweak: Kepori can't hold items in their beak that are (allegedly) meant to be + equipped to other slots. + Martinpachu: + - rscdel: The cargo listing for the SWAT suit. + Sadhorizon: + - bugfix: Waiters can access Sunskipper kitchen again. + Spooky, Erika: + - rscadd: thin railings + - imageadd: 'spooky: thin railing sprites and sprites for wooden railings' + Yule&: + - bugfix: Tiles modified by the Floor Painter no longer reset after shuttle transit + Zevotech: + - rscdel: Removed the unused NT_Asteroid outpost. + - rscadd: Remapped and moved the Brazillab ruin to Sandplanet. + - bugfix: Fixed the Trabuco's inhand sprites. + generalthrax: + - rscadd: Adds Dogtag Missions to hunt down Ramzi Clique and Frontiersman NPCS from + Ruins + - rscadd: Adds Salvage Missions to collect Protolathe or R&D Console Boards + - rscdel: Removes Fishing Missions + - rscdel: Removes impossible missions like Bluespace Watcher and Abandoned Floorbot + - balance: Increases price of Migo missions to be on par with Legion + - balance: Increases the value of Strange Crystal missions + - rscdel: Remove R&D design board from unlocked Protolathes and Science Protolathes +2024-11-29: + Apogee-dev: + - rscdel: Removed inteq and syndicate maid outfits + Burning02: + - bugfix: Swaps the planetary tiles on Brazil lab to be non-planetary tile types. + Gristlebee: + - bugfix: Sealed and note placer mapping helper + PositiveEntropy: + - imageadd: The Vox have been visually overhauled and resprited! + - imageadd: 'Adds a new hair gradient: Splotches!' + generalthrax: + - rscadd: Adds the Gorlex Marauder Breaching Sledgehammer, for both utility and + combat. Available in the black market. + - rscadd: Sledgehammers are mapped in on the Kali and Derecho-class +2024-11-30: + Jedi-Toothpaste: + - bugfix: Claris and Gar can now be stored on your back + 'rye-rice, firebudgy ': + - rscadd: Factional cargo. + - rscdel: the remminants of the P16 as it was already completely removed in Serene + Sporting + - balance: Sporter is now 400 credits. diff --git a/html/changelogs/archive/2024-12.yml b/html/changelogs/archive/2024-12.yml new file mode 100644 index 000000000000..ad900aa39f65 --- /dev/null +++ b/html/changelogs/archive/2024-12.yml @@ -0,0 +1,149 @@ +2024-12-01: + Erikafox: + - balance: Gun slowdown has been reduced across the board + - balance: E-tars are now less bad +2024-12-04: + Burning02: + - balance: The Dwayne filing cabinet located in the bridge is no longer dense + Cloudbreak: + - rscdel: AI Private frequency + - balance: Syndicate communications are no longer able to monitor all other factions. + - balance: Syndicate communications are no longer unable to be monitored. + - balance: Nanotrasen has modernized their handhelds. Possible radio frequencies + adjusted from 144.1-148.9 to 144.1-168.9. + - rscadd: Reflavored set channels to properly ID their faction. + - bugfix: Vox sprite compatibility in a single sprite. + Erikafox: + - rscadd: the valor now carries an artificer + - bugfix: expands subshuttle dock on the Raleigh + Gristlebee: + - balance: Syndicate esword simplemob block chance down to 25. + - bugfix: Syndi space knife enemies dying in space, and having block chance. + MarkSuckerberg: + - rscadd: You can now set turrets to filter by faction, mob type, and a few more + criteria including "dangerous only" as well as the ability to disable retaliation. + - rscadd: Turret retaliation is a lot more vengeful. Don't mess with them. + - rscadd: Turrets will now spend a short time targetting you, pointing a beam at + you to indicate that they're doing so. + - rscdel: Turret covers, because they sucked. + - bugfix: Turretcode is a LOT less laggy. + - tweak: Turrets are now built like normal machines. The boards are currently not + available (except through salvaging). + - tweak: You can now access full turret settings from the turret control panel. + SomeguyManperson: + - bugfix: mechs will now immediately fail a channel if they move, turn, or swap + equipment. Previously the channel would run to completion before checking if + it was valid. + - rscadd: The assault belt has been freed from its SWAT suit prison and is now purchasable + in cargo + firebudgy: + - rscadd: Additional cargo magazine and gun orders that were missing from the previous + factional cargo PR. + - balance: Adjusts the E-SG to hopefully be used more often. + generalthrax: + - balance: Angle Grinders now take less charge and are much quicker at deconstructing + walls + - balance: Plasmacutters are now marginally slower, hardly noticeable. + - balance: Blast doors and safes are now very slightly faster to cut open. + - rscadd: You can now unanchor Serving Dishes + rye-rice: + - rscadd: Melbert, rye-rice + - balance: you will no longer be fine at 100 c, nor 50 c, you should also NOT be + fine at -100 c either. clothing helps. + - bugfix: should be able to tell slighlty chilly tempertures + thgvr: + - rscadd: Allows hand radios to be held on your neck slot + - balance: 'Adjusted the item size of various guns and misc objects, see pr #3509 + for more info' + - imageadd: Overhauled the look of autoinjectors +2024-12-05: + Gristlebee: + - rscadd: Shoulder slings to outpost cargo for 500 credits. + MarkSuckerberg & Anticept: + - bugfix: auxmos updated with correct feature flags, windows atmos hosts will function + correctly again. + firebudgy: + - rscadd: An intercepted shipment of CM-40 barrels has led to an influx of SKM-24u + LMGs to the black market. Report sightings to your nearest CLIP representative. + - bugfix: Bipods actually work now. +2024-12-08: + Erikafox: + - bugfix: Signallers no longer hit the other signaller when you're copying frequencies + - bugfix: hivebots should no longer attack hivebot spawners + - rscadd: curtain directions + - balance: m13 larker burst fire speed increased + SomeguyManperson: + - rscadd: Examining overmap hazards now shows their maximum safe speed, if there + is one, which there may not be. + rye-rice: + - bugfix: phoroids should no longer smell plasma, or anything for that matter. + thgvr: + - rscadd: Added a new electric welder - buy it from the outpost. + - rscdel: Removed experimental welder +2024-12-13: + Burning02: + - rscadd: Adds the Ion thruster pack for Exosuits to the outpost market, for 2000 + credits + - balance: Ion thrusters can be detached from exosuits now + Erikafox: + - balance: Girders on wasteplanet walls are no longer more durable than the walls. + generalthrax: + - balance: Lasers / Eguns are now normal-sized + - rscadd: Lasers / Eguns now fit in holsters + - bugfix: Sprite issue on Singulo Lab lasercannons + - rscadd: Filled subtype of Molotovs + - bugfix: Molotovs can no longer be used to craft themselves + - bugfix: Mapped in Molotovs are no longer empty +2024-12-14: + meemofcourse: + - rscdel: Beluga-class, Box-class, Lagoon-class, Schmiedeberg-class, Tranquility-class + - rscdel: Hound-class + - rscdel: Gecko-class, Heron-class (also Falcon-class), Mimir-class + - rscdel: Jupiter-class + - rscdel: Chronicle-class + - rscdel: Many ruins, mostly for being old, have been removed +2024-12-19: + Jedi-Toothpaste: + - bugfix: surgery cases now hold all the items + MemeSnorfer and Moffball: + - rscadd: Atoll-Class Hospital Ship + - rscadd: Preloaded organ smartfridge + - rscdel: Disabled the Box-Class +2024-12-21: + Zevotech: + - bugfix: fixed an incorrect spawner on whitesands_surface_camp_combination + - tweak: adjusted loot distribution on whitesands_surface_camp_combination +2024-12-22: + Burning02: + - rscadd: Adds the exosuit based saw to the Outpost catalogue for 2000 credits + - balance: Buffed the speed and deconstruction damage of the exosuit saw + - bugfix: Exosuit saw no longer gets stuck on indestructible walls + firebudgy: + - rscadd: Commissioner, SAW-80, GAR Carbine, and CM-40 to factional cargo + - bugfix: Decimal cargo prices + - balance: Magazines now come completely empty. As a result of this, they have now + been made cheaper. +2024-12-23: + firebudgy: + - balance: SAW-80 is more expensive. +2024-12-29: + Aquidu: + - rscadd: Added winter coats to the Harrier +2024-12-30: + Erikafox: + - balance: burst fire hivebots now have more time between the shots in their bursts + Jedi-Toothpaste: + - rscadd: new secondary 'slug' mode for the scatter laser (and other scatter lasers + sub-types) + - rscadd: scatter laser to cargo, for you freaks who want to buy it + - rscdel: removed old secondary mode for scatter lasers (and scatter laser sub-types) + - balance: laser scatter mode now fires 10 pellets instead of 5 + - balance: laser scatter pellets now do 5 damage instead of 3 + - balance: laser scatter mode variance increased from 25 to 40 + - balance: doubled laser scatter mode energy cost (6 shots with normal cell, 12 + with upgraded) + MarkSuckerberg: + - bugfix: Jukeboxes should not leak across virtual Zs anymore + - bugfix: Candles can no longer be used like tiki torches + - tweak: Ore silos will now only drop materials when dissasembled or destroyed, + instead of any deletion diff --git a/html/changelogs/archive/2025-01.yml b/html/changelogs/archive/2025-01.yml new file mode 100644 index 000000000000..12ae4801fd04 --- /dev/null +++ b/html/changelogs/archive/2025-01.yml @@ -0,0 +1,320 @@ +2025-01-04: + Erikafox: + - rscdel: kong drink + - rscadd: CLIP has lost contact with a facility in the system. Go find it. Go see + what happened. I dare you. + Ryll/Shaps: + - rscadd: Adds a config option for OOC kindness commendations! When enabled, a small + percentage of the crew gets asked if anyone made their round better, and those + people will get a little heart next to their name in OOC for 24h! + SomeguyManperson: + - bugfix: mech looping repairs loop now. For real. + Thera-Pissed: + - bugfix: spaghetti desc and food type updated + firebudgy: + - rscadd: New medal descriptions and renames. + rye-rice: + - rscadd: Touches up the ringneck and commander magazine sprites + - balance: Ringneck is now 8 rounds and commander is 12 rounds. +2025-01-05: + Apogee-dev: + - bugfix: the Derecho's missing APCs have been replaced + Erikafox: + - bugfix: you should see the spur sprite a lot less + Thera-Pissed: + - bugfix: chem dispensers take refined bluespace instead of polycrystal + generalthrax: + - bugfix: SG-8 fits in the holster like all the other energy pistols +2025-01-07: + Burning02: + - bugfix: Bigderelict1 now properly spawns instead of Corporate Mining + Erikafox: + - rscdel: Kansatsu-class Scout-Courier + - balance: migos make less noise + - rscdel: honkbots + - code_imp: jittering has been mildly refactored. please report any weird jitterings. + Gristlebee: + - rscadd: Mech Full Auto + - rscadd: Mech scattergun now has 7 pellets, and damage falloff. + - rscadd: Mech guns can now eject casings. + - rscadd: Solaris fires an emitter blast. + - rscadd: Downpour energy carbine + - rscdel: Immolator laser, Peacemaker disabler + - balance: Ammo capacity for UMG and Scattergun mech weapons. UMG ammo now costs + 500 at the outpost. + Gristlebee, Rye-rice: + - rscadd: Underbarrel guns + - rscadd: Hand attachment removal is bound to alt-click on harm intent. + - bugfix: Grenade launcher code + - bugfix: Runtimes + Ical92: + - bugfix: fixed some wall closets missing doors + Kapu1178: + - rscadd: There is now a customizable delay for equipping and unequipping items + from clothing slots. + MarkSuckerberg: + - rscadd: A pref to totally disable radio crackle sounds. + - tweak: Radio crackle will only play if it's been 5 seconds since the last radio + message the mob has heard. + - tweak: The radio crackle will only play once a message has been successfully transmitted. + Sadhorizon: + - imageadd: Advanced airlock controllers now have directional sprites. + Thera-Pissed: + - rscadd: adds ruin hazards + kaylexis: + - bugfix: changes flavor text on entertainment monitor +2025-01-08: + Erikafox: + - rscadd: you can now change how fast a door should close with the door electronics + Ical92: + - rscadd: Wiki ship templates now show ship manufacturers + Sun-Soaked: + - balance: Backpacks can now carry Bulky items, but can no longer be accessed while + on your back. + - balance: Duffel bags can now carry more, but must be placed on the ground to be + opened. +2025-01-09: + Burning02: + - balance: The Hardliners captain jacket can hold firearms now + Erikafox: + - rscadd: N+S Mine ruin now has ice for mining + - bugfix: Mining Scanner feedback better +2025-01-15: + Erikafox: + - bugfix: guns no longer glow in the dark +2025-01-16: + Erikafox: + - bugfix: Doors are now bludgeoned by whatever you're holding less, and can actually + be deconstructed. + Ical92: + - bugfix: merge conflicts are now properly marked + MemeSnorfer: + - bugfix: Makes some changes to the Atoll-Class's map file. It should feel slightly + better to play on. + Sadhorizon: + - tweak: Talos maints were remapped. They are also no longer spaced. + - tweak: Scarab maints were tweaked a little. + generalthrax: + - rscadd: Improved Elder airlock and added a few small things to the Elder (Animal + pen, cargo bay area, more tobacco, eggs), and shifted docking ports around. +2025-01-18: + Apogee-dev: + - code_imp: Renamed the Gygax and Odysseus and updated their lore + - rscadd: Dark Gygax (now 515 EX) has better efficiency when overloading its legs. + Erikafox: + - balance: Temperature Mechanics have been partially reverted. Please report any + weirdness + - balance: Temperature now defaults to respecting insulation instead of ignoring + it. + - balance: goldgrubs, fugu, and basilisks are now marginally less immune to bullets. + - rscadd: Scopes!!! + - rscadd: All guns now have an implicit ability to aim down sights. + - rscadd: aiming now slows you down. + - bugfix: 'fixes ported from /tg/: projectiles no longer sail into the ether when + you fire them at a distance' + - bugfix: aiming is now less jank + - rscadd: The asteroid outpost in the region has been somewhat renovated. + - rscadd: Outposts now stock a variety of medpens in a small medical area. + Martinpachu: + - rscdel: Removed certain screwdrivers, as they are no longer needed for reloading + energy weapons. + SomeguyManperson: + - bugfix: radioactive barrels are now 4k HD again + firebudgy: + - balance: Loot adjustments on waste planets. + - balance: Radiation no longer horribly mutates your DNA to make you Swedish. It + still causes cancer. + zimon9: + - code_imp: modifies the access requirements to the wrecker's equipment room aboard + the Derecho so that the Foreman can access it +2025-01-19: + Apogee-dev: + - bugfix: fixed firestorm pan magazine capacity and crate + - rscadd: Added M20 Auto Elite and PO-20 Pinscher heavy pistols. + - balance: SRM's Firestorm SMG is now chambered in .44 Roumain. + Burning02: + - rscadd: Adds the Banshee-class Salvage Clipper as a playable Hardliner vessel + - rscadd: Adds a singular Sergeants vest to the Banshee Captains equipment + Erikafox: + - balance: Legion cores now do toxin damage instead of cloneloss. + Jedi-Toothpaste: + - balance: Many price reductions have occured, happy shopping. + - rscdel: Removed the mafia crate + Ratvarr: + - bugfix: The grill no longer grills your ears out. Rejoice, grillmasters. + TDHooligan: + - rscadd: Robotic body parts now have integrity, 1 'integrity loss' represents 1 + HP of damage that cannot be healed/repaired. + - rscadd: New 'Replace Structure' surgery that allows a roboticist to restore limb + integrity. + - rscadd: New 'Structure Repair Kit' craft that restores limb integrity. + - balance: Robotic limbs start wearing out after multiple repairs, limiting their + repair potential. + - balance: Repair machinery is no longer self-operable. + firebudgy: + - balance: Cargo Incendiary Grenades have been removed and replaced with Frag Grenades. + - rscadd: SKM Extended Magazine, Bulldog Drum Magazine, Boomslang 10rnd Magazine + and Firestorm Pan Magazine to factional cargo. + - rscadd: N+S has deployed a new batch of Shaft Miners to Harrier-class vessels. + - rscdel: Janitors have been reassigned from the Harrier for retraining. +2025-01-20: + Gristle, Rye-Rice: + - rscadd: MP Gygax + - rscadd: Mech conversion kits to cargo + - balance: MK-2 ripley upgrade now costs 500. + - bugfix: Mech charging sanity. + Gristlebee: + - rscadd: You can use a multitool for mechanical brain surgery on the fix brain + step. + - balance: You can no longer gain deep-rooted traumas from failed brain surgery + or natural damage. + Ical92: + - bugfix: gathering no longer has infinite reach + - bugfix: the outpost's crate shelvers have been trained to leave no evidence + Thera-Pissed: + - rscadd: Replaced Jump To Mob on ghost HUD with a respawn option. + firebudgy: + - rscdel: RnD retrieval missions + - balance: Dogtag missions take any kind of dogtag, both Frontiersman and Ramzi + generalthrax: + - rscadd: Glass bottles of the large and small variety added to the autolathe + - rscadd: Distiller added to the black market + - balance: Beekeeping crates pricing reduced + - bugfix: Fixes plating under some catwalks that aren't supposed to be there on + the Mudskipper + rye-rice: + - rscadd: Resprites everything eoehoma related! + - rscadd: E-11 is more accurate. This isn't saying much. + - bugfix: E-60's charge overlay should now work +2025-01-21: + Aylong: + - rscadd: Added a blinking background icon to vote action buttons + - rscadd: Added boxed message blocks and fieldset message blocks + - rscadd: Added a boxed message block for votes and a fieldset message block for + vote results + Erikafox: + - rscadd: You can now purchase high conductivity gauss rounds from the outpost. + - bugfix: you can no longer grind down the outpost + FalloutFalcon: + - refactor: lightly refactors the get path section of the cleanbot ai. Has the byproduct + of stoping the linter fail. + Ical92: + - rscadd: Arke-Class Surveying Ship + - rscadd: The Atlas-Class now has a Telecomms Relay + zimon9: + - balance: The bone breakage damage proc now depends on the movement intent of a + carbon. Walking reduces the proc call probability +2025-01-22: + Ahmedok: + - balance: added mesons in Kali-Adhil Wrecker locker + - imageadd: added NGR variant of mining webbing + Erikafox: + - rscadd: chitosan! a coagulant that you can make by mixing 1 silicon, 2 sugar, + 1 cryptobiolin and warming it all up. + - rscadd: hyposprays and hypospray vials to cargo + - bugfix: mannitol pens now have their proper name + Gristlebee: + - rscadd: Mechs use the new zoom system + - rscadd: Solaris and Ez-Pulse cannon can zoom. + - rscdel: Zoom on the Marauder + Jedi-Toothpaste: + - bugfix: spacesuit crates are now correctly categorised + - bugfix: laser tag crates are 500 instead of 100 + Ratvarr: + - bugfix: The Irish have been removed from corned beef. + Slim-Pickems: + - balance: moved combat medic hardsuit bullet protection from 10 to 20 + Thera-Pissed: + - bugfix: broken closet in package wrap qdel contents bug + - bugfix: extra space in disabled bodypart text. + firebudgy: + - rscadd: Inteq Gas Mask sprites for Vox. + - balance: Vests now have pockets for binoculars, attachments and pocket fire extinguishers +2025-01-23: + Apogee-dev: + - rscadd: added Miskilamo Falmouth-class Light Freighter + - rscdel: removed Libertatia-class Hauler + MemeSnorfer & Moffball: + - imageadd: Kepori will no longer be haunted by floating combat webbings and balaclavas. + Hurray! + - bugfix: Fixes a mistake concerning NGR balaclavas not fitting Sarathi snouts. +2025-01-24: + firebudgy: + - bugfix: Inteq Balaclavas and other Vox Sprites + generalthrax: + - bugfix: Falmouth filename is now indie + zimon9: + - bugfix: updated cell latch descriptions + - bugfix: fixed a minor bug with cell latches on the E-40 +2025-01-25: + Erikafox: + - rscadd: Cybersun's newest doohickey, the Nimbus-Class Caravel, is now on sale + in the Frontier. + FalloutFalcon: + - refactor: SetSleeping to set_sleeping + - refactor: Removed redundant arg from set_sleeping call + Geoengi: + - rscadd: Roulette tables can be bought at cargo for the low price of 5000 credits! + - bugfix: Fixed persistent overlays on roulette tables and requires them to be powered + to function. + - bugfix: Roulette tables now pay out when betting zero. + - tweak: Owners of roulette tables are the only ones who can bolt or unbolt them. + - tweak: Slot machines don't announce who won a jackpot where. + - tweak: Replaced references to ID cards with cash cards where applicable. + - tweak: The roulette beacon now has an activation sound. + - spellcheck: The roulette beacon's description reads better. + - code_imp: Slot machines no longer accept material coins due to them nuking the + server if withdrawn. +2025-01-27: + Erikafox: + - balance: Nimbus has more money now. Be a |rich| lesbian. + - balance: drills no longer spawn more mobs when more people are around. + - balance: drill missions now pay more money. + Ratvarr: + - rscadd: Nanotrasen no longer expects you to preform open heart surgery with no + anesthesia of any kind on the Harrier. Rejoice. + firebudgy: + - balance: Ammo cans can hold weapon cells now too. + zimon9: + - code_imp: applied some bugfixes to the interaction of examine_more with modular + computers and laptops + - rscadd: adds the ability to interact with a tablet using the examine_more function +2025-01-28: + Erikafox: + - rscadd: Cargo Beacons are free now. + - rscadd: bullets now refuse to tell you their calibre + - rscdel: deagle + - balance: most cartridges have been lightly adjusted. please say something if firing + bullets feels weird. + Jedi-Toothpaste: + - bugfix: fixes misaligned floor decal +2025-01-29: + Apogee-dev: + - rscdel: Launched the Komodo-class into a black hole + FalloutFalcon: + - rscadd: Readds prism and force, heavily reworked. + - rscadd: You can tell when someone is under the affects of a trickwine easier. + - balance: Alot of tweaks to the hostile effects because they can work off status + effects now. + - balance: Trickwines off the blackmarket are slighter rarer and more expensive. + - balance: The reflective trait now grants full reflection instead of a 50/50 chance. + - refactor: Refactored alot of trickwine code, they work off of effects now and + are easier to read. +2025-01-30: + Ical92: + - bugfix: adjusted autowiki ship size calculations + Rye-Rice, Timberpoes: + - rscadd: Added bodycameras + - rscadd: Added the ability to set custom networks on cameras and camera consoles + - code_imp: Made camera consoles and SecurEye have better parity + Thera-Pissed: + - rscdel: fried eggs no longer fried foodtype + firebudgy: + - balance: Abandoned Listening Post has been slightly adjusted to have marginally + better loot. + generalthrax: + - balance: Morphine now requires more cycles to put you to sleep, giving more combat + utility +2025-01-31: + Apogee-dev: + - bugfix: Auto Elite magazines now advertise the correct capacity diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml new file mode 100644 index 000000000000..b07b587d38e4 --- /dev/null +++ b/html/changelogs/archive/2025-02.yml @@ -0,0 +1,288 @@ +2025-02-01: + PositiveEntropy: + - imageadd: Concrete, hexacrete and pavement tile sprites and varieties have been + updated! + Thera-Pissed: + - bugfix: rockplanet shippindock ruin now has proper planetary atmos concrete. + firebudgy: + - balance: Vaquero now has ammo. +2025-02-02: + Erikafox: + - bugfix: empty veins close themselves. + Gristlebee: + - bugfix: 8x50 HP ammo boxes spawn with the correct ammo +2025-02-03: + Apogee-dev: + - rscadd: Model 23 Woodsman hunting rifle +2025-02-04: + Ratvarr: + - bugfix: Floral shirts no longer take six whole seconds to put on, because that + is completely insane. +2025-02-06: + Sadhorizon: + - bugfix: Captain's stamp no longer talks about stations. + - tweak: Replaced HOP's stamp with FO's stamp. + - code_imp: Repathed chaplain's stamp into roumain stamp - no other changes though. + - rscdel: Removed law, clown and mime stamps. +2025-02-07: + Erikafox: + - bugfix: indie space is no longer missing numbers on the 56x40 hangar + FalloutFalcon, Fikou, a hood by Viro: + - refactor: Humanoid mobs automatically generate their sprites, they no longer will + be outdated. + - refactor: Ports some tg overlay improvments. + Moffball, MemeSnorfer, and Erikafox: + - rscadd: Colorable Windbreakers! + - rscadd: Colorable Flapcaps! + - imageadd: Resprites Softcaps, and makes them Colorable! + Sadhorizon: + - tweak: Replaced the selection of 16 jumpsuits in the loadout with a single re-skinnable + one. + - rscadd: Added a re-skinnable jumpskirt to the loadout too. + firebudgy: + - rscdel: clown.dm (hostile and hostile/retaliate) + - rscdel: clown spawner grenades + - rscdel: some clown references in halloween code + - rscdel: clown simplemobs on singulolab + - rscdel: clown and mime PDAs + - rscdel: clown/mime masks in the few places they appeared + - rscdel: clown poster + - rscdel: clown shooting targets from everywhere they appear +2025-02-08: + Erikafox: + - rscadd: An assortment of new chems; Tramal & Dimorlin, painkillers; Shoalmix,, + a combat drug; Lithium Carbonate, an antidepressant; melatonin; a sleeping aid + for humans; finobranc powder, a potent stimulant; and retukemi, its not weed. + - balance: Painkillers now give slight damage resistance + - rscadd: dynamic simplemobs now add their spread to bullets. + - balance: frontiersmen officers now shoot faster and shoot more + - balance: frontiersmen shotgunners shoot pb. we cqc in this bitch. + - bugfix: some decal layering and grilles on indie_space have been fixed. + - bugfix: saunas are no longer burning hot + - rscadd: Bombed Airbase has been remapped. + - bugfix: CLIP bowman sprites, PGF bowman sound protection. + Jedi-Toothpaste: + - rscadd: allows you to reskin ammo cans + MemeSnorfer: + - balance: Lowers the price of the civilian Viper revolver to 1500cr (from 2500cr) + and the military Viper revolver to 1750cr (from 3000cr). + firebudgy: + - balance: Space Basilisks and Dwarf Legions are decently weaker. + - bugfix: Extra cargo listing + zimon9: + - balance: increased the projectile speed of sharplite weaponry +2025-02-09: + Erikafox: + - balance: cybersun now gets discounts on cybersun mech designs. clip gets a discount + on the Durand for the same reason + - rscadd: nimbus bathroom lock + - bugfix: some washing machines no longer magically become dense + SomeguyManperson: + - bugfix: rail light is back + zimon9: + - bugfix: fixed securEye runtime + - bugfix: fixed bodycamera description typo +2025-02-10: + Burning02: + - balance: Minor changes to the interior of the Banshee, along with a gun swap +2025-02-12: + Erikafox: + - bugfix: updates recipes for dimorlin (so you can make it), shoalmix (so you can + make it) and tramal (so it works as intended) + Ratvarr: + - rscadd: Long range sensors have detected an unknown signal broadcasting over local + GPS on the local long-term waste-world... + Sadhorizon: + - bugfix: Flaming Arrow, Conflagation, Absolution, Beacon and Vickland can have + shoulder slings attached to them again. + firebudgy: + - bugfix: Balaclavas now layer correctly. +2025-02-13: + Cazdon: + - rscadd: Added Hardliner phorid envirosuit and helmet sprites. + firebudgy: + - rscadd: Support for the War Correspondent Vest and M20 Gas Mask for Vox. + - rscadd: Undershirts and Socks for Vox! + - rscadd: Species compatibility for Trauma Team sprites + - rscadd: Vox Inteq Backpack Sprites + - rscadd: Minute Energy bar, replacing High Energy bars in vendors. + generalthrax: + - bugfix: Sarathi and elzu balaclavas work again +2025-02-14: + Apogee-dev: + - balance: buffed Kali Andhi's starting funds, fuel, and weapons loadout + MassiveMen: + - rscdel: remove TRAIT_SPIRITUAL and all references + MemeSnorfer: + - rscadd: Added matchbox, candle pack, tarot card deck, spray can, crayon box, bee + plushie, spider plushie, flushed plushie, shark plushie, dice bag, table bell, + and hourglass to the general tab of the loadout screen. + Sadhorizon: + - rscadd: Added a Model 12 Sporter to the Sunskipper. + - tweak: Sunskipper's safe now has the combination written down on a piece of paper + - no longer do you need the stethoscope. + - bugfix: Fixed colors of Sunskipper's objects. + - tweak: A bunch of really minor tweaks and fixes to the Sunskipper. + firebudgy: + - balance: A number of changes have been made to the Tegu to modernize it, including + the addition of an angle grinder and a repaired telecommunications array. + generalthrax: + - rscadd: Bathroom locks to most ship private bathrooms + - rscdel: Vaquero no longer requires a bathroom pass +2025-02-15: + Erikafox: + - code_imp: neutered var on .../hostile/human removed in favor of weapon_drop_chance + - balance: default chance of a simple human dropping their gun is now 30% + - code_imp: repathed indie sec, indie mining, inteq plain hardsuits + Gristlebee: + - rscadd: Hognose, alof, underbarrel energy cannon + - rscadd: Underbarrel guns come in cases. + - rscadd: Secondary actions and hotkey. + - rscadd: Muzzle slot for eguns + - balance: Pistols can no longer take underbarrel guns. + - balance: Underbarrel shotgun holds two rounds, price increased to 1200 + - bugfix: Fixes being unable to load underbarrel guns while gun bolts were closed. + - bugfix: slings being funky + - spellcheck: typos + - code_imp: new attachment lists, weapon_class_attachments, unique_attachments, + refused_attachments + - rscadd: You can use the unique action key to activate mech abilities. + firebudgy: + - rscadd: Pouches! Now purchasable in the outpost and attachable to your pockets. + generalthrax: + - bugfix: Nanotrasen, Vigilitas, and N+S sprites should work for sarathi again + - rscadd: You can now dry seaweed into seaweed sheets + - rscadd: Sushi now takes seaweed sheets + - rscadd: Soy sauce added to the condiments crate +2025-02-16: + Cloudbreak, FalloutFalcon: + - rscadd: Demolitions charges to Cargo + - balance: Safes only take one C-4 charge to explode + Gristlebee: + - bugfix: Attachments should no longer block interaction with energy gun latches + when they shouldnt. + Ratvarr: + - bugfix: Chat Clients now can be used for secure communication which cannot be + breached by players using one button. + - bugfix: Chat Clients no longer get messages from people with the wrong password. + - bugfix: The Haboob got it's airlocks named. + Sadhorizon: + - rscadd: The mudskipper now gets a wardrobe. + firebudgy: + - bugfix: Cargo listing for the SSG-669 +2025-02-17: + Erikafox: + - balance: you should get hit in the chest a lot more now. at a distance. +2025-02-18: + Erikafox: + - bugfix: tesla lab and bombed airbase now avoid checking to see if you're some + sort of security-head before firing. + SomeguyManperson: + - tweak: mixing dimorlin now requires half the required reagents, meaning the same + amount makes twice as much + firebudgy: + - balance: Ancient goliaths are slightly rarer on C2 and C3 drills. + - bugfix: Ancient goliaths no longer turn into regular goliaths. + - rscdel: Removes the Delta + generalthrax: + - balance: Waste Mechbay 501p (Gygax) replaced with 515 EX (Dark Gygax) +2025-02-19: + Gristlebee: + - balance: Baseline 515EXs dont spawn with bluespace cells. +2025-02-20: + Erikafox: + - rscadd: Cirrus-Class Medical Carrack. Yet another attempt by Cybersun to excel + in a market frankly no one cares about. God they do that a lot. + - rscdel: Li-Tieguai + - rscadd: The Vela-Class industrial cruiser is BACK and WORSE THAN EVER + - rscadd: Ramzi Clique Mobs now use dynamic human icon gen + - balance: guerilla gloves are now insulated like their description says they are. + it's not perfect. + Sadhorizon: + - code_imp: Replaced the CMGSV prefix with CLSV. + - bugfix: Some sofa sprites are no longer backwards. + firebudgy: + - balance: Rattlesnake added to the Vaquero and Talos, Mastiff added to the Colossus. + - rscadd: Pinschers to all Vanguards. + ritorizo: + - bugfix: Melatonin being harmfull in some edge case. +2025-02-21: + Burning02: + - balance: The outpost contract limit will now scale with the amount of vessels + in-round + Sadhorizon: + - spellcheck: The "-class" part of every ship name is now in lowercase. +2025-02-22: + Erikafox: + - bugfix: mob items no longer show the path when dropping + - rscadd: the frontiersman lmg-man now carries a shredder instead of a laser minigun. + prepare yourself. + - rscadd: aiming hotkey. default bound is shift+z + generalthrax: + - bugfix: Derecho bathroom lock is no longer access restricted + ritorizo: + - rscadd: In game feedback about getting a flamethrower to work. + - rscdel: Can't deconstruct flamethrowers with a wrench. + zimon9: + - rscadd: Added surgical equipment to the Kali Andhi + - rscadd: Added additional half masks for the wreckers and the mechanic aboard the + Derecho +2025-02-23: + Erikafox: + - rscadd: Ramzi turrets, for mappers + - bugfix: Admins can now spawn the haymaker-class + - rscadd: Stasis Drug - a chemical which induces stasis in a person once it's administered. + - rscadd: Starlight/stardrop. two chemicals that enhance the user's vision. + - No Problem: null + rscadd: Carfencadrizine. No Crit + - rscadd: more injectors/syringes for people to buy. + - rscadd: replace bath salts with mammoth. a generic strength enhancer. + - rscdel: krokodil and krokodil zombies. byeeee + - balance: nerf finobranc/combat drug do_after bonuses + generalthrax: + - balance: Frontier armour vests are bulletproof again. + - balance: Simple mobs drop a version of the vest that has normal armour vest values, + player pirates and the black market version are unaffected. Frontie mobs inherit + this armour. + - balance: The Rusted Red hardsuit has increased armour. Ramzi mobs are tougher + as a result. + - bugfix: Revert some of the health changes from Dynamic Mobs + kaylexis: + - rscadd: New digitigrade hardsuit sprites +2025-02-24: + Cloudbreak, Ryerice: + - rscadd: 50BMG ammo boxes to cargo for 1000 credits. + - balance: 50BMG doesn't instantly delimb you anymore. + Erikafox: + - balance: misfire targetting is now weighed towards the legs + Ical92: + - code_imp: added a linter for ship class capitilzation +2025-02-25: + Apogee-dev: + - rscdel: Removed guaranteed RND from ruins + Aquidu: + - rscadd: Added 31 new preference adjectives. + Ical92: + - bugfix: NT Ice Outpost and the Harrier-class now have working cameras + - bugfix: turrets no longer target neutral mobs when set to shoot dangerous mobs + Sadhorizon: + - bugfix: Minuteman role on the Vela-class uses the correct outfit now. +2025-02-27: + Erikafox: + - balance: reduce mil viper spread and increase fire rate + - balance: 5.7 does less damage + FalloutFalcon: + - bugfix: fixes a flaky test runtime from a a string not being wrapped in a list + in portable_turret.dm + firebudgy: + - rscadd: New sprites for the Mass Produced Machete + generalthrax: + - bugfix: Ammo cans of 12g no longer spawn with 80 rounds of .50 bmg +2025-02-28: + MemeSnorfer and Moffball: + - rscadd: Corona-class Touring Vessel + Sadhorizon: + - spellcheck: Ivory's name is now capitalized correctly. + - rscadd: Added the F-80 Ivory-class Yacht. + - imageadd: Added a /factory variant of the Absolution. + - tweak: Light tiles can now be turned off without any tools. diff --git a/html/changelogs/archive/2025-03.yml b/html/changelogs/archive/2025-03.yml new file mode 100644 index 000000000000..9fdc4d6d0ad6 --- /dev/null +++ b/html/changelogs/archive/2025-03.yml @@ -0,0 +1,355 @@ +2025-03-01: + Aquidu: + - rscadd: Adds Solarian Common for SolCon jobs and humans. + DIB-DOG: + - rscadd: Added lights for the operatives on the haboob and Kali Andhi + - bugfix: fixed operative outfit as to not spawn wearing armor + - balance: Helmet lights attach more logically + - bugfix: NGR and Hardliner goggles can fit on helmets + - rscadd: Added rail lights to the Crying Sun and Elated Bolide + - rscadd: Added bunk beds to the Crying Sun crew quarters + - balance: Explorer webbing can now carry emergency O2 tanks and binoculars. + Erikafox: + - balance: hp shotguns can no longer take a rail attachment. + - bugfix: attachment points on hp guns have been adjusted to fit the forms of the + weapons + - rscadd: The NGR can now purchase more breaching sledgehammers. + - bugfix: CLIP weapons and SKMs now have proper attachment slots + FalloutFalcon: + - bugfix: You can no longer print beacons faster by typing really fast + - rscadd: Trickwine cargo packs (SRM locked) + - refactor: outpost uses faction_path_to_datum instead of making new factions for + cargo packs. + Sadhorizon: + - tweak: Kilo, Mudskipper, Riggs, Shetland, Colossus, Talos and Elder now use combustion + thrusters instead of plasma thrusters. + - tweak: Shetland's TEG now runs on hydrogen instead of plasma. + - bugfix: Rotated the AACs on all of the above ships. + - imageadd: Added connected sprites to modcomps. Mappers rejoice. + firebudgy: + - rscdel: Removes children + - balance: Shotguns are slightly more accurate + - bugfix: CM-15 magazine sprites + - bugfix: Shotgun ammo cans correctly have shotgun ammo now + - bugfix: Grenades on the market. + generalthrax: + - rscadd: Decaling, different wood type, overseer's office, sonnensoldner's office, + anesthetic, among other things to the Paracelsus along with expanded airlock + - rscdel: Removed psychologist and patients from the Paracelsus +2025-03-02: + kaylexis: + - rscadd: New outpost + - rscadd: Indestructible hematite subtype + - rscadd: Safe atmos rockplanet tile subtypes + - rscadd: Safe snow tile subtypes + - rscadd: proper plastitanium glass indestructible turf +2025-03-03: + Erikafox: + - rscdel: raleigh hallway trashcan + - bugfix: vi mobs no longer drop double corpses + - bugfix: rust-red smg guys now have an smg rather than ringneck + Ical92: + - bugfix: camera consoles now refresh instead of reopen + Ossa88: + - bugfix: Corrected Tanto-class Drop pod's file path + Sadhorizon: + - rscadd: Added Military Ringneck and Cobra variants to cargo. +2025-03-04: + FalloutFalcon: + - refactor: reskinning code improvments, moved down to obj/item. + MemeSnorfer: + - imageadd: Touches up the Inteq Winter Coat, Inteq Winter Hoodie, and Honorable + Vanguard Battlecoat + - imageadd: Resprites the Inteq Drop Pouch Rig and Inteq Hardsuit + - rscadd: Added green nitrile gloves, currently only found in the Valor-class + firebudgy: + - rscadd: Broadcast Cameras, for sector-wide media journalism! + - balance: SecureEye is unrestricted, so that you too can tune into a livestream! + randy10122: + - rscadd: A considerable amount of new moth plushies may now be brought with you + out of cryogenic storage. + - bugfix: Minor typo on the lovers moth plushie. +2025-03-06: + Erikafox: + - balance: buckshot now loses ap as it travels. starts at -20 ap + - rscadd: rations now tell you what food groups are in them so you can avoid eating + food that you might not want to eat + Ical92: + - bugfix: wooden stairs no longer absorb footstep noises + - bugfix: unloading machines no longer pick up ice + ritorizo: + - rscadd: Reagent scanner now give the temperature of the reagent. +2025-03-07: + Erikafox, itseasytosee: + - rscadd: Ports Demolition Mod from tg + - rscadd: some items now deal more damage when attacking structures. + HelmCrab, Zevo: + - rscadd: Crates ordered from the outpost now arrive via conveyor to the hangar + of the ship that ordered them. + - rscadd: Indestructible outpost variants of conveyors and plastic flaps + - rscdel: Removed cargo delivery beacons +2025-03-08: + FalloutFalcon: + - rscadd: 1 minute timer before planets delete + - refactor: planets now acctually delete themselves + - rscadd: SRM have a box again. no watching your crew rot to death cause you don't + come with a pen. + PositiveEntropy: + - imageadd: Adds new recolorable scarves, hoodies, sneakers, berets and beanies! + Simply select it on loadout. + - rscdel: Miscellaneous outfits that have barely seen any use. + Sadhorizon: + - rscadd: Added a Hardliners stamp. +2025-03-09: + DIB-DOG: + - rscadd: Atlas Armory has been redesigned. + - balance: Atlas starting funds increased to 4000 + Erikafox: + - rscadd: hardliner turrets + - rscadd: turrets now have a burst functionality and spread + - rscdel: Removed old syndicate turret types. the rusty onessss + - code_imp: some /ruin turret types for mapping. + - rscadd: Someone spilt the beans about a frontiersman fleet depot on a nearby beach + world. suckers.. + - rscadd: the crew now gets a cut of any mission paycheck. Let them go out into + the outpost to spend their enrichmentbucks. + - bugfix: some walls now smooth properly on the cirrus, among other niceties + Ical92: + - bugfix: borg lights are no longer always visibly on + firebudgy: + - rscadd: Telescopic Riot Shields to Cargo + - balance: Strobe Shields no longer require unobtainable wall flashers. + - rscadd: ClothesMate units to Nanotrasen Ice and Indie Space outposts + - balance: Clothes are now cheaper + - rscadd: Various new items to the ClothesMate + generalthrax: + - balance: Changed C4 minimum timer from 10 to 0 +2025-03-10: + firebudgy: + - balance: The Talos-class now has Two Enforcers. +2025-03-11: + FalloutFalcon, Donkie, optimumtact: + - code_imp: Process procs now properly utilize seconds_per_tick when implementing + rates, timers and probabilities, which paves way for easier subsystem tickrate + adjustments. + Ical92: + - bugfix: fills in missing autowiki details + - bugfix: fixed ghost access to duffels and backpacks + Zevotech: + - bugfix: Adjusted the cargo delivery chutes so that crates can no longer travel + backwards and clog the system + generalthrax: + - rscadd: Added specific parts boxes for T2 and T3 parts, 10 parts each + - balance: Reduced the price of T2 parts by 750 and the price of T3 parts by 1500 +2025-03-12: + FalloutFalcon: + - bugfix: walls can now be meleed again +2025-03-14: + Apogee-dev: + - balance: Removed armor from Goliaths, gave them more health. + Erikafox: + - rscadd: ammunition counter attachment + - bugfix: guns now display less info on a basic examine. + Ratvarr: + - bugfix: T3 Matter Bin crate tells you the right amount of parts it gives you. + tyeagg: + - rscadd: different sounds for different explosion types +2025-03-15: + kaylexis: + - bugfix: fixed decal on ngr_rock + thearbiber, generalthrax: + - rscadd: Added the ISV Rust Base, a crashlanded Ramzi Clique combat freighter to + rock worlds +2025-03-16: + Gristlebee: + - rscadd: 515 Conversion kit + - bugfix: Loaded MP charger path + - spellcheck: Removed a few instances of Gygax + generalthrax: + - balance: Boosts .22lr's damage very slightly. AP is still abysmal dogshit. +2025-03-17: + Erikafox: + - rscdel: All those mine removal bounties have paid off, since the amount of landmines + on most worlds has plummeted + - rscdel: CLIP pulled the bounty for landmines as a result. + - rscadd: someone blew a landmine freighter up over a sand world. + kaylexis: + - rscadd: Indestructible Jungle Rock + - rscadd: Indestructible Beach Rock + - rscadd: Indestructible Waste Rock + - rscadd: Indestructible Sand Rock +2025-03-18: + Erikafox: + - bugfix: radiation storms don't suck any more + FalloutFalcon: + - rscadd: Cool new plant analyzer tgui + - bugfix: Max reagent level on trays now work as intented. + - code_imp: Alot of plant file cleanup, primarly defining important things. + - rscadd: Helms in the orbit menu now use the ship's name as its full name + - bugfix: Random helms not connected to a ship don't appear in the orbit menu + - rscadd: Wallets now use a random spawner + - rscadd: More spawners now use the fancy sprites + - rscdel: Removed a few cruft items/spawners + - balance: Exotic loot is alot less cruft + - refactor: Re paths a few spawns to make them easier to reuse + - balance: Ration crayons and twice as rare + Ical92: + - bugfix: Arke-class now has a command modcomp + firebudgy: + - balance: Abandoned Crates reportedly now contain vastly different contents. Pry + them open, if you dare. + generalthrax: + - rscadd: Added more paperstuff to the Arke and CLIP gas masks + Evidence bags + thestripes: + - rscdel: Removed the borscht misspelling system. + - spellcheck: Fixed of typos and errors in multiple food descriptions. rewrote multiple + food descriptions from the ground up. +2025-03-19: + Erikafox: + - rscadd: broadcast cameras have gotten some minor improvements. + - imageadd: sprites for several types of specialist ammo + FalloutFalcon: + - rscdel: Removed some decals inside walls + - refactor: Adds basic mobs, a replacement for simple mobs that will hopefully destroy + the subtype. This is so far applied to cockroaches, mice, rats (and their variants) + - code_imp: the blackbox key "reagent expose mob" is now reagent_expose_mob + - rscadd: melee weapons now support varried cooldowns, we now have fast swinging + knives and slow swinging axes for example + - rscadd: stamped machetes can now break + - rscadd: expanded the range of the force string, toolboxes are now "medium" in + accordance to power creep + - balance: you now only take the block chance from your best weapon + - soundadd: alot of sounds ported from mojave sun + - refactor: halberds are now a simple subtype of dswords + - refactor: detached some shield code from shield/riot and ported from breaking + logic from tg + - refactor: gorlex sledgehammers no longer inherit behavoir from axes + MarkSuckerberg: + - rscadd: Autowiki ship table + - tweak: Ship Prefixes are now immutable. + - tweak: Crew manifest is prettier. In my opinion. + Ratvarr: + - bugfix: You can no longer place pipes anywhere you can see with an RPD. The grinch + is setback once more. + generalthrax: + - bugfix: Distillery now has Mauler mags. + - rscadd: Fancy Illestren in the Distillery armoury. +2025-03-20: + FalloutFalcon: + - bugfix: a say() is now a invoke async cause it sleeps + FalloutFalcon, ErikaFox: + - rscadd: Dynamic missions! see about them in your local outpost. + - rscadd: A ModComp program to view and call dibs on missions. + - rscadd: You now need to head down to outpost cargo to view and turn in missions. + - rscadd: Adds multiple ruin specific missions, you can examine objects to see if + they are using in a mission. + - rscadd: You can examine planets and other overmap objects. (will eventually become + admin only) + - rscdel: Kills all old missions expect for drills, overmap scans, and capture. + - admin: Swaps the category on a few overmap related buttons. + - admin: You can now choose to not load a planet when spawning them. + - refactor: Planets now pick there ruin before they spawn. Used in missions to pick + a planet. + SomeguyManperson: + - rscadd: surgeries to organic limbs that are done without anesthetic or painkillers + now have a chance to cause extra damage + - balance: medical cyborgs now have access to morphine in their hypospray +2025-03-21: + Erikafox: + - rscadd: entertainment monitors now tell you when someone starts their livestream. + don't miss today's episode of the scrapper show! +2025-03-22: + DIB-DOG: + - rscadd: Added a grinder and PPE to the Nail-class boarding shuttle + FalloutFalcon: + - bugfix: people should remember how to breath again + Gristlebee: + - rscadd: Modsuits can be bought in Cargo + - rscadd: Toolset, Armor Assist Module, Plasma Engine Module + - rscdel: Ethereal MOD Core, Bikehorn Module + - balance: Modsuit slow downs, power drain and armor + - balance: Spacesuit prices. + Ical92: + - rscadd: EHF point beacons, which can be used to preserve planets + MemeSnorfer: + - rscdel: Elzuose, IPC, and Phorid damage mods + firebudgy: + - bugfix: Shotgun ammo cans correctly have shotgun ammo now + - bugfix: Grenades on the market. + stiel0248, thgvr, cloudbreak: + - rscadd: vox and kepori sprites for the azuilhauz +2025-03-23: + DIB-DOG: + - rscadd: Added a portable pump to the Bolide + - balance: Re-evaluated the bolide armory equipment + - rscadd: Added a new bed to the Crying Sun + Sadhorizon: + - tweak: Plenty tweaks have hit the Sunskipper. Most importantly, dorms should suck + less now. It also now gets more medicine, more fuel and fishing gear. The mini + egun has been swapped for an E-60 too. + firebudgy: + - rscadd: 'Additional tool in cargo: Inducers.' + generalthrax: + - balance: Concrete and Hexacrete floors take roughly half the time to proceed to + the next drying stage + mc-oofert: + - bugfix: background radiation (on waste worlds) may no longer decide to ignore + obstructions and also actually works now +2025-03-24: + Erikafox: + - bugfix: ramzi installations should infight less + - balance: airbase no longer has the dragonbreath guy + - bugfix: the coalition can now purchase weapons again + FalloutFalcon: + - bugfix: beach bunkers' frontiersmen should now drop his shiny tags + - bugfix: baffles can now be turned in + - bugfix: the wasteplanet tradepost vangaurd mission now properly works + Gristlebee: + - rscadd: Ramzi Scrapping Station ruin + - rscadd: PGF corpse spawners, anchored portable flasher + - bugfix: door seal mapping helper +2025-03-25: + Zevotech: + - rscadd: Remapped the Meta-Class into a N+S Freighter + - bugfix: Corporate Paper Slips now use the correct sprite and wont vanish when + written on +2025-03-26: + Sadhorizon: + - rscdel: Removed an unneeded area from the Scarab. +2025-03-28: + Erikafox: + - balance: cirrus and nimbus got a little more variety in their food. Not much mind + you, but some. + thgvr: + - rscadd: New language quirks for the four main languages + - rscdel: Removed and rebalanced a lot of quirks +2025-03-29: + Burning02: + - bugfix: The CM-24 is now properly delivered when ordered +2025-03-30: + Erikafox: + - bugfix: the syndicate coalition has retroactively installed the correct turrets + on their old abandoned airbase. + Gristlebee: + - bugfix: multishot mech guns fire the correct number of shots + MarkSuckerberg: + - bugfix: Autowiki ship boxes now actually show crew count again + - rscadd: Autowiki ship crews now show the hud icon + - rscadd: Autowiki ship list now supports nested factions. + - tweak: Some subfactions now have their own colours. + SomeguyManperson: + - bugfix: starlight reagent now provides slightly better night vision than stardrop + as intended + generalthrax: + - rscadd: Added new decaling and flooring in some areas to the Riggs, along with + an armament increase and expansion of the cargo bay. + - rscadd: Modified Riggs atmospherics and added anesthetic to its medbay + - bugfix: Riggs airlock now works +2025-03-31: + Erikafox: + - rscadd: you can give photos longer descriptions + - bugfix: photo description is now properly labelled + FalloutFalcon: + - rscadd: A cap on simple missions, tweaks the numbers. + generalthrax: + - bugfix: Blind people unglued their eyes only to discover they were still blind diff --git a/html/changelogs/archive/2025-04.yml b/html/changelogs/archive/2025-04.yml new file mode 100644 index 000000000000..db6f24127f2d --- /dev/null +++ b/html/changelogs/archive/2025-04.yml @@ -0,0 +1,368 @@ +2025-04-01: + Apogee-dev: + - balance: SRM's Vickland has been rechambered to 8mm Illestren. + FalloutFalcon: + - rscadd: Dynamic missions should reach the max mission count quicker + - rscdel: Players go no longer open the overmap inspector, it was designed for admins + - bugfix: Overmap inspect is now formated better and santizes desc html + - rscadd: Mission critical things are now valid for orbit menu + - rscadd: Ships now show up higher on this list + Gristlebee: + - rscadd: Guncases can be printed in the autolathe, + Overteh: + - code_imp: adds the same digging action to the exosuit drills as the hand picks/drills + - bugfix: fixed missing zoom_out_amt = 2 of Woodsman, removed attachment scope slot + of Vickland + Rug-Dealer: + - rscadd: Spraycans are now acquirable as roundstart gear + - balance: Spraycans and crayons now have 60 charges, up from 30 + - rscdel: Removes all mention of the tagger perk + Sadhorizon: + - rscadd: E-11-wielding hermits started roaming the sand worlds. + - tweak: Minor tweaks to the E-11 Manufactory ruin. + - balance: Tweaked some numbers on the E-11 hermit. + - imageadd: Updated the E-11 hermit sprites with current in-hands. + SomeguyManperson: + - bugfix: ore veins will no longer have extractable amounts of NOTHING + - balance: ammo costs have been modified Slightly. Most of them are significantly + cheaper. + - balance: Rifle ammo crates with two boxes now only have one box, so the cost to + refill one is manageable. + - balance: Specialist ammo costs cut from 100% premium to 25% premium. Now you might + actually use them for something that isn't a bit! + firebudgy: + - balance: You can now smelt 10x as fast at furnaces. +2025-04-02: + Sadhorizon: + - rscdel: Colored decals are no longer rainbow on April Fools. + SomeguyManperson: + - balance: ion thrusters are now sold as boards instead of the whole machine, and + can actually be sold now +2025-04-04: + Gristlebee: + - balance: Reduces weapon drop chance on human simple mobs. +2025-04-05: + Gristlebee: + - bugfix: Viscerator factions + - bugfix: Scrapstation missions have the right indexes + MemeSnorfer: + - rscadd: KM-05 Rottweiler machine gun to Inteq cargo catalogue + generalthrax: + - bugfix: Riggs recycling now properly has a gasmixer +2025-04-06: + FalloutFalcon: + - rscadd: placeholder sprite for 8x58 box + - bugfix: 8x58 is no longer labeled as .300 + SomeguyManperson: + - rscadd: Dense smoke powder reagent, functions the same as normal smoke but you + can't see through it. 3 smoke powder + 1 carbon for 4 units + - balance: chemical grenade smoke is by-default transparent enough to see through! + firebudgy: + - balance: Talos has been reworked to contain a mech bay for servicing Ripley-class + mechs. Batteries not included. + - rscadd: New toy mech - the Inteq Gygax Modification. + generalthrax: + - bugfix: Frontie distillery turret is now a spitter and is no longer destroyed + by the fronties + thearbiber: + - rscadd: Added ship +2025-04-07: + Erikafox: + - rscadd: you can now climb railings you're on the same tile of to climb over them + FalloutFalcon: + - rscadd: basic stack trace if a ruin has a bad file path. + - bugfix: stops missions from qdeling players, i hope + Gristlebee: + - rscadd: Debug outfit is better. + - rscadd: Ice Lodge Touch ups + - rscadd: Commander Tiyak + - rscadd: Dynamic Humans support non-human species. + SomeguyManperson: + - rscadd: guns can jam now! Keep an eye on your arm's condition, if it says it can + malfunction, it might fail to load a round while firing. + - rscadd: there's a new item in the security section of cargo, which can be used + to repair gun condition. + - balance: surplus rounds no longer deal reduced damage, instead doubling the rate + at which condition is lost. + - balance: some guns gain wear faster or slower than others in their category. If + it's made out of scraps and duct tape, it's probably faster, if it's hunter's + pride, slower. + generalthrax: + - rscadd: Added Surgical Disks with T2 and T3 surgeries to the game + - rscadd: Most medical ships now have T3 disks, ships with operating consoles but + are not medical ships got T2 + - rscadd: Atoll now has an operating console + - rscadd: Cybersun bioware disk to the Cirrus + - rscadd: Most ruins with operating consoles now have either T2 or a T3 disk + - balance: LMG bipod deployment takes 0.5 seconds instead of 2 + stiel0248: + - rscadd: the ruin + thgvr: + - rscadd: Added a handful of kepori hardsuit sprites +2025-04-08: + Erikafox: + - bugfix: removes a random rack event from the nimbus + Ical92: + - bugfix: Model 'H' Gauss Pistols can now properly be purchased + - bugfix: wire terminals are now properly underfloor + - refactor: refactors solar controllers as computers + - bugfix: IDs can be inserted/removed from unanchoredEHFs beaconds + Slim-Pickems: + - bugfix: Shoulder holster are now able to fit disablers. +2025-04-09: + FalloutFalcon: + - code_imp: removes a stray verb call from the status tab + Rug-Dealer: + - balance: Duffelbags no longer slow you down when worn. + Sadhorizon: + - rscadd: Added the Typhon-class Light Exosuit Carrier + - rscadd: Added a non-concealed weapon bay mech module. + - imageadd: Added dark steel tiles as a turf. + generalthrax: + - rscadd: Added guthen pet and bed to the Mudskipper in the crew dorm +2025-04-10: + Apogee-dev: + - bugfix: 10mm and 9mm cartridges now use the proper metric name format + - bugfix: 6.5mm CLIP renamed to 7.5x64mm CLIP +2025-04-11: + generalthrax: + - bugfix: Sweet Potato repathed letting you make yaki imo properly + - balance: Landmine bounties have depleted landmine spawns on all but wasteworlds, + entirely. For real, this time. +2025-04-12: + Zevotech: + - rscdel: Removed the elite kill mission from lavaland_buried_shrine +2025-04-13: + Erikafox: + - bugfix: The corona/nimbus/cirrus washing machines will no longer randomly become + dense. + FalloutFalcon: + - bugfix: ship locking works again + Ical92: + - rscadd: outpost comunications console now has a purchase cart + - rscadd: outpost cargo is now bundled when applicable + generalthrax: + - balance: Butter now requires 5 milk instead of 15 +2025-04-14: + FalloutFalcon: + - rscdel: beats in deciseconds of a song is no longer player facing + - rscdel: handful of other jukebox cruft cleanup things + - code_imp: rustg version bump to 3.6 + - refactor: can now determine its own length and cache it, used in jukeboxes so + we dont have to add it in the title. + firebudgy: + - bugfix: Jungle Bunker tiles now have the correct atmos. + kaylexis: + - rscadd: added medical area to rock outpost + - rscadd: potted plants to rock outpost + - rscadd: altered bounty pad locations +2025-04-15: + Zevotech: + - bugfix: readds the remapped meta class + ? ryerice, Imaginos16, spooky, Horizon, Nebula (presumably), MarkSuckerberg, thgvr, + Erikafox, Nitha(emotional support), Latentish, The Playerbase + : - rscadd: New Overmap resprite + - rscadd: Most if not all planets have gotten a resprite + - rscadd: Some new missions. + - rscadd: These missions might lead you to a "new" planet... + - rscadd: Overmap Mechanics have been overhauled + - rscadd: Interactions; you can now choose where exactly to dock and how to dock. + - rscadd: Suns should be actually dangerous to go near + - rscadd: Suns are actually dangerous + - rscadd: See https://github.com/shiptest-ss13/Shiptest/pull/3868 for more + - rscadd: Radio interference based on radio's location on the overmap. For example, + moving next to an nebula might scramble your radio messages. A Telecoms setup + with reduce this significantly. + - rscadd: New Ore Overhaul + - rscadd: Some temperature changes missed by the temp pr should be addressed + - balance: Fauna balance should be slightly better now + - tweak: Helm consoles should tell you why you cant dock, rather than staying + silent on an error. + - bugfix: Carbon monoxide should work better now. + - code_imp: Framework for ship to ship docking + - code_imp: Overmap code is much more modular and robust now. + - rscdel: Removes cryosickness + - balance: Explosions, acid and electrocute acts all do alot less damage. +2025-04-16: + Ical92: + - rscdel: Removed the Bubble-class + Sadhorizon: + - rscdel: Bone axe and bone sword are no longer craftable. + SomeguyManperson: + - balance: certain enemies at the end of ruins are now significantly more likely + to drop their guns + - bugfix: skm fronties no longer have silly loot lists including a guaranteed skm. + sorry! + generalthrax: + - bugfix: Evidence bags show up in autolathes for real + - balance: Evidence bags are now 100 plastic instead of 500 + iimurpyh: + - bugfix: Removes Rachnid names from outpost name pool due to TGUI bugs +2025-04-17: + Gristlebee: + - rscadd: Dynamic mission objectives can now properly start inside containers + - bugfix: Wrecked Factory and Scrapstation retrieval missions + SapphicOverload: + - bugfix: Fixed exosuit radios being unusable + - rscadd: Exosuit radios can be talked into directly using .z + - rscadd: exosuit salvage saw now has the angle grinder sound effect when used, + instead of nothing + - balance: salvage saw no longer locks your exosuit in place + - bugfix: fixed salvage saw's action not being canceled properly when moving/turning/swapping + - bugfix: fixed salvage saw not being able to deconstruct certain things it's supposed + to + SomeguyManperson: + - bugfix: cables should work now. +2025-04-18: + Erikafox: + - bugfix: pouches can now be quick-opened from your pockets + FalloutFalcon: + - rscdel: AI no longer dream of electric sheep + Gristlebee: + - bugfix: Unpowered turrets no longer turn invisible. + Rug-Dealer: + - admin: Admin AI interact should no longer cause runtimes. + SomeguyManperson: + - bugfix: this somehow hasn't stopped anything from working yet so I don't think + it's player-facing + - bugfix: the wield channel will no longer fail if you move + generalthrax: + - bugfix: Mercury jellysandwich can now be eaten + - balance: Spitter changed to be 0.8 wear rate instead of 2 +2025-04-19: + Burning02: + - spellcheck: Swaps the caliber mentioned in Ramzi Shock Troopers description + DrCrawler: + - balance: Fractures now rely more on received damage and the force of the attack. + Erikafox: + - balance: pad bounties can now have a set minimum value + - balance: materials now deprecate value faster when sold + - balance: reduced payment from all missions (ruin and outpost) + - balance: storm missions now pay a different dividend per storm. + - balance: slightly reduced value of ice to credit transactions (2:5 to 3:10) + - rscadd: An unknown faction's stupid secret cave base has been improved. You can + find it on sand worlds. You may explode. + FalloutFalcon: + - code_imp: some cleanup for planet spawning + - spellcheck: indestructible not indestructable + FalloutFalcon, too many TG station contributers to name: + - refactor: buncha refactors to events and holidays from tgstation + meemofcourse: + - rscadd: Coffee machines, coffeepots, coffee cups, and other coffee stuff +2025-04-20: + Gristlebee: + - rscadd: Improvised buckshot can be autolathe printed + - balance: buckshot costs 350. + - balance: Rubbershot costs 350 + - balance: Blanks costs 110. + - balance: Shotgun slugs have 0 AP + MemeSnorfer: + - balance: Atomizes many cargo crates. This means many cargo purchases will be contain + less duplicate items, but with lower proportional prices! + thearbiber: + - balance: Replaces the HBG7 with the unscoped version on the crying sun +2025-04-21: + Erikafox: + - bugfix: you can no longer random gain carbon monoxide poisoning +2025-04-23: + Burning02: + - bugfix: The "Retrieve War Medal" contract will now have you retrieve the proper + medal +2025-04-24: + Erikafox: + - rscadd: you can use a wrench to unanchor a safe, and very slowly drag it somewhere. + - bugfix: you can now grind safes again + Rug-Dealer: + - rscadd: New signer neutral quirk, allowing you to speak other languages... but + signed! Everyone is able to understand sign language regardless of whether they + have the quirk or not as long as they can understand the base language. + - rscadd: Mute negative quirk. Prevents you from speaking (but not signing). + - bugfix: Deafness quirk is now select-able. + SapphicOverload: + - rscadd: Being unable to see color prevents being able to see the color of wires + - bugfix: Fixed monochromacy's effects not being removed when losing the quirk + firebudgy: + - rscadd: Icemoon Training Facility, operated and controlled by the Ramzi Clique. + - balance: Exosuit Pilot AI should now eject at around 20% integrity remaining. + generalthrax: + - rscadd: E10 uses heavylaser projectile appearance and some slightly changed sounds + - bugfix: Gorlex turrets are no longer a separate faction from their crews + meemofcourse: + - spellcheck: Rewrote a majority of the descriptions of CLIP clothing items + - rscadd: Switched a few items around in CLIP outfits + - rscdel: CLIP and C-MM Chemist outfit + - balance: CLIP Patroller hardsuits can now have guns, oxy tanks and ammo in their + suit storage slot +2025-04-25: + FalloutFalcon: + - bugfix: few invisible sprites are now fixed +2025-04-26: + DIB-DOG: + - bugfix: Fixed the BGC-10 sprite + Erikafox: + - bugfix: drills now put their parts in a spare hand before putting them on the + ground. + FalloutFalcon: + - balance: devastating explosions should kill everything again. + - balance: light and heavy explosions now have a wider range again + - bugfix: nachos shouldn't have any issues related to crafting anymore + Ical92: + - rscadd: end of round BSJ no longer affects docked ships + JohnFulpWillard, Nikotheguydude, Erika (ported): + - balance: Jousting now works on anything you're buckled to, not just Cyborgs. + - balance: Spears need to travel a longer distance to joust now. + - balance: Jousting's knockdown and damage now only gets stronger after you've traveled + the minimum tiles needed to joust. + MeeMOfCourse, RawBread: + - imageadd: You can now roll up your sleeves when wearing Minutemen Fatigues. Rejoice. + - imageadd: The Minuteman X-11 Helmet is now visible when held on your hands. + Rug-Dealer: + - rscadd: Oxygen candles! Stocked in emergency (red) toolboxes or purchasable from + the outpost; simply pull the cord and place to quickly re-oxygenate rooms. + SapphicOverload: + - rscadd: turf fires can now spread to other tiles based on said tile's flammability + - rscadd: grass tiles turn to dirt tiles when burning for long enough + - rscadd: fire extinguishers now put out fires on top of things the particles bump + into + - rscadd: cigarettes on the ground now have a small chance to ignite flammable turfs + - rscadd: rain puts out turf fires + - bugfix: fixed dirt tiles looking like metal plating after being burned by turf + fires + - bugfix: fixed extinguishers not being able to put out turf fires sometimes + - refactor: refactored extinguishers and extinguishing fires to be more sane and + use less duplicate code + - code_imp: turf fires give off fewer particles to reduce client-side lag when a + lot of fires are on screen + - code_imp: firefighting foam prevents hotspots and turf fires from being created + instead of having to repeatedly clear them every process tick + generalthrax: + - balance: SAW has mildly adjusted spread and has some hefty recoil now + thearbiber: + - bugfix: removes the extra groin pixel on humans +2025-04-27: + meemofcourse: + - code_imp: Accessories icons are no-longer hardcoded to one file + - code_imp: Moves SolGov and Inteq clothing into a different file + thearbiber: + - rscadd: Resprites the indie mining/engi space suits +2025-04-28: + SapphicOverload: + - bugfix: Fixed melee weapons not applying armor penetration when damaging objects + - bugfix: Fixed exosuit directional armor not working +2025-04-29: + Erikafox: + - rscadd: Shrouded drills now regularly spawn monsters. +2025-04-30: + Erikafox: + - bugfix: the booze missions specify what you're supposed to get better. + FalloutFalcon: + - bugfix: turrets should shoot angry rats and other basic mobs. + Gristlebee: + - bugfix: Jungle turf atmos + Ical92: + - admin: improves distress beacon creation by making the list searchable + - admin: added create-distress-signal-here + - admin: moved distress beacon verbs to Event->Overmap + generalthrax: + - bugfix: Fixed Zohil Temaki roll crafting typo + fixed recipe taking carp instead + of any fish diff --git a/html/changelogs/archive/2025-05.yml b/html/changelogs/archive/2025-05.yml new file mode 100644 index 000000000000..edcf96e783ab --- /dev/null +++ b/html/changelogs/archive/2025-05.yml @@ -0,0 +1,228 @@ +2025-05-01: + Cloudbreak, Latency: + - balance: Talos now has a small basic medical space, and the wings have been shortened + to compensate. Armory completely re-arranged as well. + Erikafox: + - rscadd: Lihoma Navy Yard has begun another production run of Atira-class skiffs + (and Tearful Quasar-class Orbital Interceptors, your tax dollars are going *somewhere*) + - balance: increases efficiency of combustion engines by 2.66x + FslashN: + - refactor: Teleporter pieces can now be arranged to have the hub in the middle. + - bugfix: Light switches can now be properly dismantled into frames with crowbar + or screwdriver. + - bugfix: Light switches are mounted with the right directional set and with the + correct offset. + - rscadd: You can now rename buttons with a pen after opening the maintenance panel + with a screwdriver. + thearbiber: + - rscadd: Adds the Leyak-class to the game + - rscdel: the hardliner sergeant getting a free ringneck for some reason + zimon9: + - rscadd: Added a 10mm ammo box, three weapon refurbishment kits, an angle grinder, + a mineral vein scanner, and an assault belt to the Derecho + - rscadd: Added goliath pup scooping + - rscdel: Removed wrecker power tools from the Derecho +2025-05-02: + generalthrax: + - rscadd: Added cargo orders for individual types of produce + - rscdel: Removed fruit and vegetables cargo order +2025-05-03: + firebudgy: + - balance: All remaining R&D consoles have been removed from planets. + thearbiber: + - bugfix: removes the fake oxygen cans on cave base and replaces them with actual + oxygen. +2025-05-04: + CluckinAwesome: + - rscadd: PR-05 Plasma Railgun to the general cargo catalogue, with small NT discounts + Erikafox: + - rscadd: Some quirks can no longer be detected by health scanners + FalloutFalcon: + - rscadd: Blind characters can now see visuals for important sounds like footsteps, + attacks, and gunshots. + - rscadd: Basic mob bears + - rscadd: Bears can climb trees + - rscadd: Bears love honey now, did you know we had honey? + - refactor: Basic mobs updated to Modern TG code + Rug-Dealer: + - rscadd: Following a review of shipbuilding standards, all toilets are now equipped + with the same set of buckles that chairs have. + SapphicOverload: + - rscadd: Replaced the Shetland's TEG and combustion engines with a turbine + firebudgy: + - balance: Recruits are now Auxiliaries. + generalthrax: + - rscadd: Added jorts, dolphin shorts, and khaki explorer shorts to the game + - rscadd: Added these new clothing items to loadout + - rscadd: Embedded objects can now be removed using a hemostat + - rscdel: Removed embed surgery + - bugfix: Fixed improper turfs on the ICW Base Waste Ruin that caused wind and fixed + one wire + - bugfix: ICW Base turrets are no longer ship turrets +2025-05-05: + Erikafox: + - balance: humans no longer know solarian by default + generalthrax: + - bugfix: Removed floor tile from one area with catwalk over it on the Shetland + melbert, erika (porting fox): + - refactor: Refactored language holders, making species changes not delete all of + your known languages + - rscadd: 'Languages can now have partial understanding of other languages. More + common English words are more likely to be mutually understood.qol: If you speak + in ALL CAPS in a foreign language, the translated words will also be ALL CAPS.' + - refactor: Refactored language translations. Report if you see any super odd looking + translations. + - bugfix: Force-says forcing you to speak common (such as cult invocations) will + now correctly force you to speak common (even if you don't know common) +2025-05-06: + Aquidu: + - rscdel: Sarathi, Elzuosa, Mothpeople, and Kepori no longer have free extra languages. + Erikafox: + - rscadd: The Solar Confederation has decided to issue Chronicle-classes to the + Pionierskompanien. Expect the usual Chronicle antics in a frontier sector near + you + FalloutFalcon: + - rscadd: Readded events, mostly replacing them with new ones + FslashN: + - rscadd: Industrial suit storage can now be built by using a multitool on the circuitboard. +2025-05-08: + generalthrax: + - rscdel: Removed carbon steel and all Overmap 5 minerals like copper, silicon, + quartzite, lead + - rscadd: Re-added plasteel + - balance: Ore yield returned to pre-Overmap 5 levels, all lathe recipes (more or + less) returned to their old costs + - bugfix: Stops blackmarket uplink crafting from eating your headset + - rscdel: Reverts fixes to plasma and ion thrusters that ended up slowing down ships + to a crawl +2025-05-09: + FslashN: + - bugfix: Chisel corners will now be preserved when the ship moves. + Overteh: + - bugfix: Nimbus got an actual mk2 hypospray vials. + - bugfix: organ freezer in Cirrus is no longer anchored. + SomeguyManperson: + - bugfix: detonating a grav anomaly core can now break bones as intended and also + deletes the core as intended + meemofcourse: + - code_imp: Uniforms may now roll down their sleeves or their top separately + - rscadd: Alt-Clicking an uniform will roll its top down, if possible +2025-05-10: + Erikafox: + - rscadd: remaps the ivory. a little less gear, a bit more shape, a smidge more + size. +2025-05-13: + moffball19: + - rscadd: Remapped the Colossus-class Armored Frigate + - rscadd: Added the Thunder-class Interceptor subshuttle + - rscadd: A few new empty outfits for Inteq roles + - rscadd: no_mag subtypes for 2 Inteq guns + - balance: Removed the ballistic goggles from the empty enforcer outfit. + - balance: Tweaked the IRMG Shuttle Pilot access, now with mining access instead + of warden. + - balance: Tweaks the Valor, adding ballistic goggles to the armoury and changing + the access restrictions for the Pilot's workplace. +2025-05-14: + Ical92: + - bugfix: Dried blood splatters now retain proper name & description + Majkl-J: + - bugfix: The spam fax event now actually spams faxes + - bugfix: Disablers no longer make a loud searing sound when impacting walls + SomeguyManperson: + - bugfix: the spread reduction for gunslinger provided to revolvers is no randomized + when applied + - balance: Retrieve vanguard mission can no longer have duplicates at the same time + generalthrax: + - rscadd: Added rare ore veins to planets, containing exclusively that planet's + rare materials +2025-05-17: + FalloutFalcon: + - bugfix: fixes both ramzi scraping station missions + - bugfix: fixes the beachbunker frontiersmen mission + - code_imp: ruin placement unit test is more robust and tests missions + - code_imp: fixes all ruin mission hard dels exposed by these tests +2025-05-19: + Apogee-dev: + - rscadd: Added handrails to Riggs + - bugfix: Moved handrails out of the way on Raleigh, Scarab, Elated Bolide + Erikafox: + - bugfix: reduces the chance of random space wind on beach planets + FalloutFalcon: + - bugfix: ambience should no longer have any chance of overlapping eachother + Sadhorizon, No_Originality: + - rscadd: Added Sola-class Hunting Vessel - an independent hunting ship! + SomeguyManperson: + - balance: wood is now significantly better at being used as fuel for a grill +2025-05-20: + Gristlebee: + - bugfix: Scrapping station wreck no longer has extra terminals, foreman's office + has correct revolver, armory shutters IDs + - balance: Removes a deadeye and replaces a revolt turret with a strike on Scrapping + Station + - bugfix: Gauss guns properly consume charge. + - bugfix: Claris no longer has ghost bullets haunting it. + - rscdel: Outpost maint access restrictions. + Sadhorizon: + - bugfix: You can use the Sunskipper grill again. + firebudgy: + - balance: Icemoon Training Center mech is no longer as easily cheesable. + generalthrax: + - rscdel: removed trollface and nigerian prince spam fax +2025-05-22: + FalloutFalcon: + - bugfix: fancy chat should now consistently load. Please ping @_fallcon if it doesn't. + FslashN: + - rscadd: Mech fabricator can now print in all cardinal directions, selectable from + the menu. + - bugfix: The fabricator will not print into tiles with dense objects/turfs/mobs, + fallback to its own tile. + - refactor: The fabricator menu should be snappier with switch(). + Gristlebee: + - rscadd: Custom vendors notify owners when a purchase is made + - bugfix: Custom vendor inventory icons, stock and purchasing + Meemofcourse: + - rscadd: Added the ability to wear binoculars around one's neck + Zevotech: + - bugfix: improvised Shotgun sprites are now fixed and are actually in your hand + again. + zimon9: + - balance: increases industrial tape stack sizes from 10 to 15, allows industrial + tape to fit in toolbelts and engineering pouches +2025-05-23: + FalloutFalcon: + - rscadd: New spawner that spawns a random fully loaded guns (This can include non-lethals + like foam guns atm) + - rscadd: Summon Guns now includes all functional and loaded guns +2025-05-24: + rye-rice: + - bugfix: Fixes greebles spawning inside ships +2025-05-25: + DIB-DOG: + - bugfix: sets cameras to the correct network on the Crying Sun + FalloutFalcon: + - rscadd: ngr outfits now get the ngr player faction + - bugfix: more permenant fix for ngr ships targeting crew + FalloutFalcon, LemonInTheDark: + - rscadd: Picking things up now looks better and its easier to see. + - rscadd: This animation should now play for alot more things. + generalthrax: + - bugfix: Talos gear room has vents for its airlock now + - balance: Boosts .22lr's damage very slightly. AP is still abysmal dogshit. +2025-05-26: + thgvr: + - rscadd: A lot of food changes, notably steaks don't come with plates +2025-05-27: + Erikafox: + - balance: disabler projectiles now say disabler when they hit you + Gristlebee: + - balance: Dogtags are faster to strip off corpses. + generalthrax: + - balance: Doubled the weapon wear thresholds on Shotguns, SMGs, Pistols, and Assault + Rifles. + - balance: Weapon Cleaning Kit now cleans twice as effectively + thgvr: + - rscdel: Panacea no longer spawnable +2025-05-28: + Majkl-J: + - bugfix: The healing surgeries now correctly consider limb integrity when rechecking + if a surgery step can continue, stopping correctly once they can no longer heal. diff --git a/html/changelogs/archive/2025-06.yml b/html/changelogs/archive/2025-06.yml new file mode 100644 index 000000000000..fd0f3c8e7fc9 --- /dev/null +++ b/html/changelogs/archive/2025-06.yml @@ -0,0 +1,210 @@ +2025-06-04: + Erikafox: + - bugfix: jungle cavecrew will generate less spacewind + - bugfix: jungle cave crew will only spawn one officer, irregardless of mission + - bugfix: jungle cave crew can have documents spawn now. + - balance: wasteplanet tradepost has less hivebots + - rscdel: crusty ass admin spawn gyrojet pistol + generalthrax: + - rscdel: Removed alofs tube from cargo + - balance: Beacon now can fire two rounds. Sprite unchanged + - rscadd: Added colored subtypes of wood hatched tiles and replaced them with their + respective variants on the Cirrus, Nimbus, Mercury, Panacea, and Corona + zimon9: + - balance: hugs now require grabbing the person to be hugged -- not doing so pokes + that person instead. The same is true for shaking one's hand. + - bugfix: fixes shaking someone up also poking them or patting them at the same + time +2025-06-05: + Erikafox: + - bugfix: jungle cavecrew is now space tile free +2025-06-06: + Erikafox: + - bugfix: cobra magazine is now completely filled when completely loaded + SomeguyManperson: + - bugfix: Guns will no longer decide to fire incorrectly sometimes + thgvr: + - imageadd: actual camo pants sprites for digi!! +2025-06-07: + DIB-DOG: + - rscadd: Mercurial Quasar-class Rapid Reconnaisance Vessel + Erikafox: + - bugfix: 7.5x64mm change has been reverted. Your ammo boxes will now match the + calibre they hold. + FalloutFalcon: + - admin: the antag panel has most antags again. + MemeSnorfer: + - bugfix: Fixes various issues concerning Inteq sprites. + thearbiber: + - rscadd: Resprites and reflavors security and HOS hardsuits. +2025-06-08: + Erikafox: + - bugfix: ship command bans no longer soulban you + - admin: removed a lot of ban types that don't really apply to us, added ship officer + bans + FalloutFalcon: + - rscadd: 516 is currently very very broken. Gives you a warning if your on it +2025-06-09: + Erikafox: + - rscadd: scanner drills automatically shut down upon reaching the required sample + count + - rscadd: base medscanners now have some range options for how irradiated you are. + - bugfix: high priority mission no longer cycles through world. + FalloutFalcon: + - rscadd: When tgui explodes it now includes a nt copyright accurate to our lore + - rscadd: Barrels now feel better and ferment nutriment into stuff instead of making + reagents from thing air + - balance: Barrel storage from 300u to 500u + - balance: minor potancy and reagent buffs to alot of plants +2025-06-13: + somerandomowl, watermelon914, erikafox (port): + - admin: Play Internet Sound will now automatically stop lobby music and prevent + lobby music from playing at roundend whilst active.) + - bugfix: Fixes the Admin Midi Widget UI to only present info that is available + to players to be seen + - admin: Play Internet Sound URL input is now TGUI + - admin: Play Internet Sound warns you if a song length is >10 Minutes +2025-06-14: + Erikafox: + - rscadd: updates the raleigh's gear and design slightly. + Sadhorizon: + - rscadd: Added hunting bounties - you can now sell all that useless bone and hide + for (some) profit! + - bugfix: Added missing trophies to their respective bounty. + generalthrax, thearbiber: + - rscadd: Nanotrasen Refueling Station space ruin + - rscadd: Bonnie-class Cargo Hauler + - rscdel: Power-Puzzle and Onehalf +2025-06-15: + Erikafox: + - balance: indie cobra is now burst fire + - rscadd: Basic Mob Hivebots + Imaginos16, generalthrax: + - rscadd: Added the Ramzi Elite Hardsuit + - balance: Ramzi Stormtroopers now wear the Ramzi Elite Hardsuit + Ratvarr: + - rscadd: Nanotrasen has begun deploying Magpie-class exploration frigates to the + Frontier. + SomeguyManperson: + - rscadd: Reagent grinder in cargo 500 cr buy buy buy + - balance: mortars and large mortars cost 0 stamina down from however much it used + to be. Grind harder. + Zevotech: + - rscadd: Rollies now have an inhand sprite. + generalthrax: + - balance: Vickland is 10 rounds again. Strippers are 5 instead of 8 + - rscadd: Pulls out unused 308 box sprites for 308 to replace Inteq ammo sprite + - bugfix: Ice Lodge now has 8x50 instead of 308 + ritorizo: + - balance: Fix on mix reagent explosions being underpowered. + rivercadaver: + - rscadd: Absolution-Lux "Solferino" chassis for silicon use. + thearbiber: + - rscadd: Adds the Rhode-class to the game. +2025-06-17: + Erikafox: + - balance: kinetic crushers now do knockback && won't fall out of your hands + Gristlebee: + - rscadd: New Black Market inventory + - rscadd: Black Market guns come in cases, clothing packs come in duffelbags + - rscdel: Cruft items from Black Market + - balance: Black Market prices and stock + - bugfix: Cycler Shotgun + Overteh: + - bugfix: added snouted varition define for head/robot/lizard + generalthrax: + - bugfix: Turret on the Bonnie in Onehalf now breaks properly +2025-06-20: + Gristlebee: + - bugfix: Black market camoflauge set + SomeguyManperson: + - bugfix: turrets set to not target humans will now not target humans + thearbiber: + - bugfix: vi hardsuit sprites back +2025-06-21: + Erikafox: + - bugfix: cobra mag icon again + - rscdel: a few speech related brain traumas + Gristlebee: + - bugfix: Frontiersmen simplemobs dropping unintended items + - bugfix: Commander Tiyak drops pulse slugs. + - bugfix: Flametrooper corpse outfit no longer spawns with unintended bag contents. + - bugfix: Simple mob surgeons and flametroopers dont drop pirate radios + PositiveEntropy: + - imageadd: The sprites for the bent and floppy rabbit ears have been updated respectively! + Retlaw34, thearbiber, generalthrax: + - rscadd: C-20r Cobra now has an integrated suppressor + generalthrax: + - balance: Reinforced the Falmouth's walls and made its atmos more robust, amongst + other layout tweaks, like 2000 starting budget + - rscadd: Fax to the Falmouth and a Mechanic slot to replace a Deckhand + thearbiber: + - rscadd: touches up mulder and business hairs + thearbiber, generalthrax: + - rscadd: Added new Syndicate softsuits to the game in several factional colours + - rscadd: New Ramzi softsuit mobs on Scrapping Station + - balance: Blackmarket and Cargo now provide the new softsuits replacing the old + ones +2025-06-22: + Sadhorizon: + - rscadd: Added a filing cabinet to the Arke-class. + thgvr: + - rscadd: NGR kepori suit +2025-06-23: + Gristlebee: + - bugfix: Cobra attachments. +2025-06-24: + DIB-DOG: + - rscadd: Added the seclite to outpost cargo + - balance: Adjusted rail light attachment price in accordance with added seclite + FalloutFalcon: + - bugfix: bunnies should function properly again + SomeguyManperson: + - bugfix: rottweiler ammo boxes take specialist ammo + generalthrax: + - bugfix: 8x50mmR stripper clips can hold specialty ammo again + - balance: Heatproof lattice now requires only normal rods + zimon9: + - bugfix: fixed .300 speedloaders so that they can take .300 TRAC, and also gives + .300 TRAC sprites +2025-06-25: + Erikafox: + - rscadd: cybersun ships now have tecetian foods on them + - balance: stardrop capsules have been replaced by patches + Gristlebee: + - bugfix: Cycler shotgun examine and worn icon +2025-06-26: + DIB-DOG: + - rscadd: Added a CMO PGF doctor variant + - balance: Overhauled the Woeful Cthonian + - bugfix: fixed missing items on three PGF ships + - bugfix: PGF marine armor crates and PGF navy coat crates now have unique paths + Erikafox: + - balance: moved the rear colossus turrets + firebudgy: + - bugfix: Various issues in the Icemoon Training Facility have been resolved and + airlock names are now up to date. + thearbiber: + - rscadd: Remaps Nanotrasen Ice Outpost +2025-06-27: + Burning02: + - rscdel: Removes Omni Protolathes and Circuit Imprinters from the rare board drop + pool + generalthrax: + - rscdel: Removed combat exosuits from cargo. Other methods of getting player-accessible + exosuits unchanged. + - rscdel: Removed the BRM-6 breaching rockets from cargo and removes SRM-8 missile + rack from Jungle Cavecrew +2025-06-29: + SomeguyManperson: + - balance: EMPs hurt cyber stuff less + - code_imp: oxygen lockers no longer have a chance to contain NOTHING or vanish + leaving behind nothing but a red toolbox + - rscadd: oxygen lockers now have phorid accessories! Enjoy having more than one + tank! + thearbiber: + - rscadd: cargo pants to the game + - rscadd: resprites spiky ponytail, long emo, bunhead3, and adds long bun +2025-06-30: + Gristlebee: + - bugfix: Mil cobra rail slots for real diff --git a/html/changelogs/archive/2025-07.yml b/html/changelogs/archive/2025-07.yml new file mode 100644 index 000000000000..92c3f3edb000 --- /dev/null +++ b/html/changelogs/archive/2025-07.yml @@ -0,0 +1,207 @@ +2025-07-02: + Erikafox: + - bugfix: refa-li recipe fixed + Gristlebee: + - rscdel: Legion posibrain loot. +2025-07-05: + Erikafox: + - rscadd: teceti foods now come with protein + - bugfix: chicken meat now has its old sprite + firebudgy: + - rscdel: Vestigal clownsprite in Ghost HUD + generalthrax: + - balance: Increased .44's damage and reduced recoil on the M20 Auto Elite +2025-07-10: + Erikafox: + - rscadd: reworks the majority of the Atira's interior + - rscadd: cirrus interior got remodeled. go see the desk. + generalthrax: + - rscadd: the woods +2025-07-11: + generalthrax: + - balance: Tweaks to Cavecrew, including no more wind, a minor change to the Frontiersmen + Heavy, ammo box changes, and other minor things +2025-07-12: + MemeSnorfer: + - rscadd: Sun Hat + - imageadd: Resprites overalls, and makes them into uniform slot clothes rather + than exowear + Sadhorizon: + - rscadd: Added a stamp for every CLIP division. + - rscadd: Typhon, Atlas and Arke now have correct stamps mapped in. + thearbiber, generalthrax: + - rscadd: New Shield Sprites + - rscadd: Blackmarket Spike Shield + - balance: Shields now block more and can be repaired in exchange for slowdown + - balance: Ballistic Shield in cargo price increased +2025-07-13: + Erikafox: + - bugfix: if you get shocked by a shutter it now cancels the interact like intended + - bugfix: you can roll sleeves down with alt-click again + generalthrax: + - bugfix: Overalls now correctly show their alt state + - balance: Military and Security belts can now fit one Medium-Sized Pistol (And + Other Small Energy Weapons) + - bugfix: Fixed storage's exception_hold so some items can actually be exempted + from a size restriction + - bugfix: Fixed Donut sprite and re-added toast recipes. Slightly decreased jelly + consumption +2025-07-14: + Erikafox: + - bugfix: you can now properly tell when someone has an excessive amount of wet + stacks + - bugfix: the miras ration is real +2025-07-15: + Ossa88: + - bugfix: Coffee Supplies have had their UPC codes changed to become Civilian Products. + - bugfix: Smart Fridge and Grinder boards have had their UPC codes changed to Machinery. + TheArbiber, GeneralThrax: + - rscadd: ponchos +2025-07-16: + Erikafox: + - bugfix: Ship engine shutter position has been standardized. + Retrino: + - balance: gives cybersun bridge a door bolt button +2025-07-17: + Erikafox: + - rscadd: A small hermit trade post has been detected on the surface of your nearest + sand planet + Gristlebee: + - bugfix: Energy weapon lens are indestructible. + - rscadd: Bank cards at outpost for 100 credits. + - balance: Ion rifle price reduced from 10k to 3500 + - balance: Ion rifle has a six second cooldown between shots. + Retrino: + - rscadd: resprite and add new hairs + Rye-rice, Gristlebee: + - rscadd: Wasp, Semi-Auto Mauler, F3, Mower + - rscadd: Wasp Frontiersmen + generalthrax: + - rscadd: Made lipstick colours softer + - balance: Adjusted damage, AP, firerate, and laser amount on the E-SG laser shotgun + to be less + - bugfix: Rebellion turrets no longer give you infinite .50 +2025-07-18: + FalloutFalcon: + - rscadd: Added warning signs to mine fields + - refactor: 'Refactored minefield spawned to be more better c:' + generalthrax: + - bugfix: Crab Rangoon has a recipe again + thearbiber: + - rscadd: Adds the Roach and Flea, Ramzi vessels +2025-07-19: + Erikafox: + - rscadd: you can now purchase duffelbags at da outpost + - balance: pulling a crate now slows you down + - rscadd: You can now use a shotgun on a door to breach through the door + FalloutFalcon: + - rscadd: The Ramzi faction has chosen to train its troops to use their left hands. + Gristlebee: + - balance: Max damage from heavy explosions to items is now 150, from 250 + mothblocks, erika porting: + - admin: Added the ability to enforce two-factor authentication onto admins. + thearbiber: + - rscadd: adds the N+S hardsuit to the game and puts it on the harrier and magpie + - balance: removes goliath plating on hardsuits + thgvr: + - bugfix: rest of the food repathing, report any visible issues + - rscadd: Added organic wounds + - rscdel: Removed IPC structure + - rscadd: minor tweaks to tackle numbers +2025-07-20: + Erikafox: + - bugfix: minute bar fluff un-regressed + - rscdel: random minefields + - rscadd: remodels the fore of the cirrus + - rscadd: half-stair decal + - bugfix: you can now map specific coffee cartridges + - bugfix: grass on beaches being invisible sometimes + Zevotech: + - rscadd: replaces a large amount of planetary turfs on ruins (jungle, lava, space) + with their updated overmap 5 counterparts. please report any atmos issues or + missing sprites. + - bugfix: fixed unset icon files for various planetary turfs + - bugfix: fixed large turf offset in mapping software for 70x70 planetary turfs + (shouldnt be player facing, needs review) + - bugfix: removed some decals inside walls on NT_ice & NGR_rock outposts that were + causing warnings + - rscdel: removed unused lavaland and wasteplanet grass types + - rscdel: removed legacy lavaland grass types + thearbiber: + - rscadd: resprites the hermit rifle and zip pistol + - balance: reworks the zip pistol, removes safeties off the zip pistol and hermit + rifle +2025-07-21: + Erikafox: + - bugfix: holocalls now report who's calling +2025-07-22: + Erikafox: + - balance: thronglers deal more damage but have a wound bonus based on your armor + and spread the damage out + SapphicOverload: + - bugfix: Fixed being able to understand sign language without knowing sign language + - code_imp: Refactors sign language into an actual language +2025-07-24: + generalthrax: + - balance: Decreased amount of plasma in flooded rooms in Onehalf and added some + misc tweaks like blood packs + moffball19: + - rscadd: Kiwi-class Prospector, a mining vessel operated by N+S Logistics + - code_imp: Processing consoles now use a range distance variable to detect furnaces. +2025-07-25: + thearbiber: + - rscadd: Various Ramzi Clique Clothing +2025-07-26: + generalthrax: + - rscadd: Reflavoured the Mudskipper to be a Hardline vessel. Many changes including + new walls, decal-style, and shuffling around of equipment and machinery + - rscadd: Indie engineers now start with olive overalls + - balance: Indie engineer roles no longer start with toolbelts and insulated gloves. + Both of these now spawn in engineer's closets. +2025-07-27: + Erikafox: + - rscdel: Panacea + - bugfix: f4 can take scope again. whoops. + SomeguyManperson: + - bugfix: you can no longer get infinite attachment slots by pretending to remove + existing attachments so the gun thinks it can hold more + generalthrax: + - bugfix: Invictus magazine is now in cargo + - balance: Shields block slightly less, have less integrity, slow you down much + more, and now require time and 10 plasteel to repaiar + - balance: Prevents most automatic guns from mounting scopes (along with a few more + like the E50 and Accelerator laser cannon) + - balance: Locks the long scope to the Illestren, lever-actions, and Beacon + - balance: Decreased medium scope zoom to give you only about 4 tiles of extra visibility + - balance: Hydra DMR can no longer mount extended or casket mags + melbert, Erika (porting fox): + - refactor: Drunkenness is now a status effect. The drunk alert should no longer + persist on aheals and in some rare cases, and should overrall act a bit more + consistently. + - refactor: Dizziness is now a status effect, similar to above. You no longer should + be stuck with an off center client view if you get very dizzy. + - refactor: Refactored status effect examine text. Should overall have slightly + better grammar and more consistent span uses. + - refactor: Jitterriness is now a status effect + - rscdel: some contractor related cruft that i didn't want to update + zimon9: + - balance: allows bodycameras to be worn around the neck +2025-07-28: + 'Anticept, FalloutFalcon ': + - server: the build chain used in TGS has been fixed so that "#define CBS" is properly + prepended to shiptest.dme, and suppresses compiler warnings regarding building + the dme directly. +2025-07-29: + SapphicOverload: + - bugfix: Fixed manifest and join menu UIs not updating properly + - bugfix: Fixed certain text characters breaking memos +2025-07-30: + ? '''s are required for the changelog to work! You can put your name to the right + of the first :cl: if you want to overwrite your GitHub username as author ingame. + -->' + : - bugfix: armor bugfix, likely nothing player-facing +2025-07-31: + generalthrax: + - bugfix: Onehalf's holofields are now anchored + thearbiber: + - rscadd: Venetia-class Superyacht diff --git a/html/changelogs/archive/2025-11.yml b/html/changelogs/archive/2025-11.yml index 2f81ad62709f..68b53226e32e 100644 --- a/html/changelogs/archive/2025-11.yml +++ b/html/changelogs/archive/2025-11.yml @@ -166,4 +166,3 @@ - bugfix: NGR rock no longer uses away mission APCs thearbiber: - rscadd: remaps banshee - diff --git a/html/changelogs/archive/2025-12.yml b/html/changelogs/archive/2025-12.yml index a57a33204cae..295e320a6786 100644 --- a/html/changelogs/archive/2025-12.yml +++ b/html/changelogs/archive/2025-12.yml @@ -70,3 +70,91 @@ - balance: Super Sporter is now chambered in 7.62 and has a fire delay of 3 instead of 4 - bugfix: Super Sporter now has normal Rifle wear +2025-12-14: + Erikafox: + - bugfix: mice will refrain from eating cables under floor tiles + thearbiber: + - rscadd: digi cowboy boots +2025-12-15: + Erikafox: + - rscdel: maid box removed from autodrobe +2025-12-16: + thearbiber: + - rscadd: Various new undershirts +2025-12-17: + generalthrax: + - rscdel: Removed the Twinkleshine for budgetary reasons +2025-12-18: + SapphicOverload: + - bugfix: Fixed paralysis from burn wounds persisting after the limb is removed + SomeguyManperson: + - balance: m20 auto elite price increased from 1250 to 1500 + - rscadd: the pinscher has been returned to cargo +2025-12-19: + SomeguyManperson: + - balance: Dodging a bullet from being in smoke will now play a sound to let you + know you have narrowly avoided death + zimon9: + - rscadd: Added a dedicated wideband intercom key + - balance: prevents the intercom key from sending messages through widebands +2025-12-20: + generalthrax: + - bugfix: Wild Sector should spawn much more planets +2025-12-21: + Erikafox: + - admin: Set Next Outpost has been renamed to Set Next Outpost System, and now stores + an entire system to force the right outpost to spawn in the right system + generalthrax: + - bugfix: fixed pathing errors in sushi slicing +2025-12-22: + Crystal1Blitz: + - rscadd: Added Recyclebay Ramzi Wasteplanet Ruin + - rscadd: Added recover mission for Recyclebay + - rscdel: Removes Unhonorable from existence +2025-12-23: + Aquidu: + - rscadd: Added a rolling table to the Sunskipper + DIB-DOG: + - balance: changed the crew slots of the Woeful Cthonian + - bugfix: fixed the Woeful Cthonian's airlock + - bugfix: removed redundant machines from the PGF lineup and added/fixed missing + ones. + generalthrax: + - rscadd: Venetia has newfoods cooking stuff now +2025-12-25: + generalthrax: + - bugfix: Super Sporter's scope is now on properly + thearbiber: + - rscadd: motorcycle helmets +2025-12-27: + Erikafox: + - rscadd: Cybersun has finally re-opened Thousand Eyes Perch - closed during the + final years of the ICW due to hazardous conditions in system. + - rscadd: gas giant parallax sprites from hyperstation + thearbiber: + - rscadd: Remaps the Haboob + zimon9: + - balance: readds verbose health scanning for observers + - rscadd: Added the ability for water to be used to reduce disgust levels +2025-12-28: + PositiveEntropy: + - rscadd: The NGR and Inteq now finally have their own elite hardsuits! + generalthrax: + - rscadd: Slightly lightened the eyepatch sprites and raised the straps to be above + the good eye + thearbiber: + - rscadd: touchup for fox and cat ears +2025-12-29: + generalthrax: + - rscdel: Sabre SMG removed from maps replaced with Expedition SMG + - rscdel: Sabre SMG removed from black market + thearbiber: + - rscadd: resprites syndicate softsuits + - balance: buffs syndicate softsuits except the indie one +2025-12-31: + Addust: + - rscdel: The Visit By Santa event has been removed. + Erikafox: + - bugfix: Clicking now cancels your typing indicator + generalthrax: + - bugfix: Cybersun outpost pipes are connected fully diff --git a/html/changelogs/archive/2026-01.yml b/html/changelogs/archive/2026-01.yml new file mode 100644 index 000000000000..79a815b87079 --- /dev/null +++ b/html/changelogs/archive/2026-01.yml @@ -0,0 +1,152 @@ +2026-01-03: + DIB-DOG: + - rscadd: Added more emotes to the Crit whitelist + Erikafox: + - admin: admins can now mute deadchat with 'toggle-deadchat' + firebudgy: + - balance: CTF Retheme to Frontiersman vs CLIP. Main weapons are now the SKM/CM-82 + assault rifles and small sidearms. + - balance: You can now be any species in CTF, for better or for worse. + generalthrax: + - bugfix: Frontie troopers have internals again + zimon9: + - bugfix: fixed characters layering under lights +2026-01-04: + generalthrax: + - bugfix: Fixes Cropped Light brown hoodie icon + - balance: Dough and Meat cut into slices of 4 instead of 3 + - bugfix: Shemagh masks now tell the correct people that you're putting it on + thearbiber: + - rscadd: ablux sidestate fix +2026-01-05: + Erikafox: + - bugfix: The E40 laser safety will now properly disengage + - rscadd: You can now put people out with your bare hands (if you're wearing the + relevant gear (temperature safe gloves)) + generalthrax: + - rscadd: Firefly now has flour and cards + thearbiber: + - rscadd: labcoat/armored duster resprite and black duster +2026-01-07: + generalthrax: + - rscadd: Spacemall now has 2 electric welders + - bugfix: Shemagh masks now properly conceal your identity + zimon9: + - rscadd: Added the ability for wigs be to equipped in the neck slot +2026-01-08: + PositiveEntropy: + - imageadd: New microwave sprites have been added! +2026-01-09: + generalthrax: + - balance: Triples the speed of flipping tables + thearbiber: + - rscadd: four more hairstyles + zimon9: + - bugfix: fixes the orbit menu breaking +2026-01-10: + Erikafox: + - bugfix: stray pipe on thousand eye perch + - rscadd: Caldwell has put together the funds to buy a new bar for Installation + Trifuge. Don't miss the opening party. + Gristlebee: + - rscadd: RMB Underbarrels + - balance: Underbarrel shotgun two rounds and semi auto + - balance: Riot grenade launcher has it's range lowered, and grenade detonation + time upped + - bugfix: Flareguns, single shot magazines, underbarrel egun ammo toggles + - bugfix: Doubled Outpost Shuttles + thearbiber: + - rscadd: miniskirt+suit rolldowns + - rscadd: alt thigh high + zimon9: + - rscadd: Added an emergency tank pressure alert system + - balance: Increased emergency tank volumes + - bugfix: fixed buckling between floors on an elevator +2026-01-11: + generalthrax: + - bugfix: ghosts and dead bodies can no longer unflip tables + zimon9: + - bugfix: modified tank pressure alerts +2026-01-12: + Erikafox: + - bugfix: stomach works again + Ingorer, Erika: + - bugfix: Inhaler reagent administration being extremely weird. + - bugfix: fixed taste layering + - code_imp: changed exposing reagents +2026-01-13: + Erikafox: + - bugfix: trifuge has a ghost spawner again + generalthrax: + - balance: Other non-standard meats cut into 4 cutlets as well + - bugfix: Kali Subshuttle Port is no longer double and works +2026-01-14: + KOCMODECAHTHUK: + - bugfix: Game panel create turf list + SapphicOverload: + - bugfix: Fixed some guns firing twice simultaneously + zimon9: + - rscdel: Removed intentional deathgasps +2026-01-16: + thearbiber: + - rscadd: digi alt thighhigh adjustment +2026-01-17: + PositiveEntropy: + - bugfix: Ponytail (Side) 4 now shows the eyes properly. +2026-01-19: + generalthrax: + - bugfix: Haboob now has correct headsets for officer +2026-01-21: + KOCMODECAHTHUK: + - bugfix: Non-CTF CM-82 guns no longer get deleted when thrown or drop + SomeguyManperson: + - rscadd: bashing your shield is no longer restricted to batons and now works for + all melee weapons + ValorousHeart: + - bugfix: flea now has pirate headset instead of syndicate one + generalthrax: + - bugfix: roach now has pirate headsets instead of syndicate ones +2026-01-23: + hry-gh: + - bugfix: the admin music player works again on 516 +2026-01-25: + Erikafox: + - bugfix: T4 drill missions will now progress properly + - bugfix: T4 drills now have a sound associated with their mining. + - bugfix: drills will now properly unanchor themselves from veins they destroy. + SapphicOverload: + - bugfix: Fixed phorids dying for no reason + Smartkar, Ghommie, Melbert, Jacqurel, Rhials, Erika (Porting Fox): + - code_imp: Updated some status effect tick code to be more clear of how long is + elapsing between ticks. Some effects that were inadvertently weakened are now + stronger as a result (fire and some heretic effects). + - bugfix: Fixed grab offsets not showing for anything but passive grab + - refactor: Refactored pixel offsets of mobs. Report any oddities + - refactor: Replaced hardcoded "safeties" for lava, chasms and ignoring turf slowdowns + on catwalks with traits. + - balance: much like catwalks, tables and conveyors also disable turf slowdowns. + - balance: slippery turfs won't slip you when walking on a table. + - bugfix: pixel offsets from grabbing other mobs now respect the body offset variables. + - refactor: Changed some code so that resized mobs no longer look like they're poking + over the below tile with their legs or not even reaching the bottom edge of + the tile they're on. + - rscadd: deep water swimming w/ immersive drowning +2026-01-26: + DIB-DOG: + - rscadd: remaps the Dwayne + Erikafox: + - bugfix: simplemobs will no longer get stuck on railings when they're trying to + kill you +2026-01-30: + Addust: + - rscadd: Recent recon efforts have identified the Ramzi Clique's successful takeover + of various ICW-era nuclear bunkers on jungle planetoids, alongside a major increase + in the number of officers named "Jerry" who actually know how to operate their + personal submachineguns. + Erikafox: + - rscadd: Atira interior expansion + generalthrax: + - bugfix: Added right cell to Mining Facility +2026-01-31: + thearbiber: + - rscadd: remaps the kilo diff --git a/html/changelogs/archive/2026-02.yml b/html/changelogs/archive/2026-02.yml new file mode 100644 index 000000000000..d213b9da4281 --- /dev/null +++ b/html/changelogs/archive/2026-02.yml @@ -0,0 +1,116 @@ +2026-02-02: + SapphicOverload: + - rscadd: Added several new wound types for robotic limbs. + - balance: Fire stacks now apply wounds normally instead of instantly applying the + highest one possible. + - code_imp: Multiple wound types can be rolled for and applied simultaneously. + - code_imp: Burn damage weapons can now apply slash/pierce wounds with the correct + sharpness. + - bugfix: Fixed IPCs taking far more damage in crit than intended. + firebudgy: + - balance: APC Control Console removed from all player-facing environments. + thearbiber: + - rscadd: resprites nightvision +2026-02-03: + firebudgy: + - code_imp: Description change of the Plump Helmet Mushroom +2026-02-04: + firebudgy: + - bugfix: Navy Patrol Cap now has side states for Vox. + thearbiber: + - bugfix: syndicate engi suit sprite + - rscadd: digi sprites for old bloodred +2026-02-06: + Erikafox: + - bugfix: no minors +2026-02-08: + thearbiber: + - rscadd: infiltrator hardsuit + - rscadd: ramzi officer coat resprite, mantles + - rscadd: heavy mining suit resprite + - rscadd: resprites unkept/pixie, adds rat tail/longhair half + thearbiber, generalthrax: + - rscadd: Added HP Pyre, a .45-70 Lever Action Rifle, for 3000 credits. Can be loaded + with stripper clips + - balance: Replaced one Illestren on the Elder with an HP Pyre Factory +2026-02-10: + Erikafox: + - bugfix: If you are smoking with a helmet on, you will no longer make smoke clouds. + It is advised that anyone wishing to smoke indoors get an EVA helmet on in the + future. + - rscadd: You can now alt-click on some magazines to quickly empty the entire thing + - bugfix: Certain ammo types should no longer stack to odd amounts + - bugfix: Ammo boxes now rename themselves on reskin + zimon9: + - bugfix: decreased the layer that drills render at +2026-02-11: + zimon9: + - balance: made shuttlegibbing nicer + - balance: chop chop chop off weapon stocks with a hatchet +2026-02-12: + Addust: + - bugfix: After a several-hour fax exchange, Hardline have replaced the headsets + provided to Karst-class dropships and started installing light switches in the + canteen airlocks of Kali Andhi-class destroyers. + Cluckinawesome, thearbiber: + - rscadd: Added the Heavy Shield + - rscdel: Removed Goliath shield, Roman shield (real and fake), Riot shield, Spiked + riot shield, Flash riot shield + - balance: Lightly touched telescopic shield's stats to make it a little weaker + - imageadd: updated the sprites used for the telescopic shield and the new sprites + for the heavy shield + - imagedel: deleted the Goliath shield, Roman shield (real and fake), Riot shield, + Spiked riot shield, Flash riot shield, + - code_imp: Updated shields to not all use plasteel, each now has a respective material + that is used in repair + Ical92: + - bugfix: adds missing manufacturers for Lyra and Sojourner + generalthrax: + - bugfix: Fixed some bad decals on Moonbase + - bugfix: Elite DMR in command post now fires from their position instead of walking + into the wall + thearbiber: + - rscadd: remaps rustbase + thgvr: + - balance: You can no longer revive corpses without a ckey (npc bodies, DNR players) + zimon9: + - rscadd: Added the number of dogtags required for a particular dogtag case to be + filled +2026-02-13: + DIB-DOG: + - rscadd: Added miscelaneous idie snouted and digi sprites + Erikafox: + - balance: Typhon disabled pending remap + - balance: The plasmacutter has been reworked! + - rscadd: Sting and Cytodron, two outpostmed exclusive chems with minor buffs. + - rscadd: shoalmix inhaler to black market. + - bugfix: burn kits will have patches in them again + - bugfix: Polypyrylium Oligomers causing more bloodloss than intended + zimon9: + - rscadd: Added the ability to change IPC eye colors in-round + - refactor: tank alert code modified to reduce pointless operations, updates more + rapidly +2026-02-14: + Erikafox: + - bugfix: you can now revive people again + SapphicOverload: + - bugfix: Fixed a runtime error when clicking on paper with an item that has no + writing implement properties. +2026-02-17: + Ical92: + - bugfix: glasses of vimukti no longer reference an icon that doesn't exist + KOCMODECAHTHUK: + - rscadd: Refresh animation for All-In-One Grinder + generalthrax: + - bugfix: You can now actually get mead +2026-02-18: + PositiveEntropy: + - imageadd: Prettier bureaucratic supplies have been added to offices all over the + frontier! +2026-02-19: + KOCMODECAHTHUK: + - bugfix: Fixes movement keys being stuck + SapphicOverload: + - rscadd: Added ship cloaking devices. + - rscadd: The Leyak-class Covert Frigate is now equipped with a cloaking system. + - rscadd: Hiding in a nebula obscures ships from long-range sensors. diff --git a/icons/mob/clothing/back.dmi b/icons/mob/clothing/back.dmi index 1abe6f945ac8..9aa3d409377d 100644 Binary files a/icons/mob/clothing/back.dmi and b/icons/mob/clothing/back.dmi differ diff --git a/icons/mob/clothing/eyes/eyes.dmi b/icons/mob/clothing/eyes/eyes.dmi index a9c1752cd1bb..ba72b300b181 100644 Binary files a/icons/mob/clothing/eyes/eyes.dmi and b/icons/mob/clothing/eyes/eyes.dmi differ diff --git a/icons/mob/clothing/helmet_overlays.dmi b/icons/mob/clothing/helmet_overlays.dmi index 94929322897a..57a7f968502a 100644 Binary files a/icons/mob/clothing/helmet_overlays.dmi and b/icons/mob/clothing/helmet_overlays.dmi differ diff --git a/icons/mob/clothing/suits/spacesuits.dmi b/icons/mob/clothing/suits/spacesuits.dmi index bd5c90b61ea7..441c865122d9 100644 Binary files a/icons/mob/clothing/suits/spacesuits.dmi and b/icons/mob/clothing/suits/spacesuits.dmi differ diff --git a/icons/mob/clothing/underwear/species/kepori/underwear_torso_kepori.dmi b/icons/mob/clothing/underwear/species/kepori/underwear_torso_kepori.dmi index b614bd511c2c..8610afcd7862 100644 Binary files a/icons/mob/clothing/underwear/species/kepori/underwear_torso_kepori.dmi and b/icons/mob/clothing/underwear/species/kepori/underwear_torso_kepori.dmi differ diff --git a/icons/mob/clothing/underwear/species/vox/underwear_torso_vox.dmi b/icons/mob/clothing/underwear/species/vox/underwear_torso_vox.dmi index 7060c29d2e6f..0129306c2474 100644 Binary files a/icons/mob/clothing/underwear/species/vox/underwear_torso_vox.dmi and b/icons/mob/clothing/underwear/species/vox/underwear_torso_vox.dmi differ diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi index 47806c1deaf6..dced69dc5b6f 100644 Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ diff --git a/icons/mob/inhands/equipment/shields_lefthand.dmi b/icons/mob/inhands/equipment/shields_lefthand.dmi index aceeee6bcb4c..a68578cc47a6 100644 Binary files a/icons/mob/inhands/equipment/shields_lefthand.dmi and b/icons/mob/inhands/equipment/shields_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/shields_righthand.dmi b/icons/mob/inhands/equipment/shields_righthand.dmi index 8c106cb82549..8d2bd44e64a8 100644 Binary files a/icons/mob/inhands/equipment/shields_righthand.dmi and b/icons/mob/inhands/equipment/shields_righthand.dmi differ diff --git a/icons/mob/inhands/weapons/plasmacutter_left.dmi b/icons/mob/inhands/weapons/plasmacutter_left.dmi new file mode 100644 index 000000000000..78c25bd14aea Binary files /dev/null and b/icons/mob/inhands/weapons/plasmacutter_left.dmi differ diff --git a/icons/mob/inhands/weapons/plasmacutter_right.dmi b/icons/mob/inhands/weapons/plasmacutter_right.dmi new file mode 100644 index 000000000000..12725f36c006 Binary files /dev/null and b/icons/mob/inhands/weapons/plasmacutter_right.dmi differ diff --git a/icons/mob/species/misc/digitigrade.dmi b/icons/mob/species/misc/digitigrade.dmi index 7e19e7683297..b6780f1a2c35 100644 Binary files a/icons/mob/species/misc/digitigrade.dmi and b/icons/mob/species/misc/digitigrade.dmi differ diff --git a/icons/mob/species/misc/digitigrade_shoes.dmi b/icons/mob/species/misc/digitigrade_shoes.dmi index d1b823bd03f1..136ee704bf82 100644 Binary files a/icons/mob/species/misc/digitigrade_shoes.dmi and b/icons/mob/species/misc/digitigrade_shoes.dmi differ diff --git a/icons/mob/species/misc/digitigrade_suits.dmi b/icons/mob/species/misc/digitigrade_suits.dmi index bd739a712c67..7117a4d11ce3 100644 Binary files a/icons/mob/species/misc/digitigrade_suits.dmi and b/icons/mob/species/misc/digitigrade_suits.dmi differ diff --git a/icons/mob/species/vox/onmob_accessory_vox.dmi b/icons/mob/species/vox/onmob_accessory_vox.dmi index 16c4c54b8da2..75a74c0acbdc 100644 Binary files a/icons/mob/species/vox/onmob_accessory_vox.dmi and b/icons/mob/species/vox/onmob_accessory_vox.dmi differ diff --git a/icons/mob/species/vox/onmob_head_vox.dmi b/icons/mob/species/vox/onmob_head_vox.dmi index b40fdce943e0..1f357737fda4 100644 Binary files a/icons/mob/species/vox/onmob_head_vox.dmi and b/icons/mob/species/vox/onmob_head_vox.dmi differ diff --git a/icons/mob/species/vox/onmob_mask_vox.dmi b/icons/mob/species/vox/onmob_mask_vox.dmi index f5af03ed3df6..4f3c1cc384c8 100644 Binary files a/icons/mob/species/vox/onmob_mask_vox.dmi and b/icons/mob/species/vox/onmob_mask_vox.dmi differ diff --git a/icons/mob/species/vox/onmob_suit_vox.dmi b/icons/mob/species/vox/onmob_suit_vox.dmi index a7959775fc65..08e1b32372f9 100644 Binary files a/icons/mob/species/vox/onmob_suit_vox.dmi and b/icons/mob/species/vox/onmob_suit_vox.dmi differ diff --git a/icons/obj/clothing/belt_overlays.dmi b/icons/obj/clothing/belt_overlays.dmi index 1303b40c8d34..99887c0a7613 100644 Binary files a/icons/obj/clothing/belt_overlays.dmi and b/icons/obj/clothing/belt_overlays.dmi differ diff --git a/icons/obj/clothing/eyes/eyes.dmi b/icons/obj/clothing/eyes/eyes.dmi index 61f051bdb645..0dcdb32771b1 100644 Binary files a/icons/obj/clothing/eyes/eyes.dmi and b/icons/obj/clothing/eyes/eyes.dmi differ diff --git a/icons/obj/projectiles_impact.dmi b/icons/obj/projectiles_impact.dmi index 575a5e1c5699..f4006d0b02a1 100644 Binary files a/icons/obj/projectiles_impact.dmi and b/icons/obj/projectiles_impact.dmi differ diff --git a/icons/obj/projectiles_muzzle.dmi b/icons/obj/projectiles_muzzle.dmi index afce0784edf2..d6266fd876ed 100644 Binary files a/icons/obj/projectiles_muzzle.dmi and b/icons/obj/projectiles_muzzle.dmi differ diff --git a/icons/obj/projectiles_tracer.dmi b/icons/obj/projectiles_tracer.dmi index d7d0147747f8..3e9cd8da0d40 100644 Binary files a/icons/obj/projectiles_tracer.dmi and b/icons/obj/projectiles_tracer.dmi differ diff --git a/icons/obj/shields.dmi b/icons/obj/shields.dmi index b9c30b7c5cc1..64b89069781c 100644 Binary files a/icons/obj/shields.dmi and b/icons/obj/shields.dmi differ diff --git a/icons/obj/tank.dmi b/icons/obj/tank.dmi index d66824151cf2..000cc8dd096c 100644 Binary files a/icons/obj/tank.dmi and b/icons/obj/tank.dmi differ diff --git a/icons/obj/weapon/plasmacutter.dmi b/icons/obj/weapon/plasmacutter.dmi new file mode 100644 index 000000000000..c0480dc5052e Binary files /dev/null and b/icons/obj/weapon/plasmacutter.dmi differ diff --git a/icons/turf/overmap.dmi b/icons/turf/overmap.dmi index 12f2b302ece8..5cbabed9968b 100644 Binary files a/icons/turf/overmap.dmi and b/icons/turf/overmap.dmi differ diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm index e19a9d25ccf3..db5f4b43c8c4 100644 --- a/interface/stylesheet.dm +++ b/interface/stylesheet.dm @@ -135,7 +135,6 @@ h1.alert, h2.alert {color: #000000;} .extremelybig {font-size: 5;} .greentext {color: #00FF00; font-size: 3;} .redtext {color: #FF0000; font-size: 3;} -.clown {color: #FF69Bf; font-size: 3; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;} .singing {font-family: "Trebuchet MS", cursive, sans-serif; font-style: italic;} .hypnophrase {color: #3bb5d3; font-weight: bold; animation: hypnocolor 1500ms infinite; animation-direction: alternate;} @keyframes hypnocolor { diff --git a/mod_celadon/_storage_icons/icons/items/clothing/belt/belt_overlays.dmi b/mod_celadon/_storage_icons/icons/items/clothing/belt/belt_overlays.dmi new file mode 100644 index 000000000000..7e4ccef314ce Binary files /dev/null and b/mod_celadon/_storage_icons/icons/items/clothing/belt/belt_overlays.dmi differ diff --git a/mod_celadon/_storage_icons/icons/items/clothing/mask/hailer.dmi b/mod_celadon/_storage_icons/icons/items/clothing/mask/hailer.dmi index 13f1bf1a9ef1..49816390db65 100644 Binary files a/mod_celadon/_storage_icons/icons/items/clothing/mask/hailer.dmi and b/mod_celadon/_storage_icons/icons/items/clothing/mask/hailer.dmi differ diff --git a/mod_celadon/_storage_icons/icons/resprite/cutter/cutter.dmi b/mod_celadon/_storage_icons/icons/resprite/cutter/cutter.dmi deleted file mode 100644 index fc1439da5b7f..000000000000 Binary files a/mod_celadon/_storage_icons/icons/resprite/cutter/cutter.dmi and /dev/null differ diff --git a/mod_celadon/_storage_icons/icons/resprite/cutter/cutter_lefthand.dmi b/mod_celadon/_storage_icons/icons/resprite/cutter/cutter_lefthand.dmi deleted file mode 100644 index 9a8b60a02b5f..000000000000 Binary files a/mod_celadon/_storage_icons/icons/resprite/cutter/cutter_lefthand.dmi and /dev/null differ diff --git a/mod_celadon/_storage_icons/icons/resprite/cutter/cutter_righthand.dmi b/mod_celadon/_storage_icons/icons/resprite/cutter/cutter_righthand.dmi deleted file mode 100644 index cd5bc8a8eab1..000000000000 Binary files a/mod_celadon/_storage_icons/icons/resprite/cutter/cutter_righthand.dmi and /dev/null differ diff --git a/mod_celadon/_storage_icons/icons/species/vox/accessory_vox.dmi b/mod_celadon/_storage_icons/icons/species/vox/accessory_vox.dmi new file mode 100644 index 000000000000..c32e0a6fb1f0 Binary files /dev/null and b/mod_celadon/_storage_icons/icons/species/vox/accessory_vox.dmi differ diff --git a/mod_celadon/_storage_icons/icons/structures/turf/overmap.dmi b/mod_celadon/_storage_icons/icons/structures/turf/overmap.dmi new file mode 100644 index 000000000000..557ee52aac05 Binary files /dev/null and b/mod_celadon/_storage_icons/icons/structures/turf/overmap.dmi differ diff --git a/mod_celadon/areas/code/ruin.dm b/mod_celadon/areas/code/ruin.dm index 8ad9c5a2e6ea..e16743eb1d33 100644 --- a/mod_celadon/areas/code/ruin.dm +++ b/mod_celadon/areas/code/ruin.dm @@ -98,6 +98,18 @@ name = "Recreation area" icon_state = "yellow" +/area/ruin/wasteplanet/wasteplanet_radiation/main + name = "Abandoned Waste Site" + icon_state = "green" + +/area/ruin/wasteplanet/wasteplanet_radiation/maint + name = "Abandoned Maintenance Area" + icon_state = "engine" + +/area/ruin/wasteplanet/wasteplanet_radiation/containment + name = "Abandoned Waste Containment Vault" + icon_state = "disposal" + /// MARK: rockplanet /area/ruin/rockplanet/lasttemplar/dorm diff --git a/mod_celadon/balance/_balance.dm b/mod_celadon/balance/_balance.dm index 4794bef2c774..40bf27a10003 100644 --- a/mod_celadon/balance/_balance.dm +++ b/mod_celadon/balance/_balance.dm @@ -10,6 +10,7 @@ // Инициализация ВОВРЕМЯ /datum/modpack/balance/initialize() . = ..() + GLOB.oddity_loot -= list(/obj/item/circular_saw/best) // CELADON_BALANCE - Что это за инструмент шакальный не понятно // Инициализация ПОСЛЕ /datum/modpack/balance/post_initialize() diff --git a/mod_celadon/black_market/_black_market.dme b/mod_celadon/black_market/_black_market.dme index a9a0ee82a137..48c53af538e9 100644 --- a/mod_celadon/black_market/_black_market.dme +++ b/mod_celadon/black_market/_black_market.dme @@ -5,6 +5,7 @@ #include "code/ammo.dm" #include "code/misc.dm" +#include "code/tools.dm" #include "code/weapons.dm" #endif diff --git a/mod_celadon/black_market/code/tools.dm b/mod_celadon/black_market/code/tools.dm new file mode 100644 index 000000000000..b8b510ee6487 --- /dev/null +++ b/mod_celadon/black_market/code/tools.dm @@ -0,0 +1,9 @@ +/datum/blackmarket_item/tool/cutter + name = "Plasmacutter" + desc = "These technically aren't meant to be released to the public yet, but let's just say we managed to get our hands on an advance sample." + item = /obj/item/plasmacutter + + cost_min = 2750 + cost_max = 3750 + stock_max = 3 + availability_prob = 40 diff --git a/mod_celadon/economy/_economy.dme b/mod_celadon/economy/_economy.dme index 719d7f39dbd2..026fa504d87e 100644 --- a/mod_celadon/economy/_economy.dme +++ b/mod_celadon/economy/_economy.dme @@ -3,8 +3,6 @@ #include "_economy.dm" -#include "code/supply_pack.dm" - #include "code\blackmarket\clothing.dm" #include "code\blackmarket\misc.dm" diff --git a/mod_celadon/economy/code/exports/gear.dm b/mod_celadon/economy/code/exports/gear.dm index f8aabafef296..2fc0fc4ff9f4 100644 --- a/mod_celadon/economy/code/exports/gear.dm +++ b/mod_celadon/economy/code/exports/gear.dm @@ -20,8 +20,8 @@ /datum/export/gear/riot_shield cost = 100 - unit_name = "riot shield" - export_types = list(/obj/item/shield/riot) + unit_name = /obj/item/shield/heavy::name + export_types = list(/obj/item/shield/heavy) /datum/export/gear/radhelmet cost = 50 diff --git a/mod_celadon/economy/code/supply_pack.dm b/mod_celadon/economy/code/supply_pack.dm deleted file mode 100644 index 312f0917ee4e..000000000000 --- a/mod_celadon/economy/code/supply_pack.dm +++ /dev/null @@ -1,35 +0,0 @@ -// Типы цен: -// 1. Обычные товары: от 0% до +20% (множитель 1.0 - 1.2) -// 2. Фракционные товары: от -20% до 0% (множитель 0.8 - 1.0) -// После умножения цена округляется вниз на указанное число в формуле `round` - -#define PRICES_FACTION_MIN 0.8 -#define PRICES_FACTION_MAX 1 - -// ОБЩАЯ ЦЕНА НА ТОВАРЫ SUPPLY PACK -#define PRICES_GENERAL_MIN 1 -#define PRICES_GENERAL_MAX 1.2 - -// Стабильные цены задаются параметром stable -// Патроны, патроны должны быть дешевые изначально лмао -// Атачменты тоже странно когда мелкие цены меняются -/datum/supply_pack/faction/New() - ..() - if(stable_price) - return cost = cost - setup_pricing() - -/datum/supply_pack/faction/proc/setup_pricing() - cost = rand(cost * PRICES_FACTION_MIN, - cost * PRICES_FACTION_MAX) - cost = round(cost, 25) - -/datum/supply_pack/faction/independent/setup_pricing() - cost = rand(cost * PRICES_GENERAL_MIN, - cost * PRICES_GENERAL_MAX) - cost = round(cost, 25) - -#undef PRICES_FACTION_MIN -#undef PRICES_FACTION_MAX -#undef PRICES_GENERAL_MIN -#undef PRICES_GENERAL_MAX diff --git a/mod_celadon/elysiumpod/code/elysiumpod.dm b/mod_celadon/elysiumpod/code/elysiumpod.dm index a285d7f38cdb..57a8585fe975 100644 --- a/mod_celadon/elysiumpod/code/elysiumpod.dm +++ b/mod_celadon/elysiumpod/code/elysiumpod.dm @@ -5,8 +5,5 @@ delays = list(POD_TRANSIT = 20, POD_FALLING = 4, POD_OPENING = 30, POD_LEAVING = 30) resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF -/obj/machinery/computer/cargo - podType = /obj/structure/closet/supplypod/elysiumpod - /obj/structure/closet/supplypod icon = 'mod_celadon/_storage_icons/icons/structures/supplypods.dmi' diff --git a/mod_celadon/emotes/code/emote.dm b/mod_celadon/emotes/code/emote.dm index 77ceda6d1cfd..b4a27dccf640 100644 --- a/mod_celadon/emotes/code/emote.dm +++ b/mod_celadon/emotes/code/emote.dm @@ -1,6 +1,5 @@ /datum/emote cooldown = 1.5 SECONDS - muzzled_noises = list("сильный", "слабый") // audio_cooldown = 3 SECONDS ////////////////////// diff --git a/mod_celadon/fixes/_fixes.dm b/mod_celadon/fixes/_fixes.dm index ba336e6253dd..5c71a809155b 100644 --- a/mod_celadon/fixes/_fixes.dm +++ b/mod_celadon/fixes/_fixes.dm @@ -35,6 +35,32 @@ // Инициализация ВОВРЕМЯ /datum/modpack/fixes/initialize() . = ..() + GLOB.channel_tokens[MODE_BINARY] = RADIO_TOKEN_WIDEBAND + GLOB.rod_recipes += new /datum/stack_recipe("guardrail barricade", /obj/structure/deployable_barricade/guardrail, 15, time = 4 SECONDS, one_per_turf = TRUE, on_floor = TRUE) // [CELADON-ADD] - CELADON_STRUCTURES - Барикады + GLOB.leather_recipes += new /datum/stack_recipe("leather overcoat", /obj/item/clothing/suit/jacket/leather/overcoat, 10) // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + GLOB.wood_recipes += new /datum/stack_recipe("Wooden Half-Barricade", /obj/structure/deployable_barricade/wooden, 10, time = 5 SECONDS, one_per_turf = TRUE, on_floor = TRUE) // [CELADON-ADD] - CELADON_STRUCTURES - Барикады + var/list/cloth_recipes = list( // [CELADON-ADD] - CELADON_QOL - добавляем рецепты обмоток лап + new /datum/stack_recipe("footwraps white", /obj/item/clothing/shoes/footwraps, 2), + new /datum/stack_recipe("footwraps black", /obj/item/clothing/shoes/footwraps/black, 2), + new /datum/stack_recipe("footwraps brown", /obj/item/clothing/shoes/footwraps/brown, 2), + ) + GLOB.cloth_recipes += cloth_recipes + var/list/bronze_recipes = list( // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + new /datum/stack_recipe("bronze suit", /obj/item/clothing/suit/bronze), + new /datum/stack_recipe("bronze boots", /obj/item/clothing/shoes/bronze), + ) + GLOB.bronze_recipes += bronze_recipes + GLOB.metal_recipes += new /datum/stack_recipe("metal barricade", /obj/structure/deployable_barricade/metal, 20, time = 4 SECONDS, one_per_turf = TRUE, on_floor = TRUE) // [CELADON-ADD] - CELADON_STRUCTURES - Барикады + GLOB.department_radio_keys["ö"] = RADIO_CHANNEL_WIDEBAND + var/list/events = list( + // [CELADON-ADD] - CELADON_OVERMAP - Включаем на овермапе ионные шторма + /datum/overmap/event/emp/minor = 25, + /datum/overmap/event/emp = 20, + /datum/overmap/event/emp/major = 25, + // [/CELADON-ADD] + ) + for(var/key in events) + GLOB.overmap_event_pick_list[key] = events[key] // Инициализация ПОСЛЕ /datum/modpack/fixes/post_initialize() diff --git a/mod_celadon/fixes/_fixes.dme b/mod_celadon/fixes/_fixes.dme index 629c8cc8a5fc..6a0a30c45e8c 100644 --- a/mod_celadon/fixes/_fixes.dme +++ b/mod_celadon/fixes/_fixes.dme @@ -44,6 +44,7 @@ #include "code/sledgehammer.dm" #include "code/hooded.dm" #include "code/suit.dm" +#include "code/unsorted_fixes.dm" #include "code/antagonists/space_ninja.dm" diff --git a/mod_celadon/fixes/code/antagonists/space_ninja.dm b/mod_celadon/fixes/code/antagonists/space_ninja.dm index 94ea79c402bc..878c712d0efe 100644 --- a/mod_celadon/fixes/code/antagonists/space_ninja.dm +++ b/mod_celadon/fixes/code/antagonists/space_ninja.dm @@ -20,7 +20,7 @@ * * ninja - The person wearing the suit. * * Returns false if the locking fails due to lack of all suit parts, and true if it succeeds. */ -/obj/item/clothing/suit/space/space_ninja/proc/lock_suit(mob/living/carbon/human/ninja) +/obj/item/clothing/suit/space/space_ninja/lock_suit(mob/living/carbon/human/ninja) if(!istype(ninja)) return FALSE if(!is_ninja(ninja)) @@ -94,14 +94,14 @@ * * Can be called to entire rid of the suit pieces and the suit itself. */ -/obj/item/clothing/suit/space/space_ninja/proc/terminate() +/obj/item/clothing/suit/space/space_ninja/terminate() qdel(n_hood) qdel(n_gloves) qdel(n_shoes) qdel(src) //Randomizes suit parameters. -/obj/item/clothing/suit/space/space_ninja/proc/randomize_param() +/obj/item/clothing/suit/space/space_ninja/randomize_param() s_cost = rand(1,10) s_acost = rand(10,50) s_delay = rand(10,100) diff --git a/mod_celadon/fixes/code/unsorted_fixes.dm b/mod_celadon/fixes/code/unsorted_fixes.dm new file mode 100644 index 000000000000..b46ab50ddc9b --- /dev/null +++ b/mod_celadon/fixes/code/unsorted_fixes.dm @@ -0,0 +1,4267 @@ +// [CELADON-ADD] - RETURN_CONTENT - CLOWN_RETURN_CONTENT +GLOBAL_LIST_INIT(clown_names, world.file2list("mod_celadon/return_content_clowns/code/strings/clown.txt")) +GLOBAL_LIST_INIT(mime_names, world.file2list("mod_celadon/return_content_clowns/code/strings/mime.txt")) +// [/CELADON-ADD] + +// [CELADON-ADD] - List of pods +GLOBAL_LIST_EMPTY(poi_list) +// [/CELADON-ADD] - List of pods + +/random_features() + var/list/features = ..() + if(!GLOB.ipc_hair_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_hair, GLOB.ipc_hair_list) + if(!GLOB.tajara_chest_markings_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tajara_chest_markings, GLOB.tajara_chest_markings_list) + if(!GLOB.tajara_body_markings_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tajara_body_markings, GLOB.tajara_body_markings_list) + if(!GLOB.tajara_facial_hairs_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tajara_facial_hairs, GLOB.tajara_facial_hairs_list) + if(!GLOB.tajara_nose_markings_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tajara_nose_markings, GLOB.tajara_nose_markings_list) + if(!GLOB.tajara_ears_markings_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tajara_ears_markings, GLOB.tajara_ears_markings_list) + if(!GLOB.tajara_head_markings_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tajara_head_markings, GLOB.tajara_head_markings_list) + if(!GLOB.tajara_tail_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/tajara, GLOB.tajara_tail_list) + if(!GLOB.tajara_animated_tail_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/tajara, GLOB.tajara_animated_tail_list) + if(!GLOB.tajara_hairs_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tajara_hairs, GLOB.tajara_hairs_list) + if(!GLOB.tajara_ears_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tajara_ears, GLOB.tajara_ears_list) + if(!GLOB.riol_chest_markings_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_chest_markings, GLOB.riol_chest_markings_list) + if(!GLOB.riol_body_markings_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_body_markings, GLOB.riol_body_markings_list) + if(!GLOB.riol_facial_hairs_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_facial_hairs, GLOB.riol_facial_hairs_list) + if(!GLOB.riol_nose_markings_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_nose_markings, GLOB.riol_nose_markings_list) + if(!GLOB.riol_ears_markings_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_ears_markings, GLOB.riol_ears_markings_list) + if(!GLOB.riol_head_markings_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_head_markings, GLOB.riol_head_markings_list) + if(!GLOB.riol_tail_markings_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_tail_markings, GLOB.riol_tail_markings_list) + if(!GLOB.riol_legs_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_legs, GLOB.riol_legs_list) + if(!GLOB.riol_tail_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tails/riol, GLOB.riol_tail_list) + if(!GLOB.riol_animated_tail_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/riol, GLOB.riol_animated_tail_list) + if(!GLOB.riol_hairs_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_hairs, GLOB.riol_hairs_list) + if(!GLOB.riol_ears_list.len) + init_sprite_accessory_subtypes(/datum/sprite_accessory/riol_ears, GLOB.riol_ears_list) + + var/list/other_features = list( + "ipc_hair" = pick(GLOB.ipc_hair_list), + "mcolor" = pick("FFFFFF","7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), + "mcolor2" = pick("FFFFFF","7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), + "tajara_ears_markings_color" = pick("FFFFFF","7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), + "tajara_head_markings_color" = pick("FFFFFF","7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), + "tajara_nose_markings_color" = pick("FFFFFF","7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), + "tajara_chest_markings_color" = pick("FFFFFF","7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), + "tajara_body_markings_color" = pick("FFFFFF","7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), + "riol_ears_markings_color" = pick("FFFFFF", "7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), + "riol_head_markings_color" = pick("FFFFFF", "7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), + "riol_nose_markings_color" = pick("FFFFFF", "7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), + "riol_chest_markings_color" = pick("FFFFFF", "7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), + "riol_body_markings_color" = pick("FFFFFF", "7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), + "riol_tail_markings_color" = pick("FFFFFF", "7F7F7F", "7BBB7B", "7B7BBB", "BB7B7B", "7BBBBB", "BB7BBB", "BBBB7B"), + "tajara_ears" = pick(GLOB.tajara_ears_list), + "tajara_hairs" = pick(GLOB.tajara_hairs_list), + "tajara_ears_markings" = pick(GLOB.tajara_ears_markings_list), + "tajara_head_markings" = pick(GLOB.tajara_head_markings_list), + "tajara_facial_hairs" = pick(GLOB.tajara_facial_hairs_list), + "tajara_nose_markings" = pick(GLOB.tajara_nose_markings_list), + "tajara_chest_markings" = pick(GLOB.tajara_chest_markings_list), + "tajara_body_markings" = pick(GLOB.tajara_body_markings_list), + "tajara_tail" = pick(GLOB.tajara_tail_list), + "riol_ears" = pick(GLOB.riol_ears_list), + "riol_hairs" = pick(GLOB.riol_hairs_list), + "riol_ears_markings" = pick(GLOB.riol_ears_markings_list), + "riol_head_markings" = pick(GLOB.riol_head_markings_list), + "riol_facial_hairs" = pick(GLOB.riol_facial_hairs_list), + "riol_nose_markings" = pick(GLOB.riol_nose_markings_list), + "riol_chest_markings" = pick(GLOB.riol_chest_markings_list), + "riol_body_markings" = pick(GLOB.riol_body_markings_list), + "riol_tail_markings" = pick(GLOB.riol_tail_markings_list), + "riol_tail" = pick(GLOB.riol_tail_list), + "riol_legs" = pick(GLOB.riol_legs_list), + ) + + for(var/key in other_features) + features[key] = other_features[key] + return features + +/atom/movable/screen/parallax_layer/layer_1/Initialize(mapload) + . = ..() + icon_state = "layer1_[rand(0, 16)]" + +/atom/movable/screen/parallax_layer/layer_2/Initialize(mapload) + . = ..() + icon_state = "layer2_[rand(1, 5)]" + +/atom/movable/screen/parallax_layer/layer_3/Initialize(mapload) + . = ..() + icon_state = "layer3_[rand(1, 2)]" + +/datum/config_entry/flag/auto_ship_spawn_locking + config_entry_value = FALSE + +/area/play_ambience(mob/M, sound/override_sound, volume = 27) + if(iscarbon(M)) + var/mob/living/carbon/carbon_mob = M + if(!carbon_mob.getorganslot(ORGAN_SLOT_EARS)) + // No ears, no ambience + var/sound_file = override_sound ? override_sound.file : pick(ambientsounds) + var/sound_length = ceil(SSsound_cache.get_sound_length(sound_file)) + return rand(min_ambience_cooldown + sound_length, max_ambience_cooldown + sound_length) + return ..() + +/datum/controller/subsystem/economy + var/budget_pool = 35000 + var/list/department_accounts = list( + ACCOUNT_FAC = ACCOUNT_FAC_NAME, + ACCOUNT_SYN = ACCOUNT_SYN_NAME, + ACCOUNT_INT = ACCOUNT_INT_NAME, + ACCOUNT_SLF = ACCOUNT_SLF_NAME, + ACCOUNT_NTN = ACCOUNT_NTN_NAME, + ACCOUNT_IND = ACCOUNT_IND_NAME, + ACCOUNT_IND_1 = ACCOUNT_IND_1_NAME, + ACCOUNT_IND_2 = ACCOUNT_IND_2_NAME, + ACCOUNT_IND_3 = ACCOUNT_IND_3_NAME, + ACCOUNT_IND_4 = ACCOUNT_IND_4_NAME, + ) + var/list/departmental_accounts = list() + +/datum/bank_account/department + account_holder = "Guild Credit Agency" + var/department_id = "REPLACE_ME" + +/datum/bank_account/department/New(dep_id, budget, player_account = FALSE) + department_id = dep_id + account_balance = budget + account_holder = SSeconomy.department_accounts[dep_id] + SSeconomy.departmental_accounts += src + +/datum/controller/subsystem/economy/proc/get_dep_account(dep_id) + for(var/datum/bank_account/department/D in departmental_accounts) + if(D.department_id == dep_id) + return D + +/datum/controller/subsystem/economy/Initialize() + for(var/dep_id in department_accounts) + new /datum/bank_account/department(dep_id, 0, player_account = FALSE) + return 2 + +/datum/controller/subsystem/mobs + wait = 1.5 SECONDS // [CELADON-EDIT] - CELADON_BALANCE_MOBS + +/datum/controller/subsystem/processing/radiation + flags = SS_BACKGROUND // [CELADON-EDIT] - CELADON_FIXES_RADIATION + +/datum/action/item_action/toggle_ammotype + icon_icon = 'mod_celadon/_storage_icons/icons/actions/actions_items.dmi' // [CELADON-EDIT] - возвращает иконки лазеров в переключатель + +/datum + /// [CELADONE-ADD] + /// russian case forms of atom name in format + /// list(NOMINATIVE_CASE, GENITIVE_CASE, DATIVE_CASE, ACCUSATIVE_CASE, ABLATIVE_CASE, PREPOSITIONAL_CASE) + /// for usage with CASE macros (code/__DEFINES/~mod_celadon/_translation.dm) + var/list/cases + +/datum/emote + var/message_mime = "" //Message displayed if the user is a mime // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNSS + // [CELADON-ADD] - CELADON_EMOTES + /// Message with %t at the end to allow adding params to the message, like for mobs doing an emote relatively to something else. + /// Set this to EMOTE_PARAM_USE_POSTFIX to just use the postfix. + /// Message postfix with %t used when we don't want to use message_param for our targeting. Used for things like message_monkey or message_mime. + /// Punctuation from the message will be stripped when this is applied, so make sure it's punctuated as well. + var/message_postfix = "" + /// Sounds emitted when the user is muzzled. Generally used like "[user] makes a pick(muzzled_noises) noise!" + var/muzzled_noises = list("сильный", "слабый") + /// If true, an emote will completely bypass any cooldown when called unintentionally. Necessary for things like deathgasp. + var/bypass_unintentional_cooldown = FALSE + /// Whether or not to adjust the frequency of the emote sound based on age. + var/age_based = FALSE + /// How loud is the audio emote? + var/volume = 50 + // [/CELADON-ADD] + +/datum/mind + var/miming = FALSE // Mime's vow of silence // [CELADON-EDIT] - RETURN_CONTENT - CLOWN_RETURN_CONTENT + +/datum/map_template/shuttle + token_icon_state = "ship" // [CELADON-EDIT] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца + +// [CELADON-ADD] - RETURN_CONTENT - CLOWN_RETURN_CONTENT +/datum/award/achievement/misc/round_and_full + name = "Round and Full" + desc = "Well at least you aren't down the river, I hear they eat people there." + database_id = MEDAL_CLOWNCARKING + icon = "clownking" + +/datum/award/achievement/misc/the_best_driver + name = "The Best Driver" + desc = "100 honks later" + database_id = MEDAL_THANKSALOT + icon = "clownthanks" +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_STRUCTURES - Барикады +/// Assosciative list of type -> armor. Used to ensure we always hold a reference to default armor datums +GLOBAL_LIST_INIT(armor_by_type, generate_armor_type_cache()) + +/proc/generate_armor_type_cache() + var/list/armor_cache = list() + for(var/datum/armor/armor_type as anything in subtypesof(/datum/armor)) + armor_type = new armor_type + armor_cache[armor_type.type] = armor_type + armor_type.GenerateTag() + return armor_cache + +/datum/armor/proc/GenerateTag() + // ..() + tag = replacetext("[type]", "/", "-") +// [/CELADON-ADD] + +/datum/armor/getRating(rating) + if(!(rating in ARMOR_LIST_ALL())) + CRASH("Attempted to get a rating '[rating]' that doesnt exist") + return ..() + +// [CELADON-ADD] - CELADON_STRUCTURES - Барикады +/// Generate a brand new armor datum with the modifiers given, if ARMOR_ALL is specified only that modifier is used +/datum/armor/proc/generate_new_with_modifiers(list/modifiers) + var/datum/armor/new_armor = new + + var/all_keys = ARMOR_LIST_ALL() + if(ARMOR_ALL in modifiers) + var/modifier_all = modifiers[ARMOR_ALL] + if(!modifier_all) + return src + for(var/mod in all_keys) + new_armor.vars[mod] = vars[mod] + modifier_all + return new_armor + + for(var/modifier in modifiers) + if(modifier in all_keys) + new_armor.vars[modifier] = vars[modifier] + modifiers[modifier] + else + stack_trace("Attempt to call generate_new_with_modifiers with illegal modifier '[modifier]'! Ignoring it") + return new_armor + +/// Generate a brand new armor datum with the values given, if a value is not present it carries over +/datum/armor/proc/generate_new_with_specific(list/values) + var/datum/armor/new_armor = new + + var/all_keys = ARMOR_LIST_ALL() + if(ARMOR_ALL in values) + var/value_all = values[ARMOR_ALL] + if(!value_all) + return src + for(var/mod in all_keys) + new_armor.vars[mod] = value_all + return new_armor + + for(var/armor_rating in all_keys) + if(armor_rating in values) + new_armor.vars[armor_rating] = values[armor_rating] + else + new_armor.vars[armor_rating] = vars[armor_rating] + return new_armor +// [/CELADON-ADD] + +/datum/brain_trauma/mild/phobia/clowns + phobia_type = "clowns" + random_gain = FALSE + +/datum/component/wet_floor/process(seconds_per_tick) + //[CELADON-ADD] - CELADON_FIXES - вобщем эта залупа рантаймит потому-что почему-то компонент нахуй попадает на /turf/closed который НЕ ДОЛЖЕН ТАМ БЫТЬ + if(!isopenturf(parent)) + STOP_PROCESSING(SSwet_floors, src) + var/turf/T = parent + T.cut_overlay(current_overlay) + qdel(T.GetComponent(/datum/component/slippery)) + //[/CELADON-ADD] + return ..() + +// [CELADON-ADD] - TRIBAL-CRAFT +/datum/crafting_recipe/drakecloak + name = "Ash Drake Armour" + result = /obj/item/clothing/suit/hooded/cloak/drake + time = 60 + reqs = list(/obj/item/stack/sheet/bone = 10, + /obj/item/stack/sheet/sinew = 2, + /obj/item/stack/sheet/animalhide/ashdrake = 5) + category = CAT_CLOTHING + +/datum/crafting_recipe/polarbearcloak + name = "Polar Cloak" + result = /obj/item/clothing/suit/hooded/cloak/goliath/polar + time = 50 + reqs = list(/obj/item/stack/sheet/leather = 2, + /obj/item/stack/sheet/sinew = 2, + /obj/item/stack/sheet/animalhide/goliath_hide/polar_bear_hide = 2) + blacklist = list(/obj/item/stack/sheet/animalhide/goliath_hide) + category = CAT_CLOTHING +// [/CELADON-ADD] + +// [CELADON-ADD] - TRIBAL-CRAFT +/datum/crafting_recipe/headpike + name = "Spike Head (Glass Spear)" + time = 65 + reqs = list(/obj/item/melee/spear = 1, + /obj/item/bodypart/head = 1) + parts = list(/obj/item/bodypart/head = 1, + /obj/item/melee/spear = 1) + blacklist = list(/obj/item/melee/spear/explosive, /obj/item/melee/spear/bone) + result = /obj/structure/headpike + category = CAT_MISC + +/datum/crafting_recipe/headpikebone + name = "Spike Head (Bone Spear)" + time = 65 + reqs = list(/obj/item/melee/spear/bone = 1, + /obj/item/bodypart/head = 1) + parts = list(/obj/item/bodypart/head = 1, + /obj/item/melee/spear/bone = 1) + result = /obj/structure/headpike/bone + category = CAT_MISC +// [/CELADON-ADD] + +/datum/crafting_recipe/bonespear + always_availible = TRUE // [CELADON-REMOVE] - TRIBAL-CRAFT + +/datum/crafting_recipe/boneaxe + always_availible = TRUE // [CELADON-REMOVE] - TRIBAL-CRAFT + +// [CELADON-ADD] - TRIBAL-CRAFT +/datum/crafting_recipe/bonesword + name = "Bone Sword" + result = /obj/item/melee/sword/bone + time = 40 + reqs = list(/obj/item/stack/sheet/bone = 3, + /obj/item/stack/sheet/sinew = 2) + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/watcherbola + name = "Watcher Bola" + result = /obj/item/restraints/legcuffs/bola/watcher + time = 30 + reqs = list(/obj/item/stack/sheet/animalhide/goliath_hide = 2, + /obj/item/restraints/handcuffs/cable/sinew = 1) + category = CAT_WEAPONRY + subcategory = CAT_WEAPON + +/datum/crafting_recipe/crystalamulet + name = "Crystal Amulet" + always_availible = FALSE + result = /obj/item/clothing/neck/crystal_amulet + time = 4 SECONDS + reqs = list(/obj/item/strange_crystal = 3) + category = CAT_WEAPONRY + subcategory = CAT_WEAPON +// [/CELADON-ADD] + +/datum/component/storage/concrete/pockets/holster/Initialize() + . = ..() + can_hold |= typecacheof(/obj/item/gun/energy/e_gun/e_old) + +/datum/component/storage/concrete/pockets/holster/nukie/Initialize() + . = ..() + can_hold |= typecacheof(/obj/item/gun/energy/e_gun/e_old/mini) + +// [CELADON-ADD] - CELADON_GRAVGEN +/datum/looping_sound/gravity_generator + mid_sounds = list('mod_celadon/_storage_sounds/sound/effects/beam.ogg') + mid_length = 40 + volume = 10 + falloff_distance = 3 +// [/CELADON-ADD] + +/obj/item/mine/pressure/explosive/rusty/live/snow + icon = 'mod_celadon/_storage_icons/icons/items/misc/landmine.dmi' + +/proc/spawn_meteors_alt(number = 10, list/meteortypes, vlevel, port, dirc) + for(var/i in 1 to number) + spawn_meteor(meteortypes, vlevel, 0, port, dirc) + +/obj/item/autolathe_crafted(obj/machinery/autolathe/lathe) + // [CELADON_EDIT] — PRINTED_ITEMS_SELLING_VITO + autolathe_printed = TRUE + var/list/allcontents = GetAllContents() + for(var/obj/item/I in allcontents) + I.autolathe_printed = TRUE + // [/CELADON_EDIT] + +/obj/machinery/turretid + icon = 'mod_celadon/_storage_icons/icons/machinery/turret_control.dmi' + +/obj/item/wallframe/turret_control + icon = 'mod_celadon/_storage_icons/icons/machinery/turret_control.dmi' + +/obj/machinery/porta_turret/ship/ramzi + faction = list(FACTION_RAMZI_RENEGADE, FACTION_TURRET) // [CELADON-ADD] - RAMZI-RENEGATE + +/obj/machinery/power/ship_gravity + light_power = 0 + light_range = 2 + light_color = COLOR_GRAY + luminosity = 1 + var/datum/looping_sound/gravity_generator/soundloop // [CELADON-ADD] - CELADON_GRAVGEN + +/obj/machinery/power/ship_gravity/Initialize() + . = ..() + soundloop = new(list(src), FALSE) + +/obj/machinery/power/ship_gravity/Destroy() + . = ..() + QDEL_NULL(soundloop) + +/obj/machinery/power/ship_gravity/emp_act(severity) + . = ..() + if(prob(50)) + set_state(!active) + +/obj/machinery/power/shuttle/engine/electric + thrust = 4 // [CELADON-EDIT] - CELADON_BALANCE - Трогаем движки + +/obj/machinery/atmospherics/components/unary/shuttle + icon = 'mod_celadon/_storage_icons/icons/structures/shuttle.dmi' // [CELADON-EDIT] - CELADON_BALANCE + +/obj/machinery/power/compressor/examine(mob/user) + . = ..() + if(in_range(user, src) || isobserver(user)) + // [CELADON-ADD] - CELADON_INTEQ_VENDOR - добавляем поддержку к мультитулу + . += span_notice("The compressor ID is '[comp_id]'.") + . += span_notice("It looks like you can modify the id settings by using a multitool on it.") + // [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_INTEQ_VENDOR - добавляем поддержку мультитула +//MARK: Multitool actions + +/obj/machinery/power/compressor/multitool_act(mob/living/user, obj/item/I) + . = ..() + var/obj/item/multitool/M = I + var/list/choice_list = list("Modify the compressor ID", "Save the Compressor connection to the multitool buffer") + var/choice = tgui_input_list(user, "Select an option", "Advanced Configuration", choice_list) + + switch(choice) + if("Modify the compressor ID") + comp_id = stripped_input(user, "Set a compressor ID for this compressor. Ensure that it is no bigger than 32 characters long.", "Componcompressorent ID Setup", max_length = 32) + to_chat(user, span_notice("You set [src] compressor ID to '[comp_id]'.")) + + if("Save the Compressor connection to the multitool buffer") + M.buffer = src + to_chat(user, span_notice("You add [src] connection to the multitool's buffer.")) + + return TRUE +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_INTEQ_VENDOR - добавляем поддержку мультитула +//MARK: Multitool actions +/obj/machinery/computer/turbine_computer/examine(mob/user) + . = ..() + if(in_range(user, src) || isobserver(user)) + . += span_notice("The computer's compressor ID is '[id]'.") + . += span_notice("It looks like you can modify the id settings by using a multitool on it.") + +/obj/machinery/computer/turbine_computer/multitool_act(mob/living/user, obj/item/I) + . = ..() + var/obj/item/multitool/M = I + var/list/choice_list = list("Modify the compressor ID of a computer", "Load the Compressor connection to the console") + var/choice = tgui_input_list(user, "Select an option", "Advanced Configuration", choice_list) + + switch(choice) + if("Modify the compressor ID of a computer") + id = stripped_input(user, "Set a ID for this computer. Ensure that it is no bigger than 32 characters long.", "Computer ID Setup", max_length = 32) + to_chat(user, span_notice("You set [src] ID to '[id]'.")) + + if("Load the Compressor connection to the console") + if(istype(M.buffer,/obj/machinery/power/compressor)) + compressor = M.buffer + id = compressor.comp_id + to_chat(user, span_notice("You connect [compressor] to [src].")) + else + to_chat(user, span_notice("The ID from he [M] is not from the compressor.")) + return TRUE +// [/CELADON-ADD] + +/obj/item/clothing/suit/space/hardsuit/ert/lp/sec + // [CELADON-EDIT] - CELADON_BALANCE + armor = list("melee" = 40, "bullet" = 40, "laser" = 20, "energy" = 20, "bomb" = 20, "bio" = 100, "rad" = 50, "fire" = 40, "acid" = 40, "wound" = 30) + +/obj/item/clothing/head/helmet/space/hardsuit/ert/lp/sec + armor = list("melee" = 40, "bullet" = 40, "laser" = 20,"energy" = 20, "bomb" = 20, "bio" = 100, "rad" = 50, "fire" = 40, "acid" = 40, "wound" = 30) // [CELADON-EDIT] - CELADON_BALANCE + +/obj/item/clothing/suit/space/hardsuit/ert/lp/engi + armor = list("melee" = 30, "bullet" = 20, "laser" = 30, "energy" = 30, "bomb" = 25, "bio" = 100, "rad" = 75, "fire" = 90, "acid" = 75, "wound" = 20) // [CELADON-EDIT] - CELADON_BALANCE + +/obj/item/clothing/head/helmet/space/hardsuit/ert/lp/engi + armor = list("melee" = 38, "bullet" = 20, "laser" = 30, "energy" = 30, "bomb" = 25, "bio" = 100, "rad" = 75, "fire" = 90, "acid" = 75, "wound" = 20) // [CELADON-EDIT] - CELADON_BALANCE + +/obj/item/clothing/suit/space/hardsuit/ert/lp/med + armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 25, "bomb" = 25, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 60, "wound" = 20) // [CELADON-EDIT] - CELADON_BALANCE + +/obj/item/clothing/head/helmet/space/hardsuit/ert/lp/med + armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 25, "bomb" = 25, "bio" = 100, "rad" = 60, "fire" = 60, "acid" = 60, "wound" = 20) // [CELADON-EDIT] - CELADON_BALANCE + +/obj/item/clothing/head/helmet/space/hardsuit/lp + armor = list("melee" = 5, "bullet" = 5, "laser" = 1, "energy" = 1, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 75, "wound" = 10) // [CELADON-EDIT] - CELADON_BALANCE + +/obj/item/clothing/suit/space/hardsuit/ancient/lp + armor = list("melee" = 5, "bullet" = 5, "laser" = 1, "energy" = 1, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 75, "wound" = 10) // [CELADON-EDIT] - CELADON_BALANCE + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNSS +/obj/item/circuitboard/mecha/honker/peripherals + name = "H.O.N.K Peripherals Control module (Exosuit Board)" + icon_state = "mcontroller" + +/obj/item/circuitboard/mecha/honker/targeting + name = "H.O.N.K Weapon Control and Targeting module (Exosuit Board)" + icon_state = "mcontroller" + +/obj/item/circuitboard/mecha/honker/main + name = "H.O.N.K Central Control module (Exosuit Board)" + icon_state = "mainboard" +// [/CELADON-ADD] + +/obj/mecha/handle_unique_action(mob/user) + mech_unique_action?.Activate() // [CELADON-EDIT] - FIX_MECH + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/breaching + // [CELADON-ADD] - CELADON_FIXES - MECH_WEAPON -Добавлена переменная projectiles для корректной работы перезарядки + projectiles = 6 + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang + // [CELADON-ADD] - CELADON_FIXES - MECH_WEAPON -Добавлена переменная projectiles для корректной работы перезарядки + projectiles = 6 + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/clusterbang + // [CELADON-ADD] - CELADON_FIXES - MECH_WEAPON -Добавлена переменная projectiles для корректной работы перезарядки + projectiles = 3 + +/obj/item + // [CELADON-ADD] - CELADON_RESPRITE + // Добавляет переменную, которая добавляет вариацию предметов для морды сарати + var/snout_override_icon + // [CELADON-ADD] + // [CELADON_EDIT] — PRINTED_ITEMS_SELLING_VITO + ///Is item printed on any lathe. Sets TRUE in autolathe_crafted() + var/autolathe_printed = FALSE + // [/CELADON_EDIT] + +/obj/effect/spawner/random/randomthreat/Initialize(mapload) + // [CELADON-ADD] - FIXES_SPAWNERS_ON_SPACE - Проверка на космотурф + if(isspaceturf(get_turf(src))) + return INITIALIZE_HINT_QDEL + // [/CELADON-ADD] + return ..() + +/obj/effect/spawner/random/food_or_drink/seed/Initialize(mapload) + loot |= list( + /obj/item/seeds/tea/mint, // [CELADON-ADD] - DRINKS_AND_FOOD + ) + return ..() + +/obj/item/cardboard_cutout/Initialize() // CELADON_RETURN_CONTENT_CLOWNS + . = ..() + var/list/appearances = list( + "Clown" = image(icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheets.dmi', icon_state = "cutout_clown"), + "Mime" = image(icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheets.dmi', icon_state = "cutout_mime"), + ) + for(var/key in appearances) + possible_appearances[key] = appearances[key] + sortList(possible_appearances) + +/obj/item/card/id/syndicate/update_label() + name = "[forged ? "access card" : initial(name)][(!assignment) ? "" : " ([assignment])"]" + +//[CELADON-EDIT] - FIXES_AGENT_CARD +/obj/item/card/id/syndicate/afterattack(obj/item/O, mob/living/carbon/user, proximity) // mob/user -> mob/living/carbon/user + if(!proximity) + return + if(istype(O, /obj/item/card/id)) + if(isliving(user) && user.mind) + if(!fingerprint || fingerprint == user.dna.uni_identity || anyone) //if(user.mind.special_role || anyone) + var/obj/item/card/id/I = O + src.access |= I.access + for(var/datum/overmap/ship/controlled/ship in I.ship_access) + if(!has_ship_access(ship)) + add_ship_access(ship) + to_chat(usr, span_notice("The card's microscanners activate as you pass it over the ID, copying its access.")) +// [/CELADON-EDIT] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/card/id/ert/clown + icon_state = "ert_clown" + +/obj/item/card/id/ert/clown/Initialize() + access = get_all_accesses() + return ..() +// [/CELADON-ADD] + +/obj/item/card/id/debug/Initialize() + . = ..() + access |= get_all_accesses_outpost() | get_faction_access_outpost() + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/bikehorn/attack(mob/living/carbon/M, mob/living/carbon/user) + if(user != M && ishuman(user)) + var/mob/living/carbon/human/H = user + if(HAS_TRAIT(H, TRAIT_CLUMSY)) //only clowns can unlock its true powers + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "honk", /datum/mood_event/honk) + return ..() +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +//golden bikehorn +/obj/item/bikehorn/golden + name = "golden bike horn" + desc = "Golden? Clearly, it's made with bananium! Honk!" + icon_state = "gold_horn" + item_state = "gold_horn" + var/flip_cooldown = 0 + +/obj/item/bikehorn/golden/attack() + if(flip_cooldown < world.time) + flip_mobs() + return ..() + +/obj/item/bikehorn/golden/attack_self(mob/user) + if(flip_cooldown < world.time) + flip_mobs() + ..() + +/obj/item/bikehorn/golden/proc/flip_mobs(mob/living/carbon/M, mob/user) + var/turf/T = get_turf(src) + for(M in ohearers(7, T)) + if(ishuman(M) && M.can_hear()) + var/mob/living/carbon/human/H = M + if(istype(H.ears, /obj/item/clothing/ears/earmuffs)) + continue + M.emote("flip") + flip_cooldown = world.time + 7 +//canned laughter +/obj/item/reagent_containers/food/drinks/soda_cans/canned_laughter + name = "Canned Laughter" + desc = "Just looking at this makes you want to giggle." + icon_state = "laughter" + list_reagents = list(/datum/reagent/consumable/laughter = 50) +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/toy/crayon/mime + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/crayons.dmi' + icon_state = "crayonmime" + desc = "A very sad-looking crayon." + paint_color = "#FFFFFF" + crayon_color = "mime" + reagent_contents = list(/datum/reagent/consumable/nutriment = 0.5, /datum/reagent/colorful_reagent/powder/invisible = 1.5) + charges = -1 + dye_color = DYE_MIME +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/toy/crayon/spraycan/lubecan + name = "slippery spraycan" + desc = "You can barely keep hold of this thing." + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/crayons.dmi' + icon_state = "clowncan2_cap" + icon_capped = "clowncan2_cap" + icon_uncapped = "clowncan2" + use_overlays = FALSE + + reagent_contents = list(/datum/reagent/lube = 1, /datum/reagent/consumable/banana = 1) + volume_multiplier = 5 + +/obj/item/toy/crayon/spraycan/lubecan/isValidSurface(surface) + return istype(surface, /turf/open/floor) + +/obj/item/toy/crayon/spraycan/mimecan + name = "silent spraycan" + desc = "Art is best seen, not heard." + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/crayons.dmi' + icon_state = "mimecan_cap" + icon_capped = "mimecan_cap" + icon_uncapped = "mimecan" + use_overlays = FALSE + + can_change_colour = FALSE + paint_color = "#FFFFFF" //RGB + + pre_noise = FALSE + post_noise = FALSE + reagent_contents = list(/datum/reagent/consumable/nothing = 1, /datum/reagent/toxin/mutetoxin = 1) +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/dnainjector/clumsymut + name = "\improper DNA injector (Clumsy)" + desc = "Makes clown minions." + add_mutations = list(CLOWNMUT) + +/obj/item/dnainjector/anticlumsy + name = "\improper DNA injector (Anti-Clumsy)" + desc = "Apply this for Security Clown." + remove_mutations = list(CLOWNMUT) +// [/CELADON-ADD]S + +/obj/item/book/granter/crafting_recipe/cooking_sweets_101/Initialize(mapload) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + crafting_recipe_types |= list( + /datum/crafting_recipe/food/mimetart, + ) + return ..() + +/obj/item/storage/box/hero/ghostbuster/PopulateContents() + . = ..() + new /obj/item/clothing/glasses/welding/ghostbuster(src) + +/obj/item/shield +// [CELADON-ADD] - Флаг на включение сломаных щитов из модов - BALLISTIC_SHIELD - Extended Edition + var/spread_bonus = 0 + var/breaking_sound = 'sound/effects/glassbr3.ogg' + var/breaking_alert = "cracks!" +// [/CELADON-ADD] + +// [CELADON-ADD] - BALLISTIC_SHIELD - Rebalance +/obj/item/shield/proc/defense_check(turf/aloc, turf/bloc, mobdir) + var/dx = aloc.x - bloc.x + var/dy = aloc.y - bloc.y + switch(mobdir) + if(NORTH) + if(abs(dx) <= dy * 2) + return FALSE + if(SOUTH) + if(abs(dx) <= dy * -2) + return FALSE + if(EAST) + if(abs(dy) <= dx * 2) + return FALSE + if(WEST) + if(abs(dy) <= dx * -2) + return FALSE + return TRUE +// [/CELADON-ADD] + +/obj/item/shield/heavy + // [CELADON-ADD] - BALLISTIC_SHIELD - Extended Edition + Rebalance + spread_bonus = -3 + // [/CELADON-ADD] + +#define SPECIAL_ATTACK_OTHER 4 + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/toy/prize/honk + name = "toy H.O.N.K." + desc = "6/14" + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/toy.dmi' + icon_state = "honktoy" + max_combat_health = 4 //140 integrity + special_attack_type = SPECIAL_ATTACK_OTHER + special_attack_type_message = "puts the opposing mech's special move on cooldown and heals this mech." + special_attack_cry = "MEGA HORN" + +/obj/item/toy/prize/honk/super_special_attack(obj/item/toy/prize/victim) + playsound(src, 'sound/machines/honkbot_evil_laugh.ogg', 20, TRUE) + victim.special_attack_cooldown += 3 //Adds cooldown to the other mech and gives a minor self heal + combat_health++ +// [/CELADON-ADD] + +#undef SPECIAL_ATTACK_OTHER + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/toy/figure/clown + name = "Clown action figure" + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/toy.dmi' + icon_state = "clown" + toysay = "Honk!" + toysound = 'sound/items/bikehorn.ogg' +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/toy/figure/mime + name = "Mime action figure" + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/toy.dmi' + icon_state = "mime" + toysay = "..." + toysound = null +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/megaphone/clown + name = "clown's megaphone" + desc = "Something that should not exist." + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/device.dmi' + lefthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/megaphone_lefthand.dmi' + righthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/megaphone_righthand.dmi' + icon_state = "megaphone-clown" + item_state = "megaphone-clown" + voicespan = list(SPAN_CLOWN) +// [/CELADON-ADD] + +/obj/item/cartridge/captain + access = parent_type::access & ~(CART_REMOTE_DOOR | CART_NEWSCASTER) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/pda/ai/attack_self(mob/user) + if ((honkamt > 0) && (prob(60)))//For clown virus. + honkamt-- + playsound(loc, 'sound/items/bikehorn.ogg', 30, TRUE) + return +// [/CELADON-ADD] + +// [CELADON-ADD] - scientist-PDA +/obj/item/pda/scientist + name = "scientist PDA" + default_cartridge = /obj/item/cartridge/chemistry + icon_state = "pda-science" +// [/CELADON-ADD] + +/obj/item/pda +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + var/honkamt = 0 //How many honks left when infected with honk.exe + var/mimeamt = 0 //How many silence left when infected with mime.exe +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/cartridge/virus/clown + name = "\improper Honkworks 5.0 cartridge" + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/pda.dmi' + icon_state = "cart-clown" + desc = "A data cartridge for portable microcomputers. It smells vaguely of bananas." + access = CART_CLOWN + +/obj/item/cartridge/virus/clown/send_virus(obj/item/pda/target, mob/living/U) + if(charges <= 0) + to_chat(U, span_notice("Out of charges.")) + return + if(!isnull(target) && !target.toff) + charges-- + to_chat(U, span_notice("Virus Sent!")) + target.honkamt = (rand(15,20)) + else + to_chat(U, span_alert("PDA not found.")) + +/obj/item/cartridge/virus/mime + name = "\improper Gestur-O 1000 cartridge" + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/pda.dmi' + icon_state = "cart-mi" + access = CART_MIME + +/obj/item/cartridge/virus/mime/send_virus(obj/item/pda/target, mob/living/U) + if(charges <= 0) + to_chat(U, span_alert("Out of charges.")) + return + if(!isnull(target) && !target.toff) + charges-- + to_chat(U, span_notice("Virus Sent!")) + target.silent = TRUE + target.ttone = "silence" + else + to_chat(U, span_alert("PDA not found.")) +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/food/burger/clown + name = "clown burger" + desc = "This tastes funny..." + icon_state = "clownburger" + food_reagents = list( + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/nutriment/protein = 12, + /datum/reagent/medicine/mannitol = 11, + /datum/reagent/consumable/nutriment/vitamin = 6, + ) + foodtypes = GRAIN | FRUIT + +/obj/item/food/burger/mime + name = "mime burger" + desc = "Its taste defies language." + icon_state = "mimeburger" + food_reagents = list( + /datum/reagent/consumable/nutriment = 6, + /datum/reagent/consumable/nutriment/protein = 11, + /datum/reagent/consumable/nutriment/vitamin = 7, + /datum/reagent/consumable/nothing = 6, + ) + foodtypes = GRAIN +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/food/donkpocket/honk + name = "\improper Honk-pocket" + desc = "The award-winning donk-pocket that won the hearts of clowns and humans alike." + icon_state = "donkpocketbanana" + food_reagents = list( + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/banana = 4 + ) + tastes = list("banana" = 2, "dough" = 2, "children's antibiotics" = 1) + foodtypes = GRAIN + + //warm_type = /obj/item/food/donkpocket/warm/honk + microwaved_type = /obj/item/food/donkpocket/warm/honk + +/obj/item/food/donkpocket/warm/honk + name = "warm Honk-pocket" + desc = "The award-winning donk-pocket, now warm and toasty." + icon_state = "donkpocketbanana" + food_reagents = list( + /datum/reagent/consumable/nutriment = 4, + /datum/reagent/consumable/banana = 4, + /datum/reagent/consumable/laughter = 6 + ) + tastes = list("banana" = 2, "dough" = 2, "children's antibiotics" = 1) + foodtypes = GRAIN +// [/CELADON-ADD] + +/obj/item/grenade/botch_check(mob/living/carbon/human/user) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + var/clumsy = HAS_TRAIT(user, TRAIT_CLUMSY) + if(clumsy && (clumsy_check == GRENADE_CLUMSY_FUMBLE)) + if(prob(50)) + to_chat(user, span_warning("Huh? How does this thing work?")) + preprime(user, 5, FALSE) + return TRUE + else if(!clumsy && (clumsy_check == GRENADE_NONCLUMSY_FUMBLE)) + to_chat(user, span_warning("You pull the pin on [src]. Attached to it is a pink ribbon that says, \"[span_clown("HONK")]\"")) + preprime(user, 5, FALSE) + return TRUE + else + return ..() + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/borg/upgrade/transform/clown + name = "borg module picker (Clown)" + desc = "Allows you to to turn a cyborg into a clown, honk." + icon_state = "cyborg_upgrade3" + new_module = /obj/item/robot_module/clown +// [/CELADON-ADD] + +/obj/item/stack/medical/gauze + custom_price = 35 // [CELADON-EDIT] - OUTPOST_MED_BALANCE // custom_price = 50 + +/obj/item/stack/sticky_tape/surgical + custom_price = 50 // [CELADON-EDIT] - OUTPOST_MED_BALANCE // custom_price = 500 + +/obj/item/storage/backpack + equip_delay_self = 0 SECONDS // [CELADON-REMOVE] - CELADON_BALANCE_CD + +/obj/item/storage/backpack/ComponentInitialize() + . = ..() + var/datum/component/storage/storage_component = GetComponent(/datum/component/storage) + storage_component.worn_access = TRUE // [CELADON-REMOVE] - CELADON_BALANCE_CD + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/storage/backpack/mime + name = "Parcel Parceaux" + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/backpacks.dmi' + lefthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/backpack_lefthand.dmi' + righthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/backpack_righthand.dmi' + desc = "A silent backpack made for those silent workers. Silence Co." + icon_state = "mimepack" + item_state = "mimepack" +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/storage/backpack/ert/clown + name = "emergency response team clown backpack" + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/backpacks.dmi' + lefthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/backpack_lefthand.dmi' + righthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/backpack_righthand.dmi' + mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/backpack_onmob.dmi' + desc = "A spacious backpack with lots of pockets, worn by Clowns of an Emergency Response Team." + icon_state = "ert_clown" +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN +// For ClownOps. +/obj/item/storage/backpack/duffelbag/clown/syndie/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + slowdown = 0 + STR.silent = TRUE + +/obj/item/storage/backpack/duffelbag/clown/syndie/PopulateContents() + new /obj/item/clothing/under/rank/civilian/clown(src) + new /obj/item/clothing/shoes/clown_shoes(src) + new /obj/item/pda/clown(src) + new /obj/item/clothing/mask/gas/clown_hat(src) + new /obj/item/bikehorn(src) + new /obj/item/implanter/sad_trombone(src) +// [/CELADON-ADD] + +// [CELADON-EDIT] - OMNI_TOOLS +/obj/item/storage/belt/utility/chief/full/PopulateContents() + new /obj/item/screwdriver/power(src) + new /obj/item/crowbar/power(src) + new /obj/item/weldingtool/electric(src) + new /obj/item/multitool/tricorder(src) + new /obj/item/pipe_dispenser(src) + new /obj/item/inducer(src) + new /obj/item/stack/cable_coil(src,MAXCOIL,pick("red","yellow","orange")) + +/obj/item/storage/belt/utility/chief/debug/full/PopulateContents() + new /obj/item/screwdriver/power(src) + new /obj/item/crowbar/power(src) + new /obj/item/weldingtool/electric(src) + new /obj/item/multitool/tricorder/ranged(src) + new /obj/item/pipe_dispenser/bluespace(src) + new /obj/item/inducer/adv(src) + new /obj/item/stack/cable_coil(src,MAXCOIL,"cyan") +// [/CELADON-EDIT] + +/obj/item/storage/belt/medical/nohypo/PopulateContents() // [CELADON-ADD] - CELADON_BALANCE + new /obj/item/scalpel(src) + new /obj/item/circular_saw(src) + new /obj/item/blood_filter(src) + new /obj/item/surgicaldrill(src) + new /obj/item/retractor(src) + new /obj/item/cautery(src) + new /obj/item/hemostat(src) + update_appearance() + +/obj/item/storage/box/ComponentInitialize() + . = ..() + var/datum/component/storage/storage_component = GetComponent(/datum/component/storage) + storage_component.storage_flags = /datum/component/storage::storage_flags + storage_component.max_volume = /datum/component/storage::max_volume + storage_component.max_w_class = /datum/component/storage::max_w_class + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +//Mime spell boxes + +/obj/item/storage/box/mime + name = "invisible box" + desc = "Unfortunately not large enough to trap the mime." + foldable = null + icon_state = "box" + item_state = null + alpha = 0 + +/obj/item/storage/box/mime/attack_hand(mob/user) + ..() + if(user.mind.miming) + alpha = 255 + +/obj/item/storage/box/mime/Moved(oldLoc, dir) + if (iscarbon(oldLoc)) + alpha = 0 + ..() +// [/CELADON-ADD] + +// [CELADON-EDIT] +/obj/item/storage/box/donkpockets/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.set_holdable(list(/obj/item/food/donkpocket)) +// [/CELADON-EDIT] + +// [CELADON-EDIT] +/obj/item/storage/box/monkeycubes/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.max_items = 7 + STR.set_holdable(list(/obj/item/food/monkeycube)) +// [/CELADON-EDIT] + +// [CELADON-EDIT] +/obj/item/storage/box/snappops/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.set_holdable(list(/obj/item/toy/snappop)) + STR.max_items = 8 +// [/CELADON-EDIT] + +// [CELADON-EDIT] +/obj/item/storage/box/matches/ComponentInitialize() + . = ..() + var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.max_items = 10 + STR.set_holdable(list(/obj/item/match)) +// [/CELADON-EDIT] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNSS +// Clown survival box +/obj/item/storage/box/hug/survival/PopulateContents() + new /obj/item/clothing/mask/breath(src) + new /obj/item/reagent_containers/hypospray/medipen(src) + + if(!isplasmaman(loc)) + new /obj/item/tank/internals/emergency_oxygen(src) + else + new /obj/item/tank/internals/plasmaman/belt(src) +// [/CELADON-ADD] + +/obj/item/storage/pill_bottle/charcoal/less + custom_price = 70 // [CELADON-EDIT] - OUTPOST_MED_BALANCE // custom_price = 100 + +/obj/item/storage/toolbox/infiltrator/ComponentInitialize() + . = ..() + var/datum/component/storage/storage_component = GetComponent(/datum/component/storage) + storage_component.can_hold |= typecacheof(/obj/item/clothing/shoes/combat/sneakboots) // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + storage_component.can_hold_description = storage_component.generate_hold_desc(storage_component.can_hold) + +/obj/item/storage/toolbox/infiltrator/PopulateContents() + . = ..() + new /obj/item/clothing/shoes/combat/sneakboots(src) // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/storage/box/syndie_kit/mimery/PopulateContents() + new /obj/item/book/granter/spell/mimery_blockade(src) + new /obj/item/book/granter/spell/mimery_guns(src) +// [/CELADON-ADD] + +/obj/item/storage/wallet/ComponentInitialize() // [CELADON-ADD] - CELADON_QOL - Добавляем ключи и нож для писем, сигареты + . = ..() + var/datum/component/storage/storage_component = GetComponent(/datum/component/storage) + storage_component.can_hold |= typecacheof(list( + /obj/item/clothing/gloves/ring, + /obj/item/clothing/gloves/ring/diamond, + /obj/item/clothing/gloves/ring/silver, + /obj/item/clothing/mask/cigarette, + /obj/item/key, + /obj/item/melee/knife/letter_opener, + )) + LAZYREMOVE(storage_component.can_hold, typecacheof(/obj/item/screwdriver)) + storage_component.can_hold_description = storage_component.generate_hold_desc(storage_component.can_hold) + +/obj/item/storage/wallet/random/Initialize(mapload) + . = ..() + icon_state = /obj/item/storage/wallet::icon_state + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/bedsheet/mime + name = "mime's blanket" + desc = "A very soothing striped blanket. All the noise just seems to fade out when you're under the covers in this." + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheets.dmi' + lefthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheet_lefthand.dmi' + righthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheet_righthand.dmi' + icon_state = "sheetmime" + item_state = "sheetmime" + dream_messages = list("silence", "gestures", "a pale face", "a gaping mouth", "the mime") + +/obj/item/bedsheet/clown + name = "clown's blanket" + desc = "A rainbow blanket with a clown mask woven in. It smells faintly of bananas." + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheets.dmi' + lefthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheet_lefthand.dmi' + righthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheet_righthand.dmi' + icon_state = "sheetclown" + item_state = "sheetrainbow" + dream_messages = list("honk", "laughter", "a prank", "a joke", "a smiling face", "the clown") +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/bedsheet/double/mime + name = "double mime's blanket" + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheets.dmi' + lefthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheet_lefthand.dmi' + righthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheet_righthand.dmi' + icon_state = "double_sheetmime" + item_state = "sheetmime" + dream_messages = list("silence", "gestures", "a pale face", "a gaping mouth", "the mime") + desc = "A very soothing striped blanket. All the noise just seems to fade out when you're under the covers in this." + +/obj/item/bedsheet/double/clown + name = "double clown's blanket" + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheets.dmi' + lefthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheet_lefthand.dmi' + righthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/bedsheet_righthand.dmi' + icon_state = "double_sheetclown" + item_state = "sheetrainbow" + dream_messages = list("honk", "laughter", "a prank", "a joke", "a smiling face", "the clown") + desc = "A rainbow blanket with a clown mask woven in. It smells faintly of bananas." +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/structure/chair/mime + name = "invisible chair" + desc = "The mime needs to sit down and shut up." + anchored = FALSE + icon_state = null + buildstacktype = null + item_chair = null + flags_1 = NODECONSTRUCT_1 + alpha = 0 + +/obj/structure/chair/mime/post_buckle_mob(mob/living/M) + M.pixel_y += 5 + +/obj/structure/chair/mime/post_unbuckle_mob(mob/living/M) + M.pixel_y -= 5 +// [/CELADON-ADD] + +/obj/structure/closet/examine(mob/user) + . = ..() + // [CELADON-ADD] - CELADON_RETURN_CONTENT_QUIRKS + if(isliving(user)) + var/mob/living/L = user + if(HAS_TRAIT(L, TRAIT_SKITTISH)) + . += "Ctrl-Shift-click [src] to jump inside." + // [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_QUIRKS +/obj/structure/closet/CtrlShiftClick(mob/living/user) + if(!HAS_TRAIT(user, TRAIT_SKITTISH)) + return ..() + if(!user.canUseTopic(src, BE_CLOSE) || !isturf(user.loc)) + return + dive_into(user) +// [/CELADON-ADD] + +/obj/structure/closet/wardrobe/chaplain_black/PopulateContents() + . = ..() + // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + new /obj/item/clothing/suit/chaplainsuit/nun(src) + new /obj/item/clothing/head/nun_hood(src) + new /obj/item/clothing/suit/hooded/chaplainsuit/monkhabit(src) + new /obj/item/clothing/suit/chaplainsuit/holidaypriest(src) + // [/CELADON-ADD] + +/obj/structure/closet/wardrobe/black/PopulateContents() + . = ..() + // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + if(prob(20)) + new /obj/item/clothing/suit/jacket/leather/overcoat(src) + // [/CELADON-ADD] + +/obj/structure/closet/secure_closet/captains/PopulateContents() + . = ..() + // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + new /obj/item/clothing/head/crown/fancy(src) + new /obj/item/clothing/glasses/sunglasses/gar/supergar(src) + new /obj/item/gun/energy/e_gun/e_old(src) // [CELADON-ADD] - CELADON_RETURN_EGUN + // [/CELADON-ADD] + +/obj/structure/closet/secure_closet/head_of_personnel/PopulateContents() + . = ..() + // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + new /obj/item/clothing/head/hopcap(src) + new /obj/item/gun/energy/e_gun/e_old/mini(src) // [CELADON-ADD] - CELADON_RETURN_EGUN + // [/CELADON-ADD] + +/obj/structure/closet/secure_closet/hos/PopulateContents() + . = ..() + // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + new /obj/item/clothing/glasses/hud/security/sunglasses/gars/supergars(src) + new /obj/item/gun/energy/e_gun/e_old/hos(src) // [CELADON-ADD] - CELADON_RETURN_EGUN + // [/CELADON-ADD] + +/obj/structure/closet/secure_closet/courtroom/PopulateContents() + . = ..() + // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + new /obj/item/clothing/head/powdered_wig (src) + // [/CELADON-ADD] + +/obj/structure/closet/secure_closet/armory3/PopulateContents() + . = ..() + for(var/i in 1 to 3) + new /obj/item/gun/energy/e_gun/e_old(src) // [CELADON-ADD] - CELADON_RETURN_EGUN + +/obj/structure/closet/secure_closet/tac/PopulateContents() + . = ..() + new /obj/item/gun/ballistic/automatic/smg/wt550(src) // [CELADON-ADD] - CELADON_RETURN_EGUN + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNSS +/obj/structure/closet/crate/wooden/toy + name = "toy box" + desc = "It has the words \"Clown + Mime\" written underneath of it with marker." + +/obj/structure/closet/crate/wooden/toy/PopulateContents() + . = ..() + new /obj/item/megaphone/clown(src) + new /obj/item/reagent_containers/food/drinks/soda_cans/canned_laughter(src) + new /obj/item/pneumatic_cannon/pie(src) + new /obj/item/food/pie/cream(src) + new /obj/item/storage/crayons(src) +// [/CELADON-ADD] + +/turf/closed/mineral + // [CELADON-EDIT] - CELADON_BALANCE - Делаем из картонного камня скалу! + max_integrity = 1200 + brute_mod = 0.3 + burn_mod = 0.3 + // [/CELADON-EDIT] + +/turf/closed/mineral/random/Initialize(mapload, inherited_virtual_z) + if(/turf/closed/mineral/random::mineralSpawnChanceList == mineralSpawnChanceList) + mineralSpawnChanceList |= list(/turf/closed/mineral/gibtonite = 4) // [CELADON-ADD] - RETURN GIBTONITE + return ..() + +/turf/closed/wall + // [CELADON-EDIT] - CELADON_BALANCE - Увеличиваем живучесть стенам + min_dam = 25 + max_integrity = 800 + // [/CELADON-EDIT] + +/turf/open/chasm/CanAllowThrough(atom/movable/mover, border_dir) + . = ..() + if(.) + return + // [CELADON-ADD] - RETURN_CHASM - Не удалось сделать чтобы ССДшники не падали + if(mover.movement_type & (PHASING|GROUND)) + return TRUE + // [/CELADON-ADD] + +/turf/open/floor/plating/asteroid/snow + icon = MAP_SWITCH('icons/turf/floors/snow.dmi', 'mod_celadon/_storage_icons/icons/structures/snow.dmi') // [CELADON-EDIT] - Снег без квадратиков в sDMM + +/client/invisimin() + if(holder && mob) + // [CELADON-EDIT] - Оффовский извиз видно на худах. Вводим экстренное решение. + if(mob.alpha != 0) + mob.alpha = 0 + mob.mouse_opacity = 0 + to_chat(mob, span_adminnotice("\[Invisibility_ON] Ваше тело растворяется в пустоту. Ваша активность видна лишь в Orbit."), confidential = TRUE) + else + mob.alpha = 255 + mob.mouse_opacity = 1 + to_chat(mob, span_adminnotice("\[Invisibility_OFF] Ваше тело снова видно органическим формам жизни."), confidential = TRUE) + // [/CELADON-EDIT] + +// [CELADON-ADD] - ADMIN-PANEL - Black Reality +/client/proc/show_all_verbs() + set category = "Admin" + set name = "Admin Panel 📋" + + if(!holder) + return + + admin_menu = new(usr) + admin_menu.ui_interact(usr) + +/datum/admin_menu + var/client/holder + var/compact_mode = FALSE + +/datum/admin_menu/New(user) + if (istype(user, /client)) + var/client/user_client = user + holder = user_client + else + var/mob/user_mob = user + holder = user_mob.client + +/datum/admin_menu/ui_state(mob/user) + return GLOB.admin_state + +/datum/admin_menu/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "AdminVerbs") + ui.open() + +/datum/admin_menu/ui_data(mob/user) + var/list/data = list() + data["compactMode"] = compact_mode + return data + +/datum/admin_menu/ui_static_data(mob/user) + var/list/temp_data = list() + for(var/procpath/cur_verb as anything in holder.verbs) + if(!cur_verb.category) + continue + if(!temp_data[cur_verb.category]) + temp_data[cur_verb.category] = list() + temp_data[cur_verb.category] += list(list("verb" = "[cur_verb]", "name" = cur_verb.name, "desc" = cur_verb.desc)) + + var/list/tgui_data = list() + for(var/category in temp_data) + var/list/cat = list( + "name" = category, + "items" = temp_data[category]) + tgui_data["categories"] += list(cat) + + LAZYADDASSOCLIST(tgui_data, "categories", list("name" = "История", "items" = reverseList(holder.last_verbs_used))) + return tgui_data + +/datum/admin_menu/ui_act(action, params) + . = ..() + if(.) + return + + switch(action) + if("compact_toggle") + compact_mode = !compact_mode + return TRUE + + if(!check_rights(R_ADMIN) || action != "run") + return + + INVOKE_ASYNC(holder, text2path(params["verb"])) + + LAZYADD(holder.last_verbs_used, list(list("verb" = params["verb"], "name" = params["name"], "desc" = params["desc"]))) + + SStgui.close_uis(usr) +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +// Handles adding and removing the clumsy mutation from clown antags. Gets called in apply/remove_innate_effects +/datum/antagonist/proc/handle_clown_mutation(mob/living/mob_override, message, removing = TRUE) + var/mob/living/carbon/human/H = mob_override + if(H && istype(H) && owner.assigned_role == "Clown") + if(removing) // They're a clown becoming an antag, remove clumsy + H.dna.remove_mutation(CLOWNMUT) + if(!silent && message) + to_chat(H, span_boldnotice("[message]")) + else + H.dna.add_mutation(CLOWNMUT) // We're removing their antag status, add back clumsy +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +//////CLOWN OP +/obj/item/antag_spawner/nuke_ops/clown + name = "clown operative teleporter" + desc = "A single-use teleporter designed to quickly reinforce clown operatives in the field." + +/obj/item/antag_spawner/nuke_ops/clown/spawn_antag(client/C, turf/T, kind, datum/mind/user) + var/mob/living/carbon/human/M = new/mob/living/carbon/human(T) + C.prefs.copy_to(M) + M.key = C.key + + var/datum/antagonist/nukeop/clownop/new_op = new /datum/antagonist/nukeop/clownop() + new_op.send_to_spawnpoint = FALSE + new_op.nukeop_outfit = /datum/outfit/syndicate/clownop/no_crystals + + var/datum/antagonist/nukeop/creator_op = user.has_antag_datum(/datum/antagonist/nukeop/clownop,TRUE) + if(creator_op) + M.mind.add_antag_datum(new_op, creator_op.nuke_team) + M.mind.special_role = "Clown Operative" +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/antag_spawner/slaughter_demon/laughter + name = "vial of tickles" + desc = "A magically infused bottle of clown love, distilled from countless hugging attacks. Used in funny rituals to attract adorable creatures." + icon = 'icons/obj/wizard.dmi' + icon_state = "vial" + color = "#FF69B4" // HOT PINK + + veil_msg = span_warning("You sense an adorable presence lurking just beyond the veil...") + demon_type = /mob/living/simple_animal/slaughter/laughter + antag_type = /datum/antagonist/slaughter/laughter +// [/CELADON-ADD] + +/datum/antagonist/changeling/apply_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/M = mob_override || owner.current + handle_clown_mutation(M, "You have evolved beyond your clownish nature, allowing you to wield weapons without harming yourself.") // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/antagonist/changeling/remove_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/M = mob_override || owner.current + handle_clown_mutation(M, removing = FALSE) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/nuclear_challenge/clownops + uplink_type = /obj/item/uplink/clownop +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/mob/living/simple_animal/slaughter/laughter + // The laughter demon! It's everyone's best friend! It just wants to hug + // them so much, it wants to hug everyone at once! + name = "laughter demon" + real_name = "laughter demon" + desc = "A large, adorable creature covered in armor with pink bows." + speak_emote = list("giggles","titters","chuckles") + emote_hear = list("guffaws","laughs") + response_help_continuous = "hugs" + attack_verb_continuous = "wildly tickles" + attack_verb_simple = "wildly tickle" + + attack_sound = 'sound/items/bikehorn.ogg' + feast_sound = 'sound/spookoween/scary_horn2.ogg' + deathsound = 'sound/misc/sadtrombone.ogg' + + icon_state = "bowmon" + icon_living = "bowmon" + deathmessage = "fades out, as all of its friends are released from its \ + prison of hugs." + loot = list(/mob/living/simple_animal/pet/cat/kitten{name = "Laughter"}) + + // Keep the people we hug! + var/list/consumed_mobs = list() + + playstyle_string = "You are a laughter \ + demon, a wonderful creature from another realm. You have a single \ + desire: To hug and tickle.
    \ + You may use the \"Blood Crawl\" ability near blood pools to travel \ + through them, appearing and disappearing from the station at will. \ + Pulling a dead or unconscious mob while you enter a pool will pull \ + them in with you, allowing you to hug them and regain your health.
    \ + You move quickly upon leaving a pool of blood, but the material world \ + will soon sap your strength and leave you sluggish.
    \ + What makes you a little sad is that people seem to die when you tickle \ + them; but don't worry! When you die, everyone you hugged will be \ + released and fully healed, because in the end it's just a jape, \ + sibling!
    " + +/mob/living/simple_animal/slaughter/laughter/Initialize() + . = ..() + if(check_holidays(APRIL_FOOLS)) + icon_state = "honkmon" + +/mob/living/simple_animal/slaughter/laughter/Destroy() + release_friends() + . = ..() + +/mob/living/simple_animal/slaughter/laughter/ex_act(severity) + switch(severity) + if(1) + death() + if(2) + adjustBruteLoss(60) + if(3) + adjustBruteLoss(30) + +/mob/living/simple_animal/slaughter/laughter/proc/release_friends() + if(!consumed_mobs) + return + + for(var/mob/living/M in consumed_mobs) + if(!M) + continue + var/turf/T = find_safe_turf() + if(!T) + T = get_turf(src) + M.forceMove(T) + if(M.revive(full_heal = TRUE, admin_revive = TRUE)) + M.grab_ghost(force = TRUE) + playsound(T, feast_sound, 50, TRUE, -1) + to_chat(M, span_clown("You leave [src]'s warm embrace, and feel ready to take on the world.")) + +/mob/living/simple_animal/slaughter/laughter/bloodcrawl_swallow(mob/living/victim) + if(consumed_mobs) + // Keep their corpse so rescue is possible + consumed_mobs += victim + else + // Be safe and just eject the corpse + victim.forceMove(get_turf(victim)) + victim.exit_blood_effect() + victim.visible_message(span_warning("[victim] falls out of the air, covered in blood, looking highly confused. And dead.")) +// [/CELADON-ADD] + +/datum/antagonist/traitor/apply_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/M = mob_override || owner.current + handle_clown_mutation(M, mob_override ? null : "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.") // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/antagonist/traitor/remove_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/M = mob_override || owner.current + handle_clown_mutation(M, removing = FALSE) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + +/obj/item/necromantic_stone/equip_roman_skeleton(mob/living/carbon/human/H) + . = ..() + // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), ITEM_SLOT_FEET) + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/datum/spellbook_entry/item/hugbottle + name = "Bottle of Tickles" + desc = "A bottle of magically infused fun, the smell of which will \ + attract adorable extradimensional beings when broken. These beings \ + are similar to slaughter demons, but they do not permamently kill \ + their victims, instead putting them in an extradimensional hugspace, \ + to be released on the demon's death. Chaotic, but not ultimately \ + damaging. The crew's reaction to the other hand could be very \ + destructive." + item_path = /obj/item/antag_spawner/slaughter_demon/laughter + cost = 1 //non-destructive; it's just a jape, sibling! + limit = 3 + category = "Assistance" +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/assembly/flash/proc/clown_check(mob/living/carbon/human/user) + if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50)) + flash_carbon(user, user, 15, 0) + return FALSE + return TRUE +// [/CELADON-ADD] + +/datum/asset/spritesheet/simple/paper/New() + assets |= list( + // [CELADON-ADD] - CELADON_STAMPS + CELADON_RETURN_CONTENT_CLOWNS + "stamp-inteq-celadon" = 'mod_celadon/_storage_icons/icons/assets/png/large_stamp-inteq.png', + "inteq-mothership-stamp" = 'mod_celadon/_storage_icons/icons/assets/png/inteq_mothership_stamp.png', + "solfed-corps-commander-stamp" = 'mod_celadon/_storage_icons/icons/assets/png/sf_commander_stamp.png', + "solfed-captain" = 'mod_celadon/_storage_icons/icons/assets/png/sf_captain_stamp.png', + "elysium-brigade-captain-stamp" = 'mod_celadon/_storage_icons/icons/assets/png/elysium_brigade_stamp.png', + "elysium-republic-stamp" = 'mod_celadon/_storage_icons/icons/assets/png/elysium_republic_stamp.png', + "elysium-avanpost-stamp" = 'mod_celadon/_storage_icons/icons/assets/png/elysium_outpost_stamp.png', + "nt-cent-command-stamp" = 'mod_celadon/_storage_icons/icons/assets/png/nanotrasen_central_command_stamp.png', + "nt-captain-stamp" = 'mod_celadon/_storage_icons/icons/assets/png/nanotrasen_captain_stamp.png', + "syndicate-captain-stamp" = 'mod_celadon/_storage_icons/icons/assets/png/syndicate_captain_stamp.png', + "stamp-df" = 'mod_celadon/_storage_icons/icons/assets/png/large_stamp-df_generic.png', + "stamp-df_captain" = 'mod_celadon/_storage_icons/icons/assets/png/large_stamp-df_captain.png', + "stamp-df_meddir" = 'mod_celadon/_storage_icons/icons/assets/png/large_stamp-df_med_dir.png', + "stamp-ne" = 'mod_celadon/_storage_icons/icons/assets/png/large_stamp-ne_generic.png', + "stamp-ne_captain" = 'mod_celadon/_storage_icons/icons/assets/png/large_stamp-ne_captain.png', + "stamp-ne_engdir" = 'mod_celadon/_storage_icons/icons/assets/png/large_stamp-ne_eng_dir.png', + "stamp-mime" = 'mod_celadon/_storage_icons/icons/assets/png/large_stamp-mime.png', + "stamp-clown" = 'mod_celadon/_storage_icons/icons/assets/png/large_stamp-clown.png', + // [/CELADON-ADD] + ) + +/datum/asset/spritesheet/simple/achievements/New() + assets |= list( + // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + "clownking" = 'mod_celadon/_storage_icons/icons/assets/png/clownking.png', + "clownthanks" = 'mod_celadon/_storage_icons/icons/assets/png/clownthanks.png', + // [/CELADON-ADD] + ) + +/obj/effect/mob_spawn + var/can_load_appearance = TRUE // [CELADON-EDIT] - CELADON_LOAD_PREF + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/effect/mob_spawn/human/clown + name = "Clown" + outfit = /datum/outfit/job/cel/independent/clown +// [/CELADON-ADD] + +//[CELADON-ADD] - CELADON_FIXES - Чиним реролл +/datum/overmap/ship/controlled + var/given_up_missions = 0 + var/giveup_timer = - 15 MINUTES + var/giveup_timeout = FALSE +//[/CELADON-ADD] + +/obj/machinery/outpost_selling_pad + resistance_flags = INDESTRUCTIBLE // [CELADON-ADD] + flags_1 = NODECONSTRUCT_1 // [/CELADON-ADD] + +/obj/machinery/computer/outpost_export_console + var/cache_cooldown = 0 // [CELADON-ADD] - CELADON_FIXES: Cooldown for caching exports to prevent FPS drops + resistance_flags = INDESTRUCTIBLE // [CELADON-ADD] + flags_1 = NODECONSTRUCT_1 // [/CELADON-ADD] + +/obj/machinery/computer/outpost_export_console/cache_valid_exports() + // [CELADON-ADD] - CELADON_FIXES: Prevent constant re-caching every tick + if(cache_cooldown > world.time) + return + cache_cooldown = world.time + 10 // Cache for 1 second + // [/CELADON-ADD] + return ..() + +// [CELADON-REMOVE] - Никто в жизни это не купит намеренно +/datum/blackmarket_item/clothing/degraded_armor_set + availability_prob = 0 + +/datum/export/hunting/stack/rarehide + export_types = list(/obj/item/stack/sheet/animalhide/ashdrake) // [CELADON-EDIT] + +/datum/export/hunting/stack/hide + unit_name = "animal hide" + desc = "Animal hide export. Paid per hide." + cost = 50 + export_types = list(/obj/item/stack/sheet/animalhide/goliath_hide) // Also includes polar bear hide. + +/datum/export/hunting/trophy/common/New() + . = ..() + export_types |= typecacheof(list( +// [CELADON-ADD] + /obj/item/crusher_trophy/shiny, + /obj/item/crusher_trophy/legion_skull, + /obj/item/crusher_trophy/wolf_ear, + /obj/item/crusher_trophy/bear_paw, + /obj/item/crusher_trophy/goliath_tentacle, + /obj/item/crusher_trophy/watcher_wing, + /obj/item/crusher_trophy/brimdemon_fang, + /obj/item/crusher_trophy/lobster_claw, + /obj/item/mob_trophy/shiny, +// [/CELADON-ADD] + ), FALSE, !include_subtypes) + +/datum/export/hunting/trophy/rare/New() + . = ..() + export_types |= typecacheof(list( +// [CELADON-ADD] + /obj/item/crusher_trophy/watcher_wing_forgotten, + /obj/item/crusher_trophy/legion_skull_crystal, + /obj/item/crusher_trophy/goliath_crystal, + /obj/item/crusher_trophy/dwarf_skull, + /obj/item/crusher_trophy/fang, + /obj/item/crusher_trophy/war_paw, + /obj/item/crusher_trophy/elder_tentacle, + /obj/item/crusher_trophy/ice_crystal, + /obj/item/crusher_trophy/magma_skull, + /obj/item/crusher_trophy/magma_skull/magma, + /obj/item/crusher_trophy/magma_wing, + /obj/item/crusher_trophy/tail_spike, + /obj/item/crusher_trophy/ice_wing, + /obj/item/crusher_trophy/dwarf_skull, + /obj/item/mob_trophy/watcher_wing_forgotten, + /obj/item/mob_trophy/legion_skull_crystal, + /obj/item/mob_trophy/goliath_crystal, +// [/CELADON-ADD] + ), FALSE, !include_subtypes) + +/datum/export/hunting/trophy/mega/New() + . = ..() + export_types |= typecacheof(list( +// [CELADON-ADD] + /obj/item/crusher_trophy/legionnaire_spine, + /obj/item/crusher_trophy/ash_spike, + /obj/item/crusher_trophy/demon_claws, + /obj/item/crusher_trophy/broodmother_tongue, + /obj/item/crusher_trophy/ice_block_talisman, + /obj/item/crusher_trophy/king_goat, + /obj/item/crusher_trophy/miner_eye, + /obj/item/crusher_trophy/vortex_talisman, + /obj/item/crusher_trophy/blaster_tubes, +// [/CELADON-ADD] + ), FALSE, !include_subtypes) + +// [CELADON-ADD] +// Hides +/datum/export/hunting/stack + desc = "Rawhide of various origins. The more exotic the species, the higher the price." + include_subtypes = FALSE + +/datum/export/hunting/stack/monkey + cost = 50 + unit_name = "monkey hide" + export_types = list(/obj/item/stack/sheet/animalhide/monkey) + +/datum/export/hunting/stack/human + unit_name = "piece of human skin" + cost = 100 + export_types = list(/obj/item/stack/sheet/animalhide/human) + +/datum/export/hunting/stack/goliath_hide + unit_name = "goliath hide" + cost = 200 + export_types = list(/obj/item/stack/sheet/animalhide/goliath_hide) + include_subtypes = TRUE + +/datum/export/hunting/stack/cat + unit_name = "cat hide" + cost = 150 + export_types = list(/obj/item/stack/sheet/animalhide/cat) + +/datum/export/hunting/stack/corgi + unit_name = "corgi hide" + cost = 200 + export_types = list(/obj/item/stack/sheet/animalhide/corgi) + +/datum/export/hunting/stack/lizard + unit_name = "lizard hide" + cost = 150 + export_types = list(/obj/item/stack/sheet/animalhide/lizard) + +/datum/export/hunting/stack/gondola + unit_name = "gondola hide" + cost = 250 + export_types = list(/obj/item/stack/sheet/animalhide/gondola) + +/datum/export/hunting/stack/xeno + unit_name = "alien hide" + cost = 100 + export_types = list(/obj/item/stack/sheet/animalhide/xeno) + + +// [/CELADON-ADD] + +/datum/export/material/plasma + cost = 30 + +/datum/export/material/metal + elasticity_coeff = 0 + +/datum/export/material/metal/New() + . = ..() + export_types |= typecacheof(list( +// [CELADON-ADD] + /obj/item/stack/tile/plasteel, +// [/CELADON-ADD] + ), FALSE, !include_subtypes) + +/datum/export/material/glass + cost = 2 + sell_floor = 1 + elasticity_coeff = 0 + +// [CELADON-ADD] +/datum/export/material/wood + unit_name = "cm3 of wood" + cost = 1 + sell_floor = 1 + elasticity_coeff = 0 + material_id = /datum/material/wood + export_types = list(/obj/item/stack/sheet/mineral/wood) + +/datum/export/material/hellstone + unit_name = "cm3 of hellstone" + cost = 100 + material_id = /datum/material/hellstone + +/datum/export/material/hot_ice + unit_name = "cm3 of Hot Ice" + cost = 100 + material_id = /datum/material/hot_ice + export_types = /obj/item/stack/sheet/hot_ice + +/datum/export/material/abductor + unit_name = "cm3 of alien alloy" + cost = 500 + export_types = list(/obj/item/stack/sheet/mineral/abductor) +// [/CELADON-ADD] + +/datum/export/gems/diamond + cost = 1500 + +/datum/export/gems/amber + cost = 3000 + +/datum/export/gems/plasma + cost = 4000 + +/datum/export/gems/void + cost = 5000 + +/datum/export/gems/void + cost = 5000 + +/datum/export/gems/strange_crystal + cost = 6000 + +/datum/export/claymore + cost = 500 + +// [CELADON-ADD] +/datum/export/anomaly + unit_name = "stabilized anomaly core" + cost = 1000 + elasticity_coeff = 0.1 + export_types = list(/obj/item/assembly/signaler/anomaly) + +/datum/export/anomaly/New(...) + . = ..() + desc = "[SSmissions.get_researcher_name()] has requested that we [pick(list("procure", "grab", "acquire", "find", "locate"))] \ + anomaly cores for [pick(list("research", "analysis", "technical development", "closer inspection", "some reason"))]." +// [/CELADON-ADD] + +/datum/export/solar + elasticity_coeff = 0.05 + +/datum/export/thruster_ion + cost = 500 + desc = "One set of t3 circuits and controllers for an electrical ion engine." + unit_name = "ion thruster board" + elasticity_coeff = 0.05 + export_types = list(/obj/item/circuitboard/machine/shuttle/engine/electric/tech3) + +/datum/export/modular_part + export_types = list() + +/datum/preferences/get_default_name(name_id) + switch(name_id) + // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + if("clown") + return pick(GLOB.clown_names) + if("mime") + return pick(GLOB.mime_names) + // [/CELADON-ADD] + return ..() + +/datum/gear/hat/beret/departmental/New() + var/list/other_roles = list( +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + "Mime" = /obj/item/clothing/head/beret, + "Clown" = /obj/item/clothing/head/beret/puce +// [/CELADON-ADD] + ) + for(var/key in other_roles) + role_replacements[key] = other_roles[key] + return ..() + +/obj/item/clothing/head/helmet/bulletproof/x11/frontier/fireproof + armor = list("melee" = 15, "bullet" = 60, "laser" = 10, "energy" = 10, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50, "wound" = 20) // [CELADON-EDIT] - CELADON_BALANCE + +/obj/item/clothing/suit/armor/hardliners/sergeant + armor = list("melee" = 35, "bullet" = 35, "laser" = 35, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50, "wound" = 10) // [CELADON-EDIT] - CELADON_BALANCE + +// [CELADON-REMOVE] - CELADON_BALANCE - Убираем телескопички +/obj/item/clothing/suit/armor/inteq/corpsman/Initialize(mapload) + LAZYREMOVE(allowed, /obj/item/melee/classic_baton/telescopic) + return ..() + +/obj/item/clothing/suit/space/hardsuit/security/inteq + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION + +/obj/item/clothing/suit/space/hardsuit/syndi/inteq + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | KEPORI_VARIATION | TAJARA_VARIATION | RIOL_VARIATION + +/obj/item/clothing/mask/gas/inteq +// [CELADON-ADD] - SFX-Die + unique_death = list( + 'mod_celadon/_storage_sounds/sound/items/gasmask/die1.ogg', + 'mod_celadon/_storage_sounds/sound/items/gasmask/die2.ogg', + 'mod_celadon/_storage_sounds/sound/items/gasmask/die3.ogg', + 'mod_celadon/_storage_sounds/sound/items/gasmask/die4.ogg', + ) +// [/CELADON-ADD] + +/obj/item/clothing/mask/gas/vigilitas + unique_death = list('mod_celadon/_storage_sounds/sound/items/gasmask/sec_die.ogg') // [CELADON-ADD] - SFX-Die + +/obj/item/clothing/head/helmet/ngr + armor = list("melee" = 40, "bullet" = 60, "laser" = 35, "energy" = 35, "bomb" = 40, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50, "wound" = 20) // [CELADON-EDIT] - CELADON_BALANCE + +/obj/item/clothing/suit/space/hardsuit/syndi/ramzi +// [CELADON-EDIT] - TAJARA, CELADON_RIOL, BALANCE + slowdown = parent_type::slowdown // [CELADON-REMOVE] - BALANCE + jetpack = null + supports_variations = DIGITIGRADE_VARIATION | KEPORI_VARIATION | VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION // [CELADON-EDIT] - TAJARA, CELADON_RIOL +// [/CELADON-EDIT] + +/obj/item/clothing/suit/space/hardsuit/solgov + // [CELADON-EDIT] - TAJARA, CELADON_RIOL + supports_variations = DIGITIGRADE_VARIATION | TAJARA_VARIATION | RIOL_VARIATION + // [/CELADON-EDIT] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/clothing/gloves/color/plasmaman/clown + name = "clown envirogloves" + icon_state = "clownplasma" +// [/CELADON-ADD] + +/obj/item/clothing/head + supports_variations = VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION + +// [CELADON-ADD] +/obj/item/clothing/head/helmet/riot + mob_overlay_icon = 'mod_celadon/_storage_icons/icons/items/clothing/head/overlay/helmet_celadon.dmi' + +/obj/item/clothing/head/helmet/riot/solfed + unique_reskin = null + unique_reskin_changes_base_icon_state = FALSE +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/clothing/head/rice_hat + name = "rice hat" + desc = "Welcome to the rice fields, motherfucker." + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/hats.dmi' + icon_state = "rice_hat" +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/clothing/head/frenchberet + name = "french beret" + desc = "A quality beret, infused with the aroma of chain-smoking, wine-swilling Parisians. You feel less inclined to engage in military conflict, for some reason." + icon_state = "beret" + +/obj/item/clothing/head/frenchberet/equipped(mob/M, slot) + . = ..() + if (slot == ITEM_SLOT_HEAD) + RegisterSignal(M, COMSIG_MOB_SAY, PROC_REF(handle_speech)) + else + UnregisterSignal(M, COMSIG_MOB_SAY) + +/obj/item/clothing/head/frenchberet/dropped(mob/M) + . = ..() + UnregisterSignal(M, COMSIG_MOB_SAY) + +/obj/item/clothing/head/frenchberet/proc/handle_speech(datum/source, list/speech_args) + var/message = speech_args[SPEECH_MESSAGE] + if(message[1] != "*") + message = " [message]" + var/list/french_words = strings("french_replacement.json", "french") + + for(var/key in french_words) + var/value = french_words[key] + if(islist(value)) + value = pick(value) + + message = replacetextEx(message, " [uppertext(key)]", " [uppertext(value)]") + message = replacetextEx(message, " [capitalize(key)]", " [capitalize(value)]") + message = replacetextEx(message, " [key]", " [value]") + + if(prob(3)) + message += pick(" Honh honh honh!"," Honh!"," Zut Alors!") + speech_args[SPEECH_MESSAGE] = trim(message) +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/clothing/mask/gas/clown_hat + name = "clown wig and mask" + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/masks.dmi' + mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/mask.dmi' + desc = "A true prankster's facial attire. A clown is incomplete without his wig and mask." + clothing_flags = ALLOWINTERNALS + icon_state = "clown" + item_state = "clown_hat" + dye_color = "clown" + w_class = WEIGHT_CLASS_SMALL + flags_cover = MASKCOVERSEYES + resistance_flags = FLAMMABLE + actions_types = list(/datum/action/item_action/adjust) + dog_fashion = /datum/dog_fashion/head/clown + var/list/clownmask_designs = list() + +/obj/item/clothing/mask/gas/clown_hat/Initialize(mapload) + .=..() + clownmask_designs = list( + "True Form" = image(icon = src.icon, icon_state = "clown"), + "The Feminist" = image(icon = src.icon, icon_state = "sexyclown"), + "The Jester" = image(icon = src.icon, icon_state = "chaos"), + "The Madman" = image(icon = src.icon, icon_state = "joker"), + "The Rainbow Color" = image(icon = src.icon, icon_state = "rainbow") + ) + +/obj/item/clothing/mask/gas/clown_hat/ui_action_click(mob/user) + if(!istype(user) || user.incapacitated()) + return + + var/list/options = list() + options["True Form"] = "clown" + options["The Feminist"] = "sexyclown" + options["The Madman"] = "joker" + options["The Rainbow Color"] ="rainbow" + options["The Jester"] ="chaos" //Nepeta33Leijon is holding me captive and forced me to help with this please send help + + var/choice = show_radial_menu(user,src, clownmask_designs, custom_check = FALSE, radius = 36, require_near = TRUE) + if(!choice) + return FALSE + + if(src && choice && !user.incapacitated() && in_range(user,src)) + icon_state = options[choice] + user.update_inv_wear_mask() + for(var/X in actions) + var/datum/action/A = X + A.UpdateButtonIcon() + to_chat(user, span_notice("Your Clown Mask has now morphed into [choice], all praise the Honkmother!")) + return TRUE + +/obj/item/clothing/mask/gas/sexyclown + name = "sexy-clown wig and mask" + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/masks.dmi' + mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/mask.dmi' + desc = "A feminine clown mask for the dabbling crossdressers or female entertainers." + clothing_flags = ALLOWINTERNALS + icon_state = "sexyclown" + item_state = "sexyclown" + flags_cover = MASKCOVERSEYES + resistance_flags = FLAMMABLE + +/obj/item/clothing/mask/gas/mime + name = "mime mask" + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/masks.dmi' + mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/mask.dmi' + desc = "The traditional mime's mask. It has an eerie facial posture." + clothing_flags = ALLOWINTERNALS + icon_state = "mime" + item_state = "mime" + w_class = WEIGHT_CLASS_SMALL + flags_cover = MASKCOVERSEYES + resistance_flags = FLAMMABLE + actions_types = list(/datum/action/item_action/adjust) + var/list/mimemask_designs = list() + +/obj/item/clothing/mask/gas/mime/Initialize(mapload) + .=..() + mimemask_designs = list( + "Blanc" = image(icon = src.icon, icon_state = "mime"), + "Excité" = image(icon = src.icon, icon_state = "sexymime"), + "Triste" = image(icon = src.icon, icon_state = "sadmime"), + "Effrayé" = image(icon = src.icon, icon_state = "scaredmime") + ) + +/obj/item/clothing/mask/gas/mime/ui_action_click(mob/user) + if(!istype(user) || user.incapacitated()) + return + + var/list/options = list() + options["Blanc"] = "mime" + options["Triste"] = "sadmime" + options["Effrayé"] = "scaredmime" + options["Excité"] ="sexymime" + + var/choice = show_radial_menu(user,src, mimemask_designs, custom_check = FALSE, radius = 36, require_near = TRUE) + if(!choice) + return FALSE + + if(src && choice && !user.incapacitated() && in_range(user,src)) + icon_state = options[choice] + user.update_inv_wear_mask() + for(var/X in actions) + var/datum/action/A = X + A.UpdateButtonIcon() + to_chat(user, span_notice("Your Mime Mask has now morphed into [choice]!")) + return TRUE +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/clothing/mask/gas/sexymime + name = "sexy mime mask" + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/masks.dmi' + desc = "A traditional female mime's mask." + clothing_flags = ALLOWINTERNALS + icon_state = "sexymime" + item_state = "sexymime" + flags_cover = MASKCOVERSEYES + resistance_flags = FLAMMABLE +// [/CELADON-ADD] + +// [CELADON-ADD] - add: SFX-Die +/obj/item/clothing/mask/gas/sechailer/sec + name = "security gas mask" + desc = "A standard issue Security gas mask. It doesn't cover the eyes." + icon = 'mod_celadon/_storage_icons/icons/items/clothing/mask/hailer.dmi' + mob_overlay_icon = 'mod_celadon/_storage_icons/icons/items/clothing/mask/overlay/hailer.dmi' + unique_death = list('mod_celadon/_storage_sounds/sound/items/gasmask/sec_die.ogg') +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/clothing/mask/spamton + name = "Cursed Businessman's Mask" + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/masks.dmi' + icon_state = "big_shot" + mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/mask.dmi' + item_state = "big_shot" + clothing_flags = ALLOWINTERNALS + visor_flags = ALLOWINTERNALS + desc = "The porcelain mask of a now-forgotten business mogul, said to have made an impossible fortune long ago. Are you big enough to wear it?" + modifies_speech = TRUE + actions_types = list(/datum/action/item_action/lifesavings) + +/datum/action/item_action/lifesavings + name = "LIFE_SAVINGS" + desc = "Shipping and handling not included." + +/obj/item/clothing/mask/spamton/attack_self(mob/user) + if(cooldown < world.time) + SSblackbox.record_feedback("amount", "saving_uses", 1) + cooldown = world.time + 1600 + var/mob/living/U = user + U.apply_damage(25, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) + to_chat(user, span_warning("BLOOD PRICE ACCEPTED. WITHDRAWING KRONOR FROM OFFSHORE FUND...")) + pick( + new /obj/item/spacecash/bundle/mediumrand(user.drop_location()), + new /obj/item/spacecash/bundle/smallrand(user.drop_location()), + new /obj/item/holochip(user.drop_location(), 5000)) + else + to_chat(user, span_warning("[src]'s savings account can't yet be accessed!")) + +/obj/item/clothing/mask/spamton/handle_speech(datum/source, list/speech_args) + var/message = speech_args[SPEECH_MESSAGE] + if(message[1] != "*") + message = " [message]" + var/list/spamton_words = strings_load("spamton_replacement.json", "spamton", "mod_celadon/return_content_clowns/code/mime") + + for(var/key in spamton_words) + var/value = spamton_words[key] + if(islist(value)) + value = pick(value) + + message = replacetextEx(message, " [uppertext(key)]", " [uppertext(value)]") + message = replacetextEx(message, " [capitalize(key)]", " [capitalize(value)]") + message = replacetextEx(message, " [key]", " [value]") + + speech_args[SPEECH_MESSAGE] = trim(message) + +/obj/item/clothing/mask/spamton/Initialize() + . = ..() + ADD_TRAIT(src, TRAIT_NODROP, CURSED_MASK_TRAIT) +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/datum/outfit/plasmaman/mime + name = "Plasmamime" + + head = /obj/item/clothing/head/helmet/space/plasmaman/mime + uniform = /obj/item/clothing/under/plasmaman/mime + mask = /obj/item/clothing/mask/gas/mime + gloves = /obj/item/clothing/gloves/color/plasmaman/white + +/datum/outfit/plasmaman/clown + name = "Plasmaclown" + + head = /obj/item/clothing/head/helmet/space/plasmaman/clown + uniform = /obj/item/clothing/under/plasmaman/clown + mask = /obj/item/clothing/mask/gas/clown_hat + gloves = /obj/item/clothing/gloves/color/plasmaman/clown +// [/CELADON-ADD] + +/datum/outfit/debug //Debug objs plus hardsuit + belt = /obj/item/storage/belt/utility/chief/debug/full // [CELADON-EDIT] - OMNI_TOOLS + +// [CELADON-REMOVE] - CELADON_BALANCE - Убираем телескопички +/datum/outfit/job/clip/minutemen/captain/general/New() + LAZYREMOVE(backpack_contents, /obj/item/melee/classic_baton/telescopic) + return ..() + +// [CELADON-REMOVE] - CELADON_BALANCE - Убираем телескопички +/datum/outfit/job/inteq/captain/New() + LAZYREMOVE(backpack_contents, /obj/item/melee/classic_baton/telescopic) + return ..() + +// [CELADON-REMOVE] - CELADON_BALANCE - Убираем телескопички +/datum/outfit/job/nanotrasen/captain/New() + LAZYREMOVE(backpack_contents, /obj/item/melee/classic_baton/telescopic) + return ..() + +// [CELADON-REMOVE] - CELADON_BALANCE - Убираем телескопички +/datum/outfit/job/nanotrasen/hop/New() + LAZYREMOVE(backpack_contents, /obj/item/melee/classic_baton/telescopic) + return ..() + +// [CELADON-REMOVE] - CELADON_BALANCE - Убираем телескопички +/datum/outfit/job/nanotrasen/ce/New() + LAZYREMOVE(backpack_contents, /obj/item/melee/classic_baton/telescopic) + return ..() + +/obj/item/clothing/suit/space/hardsuit/engine + // [CELADON-EDIT] - TAJARA, CELADON_RIOL + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION + // [/CELADON-EDIT] + +/obj/item/clothing/suit/space/hardsuit/mining + // [CELADON-EDIT] - TAJARA, CELADON_RIOL + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION + // [/CELADON-EDIT] + +/obj/item/clothing/suit/space/hardsuit/mining/heavy/ns + armor = list("melee" = 65, "bullet" = 30, "laser" = 25, "energy" = 30, "bomb" = 70, "bio" = 100, "rad" = 85, "fire" = 100, "acid" = 100, "wound" = 30) // [CELADON-EDIT] - CELADON_BALANCE - добавил защиту от ваундов + +/obj/item/clothing/head/helmet/space/hardsuit/mining/heavy/ns + armor = list("melee" = 65, "bullet" = 30, "laser" = 25, "energy" = 30, "bomb" = 70, "bio" = 100, "rad" = 85, "fire" = 100, "acid" = 100, "wound" = 30) // [CELADON-EDIT] - CELADON_BALANCE - добавил защиту от ваундов + +/obj/item/clothing/head/helmet/space/hardsuit/syndi/attack_self(mob/user) + . = ..() + // [CELADON-ADD] - FIXES_DEBUG_SUIT - фиксим фонарик переключение фонарика + to_chat(user, span_notice("You turn [on ? "on" : "off"] [src]'s flashlight.")) + playsound(src, on ? 'sound/weapons/magin.ogg' : 'sound/weapons/magout.ogg', 40, TRUE) + // [/CELADON-ADD] + +/obj/item/clothing/suit/space/hardsuit/syndi + // [CELADON-EDIT] - TAJARA, CELADON_RIOL, BALANCE + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION + combat_slowdown = 0.2 + // [/CELADON - EDIT] + +//Ramzi Syndie suit +/obj/item/clothing/head/helmet/space/hardsuit/syndi/ramzi + name = "rust-red hardsuit helmet" + desc = "A beat-up standardized dual-mode helmet derived from more advanced special operations helmets, its red rusted into a dirty brown. It is in EVA mode. Manufactured by Ramzi Clique." + alt_desc = "A beat-up standardized dual-mode helmet derived from more advanced special operations helmets, its red rusted into a dirty brown. It is in travel mode. Manufactured by Ramzi Clique." + icon_state = "hardsuit1-ramzi" + item_state = "hardsuit1-ramzi" + hardsuit_type = "ramzi" + armor = list("melee" = 35, "bullet" = 40, "laser" = 20,"energy" = 40, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75, "wound" = 20) + +/obj/item/clothing/suit/space/hardsuit/syndi/cybersun + // [CELADON-EDIT] - TAJARA, CELADON_RIOL + supports_variations = VOX_VARIATION | KEPORI_VARIATION | TAJARA_VARIATION | RIOL_VARIATION + // [/CELADON-EDIT] + +/obj/item/clothing/suit/space/hardsuit/syndi/cybersun/paramed + // [CELADON-EDIT] - TAJARA, CELADON_RIOL + supports_variations = VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION + // [/CELADON-EDIT] + +/obj/item/clothing/suit/space/hardsuit/medical + // [CELADON-EDIT] - TAJARA, CELADON_RIOL + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION + // [/CELADON-EDIT] + +/obj/item/clothing/suit/space/hardsuit/bomb + // [CELADON-EDIT] - TAJARA, CELADON_RIOL + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION + // [/CELADON-EDIT] + +/obj/item/clothing/head/helmet/space/hardsuit/security + // [CELADON-EDIT] - CELADON_VOX - WTF у них же есть даже в атласе спрайт... + supports_variations = SNOUTED_VARIATION | VOX_VARIATION + // [/CELADON-EDIT] + +/obj/item/clothing/suit/space/hardsuit/security + // [CELADON-EDIT] - TAJARA, CELADON_RIOL + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION + // [/CELADON-EDIT] + +/obj/item/clothing/suit/space/hardsuit/security/hos + // [CELADON-EDIT] - TAJARA, CELADON_RIOL + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | TAJARA_VARIATION | RIOL_VARIATION + // [/CELADON-EDIT] + +/obj/item/clothing/suit/space/hardsuit/shielded/syndi + armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 40, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 100, "acid" = 100, "wound" = 30) // [CELADON-EDIT] - CELADON_BALANCE + +/obj/item/clothing/head/helmet/space/hardsuit/security/independent + // [CELADON-EDIT] - TAJARA, CELADON_RIOL + supports_variations = VOX_VARIATION | SNOUTED_VARIATION | TAJARA_VARIATION | RIOL_VARIATION + // [/CELADON-EDIT] + +/obj/item/clothing/head/helmet/space/hardsuit/security/independent + // [CELADON-EDIT] - TAJARA, CELADON_RIOL + supports_variations = VOX_VARIATION | SNOUTED_VARIATION | TAJARA_VARIATION | RIOL_VARIATION + // [/CELADON-EDIT] + +/obj/item/clothing/suit/space/hardsuit/security/independent + // [CELADON-EDIT] - TAJARA, CELADON_RIOL + supports_variations = VOX_VARIATION | DIGITIGRADE_VARIATION | TAJARA_VARIATION | RIOL_VARIATION + // [/CELADON-EDIT] + +/obj/item/clothing/suit/space/hardsuit/deathsquad + armor = list("melee" = 80, "bullet" = 80, "laser" = 50, "energy" = 60, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100, "wound" = 60) // [CELADON-EDIT] - CELADON_BALANCE + +/obj/item/clothing/suit/space/swat + armor = list("melee" = 40, "bullet" = 30, "laser" = 30,"energy" = 40, "bomb" = 50, "bio" = 90, "rad" = 20, "fire" = 100, "acid" = 100, "wound" = 20) // [CELADON-EDIT] - CELADON_BALANCE + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + //ERT Clown +/obj/item/clothing/head/helmet/space/hardsuit/ert/clown + name = "emergency response team clown helmet" + desc = "The integrated helmet of an ERT hardsuit, this one is colourful!" + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/spacesuits_helmet.dmi' + mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/spacesuits_helmet_on_mob.dmi' + icon_state = "hardsuit0-ert_clown" + item_state = "hardsuit0-ert_clown" + hardsuit_type = "ert_clown" + +/obj/item/clothing/suit/space/hardsuit/ert/clown + name = "emergency response team clown hardsuit" + desc = "The non-standard issue hardsuit of the ERT, this one is colourful! Offers superb protection against environmental hazards. Does not offer superb protection against a ravaging crew." + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/spacesuits.dmi' + mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/spacesuits_on_mob.dmi' + icon_state = "ert_clown" + item_state = "ert_clown" + helmettype = /obj/item/clothing/head/helmet/space/hardsuit/ert/clown +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/clothing/head/helmet/space/plasmaman/mime + name = "mime envirosuit helmet" + desc = "The make-up is painted on, it's a miracle it doesn't chip. It's not very colourful." + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/spacesuits_helmet.dmi' + mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/spacesuits_helmet_on_mob.dmi' + icon_state = "mime_envirohelm" + item_state = "mime_envirohelm" + visor_icon = "mime_envisor" + +/obj/item/clothing/head/helmet/space/plasmaman/clown + name = "clown envirosuit helmet" + desc = "The make-up is painted on, it's a miracle it doesn't chip. 'HONK!'" + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/spacesuits_helmet.dmi' + mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/spacesuits_helmet_on_mob.dmi' + icon_state = "clown_envirohelm" + item_state = "clown_envirohelm" + visor_icon = "clown_envisor" + smile_state = "clown_smile" +// [/CELADON-ADD] + +/obj/item/clothing/suit/hooded/cloak/drake + armor = list("melee" = 50, "bullet" = 10, "laser" = 40, "energy" = 50, "bomb" = 50, "bio" = 60, "rad" = 50, "fire" = 100, "acid" = 100, "wound" = 50) // [CELADON-EDIT] - CELADON_BALANCE + +/obj/item/clothing/suit/hooded/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TRY_STORAGE_CAN_INSERT, PROC_REF(on_can_insert)) // [CELADON-ADD] - FIXES_HOODED_ICONS + +// [CELADON-REMOVE] - CELADON_BALANCE - Убираем телескопички +/obj/item/clothing/suit/hooded/wintercoat/science/Initialize() + LAZYREMOVE(allowed, /obj/item/melee/classic_baton/telescopic) + return ..() + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/clothing/under/plasmaman/mime + name = "mime envirosuit" + desc = "It's not very colourful." + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/plasmaman.dmi' + mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/plasmaman.dmi' + icon_state = "mime_envirosuit" + item_state = "mime_envirosuit" + +/obj/item/clothing/under/plasmaman/clown + name = "clown envirosuit" + desc = "'HONK!'" + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/plasmaman.dmi' + mob_overlay_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/plasmaman.dmi' + icon_state = "clown_envirosuit" + item_state = "clown_envirosuit" +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/clothing/under/plasmaman/clown/Extinguish(mob/living/carbon/human/H) + if(!istype(H)) + return + + if(H.on_fire) + if(extinguishes_left) + if(next_extinguish > world.time) + return + next_extinguish = world.time + extinguish_cooldown + extinguishes_left-- + H.visible_message(span_warning("[H]'s suit spews out a tonne of space lube!"),span_warning("Your suit spews out a tonne of space lube!")) + H.extinguish_mob() + new /obj/effect/particle_effect/foam(loc) //Truely terrifying. + return 0 +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/clothing/under/plasmaman/mime/skirt //WS edit plasmaman customization + name = "mime enviroskirt" + desc = "It's very colourful on the inside." + icon_state = "mime_enviroskirt" + item_state = "mime_enviroskirt" +// [/CELADON-ADD] + +/datum/round_event_control/fax_spam + max_occurrences = 0 // [CELADON-REMOVE] - NEVER_TEXT_ME_AGAIN - НЕ ПИШИ СЮДА БОЛЬШЕ + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/effect/hallucination/simple/clown + image_icon = 'icons/mob/animal.dmi' + image_state = "clown" + +/obj/effect/hallucination/simple/clown/Initialize(mapload, mob/living/carbon/T, duration) + ..(loc, T) + name = pick(GLOB.clown_names) + QDEL_IN(src,duration) + +/obj/effect/hallucination/simple/clown/scary + image_state = "scary_clown" +// [/CELADON-ADD] + +/datum/crafting_recipe/food/wrap + category = parent_type::category + subcategory = CAT_EGG + +/datum/crafting_recipe/food/chawanmushi + category = parent_type::category + subcategory = CAT_EGG + +/datum/crafting_recipe/food/loadedbakedpotato + category = parent_type::category + subcategory = CAT_MISCFOOD + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/////////////////////////// +//Spookoween Insane Clown// +/////////////////////////// + +///Insane clown mob. Basically a clown that haunts you. +/mob/living/simple_animal/hostile/clown_insane + name = "insane clown" + desc = "Some clowns do not manage to be accepted, and go insane. This is one of them." + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/clown_mobs.dmi' + icon_state = "scary_clown" + icon_living = "scary_clown" + icon_dead = "scary_clown" + icon_gib = "scary_clown" + speak = list("...", ". . .") + maxHealth = 1e6 + health = 1e6 + emote_see = list("silently stares") + unsuitable_atmos_damage = 0 + var/timer + +/mob/living/simple_animal/hostile/clown_insane/Initialize() + . = ..() + status_flags |= GODMODE //Slightly easier to maintain. + +/mob/living/simple_animal/hostile/clown_insane/Destroy() + timer = null + return ..() + +/mob/living/simple_animal/hostile/clown_insane/ex_act() + return + +///Adds a timer to call stalk() on Aggro +/mob/living/simple_animal/hostile/clown_insane/Aggro() + . = ..() + timer = addtimer(CALLBACK(src, PROC_REF(stalk)), 30, TIMER_STOPPABLE|TIMER_UNIQUE) + +/mob/living/simple_animal/hostile/clown_insane/LoseAggro() + . = ..() + if(timer) + deltimer(timer) + timer = null + +///Plays scary noises and adds some timers. +/mob/living/simple_animal/hostile/clown_insane/proc/stalk() + var/mob/living/M = target + if(!istype(M)) + LoseAggro() + return + if(M.stat == DEAD) + playsound(M.loc, 'sound/spookoween/insane_low_laugh.ogg', 100, TRUE) + qdel(src) + return + playsound(M, pick('sound/spookoween/scary_horn.ogg','sound/spookoween/scary_horn2.ogg', 'sound/spookoween/scary_horn3.ogg'), 100, TRUE) + timer = addtimer(CALLBACK(src, PROC_REF(stalk)), 30, TIMER_STOPPABLE|TIMER_UNIQUE) + addtimer(CALLBACK(src, PROC_REF(teleport_to_target)), 12, TIMER_STOPPABLE|TIMER_UNIQUE) + +///Does what's in the name. Teleports to target.loc. Called from a timer. +/mob/living/simple_animal/hostile/clown_insane/proc/teleport_to_target() + if(target && isturf(target.loc)) //Hiding in lockers works to get rid of this thing. + forceMove(target.loc) + +/mob/living/simple_animal/hostile/clown_insane/MoveToTarget() + return + +/mob/living/simple_animal/hostile/clown_insane/AttackingTarget() + return + +/mob/living/simple_animal/hostile/clown_insane/adjustHealth(amount, updating_health = TRUE, forced = FALSE) + . = 0 + if(prob(5)) + playsound(loc, 'sound/spookoween/insane_low_laugh.ogg', 300, TRUE) + +/mob/living/simple_animal/hostile/clown_insane/handle_temperature_damage() + return +// [/CELADON-ADD] + +/obj/item/seeds/banana/Initialize(mapload) + mutatelist |= list(/obj/item/seeds/banana/mime) + return ..() + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +// Mimana - invisible sprites are totally a feature! +/obj/item/seeds/banana/mime + name = "pack of mimana seeds" + desc = "They're seeds that grow into mimana trees. When grown, keep away from mime." + icon = 'icons/obj/hydroponics/seeds.dmi' + growing_icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/growing_fruits.dmi' + icon_state = "seed-mimana" + species = "mimana" + plantname = "Mimana Tree" + product = /obj/item/food/grown/banana/mime + growthstages = 4 + mutatelist = list() + reagents_add = list(/datum/reagent/consumable/nothing = 0.1, /datum/reagent/toxin/mutetoxin = 0.1, /datum/reagent/consumable/nutriment = 0.02) + rarity = 15 + research = PLANT_RESEARCH_TIER_2 + +/obj/item/food/grown/banana/mime + seed = /obj/item/seeds/banana/mime + name = "mimana" + desc = "It's an excellent prop for a mime." + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/harvest.dmi' + lefthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/food_lefthand.dmi' + righthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/food_righthand.dmi' + icon_state = "mimana" + trash_type = /obj/item/grown/bananapeel/mimanapeel + filling_color = "#FFFFEE" + distill_reagent = /datum/reagent/consumable/ethanol/silencer + +/obj/item/grown/bananapeel/mimanapeel + seed = /obj/item/seeds/banana/mime + name = "mimana peel" + desc = "A mimana peel." + icon = 'mod_celadon/_storage_icons/icons/other/clown_mime/harvest.dmi' + lefthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/food_lefthand.dmi' + righthand_file = 'mod_celadon/_storage_icons/icons/other/clown_mime/food_righthand.dmi' + icon_state = "mimana_peel" + item_state = "mimana_peel" +// [/CELADON-ADD] + +/obj/item/seeds/peas/laugh/Initialize(mapload) + reagents_add += list(/datum/reagent/consumable/laughter = 0.05) + return ..() + +/obj/item/food/grown/tomato/blue + distill_reagent = /datum/reagent/consumable/laughter // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/datum/instrument/fun/honk + name = "!!HONK!!" + id = "honk" + real_samples = list("74"='sound/items/bikehorn.ogg') // Cluwne Heaven +// [/CELADON-ADD] + +/get_all_jobs() + return ..() | list("Clown", "Mime") + +// [CELADON-REMOVE] - CELADON_BALANCE - Убираем телескопички +/datum/outfit/job/cmo/New() + LAZYREMOVE(backpack_contents, /obj/item/melee/classic_baton/telescopic) + return ..() + +// [CELADON-REMOVE] - CELADON_BALANCE - Убираем телескопички +/datum/outfit/job/head_of_personnel/New() + LAZYREMOVE(backpack_contents, /obj/item/melee/classic_baton/telescopic) + return ..() + +/obj/machinery/drill/process(seconds_per_tick) + . = ..() + // [CELADON-ADD] - CELADON_FIXES - FIXES_DRILLCLASS - Дополнительная проверка для буров миссии + if(istype(src, /obj/machinery/drill/mission) && our_vein?.currently_spawning) + var/obj/machinery/drill/mission/mission_drill = src + if(mission_drill.num_current >= mission_drill.num_wanted) + our_vein.stop_spawning() + // [/CELADON-ADD] + +/obj/machinery/vending/mining_equipment/Initialize(mapload) + products |= list(/obj/item/clothing/glasses/meson/gar = 2) // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + return ..() + +/obj/structure/vein/classfour + // [CELADON-ADD] - CELADON_FIXES - FIXES_DRILLCLASS - Балансировка жил класса 4 + max_mobs = 4 // Сбалансированное количество мобов (было 6) + spawn_time = 12 SECONDS // Увеличенный интервал спавна (было 8) + wave_length = 30 SECONDS // Уменьшено для более динамичной миссии (было 45) + // [/CELADON-ADD] + +/obj/structure/vein/ice/classfour + // [CELADON-ADD] - CELADON_FIXES - FIXES_DRILLCLASS - Балансировка жил класса 4 (Ice) + max_mobs = 4 // Уменьшено с 6 до 4 + spawn_time = 12 SECONDS // Увеличено с 8 до 12 секунд + wave_length = 30 SECONDS // Уменьшено с 45 до 30 секунд для более динамичной миссии + // [/CELADON-ADD] + +/obj/structure/vein/rockplanet/classfour + // [CELADON-EDIT] - CELADON_FIXES - Балансировка жил класса 4 (Rockplanet) + max_mobs = 4 // Сбалансированное количество мобов (было 6) + spawn_time = 12 SECONDS // Увеличенный интервал спавна (было 8) + wave_length = 30 SECONDS // Уменьшено для более динамичной миссии (было 45) + // [/CELADON-EDIT] + +/obj/item/clothing/suit/hooded/explorer + // [CELADON-EDIT] - CELADON_BALANCE + allowed = list( + /obj/item/flashlight, + /obj/item/tank/internals, + /obj/item/resonator, + /obj/item/mining_scanner, + /obj/item/t_scanner/adv_mining_scanner, + /obj/item/pinpointer/mineral, + /obj/item/gun/energy/kinetic_accelerator, + /obj/item/pickaxe, + /obj/item/kinetic_crusher, + ) + // [/CELADON-EDIT] + +// [CELADON-ADD] +/obj/item/clothing/mask/gas/explorer/legacy + icon = 'mod_celadon/_storage_icons/icons/items/clothing/mask/mask_explorer.dmi' + mob_overlay_icon = 'mod_celadon/_storage_icons/icons/items/clothing/mask/overlay/mask_explorer.dmi' + icon_state = "gas_explorer" + actions_types = list(/datum/action/item_action/adjust) +// [/CELADON-ADD] + +/obj/item/clothing/mask/gas/explorer/attack_self(mob/user) + adjustmask(user) + +/obj/item/clothing/mask/gas/explorer/adjustmask(user) + ..() + // [CELADON-EDIT] - CELADON_FIXES + // w_class = mask_adjusted ? WEIGHT_CLASS_NORMAL : WEIGHT_CLASS_SMALL // CELADON-EDIT - ORIGINAL + w_class = mask_adjusted ? WEIGHT_CLASS_SMALL : WEIGHT_CLASS_NORMAL + // [/CELADON-EDIT] + +/obj/item/clothing/mask/gas/explorer/folded/Initialize() + . = ..() + adjustmask() + +/obj/item/clothing/suit/space/hostile_environment + armor = list("melee" = 70, "bullet" = 40, "laser" = 30, "energy" = 45, "bomb" = 70, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100, "wound" = 50) // [CELADON-EDIT] - CELADON_BALANCE + +/obj/item/kinetic_crusher/examine(mob/living/user) + . = ..() + // [CELADON-ADD] - RETURN_CONTENT_CRUSHER_TROPHY - Возвращаем легенду + for(var/t in trophies) + var/obj/item/crusher_trophy/T = t + . += "It has \a [T] attached, which causes [T.effect_desc()]." + // [/CELADON-ADD] + +/obj/item/kinetic_crusher/attack(mob/living/target, mob/living/carbon/user) + . = ..() + // [CELADON-ADD] - RETURN_CONTENT_CRUSHER_TROPHY - Возвращаем легенду + for(var/t in trophies) + if(!QDELETED(target)) + var/obj/item/crusher_trophy/T = t + T.on_melee_hit(target, user) + // [/CELADON-ADD] + +/obj/item/necromantic_stone/lava/arm_skeleton(mob/living/carbon/human/H) + . = ..() + // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), ITEM_SLOT_FEET) + // [/CELADON-ADD] + +/datum/mission/acquire + desc = "БЛЯТЬ, ОПИСАНИЕ СЛОМАЛОСЬ - СООБЩИТЕ ОБ ЭТОМ СИСТЕМНОМУ АДМИНИСТРАТОРУ!" // [CELADON-EDIT] - CELADON_ECONOMY - Оповещение об ЯВНОЙ ошибке + +/datum/mission/drill/classtwo + value = 4000 // [CELADON-EDIT] - CARGO-REWORK-BALANCE + +/datum/mission/drill/classthree + value = 6000 // [CELADON-EDIT] - CARGO-REWORK-BALANCE + +/datum/crew_manifest/ui_status(mob/user, datum/ui_state/state) + if(!ismob(user) && !user.client) + return UI_CLOSE + if(user.stat != DEAD) + return UI_CLOSE + return UI_INTERACTIVE + +/mob/living/carbon/spray_blood(splatter_direction, splatter_strength = 3) + if((NOBLOOD in dna.species.species_traits)) // [CELADON - ADD] LANIUS + return + return ..() + +/mob/living/basic/bear/polar + mob_trophy = /obj/item/crusher_trophy/bear_paw // [/CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY + +// [CELADON-ADD] - CELADON_EMOTES +/mob/living/carbon/human/proc/get_age_pitch(species_pitch = 85) + return 1.0 + 0.5 * ((species_pitch * 0.35) - age) / (0.94 * species_pitch) +// [/CELADON-ADD] + +/mob/living/carbon/human/mob_negates_gravity() +// [CELADON-EDIT] - CELADON_FIXES + return shoes?.negates_gravity() || ..() +// [/CELADON-EDIT] + +/mob/living/carbon/human/is_exposed(mob/user, target_zone, error_msg) + return TRUE // [CELADON-REMOVE] - NO-HARDER-REPAIR-IPC + +/datum/species/elzuose + exotic_bloodtype = parent_type::exotic_bloodtype // [CELADON-REMOVE] - CELADON_ETHEREAL_FIX - Тип крови им больше не нужен ибо теперь у них жидкое электричество, перенёс в мод mod_celadon\ethereal_fix\code\ethereal.dm + +/datum/action/innate/root + icon_icon = 'mod_celadon/_storage_icons/icons/structures/obj/flora/plants.dmi' // [CELADON-EDIT] - CELADON_FLORA + +/datum/species/ipc + default_features = list("mcolor" = "#7D7D7D", "ipc_screen" = "Static", "ipc_antenna" = "None", "ipc_chassis" = "Morpheus Cyberkinetics (Custom)", "ipc_tail" = "None", "ipc_brain" = "Posibrain", "body_size" = "Normal") // [CELADON-ADD] - CELADON_IPC_HAIR + +/datum/species/kepori + //[CELADON-EDIT] - CELADON_BALANCE_SPECIES - No more PTITZA combat + brutemod = 1.5 + burnmod = 1.5 + speedmod = -0.30 // Было -0.10 + //[/CELADON-EDIT] + +/datum/species/lizard + burnmod = 0.85 // [CELADON-ADD] - CELADON_BALANCE_SPECIES - Даем резист к огню на 15% + +// [CELADIN-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/mob/living/silicon/robot/modules/clown + set_module = /obj/item/robot_module/clown + icon_state = "clown" +// [/CELADIN-ADD] + +/obj/machinery/bot_core/secbot +// [CELADON-EDIT] - QoL +// req_access = list(ACCESS_SECURITY) + req_access = 0 +// [/CELADON-EDIT] + +/mob/living/simple_animal/hostile/alien/queen/large + // [CELADON-ADD] - ALIEN_BALANCE + armour_penetration = 35 + armor = list("melee" = 50, "bullet" = 50, "laser" = 20, "energy" = 50, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = -100, "acid" = 80) + // [CELADON-ADD] + +/mob/living/simple_animal/hostile/human/hermit/survivor/death(gibbed) + . = ..() + if(prob(15)) // [CELADON-ADD] - RETURN_CONTENT_CRUSHER_TROPHY + new /obj/item/crusher_trophy/shiny(loc) + visible_message("You notice a glimmering nugget of shiny metal.") + +// [CELADON-ADD] - RAMZI-RENEGATE +/mob/living/simple_animal/hostile/viscerator/ramzi + faction = list(FACTION_RAMZI_RENEGADE, FACTION_RAMZI) +// [/CELADON-ADD] + +/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner + mob_trophy = parent_type::mob_trophy + crusher_loot = /obj/item/crusher_trophy/miner_eye // [/CELADON-EDIT] + +/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination + mob_trophy = parent_type::mob_trophy + +/mob/living/simple_animal/hostile/megafauna/bubblegum + crusher_loot = /obj/item/crusher_trophy/demon_claws // [/CELADON-EDIT] + +/mob/living/simple_animal/hostile/megafauna/claw/phase2 + // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено и заменено в модуле + mob_trophy = parent_type::mob_trophy + loot = parent_type::loot + // [/CELADON-REMOVE] + +/mob/living/simple_animal/hostile/megafauna/colossus + mob_trophy = parent_type::mob_trophy // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY + crusher_loot = /obj/item/crusher_trophy/blaster_tubes // [/CELADON-EDIT] + +/obj/item/clothing/suit/space/hardsuit/cult/enchanted + armor = list("melee" = 75, "bullet" = 50, "laser" = 30, "energy" = 50, "bomb" = 100, "bio" = 100, "rad" = 80, "fire" = 100, "acid" = 100, "wound" = 50) // [CELADON-EDIT] - CELADON_BALANCE + +/mob/living/simple_animal/hostile/megafauna/demonic_frost_miner + mob_trophy = parent_type::mob_trophy // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY + crusher_loot = /obj/item/crusher_trophy/ice_block_talisman // [/CELADON-EDIT] + +/mob/living/simple_animal/hostile/megafauna/dragon + mob_trophy = parent_type::mob_trophy // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY + crusher_loot = /obj/item/crusher_trophy/ash_spike // [/CELADON-EDIT] + +/mob/living/simple_animal/hostile/megafauna/dragon/lesser + // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено и заменено в модуле + mob_trophy = parent_type::mob_trophy + // [/CELADON-REMOVE] + +/mob/living/simple_animal/hostile/megafauna/hierophant + mob_trophy = parent_type::mob_trophy // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY + crusher_loot = /obj/item/crusher_trophy/vortex_talisman // [/CELADON-EDIT] + +// [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды +/mob/living/simple_animal/hostile/megafauna/spawn_mob_trophy() + return +// [/CELADON-REMOVE] + +/mob/living/simple_animal/hostile/megafauna/wendigo + mob_trophy = parent_type::mob_trophy // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY + crusher_loot = /obj/item/crusher_trophy/demon_claws // [/CELADON-EDIT] + +/mob/living/simple_animal/hostile/asteroid/basilisk/watcher + mob_trophy = parent_type::mob_trophy // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY + crusher_loot = /obj/item/crusher_trophy/watcher_wing // [/CELADON-EDIT] + +/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/magmawing + // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды + mob_trophy = parent_type::mob_trophy + trophy_drop_mod = parent_type::trophy_drop_mod + // [/CELADON-REMOVE] + +/mob/living/simple_animal/hostile/asteroid/basilisk/watcher/icewing + // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды + mob_trophy = parent_type::mob_trophy + trophy_drop_mod = parent_type::trophy_drop_mod + // [/CELADON-REMOVE] + +/mob/living/simple_animal/hostile/asteroid/goliath/beast + mob_trophy = parent_type::mob_trophy // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY + crusher_loot = /obj/item/crusher_trophy/goliath_tentacle // [/CELADON-EDIT] + +/mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient + mob_trophy = parent_type::mob_trophy + +// [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды +/mob/living/simple_animal/hostile/asteroid/hivelord/spawn_mob_trophy() + return +// [/CELADON-REMOVE] + +/mob/living/simple_animal/hostile/asteroid/hivelord/legion + // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды + mob_trophy = parent_type::mob_trophy + // [/CELADON-REMOVE] + +/mob/living/simple_animal/hostile/asteroid/hivelord/legion/dwarf/death(gibbed) + // [CELADON-ADD] - RETURN_CONTENT_CRUSHER_TROPHY + if(prob(75)) + new /obj/item/crusher_trophy/dwarf_skull(loc) + visible_message("One of the [src]'s skulls looks like it survived.") + // [/CELADON-ADD] + return ..() + +/mob/living/simple_animal/hostile/asteroid/hivelord/legion/snow + // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды + mob_trophy = parent_type::mob_trophy + // [/CELADON-REMOVE] + +/mob/living/simple_animal/hostile/asteroid/ice_demon/death(gibbed) + // [CELADON-ADD] - RETURN_CONTENT_CRUSHER_TROPHY + if(prob(10)) + new /obj/item/crusher_trophy/ice_wing(loc) + // [/CELADON-ADD] + return ..() + +/mob/living/simple_animal/hostile/asteroid/old_demon + // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды + trophy_drop_mod = parent_type::trophy_drop_mod + // [/CELADON-REMOVE] + +/mob/living/simple_animal/hostile/asteroid/old_demon/death(gibbed) + // [CELADON-ADD] - RETURN_CONTENT_CRUSHER_TROPHY + if(prob(50)) + new /obj/item/crusher_trophy/ice_crystal(loc) + // [/CELADON-ADD] + return ..() + +/mob/living/simple_animal/hostile/asteroid/ice_whelp + mob_trophy = parent_type::mob_trophy // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY + crusher_loot = /obj/item/crusher_trophy/tail_spike // [/CELADON-EDIT] + +/mob/living/simple_animal/hostile/asteroid/lobstrosity + mob_trophy = parent_type::mob_trophy // [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY + crusher_loot = /obj/item/crusher_trophy/lobster_claw // [/CELADON-EDIT] + +// [CELADON-EDIT] - RETURN_CONTENT_CRUSHER_TROPHY +/mob/living/simple_animal/hostile/asteroid/spawn_mob_trophy() + return + +/mob/living/simple_animal/hostile/asteroid/proc/spawn_crusher_loot() + if(crusher_loot) + butcher_results[crusher_loot] = 1 +// [/CELADON-EDIT] + +/mob/living/simple_animal/hostile/asteroid/wolf + // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды + butcher_results = parent_type::butcher_results + // [/CELADON-REMOVE] + // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды + mob_trophy = parent_type::mob_trophy + // [/CELADON-REMOVE] + +/mob/living/simple_animal/hostile/asteroid/wolf/alpha + // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды + mob_trophy = parent_type::mob_trophy + // [/CELADON-REMOVE] + +/mob/living/simple_animal/hostile/asteroid/elite/broodmother + loot = list(/obj/item/crusher_trophy/broodmother_tongue) // [/CELADON-EDIT] + +/mob/living/simple_animal/hostile/asteroid/elite/broodmother/rage() + . = ..() + childragecall = 1 + +// [CELADON-ADD] - Возвращает взрыв маленьким голиафам +/mob/living/simple_animal/hostile/asteroid/elite/broodmother_child/death() + . = ..() + visible_message(span_warning("[src] explodes!")) + explosion(get_turf(loc),0,0,0,flame_range = 3, adminlog = FALSE) + gib() +// [CELADON-ADD] + +/mob/living/simple_animal/hostile/asteroid/elite/legionnaire + // [CELADON-REMOVE] - RETURN_CONTENT_CRUSHER_TROPHY - Выпилено ради легенды + loot_drop = parent_type::loot_drop + // [/CELADON-REMOVE] + +/obj/item/mod/module/hat_stabilizer/Initialize(mapload) + . = ..() + attachable_hats_list |= typecacheof( + // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + /obj/item/clothing/head/hardhat/reindeer, + /obj/item/clothing/head/sombrero, + /obj/item/clothing/head/rabbitears, + /obj/item/clothing/head/powdered_wig, + // [/CELADON-ADD] + ) + +/obj/overmap + // [CELADON-ADD] - CELADON_OVERMAP_ICON - Это вагабонд насрал + var/obj/token_visuals/move_vec + var/obj/token_visuals/ship_image + +/obj/token_visuals + glide_size = 32 + mouse_opacity = 0 + // [/CELADON-ADD] + +/datum/overmap/event/meteor + // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца + default_color = parent_type::default_color + // [/CELADON-REMOVE] + safe_speed = 3 + meteor_types = list( + /obj/effect/meteor/dust=3, + /obj/effect/meteor/medium=8, + /obj/effect/meteor/big=1, + /obj/effect/meteor/irradiated=3 + ) + primary_ores = list(\ + /obj/item/stack/ore/plasma, + /obj/item/stack/ore/iron, + ) + +/datum/overmap/event/emp + // [CELADON-EDIT] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца + base_icon_state = "emp_moderate_" + // [/CELADON-EDIT] + // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца + default_color = parent_type::default_color + // [/CELADON-REMOVE] + +/datum/overmap/event/flare + // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца + default_color = parent_type::default_color + // [/CELADON-REMOVE] + +/datum/overmap/event/electric + // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца + default_color = parent_type::default_color + // [/CELADON-REMOVE] +// [CELADON-EDIT] - DANGER_STORM + var/max_zap_strike = 8 + var/min_zap_strike = 4 +// [/CELADON-EDIT] + +// [CELADON-EDIT]- DANGER_STORM +/datum/overmap/event/electric/affect_ship(datum/overmap/ship/controlled/S) + if(!(locate(S) in get_nearby_overmap_objects())) + return + var/datum/virtual_level/ship_vlevel = S.shuttle_port.get_virtual_level() + var/turf/source = ship_vlevel.get_side_turf(pick(GLOB.cardinals)) + + var/zap_strike = rand(min_zap_strike, max_zap_strike) + if(!zap_strike) + return + var/obj/machinery/power/cloak/cloaking_system = S.ship_modules[SHIPMODULE_CLOAKING] + if(cloaking_system?.cloak_active) + cloaking_system.set_cloak(FALSE) + cloaking_system.visible_message("[src] is overloaded by the electrical storm and shuts off!") + for(var/i = 1 to zap_strike) + if(!(locate(S) in get_nearby_overmap_objects())) + return + + tesla_zap(source, 32, rand(min_damage, max_damage) * 100, zap_flag) + + for(var/mob/poor_crew as anything in GLOB.player_list) + if(S.shuttle_port.is_in_shuttle_bounds(poor_crew)) + poor_crew.playsound_local(poor_crew, THUNDER_SOUND, rand(min_damage, max_damage)) + + if(i < zap_strike) + sleep(1 SECONDS) +// [/CELADON-EDIT] + +/datum/overmap/event/electric/minor + max_zap_strike = 4 // [CELADON-EDIT] - DANGER_STORM + min_zap_strike = 2 // [CELADON-EDIT] - DANGER_STORM + +/datum/overmap/event/electric/major +// [CELADON-EDIT] - DANGER_STORM + zap_flag = ZAP_MAJOR_STORM_FLAGS + max_zap_strike = 12 + min_zap_strike = 6 +// [/CELADON-EDIT] + +/datum/overmap/event/nebula + // [CELADON-EDIT] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца + token_icon_state = "nebula_1" + base_icon_state = "nebula_1" + // [/CELADON-EDIT] + // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца + default_color = parent_type::default_color + // [/CELADON-REMOVE] + +/datum/overmap/event/meteor/dust + // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца + default_color = parent_type::default_color + // [/CELADON-REMOVE] + +/datum/overmap/event/anomaly + // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца + default_color = parent_type::default_color + // [/CELADON-REMOVE] + +/datum/overmap/event/rad + // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца + default_color = parent_type::default_color + // [/CELADON-REMOVE] + +/datum/overmap/event/meteor/debris + // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца + default_color = parent_type::default_color + // [/CELADON-REMOVE] + safe_speed = 3 // [CELADON-ADD] - CELADON_BALANCE_OVERMAP_EVENTS + +/datum/overmap/event/meteor/debris/alter_token_appearance() + . = ..() + // [CELADON-ADD] - CELADON_BALANCE_OVERMAP_EVENTS + switch(safe_speed) + if (1) + safe_speed = rand(1, 3) + if (3) + safe_speed = rand(3, 5) + if (5) + safe_speed = rand(5, 7) + // [CELADON-ADD] + +/datum/overmap/event/meteor/debris/major + safe_speed = 1 // [CELADON-ADD] - CELADON_BALANCE_OVERMAP_EVENTS + +/datum/overmap/event/meteor/carp + // [CELADON-REMOVE] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца + default_color = parent_type::default_color + // [/CELADON-REMOVE] + +/datum/overmap + // [CELADON-ADD] - OVERMAP SENSORS - Это вагабонд насрал + var/sensor_range = 1 + // [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_OVERMAP_STUFF - Это вагабонд насрал +/obj/overmap + var/skip_alarm = 0 + +/proc/get_pixel_distance(atom/A, atom/B) + var/x_dist = 0 + var/y_dist = 0 + + if(A.x < B.x) + x_dist = (B.x-A.x)*32-A.pixel_w+B.pixel_w + else if(A.x > B.x) + x_dist = (A.x-B.x)*32+A.pixel_w-B.pixel_w + else + if(A.pixel_w < B.pixel_w) + x_dist = B.pixel_w-A.pixel_w + else if(A.pixel_w > B.pixel_w) + x_dist = A.pixel_w-B.pixel_w + + if(A.y < B.y) + y_dist = (B.y-A.y)*32-A.pixel_z+B.pixel_z + else if(A.y > B.y) + y_dist = (A.y-B.y)*32+A.pixel_z-B.pixel_z + else + if(A.pixel_z < B.pixel_z) + y_dist = B.pixel_z-A.pixel_z + else if(A.pixel_z > B.pixel_z) + y_dist = A.pixel_z-B.pixel_z + + return abs(x_dist)+abs(y_dist) +// [/CELADON-ADD] + +/datum/overmap/star/dwarf + // [CELADON-EDIT] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца + token_icon_state = "dwarf" + // [/CELADON-EDIT] + +/datum/overmap/star/dwarf/orange + // [CELADON-ADD] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца + token_icon_state = "dwarf-orange" + // [/CELADON-ADD] + +/datum/overmap/star/dwarf/brown + // [CELADON-EDIT] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца + token_icon_state = "dwarf-brown" + // [/CELADON-EDIT] + +/datum/overmap/star/dwarf/white + // [CELADON-ADD] - CELADON_OVERMAP_ICON - спрайты некросивые получаюца + token_icon_state = "dwarf-white" + // [/CELADON-ADD] + +/datum/overmap/star/medium + token_icon_state = "medium" + +/datum/overmap/star/medium/blue + token_icon_state = "medium-blue" + +/datum/overmap/star/medium/bluewhite + token_icon_state = "medium-bluewhite" + +/datum/overmap/star/medium/white + token_icon_state = "medium-white" + +/datum/overmap/star/medium/orange + token_icon_state = "medium-orange" + +/datum/overmap/star/giant + token_icon_state = "giant" + +/datum/overmap/star/giant/yellow + token_icon_state = "giant-yellow" + +/datum/overmap/star/giant/red + token_icon_state = "giant-red" + +/datum/overmap/star/singularity + token_icon_state = "blackhole" + +/datum/overmap/outpost + hangar_ztraits = list( + ZTRAIT_SUN_TYPE = STATIC_EXPOSED, + ZTRAIT_GRAVITY = STANDARD_GRAVITY, + ZTRAIT_SCAN_DISRUPT = TRUE, // [CELADON-EDIT] - CELADON_SURVEY_HANDHELD + ) + hangar_ztraits = list( + ZTRAIT_SUN_TYPE = STATIC_EXPOSED, + ZTRAIT_GRAVITY = STANDARD_GRAVITY, + ZTRAIT_SCAN_DISRUPT = TRUE, // [CELADON-EDIT] - CELADON_SURVEY_HANDHELD + ) + +/datum/planet_type + // [CELADON-ADD] - CELADON_OVERMAP_ICON - Это вагабонд насрал + var/icon = 'mod_celadon/_storage_icons/icons/assets/overmap/overmap.dmi' + var/pixel_w = 0 + var/pixel_z = 0 + // [/CELADON-ADD] + +/datum/planet_type/lava + icon_state = "volcano" + color = parent_type::color + +/datum/planet_type/ice + icon_state = "ice" + color = parent_type::color + +/datum/planet_type/jungle + icon_state = "jungle" + color = parent_type::color + +/datum/planet_type/rock + color = parent_type::color + +/datum/planet_type/sand + color = parent_type::color + +/datum/planet_type/beach + color = parent_type::color + +/datum/planet_type/waste + color = parent_type::color + +/datum/planet_type/gas_giant + icon = 'mod_celadon/_storage_icons/icons/assets/overmap/overmap_large.dmi' + pixel_w = -8 + pixel_z = -8 + color = parent_type::color + +/datum/overmap/ship/controlled + // [CELADON-ADD] - OVERMAP SENSORS + var/default_sensor_range = 4 + // [/CELADON-ADD] + /// [CELADON-ADD] Таймер, что даёт время на становление пиратами или пацифистами для независимых суден. + COOLDOWN_DECLARE(rename_prefix_cooldown) + /// [/CELADON-ADD] + +/datum/overmap/outpost // Это тут потому-что если верхнее перепишется, то нижнее тоже. Срать вечно 🤙 + var/obj/item/radio/intercom/wideband/radio + // [/CELADON-ADD] + +/datum/overmap/ship/controlled/proc/get_faction() + return source_template.faction + +// [CELADON-ADD] - Well Done act +/obj/item/key/ship/microwave_act(obj/machinery/microwave/M) + well_done = TRUE +// [/CELADON-ADD] + +/datum/overmap/ship + token_icon_state = "ship_point" +// [CELADON-ADD] - CELADON_OVERMAP_STUFF - Это вагабонд насрал + ///For bay overmap + var/x_pixels_moved = 0 + var/y_pixels_moved = 0 + + var/list/position_to_move = list("x" = 0, "y" = 0) + var/list/last_anim = list("x" = 0, "y" = 0) + var/list/vector_to_add = list("x" = 0, "y" = 0) + + var/list/arpa = list() + + var/bow_heading = 0 + var/rotating = 0 + var/rotation_velocity = 0 + + var/skiptickfortrail = 0 + // [CELADON-EDIT] - Убираем предупреждение валидатора; [CELADON-EDIT] - Добавлены ковычки для запуска на 516 +#if DM_VERSION >= 516 + var/list/obj/shiptrail/trails = alist(1 = null, + 2 = null, + 3 = null) +#else + var/list/obj/shiptrail/trails = list(1 = null, + 2 = null, + 3 = null) +#endif + // [/CELADON-EDIT] + +/datum/overmap/ship/proc/check_proximity() +// token.collision_alarm() + var/list/arpa_add = list() + for(var/obj/overmap/rendered/i in orange(4, token)) + calculate_cpa(src, i.parent) + arpa_add |= i.parent + return arpa_add +// [/CELADON-ADD] + +/datum/overmap/ship/process(seconds_per_tick) + if((burn_direction == BURN_STOP && is_still()) || docked_to || docking) + change_heading(BURN_NONE) + return + var/newx = 0 + var/newy = 0 + if(burn_direction == BURN_STOP) + if(speed_x > 0) + newx = -min(speed_x, burn_engines(burn_percentage, seconds_per_tick)) + else + newx = min(-speed_x, burn_engines(burn_percentage, seconds_per_tick)) + if(speed_y > 0) + newy = -min(speed_y, burn_engines(burn_percentage, seconds_per_tick)) + else + newy = min(-speed_y, burn_engines(burn_percentage, seconds_per_tick)) + else + switch(burn_direction) + if(NORTH) + newx = burn_engines(burn_percentage, seconds_per_tick)*sin(bow_heading) + newy = burn_engines(burn_percentage, seconds_per_tick)*cos(bow_heading) + if(SOUTH) + newx = burn_engines(burn_percentage, seconds_per_tick)*sin(bow_heading+180) + newy = burn_engines(burn_percentage, seconds_per_tick)*cos(bow_heading+180) + if(WEST) + newx = burn_engines(burn_percentage, seconds_per_tick)*sin(bow_heading+270) + newy = burn_engines(burn_percentage, seconds_per_tick)*cos(bow_heading+270) + if(EAST) + newx = burn_engines(burn_percentage, seconds_per_tick)*sin(bow_heading+90) + newy = burn_engines(burn_percentage, seconds_per_tick)*cos(bow_heading+90) + + adjust_speed(newx, newy) + +/obj/item/ammo_casing/a300/trac + bullet_skin = parent_type::bullet_skin + +/obj/item/ammo_box/magazine/ammo_stack +// [CELADON-ADD] - ADD_MOD_BULLET_STACK - Загружает путь если из мода, иначе дефолтный + var/base_icon = null +// [/CELADON-ADD] + item_flags = NO_PIXEL_RANDOM_DROP | NO_ROTATE_RANDOM_THROW // [CELADON-EDIT] + +// [CELADON-ADD] - HOTKEY-RELOAD - Возвращает переключение режимов стрельбы на кнопку перезарядки +/obj/item/gun/energy/unique_action(mob/living/user) + if(ammo_type.len > 1) + select_fire(user) + update_appearance() +// [/CELADON-ADD] + +/obj/item/gun/energy/unsafe_shot(target) + // [CELADON-ADD] - FIXES_LOCKER_RECHARGE_ENERGYGUN + if(!can_shoot()) + return + // [/CELADON-ADD] + return ..() + +/obj/item/gun/ballistic/automatic/powered/gauss + lefthand_file = 'mod_celadon/_storage_icons/icons/items/weapons/in_hands/gauss_hands_left.dmi' // [CELADON-EDIT] + righthand_file = 'mod_celadon/_storage_icons/icons/items/weapons/in_hands/gauss_hands_right.dmi' // [/CELADON-EDIT] + mob_overlay_icon = 'mod_celadon/_storage_icons/icons/items/weapons/overlay/pgauss.dmi' // [/CELADON-EDIT] + item_state = "gauss" // [/CELADON-EDIT] + +/obj/item/minigunpack/process(seconds_per_tick) + overheat = max(0, overheat - heat_diffusion * seconds_per_tick) // [CELADON-EDIT] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNSS +/datum/reagent/consumable/banana/on_mob_life(mob/living/carbon/M) + if((ishuman(M) && M.job == "Clown") || ismonkey(M)) + M.heal_bodypart_damage(1,1, 0) + . = 1 + ..() +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/datum/reagent/consumable/nothing/on_mob_life(mob/living/carbon/M) + if(ishuman(M) && M.mind?.miming) + M.silent = max(M.silent, MIMEDRINK_SILENCE_DURATION) + M.heal_bodypart_damage(1,1) + . = 1 + ..() + +/datum/reagent/consumable/laughter + name = "Laughter" + description = "Some say that this is the best medicine, but recent studies have proven that to be untrue." + metabolization_rate = INFINITY + color = "#FF4DD2" + taste_description = "laughter" + +/datum/reagent/consumable/laughter/on_mob_life(mob/living/carbon/M) + M.emote("laugh") + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "chemical_laughter", /datum/mood_event/chemical_laughter) + ..() + +/datum/reagent/consumable/superlaughter + name = "Super Laughter" + description = "Funny until you're the one laughing." + metabolization_rate = 1.5 * REAGENTS_METABOLISM + color = "#FF4DD2" + taste_description = "laughter" + +/datum/reagent/consumable/superlaughter/on_mob_life(mob/living/carbon/M) + if(prob(30)) + M.visible_message(span_danger("[M] bursts out into a fit of uncontrollable laughter!"), span_userdanger("You burst out in a fit of uncontrollable laughter!")) + M.Stun(5) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "chemical_laughter", /datum/mood_event/chemical_superlaughter) + ..() +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNSS +/datum/reagent/consumable/clownstears + name = "Clown's Tears" + description = "The sorrow and melancholy of a thousand bereaved clowns, forever denied their Honkmechs." + nutriment_factor = 5 * REAGENTS_METABOLISM + color = "#eef442" // rgb: 238, 244, 66 + taste_description = "mournful honking" +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_QUIRKS +/datum/reagent/toxin/mindbreaker/on_mob_life(mob/living/carbon/M) + if(!M.has_quirk(/datum/quirk/insanity)) + M.hallucination += 5 + return ..() +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/datum/reagent/toxin/mimesbane + name = "Mime's Bane" + description = "A nonlethal neurotoxin that interferes with the victim's ability to gesture." + silent_toxin = TRUE + color = "#F0F8FF" // rgb: 240, 248, 255 + toxpwr = 0 + taste_description = "stillness" + +/datum/reagent/toxin/mimesbane/on_mob_metabolize(mob/living/L) + ADD_TRAIT(L, TRAIT_EMOTEMUTE, type) + +/datum/reagent/toxin/mimesbane/on_mob_end_metabolize(mob/living/L) + REMOVE_TRAIT(L, TRAIT_EMOTEMUTE, type) +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/datum/chemical_reaction/laughter + results = list(/datum/reagent/consumable/laughter = 10) // Fuck it. I'm not touching this one. + required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/banana = 1) +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/datum/chemical_reaction/mimesbane + results = list(/datum/reagent/toxin/mimesbane = 3) + required_reagents = list(/datum/reagent/uranium/radium = 1, /datum/reagent/toxin/mutetoxin = 1, /datum/reagent/consumable/nothing = 1) +// [CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/reagent_containers/borghypo/clown + name = "laughter injector" + desc = "Keeps the crew happy and productive!" + reagent_ids = list(/datum/reagent/consumable/laughter) + accepts_reagent_upgrades = FALSE + +/obj/item/reagent_containers/borghypo/clown/hacked + name = "laughter injector" + desc = "Keeps the crew so happy they don't work!" + reagent_ids = list(/datum/reagent/consumable/superlaughter) + accepts_reagent_upgrades = FALSE +// [CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/reagent_containers/glass/bottle/pierrot_throat + name = "Pierrot's Throat culture bottle" + desc = "A small bottle. Contains H0NI<42 virion culture in synthblood medium." + spawned_disease = /datum/disease/pierrot_throat +// [CELADON-ADD] + +/obj/item/reagent_containers/hypospray/medipen/oculine + custom_price = 70 // [CELADON-EDIT] - OUTPOST_MED_BALANCE // custom_price = 100 + +/obj/item/reagent_containers/hypospray/medipen/inacusiate + custom_price = 70 // [CELADON-EDIT] - OUTPOST_MED_BALANCE // custom_price = 100 + +/obj/item/reagent_containers/hypospray/medipen/atropine + custom_price = 75 // [CELADON-EDIT] - OUTPOST_MED_BALANCE // custom_price = 100 + +/obj/item/reagent_containers/hypospray/medipen/diphen + custom_price = 50 // [CELADON-ADD] - OUTPOST_MED_BALANCE + +/obj/item/reagent_containers/hypospray/medipen/cureall + custom_price = 50 // [CELADON-ADD] - OUTPOST_MED_BALANCE + +/obj/item/reagent_containers/hypospray/medipen/mannitol + custom_price = 70 // [CELADON-ADD] - OUTPOST_MED_BALANCE + +/obj/item/reagent_containers/hypospray/medipen/neurine + custom_price = 70 // [CELADON-ADD] - OUTPOST_MED_BALANCE + +/datum/design/leftarm + // [CELADON-EDIT] - TAJARA, CELADON_RIOL + // category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL) // CELADON-EDIT - ORIGINAL + category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL,SPECIES_TAJARA,SPECIES_RIOL) + // [/CELADON-EDIT] + +/datum/design/rightarm + // [CELADON-EDIT] - TAJARA, CELADON_RIOL + // category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL) // CELADON-EDIT - ORIGINAL + category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL,SPECIES_TAJARA,SPECIES_RIOL) + // [/CELADON-EDIT] + +/datum/design/leftleg + // [CELADON-EDIT] - TAJARA, CELADON_RIOL + // category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL) // CELADON-EDIT - ORIGINAL + category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL,SPECIES_TAJARA,SPECIES_RIOL) + // [/CELADON-EDIT] + +/datum/design/rightleg + // [CELADON-EDIT] - TAJARA, CELADON_RIOL + // category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL) // CELADON-EDIT - ORIGINAL + category = list("initial",SPECIES_HUMAN,SPECIES_SARATHI,SPECIES_MOTH,SPECIES_PLASMAMAN,SPECIES_ELZUOSE,SPECIES_RACHNID,SPECIES_VOX,SPECIES_KEPORI,SPECIES_ABDUCTOR,SPECIES_FLYPERSON,SPECIES_POD,SPECIES_SKELETON,SPECIES_SNAIL,SPECIES_TAJARA,SPECIES_RIOL) + // [/CELADON-EDIT] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/datum/design/board/honker_main + name = "\"H.O.N.K\" Central Control module" + desc = "Allows for the construction of a \"H.O.N.K\" Central Control module." + id = "honker_main" + build_path = /obj/item/circuitboard/mecha/honker/main + category = list("Exosuit Modules") + +/datum/design/board/honker_peri + name = "\"H.O.N.K\" Peripherals Control module" + desc = "Allows for the construction of a \"H.O.N.K\" Peripheral Control module." + id = "honker_peri" + build_path = /obj/item/circuitboard/mecha/honker/peripherals + category = list("Exosuit Modules") + +/datum/design/board/honker_targ + name = "\"H.O.N.K\" Weapons & Targeting Control module" + desc = "Allows for the construction of a \"H.O.N.K\" Weapons & Targeting Control module." + id = "honker_targ" + build_path = /obj/item/circuitboard/mecha/honker/targeting + category = list("Exosuit Modules") +// [CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +//H.O.N.K +/datum/design/honk_chassis + name = "Exosuit Chassis (\"H.O.N.K\")" + id = "honk_chassis" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/chassis/honker + materials = list(/datum/material/iron=20000) + construction_time = 100 + category = list("H.O.N.K") + +/datum/design/honk_torso + name = "Exosuit Torso (\"H.O.N.K\")" + id = "honk_torso" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/honker_torso + materials = list(/datum/material/iron=20000,/datum/material/glass = 10000,/datum/material/hellstone=10000) + construction_time = 300 + category = list("H.O.N.K") + +/datum/design/honk_head + name = "Exosuit Head (\"H.O.N.K\")" + id = "honk_head" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/honker_head + materials = list(/datum/material/iron=10000,/datum/material/glass = 5000,/datum/material/hellstone=5000) + construction_time = 200 + category = list("H.O.N.K") + +/datum/design/honk_left_arm + name = "Exosuit Left Arm (\"H.O.N.K\")" + id = "honk_left_arm" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/honker_left_arm + materials = list(/datum/material/iron=15000,/datum/material/hellstone=5000) + construction_time = 200 + category = list("H.O.N.K") + +/datum/design/honk_right_arm + name = "Exosuit Right Arm (\"H.O.N.K\")" + id = "honk_right_arm" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/honker_right_arm + materials = list(/datum/material/iron=15000,/datum/material/hellstone=5000) + construction_time = 200 + category = list("H.O.N.K") + +/datum/design/honk_left_leg + name = "Exosuit Left Leg (\"H.O.N.K\")" + id = "honk_left_leg" + build_type = MECHFAB + build_path =/obj/item/mecha_parts/part/honker_left_leg + materials = list(/datum/material/iron=20000,/datum/material/hellstone=5000) + construction_time = 200 + category = list("H.O.N.K") + +/datum/design/honk_right_leg + name = "Exosuit Right Leg (\"H.O.N.K\")" + id = "honk_right_leg" + build_type = MECHFAB + build_path = /obj/item/mecha_parts/part/honker_right_leg + materials = list(/datum/material/iron=20000,/datum/material/hellstone=5000) + construction_time = 200 + category = list("H.O.N.K") +// [CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/datum/design/borg_transform_clown + name = "Cyborg Upgrade (Clown Module)" + id = "borg_transform_clown" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/transform/clown + materials = list(/datum/material/iron = 15000, /datum/material/glass = 15000, /datum/material/hellstone = 1000) + construction_time = 120 + category = list("Cyborg Upgrade Modules") +// [CELADON-ADD]S + +// [CELADON-ADD] - OMNI_TOOLS +/datum/design/healthanalyzer_range + name = "Long-range Health Analyzer" + desc = "A handheld body scanner capable of accurately detecting the patient's vital signs from a distance." + id = "healthanalyzer_ranged" + build_path = /obj/item/healthanalyzer/ranged + build_type = PROTOLATHE + materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500, /datum/material/silver = 2000) + category = list("Medical Designs") + departmental_flags = DEPARTMENTAL_FLAG_MEDICAL +// [/CELADON-ADD] + +/datum/techweb_node/basic_medical +// [CELADON-EDIT] - OMNI_TOOLS +// design_ids = list("cybernetic_liver", "cybernetic_heart", "cybernetic_lungs", "cybernetic_stomach", "scalpel", "circular_saw", "bonesetter", "surgical_tape", "surgicaldrill", "retractor", "cautery", "hemostat", +// "syringe", "plumbing_rcd", "beaker", "large_beaker", "xlarge_beaker", "dropper", "defibmountdefault", "portable_chem_mixer") + design_ids = list("cybernetic_liver", "cybernetic_heart", "cybernetic_lungs", "cybernetic_stomach", "scalpel", "circular_saw", "bonesetter", "surgical_tape", "surgicaldrill", "retractor", "cautery", "hemostat", + "syringe", "healthanalyzer", "plumbing_rcd", "beaker", "large_beaker", "xlarge_beaker", "dropper", "defibmountdefault", "portable_chem_mixer") +// [/CELADON-EDIT] + +/datum/techweb_node/biotech +// [CELADON-EDIT] - OMNI_TOOLS +// design_ids = list("sleeper", "chem_heater", "chem_master", "pandemic", "defibrillator", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer", "medigel", "med_spray_bottle", "chem_pack", "blood_pack", "medical_kiosk", "crewpinpointerprox", "medipen_refiller", "prosthetic_l_arm", "prosthetic_r_arm", "prosthetic_l_leg", "prosthetic_r_leg", "kprosthetic_l_arm", "kprosthetic_r_arm", "kprosthetic_l_leg", "kprosthetic_r_leg", "vprosthetic_l_arm", "vprosthetic_r_arm", "vprosthetic_l_leg", "vprosthetic_r_leg", "lprosthetic_l_arm", "lprosthetic_r_arm", "lprosthetic_l_leg", "lprosthetic_r_leg") + design_ids = list("sleeper", "chem_heater", "chem_master", "pandemic", "defibrillator", "defibmount", "operating", "soda_dispenser", "beer_dispenser", "healthanalyzer_ranged", "med_spray_bottle", "chem_pack", "blood_pack", "medical_kiosk", "crewpinpointerprox", "medipen_refiller", "prosthetic_l_arm", "prosthetic_r_arm", "prosthetic_l_leg", "prosthetic_r_leg", "kprosthetic_l_arm", "kprosthetic_r_arm", "kprosthetic_l_leg", "kprosthetic_r_leg", "vprosthetic_l_arm", "vprosthetic_r_arm", "vprosthetic_l_leg", "vprosthetic_r_leg", "lprosthetic_l_arm", "lprosthetic_r_arm", "lprosthetic_l_leg", "lprosthetic_r_leg") +// [/CELADON-EDIT] + +/datum/techweb_node/comp_recordkeeping +// [CELADON-ADD] - RETURN_SURVEY +// design_ids = list("secdata", "med_data", "prisonmanage", "vendor", "automated_announcement", "design_disk_elite") + design_ids = list("secdata", "med_data", "prisonmanage", "vendor", "automated_announcement", "survey-handheld-rnd-exp", "design_disk_elite") +// [/CELADON-ADD] + +/datum/techweb_node/exp_tools +// [CELADON-EDIT] - OMNI_TOOLS +// design_ids = list("jawsoflife", "handdrill", "laserscalpel", "mechanicalpinches", "searingtool") + design_ids = list("jawsoflife", "handdrill", "tricorder", "adv_gas_analazyer", "laserscalpel", "mechanicalpinches", "searingtool") +// [/CELADON-EDIT] + +/datum/techweb_node/basic_shuttle_tech + // [CELADON-EDIT] - CELADON_BALANCE - Трогаем РнД + // research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000) // CELADON-EDIT - ORIGINAL + // export_price = 5000 // CELADON-EDIT - ORIGINAL + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) + export_price = 2500 + // [/CELADON-EDIT] + +/obj/structure/lavaland/ash_walker/deconstruct(disassembled) + // [CELADON-ADD] - RETURN_CONTENT + new /obj/effect/collapse(loc) + // [/CELADON-ADD] + return ..() + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/effect/proc_holder/spell/voice_of_god/clown + name = "Voice of Clown" + desc = "Speak with an incredibly funny voice, startling people into obeying you for a brief moment." + power_mod = 0.1 + cooldown_mod = 0.5 + spans = list("clown") + speech_sound = 'sound/spookoween/scary_horn2.ogg' +// [/CELADON-ADD] + +/obj/item/bodypart/head/jelly + is_dimorphic = FALSE // [CELADON-EDIT] - CELADON_SPECIES_CHANGES + +/obj/item/organ/stomach/cybernetic + metabolism_efficiency = 0.07 + +/obj/item/organ/tongue/Initialize(mapload) + . = ..() + var/static/list/additional_languages = typecacheof(list( + // [CELADON-ADD] - CELADON_ITEMS + /datum/language/elysm, + /datum/language/alquadim, + /datum/language/thayoss, + /datum/language/fuyo, + // [/CELADON-ADD] + )) + languages_possible |= additional_languages + +/obj/item/organ/tongue/vox + // [CELADON-ADD] - CELADON_ACCENTS_ADD + modifies_speech = TRUE + // [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_ACCENTS_ADD - Добавляем акцент воксам +/obj/item/organ/tongue/vox/handle_speech(datum/source, list/speech_args) + if(speech_args[SPEECH_LANGUAGE] == /datum/language/vox_pidgin) + return + + var/static/regex/vox_kk = new("k+", "g") + var/static/regex/vox_KK = new("K+", "g") + var/static/regex/vox_ru_kk = new("к+", "g") + var/static/regex/vox_ru_KK = new("К+", "g") + + var/static/regex/vox_ch = new("ch+", "g") + var/static/regex/vox_CH = new("ch+", "g") + var/static/regex/vox_ru_ch = new("ч+", "g") + var/static/regex/vox_ru_CH = new("Ч+", "g") + + var/message = speech_args[SPEECH_MESSAGE] + if(message[1] != "*") + if(prob(90)) + message = vox_kk.Replace(message, "kik") + message = vox_KK.Replace(message, "Kik") + message = vox_ru_kk.Replace_char(message, "кик") + message = vox_ru_KK.Replace_char(message, "Кик") + if(prob(90)) + message = vox_ch.Replace(message, "chich") + message = vox_CH.Replace(message, "Chich") + message = vox_ru_ch.Replace_char(message, "чич") + message = vox_ru_CH.Replace_char(message, "Чич") + speech_args[SPEECH_MESSAGE] = message +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/obj/item/uplink/clownop/Initialize() + . = ..() + var/datum/component/uplink/hidden_uplink = GetComponent(/datum/component/uplink) + hidden_uplink.set_gamemode(/datum/game_mode/nuclear/clown_ops) +// [/CELADON-ADD] + +/datum/uplink_item/bundles_TC/contract_kit + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/bundles_TC/bundle_A + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/bundles_TC/bundle_B + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +// [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS +/datum/uplink_item/dangerous/pie_cannon + name = "Banana Cream Pie Cannon" + desc = "A special pie cannon for a special clown, this gadget can hold up to 20 pies and automatically fabricates one every two seconds!" + cost = 10 + item = /obj/item/pneumatic_cannon/pie/selfcharge + surplus = 0 + include_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/dangerous/bananashield + name = "Bananium Energy Shield" + desc = "A clown's most powerful defensive weapon, this personal shield provides near immunity to ranged energy attacks \ + by bouncing them back at the ones who fired them. It can also be thrown to bounce off of people, slipping them, \ + and returning to you even if you miss. WARNING: DO NOT ATTEMPT TO STAND ON SHIELD WHILE DEPLOYED, EVEN IF WEARING ANTI-SLIP SHOES." + item = /obj/item/shield/energy/bananium + cost = 16 + surplus = 0 + include_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/dangerous/clownsword + name = "Bananium Energy Sword" + desc = "An energy sword that deals no damage, but will slip anyone it contacts, be it by melee attack, thrown \ + impact, or just stepping on it. Beware friendly fire, as even anti-slip shoes will not protect against it." + item = /obj/item/melee/energy/sword/bananium + cost = 3 + surplus = 0 + include_modes = list(/datum/game_mode/nuclear/clown_ops) +// [/CELADON-EDIT] + +/datum/uplink_item/dangerous/doublesword + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/dangerous/sword + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/dangerous/pistol + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/dangerous/revolver + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/dangerous/foamsmg + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/dangerous/foammachinegun + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/stealthy_weapons/combatglovesplus + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/stealthy_weapons/cqc + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/stealthy_weapons/martialarts + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/stealthy_weapons/crossbow + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/stealthy_weapons/sleepy_pen + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/stealthy_weapons/suppressor + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/ammo/pistol + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/ammo/pistolap + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/ammo/pistolhp + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/ammo/pistolfire + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/ammo/revolver + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/ammo/bioterror + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/ammo/tec9 + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/explosives/bioterrorfoam + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/explosives/buzzkill + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/explosives/virus_grenade + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/explosives/syndicate_detonator + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) S// [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/explosives/syndicate_minibomb +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + exclude_modes = list(/datum/game_mode/nuclear/clown_ops) + +/datum/uplink_item/explosives/tearstache + name = "Teachstache Grenade" + desc = "A teargas grenade that launches sticky moustaches onto the face of anyone not wearing a clown or mime mask. The moustaches will \ + remain attached to the face of all targets for one minute, preventing the use of breath masks and other such devices." + item = /obj/item/grenade/chem_grenade/teargas/moustache + cost = 3 + surplus = 0 + include_modes = list(/datum/game_mode/nuclear/clown_ops) +// [/CELADON-EDIT] + +/datum/uplink_item/explosives/viscerators + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/datum/uplink_item/support/clown_reinforcement + name = "Clown Reinforcements" + desc = "Call in an additional clown to share the fun, equipped with full starting gear, but no telecrystals." + item = /obj/item/antag_spawner/nuke_ops/clown + cost = 20 + include_modes = list(/datum/game_mode/nuclear/clown_ops) + restricted = TRUE +// [/CELADON-ADD] + +/datum/uplink_item/stealthy_tools/chameleon + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/stealthy_tools/mulligan + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/stealthy_tools/syndigaloshes + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/suits/infiltrator_bundle + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/suits/hardsuit + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //you can't buy it in nuke, because the elite hardsuit costs the same while being better //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/suits/hardsuit/elite + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/suits/hardsuit/shielded + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/device_tools/magboots + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/device_tools/failsafe + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/device_tools/medgun + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/device_tools/medkit + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/device_tools/guerillagloves + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/race_restricted + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/role_restricted + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/datum/uplink_item/role_restricted/pie_cannon + name = "Banana Cream Pie Cannon" + desc = "A special pie cannon for a special clown, this gadget can hold up to 20 pies and automatically fabricates one every two seconds!" + cost = 10 + item = /obj/item/pneumatic_cannon/pie/selfcharge + restricted_roles = list("Clown") + surplus = 0 //No fun unless you're the clown! +// [//CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/datum/uplink_item/role_restricted/clumsinessinjector //clown ops can buy this too, but it's in the pointless badassery section for them + name = "Clumsiness Injector" + desc = "Inject yourself with this to become as clumsy as a clown... or inject someone ELSE with it to make THEM as clumsy as a clown. Useful for clowns who wish to reconnect with their former clownish nature or for clowns who wish to torment and play with their prey before killing them." + item = /obj/item/dnainjector/clumsymut + cost = 1 + restricted_roles = list("Clown") + illegal_tech = FALSE +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/datum/uplink_item/role_restricted/clowncar + name = "Clown Car" + desc = "The Clown Car is the ultimate transportation method for any worthy clown! \ + Simply insert your bikehorn and get in, and get ready to have the funniest ride of your life! \ + You can ram any spacemen you come across and stuff them into your car, kidnapping them and locking them inside until \ + someone saves them or they manage to crawl out. Be sure not to ram into any walls or vending machines, as the springloaded seats \ + are very sensitive. Now with our included lube defense mechanism which will protect you against any angry shitcurity! \ + Premium features can be unlocked with a cryptographic sequencer!" + item = /obj/vehicle/sealed/car/clowncar + cost = 20 + restricted_roles = list("Clown") +// [/CELADON-ADD] + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/datum/uplink_item/role_restricted/mimery + name = "Guide to Advanced Mimery Series" + desc = "The classical two part series on how to further hone your mime skills. Upon studying the series, the user should be able to make 3x1 invisible walls, and shoot bullets out of their fingers. \ + Obviously only works for Mimes." + cost = 12 + item = /obj/item/storage/box/syndie_kit/mimery + restricted_roles = list("Mime") + surplus = 0 +// [/CELADON-ADD] + +/datum/uplink_item/badass/costumes + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +/datum/uplink_item/badass/costumes/clown + name = "Clown Costume" + desc = "Nothing is more terrifying than clowns with fully automatic weaponry." + item = /obj/item/storage/backpack/duffelbag/clown/syndie +// [/CELADON-ADD] + +/datum/uplink_item/badass/clownopclumsinessinjector //clowns can buy this too, but it's in the role-restricted items section for them + name = "Clumsiness Injector" + desc = "Inject yourself with this to become as clumsy as a clown... or inject someone ELSE with it to make THEM as clumsy as a clown. Useful for clown operatives who wish to reconnect with their former clownish nature or for clown operatives who wish to torment and play with their prey before killing them." + item = /obj/item/dnainjector/clumsymut + cost = 1 + include_modes = list(/datum/game_mode/nuclear/clown_ops) + illegal_tech = FALSE + +/datum/uplink_item/bundles_TC/surplus + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //exclude_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +/datum/uplink_item/dangerous/bioterror + include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //include_modes = list(/datum/game_mode/nuclear) // [CELADON-EDIT] - CELADON_RETURN_CONTENT_CLOWNS + +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS +//CLOWN CAR ACTION DATUMS +/datum/action/vehicle/sealed/horn + name = "Honk Horn" + desc = "Honk your classy horn." + button_icon_state = "car_horn" + var/hornsound = 'sound/items/carhorn.ogg' + var/last_honk_time + +/datum/action/vehicle/sealed/horn/Trigger() + if(world.time - last_honk_time > 20) + vehicle_entered_target.visible_message(span_danger("[vehicle_entered_target] loudly honks!")) + to_chat(owner, span_notice("You press the vehicle's horn.")) + playsound(vehicle_entered_target, hornsound, 75) + last_honk_time = world.time + +/datum/action/vehicle/sealed/horn/clowncar/Trigger() + if(world.time - last_honk_time > 20) + vehicle_entered_target.visible_message(span_danger("[vehicle_entered_target] loudly honks!")) + to_chat(owner, span_notice("You press the vehicle's horn.")) + last_honk_time = world.time + if(vehicle_target.inserted_key) + vehicle_target.inserted_key.attack_self(owner) //The key plays a sound + else + playsound(vehicle_entered_target, hornsound, 75) + +/datum/action/vehicle/sealed/DumpKidnappedMobs + name = "Dump Kidnapped Mobs" + desc = "Dump all objects and people in your car on the floor." + button_icon_state = "car_dump" + +/datum/action/vehicle/sealed/DumpKidnappedMobs/Trigger() + vehicle_entered_target.visible_message(span_danger("[vehicle_entered_target] starts dumping the people inside of it.")) + vehicle_entered_target.DumpSpecificMobs(VEHICLE_CONTROL_KIDNAPPED) + + +/datum/action/vehicle/sealed/RollTheDice + name = "Press Colorful Button" + desc = "Press one of those colorful buttons on your display panel!" + button_icon_state = "car_rtd" + +/datum/action/vehicle/sealed/RollTheDice/Trigger() + if(istype(vehicle_entered_target, /obj/vehicle/sealed/car/clowncar)) + var/obj/vehicle/sealed/car/clowncar/C = vehicle_entered_target + C.RollTheDice(owner) + +/datum/action/vehicle/sealed/Cannon + name = "Toggle Siege Mode" + desc = "Destroy them with their own fodder!" + button_icon_state = "car_cannon" + +/datum/action/vehicle/sealed/Cannon/Trigger() + if(istype(vehicle_entered_target, /obj/vehicle/sealed/car/clowncar)) + var/obj/vehicle/sealed/car/clowncar/C = vehicle_entered_target + if(C.cannonbusy) + to_chat(owner, span_notice("Please wait for the vehicle to finish its current action first.")) + C.ToggleCannon() + +/datum/action/vehicle/sealed/Thank + name = "Thank the Clown Car Driver" + desc = "They're just doing their job." + button_icon_state = "car_thanktheclown" + var/last_thank_time + +/datum/action/vehicle/sealed/Thank/Trigger() + if(istype(vehicle_entered_target, /obj/vehicle/sealed/car/clowncar)) + var/obj/vehicle/sealed/car/clowncar/C = vehicle_entered_target + if(world.time >= last_thank_time + 60) + var/mob/living/carbon/human/clown = pick(C.return_drivers()) + owner.say("Thank you for the fun ride, [clown.name]!") + last_thank_time = world.time + C.ThanksCounter() +// [/CELADON-ADD] + +/obj/vehicle/sealed/car/generate_actions() + . = ..() +// [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + if(car_traits & CAN_KIDNAP) + initialize_controller_action_type(/datum/action/vehicle/sealed/DumpKidnappedMobs, VEHICLE_CONTROL_DRIVE) +// [/CELADON-ADD] + +/obj/machinery/vending + // [CELADON-ADD] - VENDING_CASH - Добавляем вендингам аккаунт для денег + var/datum/bank_account/vending/bank_account + // [/CELADON-ADD] + +/obj/machinery/vending/autodrobe/Initialize(mapload) + products |= list( + // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + /obj/item/clothing/suit/chickensuit = 1, + /obj/item/clothing/head/chicken = 1, + /obj/item/clothing/head/beret/vintage = 1, + /obj/item/clothing/head/beret/archaic = 1, + /obj/item/clothing/glasses/monocle =1, + /obj/item/clothing/head/bowler = 1, + /obj/item/clothing/head/plaguedoctorhat = 1, + /obj/item/clothing/suit/imperium_monk = 1, + /obj/item/clothing/suit/chaplainsuit/holidaypriest = 1, + /obj/item/clothing/suit/chaplainsuit/whiterobe = 1, + /obj/item/clothing/head/wizard/marisa/fake = 1, + /obj/item/clothing/suit/wizrobe/marisa/fake = 1, + /obj/item/clothing/head/witchwig = 1, + /obj/item/clothing/suit/wizrobe/fake = 1, + /obj/item/clothing/head/wizard/fake = 1, + /obj/item/clothing/head/rabbitears =1, + /obj/item/clothing/head/sombrero = 1, + /obj/item/clothing/head/sombrero/green = 1, + /obj/item/clothing/suit/poncho = 1, + /obj/item/clothing/suit/poncho/green = 1, + /obj/item/clothing/suit/poncho/red = 1, + /obj/item/clothing/suit/whitedress = 1, + /obj/item/clothing/head/jester = 1, + /obj/item/clothing/suit/hooded/ian_costume = 1, + /obj/item/clothing/suit/hooded/bee_costume = 1, + /obj/item/clothing/head/cueball = 1, + /obj/item/clothing/head/delinquent = 1, + /obj/item/clothing/head/shrine_wig = 1, + /obj/item/clothing/suit/shrine_maiden = 1, + /obj/item/clothing/suit/changshan_red = 1, + /obj/item/clothing/suit/changshan_blue = 1, + /obj/item/clothing/suit/cheongsam_red = 1, + /obj/item/clothing/suit/cheongsam_blue = 1, + /obj/item/clothing/head/powdered_wig = 1, + /obj/item/clothing/glasses/sunglasses/garb = 2, + /obj/item/clothing/under/rank/civilian/clown/blue = 1, + /obj/item/clothing/under/rank/civilian/clown/green = 1, + /obj/item/clothing/under/rank/civilian/clown/yellow = 1, + /obj/item/clothing/under/rank/civilian/clown/orange = 1, + /obj/item/clothing/under/rank/civilian/clown/purple = 1, + /obj/item/clothing/mask/gas/sexyclown = 1, + /obj/item/clothing/under/rank/civilian/clown/sexy = 1, + /obj/item/clothing/mask/gas/sexymime = 1, + /obj/item/clothing/under/rank/civilian/clown/jester = 1, + // [/CELADON-ADD] + // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + /obj/item/clothing/under/rank/civilian/mime/sexy = 1, + /obj/item/clothing/under/rank/civilian/mime/skirt = 1, + // [/CELADON-ADD] + ) + premium |= list( + // [CELADON-ADD] - CELADON_RETURN_CONTENT_CLOWNS + /obj/item/clothing/under/rank/civilian/clown/rainbow = 1, + /obj/item/clothing/suit/chaplainsuit/clownpriest = 1, + /obj/item/clothing/head/clownmitre = 1, + /obj/item/clothing/shoes/roman = 1, + /obj/item/clothing/suit/hooded/mysticrobe = 1, + ) + contraband = list( + /obj/item/clothing/suit/judgerobe = 1, + /obj/item/clothing/accessory/fan_mime_pin = 1, + /obj/item/clothing/accessory/fan_clown_pin = 1, + /obj/item/clothing/glasses/sunglasses = 2, + /obj/item/clothing/glasses/blindfold = 1, + /obj/item/clothing/mask/muzzle = 2, + ) + // [/CELADON-ADD] + return ..() + +/obj/machinery/vending/boozeomat/Initialize(mapload) + products |= list( + // [CELADON-ADD] - CELADON_FOOD_AND_DRINKS + /obj/item/reagent_containers/food/drinks/soda_cans/synthanol = 10, + // [/CELADON-ADD] + ) + return ..() + +/obj/machinery/vending/clothing + default_price = parent_type::default_price + extra_price = parent_type::extra_price + +/obj/machinery/vending/clothing/Initialize(mapload) + products |= list( + // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + /obj/item/clothing/head/beanie/christmas = 3, + /obj/item/clothing/head/beanie/rasta = 3, + /obj/item/clothing/head/kippah = 3, + /obj/item/clothing/head/taqiyahred = 3, + /obj/item/clothing/glasses/monocle = 1, + /obj/item/clothing/head/sombrero = 1, + /obj/item/clothing/suit/poncho = 1, + /obj/item/clothing/suit/vapeshirt = 1, + /obj/item/clothing/neck/cloak/cape = 3, + /obj/item/clothing/neck/cloak/cape/white = 3, + /obj/item/clothing/neck/cloak/cape/zavod = 3, + /obj/item/clothing/neck/cloak/cape/hospital = 3, + /obj/item/clothing/neck/cloak/cape/armsman = 3, + /obj/item/clothing/neck/cloak/cape/elysium = 3, + /obj/item/clothing/neck/cloak/cape/elysium/white = 3, + /obj/item/clothing/under/el_cloth_1 = 5, + /obj/item/clothing/under/el_cloth_2 = 5, + /obj/item/clothing/under/el_cloth_3 = 5, + /obj/item/clothing/under/el_cloth_4 = 5, + /obj/item/clothing/head/beret/elysium = 5, + // [/CELADON-ADD] + ) + return ..() + +/obj/machinery/vending/wallmed + icon = 'mod_celadon/_storage_icons/icons/resprite/wallmed.dmi' //[CELADON-ADD] - Меняем путь к спрайтам + default_price = 35 // [CELADON-EDIT] - OUTPOST_MED_BALANCE // default_price = 50 + extra_price = 200 // [CELADON-EDIT] - OUTPOST_MED_BALANCE // extra_price = 100 + +/obj/machinery/vending/wardrobe/robo_wardrobe/Initialize(mapload) + contraband |= list( + // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + /obj/item/clothing/suit/hooded/enginseer = 2, // WS edit: enginsineer robes + // [/CELADON-ADD] + ) + return ..() + +/obj/machinery/vending/wardrobe/chap_wardrobe + // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + premium = list(/obj/item/clothing/suit/chaplainsuit/bishoprobe = 1, + /obj/item/clothing/head/bishopmitre = 1) + // [/CELADON-ADD] + +/obj/machinery/vending/wardrobe/chap_wardrobe/Initialize(mapload) + products |= list( + // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + /obj/item/clothing/suit/chaplainsuit/nun = 1, + /obj/item/clothing/head/nun_hood = 1, + /obj/item/clothing/suit/chaplainsuit/holidaypriest = 1, + /obj/item/clothing/suit/hooded/chaplainsuit/monkhabit = 1, + /obj/item/clothing/head/kippah = 3, + /obj/item/clothing/suit/chaplainsuit/whiterobe = 1, + /obj/item/clothing/head/taqiyahwhite = 1, + /obj/item/clothing/head/taqiyahred = 3, + /obj/item/clothing/suit/chaplainsuit/monkrobeeast = 1, + /obj/item/clothing/head/beanie/rasta = 1, + // [/CELADON-ADD] + ) + return ..() + +/obj/machinery/vending/wardrobe/viro_wardrobe/Initialize(mapload) + contraband |= list( + // [CELADON-ADD] - CELADON_RETURN_CONTENT_SPAWN + /obj/item/clothing/head/plaguedoctorhat = 1, + // [/CELADON-ADD] + ) + return ..() + +// [CELADON-ADD] - NO_STATIC_SECTOR Опасные стартовые сектора +/datum/overmap_star_system/shiptest/elysium + has_outpost = TRUE + override_object_colors = FALSE + overmap_icon_state = "blank" + +/datum/overmap_star_system/shiptest/elysium/ice + name = "Elysium Controlled - Value of Public Works" + starname = "Ecbatana" + startype = /datum/overmap/star/dwarf + default_outpost_type = /datum/overmap/outpost/elysium_ice + + //main colors, used for dockable terrestrials, and background + primary_color = "#7e8cd9" + secondary_color = "#33324a" + + //hazard colors, used for the overmap hazards and sun + hazard_primary_color = "#ededed" + hazard_secondary_color = "#7f7db0" + +/datum/overmap_star_system/shiptest/elysium/asteroid + name = "Elysium Controlled - Persei-277" + starname = "Persei-277" + startype = /datum/overmap/star/medium + default_outpost_type = /datum/overmap/outpost/elysium_asteroid + + //main colors, used for dockable terrestrials, and background + primary_color = "#d9ad82" + secondary_color = "#c48c60" + + //hazard colors, used for the overmap hazards and sun + hazard_primary_color = "#c13623" + hazard_secondary_color = "#943a43" +// [/CELADON-ADD] + +/datum/overmap_star_system + // [CELADON-EDIT] - CELADON_OVERMAP + tileset = 'mod_celadon/_storage_icons/icons/assets/overmap/overmap.dmi' + // [/CELADON-EDIT] + +/datum/config_entry/number/overmap_encounter_size + config_entry_value = 191 + min_val = 191 + +/turf/open/overmap + icon = 'mod_celadon/_storage_icons/icons/structures/turf/overmap.dmi' + color = COLOR_GRAY + +// [CELADON-ADD] - CELADON_OVERMAP_ICON +/turf/open/overmap/Initialize(mapload, inherited_virtual_z) + . = ..() + for(var/i in 1 to 3) + if(prob(25)) + var/mutable_appearance/background_star = mutable_appearance(icon, "star[rand(1, 16)]") + background_star.pixel_x = rand(-16, 16) + background_star.pixel_y = rand(-16, 16) + overlays += background_star +// [/CELADON-ADD] + +/obj/item/clothing/accessory/medal/gold + vox_override_icon = CELADON_VOX_ACCESSORY_PATH diff --git a/mod_celadon/inteq_vendor/code/inteq_MODsuit.dm b/mod_celadon/inteq_vendor/code/inteq_MODsuit.dm index ff51d17b9815..27251ec744b1 100644 --- a/mod_celadon/inteq_vendor/code/inteq_MODsuit.dm +++ b/mod_celadon/inteq_vendor/code/inteq_MODsuit.dm @@ -63,7 +63,7 @@ module_type = MODULE_ACTIVE complexity = 3 active_power_cost = MODULE_CHARGE_DRAIN_LOW - device = /obj/item/shield/riot/mod + device = /obj/item/shield/heavy/mod incompatible_modules = list(/obj/item/mod/module/shield) cooldown_time = 0.2 SECONDS var/start_time = 0 @@ -94,7 +94,7 @@ UnregisterSignal(device, COMSIG_MOD_SHIELD_DESTROYED) -/obj/item/mod/module/shield/proc/change_integrity(obj/item/shield/riot/mod/shield) +/obj/item/mod/module/shield/proc/change_integrity(obj/item/shield/heavy/mod/shield) var/restored_integrity = (world.time - start_time) //So we regenerate 10 integrity per second if(shield.atom_integrity + restored_integrity >= shield.max_integrity) //So we don't return an object with 200 integrity with a 100 max return shield.max_integrity @@ -109,7 +109,7 @@ mod.wearer.transferItemToLoc(device, src, TRUE) -/obj/item/shield/riot/mod +/obj/item/shield/heavy/mod name = "MOD telescopic shield" desc = "A module installed into the forearm of the suit, extending into a sturdy shield as needed. \ This high-end piece of technology repairs damage done to shield, while it's retracted \ @@ -123,23 +123,22 @@ force = 3 w_class = WEIGHT_CLASS_NORMAL slowdown = 0.3 - var/shield_break_sound = 'sound/effects/sparks1.ogg' - var/shield_break_leftover = /obj/effect/particle_effect/sparks max_integrity = 250 - broken_shield = FALSE - braking_sound = 'sound/effects/sparks1.ogg' - braking_alert = "Shield's down!" - integrity_failure = -10000 // So it doesn't brake + breaking_sound = 'sound/effects/sparks1.ogg' + breaking_alert = "shield's down!" + integrity_failure = 0 // So it doesn't break + is_repairable = FALSE + var/shield_break_leftover = /obj/effect/particle_effect/sparks -/obj/item/shield/riot/mod/emp_act(severity) +/obj/item/shield/heavy/mod/emp_act(severity) atom_integrity = 1 SEND_SIGNAL(src, COMSIG_MOD_SHIELD_DESTROYED, atom_integrity) . = ..() -/obj/item/shield/riot/mod/atom_destruction() +/obj/item/shield/heavy/mod/atom_destruction() SHOULD_CALL_PARENT(FALSE) - playsound(loc, shield_break_sound, 35) + playsound(loc, breaking_sound, 35) new shield_break_leftover(get_turf(src)) if(isliving(loc)) loc.balloon_alert(loc, "Shield's down!") @@ -149,7 +148,7 @@ SEND_SIGNAL(src, COMSIG_MOD_SHIELD_DESTROYED, shield_integrity) -/obj/item/shield/riot/mod/attackby(obj/item/W, mob/user, params) +/obj/item/shield/heavy/mod/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/melee/baton)) if(COOLDOWN_FINISHED(src, baton_bash)) user.visible_message(span_warning("[user] bashes [src] with [W]!")) @@ -163,11 +162,11 @@ This high-end piece of technology repairs damage done to shield, while it's retracted \ using a tremendous amount of power supplied from MOD's core. \ This InteQ version has a special spot with powerful magnets to support weapons." - device = /obj/item/shield/riot/mod/inteq + device = /obj/item/shield/heavy/mod/inteq incompatible_modules = list(/obj/item/mod/module/shield, /obj/item/mod/module/shield/inteq) -/obj/item/shield/riot/mod/inteq +/obj/item/shield/heavy/mod/inteq name = "InteQ MOD telescopic shield" desc = "An advanced riot shield made of lightweight materials that collapses for easy storage. \ This particular modification has some powerful magnets for assisting with weapon's recoil." diff --git a/mod_celadon/inteq_vendor/code/inteq_vendor.dm b/mod_celadon/inteq_vendor/code/inteq_vendor.dm index 250a25e811b6..9873cd76e765 100644 --- a/mod_celadon/inteq_vendor/code/inteq_vendor.dm +++ b/mod_celadon/inteq_vendor/code/inteq_vendor.dm @@ -40,7 +40,7 @@ new /obj/item/mod/control/pre_equipped/inteq(drop_location) if("Rig suit") new /obj/item/clothing/suit/space/hardsuit/syndi/inteq(drop_location) - new /obj/item/shield/riot/tele(drop_location) + new /obj/item/shield/tele(drop_location) SSblackbox.record_feedback("tally", "inteq_voucher_redeemed", 1, selection) qdel(voucher) diff --git a/mod_celadon/ipc_chassis/README.md b/mod_celadon/ipc_chassis/README.md index 1fd32526b391..a24ffa59f21f 100644 --- a/mod_celadon/ipc_chassis/README.md +++ b/mod_celadon/ipc_chassis/README.md @@ -59,7 +59,7 @@ ID мода: CELADON_IPC_CHASSIS ### Изменения *кор кода* - `code\modules\mob\dead\new_player\sprite_accessories\ipc.dm`: `/datum/sprite_accessory/ipc_screens` -> icon -- `code\modules\mob\dead\new_player\sprite_accessories\ipc.dm`: `/datum/sprite_accessory/ipc_chassis` -> icon +- `code\modules\mob\dead\new_player\sprite_accessories\ipc.dm`: `/datum/sprite_accessory/body/ipc_chassis` -> icon