diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index 422be83aa1a..53b0643a373 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -3,9 +3,11 @@ on: push: branches: - master + - 'project/**' pull_request: branches: - master + - 'project/**' jobs: run_linters: if: "!contains(github.event.head_commit.message, '[ci skip]')" diff --git a/.github/workflows/conflicts.yml b/.github/workflows/conflicts.yml index cfc332b3097..4823aee3abf 100644 --- a/.github/workflows/conflicts.yml +++ b/.github/workflows/conflicts.yml @@ -3,6 +3,7 @@ on: push: branches: - master + - 'project/**' jobs: triage: runs-on: ubuntu-20.04 diff --git a/.github/workflows/has_515_compatibility.yml b/.github/workflows/has_515_compatibility.yml index a026105d7c2..35b56068ca4 100644 --- a/.github/workflows/has_515_compatibility.yml +++ b/.github/workflows/has_515_compatibility.yml @@ -9,6 +9,7 @@ on: pull_request: branches: - master + - 'project/**' jobs: has_515_compatibility: name: Has 515 Compatibility diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/cargodiselost.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/cargodiselost.dmm index 514cfa08218..8bd1fe4d7d0 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/cargodiselost.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/cargodiselost.dmm @@ -238,7 +238,6 @@ "fm" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, /obj/machinery/computer/order_console/mining{ - uses_ltsrbt = 0; forced_express = 1; express_cost_multiplier = 1 }, diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon2.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon2.dmm index 203bb42a125..f0fa5a3a965 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon2.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon2.dmm @@ -4873,7 +4873,6 @@ }, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/computer/order_console/mining{ - uses_ltsrbt = 0; forced_express = 1; express_cost_multiplier = 1 }, diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon3.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon3.dmm index ab5ddb70acf..9014846fcf4 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon3.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon3.dmm @@ -4735,7 +4735,6 @@ dir = 4 }, /obj/machinery/computer/order_console/mining{ - uses_ltsrbt = 0; forced_express = 1; express_cost_multiplier = 1 }, diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon4.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon4.dmm index 71d05851663..ff69c41c86a 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon4.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon4.dmm @@ -4152,7 +4152,6 @@ }, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/computer/order_console/mining{ - uses_ltsrbt = 0; forced_express = 1; express_cost_multiplier = 1 }, diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon5.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon5.dmm index 9da06f435db..7eabedcd506 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon5.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon5.dmm @@ -4502,7 +4502,6 @@ }, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/computer/order_console/mining{ - uses_ltsrbt = 0; forced_express = 1; express_cost_multiplier = 1 }, diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 217d1d2d832..8df5b09ef54 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -2918,6 +2918,21 @@ }, /turf/open/floor/iron, /area/station/security/warden) +"aZv" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id = "ordnancebridge" + }, +/obj/machinery/button/door{ + id = "ordnancebridge"; + pixel_x = -24; + req_one_access = list("maint_tunnels","science") + }, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 1 + }, +/turf/open/floor/plating, +/area/station/maintenance/aft/lesser) "aZL" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -3906,14 +3921,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/dark, /area/station/science/ordnance/burnchamber) -"bqy" = ( -/obj/effect/turf_decal/siding/purple{ - dir = 6 - }, -/obj/structure/table, -/obj/item/clipboard, -/turf/open/floor/iron/white, -/area/station/science/ordnance/office) "bqJ" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -7312,16 +7319,6 @@ /obj/effect/mapping_helpers/airlock/access/all/supply/qm, /turf/open/floor/plating, /area/station/maintenance/port/greater) -"cJU" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/door/window/right/directional/south{ - dir = 8; - name = "Jim Norton's Quebecois Coffee"; - req_one_access = list("service","maint_tunnels") - }, -/obj/effect/turf_decal/trimline/green/line, -/turf/open/floor/iron/dark, -/area/station/service/cafeteria) "cKd" = ( /obj/effect/turf_decal/trimline/blue/filled/warning{ dir = 4 @@ -7826,6 +7823,19 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/security/prison) +"cUp" = ( +/obj/structure/table, +/obj/item/plate, +/obj/item/candle, +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/radio{ + desc = "An old handheld radio. You could use it, if you really wanted to."; + icon_state = "radio"; + name = "old radio"; + pixel_y = 15 + }, +/turf/open/floor/plating, +/area/station/maintenance/space_hut) "cUw" = ( /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, @@ -9209,12 +9219,6 @@ /obj/effect/spawner/random/engineering/flashlight, /turf/open/floor/iron/dark, /area/station/security/office) -"dtp" = ( -/obj/structure/table, -/obj/item/candle, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) "dtB" = ( /obj/machinery/atmospherics/pipe/smart/manifold/purple/visible{ dir = 8 @@ -9366,20 +9370,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/port/fore) -"dwD" = ( -/obj/structure/cable, -/obj/machinery/door/airlock{ - name = "Custodial Closet" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/effect/mapping_helpers/airlock/access/all/service/janitor, -/obj/effect/landmark/navigate_destination/janitor, -/turf/open/floor/iron, -/area/station/maintenance/starboard/greater) "dwJ" = ( /obj/structure/lattice, /obj/effect/spawner/random/structure/grille, @@ -9541,6 +9531,12 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/service/hydroponics) +"dBV" = ( +/obj/docking_port/stationary/escape_pod{ + dir = 4 + }, +/turf/open/space/basic, +/area/space) "dBZ" = ( /obj/item/clothing/head/cone{ pixel_x = -4; @@ -10218,25 +10214,6 @@ }, /turf/open/floor/iron, /area/station/security/office) -"dOo" = ( -/obj/structure/safe, -/obj/item/storage/secure/briefcase/riches, -/obj/item/storage/backpack/duffelbag/syndie/hitman, -/obj/item/card/id/advanced/silver/reaper, -/obj/item/lazarus_injector, -/obj/item/gun/energy/disabler, -/obj/item/gun/ballistic/revolver/russian, -/obj/item/ammo_box/a357, -/obj/item/clothing/neck/stethoscope, -/obj/item/book{ - desc = "An undeniably handy book."; - icon_state = "bookknock"; - name = "\improper A Simpleton's Guide to Safe-cracking with Stethoscopes" - }, -/obj/effect/turf_decal/bot_white/left, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/ai_monitored/command/nuke_storage) "dOs" = ( /obj/structure/sign/warning/no_smoking, /turf/closed/wall/r_wall, @@ -11124,6 +11101,10 @@ "ecO" = ( /turf/open/floor/carpet, /area/station/service/library) +"edl" = ( +/obj/docking_port/stationary/escape_pod, +/turf/open/space/basic, +/area/space) "edo" = ( /obj/structure/table/glass, /obj/item/paper_bin, @@ -13694,6 +13675,15 @@ /obj/effect/spawner/random/decoration/showcase, /turf/open/floor/carpet, /area/station/command/corporate_showroom) +"faB" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/siding/purple{ + dir = 5 + }, +/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/science/genetics) "faD" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -13736,13 +13726,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"fbO" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Surgery C Maintenance" - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/plating, -/area/station/maintenance/aft/greater) "fbP" = ( /obj/effect/turf_decal/tile/neutral, /obj/structure/cable, @@ -17027,6 +17010,20 @@ }, /turf/open/floor/iron, /area/station/service/hydroponics/garden) +"gpv" = ( +/obj/structure/cable, +/obj/machinery/door/airlock{ + name = "Custodial Closet" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/mapping_helpers/airlock/access/all/service/janitor, +/obj/effect/landmark/navigate_destination/janitor, +/turf/open/floor/iron, +/area/station/maintenance/starboard/greater) "gpB" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, @@ -19095,6 +19092,18 @@ "hbv" = ( /turf/closed/wall/r_wall, /area/station/medical/coldroom) +"hbC" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/purple, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/item/reagent_containers/cup/glass/mug/britcup{ + pixel_y = 2 + }, +/turf/open/floor/iron, +/area/station/science/research) "hbK" = ( /turf/closed/wall, /area/station/maintenance/department/science/xenobiology) @@ -19944,19 +19953,6 @@ /obj/item/radio/intercom/directional/west, /turf/open/floor/iron, /area/station/service/bar) -"hsh" = ( -/obj/structure/table, -/obj/item/plate, -/obj/item/candle, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/radio{ - desc = "An old handheld radio. You could use it, if you really wanted to."; - icon_state = "radio"; - name = "old radio"; - pixel_y = 15 - }, -/turf/open/floor/plating, -/area/station/maintenance/space_hut) "hsp" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -20082,12 +20078,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/closed/wall/r_wall, /area/station/maintenance/starboard/greater) -"hup" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Medbay Maintenance" - }, -/turf/open/floor/plating, -/area/station/maintenance/port/aft) "huq" = ( /obj/machinery/modular_computer/console/preset/id{ dir = 4 @@ -20395,15 +20385,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/station/medical/break_room) -"hyI" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/siding/purple{ - dir = 5 - }, -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/genetics) "hyN" = ( /obj/structure/sign/warning/secure_area, /turf/closed/wall/r_wall, @@ -21719,6 +21700,17 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/service) +"hYh" = ( +/obj/machinery/computer/scan_consolenew{ + dir = 4 + }, +/obj/effect/turf_decal/siding/purple{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/science/genetics) "hYr" = ( /obj/machinery/holopad, /obj/structure/cable, @@ -23066,6 +23058,11 @@ /obj/effect/spawner/random/food_or_drink/donkpockets, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"iuD" = ( +/obj/effect/spawner/random/vending/snackvend, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/iron/dark, +/area/station/hallway/primary/central) "iuJ" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 4 @@ -24135,11 +24132,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/aft/lesser) -"iLG" = ( -/obj/effect/spawner/random/vending/snackvend, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/iron/dark, -/area/station/hallway/primary/central) "iLH" = ( /obj/machinery/flasher/directional/west{ id = "Cell 1" @@ -25701,6 +25693,16 @@ }, /turf/open/floor/iron, /area/station/security/office) +"jkE" = ( +/obj/effect/turf_decal/siding/purple{ + dir = 6 + }, +/obj/structure/table, +/obj/item/clipboard, +/obj/item/holosign_creator/atmos, +/obj/item/holosign_creator/atmos, +/turf/open/floor/iron/white, +/area/station/science/ordnance/office) "jkT" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -25923,18 +25925,6 @@ /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/iron/white, /area/station/medical/surgery/theatre) -"jox" = ( -/obj/structure/table, -/obj/item/reagent_containers/cup/glass/mug/britcup{ - pixel_x = -6; - pixel_y = 11 - }, -/obj/item/phone{ - pixel_x = 6; - pixel_y = 1 - }, -/turf/open/floor/iron, -/area/station/cargo/drone_bay) "jpr" = ( /obj/structure/rack, /obj/effect/spawner/random/techstorage/command_all, @@ -26818,21 +26808,6 @@ /obj/effect/landmark/blobstart, /turf/open/floor/iron, /area/station/cargo/warehouse) -"jDf" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "ordnancebridge" - }, -/obj/machinery/button/door{ - id = "ordnancebridge"; - pixel_x = -24; - req_one_access = list("maint_tunnels","science") - }, -/obj/effect/turf_decal/caution/stand_clear{ - dir = 1 - }, -/turf/open/floor/plating, -/area/station/maintenance/aft/lesser) "jDk" = ( /obj/effect/spawner/random/entertainment/arcade, /obj/effect/decal/cleanable/dirt/dust, @@ -27960,18 +27935,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/ce) -"jWu" = ( -/obj/structure/table, -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/item/reagent_containers/cup/glass/mug/britcup{ - pixel_y = 2 - }, -/turf/open/floor/iron, -/area/station/science/research) "jWR" = ( /obj/item/radio/intercom/directional/east, /obj/effect/turf_decal/siding/wood{ @@ -29915,6 +29878,13 @@ /obj/machinery/light/directional/south, /turf/open/floor/wood, /area/station/service/library) +"kJT" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Surgery C Maintenance" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/plating, +/area/station/maintenance/aft/greater) "kKd" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -30442,6 +30412,21 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/port) +"kRF" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "ordnancebridge" + }, +/obj/machinery/button/door{ + id = "ordnancebridge"; + pixel_y = 24; + req_one_access = list("maint_tunnels","science") + }, +/obj/effect/turf_decal/caution/stand_clear{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/aft/lesser) "kRV" = ( /obj/structure/window/reinforced{ dir = 4 @@ -39477,21 +39462,6 @@ /obj/effect/landmark/start/chemist, /turf/open/floor/iron/white, /area/station/medical/pharmacy) -"oas" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "ordnancebridge" - }, -/obj/machinery/button/door{ - id = "ordnancebridge"; - pixel_y = 24; - req_one_access = list("maint_tunnels","science") - }, -/obj/effect/turf_decal/caution/stand_clear{ - dir = 4 - }, -/turf/open/floor/plating, -/area/station/maintenance/aft/lesser) "oaw" = ( /obj/structure/table/reinforced, /obj/structure/cable, @@ -40995,14 +40965,6 @@ /obj/effect/turf_decal/tile/green/fourcorners, /turf/open/floor/iron, /area/station/service/hydroponics) -"oBN" = ( -/obj/item/candle, -/obj/machinery/light_switch/directional/north, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/service/chapel) "oBO" = ( /obj/structure/cable, /obj/effect/landmark/start/medical_doctor, @@ -42702,6 +42664,12 @@ }, /turf/open/floor/iron, /area/station/command/gateway) +"pig" = ( +/obj/structure/table, +/obj/item/candle, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) "piw" = ( /obj/effect/landmark/start/cyborg, /obj/machinery/holopad/secure, @@ -45021,14 +44989,6 @@ }, /turf/open/floor/circuit/telecomms, /area/station/science/xenobiology) -"pZj" = ( -/obj/item/candle, -/obj/machinery/light_switch/directional/west, -/obj/effect/decal/cleanable/cobweb, -/obj/structure/table/wood, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/service/chapel) "pZn" = ( /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -45362,6 +45322,41 @@ dir = 1 }, /area/station/service/chapel) +"qgc" = ( +/obj/structure/closet/crate/secure/weapon{ + desc = "A secure clothing crate."; + name = "formal uniform crate"; + req_access = list("armory") + }, +/obj/item/clothing/under/rank/security/officer/formal, +/obj/item/clothing/under/rank/security/officer/formal, +/obj/item/clothing/under/rank/security/officer/formal, +/obj/item/clothing/under/rank/security/officer/formal, +/obj/item/clothing/under/rank/security/officer/formal, +/obj/item/clothing/under/rank/security/officer/formal, +/obj/item/clothing/suit/jacket/officer/blue, +/obj/item/clothing/suit/jacket/officer/blue, +/obj/item/clothing/suit/jacket/officer/blue, +/obj/item/clothing/suit/jacket/officer/blue, +/obj/item/clothing/suit/jacket/officer/blue, +/obj/item/clothing/suit/jacket/officer/blue, +/obj/item/clothing/under/rank/security/warden/formal, +/obj/item/clothing/suit/jacket/warden/blue, +/obj/item/clothing/under/rank/security/head_of_security/formal, +/obj/item/clothing/suit/jacket/hos/blue, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navyofficer, +/obj/item/clothing/head/beret/sec/navywarden, +/obj/item/clothing/head/hats/hos/beret/navyhos, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/cable, +/obj/effect/turf_decal/tile/blue/half/contrasted, +/turf/open/floor/iron/dark, +/area/station/security/lockers) "qgf" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -46710,6 +46705,14 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/general, /turf/open/floor/plating, /area/station/maintenance/aft/greater) +"qER" = ( +/obj/item/candle, +/obj/machinery/light_switch/directional/west, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "qFj" = ( /obj/structure/table, /obj/effect/turf_decal/delivery, @@ -48141,10 +48144,6 @@ }, /turf/open/floor/engine, /area/station/science/cytology) -"rec" = ( -/obj/docking_port/stationary/escape_pod, -/turf/open/space/basic, -/area/space) "ret" = ( /obj/effect/spawner/random/trash/garbage{ spawn_scatter_radius = 1 @@ -48220,6 +48219,18 @@ /obj/effect/spawner/random/decoration/showcase, /turf/open/floor/carpet, /area/station/command/corporate_showroom) +"rgL" = ( +/obj/structure/table, +/obj/item/reagent_containers/cup/glass/mug/britcup{ + pixel_x = -6; + pixel_y = 11 + }, +/obj/item/phone{ + pixel_x = 6; + pixel_y = 1 + }, +/turf/open/floor/iron, +/area/station/cargo/drone_bay) "rgN" = ( /obj/structure/cable, /obj/effect/turf_decal/trimline/brown/filled/line{ @@ -59513,41 +59524,6 @@ }, /turf/open/space/basic, /area/space) -"uXE" = ( -/obj/structure/closet/crate/secure/weapon{ - desc = "A secure clothing crate."; - name = "formal uniform crate"; - req_access = list("armory") - }, -/obj/item/clothing/under/rank/security/officer/formal, -/obj/item/clothing/under/rank/security/officer/formal, -/obj/item/clothing/under/rank/security/officer/formal, -/obj/item/clothing/under/rank/security/officer/formal, -/obj/item/clothing/under/rank/security/officer/formal, -/obj/item/clothing/under/rank/security/officer/formal, -/obj/item/clothing/suit/jacket/officer/blue, -/obj/item/clothing/suit/jacket/officer/blue, -/obj/item/clothing/suit/jacket/officer/blue, -/obj/item/clothing/suit/jacket/officer/blue, -/obj/item/clothing/suit/jacket/officer/blue, -/obj/item/clothing/suit/jacket/officer/blue, -/obj/item/clothing/under/rank/security/warden/formal, -/obj/item/clothing/suit/jacket/warden/blue, -/obj/item/clothing/under/rank/security/head_of_security/formal, -/obj/item/clothing/suit/jacket/hos/blue, -/obj/item/clothing/head/beret/sec/navyofficer, -/obj/item/clothing/head/beret/sec/navyofficer, -/obj/item/clothing/head/beret/sec/navyofficer, -/obj/item/clothing/head/beret/sec/navyofficer, -/obj/item/clothing/head/beret/sec/navyofficer, -/obj/item/clothing/head/beret/sec/navyofficer, -/obj/item/clothing/head/beret/sec/navywarden, -/obj/item/clothing/head/hats/hos/beret/navyhos, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/structure/cable, -/obj/effect/turf_decal/tile/blue/half/contrasted, -/turf/open/floor/iron/dark, -/area/station/security/lockers) "uXG" = ( /obj/machinery/door/airlock/maintenance{ name = "Psychology Maintenance" @@ -59890,20 +59866,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/service/kitchen) -"veo" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/table/reinforced, -/obj/item/storage/box/lights/mixed, -/obj/item/cigbutt/cigarbutt, -/obj/item/candle{ - pixel_x = -5 - }, -/obj/item/storage/box/matches{ - pixel_x = 1; - pixel_y = -1 - }, -/turf/open/floor/iron/white, -/area/station/medical/abandoned) "veO" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 8 @@ -60027,17 +59989,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/chemistry) -"vhq" = ( -/obj/machinery/computer/scan_consolenew{ - dir = 4 - }, -/obj/effect/turf_decal/siding/purple{ - dir = 8 - }, -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/turf/open/floor/iron/dark, -/area/station/science/genetics) "vht" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -60070,6 +60021,14 @@ /obj/structure/cable, /turf/open/floor/iron/dark, /area/station/security/evidence) +"vhE" = ( +/obj/item/candle, +/obj/machinery/light_switch/directional/north, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/service/chapel) "vhI" = ( /obj/effect/turf_decal/tile/yellow{ dir = 8 @@ -62649,12 +62608,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/greater) -"waq" = ( -/obj/docking_port/stationary/escape_pod{ - dir = 4 - }, -/turf/open/space/basic, -/area/space) "was" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -64735,6 +64688,25 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/engine) +"wOQ" = ( +/obj/structure/safe, +/obj/item/storage/secure/briefcase/riches, +/obj/item/storage/backpack/duffelbag/syndie/hitman, +/obj/item/card/id/advanced/silver/reaper, +/obj/item/lazarus_injector, +/obj/item/gun/energy/disabler, +/obj/item/gun/ballistic/revolver/russian, +/obj/item/ammo_box/a357, +/obj/item/clothing/neck/stethoscope, +/obj/item/book{ + desc = "An undeniably handy book."; + icon_state = "bookknock"; + name = "\improper A Simpleton's Guide to Safe-cracking with Stethoscopes" + }, +/obj/effect/turf_decal/bot_white/left, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, +/area/station/ai_monitored/command/nuke_storage) "wOR" = ( /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -66547,6 +66519,20 @@ /obj/effect/spawner/random/bureaucracy/pen, /turf/open/floor/iron, /area/station/engineering/gravity_generator) +"xvT" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table/reinforced, +/obj/item/storage/box/lights/mixed, +/obj/item/cigbutt/cigarbutt, +/obj/item/candle{ + pixel_x = -5 + }, +/obj/item/storage/box/matches{ + pixel_x = 1; + pixel_y = -1 + }, +/turf/open/floor/iron/white, +/area/station/medical/abandoned) "xvZ" = ( /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron/freezer, @@ -68737,6 +68723,12 @@ }, /turf/open/floor/plating, /area/station/hallway/secondary/entry) +"ykp" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Medbay Maintenance" + }, +/turf/open/floor/plating, +/area/station/maintenance/port/aft) "ykI" = ( /obj/effect/landmark/start/hangover, /turf/open/floor/engine{ @@ -68750,6 +68742,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/plating, /area/station/maintenance/port/fore) +"ykR" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/window/right/directional/south{ + dir = 8; + name = "Jim Norton's Quebecois Coffee"; + req_one_access = list("service","maint_tunnels") + }, +/obj/effect/turf_decal/trimline/green/line, +/turf/open/floor/iron/dark, +/area/station/service/cafeteria) "ykS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -78459,7 +78461,7 @@ tkr aaa aaa aaa -rec +edl cSk auJ jMZ @@ -80316,7 +80318,7 @@ tsd tsd tsd hUN -hsh +cUp jIR lMJ gQK @@ -87520,7 +87522,7 @@ tzE ucc tSw tSw -fbO +kJT tSw tSw tSw @@ -87785,7 +87787,7 @@ bEL keq scb suz -veo +xvT tSw vUM bhS @@ -88285,7 +88287,7 @@ sWO oxW dqN vlH -hup +ykp miy tFr nMf @@ -89233,7 +89235,7 @@ fru wrG uzb phP -jox +rgL jXu tfR jXu @@ -90527,7 +90529,7 @@ rlU vis mCi ixT -dOo +wOQ rlU aaa aEH @@ -90829,7 +90831,7 @@ sVY sVY sVY sVY -iLG +iuD xxk ahr bMY @@ -91052,7 +91054,7 @@ vvH cFp guX mgl -cJU +ykR wAj pPH hSg @@ -91646,7 +91648,7 @@ bsZ rJI taX tSw -pZj +qER gmX lHK tey @@ -93188,7 +93190,7 @@ tSw tSw xWF tSw -oBN +vhE iZi kVN qri @@ -93702,10 +93704,10 @@ tSw tSw sGA tSw -dtp +pig fgl btx -dtp +pig otu otu otu @@ -94091,7 +94093,7 @@ isc aaa aaa aaa -rec +edl tYS lgS jKq @@ -97031,7 +97033,7 @@ cId rQl oIg wBq -vhq +hYh vKW jNX jxW @@ -97188,7 +97190,7 @@ aaa rrt aaa ahj -uXE +qgc sCi kiW rfb @@ -98055,7 +98057,7 @@ bBo gwf gfZ gqm -hyI +faB cDA jrb lkL @@ -99098,7 +99100,7 @@ wna oFX lWN hND -jDf +aZv iKL nFa nFa @@ -101159,7 +101161,7 @@ svS svS svS svS -oas +kRF dKC anS lMJ @@ -102166,7 +102168,7 @@ fnh mMX moF klT -bqy +jkE svS dKC lMW @@ -106017,7 +106019,7 @@ gcV nNe nbS aHM -jWu +hbC oWk ddu wmi @@ -106257,7 +106259,7 @@ unL uNd unL unL -dwD +gpv unL tUn tUn @@ -106695,7 +106697,7 @@ aaa aaa szp aaa -waq +dBV aaa szp szp @@ -114707,7 +114709,7 @@ dgm dgB fJy aaa -waq +dBV aaa fJy oAQ diff --git a/code/__DEFINES/dcs/signals/signals_turf.dm b/code/__DEFINES/dcs/signals/signals_turf.dm index 61142cea565..36e6920b8d2 100644 --- a/code/__DEFINES/dcs/signals/signals_turf.dm +++ b/code/__DEFINES/dcs/signals/signals_turf.dm @@ -14,6 +14,8 @@ #define COMSIG_TURF_MULTIZ_NEW "turf_multiz_new" ///from base of turf/proc/onShuttleMove(): (turf/new_turf) #define COMSIG_TURF_ON_SHUTTLE_MOVE "turf_on_shuttle_move" +///from base of /datum/turf_reservation/proc/Release: (datum/turf_reservation/reservation) +#define COMSIG_TURF_RESERVATION_RELEASED "turf_reservation_released" ///from /turf/open/temperature_expose(datum/gas_mixture/air, exposed_temperature) #define COMSIG_TURF_EXPOSE "turf_expose" ///from /turf/proc/immediate_calculate_adjacent_turfs() diff --git a/code/__DEFINES/movement.dm b/code/__DEFINES/movement.dm index ac56ca7097c..041e2bc2b24 100644 --- a/code/__DEFINES/movement.dm +++ b/code/__DEFINES/movement.dm @@ -34,6 +34,8 @@ GLOBAL_VAR_INIT(glide_size_multiplier, 1.0) #define MOVEMENT_LOOP_IGNORE_PRIORITY (1<<1) ///Should we override the loop's glide? #define MOVEMENT_LOOP_IGNORE_GLIDE (1<<2) +///Should we not update our movables dir on move? +#define MOVEMENT_LOOP_NO_DIR_UPDATE (1<<3) //Index defines for movement bucket data packets #define MOVEMENT_BUCKET_TIME 1 diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm index 6255473288b..7215f5b00d8 100644 --- a/code/__DEFINES/obj_flags.dm +++ b/code/__DEFINES/obj_flags.dm @@ -38,6 +38,8 @@ #define IGNORE_DIGITIGRADE (1<<18) /// Has contextual screentips when HOVERING OVER OTHER objects #define ITEM_HAS_CONTEXTUAL_SCREENTIPS (1 << 19) +/// No blood overlay is allowed to appear on this item, and it cannot gain blood DNA forensics +#define NO_BLOOD_ON_ITEM (1 << 20) // Flags for the clothing_flags var on /obj/item/clothing diff --git a/code/__DEFINES/shuttles.dm b/code/__DEFINES/shuttles.dm index 5b906d97bf3..1d721ef3f1d 100644 --- a/code/__DEFINES/shuttles.dm +++ b/code/__DEFINES/shuttles.dm @@ -44,7 +44,7 @@ #define TRANSIT_REQUEST 1 #define TRANSIT_READY 2 -#define SHUTTLE_TRANSIT_BORDER 8 +#define SHUTTLE_TRANSIT_BORDER 16 #define PARALLAX_LOOP_TIME 25 #define HYPERSPACE_END_TIME 5 diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 68d7bfc6c4a..a52b3585edc 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -204,6 +204,7 @@ #define FIRE_PRIORITY_FLUIDS 20 #define FIRE_PRIORITY_AIR 20 #define FIRE_PRIORITY_NPC 20 +#define FIRE_PRIORITY_HYPERSPACE_DRIFT 20 #define FIRE_PRIORITY_NPC_MOVEMENT 21 #define FIRE_PRIORITY_NPC_ACTIONS 22 #define FIRE_PRIORITY_PATHFINDING 23 diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 08fa4f6cbff..5e400ffe216 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -319,6 +319,10 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Increases chance of getting special traumas, makes them harder to cure #define TRAIT_SPECIAL_TRAUMA_BOOST "special_trauma_boost" #define TRAIT_SPACEWALK "spacewalk" +/// Sanity trait to keep track of when we're in hyperspace and add the appropriate element if we werent +#define TRAIT_HYPERSPACED "hyperspaced" +///Gives the movable free hyperspace movement without being pulled during shuttle transit +#define TRAIT_FREE_HYPERSPACE_MOVEMENT "free_hyperspace_movement" /// Gets double arcade prizes #define TRAIT_GAMERGOD "gamer-god" #define TRAIT_GIANT "giant" diff --git a/code/__DEFINES/~skyrat_defines/inventory.dm b/code/__DEFINES/~skyrat_defines/inventory.dm index 318c11e19fe..fe2c1d7cee9 100644 --- a/code/__DEFINES/~skyrat_defines/inventory.dm +++ b/code/__DEFINES/~skyrat_defines/inventory.dm @@ -3,7 +3,6 @@ #define STYLE_TAUR_PAW (1<<3) #define STYLE_TAUR_HOOF (1<<4) #define STYLE_TAUR_ALL (STYLE_TAUR_SNAKE|STYLE_TAUR_PAW|STYLE_TAUR_HOOF) -#define STYLE_TESHARI (1<<6) //teshari clothes and shit // We don't use the HUD for these, they have their own menu. #define LEWD_SLOT_VAGINA (1<<0) diff --git a/code/__HELPERS/duplicating.dm b/code/__HELPERS/duplicating.dm new file mode 100644 index 00000000000..e15f375d20a --- /dev/null +++ b/code/__HELPERS/duplicating.dm @@ -0,0 +1,93 @@ +///List of all vars that will not be copied over when using duplicate_object() +GLOBAL_LIST_INIT(duplicate_forbidden_vars, list( + "actions", + "active_hud_list", + "active_timers", + "AIStatus", + "appearance", + "area", + "atmos_adjacent_turfs", + "bodyparts", + "ckey", + "comp_lookup", + "computer_id", + "contents", + "cooldowns", + "datum_components", + "external_organs", + "external_organs_slot", + "group", + "hand_bodyparts", + "held_items", + "hud_list", + "implants", + "important_recursive_contents", + "internal_organs", + "internal_organs_slot", + "key", + "lastKnownIP", + "loc", + "locs", + "managed_overlays", + "managed_vis_overlays", + "overlays", + "overlays_standing", + "parent", + "parent_type", + "power_supply", + "quirks", + "reagents", + "signal_procs", + "status_traits", + "stat", + "tag", + "tgui_shared_states", + "type", + "vars", + "verbs", + "x", "y", "z", +)) +GLOBAL_PROTECT(duplicate_forbidden_vars) + +/** + * # duplicate_object + * + * Makes a copy of an item and transfers most vars over, barring GLOB.duplicate_forbidden_vars + * Args: + * original - Atom being duplicated + * spawning_location - Turf where the duplicated atom will be spawned at. + */ +/proc/duplicate_object(atom/original, turf/spawning_location) + RETURN_TYPE(original.type) + if(!original) + return + + var/atom/made_copy = new original.type(spawning_location) + + for(var/atom_vars in original.vars - GLOB.duplicate_forbidden_vars) + if(islist(original.vars[atom_vars])) + var/list/var_list = original.vars[atom_vars] + made_copy.vars[atom_vars] = var_list.Copy() + continue + else if(istype(original.vars[atom_vars], /datum) || ismob(original.vars[atom_vars])) + continue // this would reference the original's object, that will break when it is used or deleted. + made_copy.vars[atom_vars] = original.vars[atom_vars] + + if(isliving(made_copy)) + if(iscarbon(made_copy)) + var/mob/living/carbon/original_carbon = original + var/mob/living/carbon/copied_carbon = made_copy + //transfer DNA over (also body features), then update skin color. + original_carbon.dna.transfer_identity(copied_carbon, transfer_SE = TRUE) + copied_carbon.updateappearance(mutcolor_update = TRUE) + + var/mob/living/original_living = original + //transfer implants, we do this so the original's implants being removed won't destroy ours. + for(var/obj/item/implant/original_implants as anything in original_living.implants) + var/obj/item/implant/copied_implant = new original_implants.type + copied_implant.implant(made_copy, silent = TRUE, force = TRUE) + //transfer quirks, we do this because transfering the original's quirks keeps the 'owner' as the original. + for(var/datum/quirk/original_quirks as anything in original_living.quirks) + original_living.add_quirk(original_quirks.type) + + return made_copy diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index d7d9bfcae65..4b7790228ac 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -189,6 +189,7 @@ DEFINE_BITFIELD(item_flags, list( "SLOWS_WHILE_IN_HAND" = SLOWS_WHILE_IN_HAND, "SURGICAL_TOOL" = SURGICAL_TOOL, "XENOMORPH_HOLDABLE" = XENOMORPH_HOLDABLE, + "NO_BLOOD_ON_ITEM" = NO_BLOOD_ON_ITEM, )) DEFINE_BITFIELD(flags_inv, list( diff --git a/code/_globalvars/lists/objects.dm b/code/_globalvars/lists/objects.dm index f59f2052e69..bee8a5c0184 100644 --- a/code/_globalvars/lists/objects.dm +++ b/code/_globalvars/lists/objects.dm @@ -57,6 +57,3 @@ GLOBAL_LIST_EMPTY(alert_consoles) // Station alert consoles, /obj/machinery/comp GLOBAL_LIST_EMPTY(roundstart_station_borgcharger_areas) // List of area names of roundstart station cyborg rechargers, for the low charge/no charge cyborg screen alert tooltips. GLOBAL_LIST_EMPTY(roundstart_station_mechcharger_areas) // List of area names of roundstart station mech rechargers, for the low charge/no charge mech screen alert tooltips. - -///List of all types of '/obj/machinery/mining_ltsrbt' -GLOBAL_LIST_EMPTY(mining_ltsrbt) diff --git a/code/controllers/subsystem/materials.dm b/code/controllers/subsystem/materials.dm index fda766e3562..9f342a0c976 100644 --- a/code/controllers/subsystem/materials.dm +++ b/code/controllers/subsystem/materials.dm @@ -26,11 +26,11 @@ SUBSYSTEM_DEF(materials) new /datum/stack_recipe("Toilet", /obj/structure/toilet/greyscale, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_FURNITURE), new /datum/stack_recipe("Sink Frame", /obj/structure/sinkframe, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_FURNITURE), new /datum/stack_recipe("Material floor tile", /obj/item/stack/tile/material, 1, 4, 20, applies_mats = TRUE, category = CAT_TILES), - new /datum/stack_recipe("Material airlock assembly", /obj/structure/door_assembly/door_assembly_material, 4, time = 50, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), + new /datum/stack_recipe("Material airlock assembly", /obj/structure/door_assembly/door_assembly_material, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), ) ///List of stackcrafting recipes for materials using rigid recipes var/list/rigid_stack_recipes = list( - new /datum/stack_recipe("Carving block", /obj/structure/carving_block, 5, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_STRUCTURE), + new /datum/stack_recipe("Carving block", /obj/structure/carving_block, 5, time = 3 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_STRUCTURE), ) ///Ran on initialize, populated the materials and materials_by_category dictionaries with their appropiate vars (See these variables for more info) diff --git a/code/controllers/subsystem/movement/hyperspace_drift.dm b/code/controllers/subsystem/movement/hyperspace_drift.dm new file mode 100644 index 00000000000..bd1ac67a6f0 --- /dev/null +++ b/code/controllers/subsystem/movement/hyperspace_drift.dm @@ -0,0 +1,6 @@ +///This subsystem handles the hyperspace shuttle pull movement loops +MOVEMENT_SUBSYSTEM_DEF(hyperspace_drift) + name = "Hyperspace Drift" + priority = FIRE_PRIORITY_HYPERSPACE_DRIFT + flags = SS_NO_INIT|SS_TICKER + runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME diff --git a/code/controllers/subsystem/movement/movement.dm b/code/controllers/subsystem/movement/movement.dm index 39761b633a8..c43debda543 100644 --- a/code/controllers/subsystem/movement/movement.dm +++ b/code/controllers/subsystem/movement/movement.dm @@ -104,12 +104,12 @@ SUBSYSTEM_DEF(movement) smash_bucket(bucket_time = loop.timer) // We can't pass an index in for context because we don't know our position /datum/controller/subsystem/movement/proc/add_loop(datum/move_loop/add) - add.start_loop() + add.loop_started() if(QDELETED(add)) return queue_loop(add) /datum/controller/subsystem/movement/proc/remove_loop(datum/move_loop/remove) dequeue_loop(remove) - remove.stop_loop() + remove.loop_stopped() diff --git a/code/controllers/subsystem/movement/movement_types.dm b/code/controllers/subsystem/movement/movement_types.dm index a3d1165b8a3..2d3f3ba84b0 100644 --- a/code/controllers/subsystem/movement/movement_types.dm +++ b/code/controllers/subsystem/movement/movement_types.dm @@ -25,6 +25,8 @@ var/timer = 0 ///Is this loop running or not var/running = FALSE + ///Track if we're currently paused + var/paused = FALSE /datum/move_loop/New(datum/movement_packet/owner, datum/controller/subsystem/movement/controller, atom/moving, priority, flags, datum/extra_info) src.owner = owner @@ -51,7 +53,8 @@ return TRUE return FALSE -/datum/move_loop/proc/start_loop() +///Called when a loop is starting by a movement subsystem +/datum/move_loop/proc/loop_started() SHOULD_CALL_PARENT(TRUE) SEND_SIGNAL(src, COMSIG_MOVELOOP_START) running = TRUE @@ -62,7 +65,8 @@ return timer = world.time + delay -/datum/move_loop/proc/stop_loop() +///Called when a loop is stopped, doesn't stop the loop itself +/datum/move_loop/proc/loop_stopped() SHOULD_CALL_PARENT(TRUE) running = FALSE SEND_SIGNAL(src, COMSIG_MOVELOOP_STOP) @@ -126,6 +130,25 @@ /datum/move_loop/proc/move() return FALSE + +///Pause our loop untill restarted with resume_loop() +/datum/move_loop/proc/pause_loop() + if(!controller || !running || paused) //we dead + return + + //Dequeue us from our current bucket + controller.dequeue_loop(src) + paused = TRUE + +///Resume our loop after being paused by pause_loop() +/datum/move_loop/proc/resume_loop() + if(!controller || !running || !paused) + return + + controller.queue_loop(src) + timer = world.time + paused = FALSE + ///Removes the atom from some movement subsystem. Defaults to SSmovement /datum/controller/subsystem/move_manager/proc/stop_looping(atom/movable/moving, datum/controller/subsystem/movement/subsystem = SSmovement) var/datum/movement_packet/our_info = moving.move_packet @@ -168,7 +191,7 @@ /datum/move_loop/move/move() var/atom/old_loc = moving.loc - moving.Move(get_step(moving, direction), direction) + moving.Move(get_step(moving, direction), direction, FALSE, !(flags & MOVEMENT_LOOP_NO_DIR_UPDATE)) // We cannot rely on the return value of Move(), we care about teleports and it doesn't // Moving also can be null on occasion, if the move deleted it and therefor us return old_loc != moving?.loc @@ -376,7 +399,7 @@ return TRUE return FALSE -/datum/move_loop/has_target/jps/start_loop() +/datum/move_loop/has_target/jps/loop_started() . = ..() INVOKE_ASYNC(src, PROC_REF(recalculate_path)) diff --git a/code/datums/components/onwear_mood.dm b/code/datums/components/onwear_mood.dm index 886652d2057..8361a7653de 100644 --- a/code/datums/components/onwear_mood.dm +++ b/code/datums/components/onwear_mood.dm @@ -7,7 +7,7 @@ /// what slots it needs to be equipped to to work var/slot_equip -/datum/component/onwear_mood/Initialize(datum/mood_event/saved_event, examine_string, slot_equip = ITEM_SLOT_ON_BODY) +/datum/component/onwear_mood/Initialize(datum/mood_event/saved_event_type, examine_string, slot_equip = ITEM_SLOT_ON_BODY) if(!isitem(parent)) return COMPONENT_INCOMPATIBLE diff --git a/code/datums/components/shuttle_cling.dm b/code/datums/components/shuttle_cling.dm new file mode 100644 index 00000000000..0f2042ede68 --- /dev/null +++ b/code/datums/components/shuttle_cling.dm @@ -0,0 +1,158 @@ + +//Below defines are for the is_holding_on proc to see how well they're holding on and respond accordingly +///Instead of a high move force we just get launched away dramatically because we're that hopeless +#define SUPER_NOT_HOLDING_ON 0 +///We're not holdin on and will get thrown off +#define NOT_HOLDING_ON 1 +///We're holding on, but will be pulled slowly +#define CLINGING 2 +///We're holding on really well and aren't suffering from any pull +#define ALL_GOOD 3 + +///Gets added to all movables that enter hyperspace and are supposed to suffer from "hyperspace drift" +///This lets people fly around shuttles during transit using jetpacks, or cling to the side if they got a spacesuit +///Dumping into deepspace is handled by the hyperspace turf, not the component. +///Not giving something this component while on hyperspace is safe, it just means free movement like carps +/datum/component/shuttle_cling + ///The direction we push stuff towards + var/direction + ///Path to the hyperspace tile, so we know if we're in hyperspace + var/hyperspace_type = /turf/open/space/transit + + ///Our moveloop, handles the transit pull + var/datum/move_loop/move/hyperloop + + ///If we can "hold on", how often do we move? + var/clinging_move_delay = 1 SECONDS + ///If we can't hold onto anything, how fast do we get pulled away? + var/not_clinging_move_delay = 0.2 SECONDS + +/datum/component/shuttle_cling/Initialize(direction) + . = ..() + + if(!ismovable(parent)) + return COMPONENT_INCOMPATIBLE + + src.direction = direction + + ADD_TRAIT(parent, TRAIT_HYPERSPACED, src) + + RegisterSignals(parent, list(COMSIG_MOVABLE_MOVED, COMSIG_MOVABLE_UNBUCKLE, COMSIG_ATOM_NO_LONGER_PULLED), PROC_REF(update_state)) + + hyperloop = SSmove_manager.move(moving = parent, direction = direction, delay = not_clinging_move_delay, subsystem = SShyperspace_drift, priority = MOVEMENT_ABOVE_SPACE_PRIORITY, flags = MOVEMENT_LOOP_START_FAST | MOVEMENT_LOOP_NO_DIR_UPDATE) + + update_state(parent) //otherwise we'll get moved 1 tile before we can correct ourselves, which isnt super bad but just looks jank + +///Check if we're in hyperspace and our state in hyperspace +/datum/component/shuttle_cling/proc/update_state() + SIGNAL_HANDLER + + if(!is_on_hyperspace(parent)) + qdel(src) + return + + var/should_loop = FALSE + + switch(is_holding_on(parent)) + if(SUPER_NOT_HOLDING_ON) + launch_very_hard(parent) + should_loop = TRUE + if(NOT_HOLDING_ON) + hyperloop.set_delay(not_clinging_move_delay) + should_loop = TRUE + hyperloop.direction = direction //we're not close to anything so reset direction if we got diagonalized + if(CLINGING) + hyperloop.set_delay(clinging_move_delay) + should_loop = TRUE + update_drift_direction(parent) + if(ALL_GOOD) + should_loop = FALSE + + //Do pause/unpause/nothing for the hyperloop + if(should_loop && hyperloop.paused) + hyperloop.resume_loop() + else if(!should_loop && !hyperloop.paused) + hyperloop.pause_loop() + +///Check if we're "holding on" to the shuttle +/datum/component/shuttle_cling/proc/is_holding_on(atom/movable/movee) + if(movee.pulledby || !isturf(movee.loc)) + return ALL_GOOD + + if(!isliving(movee)) + if(is_tile_solid(get_step(movee, direction))) //something is blocking us so do the cool drift + return CLINGING + return SUPER_NOT_HOLDING_ON + + var/mob/living/living = movee + + //Check if we can interact with stuff (checks for alive, arms, stun, etc) + if(!living.canUseTopic(living, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE, need_hands = TRUE)) + return NOT_HOLDING_ON + + if(living.buckled) + return ALL_GOOD + + for(var/atom/handlebar in range(living, 1)) + if(isclosedturf(handlebar)) + return CLINGING + if(isobj(handlebar)) + var/obj/object = handlebar + if(object.anchored && object.density) + return CLINGING + return NOT_HOLDING_ON + +///Are we on a hyperspace tile? There's some special bullshit with lattices so we just wrap this check +/datum/component/shuttle_cling/proc/is_on_hyperspace(atom/movable/clinger) + if(istype(clinger.loc, hyperspace_type) && !(locate(/obj/structure/lattice) in clinger.loc)) + return TRUE + return FALSE + +///Launch the atom very hard, away from hyperspace +/datum/component/shuttle_cling/proc/launch_very_hard(atom/movable/byebye) + byebye.safe_throw_at(get_edge_target_turf(byebye, direction), 200, 1, spin = TRUE, force = MOVE_FORCE_EXTREMELY_STRONG) + +///Check if we arent just being blocked, and if we are give us some diagonal push so we cant just infinitely cling to the front +/datum/component/shuttle_cling/proc/update_drift_direction(atom/movable/clinger) + var/turf/potential_blocker = get_step(clinger, direction) + //We are not being blocked, so just give us cardinal drift + if(!is_tile_solid(potential_blocker)) + hyperloop.direction = direction + return + + //We're already moving diagonally + if(hyperloop.direction != direction) + var/side_dir = hyperloop.direction - direction + + if(is_tile_solid(get_step(clinger, side_dir))) + hyperloop.direction = direction + turn(side_dir, 180) //We're bumping a wall to the side, so switch to the other side_dir (yes this adds pingpong protocol) + return + + //Get the directions from the side of our current drift direction (so if we have drift south, get all cardinals and remove north and south, leaving only east and west) + var/side_dirs = shuffle(GLOB.cardinals - direction - turn(direction, 180)) + + //We check if one side is solid + if(!is_tile_solid(get_step(clinger, side_dirs[1]))) + hyperloop.direction = direction + side_dirs[1] + else //if one side isnt solid, send it to the other side (it can also be solid but we dont care cause we're boxed in then and not like itll matter much then) + hyperloop.direction = direction + side_dirs[2] + +///Check if it's a closed turf or contains a dense object +/datum/component/shuttle_cling/proc/is_tile_solid(turf/maybe_solid) + if(isclosedturf(maybe_solid)) + return TRUE + for(var/obj/blocker in maybe_solid.contents) + if(blocker.density) + return TRUE + return FALSE + +/datum/component/shuttle_cling/Destroy(force, silent) + REMOVE_TRAIT(parent, TRAIT_HYPERSPACED, src) + QDEL_NULL(hyperloop) + + return ..() + +#undef SUPER_NOT_HOLDING_ON +#undef NOT_HOLDING_ON +#undef CLINGING +#undef ALL_GOOD diff --git a/code/datums/status_effects/debuffs/debuffs.dm b/code/datums/status_effects/debuffs/debuffs.dm index 5d53d9f1cad..519904aaabf 100644 --- a/code/datums/status_effects/debuffs/debuffs.dm +++ b/code/datums/status_effects/debuffs/debuffs.dm @@ -417,23 +417,33 @@ alert_type = null duration = -1 +/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() - 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) + 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/thing in throat.wounds) - var/datum/wound/W = thing - if(W.wound_type == WOUND_SLASH && W.severity > WOUND_SEVERITY_MODERATE) + for(var/datum/wound/bleeding_thing as anything in throat.wounds) + if(bleeding_thing.wound_type == WOUND_SLASH && bleeding_thing.severity > WOUND_SEVERITY_MODERATE) 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")) + +/datum/status_effect/neck_slice/get_examine_text() + return span_warning("[owner.p_their(TRUE)] neck is cut and is bleeding profusely!") /mob/living/proc/apply_necropolis_curse(set_curse) var/datum/status_effect/necropolis_curse/C = has_status_effect(/datum/status_effect/necropolis_curse) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index cb5ad2241a0..fa8db5fe2f0 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -516,7 +516,7 @@ // Here's where we rewrite how byond handles movement except slightly different // To be removed on step_ conversion // All this work to prevent a second bump -/atom/movable/Move(atom/newloc, direction, glide_size_override = 0) +/atom/movable/Move(atom/newloc, direction, glide_size_override = 0, update_dir = TRUE) . = FALSE if(!newloc || newloc == loc) return @@ -524,7 +524,7 @@ if(!direction) direction = get_dir(src, newloc) - if(set_dir_on_move && dir != direction && !face_mouse) // SKYRAT EDIT CHANGE + if(set_dir_on_move && dir != direction && update_dir && !face_mouse) // SKYRAT EDIT - && !face_mouse setDir(direction) var/is_multi_tile_object = is_multi_tile_object(src) @@ -589,7 +589,7 @@ //////////////////////////////////////// -/atom/movable/Move(atom/newloc, direct, glide_size_override = 0) +/atom/movable/Move(atom/newloc, direct, glide_size_override = 0, update_dir = TRUE) var/atom/movable/pullee = pulling var/turf/current_turf = loc if(!moving_from_pull) @@ -650,7 +650,7 @@ moving_diagonally = SECOND_DIAG_STEP . = step(src, SOUTH) if(moving_diagonally == SECOND_DIAG_STEP) - if(!. && set_dir_on_move && !face_mouse) // SKYRAT EDIT CHANGE + if(!. && set_dir_on_move && update_dir && !face_mouse) // SKYRAT EDIT CHANGE - && !face_mouse setDir(first_step_dir) else if(!inertia_moving) newtonian_move(direct) @@ -691,7 +691,7 @@ last_move = direct - if(set_dir_on_move && dir != direct && !face_mouse) // SKYRAT EDIT CHANGE + if(set_dir_on_move && dir != direct && update_dir && !face_mouse) // SKYRAT EDIT CHANGE - && !face_mouse) setDir(direct) if(. && has_buckled_mobs() && !handle_buckled_mob_movement(loc, direct, glide_size_override)) //movement failed due to buckled mob(s) . = FALSE diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 0e29e62bf24..04d0efa487a 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -355,7 +355,7 @@ . += span_notice("The status display reads: Storing up to [materials.max_amount] material units.
Material consumption at [creation_efficiency*100]%.") /obj/machinery/autolathe/proc/can_build(datum/design/D, amount = 1) - if(length(D.make_reagents)) + if(D.make_reagent) return FALSE var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : creation_efficiency) diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 94556192c56..8700a36ddaf 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -214,15 +214,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/button/door, 24) /obj/machinery/button/door/indestructible resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF -/datum/armor/machinery_button - melee = 50 - bullet = 50 - laser = 50 - energy = 50 - bomb = 10 - fire = 90 - acid = 70 - /obj/machinery/button/door/setup_device() if(!device) if(normaldoorcontrol) @@ -321,15 +312,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/button/door, 24) device_type = /obj/item/assembly/control/curtain var/sync_doors = TRUE -/datum/armor/machinery_button - melee = 50 - bullet = 50 - laser = 50 - energy = 50 - bomb = 10 - fire = 90 - acid = 70 - /obj/machinery/button/curtain/setup_device() var/obj/item/assembly/control/curtain = device curtain.sync_doors = sync_doors @@ -366,15 +348,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/button/door, 24) /// The specific lift id of the tram we're calling. var/lift_id = MAIN_STATION_TRAM -/datum/armor/machinery_button - melee = 50 - bullet = 50 - laser = 50 - energy = 50 - bomb = 10 - fire = 90 - acid = 70 - /obj/machinery/button/tram/setup_device() var/obj/item/assembly/control/tram/tram_device = device tram_device.initial_id = id diff --git a/code/game/machinery/computer/orders/order_computer/cook_order.dm b/code/game/machinery/computer/orders/order_computer/cook_order.dm index 0b0de93b713..2a235660a76 100644 --- a/code/game/machinery/computer/orders/order_computer/cook_order.dm +++ b/code/game/machinery/computer/orders/order_computer/cook_order.dm @@ -8,7 +8,7 @@ CATEGORY_SAUCES_REAGENTS, ) -/obj/machinery/computer/order_console/cook/order_groceries(mob/living/purchaser, obj/item/card/id/card, list/groceries, ltsrbt_delivered = FALSE) +/obj/machinery/computer/order_console/cook/order_groceries(mob/living/purchaser, obj/item/card/id/card, list/groceries) say("Thank you for your purchase! It will arrive on the next cargo shuttle!") radio.talk_into(src, "The kitchen has ordered groceries which will arrive on the cargo shuttle! Please make sure it gets to them as soon as possible!", radio_channel) for(var/datum/orderable_item/ordered_item in groceries) diff --git a/code/game/machinery/computer/orders/order_computer/golem_order.dm b/code/game/machinery/computer/orders/order_computer/golem_order.dm index 848cd720f39..c428ab3634a 100644 --- a/code/game/machinery/computer/orders/order_computer/golem_order.dm +++ b/code/game/machinery/computer/orders/order_computer/golem_order.dm @@ -3,7 +3,6 @@ circuit = /obj/item/circuitboard/computer/order_console/mining/golem forced_express = TRUE express_cost_multiplier = 1 - uses_ltsrbt = FALSE order_categories = list( CATEGORY_GOLEM, CATEGORY_MINING, diff --git a/code/game/machinery/computer/orders/order_computer/mining_order.dm b/code/game/machinery/computer/orders/order_computer/mining_order.dm index 5cceac263fa..e50d3d7e22a 100644 --- a/code/game/machinery/computer/orders/order_computer/mining_order.dm +++ b/code/game/machinery/computer/orders/order_computer/mining_order.dm @@ -1,3 +1,6 @@ +#define MINING_SHIPPING_MULTIPLIER 0.65 +#define GET_MINING_SHIPPING_MULTIPLIER(cost) round(cost * MINING_SHIPPING_MULTIPLIER,5) + /obj/machinery/computer/order_console/mining name = "mining equipment order console" desc = "An equipment shop for miners, points collected at an ore redemption machine can be spent here." @@ -8,8 +11,12 @@ circuit = /obj/item/circuitboard/computer/order_console/mining cooldown_time = 10 SECONDS //just time to let you know your order went through. - express_cost_multiplier = 1.5 - uses_ltsrbt = TRUE + express_cost_multiplier = 1 + purchase_tooltip = @{"Your purchases will arrive at cargo, + and hopefully get delivered by them. + 35% cheaper than express delivery."} + express_tooltip = @{"Sends your purchases instantly."} + order_categories = list( CATEGORY_MINING, CATEGORY_CONSUMABLES, @@ -20,16 +27,15 @@ /obj/machinery/computer/order_console/mining/purchase_items(obj/item/card/id/card, express = FALSE) var/final_cost = get_total_cost() var/failure_message = "Sorry, but you do not have enough mining points." - if(express) - final_cost *= express_cost_multiplier - failure_message += "Remember, Express upcharges the cost!" + if(!express) + final_cost = GET_MINING_SHIPPING_MULTIPLIER(final_cost) if(final_cost <= card.mining_points) card.mining_points -= final_cost return TRUE say(failure_message) return FALSE -/obj/machinery/computer/order_console/mining/order_groceries(mob/living/purchaser, obj/item/card/id/card, list/groceries, ltsrbt_delivered = FALSE) +/obj/machinery/computer/order_console/mining/order_groceries(mob/living/purchaser, obj/item/card/id/card, list/groceries) var/list/things_to_order = list() for(var/datum/orderable_item/item as anything in groceries) things_to_order[item.item_path] = groceries[item] @@ -53,25 +59,14 @@ cost_type = "mp", can_be_cancelled = FALSE, ) - if(ltsrbt_delivered) - var/obj/machinery/mining_ltsrbt/ltsrbt - for(var/obj/machinery/mining_ltsrbt/all_ltsrbts as anything in GLOB.mining_ltsrbt) - if(all_ltsrbts.machine_stat & (NOPOWER|BROKEN|MAINT)) //not functional - continue - if(!all_ltsrbts.enabled) //not enabled - continue - ltsrbt = all_ltsrbts - break - if(ltsrbt && ltsrbt.recieve_order(new_order)) - return - say("Found no functional mining LTSRBTs. If there is one, it is likely destroyed, powered down, or under maintenance. Your delivery has instead been rerouted to Cargo.") - else - say("Thank you for your purchase! It will arrive on the next cargo shuttle!") + say("Thank you for your purchase! It will arrive on the next cargo shuttle!") radio.talk_into(src, "A shaft miner has ordered equipment which will arrive on the cargo shuttle! Please make sure it gets to them as soon as possible!", radio_channel) SSshuttle.shopping_list += new_order /obj/machinery/computer/order_console/mining/ui_data(mob/user) var/list/data = ..() + var/cost = get_total_cost() + data["total_cost"] = "[GET_MINING_SHIPPING_MULTIPLIER(cost)] (Express: [cost]) " if(!isliving(user)) return data var/mob/living/living_user = user @@ -86,6 +81,15 @@ if(!.) flick("mining-deny", src) +/obj/machinery/computer/order_console/mining/ui_static_data(mob/user) + var/list/data = ..() + for(var/list/order in data["order_datums"]) + var/cost = order["cost"] + if(isnull(cost)) //sanity check + continue + order["cost"] = GET_MINING_SHIPPING_MULTIPLIER(cost) // change costs to reflect mining shipping instead + return data + /obj/machinery/computer/order_console/mining/attackby(obj/item/weapon, mob/user, params) if(istype(weapon, /obj/item/mining_voucher)) redeem_voucher(weapon, user) @@ -206,3 +210,5 @@ #undef TO_POINT_CARD #undef TO_USER_ID +#undef MINING_SHIPPING_MULTIPLIER +#undef GET_MINING_SHIPPING_MULTIPLIER diff --git a/code/game/machinery/computer/orders/order_computer/order_computer.dm b/code/game/machinery/computer/orders/order_computer/order_computer.dm index f0933f0694a..ec4e986515c 100644 --- a/code/game/machinery/computer/orders/order_computer/order_computer.dm +++ b/code/game/machinery/computer/orders/order_computer/order_computer.dm @@ -7,14 +7,17 @@ GLOBAL_LIST_EMPTY(order_console_products) icon_screen = "request" icon_keyboard = "generic_key" light_color = LIGHT_COLOR_ORANGE + ///Tooltip for the express button in TGUI + var/express_tooltip = @{"Sends your purchases instantly, + but locks the console longer and increases the price!"} + ///Tooltip for the purchase button in TGUI + var/purchase_tooltip = @{"Your purchases will arrive at cargo, + and hopefully get delivered by them."} ///Cooldown between order uses. COOLDOWN_DECLARE(order_cooldown) ///Cooldown time between uses, express console will have extra time depending on express_cost_multiplier. var/cooldown_time = 60 SECONDS - ///Boolean on whether they can bluespace orders using a '/obj/machinery/mining_ltsrbt' - var/uses_ltsrbt = FALSE - ///The radio the console can speak into var/obj/item/radio/radio ///The channel we will attempt to speak into through our radio. @@ -63,7 +66,8 @@ GLOBAL_LIST_EMPTY(order_console_products) /obj/machinery/computer/order_console/ui_data(mob/user) var/list/data = list() - data["total_cost"] = get_total_cost() + var/cost = get_total_cost() + data["total_cost"] = "[cost] (Express: [cost*express_cost_multiplier])" data["off_cooldown"] = COOLDOWN_FINISHED(src, order_cooldown) if(!isliving(user)) @@ -77,7 +81,8 @@ GLOBAL_LIST_EMPTY(order_console_products) /obj/machinery/computer/order_console/ui_static_data(mob/user) var/list/data = list() - data["ltsrbt_available"] = (uses_ltsrbt && GLOB.mining_ltsrbt.len) + data["express_tooltip"] = express_tooltip + data["purchase_tooltip"] = purchase_tooltip data["forced_express"] = forced_express data["order_categories"] = order_categories data["order_datums"] = list() @@ -128,7 +133,7 @@ GLOBAL_LIST_EMPTY(order_console_products) if(get_total_cost() < CARGO_CRATE_VALUE) say("For the delivery order needs to cost more or equal to [CARGO_CRATE_VALUE] points!") return - order_groceries(living_user, used_id_card, grocery_list, ltsrbt_delivered = (action == "ltsrbt_deliver")) + order_groceries(living_user, used_id_card, grocery_list) grocery_list.Cut() COOLDOWN_START(src, order_cooldown, cooldown_time) if("express") @@ -180,5 +185,5 @@ GLOBAL_LIST_EMPTY(order_console_products) say(failure_message) return FALSE -/obj/machinery/computer/order_console/proc/order_groceries(mob/living/purchaser, obj/item/card/id/card, list/groceries, ltsrbt_delivered = FALSE) +/obj/machinery/computer/order_console/proc/order_groceries(mob/living/purchaser, obj/item/card/id/card, list/groceries) return diff --git a/code/game/machinery/computer/orders/order_items/mining/order_mining.dm b/code/game/machinery/computer/orders/order_items/mining/order_mining.dm index 033a0769249..2e7ad9c4c26 100644 --- a/code/game/machinery/computer/orders/order_items/mining/order_mining.dm +++ b/code/game/machinery/computer/orders/order_items/mining/order_mining.dm @@ -22,12 +22,6 @@ desc = "A mining-themed MODsuit that works best when in a mining environment." cost_per_order = 3000 -/datum/orderable_item/mining/mining_ltsrbt - item_path = /obj/item/circuitboard/machine/mining_ltsrbt - name = "Mining LTSRBT Board" - desc = "Tired of waiting on the Cargo shuttle? This item lets you bluespace mining orders directly to the station." - cost_per_order = 750 - /datum/orderable_item/mining/mining_belt item_path = /obj/item/storage/belt/mining cost_per_order = 500 diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 57c1e531d36..ab73335d865 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -174,14 +174,6 @@ actions_types = list(/datum/action/item_action/toggle_barrier_spread) var/mode = SINGLE -/datum/armor/barricade_security - melee = 10 - bullet = 50 - laser = 50 - energy = 50 - bomb = 10 - fire = 10 - /obj/item/grenade/barrier/examine(mob/user) . = ..() . += span_notice("Alt-click to toggle modes.") @@ -240,14 +232,6 @@ w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK -/datum/armor/barricade_security - melee = 10 - bullet = 50 - laser = 50 - energy = 50 - bomb = 10 - fire = 10 - /obj/item/deployable_turret_folded/Initialize(mapload) . = ..() AddComponent(/datum/component/deployable, 5 SECONDS, /obj/machinery/deployable_turret/hmg, delete_on_use = TRUE) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index a780946e64a..86091f01119 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -698,6 +698,27 @@ ui_interact(user) +///Performs basic checks to make sure we are still able to hack an airlock. If control is restored early through outside means, opens the airlock's control interface. +/obj/machinery/door/airlock/proc/check_hacking(mob/user, success_message) + if(QDELETED(src)) + to_chat(user, span_warning("Connection lost! Unable to locate airlock on network.")) + aiHacking = FALSE + return FALSE + if(canAIControl(user)) + to_chat(user, span_notice("Alert cancelled. Airlock control has been restored without our assistance.")) + aiHacking = FALSE + if(user) + attack_ai(user) //bring up airlock dialog + return + else if(!canAIHack()) + to_chat(user, span_warning("Connection lost! Unable to hack airlock.")) + aiHacking = FALSE + return + if(success_message) + to_chat(user, span_notice(success_message)) + return TRUE + +///Attemps to override airlocks that have the AI control wire disabled. /obj/machinery/door/airlock/proc/hack(mob/user) set waitfor = 0 if(!aiHacking) @@ -705,75 +726,33 @@ to_chat(user, span_warning("Airlock AI control has been blocked. Beginning fault-detection.")) sleep(5 SECONDS) - - if(QDELETED(src)) - to_chat(user, span_warning("Connection lost! Unable to hack airlock.")) + if(!check_hacking(user, "Fault confirmed: airlock control wire disabled or cut.")) return - if(canAIControl(user)) - to_chat(user, span_notice("Alert cancelled. Airlock control has been restored without our assistance.")) - aiHacking = FALSE - return - else if(!canAIHack()) - to_chat(user, span_warning("Connection lost! Unable to hack airlock.")) - aiHacking = FALSE - return - to_chat(user, span_notice("Fault confirmed: airlock control wire disabled or cut.")) sleep(2 SECONDS) - - if(QDELETED(src)) - to_chat(user, span_warning("Connection lost! Unable to hack airlock.")) + if(!check_hacking(user, "Attempting to hack into airlock. This may take some time.")) return - to_chat(user, span_notice("Attempting to hack into airlock. This may take some time.")) sleep(20 SECONDS) - - if(QDELETED(src)) - to_chat(user, span_warning("Connection lost! Unable to hack airlock.")) + if(!check_hacking(user, "Upload access confirmed. Loading control program into airlock software.")) return - if(canAIControl(user)) - to_chat(user, span_notice("Alert cancelled. Airlock control has been restored without our assistance.")) - aiHacking = FALSE - return - else if(!canAIHack()) - to_chat(user, span_warning("Connection lost! Unable to hack airlock.")) - aiHacking = FALSE - return - to_chat(user, span_notice("Upload access confirmed. Loading control program into airlock software.")) sleep(17 SECONDS) - - if(QDELETED(src)) - to_chat(user, span_warning("Connection lost! Unable to hack airlock.")) + if(!check_hacking(user,"Transfer complete. Forcing airlock to execute program.")) return - if(canAIControl(user)) - to_chat(user, span_notice("Alert cancelled. Airlock control has been restored without our assistance.")) - aiHacking = FALSE - return - else if(!canAIHack()) - to_chat(user, span_warning("Connection lost! Unable to hack airlock.")) - aiHacking = FALSE - return - to_chat(user, span_notice("Transfer complete. Forcing airlock to execute program.")) sleep(5 SECONDS) - - if(QDELETED(src)) - to_chat(user, span_warning("Connection lost! Unable to hack airlock.")) + if(!check_hacking(user, "Receiving control information from airlock.")) return - //disable blocked control - aiControlDisabled = AI_WIRE_HACKED - to_chat(user, span_notice("Receiving control information from airlock.")) + aiControlDisabled = AI_WIRE_HACKED //disable blocked control sleep(1 SECONDS) - - if(QDELETED(src)) - to_chat(user, span_warning("Connection lost! Unable to hack airlock.")) - return - //bring up airlock dialog aiHacking = FALSE + if(QDELETED(src)) + to_chat(user, span_warning("Connection lost! Unable to locate airlock on network.")) + return if(user) - attack_ai(user) + attack_ai(user) //bring up airlock dialog /obj/machinery/door/airlock/attack_animal(mob/user, list/modifiers) if(isElectrified() && shock(user, 100)) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 7f1a0ab079d..62f025f1435 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -472,15 +472,6 @@ /obj/machinery/door/morgue icon = 'icons/obj/doors/doormorgue.dmi' -/datum/armor/machinery_door - melee = 30 - bullet = 30 - laser = 20 - energy = 20 - bomb = 10 - fire = 80 - acid = 70 - /obj/machinery/door/get_dumping_location() return null diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index d511123f8c1..6b1f6fdea95 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -685,15 +685,6 @@ density = TRUE alarm_type = FIRELOCK_ALARM_TYPE_GENERIC -/datum/armor/door_firedoor - melee = 10 - bullet = 30 - laser = 20 - energy = 20 - bomb = 30 - fire = 95 - acid = 70 - /obj/machinery/door/firedoor/border_only/Initialize(mapload) . = ..() adjust_lights_starting_offset() @@ -766,15 +757,6 @@ var/constructionStep = CONSTRUCTION_NO_CIRCUIT var/reinforced = 0 -/datum/armor/door_firedoor - melee = 10 - bullet = 30 - laser = 20 - energy = 20 - bomb = 30 - fire = 95 - acid = 70 - /obj/structure/firelock_frame/examine(mob/user) . = ..() switch(constructionStep) diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index 217891471df..947def3087e 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -176,15 +176,6 @@ var/checkdir = 4 //door won't open if turf in this dir is `turftype` var/turftype = /turf/open/space -/datum/armor/door_poddoor - melee = 50 - bullet = 100 - laser = 100 - energy = 100 - bomb = 50 - fire = 100 - acid = 70 - /obj/machinery/door/poddoor/shuttledock/proc/check() var/turf/turf = get_step(src, checkdir) if(!istype(turf, turftype)) diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 86115ed501f..cef95421321 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -441,10 +441,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/firealarm, 26) desc = "Cuban Pete is in the house!" var/static/party_overlay -/datum/armor/machinery_firealarm - fire = 90 - acid = 30 - /obj/machinery/firealarm/partyalarm/reset() if (machine_stat & (NOPOWER|BROKEN)) return @@ -481,10 +477,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/firealarm, 26) var/obj/machinery/firealarm/attached_alarm -/datum/armor/machinery_firealarm - fire = 90 - acid = 30 - /obj/item/circuit_component/firealarm/populate_ports() alarm_trigger = add_input_port("Set", PORT_TYPE_SIGNAL) reset_trigger = add_input_port("Reset", PORT_TYPE_SIGNAL) diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index c043b9c29ce..4b499ec6fce 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -105,13 +105,6 @@ Possible to do for anyone motivated enough: desc = "It's a floor-mounted device for projecting holographic images. This one will refuse to auto-connect incoming calls." secure = TRUE -/datum/armor/machinery_holopad - melee = 50 - bullet = 20 - laser = 20 - energy = 20 - fire = 50 - /obj/machinery/holopad/secure/Initialize(mapload) . = ..() var/obj/item/circuitboard/machine/holopad/board = circuit @@ -126,13 +119,6 @@ Possible to do for anyone motivated enough: var/datum/proximity_monitor/proximity_monitor var/proximity_range = 1 -/datum/armor/machinery_holopad - melee = 50 - bullet = 20 - laser = 20 - energy = 20 - fire = 50 - /obj/machinery/holopad/tutorial/Initialize(mapload) . = ..() if(proximity_range) @@ -877,13 +863,6 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ var/mob/living/Impersonation var/datum/holocall/HC -/datum/armor/machinery_holopad - melee = 50 - bullet = 20 - laser = 20 - energy = 20 - fire = 50 - /obj/effect/overlay/holo_pad_hologram/Destroy() Impersonation = null if(!QDELETED(HC)) diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 34a613e1c87..83f237d2e9d 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -80,15 +80,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/sparker, 26) /obj/machinery/sparker/ordmix id = INCINERATOR_ORDMIX_IGNITER -/datum/armor/machinery_igniter - melee = 50 - bullet = 30 - laser = 70 - energy = 50 - bomb = 20 - fire = 100 - acid = 70 - /obj/machinery/sparker/Initialize(mapload) . = ..() spark_system = new /datum/effect_system/spark_spread diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 82426663dac..12980a91f3c 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -656,15 +656,6 @@ DEFINE_BITFIELD(turret_flags, list( button_icon = 'icons/mob/actions/actions_mecha.dmi' button_icon_state = "mech_cycle_equip_off" -/datum/armor/machinery_porta_turret - melee = 50 - bullet = 30 - laser = 30 - energy = 30 - bomb = 30 - fire = 90 - acid = 90 - /datum/action/turret_toggle/Trigger(trigger_flags) var/obj/machinery/porta_turret/P = target if(!istype(P)) @@ -676,15 +667,6 @@ DEFINE_BITFIELD(turret_flags, list( button_icon = 'icons/mob/actions/actions_mecha.dmi' button_icon_state = "mech_eject" -/datum/armor/machinery_porta_turret - melee = 50 - bullet = 30 - laser = 30 - energy = 30 - bomb = 30 - fire = 90 - acid = 90 - /datum/action/turret_quit/Trigger(trigger_flags) var/obj/machinery/porta_turret/P = target if(!istype(P)) @@ -751,15 +733,6 @@ DEFINE_BITFIELD(turret_flags, list( faction = list(ROLE_SYNDICATE) desc = "A ballistic machine gun auto-turret." -/datum/armor/machinery_porta_turret - melee = 50 - bullet = 30 - laser = 30 - energy = 30 - bomb = 30 - fire = 90 - acid = 90 - /obj/machinery/porta_turret/syndicate/Initialize(mapload) . = ..() AddElement(/datum/element/empprotection, EMP_PROTECT_SELF | EMP_PROTECT_WIRES) @@ -830,15 +803,6 @@ DEFINE_BITFIELD(turret_flags, list( faction = list("silicon") turret_flags = TURRET_FLAG_SHOOT_CRIMINALS | TURRET_FLAG_SHOOT_ANOMALOUS | TURRET_FLAG_SHOOT_HEADS -/datum/armor/syndicate_shuttle - melee = 50 - bullet = 30 - laser = 30 - energy = 30 - bomb = 80 - fire = 90 - acid = 90 - /obj/machinery/porta_turret/ai/assess_perp(mob/living/carbon/human/perp) return 10 //AI turrets shoot at everything not in their faction @@ -851,15 +815,6 @@ DEFINE_BITFIELD(turret_flags, list( mode = TURRET_LETHAL //It would be useless in stun mode anyway faction = list(FACTION_NEUTRAL,"silicon","turret") //Minebots, medibots, etc that should not be shot. -/datum/armor/syndicate_shuttle - melee = 50 - bullet = 30 - laser = 30 - energy = 30 - bomb = 80 - fire = 90 - acid = 90 - /obj/machinery/porta_turret/aux_base/assess_perp(mob/living/carbon/human/perp) return 0 //Never shoot humanoids. You are on your own if Ashwalkers or the like attack! @@ -890,15 +845,6 @@ DEFINE_BITFIELD(turret_flags, list( faction = list(FACTION_NEUTRAL,"silicon","turret") mode = TURRET_LETHAL -/datum/armor/syndicate_shuttle - melee = 50 - bullet = 30 - laser = 30 - energy = 30 - bomb = 80 - fire = 90 - acid = 90 - /obj/machinery/porta_turret/centcom_shuttle/Initialize(mapload) . = ..() AddElement(/datum/element/empprotection, EMP_PROTECT_SELF | EMP_PROTECT_WIRES) @@ -946,15 +892,6 @@ DEFINE_BITFIELD(turret_flags, list( /// List of weakrefs to all turrets var/list/turrets = list() -/datum/armor/syndicate_shuttle - melee = 50 - bullet = 30 - laser = 30 - energy = 30 - bomb = 80 - fire = 90 - acid = 90 - /obj/machinery/turretid/Initialize(mapload, ndir = 0, built = 0) . = ..() if(built) @@ -1114,15 +1051,6 @@ DEFINE_BITFIELD(turret_flags, list( custom_materials = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT) pixel_shift = 29 -/datum/armor/syndicate_shuttle - melee = 50 - bullet = 30 - laser = 30 - energy = 30 - bomb = 80 - fire = 90 - acid = 90 - /obj/item/gun/proc/get_turret_properties() . = list() .["lethal_projectile"] = null @@ -1183,15 +1111,6 @@ DEFINE_BITFIELD(turret_flags, list( turret_flags = TURRET_FLAG_AUTH_WEAPONS var/team_color -/datum/armor/syndicate_shuttle - melee = 50 - bullet = 30 - laser = 30 - energy = 30 - bomb = 80 - fire = 90 - acid = 90 - /obj/machinery/porta_turret/lasertag/assess_perp(mob/living/carbon/human/perp) . = 0 if(team_color == "blue") //Lasertag turrets target the opposing team, how great is that? -Sieve @@ -1235,15 +1154,6 @@ DEFINE_BITFIELD(turret_flags, list( installation = /obj/item/gun/energy/laser/bluetag team_color = "blue" -/datum/armor/syndicate_shuttle - melee = 50 - bullet = 30 - laser = 30 - energy = 30 - bomb = 80 - fire = 90 - acid = 90 - /obj/machinery/porta_turret/lasertag/bullet_act(obj/projectile/P) . = ..() if(on) diff --git a/code/game/machinery/roulette_machine.dm b/code/game/machinery/roulette_machine.dm index 4bd8a9b1b66..d6c5b6f32a6 100644 --- a/code/game/machinery/roulette_machine.dm +++ b/code/game/machinery/roulette_machine.dm @@ -443,15 +443,6 @@ icon_state = "floor_beacon" var/used -/datum/armor/machinery_roulette - melee = 45 - bullet = 30 - laser = 30 - energy = 30 - bomb = 10 - fire = 30 - acid = 30 - /obj/item/roulette_wheel_beacon/attack_self() if(used) return diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index c27351f7765..7587ba9efc4 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -281,10 +281,6 @@ /obj/machinery/space_heater/constructed cell = null -/datum/armor/machinery_space_heater - fire = 80 - acid = 10 - /obj/machinery/space_heater/constructed/Initialize(mapload) . = ..() set_panel_open(TRUE) @@ -313,10 +309,6 @@ var/chem_heating_power = 1 display_panel = FALSE -/datum/armor/machinery_space_heater - fire = 80 - acid = 10 - /obj/machinery/space_heater/improvised_chem_heater/Destroy() . = ..() QDEL_NULL(beaker) diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index a5fc968fe19..b27d18802ab 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -89,13 +89,6 @@ var/decryptkey = "password" var/calibrating = 15 MINUTES //Init reads this and adds world.time, then becomes 0 when that time has passed and the machine works -/datum/armor/machinery_blackbox_recorder - melee = 25 - bullet = 10 - laser = 10 - fire = 50 - acid = 70 - /obj/machinery/telecomms/message_server/Initialize(mapload) . = ..() if (!decryptkey) @@ -167,13 +160,6 @@ server_type = /obj/machinery/telecomms/message_server var/datum/logged -/datum/armor/machinery_blackbox_recorder - melee = 25 - bullet = 10 - laser = 10 - fire = 50 - acid = 70 - /datum/signal/subspace/messaging/New(init_source, init_data) source = init_source data = init_data @@ -224,13 +210,6 @@ var/datum/picture/picture // attached photo var/automated = 0 //automated message -/datum/armor/machinery_blackbox_recorder - melee = 25 - bullet = 10 - laser = 10 - fire = 50 - acid = 70 - /datum/data_tablet_msg/New(param_rec, param_sender, param_message, param_photo) if(param_rec) recipient = param_rec @@ -260,13 +239,6 @@ var/id_auth = "Unauthenticated" var/priority = "Normal" -/datum/armor/machinery_blackbox_recorder - melee = 25 - bullet = 10 - laser = 10 - fire = 50 - acid = 70 - /datum/data_rc_msg/New(param_rec, param_sender, param_message, param_stamp, param_id_auth, param_priority) if(param_rec) rec_dpt = param_rec diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index 7bb81b30c99..e8352cf4e96 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -442,10 +442,6 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) // `initial` does not work here. Neither does instantiating a wall/whatever // and referencing that. I don't know why. -/datum/armor/item_construction - fire = 100 - acid = 50 - /proc/init_holographic_wall() return getHologramIcon( icon('icons/turf/walls/wall.dmi', "wall-0"), @@ -519,10 +515,6 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) name = "hologram" mouse_opacity = MOUSE_OPACITY_TRANSPARENT -/datum/armor/item_construction - fire = 100 - acid = 50 - /obj/effect/rcd_hologram/Initialize(mapload) . = ..() QDEL_IN(src, RCD_HOLOGRAM_FADE_TIME) @@ -786,10 +778,6 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) var/energyfactor = 72 -/datum/armor/item_construction - fire = 100 - acid = 50 - /obj/item/construction/rcd/borg/useResource(amount, mob/user) if(!iscyborg(user)) return 0 @@ -887,10 +875,6 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) inhand_icon_state = "oldrcd" has_ammobar = FALSE -/datum/armor/item_construction - fire = 100 - acid = 50 - /obj/item/construction/rcd/arcd/afterattack(atom/A, mob/user) . = ..() if(range_check(A,user)) @@ -951,10 +935,6 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) var/list/display_options = list() var/color_choice = null -/datum/armor/item_construction - fire = 100 - acid = 50 - /obj/item/construction/rld/Initialize(mapload) . = ..() for(var/option in original_options) @@ -1153,10 +1133,6 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) "Fifth Layer" = 5, ) -/datum/armor/item_construction - fire = 100 - acid = 50 - /obj/item/construction/plumbing/Initialize(mapload) . = ..() @@ -1410,10 +1386,6 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' has_ammobar = TRUE -/datum/armor/item_construction - fire = 100 - acid = 50 - /obj/item/construction/plumbing/research/set_plumbing_designs() plumbing_design_types = list( //category 1 synthesizers @@ -1440,10 +1412,6 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) icon_state = "plumberer_service" has_ammobar = TRUE -/datum/armor/item_construction - fire = 100 - acid = 50 - /obj/item/construction/plumbing/service/set_plumbing_designs() plumbing_design_types = list( //category 1 synthesizers diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 2ca038bceba..7e49b7d8015 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -844,10 +844,6 @@ desc = "An ID card that allows access to bots maintenance protocols." trim = /datum/id_trim/away/old/robo -/datum/armor/card_id - fire = 100 - acid = 100 - /obj/item/card/id/away/deep_storage //deepstorage.dmm space ruin name = "bunker access ID" @@ -859,10 +855,6 @@ var/department_name = ACCOUNT_CIV_NAME registered_age = null -/datum/armor/card_id - fire = 100 - acid = 100 - /obj/item/card/id/departmental_budget/Initialize(mapload) . = ..() var/datum/bank_account/B = SSeconomy.get_dep_account(department_ID) @@ -886,10 +878,6 @@ department_name = ACCOUNT_CAR_NAME icon_state = "car_budget" //saving up for a new tesla -/datum/armor/card_id - fire = 100 - acid = 100 - /obj/item/card/id/departmental_budget/AltClick(mob/living/user) registered_account.bank_card_talk(span_warning("Withdrawing is not compatible with this card design."), TRUE) //prevents the vault bank machine being useless and putting money from the budget to your card to go over personal crates @@ -919,10 +907,6 @@ /// If this is set, will manually override the trim shown for SecHUDs. Intended for admins to VV edit and chameleon ID cards. var/sechud_icon_state_override = null -/datum/armor/card_id - fire = 100 - acid = 100 - /obj/item/card/id/advanced/Initialize(mapload) . = ..() RegisterSignal(src, COMSIG_ITEM_EQUIPPED, PROC_REF(update_intern_status)) @@ -1085,10 +1069,6 @@ assigned_icon_state = "assigned_gold" wildcard_slots = WILDCARD_LIMIT_GOLD -/datum/armor/card_id - fire = 100 - acid = 100 - /obj/item/card/id/advanced/gold/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_TASTEFULLY_THICK_ID_CARD, ROUNDSTART_TRAIT) @@ -1100,10 +1080,6 @@ trim = /datum/id_trim/job/captain registered_age = null -/datum/armor/card_id - fire = 100 - acid = 100 - /obj/item/card/id/advanced/gold/captains_spare/update_label() //so it doesn't change to Captain's ID card (Captain) on a sneeze if(registered_name == "Captain") name = "[initial(name)][(!assignment || assignment == "Captain") ? "" : " ([assignment])"]" @@ -1197,10 +1173,6 @@ registered_name = "Captain" registered_age = null -/datum/armor/card_id - fire = 100 - acid = 100 - /obj/item/card/id/advanced/black/syndicate_command/captain_id/syndie_spare/update_label() if(registered_name == "Captain") name = "[initial(name)][(!assignment || assignment == "Captain") ? "" : " ([assignment])"]" @@ -1217,10 +1189,6 @@ trim = /datum/id_trim/admin wildcard_slots = WILDCARD_LIMIT_ADMIN -/datum/armor/card_id - fire = 100 - acid = 100 - /obj/item/card/id/advanced/debug/Initialize(mapload) . = ..() registered_account = SSeconomy.get_dep_account(ACCOUNT_CAR) @@ -1249,10 +1217,6 @@ /// Time left on a card till they can leave. var/time_left = 0 -/datum/armor/card_id - fire = 100 - acid = 100 - /obj/item/card/id/advanced/prisoner/attackby(obj/item/card/id/C, mob/user) ..() var/list/id_access = C.GetAccess() @@ -1362,10 +1326,6 @@ /// Weak ref to the ID card we're currently attempting to steal access from. var/datum/weakref/theft_target -/datum/armor/card_id - fire = 100 - acid = 100 - /obj/item/card/id/advanced/chameleon/Initialize(mapload) . = ..() diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 60235435cdd..14bf5b32df8 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -294,10 +294,6 @@ nocell_state = "defibcompact-nocell" emagged_state = "defibcompact-emagged" -/datum/armor/item_defibrillator - fire = 50 - acid = 50 - /obj/item/defibrillator/compact/item_action_slot_check(slot, mob/user) if(slot & user.getBeltSlot()) return TRUE @@ -324,10 +320,6 @@ /obj/item/defibrillator/compact/combat/loaded cell_removable = FALSE // Don't let people just have an infinite power cell -/datum/armor/item_defibrillator - fire = 50 - acid = 50 - /obj/item/defibrillator/compact/combat/loaded/Initialize(mapload) . = ..() cell = new /obj/item/stock_parts/cell/infinite(src) @@ -372,10 +364,6 @@ var/recharge_time = 6 SECONDS // Only applies to defibs that do not require a defibrilator. See: do_success() var/combat = FALSE //If it penetrates armor and gives additional functionality -/datum/armor/item_defibrillator - fire = 50 - acid = 50 - /obj/item/shockpaddles/Initialize(mapload) . = ..() AddElement(/datum/element/update_icon_updates_onmob, ITEM_SLOT_HANDS|ITEM_SLOT_BACK) @@ -706,10 +694,6 @@ inhand_icon_state = "defibpaddles0" req_defib = FALSE -/datum/armor/item_defibrillator - fire = 50 - acid = 50 - /obj/item/shockpaddles/cyborg/attack(mob/M, mob/user) if(iscyborg(user)) var/mob/living/silicon/robot/R = user diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 98414aaefd0..bb0f20cdb02 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -27,12 +27,13 @@ // examines you when you're holding it in your hand, you will be discovered. // +#define GLASS_SHEET_USES 5 +#define LIGHTBULB_COST 1 +#define BULB_SHARDS_REQUIRED 4 /obj/item/lightreplacer - name = "light replacer" desc = "A device to automatically replace lights. Refill with broken or working light bulbs, or sheets of glass." - icon = 'icons/obj/janitor.dmi' icon_state = "lightreplacer" inhand_icon_state = "electronic" @@ -44,97 +45,95 @@ slot_flags = ITEM_SLOT_BELT force = 8 - var/max_uses = 20 + /// How many uses does our light replacer have? var/uses = 10 - // How much to increase per each glass? - var/increment = 5 - // How much to take from the glass? - var/decrement = 1 + /// The maximum number of lights this replacer can hold + var/max_uses = 20 + /// The light replacer's charge increment (used for adding to cyborg light replacers) var/charge = 1 - // Eating used bulbs gives us bulb shards + /// Eating used bulbs gives us bulb shards. Requires BULB_SHARDS_MAXIMUM to produce a new light. var/bulb_shards = 0 - // when we get this many shards, we get a free bulb. - var/shards_required = 4 - // whether it is "bluespace powered" (can be used at a range) + /// whether it is "bluespace powered" (can be used at a range) var/bluespace_toggle = FALSE /obj/item/lightreplacer/examine(mob/user) . = ..() . += status_string() -/obj/item/lightreplacer/attackby(obj/item/W, mob/user, params) +/obj/item/lightreplacer/attackby(obj/item/insert, mob/user, params) - if(istype(W, /obj/item/stack/sheet/glass)) - var/obj/item/stack/sheet/glass/G = W + if(istype(insert, /obj/item/stack/sheet/glass)) + var/obj/item/stack/sheet/glass/glass_to_insert = insert if(uses >= max_uses) to_chat(user, span_warning("[src.name] is full.")) return - else if(G.use(decrement)) - AddUses(increment) + else if(glass_to_insert.use(LIGHTBULB_COST)) + add_uses(GLASS_SHEET_USES) to_chat(user, span_notice("You insert a piece of glass into \the [src.name]. You have [uses] light\s remaining.")) return else to_chat(user, span_warning("You need one sheet of glass to replace lights!")) - if(istype(W, /obj/item/shard)) + if(istype(insert, /obj/item/shard)) if(uses >= max_uses) to_chat(user, span_warning("\The [src] is full.")) return - if(!user.temporarilyRemoveItemFromInventory(W)) + if(!user.temporarilyRemoveItemFromInventory(insert)) return - AddUses(round(increment*0.75)) + add_uses(round(GLASS_SHEET_USES*0.75)) to_chat(user, span_notice("You insert a shard of glass into \the [src]. You have [uses] light\s remaining.")) - qdel(W) + qdel(insert) return - if(istype(W, /obj/item/light)) - var/obj/item/light/L = W - if(L.status == 0) // LIGHT OKAY + if(istype(insert, /obj/item/light)) + var/obj/item/light/light_to_insert = insert + if(light_to_insert.status == 0) // LIGHT OKAY if(uses < max_uses) - if(!user.temporarilyRemoveItemFromInventory(W)) + if(!user.temporarilyRemoveItemFromInventory(insert)) return - AddUses(1) - qdel(L) + add_uses(1) + qdel(light_to_insert) else - if(!user.temporarilyRemoveItemFromInventory(W)) + if(!user.temporarilyRemoveItemFromInventory(insert)) return - to_chat(user, span_notice("You insert [L] into \the [src].")) - AddShards(1, user) - qdel(L) + to_chat(user, span_notice("You insert [light_to_insert] into \the [src].")) + add_shards(1, user) + qdel(light_to_insert) return - if(istype(W, /obj/item/storage)) - var/obj/item/storage/S = W + if(istype(insert, /obj/item/storage)) + var/obj/item/storage/storage_to_empty = insert var/found_lightbulbs = FALSE var/replaced_something = TRUE - for(var/obj/item/I in S.contents) - if(istype(I, /obj/item/light)) - var/obj/item/light/L = I - found_lightbulbs = TRUE - if(src.uses >= max_uses) - break - if(L.status == LIGHT_OK) - replaced_something = TRUE - AddUses(1) - qdel(L) + for(var/obj/item/item_to_check in storage_to_empty.contents) + if(!istype(item_to_check, /obj/item/light)) + continue + var/obj/item/light/found_light = item_to_check + found_lightbulbs = TRUE + if(src.uses >= max_uses) + break + if(found_light.status == LIGHT_OK) + replaced_something = TRUE + add_uses(1) + qdel(found_light) - else if(L.status == LIGHT_BROKEN || L.status == LIGHT_BURNED) - replaced_something = TRUE - AddShards(1, user) - qdel(L) + else if(found_light.status == LIGHT_BROKEN || found_light.status == LIGHT_BURNED) + replaced_something = TRUE + add_shards(1, user) + qdel(found_light) if(!found_lightbulbs) - to_chat(user, span_warning("\The [S] contains no bulbs.")) + to_chat(user, span_warning("\The [storage_to_empty] contains no bulbs.")) return if(!replaced_something && src.uses == max_uses) to_chat(user, span_warning("\The [src] is full!")) return - to_chat(user, span_notice("You fill \the [src] with lights from \the [S]. " + status_string() + "")) + to_chat(user, span_notice("You fill \the [src] with lights from \the [storage_to_empty]. " + status_string() + "")) /obj/item/lightreplacer/emag_act() if(obj_flags & EMAGGED) @@ -143,9 +142,35 @@ /obj/item/lightreplacer/attack_self(mob/user) for(var/obj/machinery/light/target in user.loc) - ReplaceLight(target, user) + replace_light(target, user) to_chat(user, status_string()) +/obj/item/lightreplacer/afterattack(atom/target, mob/user, proximity) + . = ..() + if(!can_use(user)) + balloon_alert(user, "no more lights!") + return + + if(!proximity && !bluespace_toggle) + return + + if(!isturf(target)) + if(istype(target, /obj/machinery/light)) + if(!proximity && bluespace_toggle) + if(replace_light(target, user)) + user.Beam(target, icon_state = "rped_upgrade", time = 1 SECONDS) + playsound(src, 'sound/items/pshoom.ogg', 40, 1) + return + + for(var/atom/target_atom in target) + if(!can_use(user)) //We check inside the loop in case we're filling multiple lights with one click + balloon_alert(user, "no more lights!") + return + replace_light(target_atom, user) + if(bluespace_toggle) + user.Beam(target, icon_state = "rped_upgrade", time = 1 SECONDS) + playsound(src, 'sound/items/pshoom.ogg', 40, 1) + /obj/item/lightreplacer/update_icon_state() icon_state = "[initial(icon_state)][(obj_flags & EMAGGED ? "-emagged" : "")]" return ..() @@ -155,19 +180,19 @@ /obj/item/lightreplacer/proc/Use(mob/user) playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) - AddUses(-1) - return 1 + add_uses(-1) + return TRUE // Negative numbers will subtract -/obj/item/lightreplacer/proc/AddUses(amount = 1) +/obj/item/lightreplacer/proc/add_uses(amount = 1) uses = clamp(uses + amount, 0, max_uses) -/obj/item/lightreplacer/proc/AddShards(amount = 1, user) +/obj/item/lightreplacer/proc/add_shards(amount = 1, user) bulb_shards += amount - var/new_bulbs = round(bulb_shards / shards_required) + var/new_bulbs = round(bulb_shards / BULB_SHARDS_REQUIRED) if(new_bulbs > 0) - AddUses(new_bulbs) - bulb_shards = bulb_shards % shards_required + add_uses(new_bulbs) + bulb_shards = bulb_shards % BULB_SHARDS_REQUIRED if(new_bulbs != 0) to_chat(user, span_notice("\The [src] fabricates a new bulb from the broken glass it has stored. It now has [uses] uses.")) playsound(src.loc, 'sound/machines/ding.ogg', 50, TRUE) @@ -176,19 +201,22 @@ /obj/item/lightreplacer/proc/Charge(mob/user) charge += 1 if(charge > 3) - AddUses(1) + add_uses(1) charge = 1 -/obj/item/lightreplacer/proc/ReplaceLight(obj/machinery/light/target, mob/living/U) +/obj/item/lightreplacer/proc/replace_light(obj/machinery/light/target, mob/living/user) + + if(!istype(target)) //Confirm that it's a light we're testing, because afterattack runs this for everything on a given turf and will runtime + return if(target.status != LIGHT_OK) - if(CanUse(U)) - if(!Use(U)) - return - to_chat(U, span_notice("You replace \the [target.fitting] with \the [src].")) + if(can_use(user)) + if(!Use(user)) + return FALSE + to_chat(user, span_notice("You replace \the [target.fitting] with \the [src].")) if(target.status != LIGHT_EMPTY) - AddShards(1, U) + add_shards(1, user) target.status = LIGHT_EMPTY target.update() @@ -203,14 +231,14 @@ target.on = target.has_power() target.update() qdel(L2) - return + return TRUE else - to_chat(U, span_warning("\The [src]'s refill light blinks red.")) - return + to_chat(user, span_warning("\The [src]'s refill light blinks red.")) + return FALSE else - to_chat(U, span_warning("There is a working [target.fitting] already inserted!")) - return + to_chat(user, span_warning("There is a working [target.fitting] already inserted!")) + return FALSE /obj/item/lightreplacer/proc/Emag() obj_flags ^= EMAGGED @@ -221,33 +249,12 @@ name = initial(name) update_appearance() -/obj/item/lightreplacer/proc/CanUse(mob/living/user) +/obj/item/lightreplacer/proc/can_use(mob/living/user) src.add_fingerprint(user) if(uses > 0) - return 1 + return TRUE else - return 0 - -/obj/item/lightreplacer/afterattack(atom/T, mob/U, proximity) - . = ..() - if(!proximity && !bluespace_toggle) - return - if(!isturf(T)) - return - - var/used = FALSE - for(var/atom/A in T) - if(!CanUse(U)) - break - used = TRUE - if(istype(A, /obj/machinery/light)) - if(!proximity && bluespace_toggle) - U.Beam(A, icon_state = "rped_upgrade", time = 1 SECONDS) - playsound(src, 'sound/items/pshoom.ogg', 40, 1) - ReplaceLight(A, U) - - if(!used) - to_chat(U, span_warning("\The [src]'s refill light blinks red.")) + return FALSE /obj/item/lightreplacer/cyborg/Initialize(mapload) . = ..() @@ -261,3 +268,7 @@ /obj/item/lightreplacer/blue/emag_act() return // balancing against longrange explosions + +#undef GLASS_SHEET_USES +#undef LIGHTBULB_COST +#undef BULB_SHARDS_REQUIRED diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 89a00ad99c0..a962d9eb46b 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -7,6 +7,7 @@ canhear_range = 2 dog_fashion = null unscrewed = FALSE + item_flags = NO_BLOOD_ON_ITEM overlay_speaker_idle = "intercom_s" overlay_speaker_active = "intercom_recieve" @@ -170,9 +171,6 @@ set_on(current_area.powered(AREA_USAGE_EQUIP)) // set "on" to the equipment power status of our area. update_appearance() -/obj/item/radio/intercom/add_blood_DNA(list/blood_dna) - return FALSE - //Created through the autolathe or through deconstructing intercoms. Can be applied to wall to make a new intercom on it! /obj/item/wallframe/intercom name = "intercom frame" diff --git a/code/game/objects/items/dualsaber.dm b/code/game/objects/items/dualsaber.dm index d8488d8d79d..5f5126983db 100644 --- a/code/game/objects/items/dualsaber.dm +++ b/code/game/objects/items/dualsaber.dm @@ -31,6 +31,7 @@ bare_wound_bonus = 20 special_desc_requirement = EXAMINE_CHECK_SYNDICATE_TOY // Skyrat edit special_desc = "A double bladed energy sword employed by the Syndicate in raids" // Skyrat edit + item_flags = NO_BLOOD_ON_ITEM var/w_class_on = WEIGHT_CLASS_BULKY var/saber_color = "green" var/two_hand_force = 34 @@ -64,10 +65,6 @@ START_PROCESSING(SSobj, src) set_light_on(TRUE) - -/obj/item/dualsaber/add_blood_DNA(list/blood_DNA_to_add) - return FALSE - /// Triggered on unwield of two handed item /// switch hitsounds /obj/item/dualsaber/proc/on_unwield(obj/item/source, mob/living/carbon/user) @@ -76,7 +73,6 @@ STOP_PROCESSING(SSobj, src) set_light_on(FALSE) - /obj/item/dualsaber/get_sharpness() return HAS_TRAIT(src, TRAIT_WIELDED) && sharpness @@ -197,10 +193,6 @@ /obj/item/dualsaber/purple possible_colors = list("purple") -/datum/armor/item_dualsaber - fire = 100 - acid = 70 - /obj/item/dualsaber/attackby(obj/item/W, mob/user, params) if(W.tool_behaviour == TOOL_MULTITOOL) if(!hacked) diff --git a/code/game/objects/items/fireaxe.dm b/code/game/objects/items/fireaxe.dm index ca0b7303548..196834642bc 100644 --- a/code/game/objects/items/fireaxe.dm +++ b/code/game/objects/items/fireaxe.dm @@ -75,10 +75,6 @@ /* * Metal Hydrogen Axe */ -/datum/armor/item_fireaxe - fire = 100 - acid = 30 - /obj/item/fireaxe/metal_h2_axe icon_state = "metalh2_axe0" base_icon_state = "metalh2_axe" diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 45aeb93018f..cde81033443 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -152,10 +152,6 @@ breakouttime = 30 SECONDS cuffsound = 'sound/weapons/cablecuff.ogg' -/datum/armor/restraints_handcuffs - fire = 50 - acid = 50 - /obj/item/restraints/handcuffs/cable/Initialize(mapload, new_color) . = ..() @@ -274,10 +270,6 @@ cable_color = CABLE_COLOR_WHITE inhand_icon_state = "coil_white" -/datum/armor/restraints_handcuffs - fire = 50 - acid = 50 - /obj/item/restraints/handcuffs/cable/attackby(obj/item/I, mob/user, params) //Slapcrafting if(istype(I, /obj/item/stack/rods)) var/obj/item/stack/rods/R = I @@ -335,10 +327,6 @@ desc = "A pair of broken zipties." icon_state = "cuff_used" -/datum/armor/restraints_handcuffs - fire = 50 - acid = 50 - /obj/item/restraints/handcuffs/cable/zipties/used/attack() return @@ -395,10 +383,6 @@ /obj/item/restraints/legcuffs/beartrap/prearmed armed = TRUE -/datum/armor/restraints_handcuffs - fire = 50 - acid = 50 - /obj/item/restraints/legcuffs/beartrap/Initialize(mapload) . = ..() update_appearance() @@ -488,10 +472,6 @@ item_flags = DROPDEL flags_1 = NONE -/datum/armor/restraints_handcuffs - fire = 50 - acid = 50 - /obj/item/restraints/legcuffs/beartrap/energy/Initialize(mapload) . = ..() addtimer(CALLBACK(src, PROC_REF(dissipate)), 100) @@ -527,10 +507,6 @@ ///Amount of time to knock the target down for once it's hit in deciseconds. var/knockdown = 0 -/datum/armor/restraints_handcuffs - fire = 50 - acid = 50 - /obj/item/restraints/legcuffs/bola/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, gentle = FALSE, quickstart = TRUE) if(!..()) return @@ -583,10 +559,6 @@ breakouttime = 6 SECONDS custom_price = PAYCHECK_COMMAND * 0.35 -/datum/armor/restraints_handcuffs - fire = 50 - acid = 50 - /obj/item/restraints/legcuffs/bola/energy/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_UNCATCHABLE, TRAIT_GENERIC) // People said energy bolas being uncatchable is a feature. @@ -611,10 +583,6 @@ slowdown = 0 var/datum/status_effect/gonbola_pacify/effectReference -/datum/armor/restraints_handcuffs - fire = 50 - acid = 50 - /obj/item/restraints/legcuffs/bola/gonbola/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) . = ..() if(iscarbon(hit_atom)) diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index cedc9ab4e73..139777dd757 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -75,10 +75,6 @@ custom_materials = list(/datum/material/plastic=80) custom_price = PAYCHECK_LOWER * 2 -/datum/armor/kitchen_fork - fire = 50 - acid = 30 - /obj/item/kitchen/fork/plastic/Initialize(mapload) . = ..() AddElement(/datum/element/easily_fragmented, PLASTIC_BREAK_PROBABILITY) @@ -102,10 +98,6 @@ sharpness = SHARP_EDGED custom_price = PAYCHECK_LOWER * 2 -/datum/armor/kitchen_fork - fire = 50 - acid = 30 - /obj/item/knife/plastic/Initialize(mapload) . = ..() AddElement(/datum/element/easily_fragmented, PLASTIC_BREAK_PROBABILITY) @@ -139,10 +131,6 @@ custom_price = PAYCHECK_CREW * 2 bare_wound_bonus = 14 -/datum/armor/kitchen_fork - fire = 50 - acid = 30 - /obj/item/kitchen/rollingpin/suicide_act(mob/living/carbon/user) user.visible_message(span_suicide("[user] begins flattening [user.p_their()] head with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return BRUTELOSS diff --git a/code/game/objects/items/melee/baton.dm b/code/game/objects/items/melee/baton.dm index 1063fd76323..ace8f16e823 100644 --- a/code/game/objects/items/melee/baton.dm +++ b/code/game/objects/items/melee/baton.dm @@ -654,11 +654,6 @@ convertible = FALSE var/obj/item/assembly/igniter/sparkler -/datum/armor/baton_security - bomb = 50 - fire = 80 - acid = 80 - /obj/item/melee/baton/security/cattleprod/Initialize(mapload) . = ..() sparkler = new (src) @@ -701,11 +696,6 @@ convertible = FALSE custom_materials = list(/datum/material/iron = 10000, /datum/material/glass = 4000, /datum/material/silver = 10000, /datum/material/gold = 2000) -/datum/armor/baton_security - bomb = 50 - fire = 80 - acid = 80 - /obj/item/melee/baton/security/boomerang/Initialize(mapload) . = ..() AddComponent(/datum/component/boomerang, throw_range+2, TRUE) @@ -729,11 +719,6 @@ inhand_icon_state = "teleprod" slot_flags = null -/datum/armor/baton_security - bomb = 50 - fire = 80 - acid = 80 - /obj/item/melee/baton/security/cattleprod/teleprod/clumsy_check(mob/living/carbon/human/user) . = ..() if(!.) diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm index 928adb32587..095e8f46455 100644 --- a/code/game/objects/items/melee/energy.dm +++ b/code/game/objects/items/melee/energy.dm @@ -12,6 +12,7 @@ bare_wound_bonus = 20 stealthy_audio = TRUE w_class = WEIGHT_CLASS_SMALL + item_flags = NO_BLOOD_ON_ITEM /// The color of this energy based sword, for use in editing the icon_state. var/sword_color_icon @@ -77,9 +78,6 @@ user.visible_message(span_suicide("[user] is [pick("slitting [user.p_their()] stomach open with", "falling on")] [src]! It looks like [user.p_theyre()] trying to commit seppuku!")) return (BRUTELOSS|FIRELOSS) -/obj/item/melee/energy/add_blood_DNA(list/blood_dna) - return FALSE - /obj/item/melee/energy/process(delta_time) if(heat) open_flame() @@ -160,10 +158,6 @@ active_throwforce = 30 active_w_class = WEIGHT_CLASS_HUGE -/datum/armor/melee_energy - fire = 100 - acid = 30 - /obj/item/melee/energy/axe/make_transformable() AddComponent(/datum/component/transforming, \ force_on = active_force, \ @@ -194,10 +188,6 @@ block_chance = 50 embedding = list("embed_chance" = 75, "impact_pain_mult" = 10) -/datum/armor/melee_energy - fire = 100 - acid = 30 - /obj/item/melee/energy/sword/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(blade_active) return ..() @@ -209,10 +199,6 @@ /// The cell cost of hitting something. var/hitcost = 50 -/datum/armor/melee_energy - fire = 100 - acid = 30 - /obj/item/melee/energy/sword/cyborg/attack(mob/target, mob/living/silicon/robot/user) if(!user.cell) return @@ -262,10 +248,6 @@ var/hacked = FALSE var/hacked_color -/datum/armor/melee_energy - fire = 100 - acid = 30 - /obj/item/melee/energy/sword/saber/Initialize(mapload) . = ..() if(!sword_color_icon && LAZYLEN(possible_sword_colors)) @@ -301,10 +283,6 @@ /obj/item/melee/energy/sword/saber/purple sword_color_icon = "purple" -/datum/armor/melee_energy - fire = 100 - acid = 30 - /obj/item/melee/energy/sword/saber/multitool_act(mob/living/user, obj/item/tool) if(hacked) to_chat(user, span_warning("It's already fabulous!")) @@ -348,10 +326,6 @@ var/datum/effect_system/spark_spread/spark_system //Most of the other special functions are handled in their own files. aka special snowflake code so kewl -/datum/armor/melee_energy - fire = 100 - acid = 30 - /obj/item/melee/energy/blade/Initialize(mapload) . = ..() spark_system = new /datum/effect_system/spark_spread() diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index cb5b3b9d1e4..c73eb2c6b84 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -195,6 +195,7 @@ force = 0.001 armour_penetration = 1000 force_string = "INFINITE" + item_flags = NEEDS_PERMIT|NO_BLOOD_ON_ITEM var/obj/machinery/power/supermatter_crystal/shard var/balanced = 1 @@ -282,9 +283,6 @@ ) shard.Bump(turf) -/obj/item/melee/supermatter_sword/add_blood_DNA(list/blood_dna) - return FALSE - /obj/item/melee/curator_whip name = "curator's whip" desc = "Somewhat eccentric and outdated, it still stings like hell to be hit by." diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm index f50230ab2c5..82fe4ffae96 100644 --- a/code/game/objects/items/pinpointer.dm +++ b/code/game/objects/items/pinpointer.dm @@ -37,6 +37,11 @@ toggle_on() user.visible_message(span_notice("[user] [active ? "" : "de"]activates [user.p_their()] pinpointer."), span_notice("You [active ? "" : "de"]activate your pinpointer.")) +/obj/item/pinpointer/examine(mob/user) + . = ..() + if(target) + . += "It is currently tracking [target]." + /obj/item/pinpointer/proc/toggle_on() active = !active playsound(src, 'sound/items/screwdriver2.ogg', 50, TRUE) diff --git a/code/game/objects/items/pneumaticCannon.dm b/code/game/objects/items/pneumaticCannon.dm index 187162f480c..43c1cb6d355 100644 --- a/code/game/objects/items/pneumaticCannon.dm +++ b/code/game/objects/items/pneumaticCannon.dm @@ -312,10 +312,6 @@ clumsyCheck = FALSE var/static/list/pie_typecache = typecacheof(/obj/item/food/pie) -/datum/armor/item_pneumatic_cannon - fire = 60 - acid = 50 - /obj/item/pneumatic_cannon/pie/Initialize(mapload) . = ..() allowed_typecache = pie_typecache diff --git a/code/game/objects/items/puzzle_pieces.dm b/code/game/objects/items/puzzle_pieces.dm index c3e06b64d94..b176d2b6823 100644 --- a/code/game/objects/items/puzzle_pieces.dm +++ b/code/game/objects/items/puzzle_pieces.dm @@ -88,16 +88,6 @@ /obj/machinery/door/puzzle/keycard desc = "This door only opens when a keycard is swiped. It looks virtually indestructible." -/datum/armor/door_puzzle - melee = 100 - bullet = 100 - laser = 100 - energy = 100 - bomb = 100 - bio = 100 - fire = 100 - acid = 100 - /obj/machinery/door/puzzle/keycard/attackby(obj/item/attacking_item, mob/user, params) . = ..() if(!istype(attacking_item, /obj/item/keycard)) @@ -120,16 +110,6 @@ /obj/machinery/door/puzzle/light desc = "This door only opens when a linked mechanism is powered. It looks virtually indestructible." -/datum/armor/door_puzzle - melee = 100 - bullet = 100 - laser = 100 - energy = 100 - bomb = 100 - bio = 100 - fire = 100 - acid = 100 - /obj/machinery/door/puzzle/light/Initialize(mapload) . = ..() RegisterSignal(SSdcs, COMSIG_GLOB_LIGHT_MECHANISM_COMPLETED, PROC_REF(check_mechanism)) @@ -171,16 +151,6 @@ var/reward = /obj/item/food/cookie var/claimed = FALSE -/datum/armor/door_puzzle - melee = 100 - bullet = 100 - laser = 100 - energy = 100 - bomb = 100 - bio = 100 - fire = 100 - acid = 100 - /obj/item/pressure_plate/hologrid/Initialize(mapload) . = ..() if(undertile_pressureplate) diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index 0d4020961d6..cf487dfcd3c 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -110,14 +110,6 @@ shield_break_sound = 'sound/effects/glassbr3.ogg' shield_break_leftover = /obj/item/shard -/datum/armor/item_shield - melee = 50 - bullet = 50 - laser = 50 - bomb = 30 - fire = 80 - acid = 70 - /obj/item/shield/riot/attackby(obj/item/attackby_item, mob/user, params) if(istype(attackby_item, /obj/item/melee/baton)) if(!COOLDOWN_FINISHED(src, baton_bash)) @@ -144,14 +136,6 @@ inhand_icon_state = "flashshield" var/obj/item/assembly/flash/handheld/embedded_flash = /obj/item/assembly/flash/handheld -/datum/armor/item_shield - melee = 50 - bullet = 50 - laser = 50 - bomb = 30 - fire = 80 - acid = 70 - /obj/item/shield/riot/flash/Initialize(mapload) . = ..() AddElement(/datum/element/update_icon_updates_onmob) @@ -269,14 +253,6 @@ /// Whether clumsy people can transform this without side effects. var/can_clumsy_use = FALSE -/datum/armor/item_shield - melee = 50 - bullet = 50 - laser = 50 - bomb = 30 - fire = 80 - acid = 70 - /obj/item/shield/energy/Initialize(mapload) . = ..() AddComponent(/datum/component/transforming, \ @@ -321,14 +297,6 @@ /// Whether the shield is extended and protecting the user.. var/extended = FALSE -/datum/armor/item_shield - melee = 50 - bullet = 50 - laser = 50 - bomb = 30 - fire = 80 - acid = 70 - /obj/item/shield/riot/tele/Initialize(mapload) . = ..() AddComponent(/datum/component/transforming, \ diff --git a/code/game/objects/items/singularityhammer.dm b/code/game/objects/items/singularityhammer.dm index 6b3e3bba249..6d03ad595d6 100644 --- a/code/game/objects/items/singularityhammer.dm +++ b/code/game/objects/items/singularityhammer.dm @@ -90,14 +90,6 @@ throw_range = 7 w_class = WEIGHT_CLASS_HUGE -/datum/armor/item_singularityhammer - melee = 50 - bullet = 50 - laser = 50 - bomb = 50 - fire = 100 - acid = 100 - /obj/item/mjollnir/Initialize(mapload) . = ..() AddComponent(/datum/component/two_handed, \ diff --git a/code/game/objects/items/spear.dm b/code/game/objects/items/spear.dm index f199f70839c..07d5b926827 100644 --- a/code/game/objects/items/spear.dm +++ b/code/game/objects/items/spear.dm @@ -107,10 +107,6 @@ icon_prefix = "spearbomb" var/obj/item/grenade/explosive = null -/datum/armor/item_spear - fire = 50 - acid = 30 - /obj/item/spear/explosive/Initialize(mapload) . = ..() set_explosive(new /obj/item/grenade/iedcasing/spawned()) //For admin-spawned explosive lances @@ -189,10 +185,6 @@ force_unwielded = 15 force_wielded = 25 -/datum/armor/item_spear - fire = 50 - acid = 30 - /obj/item/spear/grey_tide/afterattack(atom/movable/AM, mob/living/user, proximity) . = ..() if(!proximity) diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index 61e08a54313..ace9849e80d 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -44,10 +44,6 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \ /obj/item/stack/sheet/glass/fifty amount = 50 -/datum/armor/sheet_glass - fire = 50 - acid = 100 - /obj/item/stack/sheet/glass/get_main_recipes() . = ..() . += GLOB.glass_recipes @@ -181,10 +177,6 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \ /// The amount of energy this draws from the glass source per stack unit. var/glacost = 500 -/datum/armor/sheet_rglass - fire = 70 - acid = 100 - /obj/item/stack/sheet/rglass/cyborg/get_amount() return min(round(source.energy / cost), round(glasource.energy / glacost)) diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index d25c1725cd4..a903ae2bb08 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -24,8 +24,8 @@ Mineral Sheets */ GLOBAL_LIST_INIT(sandstone_recipes, list ( \ - new/datum/stack_recipe("pile of dirt", /obj/machinery/hydroponics/soil, 3, time = 10, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_TOOLS), \ - new/datum/stack_recipe("sandstone door", /obj/structure/mineral_door/sandstone, 10, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \ + new/datum/stack_recipe("pile of dirt", /obj/machinery/hydroponics/soil, 3, time = 1 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_TOOLS), \ + new/datum/stack_recipe("sandstone door", /obj/structure/mineral_door/sandstone, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \ new/datum/stack_recipe("Breakdown into sand", /obj/item/stack/ore/glass, 1, one_per_turf = FALSE, on_solid_ground = TRUE, category = CAT_MISC) \ )) @@ -63,7 +63,7 @@ GLOBAL_LIST_INIT(sandstone_recipes, list ( \ merge_type = /obj/item/stack/sheet/mineral/sandbags GLOBAL_LIST_INIT(sandbag_recipes, list ( \ - new/datum/stack_recipe("sandbags", /obj/structure/barricade/sandbags, 1, time = 25, one_per_turf = 1, on_solid_ground = 1, category = CAT_STRUCTURE), \ + new/datum/stack_recipe("sandbags", /obj/structure/barricade/sandbags, 1, time = 3 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_STRUCTURE), \ )) /obj/item/stack/sheet/mineral/sandbags/get_main_recipes() @@ -106,7 +106,7 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \ walltype = /turf/closed/wall/mineral/diamond GLOBAL_LIST_INIT(diamond_recipes, list ( \ - new/datum/stack_recipe("diamond door", /obj/structure/mineral_door/transparent/diamond, 10, one_per_turf = 1, on_solid_ground = 1, applies_mats = TRUE, category = CAT_DOORS), \ + new/datum/stack_recipe("diamond door", /obj/structure/mineral_door/transparent/diamond, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \ new/datum/stack_recipe("diamond tile", /obj/item/stack/tile/mineral/diamond, 1, 4, 20, category = CAT_TILES), \ )) @@ -131,7 +131,7 @@ GLOBAL_LIST_INIT(diamond_recipes, list ( \ walltype = /turf/closed/wall/mineral/uranium GLOBAL_LIST_INIT(uranium_recipes, list ( \ - new/datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, one_per_turf = 1, on_solid_ground = 1, applies_mats = TRUE, category = CAT_DOORS), \ + new/datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \ new/datum/stack_recipe("uranium tile", /obj/item/stack/tile/mineral/uranium, 1, 4, 20, category = CAT_TILES), \ )) @@ -165,7 +165,7 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \ return TOXLOSS//dont you kids know that stuff is toxic? GLOBAL_LIST_INIT(plasma_recipes, list ( \ - new/datum/stack_recipe("plasma door", /obj/structure/mineral_door/transparent/plasma, 10, one_per_turf = 1, on_solid_ground = 1, applies_mats = TRUE, category = CAT_DOORS), \ + new/datum/stack_recipe("plasma door", /obj/structure/mineral_door/transparent/plasma, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \ new/datum/stack_recipe("plasma tile", /obj/item/stack/tile/mineral/plasma, 1, 4, 20, category = CAT_TILES), \ )) @@ -196,7 +196,7 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \ walltype = /turf/closed/wall/mineral/gold GLOBAL_LIST_INIT(gold_recipes, list ( \ - new/datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, one_per_turf = 1, on_solid_ground = 1, applies_mats = TRUE, category = CAT_DOORS), \ + new/datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \ new/datum/stack_recipe("gold tile", /obj/item/stack/tile/mineral/gold, 1, 4, 20, category = CAT_TILES), \ new/datum/stack_recipe("blank plaque", /obj/item/plaque, 1, category = CAT_FURNITURE), \ new/datum/stack_recipe("Simple Crown", /obj/item/clothing/head/costume/crown, 5, category = CAT_CLOTHING), \ @@ -224,7 +224,7 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \ walltype = /turf/closed/wall/mineral/silver GLOBAL_LIST_INIT(silver_recipes, list ( \ - new/datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, one_per_turf = 1, on_solid_ground = 1, applies_mats = TRUE, category = CAT_DOORS), \ + new/datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \ new/datum/stack_recipe("silver tile", /obj/item/stack/tile/mineral/silver, 1, 4, 20, category = CAT_TILES), \ )) @@ -415,10 +415,10 @@ GLOBAL_LIST_INIT(adamantine_recipes, list( walltype = /turf/closed/wall/mineral/abductor GLOBAL_LIST_INIT(abductor_recipes, list ( \ - new/datum/stack_recipe("alien bed", /obj/structure/bed/abductor, 2, one_per_turf = 1, on_solid_ground = 1, category = CAT_FURNITURE), \ - new/datum/stack_recipe("alien locker", /obj/structure/closet/abductor, 2, time = 15, one_per_turf = 1, on_solid_ground = 1, category = CAT_FURNITURE), \ - new/datum/stack_recipe("alien table frame", /obj/structure/table_frame/abductor, 1, time = 15, one_per_turf = 1, on_solid_ground = 1, category = CAT_FURNITURE), \ - new/datum/stack_recipe("alien airlock assembly", /obj/structure/door_assembly/door_assembly_abductor, 4, time = 20, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ + new/datum/stack_recipe("alien bed", /obj/structure/bed/abductor, 2, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \ + new/datum/stack_recipe("alien locker", /obj/structure/closet/abductor, 2, time = 2 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \ + new/datum/stack_recipe("alien table frame", /obj/structure/table_frame/abductor, 1, time = 2 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \ + new/datum/stack_recipe("alien airlock assembly", /obj/structure/door_assembly/door_assembly_abductor, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ null, \ new/datum/stack_recipe("alien floor tile", /obj/item/stack/tile/mineral/abductor, 1, 4, 20, category = CAT_TILES), \ )) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index b9d32c7e334..c8613d24d43 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -81,24 +81,24 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ new/datum/stack_recipe("machine frame", /obj/structure/frame/machine, 5, time = 2.5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_EQUIPMENT), \ null, \ new /datum/stack_recipe_list("airlock assemblies", list( \ - new /datum/stack_recipe("standard airlock assembly", /obj/structure/door_assembly, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ - new /datum/stack_recipe("public airlock assembly", /obj/structure/door_assembly/door_assembly_public, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ - new /datum/stack_recipe("command airlock assembly", /obj/structure/door_assembly/door_assembly_com, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ - new /datum/stack_recipe("security airlock assembly", /obj/structure/door_assembly/door_assembly_sec, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ - new /datum/stack_recipe("engineering airlock assembly", /obj/structure/door_assembly/door_assembly_eng, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ - new /datum/stack_recipe("mining airlock assembly", /obj/structure/door_assembly/door_assembly_min, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ - new /datum/stack_recipe("atmospherics airlock assembly", /obj/structure/door_assembly/door_assembly_atmo, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ - new /datum/stack_recipe("research airlock assembly", /obj/structure/door_assembly/door_assembly_research, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ - new /datum/stack_recipe("freezer airlock assembly", /obj/structure/door_assembly/door_assembly_fre, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ - new /datum/stack_recipe("science airlock assembly", /obj/structure/door_assembly/door_assembly_science, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ - new /datum/stack_recipe("medical airlock assembly", /obj/structure/door_assembly/door_assembly_med, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ - new /datum/stack_recipe("hydroponics airlock assembly", /obj/structure/door_assembly/door_assembly_hydro, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ - new /datum/stack_recipe("virology airlock assembly", /obj/structure/door_assembly/door_assembly_viro, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ - new /datum/stack_recipe("maintenance airlock assembly", /obj/structure/door_assembly/door_assembly_mai, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ - new /datum/stack_recipe("external airlock assembly", /obj/structure/door_assembly/door_assembly_ext, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ - new /datum/stack_recipe("external maintenance airlock assembly", /obj/structure/door_assembly/door_assembly_extmai, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ - new /datum/stack_recipe("airtight hatch assembly", /obj/structure/door_assembly/door_assembly_hatch, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ - new /datum/stack_recipe("maintenance hatch assembly", /obj/structure/door_assembly/door_assembly_mhatch, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), \ + new /datum/stack_recipe("standard airlock assembly", /obj/structure/door_assembly, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ + new /datum/stack_recipe("public airlock assembly", /obj/structure/door_assembly/door_assembly_public, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ + new /datum/stack_recipe("command airlock assembly", /obj/structure/door_assembly/door_assembly_com, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ + new /datum/stack_recipe("security airlock assembly", /obj/structure/door_assembly/door_assembly_sec, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ + new /datum/stack_recipe("engineering airlock assembly", /obj/structure/door_assembly/door_assembly_eng, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ + new /datum/stack_recipe("mining airlock assembly", /obj/structure/door_assembly/door_assembly_min, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ + new /datum/stack_recipe("atmospherics airlock assembly", /obj/structure/door_assembly/door_assembly_atmo, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ + new /datum/stack_recipe("research airlock assembly", /obj/structure/door_assembly/door_assembly_research, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ + new /datum/stack_recipe("freezer airlock assembly", /obj/structure/door_assembly/door_assembly_fre, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ + new /datum/stack_recipe("science airlock assembly", /obj/structure/door_assembly/door_assembly_science, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ + new /datum/stack_recipe("medical airlock assembly", /obj/structure/door_assembly/door_assembly_med, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ + new /datum/stack_recipe("hydroponics airlock assembly", /obj/structure/door_assembly/door_assembly_hydro, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ + new /datum/stack_recipe("virology airlock assembly", /obj/structure/door_assembly/door_assembly_viro, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ + new /datum/stack_recipe("maintenance airlock assembly", /obj/structure/door_assembly/door_assembly_mai, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ + new /datum/stack_recipe("external airlock assembly", /obj/structure/door_assembly/door_assembly_ext, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ + new /datum/stack_recipe("external maintenance airlock assembly", /obj/structure/door_assembly/door_assembly_extmai, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ + new /datum/stack_recipe("airtight hatch assembly", /obj/structure/door_assembly/door_assembly_hatch, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ + new /datum/stack_recipe("maintenance hatch assembly", /obj/structure/door_assembly/door_assembly_mhatch, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ )), \ null, \ new/datum/stack_recipe("firelock frame", /obj/structure/firelock_frame, 3, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), \ @@ -116,7 +116,7 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ new/datum/stack_recipe("extinguisher cabinet frame", /obj/item/wallframe/extinguisher_cabinet, 2, category = CAT_EQUIPMENT), \ new/datum/stack_recipe("button frame", /obj/item/wallframe/button, 1, category = CAT_EQUIPMENT), \ null, \ - new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \ + new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, applies_mats = TRUE, category = CAT_DOORS), \ new/datum/stack_recipe("filing cabinet", /obj/structure/filingcabinet, 2, time = 10 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_FURNITURE), \ new/datum/stack_recipe("desk bell", /obj/structure/desk_bell, 2, time = 3 SECONDS, category = CAT_FURNITURE), \ new/datum/stack_recipe("floodlight frame", /obj/structure/floodlight_frame, 5, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_EQUIPMENT), \ @@ -245,8 +245,8 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \ new/datum/stack_recipe("Large Gas Tank", /obj/structure/tank_frame, 4, time=1 SECONDS, one_per_turf=TRUE, category = CAT_ATMOSPHERIC), null, new /datum/stack_recipe_list("airlock assemblies", list( \ - new/datum/stack_recipe("high security airlock assembly", /obj/structure/door_assembly/door_assembly_highsecurity, 4, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), - new/datum/stack_recipe("vault door assembly", /obj/structure/door_assembly/door_assembly_vault, 6, time = 5 SECONDS, one_per_turf = 1, on_solid_ground = 1, category = CAT_DOORS), + new/datum/stack_recipe("high security airlock assembly", /obj/structure/door_assembly/door_assembly_highsecurity, 4, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), + new/datum/stack_recipe("vault door assembly", /obj/structure/door_assembly/door_assembly_vault, 6, time = 5 SECONDS, one_per_turf = TRUE, on_solid_ground = TRUE, category = CAT_DOORS), )), \ )) @@ -457,9 +457,6 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \ pickup_sound = 'sound/items/handling/cloth_pickup.ogg' grind_results = list(/datum/reagent/cellulose = 20) -/datum/armor/mineral_bamboo - fire = 50 - /obj/item/stack/sheet/cloth/get_main_recipes() . = ..() . += GLOB.cloth_recipes @@ -490,9 +487,6 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( \ drop_sound = 'sound/items/handling/cloth_drop.ogg' pickup_sound = 'sound/items/handling/cloth_pickup.ogg' -/datum/armor/mineral_bamboo - fire = 50 - /obj/item/stack/sheet/durathread/get_main_recipes() . = ..() . += GLOB.durathread_recipes @@ -591,9 +585,6 @@ GLOBAL_LIST_INIT(cardboard_recipes, list ( \ null, \ )) -/datum/armor/mineral_bamboo - fire = 50 - /obj/item/stack/sheet/cardboard //BubbleWrap //it's cardboard you fuck name = "cardboard" desc = "Large sheets of card, like boxes folded flat." @@ -616,9 +607,6 @@ GLOBAL_LIST_INIT(cardboard_recipes, list ( \ /obj/item/stack/sheet/cardboard/fifty amount = 50 -/datum/armor/mineral_bamboo - fire = 50 - /obj/item/stack/sheet/cardboard/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/stamp/clown) && !istype(loc, /obj/item/storage)) var/atom/droploc = drop_location() @@ -680,9 +668,6 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ walltype = /turf/closed/wall/mineral/bronze has_unique_girder = TRUE -/datum/armor/mineral_bamboo - fire = 50 - /obj/item/stack/sheet/bronze/get_main_recipes() . = ..() . += GLOB.bronze_recipes @@ -765,9 +750,6 @@ GLOBAL_LIST_INIT(plastic_recipes, list( /obj/item/stack/sheet/plastic/five amount = 5 -/datum/armor/mineral_bamboo - fire = 50 - /obj/item/stack/sheet/plastic/get_main_recipes() . = ..() . += GLOB.plastic_recipes @@ -788,9 +770,6 @@ new /datum/stack_recipe("paper frame door", /obj/structure/mineral_door/paperfra grind_results = list(/datum/reagent/cellulose = 20) material_type = /datum/material/paper -/datum/armor/mineral_bamboo - fire = 50 - /obj/item/stack/sheet/paperframes/get_main_recipes() . = ..() . += GLOB.paperframe_recipes diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 77c71fcca12..dcbb28f504f 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -83,10 +83,6 @@ inhand_icon_state = "giftbag" w_class = WEIGHT_CLASS_BULKY -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/santabag/Initialize(mapload) . = ..() regenerate_presents() @@ -232,10 +228,6 @@ worn_icon = 'icons/mob/clothing/back/ethereal.dmi' icon_state = "saddlepack" -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/saddlepack/Initialize(mapload) . = ..() atom_storage.max_total_storage = 26 @@ -256,10 +248,6 @@ icon_state = "satchel-leather" inhand_icon_state = "satchel" -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/satchel/leather/withwallet/PopulateContents() new /obj/item/storage/wallet/random(src) @@ -334,10 +322,6 @@ inhand_icon_state = "satchel-flat" w_class = WEIGHT_CLASS_NORMAL //Can fit in backpacks itself. -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/satchel/flat/Initialize(mapload) . = ..() AddElement(/datum/element/undertile, TRAIT_T_RAY_VISIBLE, INVISIBILITY_MAXIMUM, use_anchor = TRUE) // SKYRAT EDIT - Ghosts can't see smuggler's satchels @@ -369,10 +353,6 @@ //slowdown = 1 //ORIGINAL slowdown = 0.5 //SKYRAT EDIT CHANGE -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/Initialize(mapload) . = ..() atom_storage.max_total_storage = 30 @@ -387,10 +367,6 @@ slowdown = 2 max_integrity = 100 -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/cursed/Initialize(mapload) . = ..() AddComponent(/datum/component/curse_of_hunger, add_dropdel = TRUE) @@ -449,10 +425,6 @@ -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/med/surgery/PopulateContents() new /obj/item/scalpel(src) new /obj/item/hemostat(src) @@ -477,10 +449,6 @@ name = "surgical duffel bag" desc = "A large duffel bag for holding extra supplies - this one has a material inlay with space for various sharp-looking tools." -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/sec/surgery/PopulateContents() new /obj/item/scalpel(src) new /obj/item/hemostat(src) @@ -508,10 +476,6 @@ inhand_icon_state = "duffel-drone" resistance_flags = FIRE_PROOF -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/drone/PopulateContents() new /obj/item/screwdriver(src) new /obj/item/wrench(src) @@ -527,10 +491,6 @@ icon_state = "duffel-clown" inhand_icon_state = "duffel-clown" -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/clown/cream_pie/PopulateContents() for(var/i in 1 to 10) new /obj/item/food/pie/cream(src) @@ -548,10 +508,6 @@ special_desc_requirement = EXAMINE_CHECK_SYNDICATE // Skyrat edit special_desc = "This duffel bag has the Syndicate logo stiched on the inside. It appears to be made from lighter yet sturdier materials." // Skyrat edit -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/syndie/Initialize(mapload) . = ..() atom_storage.silent = TRUE @@ -561,10 +517,6 @@ icon_state = "duffel-syndieammo" inhand_icon_state = "duffel-syndieammo" -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/syndie/hitman/PopulateContents() new /obj/item/clothing/under/suit/black(src) new /obj/item/clothing/neck/tie/red/hitman(src) @@ -587,10 +539,6 @@ icon_state = "duffel-syndiemed" inhand_icon_state = "duffel-syndiemed" -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/syndie/surgery/PopulateContents() new /obj/item/scalpel(src) new /obj/item/hemostat(src) @@ -615,10 +563,6 @@ /obj/item/storage/backpack/duffelbag/syndie/ammo/shotgun desc = "A large duffel bag, packed to the brim with Bulldog shotgun magazines." -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/syndie/ammo/shotgun/PopulateContents() for(var/i in 1 to 6) new /obj/item/ammo_box/magazine/m12g(src) @@ -629,10 +573,6 @@ /obj/item/storage/backpack/duffelbag/syndie/ammo/smg desc = "A large duffel bag, packed to the brim with C-20r magazines." -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/syndie/ammo/smg/PopulateContents() for(var/i in 1 to 9) new /obj/item/ammo_box/magazine/smgm45(src) @@ -640,10 +580,6 @@ /obj/item/storage/backpack/duffelbag/syndie/ammo/mech desc = "A large duffel bag, packed to the brim with various exosuit ammo." -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/syndie/ammo/mech/PopulateContents() new /obj/item/mecha_ammo/scattershot(src) new /obj/item/mecha_ammo/scattershot(src) @@ -654,10 +590,6 @@ /obj/item/storage/backpack/duffelbag/syndie/ammo/mauler desc = "A large duffel bag, packed to the brim with various exosuit ammo." -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/syndie/ammo/mauler/PopulateContents() new /obj/item/mecha_ammo/lmg(src) new /obj/item/mecha_ammo/lmg(src) @@ -672,10 +604,6 @@ /obj/item/storage/backpack/duffelbag/syndie/c20rbundle desc = "A large duffel bag containing a C-20r, some magazines, and a cheap looking suppressor." -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/syndie/c20rbundle/PopulateContents() new /obj/item/ammo_box/magazine/smgm45(src) new /obj/item/ammo_box/magazine/smgm45(src) @@ -685,10 +613,6 @@ /obj/item/storage/backpack/duffelbag/syndie/bulldogbundle desc = "A large duffel bag containing a Bulldog, some drums, and a pair of thermal imaging glasses." -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/syndie/bulldogbundle/PopulateContents() new /obj/item/gun/ballistic/shotgun/bulldog(src) new /obj/item/ammo_box/magazine/m12g(src) @@ -698,10 +622,6 @@ /obj/item/storage/backpack/duffelbag/syndie/med/medicalbundle desc = "A large duffel bag containing a medical equipment, a Donksoft LMG, a big jumbo box of riot darts, and a magboot MODsuit module." -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/syndie/med/medicalbundle/PopulateContents() new /obj/item/mod/module/magboot(src) new /obj/item/storage/medkit/tactical(src) @@ -711,10 +631,6 @@ /obj/item/storage/backpack/duffelbag/syndie/med/bioterrorbundle desc = "A large duffel bag containing deadly chemicals, a handheld chem sprayer, Bioterror foam grenade, a Donksoft assault rifle, box of riot grade darts, a dart pistol, and a box of syringes." -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/syndie/med/bioterrorbundle/PopulateContents() new /obj/item/reagent_containers/spray/chemsprayer/bioterror(src) new /obj/item/storage/box/syndie_kit/chemical(src) @@ -737,10 +653,6 @@ /obj/item/storage/backpack/duffelbag/syndie/firestarter desc = "A large duffel bag containing a New Russian pyro backpack sprayer, Elite MODsuit, a Stechkin APS pistol, minibomb, ammo, and other equipment." -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/syndie/firestarter/PopulateContents() new /obj/item/clothing/under/syndicate/soviet(src) new /obj/item/mod/control/pre_equipped/elite/flamethrower(src) @@ -782,10 +694,6 @@ icon_state = "duffel-explorer" inhand_icon_state = "duffel-explorer" -/datum/armor/backpack_holding - fire = 60 - acid = 50 - /obj/item/storage/backpack/duffelbag/mining_conscript/PopulateContents() new /obj/item/clothing/glasses/meson(src) new /obj/item/t_scanner/adv_mining_scanner/lesser(src) diff --git a/code/game/objects/items/storage/book.dm b/code/game/objects/items/storage/book.dm index a8e19107075..c405b8f25a8 100644 --- a/code/game/objects/items/storage/book.dm +++ b/code/game/objects/items/storage/book.dm @@ -264,6 +264,7 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", name = "Syndicate Tome" attack_verb_continuous = list("attacks", "burns", "blesses", "damns", "scorches") attack_verb_simple = list("attack", "burn", "bless", "damn", "scorch") + item_flags = NO_BLOOD_ON_ITEM var/uses = 1 var/ownername @@ -287,6 +288,3 @@ GLOBAL_LIST_INIT(bibleitemstates, list("bible", "koran", "scrapbook", "burning", return ..() else return ..(M,user,heal_mode = FALSE) - -/obj/item/storage/book/bible/syndicate/add_blood_DNA(list/blood_dna) - return FALSE diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 35881b372e4..782ca62cf1c 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -133,10 +133,6 @@ var/obj/item/watertank/tank -/datum/armor/item_watertank - fire = 100 - acid = 30 - /obj/item/reagent_containers/spray/mister/Initialize(mapload) . = ..() tank = loc @@ -161,10 +157,6 @@ inhand_icon_state = "waterbackpackjani" custom_price = PAYCHECK_CREW * 5 -/datum/armor/item_watertank - fire = 100 - acid = 30 - /obj/item/watertank/janitor/Initialize(mapload) . = ..() reagents.add_reagent(/datum/reagent/space_cleaner, 500) @@ -181,10 +173,6 @@ possible_transfer_amounts = list(5, 10) current_range = 5 -/datum/armor/item_watertank - fire = 100 - acid = 30 - /obj/item/watertank/janitor/make_noz() return new /obj/item/reagent_containers/spray/mister/janitor(src) @@ -201,10 +189,6 @@ custom_price = PAYCHECK_CREW * 2 volume = 1000 -/datum/armor/item_watertank - fire = 100 - acid = 30 - /obj/item/watertank/pepperspray/Initialize(mapload) . = ..() reagents.add_reagent(/datum/reagent/consumable/condensedcapsaicin, 1000) @@ -221,10 +205,6 @@ possible_transfer_amounts = list(5, 10) current_range = 6 -/datum/armor/item_watertank - fire = 100 - acid = 30 - /obj/item/watertank/pepperspray/make_noz() return new /obj/item/reagent_containers/spray/mister/pepperspray(src) @@ -246,10 +226,6 @@ volume = 200 slowdown = 0 -/datum/armor/item_watertank - fire = 100 - acid = 30 - /obj/item/watertank/atmos/Initialize(mapload) . = ..() reagents.add_reagent(/datum/reagent/water, 200) @@ -286,10 +262,6 @@ var/metal_synthesis_cooldown = 0 COOLDOWN_DECLARE(resin_cooldown) -/datum/armor/item_watertank - fire = 100 - acid = 30 - /obj/item/extinguisher/mini/nozzle/Initialize(mapload) . = ..() tank = loc @@ -397,10 +369,6 @@ pass_flags = PASSTABLE anchored = TRUE -/datum/armor/item_watertank - fire = 100 - acid = 30 - /obj/effect/resin_container/proc/Smoke() var/datum/effect_system/fluid_spread/foam/metal/resin/foaming = new foaming.set_up(4, holder = src, location = loc) @@ -441,10 +409,6 @@ fill_icon_thresholds = list(0, 15, 60) fill_icon_state = "backpack" -/datum/armor/item_watertank - fire = 100 - acid = 30 - /obj/item/reagent_containers/chemtank/ui_action_click() toggle_injection() diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm index b53fc626f00..220a8688691 100644 --- a/code/game/objects/items/teleportation.dm +++ b/code/game/objects/items/teleportation.dm @@ -343,11 +343,6 @@ //How far the emergency teleport checks for a safe position var/parallel_teleport_distance = 3 -/datum/armor/item_hand_tele - bomb = 30 - fire = 100 - acid = 100 - /obj/item/syndicate_teleporter/Initialize(mapload) . = ..() START_PROCESSING(SSobj, src) @@ -517,11 +512,6 @@ /obj/item/storage/box/syndie_kit/syndicate_teleporter name = "syndicate teleporter kit" -/datum/armor/item_hand_tele - bomb = 30 - fire = 100 - acid = 100 - /obj/item/storage/box/syndie_kit/syndicate_teleporter/PopulateContents() new /obj/item/syndicate_teleporter(src) new /obj/item/paper/syndicate_teleporter(src) diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm index 94eeff6e96e..f4c730782f9 100644 --- a/code/game/objects/items/tools/crowbar.dm +++ b/code/game/objects/items/tools/crowbar.dm @@ -70,10 +70,6 @@ desc = "It's a bulky crowbar. It almost seems deliberately designed to not be able to fit inside of a backpack." w_class = WEIGHT_CLASS_BULKY -/datum/armor/item_crowbar - fire = 50 - acid = 30 - /obj/item/crowbar/large/heavy //from space ruin name = "heavy crowbar" desc = "It's a big crowbar. It doesn't fit in your pockets, because it's big. It feels oddly heavy.." @@ -87,10 +83,6 @@ throwforce = 10 throw_speed = 2 -/datum/armor/item_crowbar - fire = 50 - acid = 30 - /obj/item/crowbar/large/old/Initialize(mapload) . = ..() if(prob(50)) @@ -111,10 +103,6 @@ toolspeed = 0.7 force_opens = TRUE -/datum/armor/item_crowbar - fire = 50 - acid = 30 - /obj/item/crowbar/power/Initialize(mapload) . = ..() AddComponent(/datum/component/transforming, \ @@ -146,10 +134,6 @@ toolspeed = 0.5 force_opens = TRUE -/datum/armor/item_crowbar - fire = 50 - acid = 30 - /obj/item/crowbar/power/examine() . = ..() . += " It's fitted with a [tool_behaviour == TOOL_CROWBAR ? "prying" : "cutting"] head." diff --git a/code/game/objects/items/tools/screwdriver.dm b/code/game/objects/items/tools/screwdriver.dm index 6d302be3640..5f7e170041b 100644 --- a/code/game/objects/items/tools/screwdriver.dm +++ b/code/game/objects/items/tools/screwdriver.dm @@ -72,10 +72,6 @@ greyscale_config_inhand_left = null greyscale_config_inhand_right = null -/datum/armor/item_screwdriver - fire = 50 - acid = 30 - /obj/item/screwdriver/abductor/get_belt_overlay() return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "screwdriver_alien") @@ -105,10 +101,6 @@ greyscale_config_inhand_left = null greyscale_config_inhand_right = null -/datum/armor/item_screwdriver - fire = 50 - acid = 30 - /obj/item/screwdriver/power/Initialize(mapload) . = ..() AddComponent(/datum/component/transforming, \ @@ -157,10 +149,6 @@ /obj/item/screwdriver/red random_color = FALSE -/datum/armor/item_screwdriver - fire = 50 - acid = 30 - /obj/item/screwdriver/red/Initialize(mapload) . = ..() set_greyscale(colors=list(screwdriver_colors["red"])) diff --git a/code/game/objects/items/tools/weldingtool.dm b/code/game/objects/items/tools/weldingtool.dm index 88600ff793d..bb1f72fba2d 100644 --- a/code/game/objects/items/tools/weldingtool.dm +++ b/code/game/objects/items/tools/weldingtool.dm @@ -349,10 +349,6 @@ max_fuel = 40 custom_materials = list(/datum/material/glass=60) -/datum/armor/item_weldingtool - fire = 100 - acid = 30 - /obj/item/weldingtool/largetank/flamethrower_screwdriver() return @@ -366,10 +362,6 @@ icon_state = "indwelder_cyborg" toolspeed = 0.5 -/datum/armor/item_weldingtool - fire = 100 - acid = 30 - /obj/item/weldingtool/largetank/cyborg/cyborg_unequip(mob/user) if(!isOn()) return @@ -385,10 +377,6 @@ custom_materials = list(/datum/material/iron=30, /datum/material/glass=10) change_icons = FALSE -/datum/armor/item_weldingtool - fire = 100 - acid = 30 - /obj/item/weldingtool/mini/flamethrower_screwdriver() return @@ -406,10 +394,6 @@ light_range = 0 change_icons = FALSE -/datum/armor/item_weldingtool - fire = 100 - acid = 30 - /obj/item/weldingtool/abductor/process() if(get_fuel() <= max_fuel) reagents.add_reagent(/datum/reagent/fuel, 1) @@ -438,10 +422,6 @@ var/last_gen = 0 var/nextrefueltick = 0 -/datum/armor/item_weldingtool - fire = 100 - acid = 30 - /obj/item/weldingtool/experimental/process() ..() if(get_fuel() < max_fuel && nextrefueltick < world.time) diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm index 6975ecdbac4..e5c609bad62 100644 --- a/code/game/objects/items/tools/wrench.dm +++ b/code/game/objects/items/tools/wrench.dm @@ -59,10 +59,6 @@ ///var to hold the name of the person who suicided var/suicider -/datum/armor/item_wrench - fire = 50 - acid = 30 - /obj/item/wrench/medical/examine(mob/user) . = ..() if(suicider) @@ -105,10 +101,6 @@ tool_behaviour = null toolspeed = null -/datum/armor/item_wrench - fire = 50 - acid = 30 - /obj/item/wrench/combat/Initialize(mapload) . = ..() AddComponent(/datum/component/transforming, \ diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm index 24f01dd8aad..9ba205ecbb7 100644 --- a/code/game/objects/items/weaponry.dm +++ b/code/game/objects/items/weaponry.dm @@ -55,10 +55,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 attack_verb_continuous = list("attacks", "slashes", "stabs", "slices", "tears", "lacerates", "rips", "dices", "cuts") attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "cut") -/datum/armor/item_banhammer - fire = 100 - acid = 70 - /obj/item/sord/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is trying to impale [user.p_them()]self with [src]! It might be a suicide attempt if it weren't so shitty."), \ span_suicide("You try to impale yourself with [src], but it's USELESS...")) @@ -114,10 +110,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 throw_range = 5 armour_penetration = 35 -/datum/armor/item_claymore - fire = 100 - acid = 50 - /obj/item/claymore/highlander //ALL COMMENTS MADE REGARDING THIS SWORD MUST BE MADE IN ALL CAPS desc = "THERE CAN BE ONLY ONE, AND IT WILL BE YOU!!!\nActivate it in your hand to point to the nearest victim." flags_1 = CONDUCT_1 @@ -312,10 +304,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 attack_verb_continuous = list("hits", "bludgeons", "whacks", "bonks") attack_verb_simple = list("hit", "bludgeon", "whack", "bonk") -/datum/armor/item_katana - fire = 100 - acid = 50 - /obj/item/wirerod/Initialize(mapload) . = ..() @@ -418,10 +406,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 /// Whether the switchblade starts extended or not. var/start_extended = FALSE -/datum/armor/item_katana - fire = 100 - acid = 50 - /obj/item/switchblade/Initialize(mapload) . = ..() AddElement(/datum/element/update_icon_updates_onmob, ITEM_SLOT_HANDS) @@ -471,10 +455,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 attack_verb_simple = list("call", "ring") hitsound = 'sound/weapons/ring.ogg' -/datum/armor/item_katana - fire = 100 - acid = 50 - /obj/item/phone/suicide_act(mob/living/user) if(locate(/obj/structure/chair/stool) in user.loc) user.visible_message(span_suicide("[user] begins to tie a noose with [src]'s cord! It looks like [user.p_theyre()] trying to commit suicide!")) @@ -508,10 +488,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 w_class = WEIGHT_CLASS_SMALL custom_materials = list(/datum/material/iron = 600) -/datum/armor/item_katana - fire = 100 - acid = 50 - /obj/item/cane/white/Initialize(mapload) . = ..() AddComponent(/datum/component/transforming, \ @@ -582,10 +558,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 icon = 'icons/obj/wizard.dmi' icon_state = "ectoplasm" -/datum/armor/item_katana - fire = 100 - acid = 50 - /obj/item/ectoplasm/suicide_act(mob/living/user) user.visible_message(span_suicide("[user] is inhaling [src]! It looks like [user.p_theyre()] trying to visit the astral plane!")) return OXYLOSS @@ -618,10 +590,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 tool_behaviour = TOOL_SAW toolspeed = 1 -/datum/armor/item_katana - fire = 100 - acid = 50 - /obj/item/mounted_chainsaw/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) @@ -651,10 +619,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 attack_verb_simple = list("bust") var/impressiveness = 45 -/datum/armor/item_katana - fire = 100 - acid = 50 - /obj/item/statuebust/Initialize(mapload) . = ..() AddElement(/datum/element/art, impressiveness) @@ -703,10 +667,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 ///The vehicle counterpart for the board var/board_item_type = /obj/vehicle/ridden/scooter/skateboard -/datum/armor/item_katana - fire = 100 - acid = 50 - /obj/item/melee/skateboard/attack_self(mob/user) var/obj/vehicle/ridden/scooter/skateboard/S = new board_item_type(get_turf(user))//this probably has fucky interactions with telekinesis but for the record it wasn't my fault S.buckle_mob(user) @@ -765,10 +725,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 /// List of all thrown datums we sent. var/list/thrown_datums = list() -/datum/armor/item_katana - fire = 100 - acid = 50 - /obj/item/melee/baseball_bat/Initialize(mapload) . = ..() if(prob(1)) @@ -887,10 +843,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 throwforce = 15 mob_thrower = TRUE -/datum/armor/item_katana - fire = 100 - acid = 50 - /obj/item/melee/baseball_bat/ablative/IsReflect()//some day this will reflect thrown items instead of lasers playsound(src, pick('sound/weapons/effects/batreflect1.ogg', 'sound/weapons/effects/batreflect2.ogg'), 50, TRUE) return TRUE @@ -916,10 +868,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 /// How much extra damage the fly swatter does against mobs it is strong against var/extra_strength_damage = 24 -/datum/armor/item_katana - fire = 100 - acid = 50 - /obj/item/melee/flyswatter/Initialize(mapload) . = ..() splattable = typecacheof(list( @@ -977,10 +925,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 name = "\improper ACME Extendo-Hand" desc = "A novelty extendo-hand produced by the ACME corporation. Originally designed to knock out roadrunners." -/datum/armor/item_katana - fire = 100 - acid = 50 - /obj/item/extendohand/attack(atom/M, mob/living/carbon/human/user, params) var/dist = get_dist(M, user) if(dist < min_reach) @@ -1050,10 +994,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 /// The previous target we attacked var/datum/weakref/previous_target -/datum/armor/item_katana - fire = 100 - acid = 50 - /obj/item/highfrequencyblade/Initialize(mapload) . = ..() AddComponent(/datum/component/two_handed, \ @@ -1145,10 +1085,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 layer = ABOVE_ALL_MOB_LAYER plane = ABOVE_GAME_PLANE -/datum/armor/item_katana - fire = 100 - acid = 50 - /obj/effect/temp_visual/slash/Initialize(mapload, atom/target, x_slashed, y_slashed, slash_color) . = ..() if(!target) @@ -1173,10 +1109,6 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301 wound_bonus = 20 bare_wound_bonus = 25 -/datum/armor/item_katana - fire = 100 - acid = 50 - /obj/item/highfrequencyblade/wizard/attack_self(mob/user, modifiers) if(!IS_WIZARD(user)) balloon_alert(user, "you're too weak!") diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index 4f2235f53bf..4698c8469d2 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -55,14 +55,6 @@ name = "secure hydroponics crate" icon_state = "hydrosecurecrate" -/datum/armor/crate_secure - melee = 30 - bullet = 50 - laser = 50 - energy = 100 - fire = 80 - acid = 80 - /obj/structure/closet/crate/secure/freezer //for consistency with other "freezer" closets/crates desc = "An insulated crate with a lock on it, used to secure perishables." name = "secure kitchen crate" @@ -74,14 +66,6 @@ req_access = list(ACCESS_KITCHEN) tamperproof = 10 -/datum/armor/crate_secure - melee = 30 - bullet = 50 - laser = 50 - energy = 100 - fire = 80 - acid = 80 - /obj/structure/closet/crate/secure/freezer/pizza/PopulateContents() . = ..() new /obj/effect/spawner/random/food_or_drink/pizzaparty(src) @@ -109,14 +93,6 @@ ///Is the crate being bought by a person, or a budget card? var/department_purchase = FALSE -/datum/armor/crate_secure - melee = 30 - bullet = 50 - laser = 50 - energy = 100 - fire = 80 - acid = 80 - /obj/structure/closet/crate/secure/owned/examine(mob/user) . = ..() . += span_notice("It's locked with a privacy lock, and can only be unlocked by the buyer's ID.") diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 6795bb7f7a4..785eeb330f3 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -233,12 +233,6 @@ var/obj/item/electronics/airlock/electronics -/datum/armor/structure_displaycase - melee = 30 - bomb = 10 - fire = 70 - acid = 100 - /obj/structure/displaycase_chassis/attackby(obj/item/I, mob/user, params) if(I.tool_behaviour == TOOL_WRENCH) //The player can only deconstruct the wooden frame to_chat(user, span_notice("You start disassembling [src]...")) @@ -319,12 +313,6 @@ ///the trophy message var/trophy_message = "" -/datum/armor/structure_displaycase - melee = 30 - bomb = 10 - fire = 70 - acid = 100 - /obj/structure/displaycase/trophy/Initialize(mapload) . = ..() GLOB.trophy_cases += src @@ -441,12 +429,6 @@ /obj/item/showpiece_dummy name = "holographic replica" -/datum/armor/structure_displaycase - melee = 30 - bomb = 10 - fire = 70 - acid = 100 - /obj/item/showpiece_dummy/Initialize(mapload, path) . = ..() var/obj/item/item_path = path @@ -472,12 +454,6 @@ ///The Account which will receive payment for purchases. Set by the first ID to swipe the tray. var/datum/bank_account/payments_acc = null -/datum/armor/structure_displaycase - melee = 30 - bomb = 10 - fire = 70 - acid = 100 - /obj/structure/displaycase/forsale/update_icon_state() icon_state = "[initial(icon_state)][broken ? "_broken" : (open ? "_open" : (!showpiece ? "_empty" : null))]" return ..() diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm index dd4372139b7..941f86fd081 100644 --- a/code/game/objects/structures/holosign.dm +++ b/code/game/objects/structures/holosign.dm @@ -66,13 +66,6 @@ max_integrity = 20 var/allow_walk = TRUE //can we pass through it on walk intent -/datum/armor/structure_holosign - bullet = 50 - laser = 50 - energy = 50 - fire = 20 - acid = 20 - /obj/structure/holosign/barrier/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(.) @@ -90,13 +83,6 @@ icon = 'icons/effects/effects.dmi' icon_state = "holosign" -/datum/armor/structure_holosign - bullet = 50 - laser = 50 - energy = 50 - fire = 20 - acid = 20 - /obj/structure/holosign/barrier/wetsign/CanAllowThrough(atom/movable/mover, border_dir) . = ..() if(iscarbon(mover)) @@ -130,13 +116,6 @@ max_integrity = 150 icon_state = "holo_tram" -/datum/armor/structure_holosign - bullet = 50 - laser = 50 - energy = 50 - fire = 20 - acid = 20 - /obj/structure/holosign/barrier/atmos/Initialize(mapload) . = ..() air_update_turf(TRUE, TRUE) @@ -156,13 +135,6 @@ max_integrity = 10 allow_walk = FALSE -/datum/armor/structure_holosign - bullet = 50 - laser = 50 - energy = 50 - fire = 20 - acid = 20 - /obj/structure/holosign/barrier/cyborg/bullet_act(obj/projectile/P) take_damage((P.damage / 5) , BRUTE, MELEE, 1) //Doesn't really matter what damage flag it is. if(istype(P, /obj/projectile/energy/electrode)) @@ -179,13 +151,6 @@ var/force_allaccess = FALSE var/buzzcd = 0 -/datum/armor/structure_holosign - bullet = 50 - laser = 50 - energy = 50 - fire = 20 - acid = 20 - /obj/structure/holosign/barrier/medical/examine(mob/user) . = ..() . += span_notice("The biometric scanners are [force_allaccess ? "off" : "on"].") @@ -231,13 +196,6 @@ max_integrity = 20 var/shockcd = 0 -/datum/armor/structure_holosign - bullet = 50 - laser = 50 - energy = 50 - fire = 20 - acid = 20 - /obj/structure/holosign/barrier/cyborg/hacked/bullet_act(obj/projectile/P) take_damage(P.damage, BRUTE, MELEE, 1) //Yeah no this doesn't get projectile resistance. return BULLET_ACT_HIT diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index ddf3deb8080..eb7a0d0196e 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -86,11 +86,6 @@ canSmoothWith = SMOOTH_GROUP_CATWALK obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP -/datum/armor/structure_lattice - melee = 50 - fire = 80 - acid = 50 - /obj/structure/lattice/catwalk/deconstruction_hints(mob/user) return span_notice("The supporting rods look like they could be cut.") @@ -111,11 +106,6 @@ desc = "A heavily reinforced catwalk used to build bridges in hostile environments. It doesn't look like anything could make this budge." resistance_flags = INDESTRUCTIBLE -/datum/armor/structure_lattice - melee = 50 - fire = 80 - acid = 50 - /obj/structure/lattice/catwalk/mining/deconstruction_hints(mob/user) return @@ -133,11 +123,6 @@ obj_flags = CAN_BE_HIT | BLOCK_Z_OUT_DOWN | BLOCK_Z_IN_UP resistance_flags = FIRE_PROOF | LAVA_PROOF -/datum/armor/structure_lattice - melee = 50 - fire = 80 - acid = 50 - /obj/structure/lattice/lava/deconstruction_hints(mob/user) return span_notice("The rods look like they could be cut, but the heat treatment will shatter off. There's space for a tile.") diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 588413bcc96..5baacb8a651 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -248,13 +248,6 @@ opacity = FALSE rad_insulation = RAD_VERY_LIGHT_INSULATION -/datum/armor/structure_mineral_door - melee = 10 - energy = 100 - bomb = 10 - fire = 50 - acid = 50 - /obj/structure/mineral_door/transparent/Close() ..() set_opacity(FALSE) @@ -281,13 +274,6 @@ max_integrity = 200 rad_insulation = RAD_VERY_LIGHT_INSULATION -/datum/armor/structure_mineral_door - melee = 10 - energy = 100 - bomb = 10 - fire = 50 - acid = 50 - /obj/structure/mineral_door/wood/pickaxe_door(mob/living/user, obj/item/I) return @@ -314,13 +300,6 @@ resistance_flags = FLAMMABLE max_integrity = 20 -/datum/armor/structure_mineral_door - melee = 10 - energy = 100 - bomb = 10 - fire = 50 - acid = 50 - /obj/structure/mineral_door/paperframe/Initialize(mapload) . = ..() if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 173fe27f7af..bfef72d6ab1 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -484,10 +484,6 @@ smoothing_groups = SMOOTH_GROUP_WOOD_TABLES //Don't smooth with SMOOTH_GROUP_TABLES canSmoothWith = SMOOTH_GROUP_WOOD_TABLES -/datum/armor/table_glass - fire = 80 - acid = 100 - /obj/structure/table/wood/narsie_act(total_override = TRUE) if(!total_override) ..() @@ -516,10 +512,6 @@ canSmoothWith = SMOOTH_GROUP_FANCY_WOOD_TABLES var/smooth_icon = 'icons/obj/smooth_structures/fancy_table.dmi' // see Initialize() -/datum/armor/table_glass - fire = 80 - acid = 100 - /obj/structure/table/wood/fancy/Initialize(mapload) . = ..() // Needs to be set dynamically because table smooth sprites are 32x34, @@ -653,15 +645,6 @@ smoothing_groups = SMOOTH_GROUP_BRONZE_TABLES //Don't smooth with SMOOTH_GROUP_TABLES canSmoothWith = SMOOTH_GROUP_BRONZE_TABLES -/datum/armor/table_reinforced - melee = 10 - bullet = 30 - laser = 30 - energy = 100 - bomb = 20 - fire = 80 - acid = 70 - /obj/structure/table/bronze/tablepush(mob/living/user, mob/living/pushed_mob) ..() playsound(src, 'sound/magic/clockwork/fellowship_armory.ogg', 50, TRUE) @@ -725,15 +708,6 @@ var/mob/living/carbon/patient = null var/obj/machinery/computer/operating/computer = null -/datum/armor/table_reinforced - melee = 10 - bullet = 30 - laser = 30 - energy = 100 - bomb = 20 - fire = 80 - acid = 70 - /obj/structure/table/optable/Initialize(mapload) . = ..() for(var/direction in GLOB.alldirs) @@ -807,15 +781,6 @@ pass_flags_self = LETPASSTHROW //You can throw objects over this, despite it's density. max_integrity = 20 -/datum/armor/table_reinforced - melee = 10 - bullet = 30 - laser = 30 - energy = 100 - bomb = 20 - fire = 80 - acid = 70 - /obj/structure/rack/examine(mob/user) . = ..() . += span_notice("It's held together by a couple of bolts.") @@ -897,15 +862,6 @@ custom_materials = list(/datum/material/iron=2000) var/building = FALSE -/datum/armor/table_reinforced - melee = 10 - bullet = 30 - laser = 30 - energy = 100 - bomb = 20 - fire = 80 - acid = 70 - /obj/item/rack_parts/attackby(obj/item/W, mob/user, params) if (W.tool_behaviour == TOOL_WRENCH) new /obj/item/stack/sheet/iron(user.loc) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 99d55960787..088a5c08b2e 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -740,13 +740,6 @@ glass_amount = 2 //there is a sub shuttle window in survival_pod.dm for mining pods -/datum/armor/reinforced_plasma - melee = 80 - bullet = 20 - bomb = 60 - fire = 99 - acid = 100 - /obj/structure/window/reinforced/shuttle//this is called reinforced because it is reinforced w/titanium name = "shuttle window" desc = "A reinforced, air-locked pod window." @@ -862,12 +855,6 @@ var/static/mutable_appearance/torn = mutable_appearance('icons/obj/smooth_structures/paperframes.dmi',icon_state = "torn", layer = ABOVE_OBJ_LAYER - 0.1) var/static/mutable_appearance/paper = mutable_appearance('icons/obj/smooth_structures/paperframes.dmi',icon_state = "paper", layer = ABOVE_OBJ_LAYER - 0.1) -/datum/armor/plasma_plastitanium - melee = 95 - bomb = 50 - fire = 80 - acid = 100 - /obj/structure/window/paperframe/Initialize(mapload) . = ..() update_appearance() diff --git a/code/game/turfs/open/space/transit.dm b/code/game/turfs/open/space/transit.dm index 77d6ad3f1ea..74ba0e6fb0a 100644 --- a/code/game/turfs/open/space/transit.dm +++ b/code/game/turfs/open/space/transit.dm @@ -7,36 +7,54 @@ flags_1 = NOJAUNT //This line goes out to every wizard that ever managed to escape the den. I'm sorry. explosive_resistance = INFINITY +/turf/open/space/transit/Initialize(mapload) + . = ..() + update_appearance() + RegisterSignal(src, COMSIG_TURF_RESERVATION_RELEASED, PROC_REF(launch_contents)) + + for(var/atom/movable/movable in src) + throw_atom(movable) + +/turf/open/space/transit/clear_signal_refs() + //Signals are NOT removed from turfs upon replacement, and we get replaced ALOT, so unregister our signal + UnregisterSignal(src, COMSIG_TURF_RESERVATION_RELEASED) + /turf/open/space/transit/get_smooth_underlay_icon(mutable_appearance/underlay_appearance, turf/asking_turf, adjacency_dir) . = ..() underlay_appearance.icon_state = "speedspace_ns_[get_transit_state(asking_turf)]" underlay_appearance.transform = turn(matrix(), get_transit_angle(asking_turf)) -/turf/open/space/transit/south - dir = SOUTH +/turf/open/space/transit/update_icon() + . = ..() + transform = turn(matrix(), get_transit_angle(src)) -/turf/open/space/transit/north - dir = NORTH - -/turf/open/space/transit/horizontal - dir = WEST - -/turf/open/space/transit/west - dir = WEST - -/turf/open/space/transit/east - dir = EAST +/turf/open/space/transit/update_icon_state() + icon_state = "speedspace_ns_[get_transit_state(src)]" + return ..() /turf/open/space/transit/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs) . = ..() - if(!locate(/obj/structure/lattice) in src) - throw_atom(arrived) + + if(!HAS_TRAIT(arrived, TRAIT_HYPERSPACED) && !HAS_TRAIT(arrived, TRAIT_FREE_HYPERSPACE_MOVEMENT)) + arrived.AddComponent(/datum/component/shuttle_cling, turn(dir, 180), old_loc) + +/turf/open/space/transit/Exited(atom/movable/gone, direction) + . = ..() + + var/turf/location = gone.loc + if(istype(location, /turf/open/space) && !istype(location, src.type))//they got forced out of transit area into default space tiles + throw_atom(gone) //launch them into game space, away from transitspace + +///Get rid of all our contents, called when our reservation is released (which in our case means the shuttle arrived) +/turf/open/space/transit/proc/launch_contents(datum/turf_reservation/reservation) + SIGNAL_HANDLER + + for(var/atom/movable/movable in contents) + throw_atom(movable) /turf/open/space/transit/proc/throw_atom(atom/movable/AM) if(!AM || istype(AM, /obj/docking_port) || istype(AM, /obj/effect/abstract)) return - if(AM.loc != src) // Multi-tile objects are "in" multiple locs but its loc is it's true placement. - return // Don't move multi tile objects if their origin isn't in transit var/max = world.maxx-TRANSITIONEDGE var/min = 1+TRANSITIONEDGE @@ -71,24 +89,23 @@ var/turf/T = locate(_x, _y, _z) AM.forceMove(T) - /turf/open/space/transit/CanBuildHere() return SSshuttle.is_in_shuttle_bounds(src) +/turf/open/space/transit/south + dir = SOUTH -/turf/open/space/transit/Initialize(mapload) - . = ..() - update_appearance() - for(var/atom/movable/AM in src) - throw_atom(AM) +/turf/open/space/transit/north + dir = NORTH -/turf/open/space/transit/update_icon() - . = ..() - transform = turn(matrix(), get_transit_angle(src)) +/turf/open/space/transit/horizontal + dir = WEST -/turf/open/space/transit/update_icon_state() - icon_state = "speedspace_ns_[get_transit_state(src)]" - return ..() +/turf/open/space/transit/west + dir = WEST + +/turf/open/space/transit/east + dir = EAST /proc/get_transit_state(turf/T) var/p = 9 diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 7dfc03e22c7..c5a77df1b46 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1212,7 +1212,7 @@ else if(href_list["dupe_marked_datum"]) if(!check_rights(R_SPAWN)) return - return DuplicateObject(marked_datum, perfectcopy=1, newloc=get_turf(usr)) + return duplicate_object(marked_datum, spawning_location = get_turf(usr)) else if(href_list["object_list"]) //this is the laggiest thing ever if(!check_rights(R_SPAWN)) diff --git a/code/modules/antagonists/blob/minions/blobbernaut.dm b/code/modules/antagonists/blob/minions/blobbernaut.dm index 56e9846874e..b40aba1ed85 100644 --- a/code/modules/antagonists/blob/minions/blobbernaut.dm +++ b/code/modules/antagonists/blob/minions/blobbernaut.dm @@ -1,5 +1,6 @@ /datum/antagonist/blobbernaut name = "\improper Blobbernaut" + antagpanel_category = "Biohazards" show_name_in_check_antagonists = TRUE show_to_ghosts = TRUE diff --git a/code/modules/antagonists/blob/minions/blobspore.dm b/code/modules/antagonists/blob/minions/blobspore.dm index 97b5b812628..c1d8f5595b0 100644 --- a/code/modules/antagonists/blob/minions/blobspore.dm +++ b/code/modules/antagonists/blob/minions/blobspore.dm @@ -1,5 +1,6 @@ /datum/antagonist/blobspore name = "\improper Blob Spore" + antagpanel_category = "Biohazards" show_name_in_check_antagonists = TRUE show_to_ghosts = TRUE diff --git a/code/modules/antagonists/blob/structures/_blob.dm b/code/modules/antagonists/blob/structures/_blob.dm index 991342ddf3f..b9f0337b295 100644 --- a/code/modules/antagonists/blob/structures/_blob.dm +++ b/code/modules/antagonists/blob/structures/_blob.dm @@ -355,10 +355,6 @@ health_regen = BLOB_REGULAR_HP_REGEN brute_resist = BLOB_BRUTE_RESIST * 0.5 -/datum/armor/structure_blob - fire = 80 - acid = 70 - /obj/structure/blob/normal/Initialize(mapload, owner_overmind) . = ..() update_integrity(initial_integrity) diff --git a/code/modules/antagonists/blob/structures/shield.dm b/code/modules/antagonists/blob/structures/shield.dm index 2d33d02ab91..0699d70f3f2 100644 --- a/code/modules/antagonists/blob/structures/shield.dm +++ b/code/modules/antagonists/blob/structures/shield.dm @@ -57,9 +57,5 @@ max_integrity = BLOB_REFLECTOR_MAX_HP health_regen = BLOB_REFLECTOR_HP_REGEN -/datum/armor/blob_shield - fire = 90 - acid = 90 - /obj/structure/blob/shield/reflective/core // Automatically generated by the core point_return = 0 diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index 375714eb6cf..04c9ebceb1f 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -520,11 +520,6 @@ armor_type = /datum/armor/space_changeling flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH -/datum/armor/space_changeling - bio = 100 - fire = 90 - acid = 90 - /obj/item/clothing/head/helmet/space/changeling/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_NODROP, CHANGELING_TRAIT) diff --git a/code/modules/antagonists/clown_ops/clown_weapons.dm b/code/modules/antagonists/clown_ops/clown_weapons.dm index ef6b2d97d1f..2f0a44d45cc 100644 --- a/code/modules/antagonists/clown_ops/clown_weapons.dm +++ b/code/modules/antagonists/clown_ops/clown_weapons.dm @@ -98,16 +98,6 @@ /// Cooldown for making a trombone noise for failing to make a bananium desword COOLDOWN_DECLARE(next_trombone_allowed) -/datum/armor/banana_shoes_combat - melee = 25 - bullet = 25 - laser = 25 - energy = 25 - bomb = 50 - bio = 50 - fire = 90 - acid = 50 - /obj/item/melee/energy/sword/bananium/make_transformable() AddComponent(/datum/component/transforming, \ throw_speed_on = 4, \ @@ -174,16 +164,6 @@ active_throw_speed = 1 can_clumsy_use = TRUE -/datum/armor/banana_shoes_combat - melee = 25 - bullet = 25 - laser = 25 - energy = 25 - bomb = 50 - bio = 50 - fire = 90 - acid = 50 - /obj/item/shield/energy/bananium/on_transform(obj/item/source, mob/user, active) . = ..() adjust_comedy() @@ -229,16 +209,6 @@ var/det_time = 50 var/obj/item/grenade/syndieminibomb/bomb -/datum/armor/banana_shoes_combat - melee = 25 - bullet = 25 - laser = 25 - energy = 25 - bomb = 50 - bio = 50 - fire = 90 - acid = 50 - /obj/item/grown/bananapeel/bombanana/Initialize(mapload) . = ..() AddComponent(/datum/component/slippery, det_time) @@ -266,16 +236,6 @@ icon_state = "moustacheg" clumsy_check = GRENADE_NONCLUMSY_FUMBLE -/datum/armor/banana_shoes_combat - melee = 25 - bullet = 25 - laser = 25 - energy = 25 - bomb = 50 - bio = 50 - fire = 90 - acid = 50 - /obj/item/grenade/chem_grenade/teargas/moustache/detonate(mob/living/lanced_by) var/myloc = get_turf(src) . = ..() @@ -291,16 +251,6 @@ /obj/item/clothing/mask/fakemoustache/sticky var/unstick_time = 600 -/datum/armor/banana_shoes_combat - melee = 25 - bullet = 25 - laser = 25 - energy = 25 - bomb = 50 - bio = 50 - fire = 90 - acid = 50 - /obj/item/clothing/mask/fakemoustache/sticky/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_NODROP, STICKY_MOUSTACHE_TRAIT) diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index acb8709bd34..a2613f4477f 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -71,6 +71,7 @@ AddElement(/datum/element/simple_flying) ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) ADD_TRAIT(src, TRAIT_SIXTHSENSE, INNATE_TRAIT) + ADD_TRAIT(src, TRAIT_FREE_HYPERSPACE_MOVEMENT, INNATE_TRAIT) // Starting spells var/datum/action/cooldown/spell/night_vision/revenant/vision = new(src) diff --git a/code/modules/asset_cache/assets/research_designs.dm b/code/modules/asset_cache/assets/research_designs.dm index 62a03040517..feeeee05c7c 100644 --- a/code/modules/asset_cache/assets/research_designs.dm +++ b/code/modules/asset_cache/assets/research_designs.dm @@ -23,9 +23,10 @@ // construct the icon and slap it into the resource cache var/atom/item = initial(D.build_path) if (!ispath(item, /atom)) - // biogenerator outputs to beakers by default - if (initial(D.build_type) & BIOGENERATOR) - item = /obj/item/reagent_containers/cup/beaker/large + // biogenerator reagent designs display their default container + if(initial(D.make_reagent)) + var/datum/reagent/reagent = initial(D.make_reagent) + item = initial(reagent.default_container) else continue // shouldn't happen, but just in case diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 25adcb4a131..2a735bab880 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -933,11 +933,6 @@ GLOBAL_LIST_EMPTY_TYPED(air_alarms, /obj/machinery/airalarm) req_access = null req_one_access = null -/datum/armor/machinery_airalarm - energy = 100 - fire = 90 - acid = 30 - /obj/machinery/airalarm/syndicate //general syndicate access req_access = list(ACCESS_SYNDICATE) @@ -969,11 +964,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) var/static/list/options_map -/datum/armor/machinery_airalarm - energy = 100 - fire = 90 - acid = 30 - /obj/item/circuit_component/air_alarm_general/populate_options() if(!options_map) options_map = list( @@ -1086,11 +1076,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) var/list/alarm_duplicates = list() var/max_alarm_duplicates = 20 -/datum/armor/machinery_airalarm - energy = 100 - fire = 90 - acid = 30 - /obj/item/circuit_component/air_alarm/ui_perform_action(mob/user, action) if(length(alarm_duplicates) >= max_alarm_duplicates) return @@ -1140,11 +1125,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) circuit_size = 0 ui_buttons = list() -/datum/armor/machinery_airalarm - energy = 100 - fire = 90 - acid = 30 - /obj/item/circuit_component/air_alarm/duplicate/removed_from(obj/item/integrated_circuit/removed_from) if(!QDELING(src)) qdel(src) @@ -1251,11 +1231,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) var/max_scrubber_duplicates = 20 var/list/scrubber_duplicates = list() -/datum/armor/machinery_airalarm - energy = 100 - fire = 90 - acid = 30 - /obj/item/circuit_component/air_alarm_scrubbers/ui_perform_action(mob/user, action) if(length(scrubber_duplicates) >= max_scrubber_duplicates) return @@ -1296,11 +1271,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) circuit_size = 0 ui_buttons = list() -/datum/armor/machinery_airalarm - energy = 100 - fire = 90 - acid = 30 - /obj/item/circuit_component/air_alarm_scrubbers/duplicate/Destroy() connected_alarm = null return ..() @@ -1480,11 +1450,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) var/max_vent_duplicates = 20 var/list/vent_duplicates = list() -/datum/armor/machinery_airalarm - energy = 100 - fire = 90 - acid = 30 - /obj/item/circuit_component/air_alarm_vents/ui_perform_action(mob/user, action) if(length(vent_duplicates) >= max_vent_duplicates) return @@ -1533,11 +1498,6 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/airalarm, 24) circuit_size = 0 ui_buttons = list() -/datum/armor/machinery_airalarm - energy = 100 - fire = 90 - acid = 30 - /obj/item/circuit_component/air_alarm_vents/duplicate/removed_from(obj/item/integrated_circuit/removed_from) if(!QDELING(src)) qdel(src) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm index 40f371e044d..111380b92d3 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm @@ -300,11 +300,6 @@ on = TRUE icon_state = "thermo_base_1" -/datum/armor/unary_thermomachine - energy = 100 - fire = 80 - acid = 30 - /obj/machinery/atmospherics/components/unary/thermomachine/freezer/on/Initialize(mapload) . = ..() if(target_temperature == initial(target_temperature)) @@ -314,11 +309,6 @@ icon_state = "thermo_base_1" greyscale_colors = COLOR_CYAN -/datum/armor/unary_thermomachine - energy = 100 - fire = 80 - acid = 30 - /obj/machinery/atmospherics/components/unary/thermomachine/freezer/on/coldroom/Initialize(mapload) . = ..() target_temperature = COLD_ROOM_TEMP diff --git a/code/modules/atmospherics/machinery/other/meter.dm b/code/modules/atmospherics/machinery/other/meter.dm index 53722991054..12ac25680fd 100644 --- a/code/modules/atmospherics/machinery/other/meter.dm +++ b/code/modules/atmospherics/machinery/other/meter.dm @@ -162,10 +162,6 @@ ///The component parent object var/obj/machinery/meter/connected_meter -/datum/armor/machinery_meter - energy = 100 - fire = 40 - /obj/item/circuit_component/atmos_meter/populate_ports() request_data = add_input_port("Request Meter Data", PORT_TYPE_SIGNAL, trigger = PROC_REF(request_meter_data)) @@ -193,10 +189,6 @@ // why are you yelling? /obj/machinery/meter/turf -/datum/armor/machinery_meter - energy = 100 - fire = 40 - /obj/machinery/meter/turf/reattach_to_layer() target = loc diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index cc3da760a5f..01d06951299 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -289,15 +289,6 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister()) temp_limit = 1e12 pressure_limit = 1e14 -/datum/armor/portable_atmospherics_canister - melee = 50 - bullet = 50 - laser = 50 - energy = 100 - bomb = 10 - fire = 80 - acid = 50 - /obj/machinery/portable_atmospherics/canister/fusion_test/create_gas() air_contents.add_gases(/datum/gas/hydrogen, /datum/gas/tritium) air_contents.gases[/datum/gas/hydrogen][MOLES] = 300 @@ -311,15 +302,6 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister()) greyscale_config = /datum/greyscale_config/canister/double_stripe greyscale_colors = "#9fba6c#3d4680" -/datum/armor/portable_atmospherics_canister - melee = 50 - bullet = 50 - laser = 50 - energy = 100 - bomb = 10 - fire = 80 - acid = 50 - /obj/machinery/portable_atmospherics/canister/anesthetic_mix/create_gas() air_contents.add_gases(/datum/gas/oxygen, /datum/gas/nitrous_oxide) air_contents.gases[/datum/gas/oxygen][MOLES] = (O2_ANESTHETIC * maximum_pressure * filled) * air_contents.volume / (R_IDEAL_GAS_EQUATION * air_contents.temperature) @@ -370,15 +352,6 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister()) * Called on Initialize(), fill the canister with the gas_type specified up to the filled level (half if 0.5, full if 1) * Used for canisters spawned in maps and by admins */ -/datum/armor/portable_atmospherics_canister - melee = 50 - bullet = 50 - laser = 50 - energy = 100 - bomb = 10 - fire = 80 - acid = 50 - /obj/machinery/portable_atmospherics/canister/proc/create_gas() if(!gas_type) return diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index 6904aa746cb..73da55ad2fe 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -391,25 +391,11 @@ desc = "High speed, low drag combat boots, now with an added layer of insulation." min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT -/datum/armor/syndicate_coldres - melee = 20 - bullet = 10 - energy = 5 - fire = 25 - acid = 25 - /obj/item/gun/magic/wand/fireball/inert name = "weakened wand of fireball" desc = "This wand shoots scorching balls of fire that explode into destructive flames. The years of the cold have weakened the magic inside the wand." max_charges = 4 -/datum/armor/syndicate_coldres - melee = 20 - bullet = 10 - energy = 5 - fire = 25 - acid = 25 - /obj/item/gun/magic/wand/resurrection/inert name = "weakened wand of healing" desc = "This wand uses healing magics to heal and revive. The years of the cold have weakened the magic inside the wand." @@ -417,142 +403,44 @@ //decals//-- -/datum/armor/syndicate_coldres - melee = 20 - bullet = 10 - energy = 5 - fire = 25 - acid = 25 - /obj/effect/turf_decal/snowdin_station_sign icon_state = "AOP1" -/datum/armor/syndicate_coldres - melee = 20 - bullet = 10 - energy = 5 - fire = 25 - acid = 25 - /obj/effect/turf_decal/snowdin_station_sign/two icon_state = "AOP2" -/datum/armor/syndicate_coldres - melee = 20 - bullet = 10 - energy = 5 - fire = 25 - acid = 25 - /obj/effect/turf_decal/snowdin_station_sign/three icon_state = "AOP3" -/datum/armor/syndicate_coldres - melee = 20 - bullet = 10 - energy = 5 - fire = 25 - acid = 25 - /obj/effect/turf_decal/snowdin_station_sign/four icon_state = "AOP4" -/datum/armor/syndicate_coldres - melee = 20 - bullet = 10 - energy = 5 - fire = 25 - acid = 25 - /obj/effect/turf_decal/snowdin_station_sign/five icon_state = "AOP5" -/datum/armor/syndicate_coldres - melee = 20 - bullet = 10 - energy = 5 - fire = 25 - acid = 25 - /obj/effect/turf_decal/snowdin_station_sign/six icon_state = "AOP6" -/datum/armor/syndicate_coldres - melee = 20 - bullet = 10 - energy = 5 - fire = 25 - acid = 25 - /obj/effect/turf_decal/snowdin_station_sign/seven icon_state = "AOP7" -/datum/armor/syndicate_coldres - melee = 20 - bullet = 10 - energy = 5 - fire = 25 - acid = 25 - /obj/effect/turf_decal/snowdin_station_sign/up icon_state = "AOPU1" -/datum/armor/syndicate_coldres - melee = 20 - bullet = 10 - energy = 5 - fire = 25 - acid = 25 - /obj/effect/turf_decal/snowdin_station_sign/up/two icon_state = "AOPU2" -/datum/armor/syndicate_coldres - melee = 20 - bullet = 10 - energy = 5 - fire = 25 - acid = 25 - /obj/effect/turf_decal/snowdin_station_sign/up/three icon_state = "AOPU3" -/datum/armor/syndicate_coldres - melee = 20 - bullet = 10 - energy = 5 - fire = 25 - acid = 25 - /obj/effect/turf_decal/snowdin_station_sign/up/four icon_state = "AOPU4" -/datum/armor/syndicate_coldres - melee = 20 - bullet = 10 - energy = 5 - fire = 25 - acid = 25 - /obj/effect/turf_decal/snowdin_station_sign/up/five icon_state = "AOPU5" -/datum/armor/syndicate_coldres - melee = 20 - bullet = 10 - energy = 5 - fire = 25 - acid = 25 - /obj/effect/turf_decal/snowdin_station_sign/up/six icon_state = "AOPU6" -/datum/armor/syndicate_coldres - melee = 20 - bullet = 10 - energy = 5 - fire = 25 - acid = 25 - /obj/effect/turf_decal/snowdin_station_sign/up/seven icon_state = "AOPU7" diff --git a/code/modules/buildmode/submodes/copy.dm b/code/modules/buildmode/submodes/copy.dm index 739f53e9bc8..9effd1d9c30 100644 --- a/code/modules/buildmode/submodes/copy.dm +++ b/code/modules/buildmode/submodes/copy.dm @@ -18,7 +18,7 @@ if(LAZYACCESS(modifiers, LEFT_CLICK)) var/turf/T = get_turf(object) if(stored) - DuplicateObject(stored, perfectcopy=1, sameloc=0,newloc=T) + duplicate_object(stored, spawning_location = T) log_admin("Build Mode: [key_name(c)] copied [stored] to [AREACOORD(object)]") else if(LAZYACCESS(modifiers, RIGHT_CLICK)) if(ismovable(object)) // No copying turfs for now. diff --git a/code/modules/cargo/centcom_podlauncher.dm b/code/modules/cargo/centcom_podlauncher.dm index baec0b57829..8c25da21cf2 100644 --- a/code/modules/cargo/centcom_podlauncher.dm +++ b/code/modules/cargo/centcom_podlauncher.dm @@ -42,7 +42,7 @@ var/bayNumber //Quick reference to what bay we're in. Usually set to the loading_id variable for the related area type var/customDropoff = FALSE var/picking_dropoff_turf = FALSE - var/launchClone = FALSE //If true, then we don't actually launch the thing in the bay. Instead we call duplicateObject() and send the result + var/launchClone = FALSE //If true, then we don't actually launch the thing in the bay. Instead we call duplicate_object() and send the result var/launchRandomItem = FALSE //If true, lauches a single random item instead of everything on a turf. var/launchChoice = LAUNCH_RANDOM //Determines if we launch all at once (0) , in order (1), or at random(2) var/explosionChoice = 0 //Determines if there is no explosion (0), custom explosion (1), or just do a maxcap (2) @@ -721,7 +721,7 @@ /datum/centcom_podlauncher/proc/launch(turf/target_turf) //Game time started if (isnull(target_turf)) return - var/obj/structure/closet/supplypod/centcompod/toLaunch = DuplicateObject(temp_pod) //Duplicate the temp_pod (which we have been varediting or configuring with the UI) and store the result + var/obj/structure/closet/supplypod/centcompod/toLaunch = duplicate_object(temp_pod) //Duplicate the temp_pod (which we have been varediting or configuring with the UI) and store the result toLaunch.update_appearance()//we update_appearance() here so that the door doesnt "flicker on" right after it lands var/shippingLane = GLOB.areas_by_type[/area/centcom/central_command_areas/supplypod/supplypod_temp_holding] toLaunch.forceMove(shippingLane) @@ -734,7 +734,7 @@ toLaunch.turfs_in_cargo += atom_to_launch.type else var/atom/movable/movable_to_launch = launch_candidate - DuplicateObject(movable_to_launch).forceMove(toLaunch) //Duplicate a single atom/movable from launchList and forceMove it into the supplypod + duplicate_object(movable_to_launch).forceMove(toLaunch) //Duplicate a single atom/movable from launchList and forceMove it into the supplypod else for (var/launch_candidate in launchList) if (isnull(launch_candidate)) @@ -744,7 +744,7 @@ toLaunch.turfs_in_cargo += turf_to_launch.type else var/atom/movable/movable_to_launch = launch_candidate - DuplicateObject(movable_to_launch).forceMove(toLaunch) //Duplicate each atom/movable in launchList and forceMove them into the supplypod + duplicate_object(movable_to_launch).forceMove(toLaunch) //Duplicate each atom/movable in launchList and forceMove them into the supplypod else if(launchRandomItem) var/atom/random_item = pick_n_take(launchList) diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm index b9dfa4c755d..828f7eeb27e 100644 --- a/code/modules/cargo/supplypod.dm +++ b/code/modules/cargo/supplypod.dm @@ -577,15 +577,6 @@ icon_state = "LZ_Slider" layer = PROJECTILE_HIT_THRESHHOLD_LAYER -/datum/armor/closet_supplypod - melee = 30 - bullet = 50 - laser = 50 - energy = 100 - bomb = 100 - fire = 100 - acid = 80 - /obj/effect/pod_landingzone_effect/Initialize(mapload, obj/structure/closet/supplypod/pod) . = ..() if(!pod) diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index 0d5c0e64908..f252ed3b05f 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -594,13 +594,6 @@ armor_type = /datum/armor/none // which means it offers no protection, it's just air and light -/datum/armor/head_chameleon - melee = 5 - bullet = 5 - laser = 5 - fire = 50 - acid = 50 - /obj/item/clothing/head/chameleon/drone/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT) @@ -670,14 +663,6 @@ // Can drones use the voice changer part? Let's not find out. voice_change = 0 -/datum/armor/mask_chameleon - melee = 5 - bullet = 5 - laser = 5 - bio = 100 - fire = 50 - acid = 50 - /obj/item/clothing/mask/chameleon/drone/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT) @@ -739,14 +724,6 @@ special_desc = "A pair of chameleon shoes with an anti-slip coating employed by the Syndicate in infiltration operations." // Skyrat edit -/datum/armor/shoes_chameleon - melee = 10 - bullet = 10 - laser = 10 - bio = 90 - fire = 50 - acid = 50 - /obj/item/clothing/shoes/chameleon/noslip/broken/Initialize(mapload) . = ..() chameleon_action.emp_randomise(INFINITY) @@ -758,14 +735,6 @@ var/datum/action/item_action/chameleon/change/chameleon_action -/datum/armor/shoes_chameleon - melee = 10 - bullet = 10 - laser = 10 - bio = 90 - fire = 50 - acid = 50 - /obj/item/storage/backpack/chameleon/Initialize(mapload) . = ..() chameleon_action = new(src) @@ -796,14 +765,6 @@ var/datum/action/item_action/chameleon/change/chameleon_action -/datum/armor/shoes_chameleon - melee = 10 - bullet = 10 - laser = 10 - bio = 90 - fire = 50 - acid = 50 - /obj/item/storage/belt/chameleon/Initialize(mapload) . = ..() @@ -836,14 +797,6 @@ var/datum/action/item_action/chameleon/change/chameleon_action -/datum/armor/shoes_chameleon - melee = 10 - bullet = 10 - laser = 10 - bio = 90 - fire = 50 - acid = 50 - /obj/item/radio/headset/chameleon/Initialize(mapload) . = ..() chameleon_action = new(src) @@ -870,14 +823,6 @@ name = "tablet" var/datum/action/item_action/chameleon/change/tablet/chameleon_action -/datum/armor/shoes_chameleon - melee = 10 - bullet = 10 - laser = 10 - bio = 90 - fire = 50 - acid = 50 - /obj/item/modular_computer/pda/chameleon/Initialize(mapload) . = ..() chameleon_action = new(src) @@ -904,14 +849,6 @@ /obj/item/stamp/chameleon var/datum/action/item_action/chameleon/change/chameleon_action -/datum/armor/shoes_chameleon - melee = 10 - bullet = 10 - laser = 10 - bio = 90 - fire = 50 - acid = 50 - /obj/item/stamp/chameleon/Initialize(mapload) . = ..() chameleon_action = new(src) @@ -983,10 +920,6 @@ /// The badmin mode. Makes your projectiles act like the real deal. var/real_hits = FALSE -/datum/armor/neck_chameleon - fire = 50 - acid = 50 - /obj/item/gun/energy/laser/chameleon/Initialize(mapload) . = ..() chameleon_action = new(src) diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 35eba387ee3..24ad308a413 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -245,10 +245,6 @@ inhand_icon_state = "glasses" vision_correction = TRUE //corrects nearsightedness -/datum/armor/glasses_science - fire = 80 - acid = 100 - /obj/item/clothing/glasses/regular/Initialize(mapload) . = ..() AddComponent(/datum/component/knockoff, 25, list(BODY_ZONE_PRECISE_EYES), slot_flags) @@ -388,10 +384,6 @@ glass_colour_type = /datum/client_colour/glass_colour/gray alternate_worn_layer = ABOVE_BODY_FRONT_HEAD_LAYER // SKYRAT EDIT - Just so it works until I make the change upstream -/datum/armor/glasses_science - fire = 80 - acid = 100 - /obj/item/clothing/glasses/welding/attack_self(mob/user) weldingvisortoggle(user) @@ -409,10 +401,6 @@ darkness_view = 1 dog_fashion = /datum/dog_fashion/head -/datum/armor/glasses_science - fire = 80 - acid = 100 - /obj/item/clothing/glasses/blindfold/equipped(mob/living/carbon/human/user, slot) . = ..() if(slot & ITEM_SLOT_EYES) @@ -435,10 +423,6 @@ inhand_icon_state = null var/colored_before = FALSE -/datum/armor/glasses_science - fire = 80 - acid = 100 - /obj/item/clothing/glasses/blindfold/white/visual_equipped(mob/living/carbon/human/user, slot) if(ishuman(user) && (slot & ITEM_SLOT_EYES)) update_icon(ALL, user) @@ -477,10 +461,6 @@ flash_protect = FLASH_PROTECTION_SENSITIVE glass_colour_type = /datum/client_colour/glass_colour/red -/datum/armor/glasses_science - fire = 80 - acid = 100 - /obj/item/clothing/glasses/thermal/emp_act(severity) . = ..() if(. & EMP_PROTECT_SELF) @@ -492,10 +472,6 @@ desc = "A pair of xray goggles manufactured by the Syndicate." vision_flags = SEE_TURFS|SEE_MOBS|SEE_OBJS -/datum/armor/glasses_science - fire = 80 - acid = 100 - /obj/item/clothing/glasses/thermal/xray/equipped(mob/living/carbon/human/user, slot) . = ..() if(!(slot & ITEM_SLOT_EYES) || !istype(user)) @@ -535,10 +511,6 @@ icon_state = "thermoncle" flags_1 = null //doesn't protect eyes because it's a monocle, duh -/datum/armor/glasses_science - fire = 80 - acid = 100 - /obj/item/clothing/glasses/thermal/monocle/examine(mob/user) //Different examiners see a different description! if(user.gender == MALE) desc = replacetext(desc, "person", "man") @@ -618,10 +590,6 @@ var/list/hudlist = list(DATA_HUD_MEDICAL_ADVANCED, DATA_HUD_DIAGNOSTIC_ADVANCED, DATA_HUD_SECURITY_ADVANCED) var/xray = FALSE -/datum/armor/glasses_science - fire = 80 - acid = 100 - /obj/item/clothing/glasses/debug/equipped(mob/user, slot) . = ..() if(!(slot & ITEM_SLOT_EYES)) @@ -672,10 +640,6 @@ ///Tells us who the current wearer([BIGSHOT]) is. var/mob/living/carbon/human/bigshot -/datum/armor/glasses_science - fire = 80 - acid = 100 - /obj/item/clothing/glasses/salesman/equipped(mob/living/carbon/human/user, slot) ..() if(!(slot & ITEM_SLOT_EYES)) diff --git a/code/modules/clothing/gloves/plasmaman.dm b/code/modules/clothing/gloves/plasmaman.dm index 3447fda2cf4..0ca552773ec 100644 --- a/code/modules/clothing/gloves/plasmaman.dm +++ b/code/modules/clothing/gloves/plasmaman.dm @@ -20,11 +20,6 @@ icon_state = "blackplasma" greyscale_colors = "#2f2e31" -/datum/armor/color_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/gloves/color/plasmaman/plasmanitrile name = "nitrile envirogloves" desc = "Pricy nitrile gloves made for plasmamen." @@ -32,82 +27,42 @@ greyscale_colors = "#913b00" clothing_traits = list(TRAIT_QUICKER_CARRY, TRAIT_FASTMED) -/datum/armor/color_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/gloves/color/plasmaman/white name = "white envirogloves" icon_state = "whiteplasma" greyscale_colors = "#ffffff" -/datum/armor/color_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/gloves/color/plasmaman/robot name = "roboticist envirogloves" icon_state = "robotplasma" greyscale_colors = "#932500" -/datum/armor/color_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/gloves/color/plasmaman/janny name = "janitor envirogloves" icon_state = "jannyplasma" greyscale_colors = "#883391" -/datum/armor/color_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/gloves/color/plasmaman/cargo name = "cargo envirogloves" icon_state = "cargoplasma" greyscale_colors = "#bb9042" -/datum/armor/color_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/gloves/color/plasmaman/engineer name = "engineering envirogloves" icon_state = "engieplasma" greyscale_colors = "#d75600" siemens_coefficient = 0 -/datum/armor/color_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/gloves/color/plasmaman/atmos name = "atmos envirogloves" icon_state = "atmosplasma" greyscale_colors = "#00a5ff" -/datum/armor/color_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/gloves/color/plasmaman/explorer name = "explorer envirogloves" icon_state = "explorerplasma" greyscale_colors = "#47453d" -/datum/armor/color_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/gloves/color/plasmaman/botanic_leather name = "botany envirogloves" desc = "These leather gloves protect your boney hands against thorns, barbs, prickles, spikes and other harmful objects of floral origin." @@ -115,31 +70,16 @@ greyscale_colors = "#3164ff" clothing_traits = list(TRAIT_PLANT_SAFE) -/datum/armor/color_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/gloves/color/plasmaman/prototype name = "prototype envirogloves" icon_state = "protoplasma" greyscale_colors = "#911801" -/datum/armor/color_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/gloves/color/plasmaman/clown name = "clown envirogloves" icon_state = "clownplasma" greyscale_colors = "#ff0000" -/datum/armor/color_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/gloves/color/plasmaman/head_of_personnel name = "head of personnel's envirogloves" desc = "Covers up those scandalous, bony hands. Appears to be an attempt at making a replica of the captain's gloves." @@ -147,62 +87,32 @@ inhand_icon_state = null greyscale_colors = null -/datum/armor/color_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/gloves/color/plasmaman/chief_engineer name = "chief engineer's envirogloves" icon_state = "ceplasma" greyscale_colors = "#45ff00" siemens_coefficient = 0 -/datum/armor/color_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/gloves/color/plasmaman/research_director name = "research director's envirogloves" icon_state = "rdplasma" greyscale_colors = "#64008a" -/datum/armor/color_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/gloves/color/plasmaman/centcom_commander name = "CentCom commander envirogloves" icon_state = "commanderplasma" greyscale_colors = "#009100" -/datum/armor/color_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/gloves/color/plasmaman/centcom_official name = "CentCom official envirogloves" icon_state = "officialplasma" greyscale_colors = "#10af77" -/datum/armor/color_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/gloves/color/plasmaman/centcom_intern name = "CentCom intern envirogloves" icon_state = "internplasma" greyscale_colors = "#00974b" -/datum/armor/color_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/gloves/color/plasmaman/radio name = "translation envirogloves" desc = "Allows the less vocally-capable plasmamen to use sign language over comms." diff --git a/code/modules/clothing/gloves/tacklers.dm b/code/modules/clothing/gloves/tacklers.dm index ff98ae5d12d..888ecac39ee 100644 --- a/code/modules/clothing/gloves/tacklers.dm +++ b/code/modules/clothing/gloves/tacklers.dm @@ -96,9 +96,6 @@ tackle_speed = 6 skill_mod = 7 -/datum/armor/combat_insulated - bio = 50 - /obj/item/clothing/gloves/tackler/offbrand name = "improvised gripper gloves" desc = "Ratty looking fingerless gloves wrapped with sticky tape. Beware anyone wearing these, for they clearly have no shame and nothing to lose." @@ -110,9 +107,6 @@ min_distance = 2 skill_mod = -1 -/datum/armor/combat_insulated - bio = 50 - /obj/item/clothing/gloves/tackler/football name = "football gloves" desc = "Gloves for football players! Teaches them how to tackle like a pro." diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 2252a449cf2..eed0f15cf59 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -121,17 +121,6 @@ min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH | PEPPERPROOF -/datum/armor/utility_hardhat - melee = 15 - bullet = 5 - laser = 20 - energy = 10 - bomb = 20 - bio = 50 - fire = 100 - acid = 50 - wound = 10 - /obj/item/clothing/head/utility/hardhat/atmos/worn_overlays(mutable_appearance/standing, isinhands, icon_file) . = ..() if(!isinhands) @@ -152,17 +141,6 @@ visor_flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH | PEPPERPROOF var/visor_sprite_path //SKYRAT EDIT --- Lets the visor not smush the snout -/datum/armor/utility_hardhat - melee = 15 - bullet = 5 - laser = 20 - energy = 10 - bomb = 20 - bio = 50 - fire = 100 - acid = 50 - wound = 10 - /obj/item/clothing/head/utility/hardhat/weldhat/Initialize(mapload) . = ..() update_appearance() @@ -244,17 +222,6 @@ worn_y_offset = 1 dog_fashion = /datum/dog_fashion/head/pumpkin/unlit -/datum/armor/utility_hardhat - melee = 15 - bullet = 5 - laser = 20 - energy = 10 - bomb = 20 - bio = 50 - fire = 100 - acid = 50 - wound = 10 - /obj/item/clothing/head/utility/hardhat/pumpkinhead/set_light_on(new_value) . = ..() if(isnull(.)) @@ -288,17 +255,6 @@ light_color = "#76ff8e" dog_fashion = /datum/dog_fashion/head/blumpkin/unlit -/datum/armor/utility_hardhat - melee = 15 - bullet = 5 - laser = 20 - energy = 10 - bomb = 20 - bio = 50 - fire = 100 - acid = 50 - wound = 10 - /obj/item/clothing/head/utility/hardhat/pumpkinhead/blumpkin/turn_on(mob/user) . = ..() dog_fashion = /datum/dog_fashion/head/blumpkin/lit diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index 6742499d835..cced74a950d 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -339,10 +339,6 @@ /// toggles between sell (TRUE) and get price post-fees (FALSE) var/selling = FALSE -/datum/armor/large_scarf_syndie - fire = 50 - acid = 40 - /obj/item/clothing/neck/necklace/dope/merchant/attack_self(mob/user) . = ..() selling = !selling @@ -377,10 +373,6 @@ custom_price = PAYCHECK_CREW * 0.2 custom_materials = (list(/datum/material/plastic = 500)) -/datum/armor/large_scarf_syndie - fire = 50 - acid = 40 - /obj/item/clothing/neck/beads/Initialize(mapload) . = ..() color = color = pick("#ff0077","#d400ff","#2600ff","#00ccff","#00ff2a","#e5ff00","#ffae00","#ff0000", "#ffffff") diff --git a/code/modules/clothing/shoes/costume.dm b/code/modules/clothing/shoes/costume.dm index 7b39acabd7d..64423040ce7 100644 --- a/code/modules/clothing/shoes/costume.dm +++ b/code/modules/clothing/shoes/costume.dm @@ -42,9 +42,6 @@ icon_state = "clockwork_treads" can_be_tied = FALSE -/datum/armor/shoes_roman - bio = 10 - /obj/item/clothing/shoes/bronze/Initialize(mapload) . = ..() AddComponent(/datum/component/squeak, list('sound/machines/clockcult/integration_cog_install.ogg' = 1, 'sound/magic/clockwork/fellowship_armory.ogg' = 1), 50, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) diff --git a/code/modules/clothing/spacesuits/pirate.dm b/code/modules/clothing/spacesuits/pirate.dm index 26ce700efb9..bfc4d056ffc 100644 --- a/code/modules/clothing/spacesuits/pirate.dm +++ b/code/modules/clothing/spacesuits/pirate.dm @@ -21,16 +21,6 @@ icon_state = "spacebandana" inhand_icon_state = "space_bandana_helmet" -/datum/armor/space_pirate - melee = 30 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 60 - acid = 75 - /obj/item/clothing/suit/space/pirate name = "modified EVA suit" desc = "A modified suit to allow space pirates to board shuttles and stations while avoiding the maw of the void. Comes with additional protection, and is lighter to move in." diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm index 7a7ded0c58d..000cb298551 100644 --- a/code/modules/clothing/spacesuits/syndi.dm +++ b/code/modules/clothing/spacesuits/syndi.dm @@ -27,31 +27,11 @@ cell = /obj/item/stock_parts/cell/hyper //Green syndicate space suit -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/head/helmet/space/syndicate/green name = "green space helmet" icon_state = "syndicate-helm-green" inhand_icon_state = "space_helmet_syndicate" -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/suit/space/syndicate/green name = "green space suit" icon_state = "syndicate-green" @@ -59,31 +39,11 @@ //Dark green syndicate space suit -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/head/helmet/space/syndicate/green/dark name = "dark green space helmet" icon_state = "syndicate-helm-green-dark" inhand_icon_state = "syndicate-helm-green-dark" -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/suit/space/syndicate/green/dark name = "dark green space suit" icon_state = "syndicate-green-dark" @@ -91,62 +51,22 @@ //Orange syndicate space suit -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/head/helmet/space/syndicate/orange name = "orange space helmet" icon_state = "syndicate-helm-orange" inhand_icon_state = "syndicate-helm-orange" -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/suit/space/syndicate/orange name = "orange space suit" icon_state = "syndicate-orange" inhand_icon_state = "syndicate-orange" //Blue syndicate space suit -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/head/helmet/space/syndicate/blue name = "blue space helmet" icon_state = "syndicate-helm-blue" inhand_icon_state = "syndicate-helm-blue" -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/suit/space/syndicate/blue name = "blue space suit" icon_state = "syndicate-blue" @@ -154,31 +74,11 @@ //Black syndicate space suit -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/head/helmet/space/syndicate/black name = "black space helmet" icon_state = "syndicate-helm-black" inhand_icon_state = "syndicate-helm-black" -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/suit/space/syndicate/black name = "black space suit" icon_state = "syndicate-black" @@ -186,31 +86,11 @@ //Black-green syndicate space suit -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/head/helmet/space/syndicate/black/green name = "black space helmet" icon_state = "syndicate-helm-black-green" inhand_icon_state = "syndicate-helm-black-green" -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/suit/space/syndicate/black/green name = "black and green space suit" icon_state = "syndicate-black-green" @@ -218,31 +98,11 @@ //Black-blue syndicate space suit -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/head/helmet/space/syndicate/black/blue name = "black space helmet" icon_state = "syndicate-helm-black-blue" inhand_icon_state = "syndicate-helm-black-blue" -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/suit/space/syndicate/black/blue name = "black and blue space suit" icon_state = "syndicate-black-blue" @@ -250,31 +110,11 @@ //Black medical syndicate space suit -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/head/helmet/space/syndicate/black/med name = "black space helmet" icon_state = "syndicate-helm-black-med" inhand_icon_state = "syndicate-helm-black" -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/suit/space/syndicate/black/med name = "green space suit" icon_state = "syndicate-black-med" @@ -282,31 +122,11 @@ //Black-orange syndicate space suit -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/head/helmet/space/syndicate/black/orange name = "black space helmet" icon_state = "syndicate-helm-black-orange" inhand_icon_state = "syndicate-helm-black" -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/suit/space/syndicate/black/orange name = "black and orange space suit" icon_state = "syndicate-black-orange" @@ -314,47 +134,17 @@ //Black-red syndicate space suit -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/head/helmet/space/syndicate/black/red name = "black space helmet" icon_state = "syndicate-helm-black-red" inhand_icon_state = "syndicate-helm-black-red" -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/suit/space/syndicate/black/red name = "black and red space suit" icon_state = "syndicate-black-red" inhand_icon_state = "syndicate-black-red" //Black-red syndicate contract varient -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/head/helmet/space/syndicate/contract name = "contractor helmet" desc = "A specialised black and gold helmet that's more compact than its standard Syndicate counterpart. Can be ultra-compressed into even the tightest of spaces." @@ -362,16 +152,6 @@ icon_state = "syndicate-contract-helm" inhand_icon_state = "contractor_helmet" -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/suit/space/syndicate/contract name = "contractor space suit" desc = "A specialised black and gold space suit that's quicker, and more compact than its standard Syndicate counterpart. Can be ultra-compressed into even the tightest of spaces." @@ -381,31 +161,11 @@ inhand_icon_state = null //Black with yellow/red engineering syndicate space suit -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/head/helmet/space/syndicate/black/engie name = "black space helmet" icon_state = "syndicate-helm-black-engie" inhand_icon_state = "syndicate-helm-black" -/datum/armor/space_syndicate - melee = 40 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 80 - acid = 85 - /obj/item/clothing/suit/space/syndicate/black/engie name = "black engineering space suit" icon_state = "syndicate-black-engie" diff --git a/code/modules/clothing/suits/_suits.dm b/code/modules/clothing/suits/_suits.dm index 3040e103ad5..3b323dfb48c 100644 --- a/code/modules/clothing/suits/_suits.dm +++ b/code/modules/clothing/suits/_suits.dm @@ -20,8 +20,10 @@ . = ..() setup_shielding() -///obj/item/clothing/suit/worn_overlays(isinhands = FALSE) //ORIGINAL -/obj/item/clothing/suit/worn_overlays(mutable_appearance/standing, isinhands = FALSE, file2use, mutant_styles = NONE) +/// SKYRAT EDIT CHANGE BEGIN - taurs and teshis +// /obj/item/clothing/suit/worn_overlays(mutable_appearance/standing, isinhands = FALSE) // ORIGINAL +/obj/item/clothing/suit/worn_overlays(mutable_appearance/standing, isinhands = FALSE, file2use = null, mutant_styles = NONE) +// SKYRAT EDIT CHANGE END . = ..() if(isinhands) return @@ -46,7 +48,7 @@ if(istype(U) && U.attached_accessory) var/obj/item/clothing/accessory/A = U.attached_accessory if(A.above_suit) - . += U.accessory_overlay + . += U.modify_accessory_overlay() // SKYRAT EDIT CHANGE - ORIGINAL: . += U.accessory_overlay /obj/item/clothing/suit/update_clothes_damaged_state(damaged_state = CLOTHING_DAMAGED) ..() diff --git a/code/modules/clothing/suits/ablativecoat.dm b/code/modules/clothing/suits/ablativecoat.dm index 49a18330b3f..98df168aa56 100644 --- a/code/modules/clothing/suits/ablativecoat.dm +++ b/code/modules/clothing/suits/ablativecoat.dm @@ -36,14 +36,6 @@ equip_delay_other = 40 var/hit_reflect_chance = 50 -/datum/armor/hooded_ablative - melee = 10 - bullet = 10 - laser = 60 - energy = 60 - fire = 100 - acid = 100 - /obj/item/clothing/suit/hooded/ablative/Initialize(mapload) . = ..() allowed = GLOB.security_vest_allowed diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 74a93969069..145c337e8ca 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -504,17 +504,6 @@ material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS//Can change color and add prefix armor_type = /datum/armor/knight_greyscale -/datum/armor/knight_greyscale - melee = 35 - bullet = 10 - laser = 10 - energy = 10 - bomb = 10 - bio = 10 - fire = 40 - acid = 40 - wound = 15 - /obj/item/clothing/suit/armor/vest/durathread name = "durathread vest" desc = "A vest made of durathread with strips of leather acting as trauma plates." diff --git a/code/modules/clothing/suits/chaplainsuits.dm b/code/modules/clothing/suits/chaplainsuits.dm index 30b93e38173..2ec40c5a333 100644 --- a/code/modules/clothing/suits/chaplainsuits.dm +++ b/code/modules/clothing/suits/chaplainsuits.dm @@ -27,15 +27,6 @@ allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) //Suits -/datum/armor/chaplainsuit_armor - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - wound = 20 - /obj/item/clothing/suit/chaplainsuit/holidaypriest name = "holiday priest" desc = "This is a nice holiday, my son." @@ -44,15 +35,6 @@ body_parts_covered = CHEST|GROIN|LEGS|ARMS flags_inv = HIDEJUMPSUIT -/datum/armor/chaplainsuit_armor - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - wound = 20 - /obj/item/clothing/suit/chaplainsuit/nun name = "nun robe" desc = "Maximum piety in this star system." @@ -61,15 +43,6 @@ body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS flags_inv = HIDEJUMPSUIT -/datum/armor/chaplainsuit_armor - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - wound = 20 - /obj/item/clothing/suit/chaplainsuit/bishoprobe name = "bishop's robes" desc = "Glad to see the tithes you collected were well spent." @@ -78,15 +51,6 @@ body_parts_covered = CHEST|GROIN|LEGS|ARMS flags_inv = HIDEJUMPSUIT -/datum/armor/chaplainsuit_armor - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - wound = 20 - /obj/item/clothing/suit/chaplainsuit/armor/studentuni name = "student robe" desc = "The uniform of a bygone institute of learning." @@ -94,15 +58,6 @@ inhand_icon_state = null body_parts_covered = ARMS|CHEST -/datum/armor/chaplainsuit_armor - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - wound = 20 - /obj/item/clothing/suit/chaplainsuit/armor/witchhunter name = "witchunter garb" desc = "This worn outfit saw much use back in the day." @@ -110,15 +65,6 @@ inhand_icon_state = null body_parts_covered = CHEST|GROIN|LEGS|ARMS -/datum/armor/chaplainsuit_armor - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - wound = 20 - /obj/item/clothing/suit/hooded/chaplainsuit/monkhabit name = "monk's habit" desc = "A few steps above rended sackcloth." @@ -129,15 +75,6 @@ body_parts_covered = CHEST|GROIN|LEGS|ARMS hoodtype = /obj/item/clothing/head/hooded/monkhabit -/datum/armor/chaplainsuit_armor - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - wound = 20 - /obj/item/clothing/head/hooded/monkhabit name = "monk's hood" desc = "For when a man wants to cover up his tonsure." @@ -148,15 +85,6 @@ body_parts_covered = HEAD flags_inv = HIDEHAIR|HIDEEARS -/datum/armor/chaplainsuit_armor - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - wound = 20 - /obj/item/clothing/suit/chaplainsuit/monkrobeeast name = "eastern monk's robes" desc = "Best combined with a shaved head." @@ -165,15 +93,6 @@ body_parts_covered = GROIN|LEGS flags_inv = HIDEJUMPSUIT -/datum/armor/chaplainsuit_armor - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - wound = 20 - /obj/item/clothing/suit/chaplainsuit/whiterobe name = "white robe" desc = "Good for clerics and sleepy crewmembers." @@ -182,15 +101,6 @@ body_parts_covered = CHEST|GROIN|LEGS|ARMS flags_inv = HIDEJUMPSUIT -/datum/armor/chaplainsuit_armor - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - wound = 20 - /obj/item/clothing/suit/chaplainsuit/clownpriest name = "Robes of the Honkmother" desc = "Meant for a clown of the cloth." @@ -200,15 +110,6 @@ flags_inv = HIDEJUMPSUIT allowed = list(/obj/item/megaphone/clown, /obj/item/soap, /obj/item/food/pie/cream, /obj/item/bikehorn, /obj/item/bikehorn/golden, /obj/item/bikehorn/airhorn, /obj/item/instrument/bikehorn, /obj/item/reagent_containers/cup/soda_cans/canned_laughter, /obj/item/toy/crayon, /obj/item/toy/crayon/spraycan, /obj/item/toy/crayon/spraycan/lubecan, /obj/item/grown/bananapeel, /obj/item/food/grown/banana) -/datum/armor/chaplainsuit_armor - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - wound = 20 - /obj/item/clothing/head/helmet/chaplain/clock name = "forgotten helmet" desc = "It has the unyielding gaze of a god eternally forgotten." @@ -237,14 +138,6 @@ slowdown = 0 clothing_flags = NONE -/datum/armor/chaplain_clock - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - /obj/item/clothing/head/helmet/chaplain name = "crusader helmet" desc = "Deus Vult." @@ -275,14 +168,6 @@ slowdown = 0 clothing_flags = NONE -/datum/armor/helmet_chaplain - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - /obj/item/clothing/head/helmet/chaplain/cage name = "cage" desc = "A cage that restrains the will of the self, allowing one to see the profane world for what it is." @@ -291,42 +176,18 @@ inhand_icon_state = null worn_y_offset = 7 -/datum/armor/helmet_chaplain - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - /obj/item/clothing/head/helmet/chaplain/ancient name = "ancient helmet" desc = "None may pass!" icon_state = "knight_ancient" inhand_icon_state = null -/datum/armor/helmet_chaplain - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - /obj/item/clothing/suit/chaplainsuit/armor/ancient name = "ancient armour" desc = "Defend the treasure..." icon_state = "knight_ancient" inhand_icon_state = null -/datum/armor/helmet_chaplain - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - /obj/item/clothing/head/helmet/chaplain/witchunter_hat name = "witchunter hat" desc = "This hat saw much use back in the day." @@ -335,14 +196,6 @@ flags_cover = HEADCOVERSEYES flags_inv = HIDEEYES -/datum/armor/helmet_chaplain - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - /obj/item/clothing/head/helmet/chaplain/adept name = "adept hood" desc = "Its only heretical when others do it." @@ -351,28 +204,12 @@ flags_cover = HEADCOVERSEYES flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS -/datum/armor/helmet_chaplain - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - /obj/item/clothing/suit/chaplainsuit/armor/adept name = "adept robes" desc = "The ideal outfit for burning the unfaithful." icon_state = "crusader" inhand_icon_state = null -/datum/armor/helmet_chaplain - melee = 50 - bullet = 10 - laser = 10 - energy = 10 - fire = 80 - acid = 80 - /obj/item/clothing/suit/chaplainsuit/armor/crusader name = "Crusader's Armour" desc = "Armour that's comprised of metal and cloth." @@ -394,27 +231,9 @@ /obj/item/clothing/suit/chaplainsuit/armor/crusader/red icon_state = "crusader-red" -/datum/armor/armor_crusader - melee = 50 - bullet = 50 - laser = 50 - energy = 50 - bomb = 60 - fire = 60 - acid = 60 - /obj/item/clothing/suit/chaplainsuit/armor/crusader/blue icon_state = "crusader-blue" -/datum/armor/armor_crusader - melee = 50 - bullet = 50 - laser = 50 - energy = 50 - bomb = 60 - fire = 60 - acid = 60 - /obj/item/clothing/suit/hooded/chaplain_hoodie name = "follower hoodie" desc = "Hoodie made for acolytes of the chaplain." @@ -426,15 +245,6 @@ allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) hoodtype = /obj/item/clothing/head/hooded/chaplain_hood -/datum/armor/armor_crusader - melee = 50 - bullet = 50 - laser = 50 - energy = 50 - bomb = 60 - fire = 60 - acid = 60 - /obj/item/clothing/head/hooded/chaplain_hood name = "follower hood" desc = "Hood made for acolytes of the chaplain." @@ -444,15 +254,6 @@ body_parts_covered = HEAD flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS -/datum/armor/armor_crusader - melee = 50 - bullet = 50 - laser = 50 - energy = 50 - bomb = 60 - fire = 60 - acid = 60 - /obj/item/clothing/suit/hooded/chaplain_hoodie/leader name = "leader hoodie" desc = "Now you're ready for some 50 dollar bling water." @@ -460,29 +261,11 @@ inhand_icon_state = null hoodtype = /obj/item/clothing/head/hooded/chaplain_hood/leader -/datum/armor/armor_crusader - melee = 50 - bullet = 50 - laser = 50 - energy = 50 - bomb = 60 - fire = 60 - acid = 60 - /obj/item/clothing/head/hooded/chaplain_hood/leader name = "leader hood" desc = "I mean, you don't /have/ to seek bling water. I just think you should." icon_state = "chaplain_hood_leader" -/datum/armor/armor_crusader - melee = 50 - bullet = 50 - laser = 50 - energy = 50 - bomb = 60 - fire = 60 - acid = 60 - /obj/item/clothing/suit/chaplainsuit/shrinehand name = "shrinehand robe" desc = "Won't help you communicate with spirits, but you'll certainly look the part." diff --git a/code/modules/clothing/suits/costume.dm b/code/modules/clothing/suits/costume.dm index fcb2228efd5..aef6b5b9a58 100644 --- a/code/modules/clothing/suits/costume.dm +++ b/code/modules/clothing/suits/costume.dm @@ -35,16 +35,6 @@ strip_delay = 40 equip_delay_other = 20 -/datum/armor/pirate_armored - melee = 30 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 60 - acid = 75 - /obj/item/clothing/suit/costume/pirate/captain name = "pirate captain coat" desc = "Yarr." @@ -56,16 +46,6 @@ strip_delay = 40 equip_delay_other = 20 -/datum/armor/pirate_armored - melee = 30 - bullet = 50 - laser = 30 - energy = 40 - bomb = 30 - bio = 30 - fire = 60 - acid = 75 - /obj/item/clothing/suit/costume/cyborg_suit name = "cyborg suit" desc = "Suit for a cyborg costume." @@ -495,14 +475,6 @@ icon_state = "clockwork_cuirass_old" armor_type = /datum/armor/costume_bronze -/datum/armor/costume_bronze - melee = 5 - laser = -5 - energy = -15 - bomb = 10 - fire = 20 - acid = 20 - /obj/item/clothing/suit/hooded/mysticrobe name = "mystic's robe" desc = "Wearing this makes you feel more attuned with the nature of the universe... as well as a bit more irresponsible. " diff --git a/code/modules/clothing/suits/jacket.dm b/code/modules/clothing/suits/jacket.dm index f527fc61de1..d441db0efad 100644 --- a/code/modules/clothing/suits/jacket.dm +++ b/code/modules/clothing/suits/jacket.dm @@ -91,9 +91,6 @@ inhand_icon_state = null allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/radio) -/datum/armor/puffer_vest - bio = 30 - /obj/item/clothing/suit/jacket/letterman name = "letterman jacket" desc = "A classic brown letterman jacket. Looks pretty hot and heavy." @@ -101,9 +98,6 @@ inhand_icon_state = null species_exception = list(/datum/species/golem) -/datum/armor/puffer_vest - bio = 30 - /obj/item/clothing/suit/jacket/letterman_red name = "red letterman jacket" desc = "A letterman jacket in a sick red color. Radical." @@ -111,9 +105,6 @@ inhand_icon_state = null species_exception = list(/datum/species/golem) -/datum/armor/puffer_vest - bio = 30 - /obj/item/clothing/suit/jacket/letterman_syndie name = "blood-red letterman jacket" desc = "Oddly, this jacket seems to have a large S on the back..." @@ -121,9 +112,6 @@ inhand_icon_state = null species_exception = list(/datum/species/golem) -/datum/armor/puffer_vest - bio = 30 - /obj/item/clothing/suit/jacket/letterman_nanotrasen name = "blue letterman jacket" desc = "A blue letterman jacket with a proud Nanotrasen N on the back. The tag says that it was made in Space China." diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm index a5a3d669045..e04da705b22 100644 --- a/code/modules/clothing/suits/labcoat.dm +++ b/code/modules/clothing/suits/labcoat.dm @@ -80,11 +80,6 @@ desc = "A suit that protects against minor chemical spills. Has an orange stripe on the shoulder." icon_state = "labcoat_chem" -/datum/armor/toggle_labcoat - bio = 50 - fire = 50 - acid = 50 - /obj/item/clothing/suit/toggle/labcoat/chemist/Initialize(mapload) . = ..() allowed += /obj/item/storage/bag/chemistry @@ -94,11 +89,6 @@ desc = "A suit that protects against minor chemical spills. Has a green stripe on the shoulder." icon_state = "labcoat_vir" -/datum/armor/toggle_labcoat - bio = 50 - fire = 50 - acid = 50 - /obj/item/clothing/suit/toggle/labcoat/virologist/Initialize(mapload) . = ..() allowed += /obj/item/storage/bag/bio @@ -108,11 +98,6 @@ desc = "A suit that protects against minor chemical spills. Has a purple stripe on the shoulder." icon_state = "labcoat_sci" -/datum/armor/toggle_labcoat - bio = 50 - fire = 50 - acid = 50 - /obj/item/clothing/suit/toggle/labcoat/science/Initialize(mapload) . = ..() allowed += /obj/item/storage/bag/xeno diff --git a/code/modules/clothing/suits/reactive_armour.dm b/code/modules/clothing/suits/reactive_armour.dm index ee1c379b92d..39190066b52 100644 --- a/code/modules/clothing/suits/reactive_armour.dm +++ b/code/modules/clothing/suits/reactive_armour.dm @@ -122,10 +122,6 @@ reactivearmor_cooldown_duration = 10 SECONDS var/tele_range = 6 -/datum/armor/armor_reactive - fire = 100 - acid = 100 - /obj/item/clothing/suit/armor/reactive/teleport/reactive_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) owner.visible_message(span_danger("The reactive teleport system flings [owner] clear of [attack_text]!")) playsound(get_turf(owner),'sound/magic/blink.ogg', 100, TRUE) @@ -150,10 +146,6 @@ cooldown_message = span_danger("The reactive incendiary armor activates, but fails to send out flames as it is still recharging its flame jets!") emp_message = span_warning("The reactive incendiary armor's targeting system begins rebooting...") -/datum/armor/armor_reactive - fire = 100 - acid = 100 - /obj/item/clothing/suit/armor/reactive/fire/reactive_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) owner.visible_message(span_danger("[src] blocks [attack_text], sending out jets of flame!")) playsound(get_turf(owner),'sound/magic/fireball.ogg', 100, TRUE) @@ -190,10 +182,6 @@ var/animation_time = 2 SECONDS var/in_stealth = FALSE -/datum/armor/armor_reactive - fire = 100 - acid = 100 - /obj/item/clothing/suit/armor/reactive/stealth/cooldown_activation(mob/living/carbon/human/owner) if(in_stealth) return //we don't want the cooldown message either) @@ -243,10 +231,6 @@ /// What flags do we pass to the zaps we give off? var/zap_flags = ZAP_MOB_DAMAGE | ZAP_OBJ_DAMAGE -/datum/armor/armor_reactive - fire = 100 - acid = 100 - /obj/item/clothing/suit/armor/reactive/tesla/cooldown_activation(mob/living/carbon/human/owner) var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread sparks.set_up(1, 1, src) @@ -276,10 +260,6 @@ emp_message = span_warning("The repulse generator is reset to default settings...") var/repulse_force = MOVE_FORCE_EXTREMELY_STRONG -/datum/armor/armor_reactive - fire = 100 - acid = 100 - /obj/item/clothing/suit/armor/reactive/repulse/reactive_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) playsound(get_turf(owner),'sound/magic/repulse.ogg', 100, TRUE) owner.visible_message(span_danger("[src] blocks [attack_text], converting the attack into a wave of force!")) @@ -316,10 +296,6 @@ emp_message = span_danger("The reactive table armor's fabricators click and whirr ominously for a moment...") var/tele_range = 10 -/datum/armor/armor_reactive - fire = 100 - acid = 100 - /obj/item/clothing/suit/armor/reactive/table/reactive_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) owner.visible_message(span_danger("The reactive teleport system flings [owner] clear of [attack_text] and slams [owner.p_them()] into a fabricated table!")) owner.visible_message("[owner] GOES ON THE TABLE!!!") @@ -352,10 +328,6 @@ emp_message = span_warning("You feel the backsurge of a mind pulse.") clothing_traits = list(TRAIT_MADNESS_IMMUNE) -/datum/armor/armor_reactive - fire = 100 - acid = 100 - /obj/item/clothing/suit/armor/reactive/hallucinating/cooldown_activation(mob/living/carbon/human/owner) var/datum/effect_system/spark_spread/sparks = new /datum/effect_system/spark_spread sparks.set_up(1, 1, src) @@ -396,10 +368,6 @@ var/static/list/l_legs var/static/list/r_legs -/datum/armor/armor_reactive - fire = 100 - acid = 100 - /obj/item/clothing/suit/armor/reactive/bioscrambling/Initialize(mapload) . = ..() if(!chests) @@ -469,10 +437,6 @@ cooldown_message = span_danger("The reactive barrier system is still recharging! It fails to activate!") reactivearmor_cooldown_duration = 10 SECONDS -/datum/armor/armor_reactive - fire = 100 - acid = 100 - /obj/item/clothing/suit/armor/reactive/barricade/reactive_activation(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) playsound(get_turf(owner),'sound/magic/repulse.ogg', 100, TRUE) owner.visible_message(span_danger("The reactive armor interposes matter from another world between [src] and [attack_text]!")) diff --git a/code/modules/clothing/suits/wintercoats.dm b/code/modules/clothing/suits/wintercoats.dm index 96e6c0bca92..64ecc0b5c18 100644 --- a/code/modules/clothing/suits/wintercoats.dm +++ b/code/modules/clothing/suits/wintercoats.dm @@ -326,11 +326,6 @@ armor_type = /datum/armor/medical_cmo // Chemist -/datum/armor/medical_cmo - bio = 50 - fire = 20 - acid = 30 - /obj/item/clothing/suit/hooded/wintercoat/medical/chemistry name = "chemistry winter coat" desc = "A lab-grade winter coat made with acid resistant polymers. For the enterprising chemist who was exiled to a frozen wasteland on the go." @@ -435,10 +430,6 @@ armor_type = /datum/armor/science_rd // Roboticist -/datum/armor/science_rd - bomb = 20 - fire = 30 - /obj/item/clothing/suit/hooded/wintercoat/science/robotics name = "robotics winter coat" desc = "A black winter coat with a badass flaming robotic skull for the zipper tab. This one has bright red designs and a few useless buttons." @@ -526,10 +517,6 @@ armor_type = /datum/armor/engineering_ce // Atmospherics Technician -/datum/armor/engineering_ce - fire = 30 - acid = 10 - /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos name = "atmospherics winter coat" desc = "A yellow and blue winter coat. The zipper pull-tab is made to look like a miniature breath mask." diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index 5c8de11bb68..0dfa32e4b05 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -59,7 +59,7 @@ return screentip_change ? CONTEXTUAL_SCREENTIP_SET : NONE -/obj/item/clothing/under/worn_overlays(mutable_appearance/standing, isinhands = FALSE) +/obj/item/clothing/under/worn_overlays(mutable_appearance/standing, isinhands = FALSE, file2use = null, mutant_styles = NONE) . = ..() if(isinhands) return @@ -69,7 +69,7 @@ if(GET_ATOM_BLOOD_DNA_LENGTH(src)) . += mutable_appearance('icons/effects/blood.dmi', "uniformblood") if(accessory_overlay) - . += accessory_overlay + . += modify_accessory_overlay() // SKYRAT EDIT CHANGE - ORIGINAL: . += accessory_overlay /obj/item/clothing/under/attackby(obj/item/I, mob/user, params) if((has_sensor == BROKEN_SENSORS) && istype(I, /obj/item/stack/cable_coil)) @@ -365,10 +365,6 @@ /obj/item/clothing/under/rank dying_key = DYE_REGISTRY_UNDER -/datum/armor/clothing_under - bio = 10 - wound = 5 - /obj/item/clothing/under/proc/dump_attachment() if(!attached_accessory) return diff --git a/code/modules/clothing/under/costume.dm b/code/modules/clothing/under/costume.dm index 9e3a3e06fb5..55778bba1e2 100644 --- a/code/modules/clothing/under/costume.dm +++ b/code/modules/clothing/under/costume.dm @@ -268,12 +268,6 @@ species_exception = list(/datum/species/golem) can_adjust = FALSE -/datum/armor/costume_russian_officer - melee = 10 - bio = 10 - fire = 30 - acid = 30 - /obj/item/clothing/under/costume/buttondown/slacks name = "buttondown shirt with slacks" desc = "A fancy buttondown shirt with slacks." @@ -284,12 +278,6 @@ greyscale_colors = "#EEEEEE#EE8E2E#222227#D8D39C" flags_1 = IS_PLAYER_COLORABLE_1 -/datum/armor/costume_russian_officer - melee = 10 - bio = 10 - fire = 30 - acid = 30 - /obj/item/clothing/under/costume/buttondown/shorts name = "buttondown shirt with shorts" desc = "A fancy buttondown shirt with shorts." @@ -300,12 +288,6 @@ greyscale_colors = "#EEEEEE#EE8E2E#222227#D8D39C" flags_1 = IS_PLAYER_COLORABLE_1 -/datum/armor/costume_russian_officer - melee = 10 - bio = 10 - fire = 30 - acid = 30 - /obj/item/clothing/under/costume/jackbros name = "jack bros outfit" desc = "For when it's time to hee some hos." @@ -313,24 +295,12 @@ inhand_icon_state = null can_adjust = FALSE -/datum/armor/costume_russian_officer - melee = 10 - bio = 10 - fire = 30 - acid = 30 - /obj/item/clothing/under/costume/deckers name = "deckers outfit" icon_state = "decker_jumpsuit" inhand_icon_state = null can_adjust = FALSE -/datum/armor/costume_russian_officer - melee = 10 - bio = 10 - fire = 30 - acid = 30 - /obj/item/clothing/under/costume/football_suit name = "football uniform" icon_state = "football_suit" @@ -341,12 +311,6 @@ greyscale_colors = "#D74722" flags_1 = IS_PLAYER_COLORABLE_1 -/datum/armor/costume_russian_officer - melee = 10 - bio = 10 - fire = 30 - acid = 30 - /obj/item/clothing/under/costume/swagoutfit name = "Swag outfit" desc = "Why don't you go secure some bitches?" @@ -354,12 +318,6 @@ inhand_icon_state = null can_adjust = FALSE -/datum/armor/costume_russian_officer - melee = 10 - bio = 10 - fire = 30 - acid = 30 - /obj/item/clothing/under/costume/referee name = "referee uniform" desc = "A standard black and white striped uniform to signal authority." @@ -367,36 +325,18 @@ inhand_icon_state = null can_adjust = FALSE -/datum/armor/costume_russian_officer - melee = 10 - bio = 10 - fire = 30 - acid = 30 - /obj/item/clothing/under/costume/joker name = "comedian suit" desc = "The worst part of having a mental illness is people expect you to behave as if you don't." icon_state = "joker" can_adjust = FALSE -/datum/armor/costume_russian_officer - melee = 10 - bio = 10 - fire = 30 - acid = 30 - /obj/item/clothing/under/costume/yuri name = "yuri initiate jumpsuit" icon_state = "yuri_uniform" inhand_icon_state = null can_adjust = FALSE -/datum/armor/costume_russian_officer - melee = 10 - bio = 10 - fire = 30 - acid = 30 - /obj/item/clothing/under/costume/dutch name = "dutch's suit" desc = "You can feel a god damn plan coming on." @@ -404,24 +344,12 @@ inhand_icon_state = null can_adjust = FALSE -/datum/armor/costume_russian_officer - melee = 10 - bio = 10 - fire = 30 - acid = 30 - /obj/item/clothing/under/costume/osi name = "O.S.I. jumpsuit" icon_state = "osi_jumpsuit" inhand_icon_state = null can_adjust = FALSE -/datum/armor/costume_russian_officer - melee = 10 - bio = 10 - fire = 30 - acid = 30 - /obj/item/clothing/under/costume/tmc name = "Lost MC clothing" icon_state = "tmc_jumpsuit" diff --git a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm index a96c987957c..52a85cf31cf 100644 --- a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm +++ b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm @@ -124,11 +124,6 @@ sensor_mode = SENSOR_COORDS random_sensor = FALSE -/datum/armor/under_plasmaman - bio = 100 - fire = 95 - acid = 95 - /obj/item/clothing/under/plasmaman/clown/Extinguish(mob/living/carbon/human/H) if(!istype(H)) return diff --git a/code/modules/clothing/under/jobs/Plasmaman/command.dm b/code/modules/clothing/under/jobs/Plasmaman/command.dm index 7f5765b47d0..c3b92bc874b 100644 --- a/code/modules/clothing/under/jobs/Plasmaman/command.dm +++ b/code/modules/clothing/under/jobs/Plasmaman/command.dm @@ -28,13 +28,6 @@ sensor_mode = SENSOR_COORDS random_sensor = FALSE -/datum/armor/security_head_of_security - melee = 10 - bio = 100 - fire = 95 - acid = 95 - wound = 10 - /obj/item/clothing/under/plasmaman/chief_engineer name = "chief engineer's plasma envirosuit" desc = "An air-tight suit designed to be used by plasmamen insane enough to achieve the rank of \"Chief Engineer\"." diff --git a/code/modules/clothing/under/jobs/command.dm b/code/modules/clothing/under/jobs/command.dm index c51b257e5bf..087cf57cdd9 100644 --- a/code/modules/clothing/under/jobs/command.dm +++ b/code/modules/clothing/under/jobs/command.dm @@ -23,10 +23,6 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/rank_captain - bio = 10 - wound = 15 - /obj/item/clothing/under/rank/captain/suit name = "captain's suit" desc = "A green suit and yellow necktie. Exemplifies authority." @@ -34,10 +30,6 @@ inhand_icon_state = "dg_suit" can_adjust = FALSE -/datum/armor/rank_captain - bio = 10 - wound = 15 - /obj/item/clothing/under/rank/captain/suit/skirt name = "green suitskirt" desc = "A green suitskirt and yellow necktie. Exemplifies authority." @@ -48,10 +40,6 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/rank_captain - bio = 10 - wound = 15 - /obj/item/clothing/under/rank/captain/parade name = "captain's formal uniform" desc = "A captain's luxury-wear, for special occasions." diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm index 3760a1003a2..b99e3fc90ec 100644 --- a/code/modules/clothing/under/jobs/engineering.dm +++ b/code/modules/clothing/under/jobs/engineering.dm @@ -33,22 +33,12 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/engineering_chief_engineer - bio = 10 - fire = 80 - acid = 40 - /obj/item/clothing/under/rank/engineering/atmospheric_technician desc = "It's a jumpsuit worn by atmospheric technicians. Made from fire resistant materials." name = "atmospheric technician's jumpsuit" icon_state = "atmos" inhand_icon_state = "atmos_suit" -/datum/armor/engineering_chief_engineer - bio = 10 - fire = 80 - acid = 40 - /obj/item/clothing/under/rank/engineering/atmospheric_technician/skirt name = "atmospheric technician's jumpskirt" desc = "It's a jumpskirt worn by atmospheric technicians. Made from fire resistant materials." @@ -59,11 +49,6 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/engineering_chief_engineer - bio = 10 - fire = 80 - acid = 40 - /obj/item/clothing/under/rank/engineering/engineer desc = "It's an orange high visibility jumpsuit worn by engineers. Made from fire resistant materials." name = "engineer's jumpsuit" @@ -71,11 +56,6 @@ inhand_icon_state = "engi_suit" species_exception = list(/datum/species/golem/uranium) -/datum/armor/engineering_chief_engineer - bio = 10 - fire = 80 - acid = 40 - /obj/item/clothing/under/rank/engineering/engineer/hazard name = "engineer's hazard jumpsuit" desc = "A high visibility jumpsuit. Made from fire resistant materials." @@ -83,11 +63,6 @@ inhand_icon_state = "syndicate-orange" alt_covers_chest = TRUE -/datum/armor/engineering_chief_engineer - bio = 10 - fire = 80 - acid = 40 - /obj/item/clothing/under/rank/engineering/engineer/skirt name = "engineer's jumpskirt" desc = "It's an orange high visibility jumpskirt worn by engineers. Made from fire resistant materials." diff --git a/code/modules/clothing/under/jobs/medical.dm b/code/modules/clothing/under/jobs/medical.dm index 79224669e98..4014814ee23 100644 --- a/code/modules/clothing/under/jobs/medical.dm +++ b/code/modules/clothing/under/jobs/medical.dm @@ -12,9 +12,6 @@ icon_state = "medical" inhand_icon_state = "w_suit" -/datum/armor/rank_medical - bio = 50 - /obj/item/clothing/under/rank/medical/doctor/skirt name = "medical doctor's jumpskirt" desc = "It's made of a special fiber that provides minor protection against biohazards. It has a cross on the chest denoting that the wearer is trained medical personnel." @@ -25,18 +22,12 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/rank_medical - bio = 50 - /obj/item/clothing/under/rank/medical/chief_medical_officer desc = "It's a jumpsuit worn by those with the experience to be \"Chief Medical Officer\". It provides minor biological protection." name = "chief medical officer's jumpsuit" icon_state = "cmo" inhand_icon_state = "w_suit" -/datum/armor/rank_medical - bio = 50 - /obj/item/clothing/under/rank/medical/chief_medical_officer/skirt name = "chief medical officer's jumpskirt" desc = "It's a jumpskirt worn by those with the experience to be \"Chief Medical Officer\". It provides minor biological protection." @@ -47,18 +38,12 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/rank_medical - bio = 50 - /obj/item/clothing/under/rank/medical/chief_medical_officer/scrubs name = "chief medical officer's scrubs" desc = "A distinctive set of white and turquoise scrubs given to chief medical officers who desire a clinical look." icon_state = "scrubscmo" inhand_icon_state = "w_suit" -/datum/armor/rank_medical - bio = 50 - /obj/item/clothing/under/rank/medical/chief_medical_officer/turtleneck name = "chief medical officer's turtleneck" desc = "A light blue turtleneck and tan khakis, for a chief medical officer with a superior sense of style." @@ -68,9 +53,6 @@ alt_covers_chest = TRUE female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY -/datum/armor/rank_medical - bio = 50 - /obj/item/clothing/under/rank/medical/chief_medical_officer/turtleneck/skirt name = "chief medical officer's turtleneck skirt" desc = "A light blue turtleneck and tan khaki skirt, for a chief medical officer with a superior sense of style." @@ -81,18 +63,12 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/rank_medical - bio = 50 - /obj/item/clothing/under/rank/medical/virologist desc = "It's made of a special fiber that gives special protection against biohazards. It has a virologist rank stripe on it." name = "virologist's jumpsuit" icon_state = "virology" inhand_icon_state = "w_suit" -/datum/armor/rank_medical - bio = 50 - /obj/item/clothing/under/rank/medical/virologist/skirt name = "virologist's jumpskirt" desc = "It's made of a special fiber that gives special protection against biohazards. It has a virologist rank stripe on it." @@ -103,36 +79,21 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/rank_medical - bio = 50 - /obj/item/clothing/under/rank/medical/scrubs name = "medical scrubs" -/datum/armor/rank_medical - bio = 50 - /obj/item/clothing/under/rank/medical/scrubs/blue desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in baby blue." icon_state = "scrubsblue" -/datum/armor/rank_medical - bio = 50 - /obj/item/clothing/under/rank/medical/scrubs/green desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in dark green." icon_state = "scrubsgreen" -/datum/armor/rank_medical - bio = 50 - /obj/item/clothing/under/rank/medical/scrubs/purple desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in deep purple." icon_state = "scrubswine" -/datum/armor/rank_medical - bio = 50 - /obj/item/clothing/under/rank/medical/chemist desc = "It's made of a special fiber that gives special protection against biohazards. It has a chemist rank stripe on it." name = "chemist's jumpsuit" @@ -155,22 +116,12 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/medical_chemist - bio = 10 - fire = 50 - acid = 65 - /obj/item/clothing/under/rank/medical/paramedic desc = "It's made of a special fiber that provides minor protection against biohazards. It has a dark blue cross on the chest denoting that the wearer is a trained paramedic." name = "paramedic jumpsuit" icon_state = "paramedic" inhand_icon_state = "w_suit" -/datum/armor/medical_chemist - bio = 10 - fire = 50 - acid = 65 - /obj/item/clothing/under/rank/medical/paramedic/skirt name = "paramedic jumpskirt" desc = "It's made of a special fiber that provides minor protection against biohazards. It has a dark blue cross on the chest denoting that the wearer is a trained paramedic." @@ -181,11 +132,6 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/medical_chemist - bio = 10 - fire = 50 - acid = 65 - /obj/item/clothing/under/rank/medical/doctor/nurse desc = "It's a jumpsuit commonly worn by nursing staff in the medical department." name = "nurse's suit" diff --git a/code/modules/clothing/under/jobs/rnd.dm b/code/modules/clothing/under/jobs/rnd.dm index 72a3ff5a2a0..b761f8ee4c9 100644 --- a/code/modules/clothing/under/jobs/rnd.dm +++ b/code/modules/clothing/under/jobs/rnd.dm @@ -20,11 +20,6 @@ has_sensor = NO_SENSORS random_sensor = FALSE -/datum/armor/rnd_research_director - bomb = 10 - bio = 10 - acid = 35 - /obj/item/clothing/under/rank/rnd/research_director/skirt name = "research director's vest suitskirt" desc = "It's a suitskirt worn by those with the know-how to achieve the position of \"Research Director\". Its fabric provides minor protection from biological contaminants." @@ -35,11 +30,6 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/rnd_research_director - bomb = 10 - bio = 10 - acid = 35 - /obj/item/clothing/under/rank/rnd/research_director/alt desc = "Maybe you'll engineer your own half-man, half-pig creature some day. Its fabric provides minor protection from biological contaminants." name = "research director's tan suit" @@ -48,11 +38,6 @@ can_adjust = TRUE alt_covers_chest = TRUE -/datum/armor/rnd_research_director - bomb = 10 - bio = 10 - acid = 35 - /obj/item/clothing/under/rank/rnd/research_director/alt/skirt name = "research director's tan suitskirt" desc = "Maybe you'll engineer your own half-man, half-pig creature some day. Its fabric provides minor protection from biological contaminants." @@ -63,11 +48,6 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/rnd_research_director - bomb = 10 - bio = 10 - acid = 35 - /obj/item/clothing/under/rank/rnd/research_director/turtleneck desc = "A Nanotrasen-purple turtleneck and black jeans, for a director with a superior sense of style." name = "research director's turtleneck" @@ -76,11 +56,6 @@ can_adjust = TRUE alt_covers_chest = TRUE -/datum/armor/rnd_research_director - bomb = 10 - bio = 10 - acid = 35 - /obj/item/clothing/under/rank/rnd/research_director/turtleneck/skirt name = "research director's turtleneck skirt" desc = "A Nanotrasen-purple turtleneck and a black skirt, for a director with a superior sense of style." @@ -91,11 +66,6 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/rnd_research_director - bomb = 10 - bio = 10 - acid = 35 - /obj/item/clothing/under/rank/rnd/scientist desc = "It's made of a special fiber that provides minor protection against explosives. It has markings that denote the wearer as a scientist." name = "scientist's jumpsuit" @@ -116,9 +86,6 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/rnd_scientist - bio = 50 - /obj/item/clothing/under/rank/rnd/roboticist desc = "It's a slimming black with reinforced seams; great for industrial work." name = "roboticist's jumpsuit" @@ -126,9 +93,6 @@ inhand_icon_state = null resistance_flags = NONE -/datum/armor/rnd_scientist - bio = 50 - /obj/item/clothing/under/rank/rnd/roboticist/skirt name = "roboticist's jumpskirt" desc = "It's a slimming black with reinforced seams; great for industrial work." @@ -139,9 +103,6 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/rnd_scientist - bio = 50 - /obj/item/clothing/under/rank/rnd/geneticist desc = "It's made of a special fiber that gives special protection against biohazards. It has a genetics rank stripe on it." name = "geneticist's jumpsuit" diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm index c5845769932..a204f899910 100644 --- a/code/modules/clothing/under/jobs/security.dm +++ b/code/modules/clothing/under/jobs/security.dm @@ -30,26 +30,12 @@ icon_state = "rsecurity" inhand_icon_state = "r_suit" -/datum/armor/rank_security - melee = 10 - bio = 10 - fire = 30 - acid = 30 - wound = 10 - /obj/item/clothing/under/rank/security/officer/grey name = "grey security jumpsuit" desc = "A tactical relic of years past before Nanotrasen decided it was cheaper to dye the suits red instead of washing out the blood." icon_state = "security" inhand_icon_state = "gy_suit" -/datum/armor/rank_security - melee = 10 - bio = 10 - fire = 30 - acid = 30 - wound = 10 - /obj/item/clothing/under/rank/security/officer/skirt name = "security skirt" desc = "A \"tactical\" security uniform with the legs replaced by a skirt." @@ -60,13 +46,6 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/rank_security - melee = 10 - bio = 10 - fire = 30 - acid = 30 - wound = 10 - /obj/item/clothing/under/rank/security/officer/blueshirt name = "blue shirt and tie" desc = "I'm a little busy right now, Calhoun." @@ -74,13 +53,6 @@ inhand_icon_state = null can_adjust = FALSE -/datum/armor/rank_security - melee = 10 - bio = 10 - fire = 30 - acid = 30 - wound = 10 - /obj/item/clothing/under/rank/security/officer/formal name = "security officer's formal uniform" desc = "The latest in fashionable security outfits." @@ -88,13 +60,6 @@ inhand_icon_state = null alt_covers_chest = TRUE -/datum/armor/rank_security - melee = 10 - bio = 10 - fire = 30 - acid = 30 - wound = 10 - /obj/item/clothing/under/rank/security/constable name = "constable outfit" desc = "A british looking outfit." @@ -104,39 +69,18 @@ custom_price = PAYCHECK_COMMAND -/datum/armor/rank_security - melee = 10 - bio = 10 - fire = 30 - acid = 30 - wound = 10 - /obj/item/clothing/under/rank/security/warden name = "security suit" desc = "A formal security suit for officers complete with Nanotrasen belt buckle." icon_state = "rwarden" inhand_icon_state = "r_suit" -/datum/armor/rank_security - melee = 10 - bio = 10 - fire = 30 - acid = 30 - wound = 10 - /obj/item/clothing/under/rank/security/warden/grey name = "grey security suit" desc = "A formal relic of years past before Nanotrasen decided it was cheaper to dye the suits red instead of washing out the blood." icon_state = "warden" inhand_icon_state = "gy_suit" -/datum/armor/rank_security - melee = 10 - bio = 10 - fire = 30 - acid = 30 - wound = 10 - /obj/item/clothing/under/rank/security/warden/skirt name = "warden's suitskirt" desc = "A formal security suitskirt for officers complete with Nanotrasen belt buckle." @@ -147,13 +91,6 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/rank_security - melee = 10 - bio = 10 - fire = 30 - acid = 30 - wound = 10 - /obj/item/clothing/under/rank/security/warden/formal desc = "The insignia on this uniform tells you that this uniform belongs to the Warden." name = "warden's formal uniform" @@ -164,13 +101,6 @@ /* * Detective */ -/datum/armor/rank_security - melee = 10 - bio = 10 - fire = 30 - acid = 30 - wound = 10 - /obj/item/clothing/under/rank/security/detective name = "hard-worn suit" desc = "Someone who wears this means business." @@ -178,13 +108,6 @@ inhand_icon_state = "det" alt_covers_chest = TRUE -/datum/armor/rank_security - melee = 10 - bio = 10 - fire = 30 - acid = 30 - wound = 10 - /obj/item/clothing/under/rank/security/detective/skirt name = "detective's suitskirt" desc = "Someone who wears this means business." @@ -196,13 +119,6 @@ alt_covers_chest = TRUE supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/rank_security - melee = 10 - bio = 10 - fire = 30 - acid = 30 - wound = 10 - /obj/item/clothing/under/rank/security/detective/noir name = "noir suit" desc = "A hard-boiled private investigator's dark suit, complete with tie clip." @@ -210,13 +126,6 @@ inhand_icon_state = null alt_covers_chest = TRUE -/datum/armor/rank_security - melee = 10 - bio = 10 - fire = 30 - acid = 30 - wound = 10 - /obj/item/clothing/under/rank/security/detective/noir/skirt name = "noir suitskirt" desc = "A hard-boiled private investigator's grey suitskirt, complete with tie clip." @@ -231,13 +140,6 @@ /* * Head of Security */ -/datum/armor/rank_security - melee = 10 - bio = 10 - fire = 30 - acid = 30 - wound = 10 - /obj/item/clothing/under/rank/security/head_of_security name = "head of security's uniform" desc = "A security jumpsuit decorated for those few with the dedication to achieve the position of Head of Security." @@ -263,26 +165,12 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/security_head_of_security - melee = 10 - bio = 10 - fire = 50 - acid = 50 - wound = 10 - /obj/item/clothing/under/rank/security/head_of_security/grey name = "head of security's grey jumpsuit" desc = "There are old men, and there are bold men, but there are very few old, bold men." icon_state = "hos" inhand_icon_state = "gy_suit" -/datum/armor/security_head_of_security - melee = 10 - bio = 10 - fire = 50 - acid = 50 - wound = 10 - /obj/item/clothing/under/rank/security/head_of_security/alt name = "head of security's turtleneck" desc = "A stylish alternative to the normal head of security jumpsuit, complete with tactical pants." @@ -290,13 +178,6 @@ inhand_icon_state = "bl_suit" alt_covers_chest = TRUE -/datum/armor/security_head_of_security - melee = 10 - bio = 10 - fire = 50 - acid = 50 - wound = 10 - /obj/item/clothing/under/rank/security/head_of_security/alt/skirt name = "head of security's turtleneck skirt" desc = "A stylish alternative to the normal head of security jumpsuit, complete with a tactical skirt." @@ -308,13 +189,6 @@ alt_covers_chest = TRUE supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/security_head_of_security - melee = 10 - bio = 10 - fire = 50 - acid = 50 - wound = 10 - /obj/item/clothing/under/rank/security/head_of_security/parade name = "head of security's parade uniform" desc = "A male head of security's luxury-wear, for special occasions." @@ -322,13 +196,6 @@ inhand_icon_state = "r_suit" can_adjust = FALSE -/datum/armor/security_head_of_security - melee = 10 - bio = 10 - fire = 50 - acid = 50 - wound = 10 - /obj/item/clothing/under/rank/security/head_of_security/parade/female name = "head of security's formal uniform" desc = "A female head of security's luxury-wear, for special occasions." @@ -337,13 +204,6 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY can_adjust = FALSE -/datum/armor/security_head_of_security - melee = 10 - bio = 10 - fire = 50 - acid = 50 - wound = 10 - /obj/item/clothing/under/rank/security/head_of_security/formal desc = "The insignia on this uniform tells you that this uniform belongs to the Head of Security." name = "head of security's formal uniform" @@ -355,13 +215,6 @@ *Spacepol */ -/datum/armor/security_head_of_security - melee = 10 - bio = 10 - fire = 50 - acid = 50 - wound = 10 - /obj/item/clothing/under/rank/security/officer/spacepol name = "police uniform" desc = "Space not controlled by megacorporations, planets, or pirates is under the jurisdiction of Spacepol." @@ -369,13 +222,6 @@ inhand_icon_state = null can_adjust = FALSE -/datum/armor/security_head_of_security - melee = 10 - bio = 10 - fire = 50 - acid = 50 - wound = 10 - /obj/item/clothing/under/rank/prisoner name = "prison jumpsuit" desc = "It's standardised Nanotrasen prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position." @@ -393,13 +239,6 @@ sensor_mode = SENSOR_COORDS random_sensor = FALSE -/datum/armor/security_head_of_security - melee = 10 - bio = 10 - fire = 50 - acid = 50 - wound = 10 - /obj/item/clothing/under/rank/prisoner/skirt name = "prison jumpskirt" desc = "It's standardised Nanotrasen prisoner-wear. Its suit sensors are stuck in the \"Fully On\" position." @@ -417,13 +256,6 @@ female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON -/datum/armor/security_head_of_security - melee = 10 - bio = 10 - fire = 50 - acid = 50 - wound = 10 - /obj/item/clothing/under/rank/security/officer/beatcop name = "space police uniform" desc = "A police uniform often found in the lines at donut shops." @@ -431,13 +263,6 @@ inhand_icon_state = null can_adjust = FALSE -/datum/armor/security_head_of_security - melee = 10 - bio = 10 - fire = 50 - acid = 50 - wound = 10 - /obj/item/clothing/under/rank/security/detective/disco name = "superstar cop uniform" desc = "Flare cut trousers and a dirty shirt that might have been classy before someone took a piss in the armpits. It's the dress of a superstar." @@ -445,13 +270,6 @@ inhand_icon_state = null can_adjust = FALSE -/datum/armor/security_head_of_security - melee = 10 - bio = 10 - fire = 50 - acid = 50 - wound = 10 - /obj/item/clothing/under/rank/security/detective/kim name = "aerostatic suit" desc = "A crisp and well-pressed suit; professional, comfortable and curiously authoritative." diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index 6a2b7d4c69c..68749df3ed0 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -75,16 +75,6 @@ can_adjust = FALSE has_sensor = NO_SENSORS -/datum/armor/misc_adminsuit - melee = 100 - bullet = 100 - laser = 100 - energy = 100 - bomb = 100 - bio = 100 - fire = 100 - acid = 100 - /obj/item/clothing/under/misc/overalls name = "laborer's overalls" desc = "A set of durable overalls for getting the job done." @@ -93,16 +83,6 @@ can_adjust = FALSE custom_price = PAYCHECK_CREW -/datum/armor/misc_adminsuit - melee = 100 - bullet = 100 - laser = 100 - energy = 100 - bomb = 100 - bio = 100 - fire = 100 - acid = 100 - /obj/item/clothing/under/misc/assistantformal name = "assistant's formal uniform" desc = "An assistant's formal-wear. Why an assistant needs formal-wear is still unknown." @@ -110,16 +90,6 @@ inhand_icon_state = "gy_suit" can_adjust = FALSE -/datum/armor/misc_adminsuit - melee = 100 - bullet = 100 - laser = 100 - energy = 100 - bomb = 100 - bio = 100 - fire = 100 - acid = 100 - /obj/item/clothing/under/misc/durathread name = "durathread jumpsuit" desc = "A jumpsuit made from durathread, its resilient fibres provide some protection to the wearer." @@ -159,12 +129,6 @@ inhand_icon_state = null can_adjust = FALSE -/datum/armor/misc_bouncer - melee = 5 - bio = 10 - fire = 30 - acid = 30 - /obj/item/clothing/under/misc/syndicate_souvenir name = "syndicate souvenir tee" desc = "I got kidnapped by a Syndicate operative and all I got was this lousy t-shirt!" diff --git a/code/modules/forensics/forensics_helpers.dm b/code/modules/forensics/forensics_helpers.dm index 558153a3fdc..081d6f25d4f 100644 --- a/code/modules/forensics/forensics_helpers.dm +++ b/code/modules/forensics/forensics_helpers.dm @@ -76,6 +76,11 @@ forensics = new(src, blood_DNA = blood_DNA_to_add) return TRUE +/obj/item/add_blood_DNA(list/blood_DNA_to_add) + if(item_flags & NO_BLOOD_ON_ITEM) + return FALSE + return ..() + /obj/item/clothing/gloves/add_blood_DNA(list/blood_dna, list/datum/disease/diseases) transfer_blood = rand(2, 4) return ..() diff --git a/code/modules/holodeck/area_copy.dm b/code/modules/holodeck/area_copy.dm deleted file mode 100644 index 054f5d59abc..00000000000 --- a/code/modules/holodeck/area_copy.dm +++ /dev/null @@ -1,147 +0,0 @@ -//Vars that will not be copied when using /DuplicateObject -GLOBAL_LIST_INIT(duplicate_forbidden_vars,list( - "tag", "datum_components", "area", "type", "loc", "locs", "vars", "parent", "parent_type", "verbs", "ckey", "key", - "power_supply", "contents", "reagents", "stat", "x", "y", "z", "group", "atmos_adjacent_turfs", "comp_lookup", - "important_recursive_contents", "bodyparts", "internal_organs", "hand_bodyparts", "overlays_standing", "hud_list", - "actions", "AIStatus", "appearance", "managed_overlays", "managed_vis_overlays", "computer_id", "lastKnownIP", "implants", - "tgui_shared_states" - )) - -/proc/DuplicateObject(atom/original, perfectcopy = TRUE, sameloc, atom/newloc = null, nerf, holoitem) - RETURN_TYPE(original.type) - if(!original) - return - var/atom/O - - if(sameloc) - O = new original.type(original.loc) - else - O = new original.type(newloc) - - if(perfectcopy && O && original) - for(var/V in original.vars - GLOB.duplicate_forbidden_vars) - if(islist(original.vars[V])) - var/list/L = original.vars[V] - O.vars[V] = L.Copy() - else if(istype(original.vars[V], /datum) || ismob(original.vars[V])) - continue // this would reference the original's object, that will break when it is used or deleted. - else - O.vars[V] = original.vars[V] - - if(isobj(O)) - var/obj/N = O - if(holoitem) - N.resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF // holoitems do not burn - - if(nerf && isitem(O)) - var/obj/item/I = O - I.damtype = STAMINA // thou shalt not - - N.update_appearance() - if(ismachinery(O)) - var/obj/machinery/M = O - M.power_change() - if(istype(O, /obj/machinery/button)) - var/obj/machinery/button/B = O - B.setup_device() - - if(holoitem) - O.flags_1 |= HOLOGRAM_1 - for(var/atom/thing in O) - thing.flags_1 |= HOLOGRAM_1 - if(ismachinery(O)) - var/obj/machinery/M = O - for(var/atom/contained_atom in M.component_parts) - contained_atom.flags_1 |= HOLOGRAM_1 - if(M.circuit) - M.circuit.flags_1 |= HOLOGRAM_1 - - if(ismob(O)) //Overlays are carried over despite disallowing them, if a fix is found remove this. - var/mob/M = O - M.cut_overlays() - M.regenerate_icons() - return O - - -/area/proc/copy_contents_to(area/A , platingRequired = 0, nerf_weapons = 0 ) - //Takes: Area. Optional: If it should copy to areas that don't have plating - //Returns: Nothing. - //Notes: Attempts to move the contents of one area to another area. - // Movement based on lower left corner. Tiles that do not fit - // into the new area will not be moved. - - if(!A || !src) - return 0 - - var/list/turfs_src = get_area_turfs(src.type) - var/list/turfs_trg = get_area_turfs(A.type) - - var/src_min_x = 99999 - var/src_min_y = 99999 - var/list/refined_src = new/list() - - for (var/turf/T in turfs_src) - src_min_x = min(src_min_x,T.x) - src_min_y = min(src_min_y,T.y) - for (var/turf/T in turfs_src) - refined_src[T] = "[T.x - src_min_x].[T.y - src_min_y]" - - var/trg_min_x = 99999 - var/trg_min_y = 99999 - var/list/refined_trg = new/list() - - for (var/turf/T in turfs_trg) - trg_min_x = min(trg_min_x,T.x) - trg_min_y = min(trg_min_y,T.y) - for (var/turf/T in turfs_trg) - refined_trg["[T.x - trg_min_x].[T.y - trg_min_y]"] = T - - var/list/toupdate = new/list() - - var/copiedobjs = list() - - for (var/turf/T in refined_src) - var/coordstring = refined_src[T] - var/turf/B = refined_trg[coordstring] - if(!istype(B)) - continue - - if(platingRequired) - if(isspaceturf(B)) - continue - - var/old_dir1 = T.dir - var/old_icon_state1 = T.icon_state - var/old_icon1 = T.icon - - B = B.ChangeTurf(T.type) - B.setDir(old_dir1) - B.icon = old_icon1 - B.icon_state = old_icon_state1 - - for(var/obj/O in T) - var/obj/O2 = DuplicateObject(O , perfectcopy=TRUE, newloc = B, nerf=nerf_weapons, holoitem=TRUE) - if(!O2) - continue - copiedobjs += O2.get_all_contents() - - for(var/mob/M in T) - if(iscameramob(M)) - continue // If we need to check for more mobs, I'll add a variable - var/mob/SM = DuplicateObject(M , perfectcopy=TRUE, newloc = B, holoitem=TRUE) - copiedobjs += SM.get_all_contents() - - for(var/V in T.vars - GLOB.duplicate_forbidden_vars) - if(V == "air") - var/turf/open/O1 = B - var/turf/open/O2 = T - O1.air.copy_from(O2.return_air()) - continue - B.vars[V] = T.vars[V] - toupdate += B - - if(toupdate.len) - for(var/turf/T1 in toupdate) - CALCULATE_ADJACENT_TURFS(T1, KILL_EXCITED) - - return copiedobjs diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index fee4b6da3ee..b80fa655795 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -344,7 +344,7 @@ /obj/machinery/biogenerator/proc/create_product(datum/design/design, amount) - if(design.make_reagents.len > 0) + if(design.make_reagent) if(!beaker) return FALSE @@ -355,7 +355,7 @@ if(!use_biomass(design.materials, amount)) return FALSE - beaker.reagents.add_reagent(design.make_reagents[1], amount) + beaker.reagents.add_reagent(design.make_reagent, amount) if(design.build_path) if(!use_biomass(design.materials, amount)) @@ -485,7 +485,7 @@ cat["items"] += list(list( "id" = design.id, "name" = design.name, - "is_reagent" = design.make_reagents.len > 0, + "is_reagent" = design.make_reagent != null, "cost" = design.materials[GET_MATERIAL_REF(/datum/material/biomass)] / efficiency, )) data["categories"] += list(cat) @@ -518,7 +518,7 @@ return var/datum/design/design = SSresearch.techweb_design_by_id(id) - amount = clamp(amount, 1, (design.make_reagents.len > 0 && beaker ? beaker.reagents.maximum_volume - beaker.reagents.total_volume : max_output)) + amount = clamp(amount, 1, (design.make_reagent && beaker ? beaker.reagents.maximum_volume - beaker.reagents.total_volume : max_output)) if(design && !istype(design, /datum/design/error_design)) create_product(design, amount) diff --git a/code/modules/industrial_lift/industrial_lift.dm b/code/modules/industrial_lift/industrial_lift.dm index 5410939ba0f..8c4e82fdea8 100644 --- a/code/modules/industrial_lift/industrial_lift.dm +++ b/code/modules/industrial_lift/industrial_lift.dm @@ -732,11 +732,6 @@ GLOBAL_LIST_EMPTY(lifts) lift_id = DEBUG_LIFT_ID radial_travel = TRUE -/datum/armor/structure_industrial_lift - melee = 50 - fire = 80 - acid = 50 - /obj/structure/industrial_lift/debug/open_lift_radial(mob/living/user) var/starting_position = loc if (!can_open_lift_radial(user,starting_position)) diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm index 0887ea0c084..e796c5452d8 100644 --- a/code/modules/jobs/job_types/cargo_technician.dm +++ b/code/modules/jobs/job_types/cargo_technician.dm @@ -32,7 +32,7 @@ /obj/item/gun/ballistic/rifle/boltaction = 1 ) rpg_title = "Merchantman" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN | JOB_CAN_BE_INTERN + job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN /datum/outfit/job/cargo_tech diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm index c1ec62d792f..78befe1b7bd 100644 --- a/code/modules/jobs/job_types/chaplain.dm +++ b/code/modules/jobs/job_types/chaplain.dm @@ -31,7 +31,7 @@ /obj/item/toy/plush/ratplush = 1 ) rpg_title = "Paladin" - job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN | JOB_CAN_BE_INTERN + job_flags = JOB_ANNOUNCE_ARRIVAL | JOB_CREW_MANIFEST | JOB_EQUIP_RANK | JOB_CREW_MEMBER | JOB_NEW_PLAYER_JOINABLE | JOB_REOPEN_ON_ROUNDSTART_LOSS | JOB_ASSIGN_QUIRKS | JOB_CAN_BE_INTERN voice_of_god_power = 2 //Chaplains are very good at speaking with the voice of god diff --git a/code/modules/jobs/job_types/chemist.dm b/code/modules/jobs/job_types/chemist.dm index 07becbc4140..5e5dbb1b38e 100644 --- a/code/modules/jobs/job_types/chemist.dm +++ b/code/modules/jobs/job_types/chemist.dm @@ -2,7 +2,7 @@ title = JOB_CHEMIST description = "Supply the doctors with chemicals, make medicine, as well as \ less likable substances in the comfort of a fully reinforced room." - department_head = list("Chief Medical Officer") + department_head = list(JOB_CHIEF_MEDICAL_OFFICER) faction = FACTION_STATION total_positions = 2 spawn_positions = 2 diff --git a/code/modules/library/bookcase.dm b/code/modules/library/bookcase.dm index 5d5090ea2bd..897d88cc19b 100644 --- a/code/modules/library/bookcase.dm +++ b/code/modules/library/bookcase.dm @@ -187,9 +187,6 @@ /obj/structure/bookcase/manuals/engineering name = "engineering manuals bookcase" -/datum/armor/structure_bookcase - fire = 50 - /obj/structure/bookcase/manuals/engineering/Initialize(mapload) . = ..() new /obj/item/book/manual/wiki/engineering_construction(src) @@ -201,9 +198,6 @@ /obj/structure/bookcase/manuals/research_and_development name = "\improper R&D manuals bookcase" -/datum/armor/structure_bookcase - fire = 50 - /obj/structure/bookcase/manuals/research_and_development/Initialize(mapload) . = ..() new /obj/item/book/manual/wiki/research_and_development(src) diff --git a/code/modules/mapfluff/ruins/lavalandruin_code/puzzle.dm b/code/modules/mapfluff/ruins/lavalandruin_code/puzzle.dm index 8a42121310f..9365b307d88 100644 --- a/code/modules/mapfluff/ruins/lavalandruin_code/puzzle.dm +++ b/code/modules/mapfluff/ruins/lavalandruin_code/puzzle.dm @@ -316,15 +316,6 @@ icon = 'icons/obj/lavaland/artefacts.dmi' icon_state = "prison_cube" -/datum/armor/puzzle_element_prison - melee = 50 - bullet = 50 - laser = 50 - energy = 50 - bomb = 50 - fire = 50 - acid = 50 - /obj/item/prisoncube/afterattack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() if(!proximity_flag || !isliving(target)) diff --git a/code/modules/mapping/space_management/space_reservation.dm b/code/modules/mapping/space_management/space_reservation.dm index 48811b63b6a..b6ec8801a7e 100644 --- a/code/modules/mapping/space_management/space_reservation.dm +++ b/code/modules/mapping/space_management/space_reservation.dm @@ -17,6 +17,10 @@ var/list/reserved_copy = reserved_turfs.Copy() SSmapping.used_turfs -= reserved_turfs reserved_turfs = list() + + for(var/turf/reserved_turf as anything in reserved_copy) + SEND_SIGNAL(reserved_turf, COMSIG_TURF_RESERVATION_RELEASED, src) + // Makes the linter happy, even tho we don't await this INVOKE_ASYNC(SSmapping, TYPE_PROC_REF(/datum/controller/subsystem/mapping, reserve_turfs), reserved_copy) diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm index a04f051c744..22ee4c99ea3 100644 --- a/code/modules/mining/equipment/explorer_gear.dm +++ b/code/modules/mining/equipment/explorer_gear.dm @@ -49,16 +49,6 @@ armor_type = /datum/armor/hooded_explorer resistance_flags = FIRE_PROOF -/datum/armor/hooded_explorer - melee = 30 - bullet = 10 - laser = 10 - energy = 20 - bomb = 50 - fire = 50 - acid = 50 - wound = 10 - /obj/item/clothing/suit/hooded/explorer/Initialize(mapload) . = ..() AddComponent(/datum/component/armor_plate) diff --git a/code/modules/mining/lavaland/megafauna_loot.dm b/code/modules/mining/lavaland/megafauna_loot.dm index 7bed98ad96a..001e9f37e85 100644 --- a/code/modules/mining/lavaland/megafauna_loot.dm +++ b/code/modules/mining/lavaland/megafauna_loot.dm @@ -315,15 +315,6 @@ greyscale_config_worn = /datum/greyscale_config/heck_helmet/worn flags_1 = IS_PLAYER_COLORABLE_1 -/datum/armor/hooded_hostile_environment - melee = 70 - bullet = 40 - laser = 10 - energy = 20 - bomb = 50 - fire = 100 - acid = 100 - /obj/item/clothing/head/hooded/hostile_environment/Initialize(mapload) . = ..() update_appearance() @@ -389,15 +380,6 @@ /// Cooldown between attacks COOLDOWN_DECLARE(attack_cooldown) -/datum/armor/hooded_hostile_environment - melee = 70 - bullet = 40 - laser = 10 - energy = 20 - bomb = 50 - fire = 100 - acid = 100 - /obj/item/soulscythe/Initialize(mapload) . = ..() soul = new(src) @@ -606,15 +588,6 @@ /// Blood level, used for movement and abilities in a soulscythe var/blood_level = MAX_BLOOD_LEVEL -/datum/armor/hooded_hostile_environment - melee = 70 - bullet = 40 - laser = 10 - energy = 20 - bomb = 50 - fire = 100 - acid = 100 - /mob/living/simple_animal/soulscythe/get_status_tab_items() . = ..() . += "Blood: [blood_level]/[MAX_BLOOD_LEVEL]" @@ -633,15 +606,6 @@ light_power = 1 light_color = LIGHT_COLOR_BLOOD_MAGIC -/datum/armor/hooded_hostile_environment - melee = 70 - bullet = 40 - laser = 10 - energy = 20 - bomb = 50 - fire = 100 - acid = 100 - /obj/projectile/soulscythe/on_hit(atom/target, blocked = FALSE) if(ishostile(target)) damage *= 2 @@ -670,15 +634,6 @@ var/summon_cooldown = 0 var/list/mob/dead/observer/spirits -/datum/armor/hooded_hostile_environment - melee = 70 - bullet = 40 - laser = 10 - energy = 20 - bomb = 50 - fire = 100 - acid = 100 - /obj/item/melee/ghost_sword/Initialize(mapload) . = ..() spirits = list() @@ -756,15 +711,6 @@ icon = 'icons/obj/wizard.dmi' icon_state = "vial" -/datum/armor/hooded_hostile_environment - melee = 70 - bullet = 40 - laser = 10 - energy = 20 - bomb = 50 - fire = 100 - acid = 100 - /obj/item/dragons_blood/attack_self(mob/living/carbon/human/user) if(!istype(user)) return @@ -831,15 +777,6 @@ var/timer = 0 var/static/list/banned_turfs = typecacheof(list(/turf/open/space/transit, /turf/closed)) -/datum/armor/hooded_hostile_environment - melee = 70 - bullet = 40 - laser = 10 - energy = 20 - bomb = 50 - fire = 100 - acid = 100 - /obj/item/lava_staff/afterattack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() if(timer > world.time) @@ -921,15 +858,6 @@ /// Throwforce when the saw is opened. var/open_throwforce = 20 -/datum/armor/hooded_hostile_environment - melee = 70 - bullet = 40 - laser = 10 - energy = 20 - bomb = 50 - fire = 100 - acid = 100 - /obj/item/melee/cleaving_saw/Initialize(mapload) . = ..() AddComponent(/datum/component/transforming, \ @@ -1041,15 +969,6 @@ var/static/list/excluded_areas = list(/area/space) var/list/targeted_turfs = list() -/datum/armor/hooded_hostile_environment - melee = 70 - bullet = 40 - laser = 10 - energy = 20 - bomb = 50 - fire = 100 - acid = 100 - /obj/item/storm_staff/examine(mob/user) . = ..() . += span_notice("It has [thunder_charges] charges remaining.") diff --git a/code/modules/mining/lavaland/tendril_loot.dm b/code/modules/mining/lavaland/tendril_loot.dm index 1b017ffc124..c220f593629 100644 --- a/code/modules/mining/lavaland/tendril_loot.dm +++ b/code/modules/mining/lavaland/tendril_loot.dm @@ -718,15 +718,6 @@ /// Status of berserk var/berserk_active = FALSE -/datum/armor/hooded_berserker - melee = 30 - bullet = 30 - laser = 10 - energy = 20 - bomb = 50 - fire = 100 - acid = 100 - /obj/item/clothing/head/hooded/berserker/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_NODROP, LOCKED_HELMET_TRAIT) @@ -810,15 +801,6 @@ custom_materials = null var/datum/action/cooldown/scan/scan_ability -/datum/armor/hooded_berserker - melee = 30 - bullet = 30 - laser = 10 - energy = 20 - bomb = 50 - fire = 100 - acid = 100 - /obj/item/clothing/glasses/godeye/Initialize(mapload) . = ..() scan_ability = new(src) @@ -860,15 +842,6 @@ cooldown_time = 45 SECONDS ranged_mousepointer = 'icons/effects/mouse_pointers/scan_target.dmi' -/datum/armor/hooded_berserker - melee = 30 - bullet = 30 - laser = 10 - energy = 20 - bomb = 50 - fire = 100 - acid = 100 - /datum/action/cooldown/scan/IsAvailable(feedback = FALSE) return ..() && isliving(owner) @@ -911,15 +884,6 @@ range_mid = 5 range_far = 15 -/datum/armor/hooded_berserker - melee = 30 - bullet = 30 - laser = 10 - energy = 20 - bomb = 50 - fire = 100 - acid = 100 - /datum/status_effect/agent_pinpointer/scan/scan_for_target() return @@ -938,15 +902,6 @@ extend_sound = 'sound/items/unsheath.ogg' retract_sound = 'sound/items/sheath.ogg' -/datum/armor/hooded_berserker - melee = 30 - bullet = 30 - laser = 10 - energy = 20 - bomb = 50 - fire = 100 - acid = 100 - /obj/item/organ/internal/cyberimp/arm/katana/attack_self(mob/user, modifiers) . = ..() to_chat(user, span_userdanger("The mass goes up your arm and goes inside it!")) @@ -1016,15 +971,6 @@ ATTACK_SHATTER = list(COMBO_STEPS = list(RIGHT_SLASH, LEFT_SLASH, RIGHT_SLASH, LEFT_SLASH), COMBO_PROC = PROC_REF(shatter)), ) -/datum/armor/hooded_berserker - melee = 30 - bullet = 30 - laser = 10 - energy = 20 - bomb = 50 - fire = 100 - acid = 100 - /obj/item/cursed_katana/Initialize(mapload) . = ..() for(var/combo in combo_list) diff --git a/code/modules/mining/machine_processing.dm b/code/modules/mining/machine_processing.dm index f7163499d0d..4460db4de9a 100644 --- a/code/modules/mining/machine_processing.dm +++ b/code/modules/mining/machine_processing.dm @@ -259,7 +259,7 @@ generate_mineral(alloy.build_path) /obj/machinery/mineral/processing_unit/proc/can_smelt(datum/design/D, delta_time = 2) - if(D.make_reagents.len) + if(D.make_reagent) return FALSE var/build_amount = SMELT_AMOUNT * delta_time diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index 66ab8ec2931..73b12cd957b 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -71,7 +71,7 @@ /obj/machinery/mineral/ore_redemption/proc/can_smelt_alloy(datum/design/D) var/datum/component/material_container/mat_container = materials.mat_container - if(!mat_container || D.make_reagents.len) + if(!mat_container || D.make_reagent) return FALSE var/build_amount = 0 diff --git a/code/modules/mining/mining_ltsrbt.dm b/code/modules/mining/mining_ltsrbt.dm deleted file mode 100644 index 81e6fd80c15..00000000000 --- a/code/modules/mining/mining_ltsrbt.dm +++ /dev/null @@ -1,103 +0,0 @@ -/obj/item/circuitboard/machine/mining_ltsrbt - name = "Mining LTSRBT" - icon_state = "bluespacearray" - build_path = /obj/machinery/mining_ltsrbt - req_components = list( - /obj/item/stack/ore/bluespace_crystal = 2, - /obj/item/stock_parts/subspace/ansible = 1, - /obj/item/stock_parts/micro_laser = 1, - ) - def_components = list( - /obj/item/stack/ore/bluespace_crystal = /obj/item/stack/ore/bluespace_crystal/artificial, - ) - -/** - * Mining LTSRBT - * - * Recieves orders from the mining produce console - * Uses power (scaling with parts) to get that item delivered - * Only works if it's enabled, and can only be enabled on-station. - */ -/obj/machinery/mining_ltsrbt - name = "mining LTSRBT" - desc = "A variant of the Long-To-Short-Range-Bluespace-Transceiver used to deliver Mining equipment to the station as required. Nanotrasen denies the existence of any other forms of the LTSRBT." - icon_state = "exonet_node" - circuit = /obj/item/circuitboard/machine/mining_ltsrbt - density = TRUE - - ///Boolean on whether the machine is active or not - var/enabled = FALSE - ///The amount of power each use of the machine costs. - var/power_usage_per_teleport = 10000 - -/obj/machinery/mining_ltsrbt/Initialize(mapload) - . = ..() - GLOB.mining_ltsrbt += src - register_context() - -/obj/machinery/mining_ltsrbt/Destroy() - GLOB.mining_ltsrbt -= src - return ..() - -/obj/machinery/mining_ltsrbt/add_context(atom/source, list/context, obj/item/held_item, mob/user) - . = ..() - if(!held_item) - context[SCREENTIP_CONTEXT_LMB] = "turn [enabled ? "off" : "on"]" - return CONTEXTUAL_SCREENTIP_SET - - if(held_item.tool_behaviour == TOOL_SCREWDRIVER) - context[SCREENTIP_CONTEXT_LMB] = "[panel_open ? "Close" : "Open"] panel" - return CONTEXTUAL_SCREENTIP_SET - if(held_item.tool_behaviour == TOOL_CROWBAR && panel_open) - context[SCREENTIP_CONTEXT_LMB] = "Deconstruct" - return CONTEXTUAL_SCREENTIP_SET - return . - -/obj/machinery/mining_ltsrbt/attack_hand(mob/living/user, list/modifiers) - . = ..() - if(!is_station_level(z)) - balloon_alert(user, "not on station!") - user.playsound_local(loc, 'sound/machines/buzz-two.ogg', 30, TRUE) - return - enabled = !enabled - balloon_alert(user, "turned [enabled ? "on" : "off"]") - update_appearance(UPDATE_ICON) - -/obj/machinery/mining_ltsrbt/update_icon_state() - . = ..() - icon_state = enabled ? initial(icon_state) : "[icon_state]_idle" - -/obj/machinery/mining_ltsrbt/RefreshParts() - . = ..() - for(var/obj/item/stock_parts/micro_laser/laser in component_parts) - power_usage_per_teleport = (initial(power_usage_per_teleport) % laser.rating) - -/obj/machinery/mining_ltsrbt/screwdriver_act(mob/living/user, obj/item/tool) - . = ..() - if(enabled) - enabled = FALSE - update_appearance(UPDATE_ICON) - default_deconstruction_screwdriver(user, icon_state, icon_state, tool) - return TRUE - -/obj/machinery/mining_ltsrbt/crowbar_act(mob/living/user, obj/item/tool) - . = ..() - default_deconstruction_crowbar(tool) - return TRUE - -/** - * # Recieve order - * - * Recieves the order and, if successfully goes through, returns TRUE - * Otherwise will return FALSE to cancel the order. - */ -/obj/machinery/mining_ltsrbt/proc/recieve_order(datum/supply_order/order) - if(!enabled) - return FALSE - order.generate(get_turf(src)) - use_power(power_usage_per_teleport) - var/datum/effect_system/spark_spread/sparks = new - sparks.set_up(5, 1, get_turf(src)) - sparks.attach(src) - sparks.start() - return TRUE diff --git a/code/modules/mob/living/basic/retaliate/ghost.dm b/code/modules/mob/living/basic/retaliate/ghost.dm index f687fc373e0..ca6aef5e381 100644 --- a/code/modules/mob/living/basic/retaliate/ghost.dm +++ b/code/modules/mob/living/basic/retaliate/ghost.dm @@ -68,14 +68,14 @@ ghost_facial_hairstyle = random_facial_hairstyle() ghost_facial_hair_color = ghost_hair_color - if(!isnull(ghost_hairstyle)) + if(!isnull(ghost_hairstyle) && ghost_hairstyle != "Bald") //Bald hairstyle and the Shaved facial hairstyle lack an associated sprite and will not properly generate hair, and just cause runtimes. var/datum/sprite_accessory/hair_style = GLOB.hairstyles_list[ghost_hairstyle] //We use the hairstyle name to get the sprite accessory, which we copy the icon_state from. ghost_hair = mutable_appearance('icons/mob/species/human/human_face.dmi', "[hair_style.icon_state]", -HAIR_LAYER) ghost_hair.alpha = 200 ghost_hair.color = ghost_hair_color add_overlay(ghost_hair) - if(!isnull(ghost_facial_hairstyle)) + if(!isnull(ghost_facial_hairstyle) && ghost_facial_hairstyle != "Shaved") var/datum/sprite_accessory/facial_hair_style = GLOB.facial_hairstyles_list[ghost_facial_hairstyle] ghost_facial_hair = mutable_appearance('icons/mob/species/human/human_face.dmi', "[facial_hair_style.icon_state]", -HAIR_LAYER) ghost_facial_hair.alpha = 200 diff --git a/code/modules/mob/living/basic/space_fauna/carp/carp.dm b/code/modules/mob/living/basic/space_fauna/carp/carp.dm index 5869cf37be4..24d75d0e23f 100644 --- a/code/modules/mob/living/basic/space_fauna/carp/carp.dm +++ b/code/modules/mob/living/basic/space_fauna/carp/carp.dm @@ -88,6 +88,7 @@ apply_colour() ADD_TRAIT(src, TRAIT_HEALS_FROM_CARP_RIFTS, INNATE_TRAIT) ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) + ADD_TRAIT(src, TRAIT_FREE_HYPERSPACE_MOVEMENT, INNATE_TRAIT) if (cell_line) AddElement(/datum/element/swabable, cell_line, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 5) diff --git a/code/modules/mob/living/carbon/carbon_update_icons.dm b/code/modules/mob/living/carbon/carbon_update_icons.dm index fe60ea64dbd..d6a9edb6710 100644 --- a/code/modules/mob/living/carbon/carbon_update_icons.dm +++ b/code/modules/mob/living/carbon/carbon_update_icons.dm @@ -462,9 +462,10 @@ //Overlays for the worn overlay so you can overlay while you overlay //eg: ammo counters, primed grenade flashing, etc. //"icon_file" is used automatically for inhands etc. to make sure it gets the right inhand file -//SKYRAT EDIT CHANGE - CUSTOMIZATION -///obj/item/proc/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file) (original) +// SKYRAT EDIT CHANGE BEGIN - CUSTOMIZATION +// obj/item/proc/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file) - original /obj/item/proc/worn_overlays(mutable_appearance/standing, isinhands = FALSE, icon_file, mutant_styles = NONE) +// SKYRAT EDIT CHANGE END SHOULD_CALL_PARENT(TRUE) RETURN_TYPE(/list) diff --git a/code/modules/mob/living/carbon/human/human_update_icons.dm b/code/modules/mob/living/carbon/human/human_update_icons.dm index 12de610c6e3..d48c21e8375 100644 --- a/code/modules/mob/living/carbon/human/human_update_icons.dm +++ b/code/modules/mob/living/carbon/human/human_update_icons.dm @@ -102,6 +102,7 @@ There are several things that need to be remembered: var/handled_by_bodytype = TRUE var/icon_file var/woman + var/mutant_styles = NONE // SKYRAT EDIT ADDITON - mutant styles to pass down to build_worn_icon. //BEGIN SPECIES HANDLING if((dna?.species.bodytype & BODYTYPE_MONKEY) && (uniform.supports_variations_flags & CLOTHING_MONKEY_VARIATION)) icon_file = MONKEY_UNIFORM_FILE @@ -121,6 +122,12 @@ There are several things that need to be remembered: icon_file = DEFAULT_UNIFORM_FILE handled_by_bodytype = FALSE + // SKYRAT EDIT ADDITION START - Taur-friendly suits! + if(dna.species.bodytype & BODYTYPE_TAUR) + if(istype(uniform) && uniform.gets_cropped_on_taurs) + mutant_styles |= get_taur_mode() + // SKYRAT EDIT END + //END SPECIES HANDLING uniform_overlay = uniform.build_worn_icon( default_layer = UNIFORM_LAYER, @@ -129,7 +136,7 @@ There are several things that need to be remembered: female_uniform = woman ? uniform.female_sprite_flags : null, override_state = target_overlay, override_file = handled_by_bodytype ? icon_file : null, - taur_bodytype = uniform.gets_cropped_on_taurs && (dna.species.bodytype & BODYTYPE_TAUR), // SKYRAT EDIT ADDITION - Taur-friendly uniforms! + mutant_styles = mutant_styles, // SKYRAT EDIT ADDITION - Taur-friendly uniforms! ) if(!handled_by_bodytype && (OFFSET_UNIFORM in dna.species.offset_features)) // SKYRAT EDIT CHANGE @@ -491,6 +498,7 @@ There are several things that need to be remembered: var/icon_file var/mutant_override = FALSE // SKYRAT EDIT ADDITION + var/mutant_styles = NONE // SKYRAT EDIT ADDITON - mutant styles to pass down to build_worn_icon. //More currently unused digitigrade handling if(dna.species.bodytype & BODYTYPE_DIGITIGRADE) if(worn_item.supports_variations_flags & CLOTHING_DIGITIGRADE_VARIATION) @@ -508,11 +516,13 @@ There are several things that need to be remembered: icon_file = DEFAULT_SUIT_FILE // SKYRAT EDIT ADDITION START - Taur-friendly suits! - var/obj/item/clothing/suit/worn_suit = wear_suit - if(!istype(wear_suit)) - worn_suit = null + if(dna.species.bodytype & BODYTYPE_TAUR) + var/obj/item/clothing/suit/worn_suit = wear_suit + if(istype(worn_suit) && worn_suit.gets_cropped_on_taurs) + mutant_styles |= get_taur_mode() // SKYRAT EDIT END - var/mutable_appearance/suit_overlay = wear_suit.build_worn_icon(default_layer = SUIT_LAYER, default_icon_file = icon_file, override_file = mutant_override ? icon_file : null, taur_bodytype = worn_suit?.gets_cropped_on_taurs && (dna.species.bodytype & BODYTYPE_TAUR)) // SKYRAT EDIT CHANGE - Mutant bodytypes and Taur-friendly suits! + + var/mutable_appearance/suit_overlay = wear_suit.build_worn_icon(default_layer = SUIT_LAYER, default_icon_file = icon_file, override_file = mutant_override ? icon_file : null, mutant_styles = mutant_styles) // SKYRAT EDIT CHANGE - Mutant bodytypes and Taur-friendly suits! if(!mutant_override && (OFFSET_UNIFORM in dna.species.offset_features)) // SKYRAT EDIT CHANGE suit_overlay.pixel_x += dna.species.offset_features[OFFSET_SUIT][1] @@ -792,10 +802,10 @@ in this situation default_icon_file is expected to match either the lefthand_ or female_uniform: A value matching a uniform item's female_sprite_flags var, if this is anything but NO_FEMALE_UNIFORM, we generate/load female uniform sprites matching all previously decided variables -taur_bodytype: The taur bodytype associated to the item we're trying to wear. Can be NONE even on a taur, if the item isn't meant to be cropped. // SKYRAT EDIT ADDITION - Taur-friendly suits and uniforms +mutant_styles: The mutant style - taur bodytype, STYLE_TESHARI, etc. // SKYRAT EDIT ADDITION - Taur-friendly suits and uniforms */ -/obj/item/proc/build_worn_icon(default_layer = 0, default_icon_file = null, isinhands = FALSE, female_uniform = NO_FEMALE_UNIFORM, override_state = null, override_file = null, taur_bodytype = NONE) // SKYRAT EDIT - Taur-friendly outfits (added `taur_bodytype` argument) +/obj/item/proc/build_worn_icon(default_layer = 0, default_icon_file = null, isinhands = FALSE, female_uniform = NO_FEMALE_UNIFORM, override_state = null, override_file = null, mutant_styles = NONE) // SKYRAT EDIT - Further outfit modification for outfits (added `mutant_styles` argument) //Find a valid icon_state from variables+arguments var/t_state @@ -819,13 +829,13 @@ taur_bodytype: The taur bodytype associated to the item we're trying to wear. Ca if(!standing) standing = mutable_appearance(file2use, t_state, -layer2use) // SKYRAT EDIT ADDITION START - Taur-friendly uniforms and suits - if(taur_bodytype) + if(mutant_styles & STYLE_TAUR_ALL) standing = wear_taur_version(standing.icon_state, standing.icon, layer2use, female_uniform, greyscale_colors) // SKYRAT EDIT END //Get the overlays for this item when it's being worn //eg: ammo counters, primed grenade flashes, etc. - var/list/worn_overlays = worn_overlays(standing, isinhands, file2use) + var/list/worn_overlays = worn_overlays(standing, isinhands, file2use, mutant_styles) // SKYRAT EDIT CHANGE - ORIGINAL: var/list/worn_overlays = worn_overlays(standing, isinhands) if(worn_overlays?.len) standing.overlays.Add(worn_overlays) diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm index 1dbcc6af203..b9564c4b7cf 100644 --- a/code/modules/mob/living/carbon/human/species_types/golems.dm +++ b/code/modules/mob/living/carbon/human/species_types/golems.dm @@ -969,15 +969,6 @@ var/last_gong_time = 0 var/gong_cooldown = 150 -/datum/armor/structure_cloth_pile - melee = 90 - bullet = 90 - laser = 25 - energy = 80 - bomb = 50 - fire = -50 - acid = -50 - /datum/species/golem/bronze/bullet_act(obj/projectile/P, mob/living/carbon/human/H) if(!(world.time > last_gong_time + gong_cooldown)) return ..() @@ -1152,15 +1143,6 @@ BODY_ZONE_CHEST = /obj/item/bodypart/chest/golem/durathread, ) -/datum/armor/structure_cloth_pile - melee = 90 - bullet = 90 - laser = 25 - energy = 80 - bomb = 50 - fire = -50 - acid = -50 - /datum/species/golem/durathread/spec_unarmedattacked(mob/living/carbon/human/user, mob/living/carbon/human/target) . = ..() target.apply_status_effect(/datum/status_effect/strandling) @@ -1211,15 +1193,6 @@ ) var/datum/action/innate/bonechill/bonechill -/datum/armor/structure_cloth_pile - melee = 90 - bullet = 90 - laser = 25 - energy = 80 - bomb = 50 - fire = -50 - acid = -50 - /datum/species/golem/bone/on_species_gain(mob/living/carbon/C, datum/species/old_species) ..() if(ishuman(C)) @@ -1269,15 +1242,6 @@ var/last_use var/snas_chance = 3 -/datum/armor/structure_cloth_pile - melee = 90 - bullet = 90 - laser = 25 - energy = 80 - bomb = 50 - fire = -50 - acid = -50 - /datum/action/innate/bonechill/Activate() if(world.time < last_use + cooldown) to_chat(owner, span_warning("You aren't ready yet to rattle your bones again!")) @@ -1340,15 +1304,6 @@ /// A ref to our cryobeam spell we get on species gain. var/datum/action/cooldown/spell/pointed/projectile/cryo/cryo -/datum/armor/structure_cloth_pile - melee = 90 - bullet = 90 - laser = 25 - energy = 80 - bomb = 50 - fire = -50 - acid = -50 - /datum/species/golem/snow/spec_death(gibbed, mob/living/carbon/human/H) H.visible_message(span_danger("[H] turns into a pile of snow!")) for(var/obj/item/W in H) @@ -1398,15 +1353,6 @@ ) examine_limb_id = SPECIES_GOLEM -/datum/armor/structure_cloth_pile - melee = 90 - bullet = 90 - laser = 25 - energy = 80 - bomb = 50 - fire = -50 - acid = -50 - /datum/species/golem/mhydrogen/on_species_gain(mob/living/carbon/C, datum/species/old_species) . = ..() ADD_TRAIT(C, TRAIT_ANTIMAGIC, SPECIES_TRAIT) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index cb3c03bf649..9939c85ac39 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -358,6 +358,7 @@ if(!eye_lights) eye_lights = new() if(lamp_enabled || lamp_doom) + eye_lights.icon_state = "[model.special_light_key ? "[model.special_light_key]" : "[model.cyborg_base_icon]"]_l" set_light_range(max(MINIMUM_USEFUL_LIGHT_RANGE, lamp_intensity)) set_light_color(lamp_doom ? COLOR_RED : lamp_color) //Red for doomsday killborgs, borg's choice otherwise SET_PLANE_EXPLICIT(eye_lights, ABOVE_LIGHTING_PLANE, src) //glowy eyes 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 8fd467220b0..4d4335c51d9 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 @@ -363,16 +363,6 @@ While using this makes the system rely on OnFire, it still gives options for tim throw_speed = 3 throw_range = 5 -/datum/armor/structure_elite_tumor - melee = 100 - bullet = 100 - laser = 100 - energy = 100 - bomb = 100 - bio = 100 - fire = 100 - acid = 100 - /obj/item/tumor_shard/afterattack(atom/target, mob/user, proximity_flag) . = ..() if(istype(target, /mob/living/simple_animal/hostile/asteroid/elite) && proximity_flag) @@ -411,16 +401,6 @@ While using this makes the system rely on OnFire, it still gives options for tim var/datum/weakref/activator_ref var/datum/weakref/ourelite_ref -/datum/armor/structure_elite_tumor - melee = 100 - bullet = 100 - laser = 100 - energy = 100 - bomb = 100 - bio = 100 - fire = 100 - acid = 100 - /obj/effect/temp_visual/elite_tumor_wall/Initialize(mapload, new_caster) . = ..() if(smoothing_flags & (SMOOTH_CORNERS|SMOOTH_BITMASK)) diff --git a/code/modules/mob/living/simple_animal/hostile/space_dragon.dm b/code/modules/mob/living/simple_animal/hostile/space_dragon.dm index 8971a45a01e..bfce764fa7b 100644 --- a/code/modules/mob/living/simple_animal/hostile/space_dragon.dm +++ b/code/modules/mob/living/simple_animal/hostile/space_dragon.dm @@ -86,6 +86,7 @@ . = ..() AddElement(/datum/element/simple_flying) ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) + ADD_TRAIT(src, TRAIT_FREE_HYPERSPACE_MOVEMENT, INNATE_TRAIT) ADD_TRAIT(src, TRAIT_NO_FLOATING_ANIM, INNATE_TRAIT) ADD_TRAIT(src, TRAIT_HEALS_FROM_CARP_RIFTS, INNATE_TRAIT) AddElement(/datum/element/content_barfer) diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 41829f16335..4ac695e9a61 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -253,6 +253,7 @@ sharpness = SHARP_POINTY armour_penetration = 20 bare_wound_bonus = 10 + item_flags = NO_BLOOD_ON_ITEM light_system = MOVABLE_LIGHT light_range = 1.5 light_power = 0.75 diff --git a/code/modules/power/floodlight.dm b/code/modules/power/floodlight.dm index 70fe6f86fa0..8b0769ec8e6 100644 --- a/code/modules/power/floodlight.dm +++ b/code/modules/power/floodlight.dm @@ -45,7 +45,7 @@ return if(istype(O, /obj/item/lightreplacer)) var/obj/item/lightreplacer/L = O - if(state == FLOODLIGHT_NEEDS_LIGHTS && L.CanUse(user)) + if(state == FLOODLIGHT_NEEDS_LIGHTS && L.can_use(user)) L.Use(user) to_chat(user, span_notice("You put lights in [src].")) new /obj/machinery/power/floodlight(loc) diff --git a/code/modules/power/lighting/light.dm b/code/modules/power/lighting/light.dm index 3ad66fc93bb..6d7d651fe25 100644 --- a/code/modules/power/lighting/light.dm +++ b/code/modules/power/lighting/light.dm @@ -337,7 +337,7 @@ //Light replacer code if(istype(tool, /obj/item/lightreplacer)) var/obj/item/lightreplacer/replacer = tool - replacer.ReplaceLight(src, user) + replacer.replace_light(src, user) return // attempt to insert light diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm index 3c03e1ff707..775efbaf35f 100644 --- a/code/modules/reagents/reagent_containers/cups/_cup.dm +++ b/code/modules/reagents/reagent_containers/cups/_cup.dm @@ -467,10 +467,6 @@ spillable = TRUE var/obj/item/grinded -/datum/armor/bucket_wooden - melee = 10 - acid = 50 - /obj/item/reagent_containers/cup/mortar/AltClick(mob/user) if(grinded) grinded.forceMove(drop_location()) diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index 451b0ab611f..4d2710783c3 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -298,14 +298,6 @@ icon_state = "disposal" // attack by item places it in to disposal -/datum/armor/machinery_disposal - melee = 25 - bullet = 10 - laser = 10 - energy = 100 - fire = 90 - acid = 30 - /obj/machinery/disposal/bin/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/storage/bag/trash)) //Not doing component overrides because this is a specific type. var/obj/item/storage/bag/trash/T = I @@ -486,14 +478,6 @@ icon_state = "intake" pressure_charging = FALSE // the chute doesn't need charging and always works -/datum/armor/machinery_disposal - melee = 25 - bullet = 10 - laser = 10 - energy = 100 - fire = 90 - acid = 30 - /obj/machinery/disposal/delivery_chute/place_item_in_disposal(obj/item/I, mob/user) if(I.CanEnterDisposals()) ..() diff --git a/code/modules/recycling/disposal/pipe.dm b/code/modules/recycling/disposal/pipe.dm index 836d5807981..e35be284bad 100644 --- a/code/modules/recycling/disposal/pipe.dm +++ b/code/modules/recycling/disposal/pipe.dm @@ -203,14 +203,6 @@ // next direction to move // if coming in from secondary dirs, then next is primary dir // if coming in from primary dir, then next is equal chance of other dirs -/datum/armor/structure_disposalpipe - melee = 25 - bullet = 10 - laser = 10 - energy = 100 - fire = 90 - acid = 30 - /obj/structure/disposalpipe/junction/nextdir(obj/structure/disposalholder/H) var/flipdir = turn(H.dir, 180) if(flipdir != dir) // came from secondary dir, so exit through primary @@ -247,14 +239,6 @@ icon_state = "pipe-t" var/obj/linked // the linked obj/machinery/disposal or obj/disposaloutlet -/datum/armor/structure_disposalpipe - melee = 25 - bullet = 10 - laser = 10 - energy = 100 - fire = 90 - acid = 30 - /obj/structure/disposalpipe/trunk/Initialize(mapload) . = ..() getlinked() @@ -327,13 +311,5 @@ // broken pipes always have dpdir=0 so they're not found as 'real' pipes // i.e. will be treated as an empty turf -/datum/armor/structure_disposalpipe - melee = 25 - bullet = 10 - laser = 10 - energy = 100 - fire = 90 - acid = 30 - /obj/structure/disposalpipe/broken/deconstruct() qdel(src) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 1106d4247ff..5bdb0e93dd9 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -35,8 +35,8 @@ other types of metals and chemistry for reagents). var/construction_time /// The typepath of the object produced by this design var/build_path = null - /// List of reagents produced by this design. Currently only supported by the biogenerator. - var/list/make_reagents = list() + /// Reagent produced by this design. Currently only supported by the biogenerator. + var/make_reagent /// What categories this design falls under. Used for sorting in production machines. var/list/category = list() /// List of reagents required to create one unit of the product. diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm index 6984ad751a2..045f5ee7c4b 100644 --- a/code/modules/research/designs/biogenerator_designs.dm +++ b/code/modules/research/designs/biogenerator_designs.dm @@ -7,7 +7,7 @@ id = "milk" build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.4) - make_reagents = list(/datum/reagent/consumable/milk = 1) + make_reagent = /datum/reagent/consumable/milk category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD) /datum/design/soymilk @@ -15,7 +15,7 @@ id = "soymilk" build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.4) - make_reagents = list(/datum/reagent/consumable/soymilk = 1) + make_reagent = /datum/reagent/consumable/soymilk category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD) /datum/design/ethanol @@ -23,7 +23,7 @@ id = "ethanol" build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.6) - make_reagents = list(/datum/reagent/consumable/ethanol = 1) + make_reagent = /datum/reagent/consumable/ethanol category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD) /datum/design/cream @@ -31,7 +31,7 @@ id = "cream" build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.6) - make_reagents = list(/datum/reagent/consumable/cream = 1) + make_reagent = /datum/reagent/consumable/cream category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD) /datum/design/black_pepper @@ -39,7 +39,7 @@ id = "black_pepper" build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.6) - make_reagents = list(/datum/reagent/consumable/blackpepper = 1) + make_reagent = /datum/reagent/consumable/blackpepper category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD) /datum/design/enzyme @@ -47,7 +47,7 @@ id = "enzyme" build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.6) - make_reagents = list(/datum/reagent/consumable/enzyme = 1) + make_reagent = /datum/reagent/consumable/enzyme category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD) /datum/design/flour @@ -55,7 +55,7 @@ id = "flour_sack" build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.6) - make_reagents = list(/datum/reagent/consumable/flour = 1) + make_reagent = /datum/reagent/consumable/flour category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD) /datum/design/sugar @@ -63,7 +63,7 @@ id = "sugar" build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.6) - make_reagents = list(/datum/reagent/consumable/sugar = 1) + make_reagent = /datum/reagent/consumable/sugar category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD) /datum/design/monkey_cube @@ -87,7 +87,7 @@ id = "ez_nut" build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.1) - make_reagents = list(/datum/reagent/plantnutriment/eznutriment = 1) + make_reagent = /datum/reagent/plantnutriment/eznutriment category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS) /datum/design/l4z_nut @@ -95,7 +95,7 @@ id = "l4z_nut" build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.1) - make_reagents = list(/datum/reagent/plantnutriment/left4zednutriment = 1) + make_reagent = /datum/reagent/plantnutriment/left4zednutriment category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS) /datum/design/rh_nut @@ -103,7 +103,7 @@ id = "rh_nut" build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.2) - make_reagents = list(/datum/reagent/plantnutriment/robustharvestnutriment = 1) + make_reagent = /datum/reagent/plantnutriment/robustharvestnutriment category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS) /datum/design/end_gro @@ -111,7 +111,7 @@ id = "end_gro" build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.3) - make_reagents = list(/datum/reagent/plantnutriment/endurogrow = 1) + make_reagent = /datum/reagent/plantnutriment/endurogrow category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS) /datum/design/liq_earth @@ -119,7 +119,7 @@ id = "liq_earth" build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.3) - make_reagents = list(/datum/reagent/plantnutriment/liquidearthquake = 1) + make_reagent = /datum/reagent/plantnutriment/liquidearthquake category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS) /datum/design/weed_killer @@ -127,7 +127,7 @@ id = "weed_killer" build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.2) - make_reagents = list(/datum/reagent/toxin/plantbgone/weedkiller = 1) + make_reagent = /datum/reagent/toxin/plantbgone/weedkiller category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS) /datum/design/pest_spray @@ -135,7 +135,7 @@ id = "pest_spray" build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.4) - make_reagents = list(/datum/reagent/toxin/pestkiller = 1) + make_reagent = /datum/reagent/toxin/pestkiller category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS) /datum/design/org_pest_spray @@ -143,7 +143,7 @@ id = "org_pest_spray" build_type = BIOGENERATOR materials = list(/datum/material/biomass = 0.6) - make_reagents = list(/datum/reagent/toxin/pestkiller/organic = 1) + make_reagent = /datum/reagent/toxin/pestkiller/organic category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS) /datum/design/leather diff --git a/code/modules/research/xenobiology/crossbreeding/_clothing.dm b/code/modules/research/xenobiology/crossbreeding/_clothing.dm index 0faee3b578a..c1c522b5849 100644 --- a/code/modules/research/xenobiology/crossbreeding/_clothing.dm +++ b/code/modules/research/xenobiology/crossbreeding/_clothing.dm @@ -39,9 +39,6 @@ Slimecrossing Armor actions_types = list(/datum/action/item_action/change_prism_colour, /datum/action/item_action/place_light_prism) var/glasses_color = "#FFFFFF" -/datum/armor/mask_nobreath - bio = 50 - /obj/item/clothing/glasses/prism_glasses/item_action_slot_check(slot) if(slot & ITEM_SLOT_EYES) return TRUE @@ -55,9 +52,6 @@ Slimecrossing Armor anchored = TRUE max_integrity = 10 -/datum/armor/mask_nobreath - bio = 50 - /obj/structure/light_prism/Initialize(mapload, newcolor) . = ..() color = newcolor @@ -73,9 +67,6 @@ Slimecrossing Armor button_icon = 'icons/obj/xenobiology/slimecrossing.dmi' button_icon_state = "prismcolor" -/datum/armor/mask_nobreath - bio = 50 - /datum/action/item_action/change_prism_colour/Trigger(trigger_flags) if(!IsAvailable(feedback = TRUE)) return @@ -90,9 +81,6 @@ Slimecrossing Armor button_icon = 'icons/obj/xenobiology/slimecrossing.dmi' button_icon_state = "lightprism" -/datum/armor/mask_nobreath - bio = 50 - /datum/action/item_action/place_light_prism/Trigger(trigger_flags) if(!IsAvailable(feedback = TRUE)) return @@ -123,9 +111,6 @@ Slimecrossing Armor throw_speed = 1 throw_range = 3 -/datum/armor/mask_nobreath - bio = 50 - /obj/item/clothing/head/peaceflower/proc/at_peace_check(mob/user) if(iscarbon(user)) var/mob/living/carbon/carbon_user = user @@ -156,9 +141,6 @@ Slimecrossing Armor slowdown = 4 var/hit_reflect_chance = 40 -/datum/armor/mask_nobreath - bio = 50 - /obj/item/clothing/suit/armor/heavy/adamantine/IsReflect(def_zone) if(def_zone in list(BODY_ZONE_CHEST, BODY_ZONE_R_ARM, BODY_ZONE_L_ARM, BODY_ZONE_R_LEG, BODY_ZONE_L_LEG) && prob(hit_reflect_chance)) return TRUE diff --git a/code/modules/research/xenobiology/crossbreeding/_misc.dm b/code/modules/research/xenobiology/crossbreeding/_misc.dm index 4702b6646f1..bd6b8ffcd56 100644 --- a/code/modules/research/xenobiology/crossbreeding/_misc.dm +++ b/code/modules/research/xenobiology/crossbreeding/_misc.dm @@ -176,14 +176,6 @@ Slimecrossing Items icon = 'icons/obj/xenobiology/slimecrossing.dmi' icon_state = "capturedevice" -/datum/armor/structure_ice_stasis - melee = 30 - bullet = 50 - laser = -50 - energy = -50 - fire = -80 - acid = 30 - /obj/item/capturedevice/attack(mob/living/M, mob/user) if(length(contents)) to_chat(user, span_warning("The device already has something inside.")) diff --git a/code/modules/research/xenobiology/crossbreeding/_weapons.dm b/code/modules/research/xenobiology/crossbreeding/_weapons.dm index 7ca3af5ad3a..bd08d342c6c 100644 --- a/code/modules/research/xenobiology/crossbreeding/_weapons.dm +++ b/code/modules/research/xenobiology/crossbreeding/_weapons.dm @@ -102,14 +102,6 @@ Slimecrossing Weapons ammo_type = /obj/item/ammo_casing/magic/bloodchill fire_sound = 'sound/effects/attackblob.ogg' -/datum/armor/shield_adamantineshield - melee = 50 - bullet = 50 - laser = 50 - bomb = 30 - fire = 80 - acid = 70 - /obj/item/gun/magic/bloodchill/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) @@ -138,14 +130,6 @@ Slimecrossing Weapons nodamage = TRUE hitsound = 'sound/effects/splat.ogg' -/datum/armor/shield_adamantineshield - melee = 50 - bullet = 50 - laser = 50 - bomb = 30 - fire = 80 - acid = 70 - /obj/projectile/magic/bloodchill/on_hit(mob/living/target) . = ..() if(isliving(target)) diff --git a/code/modules/unit_tests/designs.dm b/code/modules/unit_tests/designs.dm index 7ba2bbec997..a9cda144649 100644 --- a/code/modules/unit_tests/designs.dm +++ b/code/modules/unit_tests/designs.dm @@ -14,10 +14,10 @@ if (isnull(current_design.name) || current_design.name == default_design.name) //Designs with ID must have non default/null Name TEST_FAIL("Design [current_design.type] has default or null name var but has an ID") if ((!isnull(current_design.materials) && LAZYLEN(current_design.materials)) || (!isnull(current_design.reagents_list) && LAZYLEN(current_design.reagents_list))) //Design requires materials - if ((isnull(current_design.build_path) || current_design.build_path == default_design.build_path) && (isnull(current_design.make_reagents) || current_design.make_reagents == default_design.make_reagents)) //Check if design gives any output - TEST_FAIL("Design [current_design.type] requires materials but does not have have any build_path or make_reagents set") + if ((isnull(current_design.build_path) || current_design.build_path == default_design.build_path) && (isnull(current_design.make_reagent) || current_design.make_reagent == default_design.make_reagent)) //Check if design gives any output + TEST_FAIL("Design [current_design.type] requires materials but does not have have any build_path or make_reagent set") else if (!isnull(current_design.build_path) || !isnull(current_design.build_path)) // //Design requires no materials but creates stuff - TEST_FAIL("Design [current_design.type] requires NO materials but has build_path or make_reagents set") + TEST_FAIL("Design [current_design.type] requires NO materials but has build_path or make_reagent set") for(var/path in subtypesof(/datum/design/surgery)) var/datum/design/surgery/current_design = new path //Create an instance of each design diff --git a/code/modules/vehicles/atv.dm b/code/modules/vehicles/atv.dm index 9e02742c7c6..eedfbed358c 100644 --- a/code/modules/vehicles/atv.dm +++ b/code/modules/vehicles/atv.dm @@ -41,14 +41,6 @@ scan_range = 7 density = FALSE -/datum/armor/ridden_atv - melee = 50 - bullet = 25 - laser = 20 - bomb = 50 - fire = 60 - acid = 60 - /obj/vehicle/ridden/atv/turret/Initialize(mapload) . = ..() turret = new(loc) diff --git a/code/modules/vehicles/cars/vim.dm b/code/modules/vehicles/cars/vim.dm index add9d00d9a3..8079f7cc6b6 100644 --- a/code/modules/vehicles/cars/vim.dm +++ b/code/modules/vehicles/cars/vim.dm @@ -126,14 +126,6 @@ /// Whether the mech headlights are currently on. var/datum/port/output/are_headlights_on -/datum/armor/car_vim - melee = 70 - bullet = 40 - laser = 40 - bomb = 30 - fire = 80 - acid = 80 - /obj/item/circuit_component/vim/populate_ports() are_headlights_on = add_output_port("Are Headlights On", PORT_TYPE_NUMBER) chime = add_output_port("On Chime Used", PORT_TYPE_SIGNAL) diff --git a/code/modules/vehicles/mecha/combat/durand.dm b/code/modules/vehicles/mecha/combat/durand.dm index 7667f2fc95a..ca14358bcde 100644 --- a/code/modules/vehicles/mecha/combat/durand.dm +++ b/code/modules/vehicles/mecha/combat/durand.dm @@ -142,15 +142,6 @@ Expects a turf. Returns true if the attack should be blocked, false if not.*/ name = "Toggle an energy shield that blocks all attacks from the faced direction at a heavy power cost." button_icon_state = "mech_defense_mode_off" -/datum/armor/mecha_durand - melee = 40 - bullet = 35 - laser = 15 - energy = 10 - bomb = 20 - fire = 100 - acid = 100 - /datum/action/vehicle/sealed/mecha/mech_defense_mode/Trigger(trigger_flags, forced_state = FALSE) SEND_SIGNAL(chassis, COMSIG_MECHA_ACTION_TRIGGER, owner, args) //Signal sent to the mech, to be handed to the shield. See durand.dm for more details diff --git a/code/modules/vehicles/mecha/combat/gygax.dm b/code/modules/vehicles/mecha/combat/gygax.dm index 5da945a0893..57732016fba 100644 --- a/code/modules/vehicles/mecha/combat/gygax.dm +++ b/code/modules/vehicles/mecha/combat/gygax.dm @@ -38,14 +38,6 @@ name = "Toggle leg actuators overload" button_icon_state = "mech_overload_off" -/datum/armor/mecha_gygax - melee = 25 - bullet = 20 - laser = 30 - energy = 15 - fire = 100 - acid = 100 - /datum/action/vehicle/sealed/mecha/mech_overload_mode/Trigger(trigger_flags, forced_state = null) if(!owner || !chassis || !(owner in chassis.occupants)) return diff --git a/code/modules/vehicles/mecha/combat/marauder.dm b/code/modules/vehicles/mecha/combat/marauder.dm index 320f6225100..c24c368cdf0 100644 --- a/code/modules/vehicles/mecha/combat/marauder.dm +++ b/code/modules/vehicles/mecha/combat/marauder.dm @@ -46,15 +46,6 @@ MECHA_ARMOR = list(/obj/item/mecha_parts/mecha_equipment/armor/antiproj_armor_booster), ) -/datum/armor/mecha_marauder - melee = 50 - bullet = 55 - laser = 40 - energy = 30 - bomb = 30 - fire = 100 - acid = 100 - /obj/vehicle/sealed/mecha/marauder/add_cell(obj/item/stock_parts/cell/C=null) if(C) C.forceMove(src) @@ -66,15 +57,6 @@ name = "Smoke" button_icon_state = "mech_smoke" -/datum/armor/mecha_marauder - melee = 50 - bullet = 55 - laser = 40 - energy = 30 - bomb = 30 - fire = 100 - acid = 100 - /datum/action/vehicle/sealed/mecha/mech_smoke/Trigger(trigger_flags) if(!owner || !chassis || !(owner in chassis.occupants)) return @@ -87,15 +69,6 @@ name = "Zoom" button_icon_state = "mech_zoom_off" -/datum/armor/mecha_marauder - melee = 50 - bullet = 55 - laser = 40 - energy = 30 - bomb = 30 - fire = 100 - acid = 100 - /datum/action/vehicle/sealed/mecha/mech_zoom/Trigger(trigger_flags) if(!owner?.client || !chassis || !(owner in chassis.occupants)) return diff --git a/code/modules/vehicles/mecha/combat/phazon.dm b/code/modules/vehicles/mecha/combat/phazon.dm index 56c86e0e15a..9303d04c945 100644 --- a/code/modules/vehicles/mecha/combat/phazon.dm +++ b/code/modules/vehicles/mecha/combat/phazon.dm @@ -39,15 +39,6 @@ name = "Reconfigure arm microtool arrays" button_icon_state = "mech_damtype_brute" -/datum/armor/mecha_phazon - melee = 30 - bullet = 30 - laser = 30 - energy = 30 - bomb = 30 - fire = 100 - acid = 100 - /datum/action/vehicle/sealed/mecha/mech_switch_damtype/Trigger(trigger_flags) if(!owner || !chassis || !(owner in chassis.occupants)) return @@ -71,15 +62,6 @@ name = "Toggle Phasing" button_icon_state = "mech_phasing_off" -/datum/armor/mecha_phazon - melee = 30 - bullet = 30 - laser = 30 - energy = 30 - bomb = 30 - fire = 100 - acid = 100 - /datum/action/vehicle/sealed/mecha/mech_toggle_phasing/Trigger(trigger_flags) if(!owner || !chassis || !(owner in chassis.occupants)) return diff --git a/code/modules/vehicles/mecha/combat/savannah_ivanov.dm b/code/modules/vehicles/mecha/combat/savannah_ivanov.dm index af3e44c889c..a571b2fb261 100644 --- a/code/modules/vehicles/mecha/combat/savannah_ivanov.dm +++ b/code/modules/vehicles/mecha/combat/savannah_ivanov.dm @@ -78,15 +78,6 @@ ///skyfall builds up in charges every 2 seconds, when it reaches 5 charges the ability actually starts var/skyfall_charge_level = 0 -/datum/armor/mecha_savannah_ivanov - melee = 45 - bullet = 40 - laser = 30 - energy = 30 - bomb = 40 - fire = 100 - acid = 100 - /datum/action/vehicle/sealed/mecha/skyfall/Trigger(trigger_flags) if(!owner || !chassis || !(owner in chassis.occupants)) return @@ -253,15 +244,6 @@ var/rockets_left = 0 var/aiming_missile = FALSE -/datum/armor/mecha_savannah_ivanov - melee = 45 - bullet = 40 - laser = 30 - energy = 30 - bomb = 40 - fire = 100 - acid = 100 - /datum/action/vehicle/sealed/mecha/ivanov_strike/Destroy() if(aiming_missile) end_missile_targeting() @@ -372,15 +354,6 @@ ///reference to mecha following var/obj/vehicle/sealed/mecha/mecha -/datum/armor/mecha_savannah_ivanov - melee = 45 - bullet = 40 - laser = 30 - energy = 30 - bomb = 40 - fire = 100 - acid = 100 - /obj/effect/skyfall_landingzone/Initialize(mapload, obj/vehicle/sealed/mecha/mecha) . = ..() if(!mecha) diff --git a/code/modules/vehicles/mecha/working/clarke.dm b/code/modules/vehicles/mecha/working/clarke.dm index 3c711e4b25a..fabce1c9163 100644 --- a/code/modules/vehicles/mecha/working/clarke.dm +++ b/code/modules/vehicles/mecha/working/clarke.dm @@ -63,15 +63,6 @@ /// Var to avoid istype checking every time the topic button is pressed. This will only work inside Clarke mechs. var/obj/vehicle/sealed/mecha/working/clarke/hostmech -/datum/armor/working_clarke - melee = 20 - bullet = 10 - laser = 20 - energy = 10 - bomb = 60 - fire = 100 - acid = 100 - /obj/item/mecha_parts/mecha_equipment/orebox_manager/attach(obj/vehicle/sealed/mecha/M, attach_right = FALSE) . = ..() if(istype(M, /obj/vehicle/sealed/mecha/working/clarke)) @@ -94,15 +85,6 @@ button_icon_state = "mech_search_ruins" COOLDOWN_DECLARE(search_cooldown) -/datum/armor/working_clarke - melee = 20 - bullet = 10 - laser = 20 - energy = 10 - bomb = 60 - fire = 100 - acid = 100 - /datum/action/vehicle/sealed/mecha/mech_search_ruins/Trigger(trigger_flags) if(!owner || !chassis || !(owner in chassis.occupants)) return @@ -140,15 +122,6 @@ range_mid = 20 range_far = 50 -/datum/armor/working_clarke - melee = 20 - bullet = 10 - laser = 20 - energy = 10 - bomb = 60 - fire = 100 - acid = 100 - /datum/status_effect/agent_pinpointer/ruin/scan_for_target() return diff --git a/code/modules/vehicles/mecha/working/ripley.dm b/code/modules/vehicles/mecha/working/ripley.dm index fd7bce49926..b9e4e5ab745 100644 --- a/code/modules/vehicles/mecha/working/ripley.dm +++ b/code/modules/vehicles/mecha/working/ripley.dm @@ -147,15 +147,6 @@ desc = "An old, dusty mining Ripley." name = "\improper APLU \"Miner\"" -/datum/armor/ripley_mk2 - melee = 40 - bullet = 30 - laser = 30 - energy = 30 - bomb = 60 - fire = 100 - acid = 100 - /obj/vehicle/sealed/mecha/working/ripley/mining/Initialize(mapload) . = ..() take_damage(125) // Low starting health @@ -191,15 +182,6 @@ GLOBAL_DATUM(cargo_ripley, /obj/vehicle/sealed/mecha/working/ripley/cargo) base_icon_state = "hauler" max_integrity = 100 //Has half the health of a normal RIPLEY mech, so it's harder to use as a weapon. -/datum/armor/ripley_mk2 - melee = 40 - bullet = 30 - laser = 30 - energy = 30 - bomb = 60 - fire = 100 - acid = 100 - /obj/vehicle/sealed/mecha/working/ripley/cargo/Initialize(mapload) . = ..() if(cell) @@ -237,15 +219,6 @@ GLOBAL_DATUM(cargo_ripley, /obj/vehicle/sealed/mecha/working/ripley/cargo) equipment_slot = MECHA_UTILITY detachable = FALSE -/datum/armor/ripley_mk2 - melee = 40 - bullet = 30 - laser = 30 - energy = 30 - bomb = 60 - fire = 100 - acid = 100 - /obj/item/mecha_parts/mecha_equipment/ejector/get_snowflake_data() var/list/data = list("snowflake_id" = MECHA_SNOWFLAKE_ID_EJECTOR, "cargo" = list()) var/obj/vehicle/sealed/mecha/working/ripley/miner = chassis diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index 31ce2ec092f..f1df828bf4f 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -1264,11 +1264,6 @@ var/list/base64_cache = list() panel_type = "panel20" -/datum/armor/machinery_vending - melee = 20 - fire = 50 - acid = 70 - /obj/machinery/vending/custom/compartmentLoadAccessCheck(mob/user) . = FALSE if(!isliving(user)) @@ -1426,11 +1421,6 @@ icon_state = "refill_custom" custom_premium_price = PAYCHECK_CREW -/datum/armor/machinery_vending - melee = 20 - fire = 50 - acid = 70 - /obj/machinery/vending/custom/greed //name and like decided by the spawn icon_state = "greed" icon_deny = "greed-deny" diff --git a/html/changelogs/AutoChangeLog-pr-18001.yml b/html/changelogs/AutoChangeLog-pr-18001.yml new file mode 100644 index 00000000000..819e8339c89 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-18001.yml @@ -0,0 +1,8 @@ +author: "RimiNosha" +delete-after: True +changes: + - bugfix: "Non-standard brained synths can now use ghost roles once again. Woops!" + - bugfix: "Items will now no longer be given twice to ghost roles." + - bugfix: "Ghost cafe boxes no longer drop on spawn." + - imageadd: "Ghost cafe costuming boxes no longer look like they've been bought from the syndicate. We managed to at least repackage their products this time." + - qol: "You can finally put stuff back into said ghost cafe costuming kit. Nice." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18161.yml b/html/changelogs/AutoChangeLog-pr-18161.yml deleted file mode 100644 index 3fb92616511..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18161.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "YakumoChen" -delete-after: True -changes: - - qol: "Department guards now spawn with all the gear they need to police their department" - - qol: "Department guard lockers contain a full, spare set of gear, for people getting a job change." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18362.yml b/html/changelogs/AutoChangeLog-pr-18362.yml deleted file mode 100644 index e2e6207f35f..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18362.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Melbert" -delete-after: True -changes: - - bugfix: "Ethereals and Flypeople and Aliens who learn Uncommon language can speak it with their tongues like they could speak Common, no this doesn't mean they can naturally speak or understand Uncommon" - - refactor: "Refactored how tongues set up their languages lists" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18447.yml b/html/changelogs/AutoChangeLog-pr-18447.yml deleted file mode 100644 index 91774216a69..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18447.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Tattle" -delete-after: True -changes: - - bugfix: "projectile hits on mobs are logged globally" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18451.yml b/html/changelogs/AutoChangeLog-pr-18451.yml deleted file mode 100644 index 732c67db023..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18451.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Improvedname" -delete-after: True -changes: - - bugfix: "fixes cummerbunds holding 7 items instead of 3(as fannypacks do)" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18458.yml b/html/changelogs/AutoChangeLog-pr-18458.yml deleted file mode 100644 index 52bb0bc7538..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18458.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "Those with kitchen access should now once again be the only one who are allowed to vending-machine-restock individual snacking items via their trusty tray." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18465.yml b/html/changelogs/AutoChangeLog-pr-18465.yml new file mode 100644 index 00000000000..8f821870ed4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-18465.yml @@ -0,0 +1,4 @@ +author: "softcerv" +delete-after: True +changes: + - bugfix: "Alter Form now longer shows parts that it shouldn't" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18467.yml b/html/changelogs/AutoChangeLog-pr-18467.yml deleted file mode 100644 index 6b6b78def67..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18467.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - qol: "Mining order consoles are now named 'order console'." - - qol: "Orders from said mining order consoles can now no longer be cancelled, and are listed as 'mp' (mining points) in the Cargo console instead of 'cr'." - - qol: "Order consoles now have a + button that will instantly add 1 of the item." - - bugfix: "Departmental orders can no longer be cancelled through the NTos cargo application." - - bugfix: "Wearing an ID will no longer break order consoles." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18485.yml b/html/changelogs/AutoChangeLog-pr-18485.yml deleted file mode 100644 index 19cd76ebc1f..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18485.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Improvedname" -delete-after: True -changes: - - bugfix: "Adds missing contrabrand spawners to deltastation locker" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18488.yml b/html/changelogs/AutoChangeLog-pr-18488.yml deleted file mode 100644 index 97bd7b88420..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18488.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Zonespace27" -delete-after: True -changes: - - balance: "ERT smartgun now fires faster while doing less damage and having nearly all wounding potential removed" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18492.yml b/html/changelogs/AutoChangeLog-pr-18492.yml deleted file mode 100644 index f87cfac5e0c..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18492.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - rscadd: "Hope you saved for a rainy day: Added the 'Cursed' quirk which causes excessive slippage and... other difficulties." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18526.yml b/html/changelogs/AutoChangeLog-pr-18526.yml deleted file mode 100644 index ce0e8457224..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18526.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Paxilmaniac" -delete-after: True -changes: - - imageadd: "The colors on the cutting board have been changed to be less dull and more like the mortars" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18535.yml b/html/changelogs/AutoChangeLog-pr-18535.yml deleted file mode 100644 index bc5245a2d2e..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18535.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "You should now no longer get a confusing message whenever you try to add flour from a flour sack into a bowl." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18536.yml b/html/changelogs/AutoChangeLog-pr-18536.yml deleted file mode 100644 index 4ab93c66ac4..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18536.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Melbert" -delete-after: True -changes: - - bugfix: "Fixes runtimes from cursed people dying" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18546.yml b/html/changelogs/AutoChangeLog-pr-18546.yml deleted file mode 100644 index f34bb1445a3..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18546.yml +++ /dev/null @@ -1,8 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - rscadd: "RTD Rapid Tiling Device" - - imageadd: "Sprite for RTD" - - code_imp: "moved update_overlays() from rcd to obj/item/construction so anyone can use it" - - rscdel: "cooldown of 3 seconds when changing turf type" - - qol: "Faster Turf decoration" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18616.yml b/html/changelogs/AutoChangeLog-pr-18616.yml deleted file mode 100644 index 02fd2601b1d..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18616.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - rscadd: "Faithless will now also break lights and drag victims around" - - refactor: "Faithless into basic mob" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18644.yml b/html/changelogs/AutoChangeLog-pr-18644.yml deleted file mode 100644 index 19c1746d1be..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18644.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - spellcheck: "Head-spears are now named properly when using alternate spear types." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18645.yml b/html/changelogs/AutoChangeLog-pr-18645.yml deleted file mode 100644 index b266cd0e6e4..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18645.yml +++ /dev/null @@ -1,10 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - qol: "Successfully fending off a blob now has a cross station news report again. More pressing reports will take priority over it, though." - - qol: "Successfully killing a wizard (and all of their apprentices) now has a cross station news report again." - - qol: "If more than half of a cultist team manages to escape on the shuttle (rather than summoning Nar'sie), they will send a unique cross station news report. This is still a loss, by the way. Summon Nar'sie!" - - qol: "Nuclear Operatives successfully nuking the station now has its unique cross station news report again, and no longer uses the generic \"The station was nuked\" report." - - qol: "Nuking the station to stop a blob infection now has a unique cross station news report again. Good luck convincing admins to allow this." - - qol: "Cult ghosts from \"Spirit Realm\" no longer persist on the cult's team after being desummoned, meaning they will not show up on roundend report." - - qol: "Heads of staff will now always show up on revolution roundend report - even if their body was fully destroyed." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18646.yml b/html/changelogs/AutoChangeLog-pr-18646.yml deleted file mode 100644 index ddf381a3ce9..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18646.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "Boxes created through the crafting menu no longer spawn with their contents full" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18653.yml b/html/changelogs/AutoChangeLog-pr-18653.yml deleted file mode 100644 index 87aee6b18ca..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18653.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "There is no longer a button on a window at the CentCom Thunderdome." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18657.yml b/html/changelogs/AutoChangeLog-pr-18657.yml deleted file mode 100644 index d5094e9175d..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18657.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - rscadd: "Adds ear surgery to repair damaged ears/deafness." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18660.yml b/html/changelogs/AutoChangeLog-pr-18660.yml deleted file mode 100644 index 8c13170f950..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18660.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "you can nolonger use a goldgrub as a shield to kill colossus" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18662.yml b/html/changelogs/AutoChangeLog-pr-18662.yml deleted file mode 100644 index 05d6edf4f13..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18662.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - qol: "fixes chisels" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18665.yml b/html/changelogs/AutoChangeLog-pr-18665.yml deleted file mode 100644 index 5b46e4ad9ce..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18665.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "pancakes no longer show an error sprite when added to a stack" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18674.yml b/html/changelogs/AutoChangeLog-pr-18674.yml deleted file mode 100644 index eb692a63a5e..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18674.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "PestoVerde, Imaginos, Wallem" -delete-after: True -changes: - - imageadd: "New material and ore sprites by PestoVerde & Imaginos" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18678.yml b/html/changelogs/AutoChangeLog-pr-18678.yml deleted file mode 100644 index 7560aee556b..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18678.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Rhials" -delete-after: True -changes: - - qol: "The Scrubber Clog event now gives an orbit popup to ghosts!" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18681.yml b/html/changelogs/AutoChangeLog-pr-18681.yml deleted file mode 100644 index cabc9f3fc3f..00000000000 --- a/html/changelogs/AutoChangeLog-pr-18681.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SkyratBot" -delete-after: True -changes: - - bugfix: "viewing the botkeeper app as an observer will no longer runtime." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18682.yml b/html/changelogs/AutoChangeLog-pr-18682.yml new file mode 100644 index 00000000000..6d70016637a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-18682.yml @@ -0,0 +1,5 @@ +author: "SkyratBot" +delete-after: True +changes: + - bugfix: "Fix blood overlays on energy daggers" + - code_imp: "Add `NO_BLOOD_ON_ITEM` bitfield for items" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18692.yml b/html/changelogs/AutoChangeLog-pr-18692.yml new file mode 100644 index 00000000000..7c2d4e4d630 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-18692.yml @@ -0,0 +1,4 @@ +author: "softcerv" +delete-after: True +changes: + - bugfix: "Cryopods now remove players from the global list of joined players, stopping the persistent scars system from runtiming" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18698.yml b/html/changelogs/AutoChangeLog-pr-18698.yml new file mode 100644 index 00000000000..bb9d854f137 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-18698.yml @@ -0,0 +1,5 @@ +author: "SkyratBot" +delete-after: True +changes: + - code_imp: "Removes double CAN_BE_INTERN flag in chaplain and cargo tech job flags" + - code_imp: "Replaces a string in chemist departamental head variable with a job define." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18699.yml b/html/changelogs/AutoChangeLog-pr-18699.yml new file mode 100644 index 00000000000..6b3f1e5cee9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-18699.yml @@ -0,0 +1,4 @@ +author: "Melbert" +delete-after: True +changes: + - bugfix: "Fixed not getting moodlet from freshly laundered clothing" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18700.yml b/html/changelogs/AutoChangeLog-pr-18700.yml new file mode 100644 index 00000000000..1b11285a00d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-18700.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - spellcheck: "fixed grammar/typo in Nanotrasen Pay System add" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18701.yml b/html/changelogs/AutoChangeLog-pr-18701.yml new file mode 100644 index 00000000000..55e6c48610b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-18701.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - bugfix: "Cyborgs turning their lights on and off can now be seen doing so." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18702.yml b/html/changelogs/AutoChangeLog-pr-18702.yml new file mode 100644 index 00000000000..320bb3e8226 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-18702.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - rscadd: "Added atmos holofans to metastation's ordnance lab." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-18704.yml b/html/changelogs/AutoChangeLog-pr-18704.yml new file mode 100644 index 00000000000..a0d76d50e40 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-18704.yml @@ -0,0 +1,4 @@ +author: "SkyratBot" +delete-after: True +changes: + - refactor: "Duplicating mobs now should now give properly functioning mobs, as duplications in general have been reworked. Admins can feel free to use the pod feature on people." \ No newline at end of file diff --git a/html/changelogs/archive/2023-01.yml b/html/changelogs/archive/2023-01.yml index 40d4087b775..8a6ea5d1a7b 100644 --- a/html/changelogs/archive/2023-01.yml +++ b/html/changelogs/archive/2023-01.yml @@ -471,3 +471,91 @@ - rscadd: you can now use regex for text highlighting. The syntax is /[regex expression]/, eg /dog[0-9]/. There are no quantifiers, but you can use capture groups. The regex must read a minimum of two characters. +2023-01-14: + Improvedname: + - bugfix: Adds missing contrabrand spawners to deltastation locker + - bugfix: fixes cummerbunds holding 7 items instead of 3(as fannypacks do) + Melbert: + - bugfix: Ethereals and Flypeople and Aliens who learn Uncommon language can speak + it with their tongues like they could speak Common, no this doesn't mean they + can naturally speak or understand Uncommon + - refactor: Refactored how tongues set up their languages lists + - bugfix: Fixed a runtime from neck slices on headless mobs. + - qol: Neck sliced folk now have an examine message saying as much. + - bugfix: Fixes runtimes from cursed people dying + Paxilmaniac: + - imageadd: The colors on the cutting board have been changed to be less dull and + more like the mortars + PestoVerde, Imaginos, Wallem: + - imageadd: New material and ore sprites by PestoVerde & Imaginos + Rhials: + - qol: The Scrubber Clog event now gives an orbit popup to ghosts! + - qol: the light replacer now allows you to click on either the light, or the floor + beneath it, to refill lights. + - code_imp: light replacer code is now a bit prettier. + ShizCalev: + - qol: Airlock interfaces will now open up automatically if access is restored early + while an AI is hacking it. + SkyratBot: + - bugfix: pancakes no longer show an error sprite when added to a stack + - rscadd: Adds ear surgery to repair damaged ears/deafness. + - bugfix: There is no longer a button on a window at the CentCom Thunderdome. + - qol: Successfully fending off a blob now has a cross station news report again. + More pressing reports will take priority over it, though. + - qol: Successfully killing a wizard (and all of their apprentices) now has a cross + station news report again. + - qol: If more than half of a cultist team manages to escape on the shuttle (rather + than summoning Nar'sie), they will send a unique cross station news report. + This is still a loss, by the way. Summon Nar'sie! + - qol: Nuclear Operatives successfully nuking the station now has its unique cross + station news report again, and no longer uses the generic "The station was nuked" + report. + - qol: Nuking the station to stop a blob infection now has a unique cross station + news report again. Good luck convincing admins to allow this. + - qol: Cult ghosts from "Spirit Realm" no longer persist on the cult's team after + being desummoned, meaning they will not show up on roundend report. + - qol: Heads of staff will now always show up on revolution roundend report - even + if their body was fully destroyed. + - qol: fixes chisels + - rscadd: Faithless will now also break lights and drag victims around + - refactor: Faithless into basic mob + - bugfix: Bald/Shaved ghosts will no longer cause a runtime and spawn without a + name. + - rscadd: RTD Rapid Tiling Device + - imageadd: Sprite for RTD + - code_imp: moved update_overlays() from rcd to obj/item/construction so anyone + can use it + - rscdel: cooldown of 3 seconds when changing turf type + - qol: Faster Turf decoration + - qol: Biogenerator shows default reagent containers instead of beakers + - bugfix: viewing the botkeeper app as an observer will no longer runtime. + - bugfix: Those with kitchen access should now once again be the only one who are + allowed to vending-machine-restock individual snacking items via their trusty + tray. + - qol: Pinpointers now tell what they are tracking when examined + - qol: Mining order consoles are now named 'order console'. + - qol: Orders from said mining order consoles can now no longer be cancelled, and + are listed as 'mp' (mining points) in the Cargo console instead of 'cr'. + - qol: Order consoles now have a + button that will instantly add 1 of the item. + - bugfix: Departmental orders can no longer be cancelled through the NTos cargo + application. + - bugfix: Wearing an ID will no longer break order consoles. + - bugfix: You should now no longer get a confusing message whenever you try to add + flour from a flour sack into a bowl. + - bugfix: you can nolonger use a goldgrub as a shield to kill colossus + - spellcheck: Head-spears are now named properly when using alternate spear types. + - rscadd: 'Hope you saved for a rainy day: Added the ''Cursed'' quirk which causes + excessive slippage and... other difficulties.' + - bugfix: Boxes created through the crafting menu no longer spawn with their contents + full + Tastyfish: + - bugfix: Teshari uniform accessory rendering now works as expected again. + Tattle: + - bugfix: projectile hits on mobs are logged globally + YakumoChen: + - qol: Department guards now spawn with all the gear they need to police their department + - qol: Department guard lockers contain a full, spare set of gear, for people getting + a job change. + Zonespace27: + - balance: ERT smartgun now fires faster while doing less damage and having nearly + all wounding potential removed diff --git a/modular_skyrat/master_files/code/modules/client/preferences/brain.dm b/modular_skyrat/master_files/code/modules/client/preferences/brain.dm index 037f447b7fd..7a0d4008ced 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences/brain.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences/brain.dm @@ -16,9 +16,17 @@ var/obj/item/organ/internal/brain/new_brain = target.prefs_get_brain_to_use(value) - var/obj/old_brain = target.getorganslot(ORGAN_SLOT_BRAIN) + var/obj/item/organ/internal/brain/old_brain = target.getorganslot(ORGAN_SLOT_BRAIN) if(!new_brain || new_brain == old_brain.type) return + var/datum/mind/keep_me_safe = target.mind + new_brain = new new_brain() - new_brain.Insert(target, TRUE, FALSE) + new_brain.Insert(target, drop_if_replaced = FALSE) + + // Prefs can be applied to mindless mobs, let's not try to move the non-existent mind back in! + if(!keep_me_safe) + return + + keep_me_safe.transfer_to(target, TRUE) diff --git a/modular_skyrat/master_files/code/modules/clothing/under/jobs/cargo.dm b/modular_skyrat/master_files/code/modules/clothing/under/jobs/cargo.dm index bf6d9accf03..bddc24e1481 100644 --- a/modular_skyrat/master_files/code/modules/clothing/under/jobs/cargo.dm +++ b/modular_skyrat/master_files/code/modules/clothing/under/jobs/cargo.dm @@ -25,11 +25,6 @@ armor_type = /datum/armor/utility_syndicate has_sensor = NO_SENSORS -/datum/armor/utility_syndicate - melee = 10 - fire = 50 - acid = 40 - /obj/item/clothing/under/rank/cargo/tech/skyrat/long name = "cargo technician's long jumpsuit" desc = "For crate-pushers who'd rather protect their legs than show them off." diff --git a/modular_skyrat/master_files/code/modules/clothing/under/jobs/command.dm b/modular_skyrat/master_files/code/modules/clothing/under/jobs/command.dm index 08dfb27fcd3..4cd45ad912a 100644 --- a/modular_skyrat/master_files/code/modules/clothing/under/jobs/command.dm +++ b/modular_skyrat/master_files/code/modules/clothing/under/jobs/command.dm @@ -117,11 +117,6 @@ armor_type = /datum/armor/utility_syndicate has_sensor = NO_SENSORS -/datum/armor/utility_syndicate - melee = 10 - fire = 50 - acid = 40 - /obj/item/clothing/under/rank/captain/skyrat/imperial/generic desc = "A grey naval suit with a rank badge denoting an Officer. Doesn't protect against blaster fire." name = "grey officer's naval jumpsuit" diff --git a/modular_skyrat/master_files/code/modules/clothing/under/jobs/engineering.dm b/modular_skyrat/master_files/code/modules/clothing/under/jobs/engineering.dm index 75761ddb1b7..01461e3ed7e 100644 --- a/modular_skyrat/master_files/code/modules/clothing/under/jobs/engineering.dm +++ b/modular_skyrat/master_files/code/modules/clothing/under/jobs/engineering.dm @@ -25,11 +25,6 @@ armor_type = /datum/armor/utility_syndicate has_sensor = NO_SENSORS -/datum/armor/utility_syndicate - melee = 10 - fire = 50 - acid = 40 - /obj/item/clothing/under/rank/engineering/engineer/skyrat/trouser name = "engineer's trousers" desc = "An engineering-orange set of trousers. Their waistband proudly displays an 'anti-radiation' symbol, though the effectiveness of radiation-proof-pants-only is still up for debate." diff --git a/modular_skyrat/master_files/code/modules/clothing/under/jobs/medical.dm b/modular_skyrat/master_files/code/modules/clothing/under/jobs/medical.dm index dbf5fb1d49c..0538d3123e5 100644 --- a/modular_skyrat/master_files/code/modules/clothing/under/jobs/medical.dm +++ b/modular_skyrat/master_files/code/modules/clothing/under/jobs/medical.dm @@ -43,11 +43,6 @@ * SCRUBS */ -/datum/armor/utility_syndicate - melee = 10 - fire = 50 - acid = 40 - /obj/item/clothing/under/rank/medical/scrubs/skyrat/red desc = "It's made of a special fiber that provides minor protection against biohazards. This one is in a deep red." icon_state = "scrubsred" diff --git a/modular_skyrat/master_files/code/modules/clothing/under/jobs/rnd.dm b/modular_skyrat/master_files/code/modules/clothing/under/jobs/rnd.dm index b8c8fe6dc48..732e8ea3c2b 100644 --- a/modular_skyrat/master_files/code/modules/clothing/under/jobs/rnd.dm +++ b/modular_skyrat/master_files/code/modules/clothing/under/jobs/rnd.dm @@ -30,11 +30,6 @@ armor_type = /datum/armor/utility_syndicate has_sensor = NO_SENSORS -/datum/armor/utility_syndicate - melee = 10 - fire = 50 - acid = 40 - /obj/item/clothing/under/rank/rnd/scientist/skyrat/hlscience name = "ridiculous scientist outfit" desc = "The tie is mandatory." diff --git a/modular_skyrat/master_files/code/modules/mob_spawn/mob_spawn.dm b/modular_skyrat/master_files/code/modules/mob_spawn/mob_spawn.dm index d6034afde67..d9e8c1ae51a 100644 --- a/modular_skyrat/master_files/code/modules/mob_spawn/mob_spawn.dm +++ b/modular_skyrat/master_files/code/modules/mob_spawn/mob_spawn.dm @@ -8,7 +8,7 @@ if(appearance_choice == "Yes") load_prefs = TRUE - var/mob/living/carbon/human/spawned_human = ..() + var/mob/living/carbon/human/spawned_human = ..(mob_possessor, newname, load_prefs) if(!load_prefs) return spawned_human @@ -23,3 +23,13 @@ spawned_human.equip_outfit_and_loadout(outfit, spawned_human.client.prefs) return spawned_human + +/// This edit would cause somewhat ugly diffs, so I'm just replacing it. +/// Original proc in code/modules/mob_spawn/mob_spawn.dm ~line 39. +/obj/effect/mob_spawn/create(mob/mob_possessor, newname, is_pref_loaded) + var/mob/living/spawned_mob = new mob_type(get_turf(src)) //living mobs only + name_mob(spawned_mob, newname) + special(spawned_mob, mob_possessor) + if(!is_pref_loaded) + equip(spawned_mob) + return spawned_mob diff --git a/modular_skyrat/master_files/icons/donator/mob/clothing/mask.dmi b/modular_skyrat/master_files/icons/donator/mob/clothing/mask.dmi index fb5c38e7ca3..afec444d880 100644 Binary files a/modular_skyrat/master_files/icons/donator/mob/clothing/mask.dmi and b/modular_skyrat/master_files/icons/donator/mob/clothing/mask.dmi differ diff --git a/modular_skyrat/master_files/icons/donator/mob/inhands/donator_left.dmi b/modular_skyrat/master_files/icons/donator/mob/inhands/donator_left.dmi index 03ce692af5f..08778840e27 100644 Binary files a/modular_skyrat/master_files/icons/donator/mob/inhands/donator_left.dmi and b/modular_skyrat/master_files/icons/donator/mob/inhands/donator_left.dmi differ diff --git a/modular_skyrat/master_files/icons/donator/mob/inhands/donator_right.dmi b/modular_skyrat/master_files/icons/donator/mob/inhands/donator_right.dmi index f35d8689a3f..6e014e618fb 100644 Binary files a/modular_skyrat/master_files/icons/donator/mob/inhands/donator_right.dmi and b/modular_skyrat/master_files/icons/donator/mob/inhands/donator_right.dmi differ diff --git a/modular_skyrat/master_files/icons/donator/obj/clothing/masks.dmi b/modular_skyrat/master_files/icons/donator/obj/clothing/masks.dmi index cba71a988f3..ce141e98765 100644 Binary files a/modular_skyrat/master_files/icons/donator/obj/clothing/masks.dmi and b/modular_skyrat/master_files/icons/donator/obj/clothing/masks.dmi differ diff --git a/modular_skyrat/master_files/icons/obj/plushes.dmi b/modular_skyrat/master_files/icons/obj/plushes.dmi index 18fcb682a86..65c3b1d56be 100644 Binary files a/modular_skyrat/master_files/icons/obj/plushes.dmi and b/modular_skyrat/master_files/icons/obj/plushes.dmi differ diff --git a/modular_skyrat/modules/SEVA_suit/code/seva_obj.dm b/modular_skyrat/modules/SEVA_suit/code/seva_obj.dm index 0011a7ec3f0..8a8fe353fa9 100644 --- a/modular_skyrat/modules/SEVA_suit/code/seva_obj.dm +++ b/modular_skyrat/modules/SEVA_suit/code/seva_obj.dm @@ -47,17 +47,6 @@ resistance_flags = FIRE_PROOF supports_variations_flags = CLOTHING_SNOUTED_VARIATION //I can't find the snout sprite so I'm just gonna force it to do this -/datum/armor/hooded_seva - melee = 20 - bullet = 10 - laser = 10 - energy = 10 - bomb = 30 - bio = 50 - fire = 100 - acid = 50 - wound = 10 - /obj/item/clothing/mask/gas/seva name = "SEVA mask" desc = "A head-covering mask that can be connected to an external air supply. Intended for use with the SEVA Suit." diff --git a/modular_skyrat/modules/aesthetics/storage/storage.dmi b/modular_skyrat/modules/aesthetics/storage/storage.dmi index c261adf75cb..7921f657597 100644 Binary files a/modular_skyrat/modules/aesthetics/storage/storage.dmi and b/modular_skyrat/modules/aesthetics/storage/storage.dmi differ diff --git a/modular_skyrat/modules/blueshield/code/blueshield_clothing.dm b/modular_skyrat/modules/blueshield/code/blueshield_clothing.dm index 1074ecec5e9..3f8fad686a8 100644 --- a/modular_skyrat/modules/blueshield/code/blueshield_clothing.dm +++ b/modular_skyrat/modules/blueshield/code/blueshield_clothing.dm @@ -39,9 +39,9 @@ icon = 'modular_skyrat/master_files/icons/obj/clothing/head/plasmaman_hats.dmi' worn_icon = 'modular_skyrat/master_files/icons/mob/clothing/head/plasmaman_head.dmi' icon_state = "bs_envirohelm" - armor_type = /datum/armor/plasmaman_blueshield + armor_type = /datum/armor/helmet_plasmaman_blueshield -/datum/armor/plasmaman_blueshield +/datum/armor/helmet_plasmaman_blueshield melee = 30 melee = 20 laser = 20 @@ -57,11 +57,11 @@ icon = 'modular_skyrat/master_files/icons/obj/clothing/under/plasmaman.dmi' worn_icon = 'modular_skyrat/master_files/icons/mob/clothing/under/plasmaman.dmi' icon_state = "bs_envirosuit" - armor_type = /datum/armor/plasmaman_blueshield + armor_type = /datum/armor/under_plasmaman_blueshield sensor_mode = SENSOR_COORDS random_sensor = FALSE -/datum/armor/plasmaman_blueshield +/datum/armor/under_plasmaman_blueshield melee = 10 laser = 10 bomb = 5 diff --git a/modular_skyrat/modules/cryosleep/code/cryopod.dm b/modular_skyrat/modules/cryosleep/code/cryopod.dm index 453aa644195..73d777b9557 100644 --- a/modular_skyrat/modules/cryosleep/code/cryopod.dm +++ b/modular_skyrat/modules/cryosleep/code/cryopod.dm @@ -160,6 +160,9 @@ GLOBAL_LIST_EMPTY(valid_cryopods) /// Has the occupant been tucked in? var/tucked = FALSE + /// What was the ckey of the client that entered the cryopod? + var/stored_ckey = null + /obj/machinery/cryopod/quiet quiet = TRUE @@ -203,6 +206,7 @@ GLOBAL_LIST_EMPTY(valid_cryopods) var/mob/living/mob_occupant = occupant if(mob_occupant && mob_occupant.stat != DEAD) to_chat(occupant, span_notice("You feel cool air surround you. You go numb as your senses turn inward.")) + stored_ckey = mob_occupant.ckey COOLDOWN_START(src, despawn_world_time, time_till_despawn) icon_state = "cryopod" @@ -213,6 +217,7 @@ GLOBAL_LIST_EMPTY(valid_cryopods) set_density(TRUE) name = initial(name) tucked = FALSE + stored_ckey = null /obj/machinery/cryopod/container_resist_act(mob/living/user) visible_message(span_notice("[occupant] emerges from [src]!"), @@ -364,6 +369,8 @@ GLOBAL_LIST_EMPTY(valid_cryopods) control_computer.frozen_item += item_content else mob_occupant.transferItemToLoc(item_content, drop_location(), force = TRUE, silent = TRUE) + GLOB.joined_player_list -= stored_ckey + handle_objectives() QDEL_NULL(occupant) open_machine() diff --git a/modular_skyrat/modules/customization/modules/clothing/~donator/donator_clothing.dm b/modular_skyrat/modules/customization/modules/clothing/~donator/donator_clothing.dm index 0325b181380..0593b540bd9 100644 --- a/modular_skyrat/modules/customization/modules/clothing/~donator/donator_clothing.dm +++ b/modular_skyrat/modules/customization/modules/clothing/~donator/donator_clothing.dm @@ -1414,4 +1414,16 @@ worn_icon = 'modular_skyrat/master_files/icons/donator/mob/clothing/suit.dmi' icon_state = "razurath_coat" - +// Donation reward for MaSvedish +/obj/item/clothing/mask/holocigarette/masvedishcigar + name = "holocigar" + desc = "A soft buzzing device that, using holodeck technology, replicates a slow burn cigar. Now with less-shock technology." + icon = 'modular_skyrat/master_files/icons/donator/obj/clothing/masks.dmi' + worn_icon = 'modular_skyrat/master_files/icons/donator/mob/clothing/mask.dmi' + lefthand_file = 'modular_skyrat/master_files/icons/donator/mob/inhands/donator_left.dmi' + righthand_file = 'modular_skyrat/master_files/icons/donator/mob/inhands/donator_right.dmi' + inhand_icon_state = "masvedishcigar_off" + worn_icon_state = "masvedishcigar_off" + icon_state = "masvedishcigar_off" + icon_on = "masvedishcigar_on" + icon_off = "masvedishcigar_off" diff --git a/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/genitals.dm b/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/genitals.dm index ff6d09de807..e8ce1ed8dd5 100644 --- a/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/genitals.dm +++ b/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/genitals.dm @@ -59,17 +59,17 @@ /datum/sprite_accessory/genital/penis/get_special_icon(mob/living/carbon/human/H) var/returned = icon - if(H.dna.species.mutant_bodyparts["taur"] && H.dna.features["penis_taur_mode"]) - var/datum/sprite_accessory/taur/SP = GLOB.sprite_accessories["taur"][H.dna.mutant_bodyparts["taur"][MUTANT_INDEX_NAME]] - if(!(SP.taur_mode & STYLE_TAUR_SNAKE)) + var/taur_mode = H.get_taur_mode() + if(taur_mode && H.dna.features["penis_taur_mode"]) + if(!(taur_mode & STYLE_TAUR_SNAKE)) returned = 'modular_skyrat/master_files/icons/mob/sprite_accessory/genitals/taur_penis_onmob.dmi' return returned /datum/sprite_accessory/genital/penis/get_special_x_dimension(mob/living/carbon/human/H) var/returned = dimension_x - if(H.dna.species.mutant_bodyparts["taur"] && H.dna.features["penis_taur_mode"]) - var/datum/sprite_accessory/taur/SP = GLOB.sprite_accessories["taur"][H.dna.mutant_bodyparts["taur"][MUTANT_INDEX_NAME]] - if(!(SP.taur_mode & STYLE_TAUR_SNAKE)) + var/taur_mode = H.get_taur_mode() + if(taur_mode && H.dna.features["penis_taur_mode"]) + if(!(taur_mode & STYLE_TAUR_SNAKE)) returned = 64 return returned @@ -139,17 +139,17 @@ /datum/sprite_accessory/genital/testicles/get_special_icon(mob/living/carbon/human/H) var/returned = icon - if(H.dna.species.mutant_bodyparts["taur"] && H.dna.features["penis_taur_mode"]) - var/datum/sprite_accessory/taur/SP = GLOB.sprite_accessories["taur"][H.dna.mutant_bodyparts["taur"][MUTANT_INDEX_NAME]] - if(!(SP.taur_mode & STYLE_TAUR_SNAKE)) + var/taur_mode = H.get_taur_mode() + if(taur_mode && H.dna.features["penis_taur_mode"]) + if(!(taur_mode & STYLE_TAUR_SNAKE)) returned = 'modular_skyrat/master_files/icons/mob/sprite_accessory/genitals/taur_testicles_onmob.dmi' return returned /datum/sprite_accessory/genital/testicles/get_special_x_dimension(mob/living/carbon/human/H) var/returned = dimension_x - if(H.dna.species.mutant_bodyparts["taur"] && H.dna.features["penis_taur_mode"]) - var/datum/sprite_accessory/taur/SP = GLOB.sprite_accessories["taur"][H.dna.mutant_bodyparts["taur"][MUTANT_INDEX_NAME]] - if(!(SP.taur_mode & STYLE_TAUR_SNAKE)) + var/taur_mode = H.get_taur_mode() + if(taur_mode && H.dna.features["penis_taur_mode"]) + if(!(taur_mode & STYLE_TAUR_SNAKE)) returned = 64 return returned diff --git a/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/taur_types.dm b/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/taur_types.dm index fef1d850a1c..c89006b0d4a 100644 --- a/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/taur_types.dm +++ b/modular_skyrat/modules/customization/modules/mob/dead/new_player/sprite_accessories/taur_types.dm @@ -1,3 +1,20 @@ +/** + * Get a human's taur mode in a standardized way. + * + * Returns STYLE_TAUR_* or NONE. + */ +/mob/living/carbon/human/proc/get_taur_mode() + var/taur_mutant_bodypart = dna.species.mutant_bodyparts["taur"] + if(!taur_mutant_bodypart) + return NONE + + var/bodypart_name = taur_mutant_bodypart[MUTANT_INDEX_NAME] + var/datum/sprite_accessory/taur/taur = GLOB.sprite_accessories["taur"][bodypart_name] + if(!taur) + return NONE + + return taur.taur_mode + /datum/sprite_accessory/taur icon = 'modular_skyrat/master_files/icons/mob/sprite_accessory/taur.dmi' key = "taur" diff --git a/modular_skyrat/modules/customization/modules/mob/living/carbon/carbon_update_icons.dm b/modular_skyrat/modules/customization/modules/mob/living/carbon/carbon_update_icons.dm deleted file mode 100644 index 72c0224d02d..00000000000 --- a/modular_skyrat/modules/customization/modules/mob/living/carbon/carbon_update_icons.dm +++ /dev/null @@ -1,124 +0,0 @@ - - -/* -/mob/living/carbon/update_worn_head() - remove_overlay(HEAD_LAYER) - - if(!get_bodypart(BODY_ZONE_HEAD)) //Decapitated - return - - if(client && hud_used && hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_BACK) + 1]) - var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_HEAD) + 1] - inv.update_icon() - - if(head) - var/desired_icon = head.worn_icon - var/used_style = NONE - if(dna?.species.id == SPECIES_VOX) - used_style = STYLE_VOX - else if(dna?.species.mutant_bodyparts["snout"]) - var/datum/sprite_accessory/snouts/S = GLOB.sprite_accessories["snout"][dna.species.mutant_bodyparts["snout"][MUTANT_INDEX_NAME]] - if(S.use_muzzled_sprites && head.supports_variations_flags & CLOTHING_SNOUTED_VARIATION) - used_style = CLOTHING_SNOUTED_VARIATION - else if(isteshari(src)) - used_style = STYLE_TESHARI - switch(used_style) - if(CLOTHING_SNOUTED_VARIATION) - desired_icon = head.worn_icon_muzzled || 'modular_skyrat/master_files/icons/mob/clothing/head_muzzled.dmi' - if(STYLE_VOX) - desired_icon = head.worn_icon_vox || 'modular_skyrat/master_files/icons/mob/clothing/head_vox.dmi' - if(STYLE_TESHARI) - if(head.worn_icon_teshari) - desired_icon = head.worn_icon_teshari - else - var/static/list/tesh_icon_states = icon_states(TESHARI_HEAD_ICON) - if((head.worn_icon_state || head.icon_state) in tesh_icon_states) - desired_icon = TESHARI_HEAD_ICON - - overlays_standing[HEAD_LAYER] = head.build_worn_icon(default_layer = HEAD_LAYER, default_icon_file = 'icons/mob/clothing/head/hats.dmi', override_file = desired_icon, mutant_styles = used_style) - update_hud_head(head) - - apply_overlay(HEAD_LAYER) - -/mob/living/carbon/update_worn_mask() - remove_overlay(FACEMASK_LAYER) - - if(!get_bodypart(BODY_ZONE_HEAD)) //Decapitated - return - - if(client && hud_used && hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_MASK) + 1]) - var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_MASK) + 1] - inv.update_icon() - - if(wear_mask) - var/desired_icon = wear_mask.worn_icon - var/used_style = NONE - if(dna?.species.id == SPECIES_VOX) - used_style = STYLE_VOX - else if(dna?.species.mutant_bodyparts["snout"]) - var/datum/sprite_accessory/snouts/S = GLOB.sprite_accessories["snout"][dna.species.mutant_bodyparts["snout"][MUTANT_INDEX_NAME]] - if(S.use_muzzled_sprites && wear_mask.supports_variations_flags & CLOTHING_SNOUTED_VARIATION) - used_style = CLOTHING_SNOUTED_VARIATION - else if(isteshari(src)) - used_style = STYLE_TESHARI - - switch(used_style) - if(CLOTHING_SNOUTED_VARIATION) - desired_icon = wear_mask.worn_icon_muzzled || 'modular_skyrat/master_files/icons/mob/clothing/mask_muzzled.dmi' - if(STYLE_VOX) - desired_icon = wear_mask.worn_icon_vox || 'modular_skyrat/master_files/icons/mob/clothing/mask_vox.dmi' - if(STYLE_TESHARI) - if(wear_mask.worn_icon_teshari) - desired_icon = wear_mask.worn_icon_teshari - else - var/static/list/tesh_icon_states = icon_states(TESHARI_MASK_ICON) - if((wear_mask.worn_icon_state || wear_mask.icon_state) in tesh_icon_states) - desired_icon = TESHARI_MASK_ICON - - if(!(check_obscured_slots() & ITEM_SLOT_MASK)) - overlays_standing[FACEMASK_LAYER] = wear_mask.build_worn_icon(default_layer = FACEMASK_LAYER, default_icon_file = 'icons/mob/clothing/mask.dmi', override_file = desired_icon, mutant_styles = used_style) - update_hud_wear_mask(wear_mask) - - apply_overlay(FACEMASK_LAYER) - -/mob/living/carbon/update_inv_neck() - remove_overlay(NECK_LAYER) - - if(client && hud_used?.inv_slots[TOBITSHIFT(ITEM_SLOT_NECK) + 1]) - var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_NECK) + 1] - inv.update_appearance() - - if(wear_neck) - var/icon_file = wear_neck.worn_icon - var/applied_styles = NONE - if(isteshari(src)) - applied_styles = STYLE_TESHARI - icon_file = TESHARI_NECK_ICON - - if(!(check_obscured_slots() & ITEM_SLOT_NECK)) - overlays_standing[NECK_LAYER] = wear_neck.build_worn_icon(default_layer = NECK_LAYER, default_icon_file = 'icons/mob/clothing/neck.dmi', override_file = icon_file, mutant_styles = applied_styles, species = dna.species.species_clothing_path) - update_hud_neck(wear_neck) - - apply_overlay(NECK_LAYER) - -/mob/living/carbon/update_worn_back() - remove_overlay(BACK_LAYER) - - if(client && hud_used?.inv_slots[TOBITSHIFT(ITEM_SLOT_BACK) + 1]) - var/atom/movable/screen/inventory/inv = hud_used.inv_slots[TOBITSHIFT(ITEM_SLOT_BACK) + 1] - inv.update_appearance() - - if(back) - var/icon_file = back.worn_icon - var/applied_styles = NONE - if(isteshari(src)) - var/static/list/tesh_icon_states = icon_states(TESHARI_BACK_ICON) - if((back.worn_icon_state || back.icon_state) in tesh_icon_states) - icon_file = TESHARI_BACK_ICON - applied_styles = STYLE_TESHARI - - overlays_standing[BACK_LAYER] = back.build_worn_icon(default_layer = BACK_LAYER, default_icon_file = 'icons/mob/clothing/back.dmi', override_file = icon_file, mutant_styles = applied_styles) - update_hud_back(back) - - apply_overlay(BACK_LAYER) -*/ diff --git a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm index 9dab28092de..b061898d931 100644 --- a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm +++ b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/species/roundstartslime.dm @@ -63,6 +63,21 @@ var/slime_restricted = TRUE ///Is the person using this ability oversized? var/oversized_user = FALSE + ///List containing all of the avalible parts + var/static/list/available_choices + +/datum/action/innate/alter_form/New(Target) + . = ..() + if(length(available_choices)) + return + + available_choices = GLOB.sprite_accessories.Copy() + for(var/parts_list in available_choices) + for(var/parts in available_choices[parts_list]) + var/datum/sprite_accessory/part = available_choices[parts_list][parts] + if(part.locked) + available_choices[parts_list] -= parts + /datum/action/innate/alter_form/unrestricted slime_restricted = FALSE @@ -322,7 +337,8 @@ ) if(!chosen_key) return - var/choice_list = GLOB.sprite_accessories[chosen_key] + + var/choice_list = available_choices[chosen_key] var/chosen_name_key = tgui_input_list( alterer, "What do you want the part to become?", diff --git a/modular_skyrat/modules/customization/modules/mob/living/carbon/human/worn_overlays.dm b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/worn_overlays.dm new file mode 100644 index 00000000000..91660ed9367 --- /dev/null +++ b/modular_skyrat/modules/customization/modules/mob/living/carbon/human/worn_overlays.dm @@ -0,0 +1,27 @@ +/** + * Setup the final version of accessory_overlay given custom species options. + */ +/obj/item/clothing/under/proc/modify_accessory_overlay() + if(!ishuman(loc)) + return accessory_overlay + + var/mob/living/carbon/human/human_wearer = loc + + // Handle custom_worn_icons[LOADOUT_ITEM_ACCESSORY] + if(LOADOUT_ITEM_ACCESSORY in human_wearer.dna.species.custom_worn_icons) + var/icon/custom_accessory_icon = human_wearer.dna.species.custom_worn_icons[LOADOUT_ITEM_ACCESSORY] + + var/list/custom_accessory_states = icon_states(custom_accessory_icon) + if(accessory_overlay.icon_state in custom_accessory_states) + // Make new appearance so we don't break the real accessory overlay for other species, and treat it as final. + return mutable_appearance(custom_accessory_icon, accessory_overlay.icon_state) + + // Apply an offset only if we didn't apply a different appearance. + if(OFFSET_ACCESSORY in human_wearer.dna.species.offset_features) + accessory_overlay.pixel_x = human_wearer.dna.species.offset_features[OFFSET_ACCESSORY][1] + accessory_overlay.pixel_y = human_wearer.dna.species.offset_features[OFFSET_ACCESSORY][2] + else + accessory_overlay.pixel_x = 0 + accessory_overlay.pixel_y = 0 + + return accessory_overlay diff --git a/modular_skyrat/modules/emergency_spacesuit/code/emergency_spacesuit.dm b/modular_skyrat/modules/emergency_spacesuit/code/emergency_spacesuit.dm index 8fdf5e8cf27..7e06d94ed27 100644 --- a/modular_skyrat/modules/emergency_spacesuit/code/emergency_spacesuit.dm +++ b/modular_skyrat/modules/emergency_spacesuit/code/emergency_spacesuit.dm @@ -74,9 +74,6 @@ // Lil box to hold em in -/datum/armor/space_emergency - bio = 20 - /obj/item/storage/box/emergency_spacesuit name = "emergency space suit case" desc = "A small case containing an emergency space suit and helmet." diff --git a/modular_skyrat/modules/emotes/code/additionalemotes/turf_emote.dm b/modular_skyrat/modules/emotes/code/additionalemotes/turf_emote.dm index 8f551d227b8..4d776678811 100644 --- a/modular_skyrat/modules/emotes/code/additionalemotes/turf_emote.dm +++ b/modular_skyrat/modules/emotes/code/additionalemotes/turf_emote.dm @@ -62,12 +62,10 @@ if(tail.fluffy) user.allowed_turfs += "tails" - if(human_user.dna.species.mutant_bodyparts["taur"]) - var/name = human_user.dna.species.mutant_bodyparts["taur"][MUTANT_INDEX_NAME] - var/datum/sprite_accessory/taur/taur = GLOB.sprite_accessories["taur"][name] - if(taur.taur_mode & STYLE_TAUR_SNAKE) - user.allowed_turfs -= list("pawprint", "hoofprint", "clawprint") - user.allowed_turfs += "constrict" + var/taur_mode = human_user.get_taur_mode() + if(taur_mode & STYLE_TAUR_SNAKE) + user.allowed_turfs -= list("pawprint", "hoofprint", "clawprint") + user.allowed_turfs += "constrict" //clothing var/obj/item/shoes = user.get_item_by_slot(ITEM_SLOT_FEET) diff --git a/modular_skyrat/modules/ghostcafe/code/ghost_role_spawners.dm b/modular_skyrat/modules/ghostcafe/code/ghost_role_spawners.dm index 48e61b07b57..2336f4059c6 100644 --- a/modular_skyrat/modules/ghostcafe/code/ghost_role_spawners.dm +++ b/modular_skyrat/modules/ghostcafe/code/ghost_role_spawners.dm @@ -5,12 +5,6 @@ flavour_text = "You are a robot. This probably shouldn't be happening." mob_type = /mob/living/silicon/robot -/obj/effect/mob_spawn/ghost_role/robot/Initialize(mapload) - . = ..() - -/obj/effect/mob_spawn/ghost_role/robot/equip(mob/living/silicon/robot/R) - . = ..() - /obj/effect/mob_spawn/ghost_role/robot/ghostcafe name = "Cafe Robotic Storage" prompt_name = "a ghost cafe robot" @@ -65,7 +59,6 @@ ADD_TRAIT(new_spawn, TRAIT_FREE_GHOST, GHOSTROLE_TRAIT) to_chat(new_spawn,span_warning("Ghosting is free!")) var/datum/action/toggle_dead_chat_mob/D = new(new_spawn) - new_spawn.put_in_hands(new /obj/item/storage/box/syndie_kit/chameleon/ghostcafe, LEFT_HANDS, forced = TRUE) new_spawn.equip_outfit_and_loadout(/datum/outfit/ghostcafe, new_spawn.client.prefs, FALSE, null) SSquirks.AssignQuirks(new_spawn, new_spawn.client, TRUE, TRUE, null, FALSE, new_spawn) D.Grant(new_spawn) @@ -75,6 +68,8 @@ uniform = /obj/item/clothing/under/color/random shoes = /obj/item/clothing/shoes/sneakers/black id = /obj/item/card/id/advanced/ghost_cafe + back = /obj/item/storage/backpack/chameleon + backpack_contents = list(/obj/item/storage/box/syndie_kit/chameleon/ghostcafe = 1) /datum/action/toggle_dead_chat_mob button_icon = 'icons/mob/simple/mob.dmi' @@ -96,6 +91,13 @@ /obj/item/storage/box/syndie_kit/chameleon/ghostcafe name = "cafe costuming kit" desc = "Look just the way you did in life - or better!" + icon_state = "ghostcostuming" + +/obj/item/storage/box/syndie_kit/chameleon/ghostcafe/Initialize(mapload) + . = ..() + atom_storage.max_specific_storage = WEIGHT_CLASS_HUGE // This is ghost cafe only, balance is not given a shit about. + atom_storage.max_slots = 14 // Holds all the starting stuff, plus a bit of change. + atom_storage.max_total_storage = 50 // To actually acommodate the stuff being added. /obj/item/storage/box/syndie_kit/chameleon/ghostcafe/PopulateContents() // Doesn't contain a PDA, for isolation reasons. new /obj/item/clothing/under/chameleon(src) @@ -106,7 +108,6 @@ new /obj/item/clothing/head/chameleon(src) new /obj/item/clothing/mask/chameleon(src) new /obj/item/clothing/neck/chameleon(src) - new /obj/item/storage/backpack/chameleon(src) new /obj/item/storage/belt/chameleon(src) new /obj/item/card/id/advanced/chameleon(src) new /obj/item/hhmirror/syndie(src) diff --git a/modular_skyrat/modules/gladiator/code/game/objects/items/gladiator_items.dm b/modular_skyrat/modules/gladiator/code/game/objects/items/gladiator_items.dm index ffbdae3102f..c50af2b55af 100644 --- a/modular_skyrat/modules/gladiator/code/game/objects/items/gladiator_items.dm +++ b/modular_skyrat/modules/gladiator/code/game/objects/items/gladiator_items.dm @@ -77,16 +77,6 @@ resistance_flags = INDESTRUCTIBLE actions_types = list(/datum/action/item_action/berserk_mode) -/datum/armor/berserker_gatsu - melee = 40 - bullet = 40 - laser = 20 - energy = 25 - bomb = 70 - bio = 100 - fire = 100 - acid = 100 - /obj/item/clothing/head/hooded/berserker/gatsu/Initialize(mapload) . = ..() ADD_TRAIT(src, TRAIT_NODROP, LOCKED_HELMET_TRAIT) @@ -138,6 +128,7 @@ armour_penetration = 35 //this boss is really hard and this sword is really big block_chance = 25 sharpness = SHARP_EDGED + item_flags = NO_BLOOD_ON_ITEM // aughhghghgh this really should be elementized but this works for now var/faction_bonus_force = 100 var/static/list/nemesis_factions = list("mining", "boss") @@ -150,9 +141,6 @@ . = ..() . += span_warning("Tempered against lavaland foes and bosses through supernatural energies. Right click to dodge at the cost of stamina.") -/obj/item/claymore/dragonslayer/add_blood_DNA(list/blood_dna) //110% stain-proof! or so they tell me - return FALSE - /obj/item/claymore/dragonslayer/attack(mob/living/target, mob/living/carbon/human/user) var/is_nemesis_faction = FALSE for(var/found_faction in target.faction) diff --git a/modular_skyrat/modules/hev_suit/code/hev_suit.dm b/modular_skyrat/modules/hev_suit/code/hev_suit.dm index dd8bb205927..533e4722e5e 100644 --- a/modular_skyrat/modules/hev_suit/code/hev_suit.dm +++ b/modular_skyrat/modules/hev_suit/code/hev_suit.dm @@ -176,17 +176,6 @@ /// On first activation, we play the user a nice song! var/first_use = TRUE -/datum/armor/space_hev_suit - melee = 20 - bullet = 20 - laser = 20 - energy = 20 - bomb = 30 - bio = 40 - fire = 40 - acid = 40 - wound = 10 - /obj/item/clothing/suit/space/hev_suit/Initialize(mapload) . = ..() internal_radio = new(src) @@ -906,17 +895,6 @@ acid_static_cooldown = PCV_COOLDOWN_ACID suit_name = "PCV MARK II" -/datum/armor/hev_suit_pcv - melee = 30 - bullet = 30 - laser = 30 - energy = 30 - bomb = 30 - bio = 20 - fire = 20 - acid = 20 - wound = 10 - /obj/item/clothing/suit/space/hev_suit/pcv/AltClick(mob/living/user) reskin_obj(user) . = ..() diff --git a/modular_skyrat/modules/loadouts/loadout_items/donator/personal/donator_personal.dm b/modular_skyrat/modules/loadouts/loadout_items/donator/personal/donator_personal.dm index c579300f410..e143d01bd25 100644 --- a/modular_skyrat/modules/loadouts/loadout_items/donator/personal/donator_personal.dm +++ b/modular_skyrat/modules/loadouts/loadout_items/donator/personal/donator_personal.dm @@ -617,3 +617,8 @@ name = "Golden Nanotrasen Officer Coat" item_path = /obj/item/clothing/suit/razurathcoat ckeywhitelist = list("razurath") + +/datum/loadout_item/pocket_items/masvedishcigar + name = "Holocigar" + item_path = /obj/item/clothing/mask/holocigarette/masvedishcigar + ckeywhitelist = list("masvedish") diff --git a/modular_skyrat/modules/mapping/code/interdyne_mining.dm b/modular_skyrat/modules/mapping/code/interdyne_mining.dm index 8a05b38f6a4..53e5e6a3967 100644 --- a/modular_skyrat/modules/mapping/code/interdyne_mining.dm +++ b/modular_skyrat/modules/mapping/code/interdyne_mining.dm @@ -9,7 +9,6 @@ circuit = /obj/item/circuitboard/computer/order_console/mining/interdyne forced_express = TRUE express_cost_multiplier = 1 - uses_ltsrbt = FALSE order_categories = list( CATEGORY_MINING, CATEGORY_CONSUMABLES, diff --git a/modular_skyrat/modules/medievalcrate_skyrat/code/vintageitems.dm b/modular_skyrat/modules/medievalcrate_skyrat/code/vintageitems.dm index 44f87bdb2c9..7b70095ceb0 100644 --- a/modular_skyrat/modules/medievalcrate_skyrat/code/vintageitems.dm +++ b/modular_skyrat/modules/medievalcrate_skyrat/code/vintageitems.dm @@ -22,15 +22,6 @@ clothing_flags = null armor_type = /datum/armor/plate_larp -/datum/armor/plate_larp - melee = 10 - bullet = 5 - laser = 5 - energy = 5 - bomb = 5 - fire = 60 - acid = 60 - /obj/item/clothing/shoes/plate/larp/red icon_state = "crusader-red" diff --git a/modular_skyrat/modules/modular_items/code/ciggies.dm b/modular_skyrat/modules/modular_items/code/ciggies.dm index 377686b5eb0..359a90efe4a 100644 --- a/modular_skyrat/modules/modular_items/code/ciggies.dm +++ b/modular_skyrat/modules/modular_items/code/ciggies.dm @@ -31,13 +31,16 @@ var/mob/living/carbon/smoker = owner if(smoked.lit == FALSE) smoked.icon_state = smoked.icon_on + smoked.worn_icon_state = smoked.icon_on smoked.inhand_icon_state = smoked.icon_on smoked.lit = TRUE smoked.name = "lit [smoked.name]" else smoked.icon_state = smoked.icon_off + smoked.worn_icon_state = smoked.icon_off smoked.inhand_icon_state = smoked.icon_off smoked.lit = FALSE smoked.name = copytext_char(smoked.name, 5) //5 == length_char("lit ") + 1 smoked.update_icon() smoker.update_worn_mask() + smoker.update_held_items() diff --git a/modular_skyrat/modules/nanotrasen_rep/code/clothing.dm b/modular_skyrat/modules/nanotrasen_rep/code/clothing.dm index 23f3a7b22ee..d4afe12cf0e 100644 --- a/modular_skyrat/modules/nanotrasen_rep/code/clothing.dm +++ b/modular_skyrat/modules/nanotrasen_rep/code/clothing.dm @@ -49,9 +49,9 @@ icon_state = "beret_badge" /obj/item/clothing/head/beret/centcom_formal/nt_consultant - armor_type = /datum/armor/centcom_formal_nt_consultant + armor_type = /datum/armor/beret_centcom_formal_nt_consultant -/datum/armor/centcom_formal_nt_consultant +/datum/armor/beret_centcom_formal_nt_consultant melee = 15 bullet = 5 laser = 15 @@ -62,9 +62,9 @@ wound = 4 /obj/item/clothing/suit/armor/centcom_formal/nt_consultant - armor_type = /datum/armor/centcom_formal_nt_consultant + armor_type = /datum/armor/armor_centcom_formal_nt_consultant -/datum/armor/centcom_formal_nt_consultant +/datum/armor/armor_centcom_formal_nt_consultant melee = 35 bullet = 30 laser = 30 diff --git a/modular_skyrat/modules/novaya_ert/code/head.dm b/modular_skyrat/modules/novaya_ert/code/head.dm index b8b3891be8d..c3bdf047387 100644 --- a/modular_skyrat/modules/novaya_ert/code/head.dm +++ b/modular_skyrat/modules/novaya_ert/code/head.dm @@ -119,17 +119,6 @@ visor_flags = STOPSPRESSUREDAMAGE slowdown = 0 -/datum/armor/hev_suit_nri - melee = 25 - bullet = 25 - laser = 25 - energy = 25 - bomb = 25 - bio = 20 - fire = 20 - acid = 20 - wound = 10 - /obj/item/clothing/head/helmet/space/hev_suit/nri/captain name = "\improper VOSKHOD-2 powered combat armor helmet" desc = "A black composite polyurea coated graphene-plastitanium helmet with durathread inner padding, complete with a deployable airtight tinted plasmaglass visor and a kevlar-lined respirator system. 'НРИ - Оборонная Коллегия' is imprinted on the back." diff --git a/tgstation.dme b/tgstation.dme index 793fb296be4..81b7029d3b9 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -406,6 +406,7 @@ #include "code\__HELPERS\dates.dm" #include "code\__HELPERS\datums.dm" #include "code\__HELPERS\dna.dm" +#include "code\__HELPERS\duplicating.dm" #include "code\__HELPERS\files.dm" #include "code\__HELPERS\filters.dm" #include "code\__HELPERS\forensics.dm" @@ -674,6 +675,7 @@ #include "code\controllers\subsystem\weather.dm" #include "code\controllers\subsystem\wiremod_composite.dm" #include "code\controllers\subsystem\movement\ai_movement.dm" +#include "code\controllers\subsystem\movement\hyperspace_drift.dm" #include "code\controllers\subsystem\movement\move_handler.dm" #include "code\controllers\subsystem\movement\movement.dm" #include "code\controllers\subsystem\movement\movement_types.dm" @@ -1003,6 +1005,7 @@ #include "code\datums\components\shell.dm" #include "code\datums\components\shielded.dm" #include "code\datums\components\shrink.dm" +#include "code\datums\components\shuttle_cling.dm" #include "code\datums\components\shy.dm" #include "code\datums\components\shy_in_room.dm" #include "code\datums\components\sign_language.dm" @@ -3341,7 +3344,6 @@ #include "code\modules\holiday\foreign_calendar.dm" #include "code\modules\holiday\holidays.dm" #include "code\modules\holiday\nth_week.dm" -#include "code\modules\holodeck\area_copy.dm" #include "code\modules\holodeck\computer.dm" #include "code\modules\holodeck\holo_effect.dm" #include "code\modules\holodeck\holodeck_map_templates.dm" @@ -3652,7 +3654,6 @@ #include "code\modules\mining\machine_unloading.dm" #include "code\modules\mining\mine_items.dm" #include "code\modules\mining\minebot.dm" -#include "code\modules\mining\mining_ltsrbt.dm" #include "code\modules\mining\money_bag.dm" #include "code\modules\mining\ores_coins.dm" #include "code\modules\mining\satchel_ore_boxdm.dm" @@ -5734,7 +5735,6 @@ #include "modular_skyrat\modules\customization\modules\mob\living\living.dm" #include "modular_skyrat\modules\customization\modules\mob\living\living_defines.dm" #include "modular_skyrat\modules\customization\modules\mob\living\living_verbs.dm" -#include "modular_skyrat\modules\customization\modules\mob\living\carbon\carbon_update_icons.dm" #include "modular_skyrat\modules\customization\modules\mob\living\carbon\damage_procs.dm" #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\custom_bodytype.dm" #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\human.dm" @@ -5742,6 +5742,7 @@ #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\human_defines.dm" #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\species.dm" #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\status_procs.dm" +#include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\worn_overlays.dm" #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\MOD_sprite_accessories\mod_accessory_handler.dm" #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\MOD_sprite_accessories\mod_actions.dm" #include "modular_skyrat\modules\customization\modules\mob\living\carbon\human\MOD_sprite_accessories\mod_themes.dm" diff --git a/tgui/packages/tgui/interfaces/NtosPay.tsx b/tgui/packages/tgui/interfaces/NtosPay.tsx index 175a965cfad..4064550661e 100644 --- a/tgui/packages/tgui/interfaces/NtosPay.tsx +++ b/tgui/packages/tgui/interfaces/NtosPay.tsx @@ -82,7 +82,7 @@ const TransferSection = (props, context) => {
{ const CheckoutTab = (props, context) => { const { data, act } = useBackend(context); - const { ltsrbt_available, forced_express, order_datums, total_cost } = data; + const { + purchase_tooltip, + express_tooltip, + forced_express, + order_datums, + total_cost, + } = data; const checkout_list = order_datums.filter((food) => food && (food.amt || 0)); return ( @@ -160,40 +166,19 @@ const CheckoutTab = (props, context) => { fluid icon="plane-departure" content="Purchase" - tooltip={multiline` - Your groceries will arrive at cargo, - and hopefully get delivered by them. - `} + tooltip={purchase_tooltip} tooltipPosition="top" onClick={() => act('purchase')} /> )} - {!!ltsrbt_available && ( - -