From c0f8e7bb5caf95a3dba1bd91ce0086e43d7daf9f Mon Sep 17 00:00:00 2001 From: Hatterhat <31829017+Hatterhat@users.noreply.github.com> Date: Fri, 19 Sep 2025 17:10:35 -0500 Subject: [PATCH] Multiload Second Pass (ft. Speedloaders Will Be Real In 2025) (#92854) ## About The Pull Request Gets, yet again, more granular with multiload capabilities, by introducing `AMMO_BOX_MULTILOAD_OUT_LOADED`; ammo boxes flagged with this can speed-load ammo boxes that are currently inside another gun, like revolver cylinders or internal magazines. To accomodate for this, the previous flag that covered this, `AMMO_BOX_MULTILOAD_OUT` can no longer speedload into currently loaded magazines (e.g. internal magazines, including revolver cylinders). Also implements a base type for speedloaders, moving .38 and .357 speedloaders along with .310 stripper clips to this type, instead of being ammo boxes. Also features an UpdatePaths script for mappers, which is why there's so many files touched - repathing is a pain. Also also adds fancy types for ammo boxes, magazines, and speedloaders, which isn't particularly player-facing. Also also also makes the lionhunter ammo strip for the lionhunter rifle visually three rounds only instead of being perpetually half-full (or half-empty, depending on your pessimism). ## Why It's Good For The Game The hypothetical case of "ammo box that holds shotgun ammo" should probably... not... teleport as much of its ammo as possible into a tube-fed shotgun, but should probably still be okay at reloading magazines that actually go into shotguns. Or something. More relevant, reloading BR-38 magazines with speedloaders, while funny, probably also shouldn't be teleporting in six fresh rounds. ## Changelog :cl: balance: General ammo boxes (not speedloaders, not stripper clips) can no longer multiload into currently loaded magazines (revolver cylinders, internal magazines). balance: Speedloaders are now a separate type from ammo boxes, and can only multiload into currently loaded magazines e.g. revolver cylinders. qol: Ammo boxes, magazines, and speedloaders now have fancier types for spawning in by admins. sprite: Lionhunter ammo clips are visually smaller now. /:cl: --------- Co-authored-by: Hatterhat --- .../SpaceRuins/dangerous_research.dmm | 6 +- _maps/RandomRuins/SpaceRuins/oldstation.dmm | 4 +- _maps/RandomZLevels/snowdin.dmm | 4 +- .../map_files/IceBoxStation/IceBoxStation.dmm | 2 +- _maps/map_files/MetaStation/MetaStation.dmm | 2 +- _maps/map_files/generic/CentCom.dmm | 4 +- _maps/map_files/tramstation/tramstation.dmm | 2 +- _maps/minigame/basketball/soviet_bear.dmm | 12 +- _maps/minigame/deathmatch/arena_station.dmm | 2 +- _maps/minigame/deathmatch/train.dmm | 8 +- .../minigame/deathmatch/underground_arena.dmm | 2 +- _maps/modular_generic/jungle_m_armory.dmm | 2 +- _maps/modular_generic/station_s_vault.dmm | 2 +- _maps/shuttles/hunter_psyker.dmm | 12 +- _maps/shuttles/hunter_russian.dmm | 10 +- _maps/shuttles/pirate_silverscale.dmm | 8 +- _maps/templates/battlecruiser_starfury.dmm | 6 +- _maps/virtual_domains/meta_central.dmm | 2 +- code/__DEFINES/combat.dm | 12 +- code/__HELPERS/type_processing.dm | 3 + code/datums/storage/subtypes/belts.dm | 2 +- code/datums/storage/subtypes/holsters.dm | 12 +- code/datums/storage/subtypes/pockets.dm | 4 +- .../spawners/random/russian_rifle_spawner.dm | 4 +- code/game/objects/items/storage/holsters.dm | 4 +- .../items/storage/toolboxes/weapons.dm | 6 +- .../game/objects/items/storage/uplink_kits.dm | 4 +- .../crates_lockers/closets/secure/misc.dm | 4 +- .../fugitive/hunters/hunter_outfits.dm | 2 +- .../antagonists/heretic/items/hunter_rifle.dm | 4 +- .../heretic/knowledge/side_blade_rust.dm | 2 +- code/modules/bitrunning/outfits.dm | 2 +- code/modules/cargo/goodies.dm | 6 +- code/modules/cargo/packs/imports.dm | 4 +- code/modules/cargo/packs/security.dm | 8 +- code/modules/clothing/outfits/ert.dm | 6 +- code/modules/clothing/outfits/standard.dm | 4 +- .../modules/deathmatch/deathmatch_loadouts.dm | 6 +- code/modules/jobs/job_types/detective.dm | 12 +- code/modules/jobs/job_types/janitor.dm | 4 +- .../boxes_magazines/_box_magazine.dm | 14 +- .../projectiles/boxes_magazines/ammo_boxes.dm | 124 ---------------- .../boxes_magazines/speedloaders.dm | 134 ++++++++++++++++++ .../designs/autolathe/security_designs.dm | 2 +- .../research/designs/weapon_designs.dm | 12 +- .../modules/uplink/uplink_items/ammunition.dm | 2 +- code/modules/uplink/uplink_items/nukeops.dm | 6 +- icons/obj/weapons/guns/ammo.dmi | Bin 31173 -> 31279 bytes tgstation.dme | 1 + tools/UpdatePaths/92854_speedloaders.txt | 3 + .../Scripts/92854_speedloaders.txt | 3 + 51 files changed, 268 insertions(+), 238 deletions(-) create mode 100644 code/modules/projectiles/boxes_magazines/speedloaders.dm create mode 100644 tools/UpdatePaths/92854_speedloaders.txt create mode 100644 tools/UpdatePaths/Scripts/92854_speedloaders.txt diff --git a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm index 10fde28bef9..a2baaa8dc20 100644 --- a/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm +++ b/_maps/RandomRuins/SpaceRuins/dangerous_research.dmm @@ -1643,8 +1643,8 @@ /obj/structure/rack, /obj/effect/decal/cleanable/dirt, /obj/item/storage/toolbox/mechanical, -/obj/item/ammo_box/c38, -/obj/item/ammo_box/c38, +/obj/item/ammo_box/speedloader/c38, +/obj/item/ammo_box/speedloader/c38, /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 1 }, @@ -3666,7 +3666,7 @@ /obj/structure/window/reinforced/spawner/directional/south, /obj/effect/spawner/random/contraband/permabrig_weapon, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/ammo_box/c38, +/obj/item/ammo_box/speedloader/c38, /obj/effect/turf_decal/tile/dark_red/anticorner, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/dangerous_research) diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index acfff23fc4d..f6091bb08a6 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -5135,8 +5135,8 @@ /obj/item/spess_knife, /obj/item/clothing/suit/armor/vest/old, /obj/item/gun/ballistic/rifle/boltaction, -/obj/item/ammo_box/strilka310, -/obj/item/ammo_box/strilka310, +/obj/item/ammo_box/speedloader/strilka310, +/obj/item/ammo_box/speedloader/strilka310, /turf/open/floor/plating, /area/ruin/space/ancientstation/delta/hall) "BU" = ( diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index 4921760709f..b656d7b4a94 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -2113,8 +2113,8 @@ /area/awaymission/snowdin/post/hydro) "hZ" = ( /obj/item/gun/ballistic/rifle/boltaction, -/obj/item/ammo_box/strilka310, -/obj/item/ammo_box/strilka310, +/obj/item/ammo_box/speedloader/strilka310, +/obj/item/ammo_box/speedloader/strilka310, /obj/structure/closet/secure_closet{ icon_state = "sec"; name = "security officer's locker"; diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 30382d60bb4..dc12a19cd57 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -27753,7 +27753,7 @@ /obj/item/reagent_containers/cup/glass/drinkingglass/shotglass, /obj/item/reagent_containers/cup/glass/drinkingglass/shotglass, /obj/item/gun/ballistic/revolver/russian, -/obj/item/ammo_box/a357, +/obj/item/ammo_box/speedloader/c357, /obj/item/reagent_containers/cup/glass/bottle/vodka/badminka, /obj/effect/turf_decal/bot_white/left, /obj/effect/turf_decal/tile/neutral/fourcorners, diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index f9e4027e127..f79ba93d622 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -43380,7 +43380,7 @@ /obj/item/lazarus_injector, /obj/item/gun/energy/disabler, /obj/item/gun/ballistic/revolver/russian, -/obj/item/ammo_box/a357, +/obj/item/ammo_box/speedloader/c357, /obj/item/clothing/neck/stethoscope, /obj/item/book{ desc = "An undeniably handy book."; diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index dfcce8dc3b2..11fb4bc5caa 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -9129,8 +9129,8 @@ /area/centcom/central_command_areas/courtroom) "QY" = ( /obj/item/storage/box/handcuffs, -/obj/item/ammo_box/a357, -/obj/item/ammo_box/a357, +/obj/item/ammo_box/speedloader/c357, +/obj/item/ammo_box/speedloader/c357, /obj/item/gun/ballistic/revolver/mateba, /obj/structure/table/reinforced, /obj/machinery/firealarm/directional/south, diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 0a3c0e39fec..cf5ca9feafe 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -45154,7 +45154,7 @@ /obj/structure/safe/vault, /obj/item/clothing/head/costume/bearpelt, /obj/item/gun/ballistic/revolver/russian, -/obj/item/ammo_box/a357, +/obj/item/ammo_box/speedloader/c357, /obj/effect/turf_decal/bot_white/left, /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/light/dim/directional/east, diff --git a/_maps/minigame/basketball/soviet_bear.dmm b/_maps/minigame/basketball/soviet_bear.dmm index a612daa3653..f636344c4c0 100644 --- a/_maps/minigame/basketball/soviet_bear.dmm +++ b/_maps/minigame/basketball/soviet_bear.dmm @@ -6,9 +6,9 @@ /area/centcom/basketball) "aw" = ( /obj/structure/table, -/obj/item/ammo_box/strilka310, -/obj/item/ammo_box/strilka310, -/obj/item/ammo_box/strilka310, +/obj/item/ammo_box/speedloader/strilka310, +/obj/item/ammo_box/speedloader/strilka310, +/obj/item/ammo_box/speedloader/strilka310, /obj/effect/turf_decal/stripes/line{ dir = 8 }, @@ -348,9 +348,9 @@ /area/centcom/basketball) "Bd" = ( /obj/structure/table, -/obj/item/ammo_box/strilka310, -/obj/item/ammo_box/strilka310, -/obj/item/ammo_box/strilka310, +/obj/item/ammo_box/speedloader/strilka310, +/obj/item/ammo_box/speedloader/strilka310, +/obj/item/ammo_box/speedloader/strilka310, /turf/open/floor/iron/dark, /area/centcom/basketball) "BJ" = ( diff --git a/_maps/minigame/deathmatch/arena_station.dmm b/_maps/minigame/deathmatch/arena_station.dmm index 1e2b1b57be7..c3fb3ed3903 100644 --- a/_maps/minigame/deathmatch/arena_station.dmm +++ b/_maps/minigame/deathmatch/arena_station.dmm @@ -876,7 +876,7 @@ /area/deathmatch) "Kz" = ( /obj/effect/spawner/random/trash/box, -/obj/item/ammo_box/a357, +/obj/item/ammo_box/speedloader/c357, /turf/open/indestructible/plating, /area/deathmatch) "KC" = ( diff --git a/_maps/minigame/deathmatch/train.dmm b/_maps/minigame/deathmatch/train.dmm index 3f0619d1ab4..d35de7b1a6e 100644 --- a/_maps/minigame/deathmatch/train.dmm +++ b/_maps/minigame/deathmatch/train.dmm @@ -34,7 +34,7 @@ locked = 0 }, /obj/effect/decal/cleanable/fuel_pool/hivis, -/obj/item/ammo_box/c38, +/obj/item/ammo_box/speedloader/c38, /obj/effect/turf_decal/stripes/asteroid/line{ dir = 6 }, @@ -242,7 +242,7 @@ locked = 0 }, /obj/effect/decal/cleanable/fuel_pool/hivis, -/obj/item/ammo_box/c38, +/obj/item/ammo_box/speedloader/c38, /obj/effect/turf_decal/stripes/asteroid/line{ dir = 4 }, @@ -617,7 +617,7 @@ /area/deathmatch) "EX" = ( /obj/structure/lattice/catwalk, -/obj/item/ammo_box/c38/match, +/obj/item/ammo_box/speedloader/c38/match, /turf/open/chasm/true/no_smooth/fake_motion_sand/fast, /area/deathmatch) "Fa" = ( @@ -932,7 +932,7 @@ locked = 0 }, /obj/effect/decal/cleanable/fuel_pool/hivis, -/obj/item/ammo_box/c38, +/obj/item/ammo_box/speedloader/c38, /obj/effect/turf_decal/stripes/asteroid/line{ dir = 4 }, diff --git a/_maps/minigame/deathmatch/underground_arena.dmm b/_maps/minigame/deathmatch/underground_arena.dmm index 4d776acb0b4..cd8d535ad71 100644 --- a/_maps/minigame/deathmatch/underground_arena.dmm +++ b/_maps/minigame/deathmatch/underground_arena.dmm @@ -564,7 +564,7 @@ /area/deathmatch) "Kb" = ( /obj/structure/table/reinforced, -/obj/item/ammo_box/strilka310/surplus, +/obj/item/ammo_box/speedloader/strilka310/surplus, /turf/open/indestructible/dark/smooth_large, /area/deathmatch) "Kr" = ( diff --git a/_maps/modular_generic/jungle_m_armory.dmm b/_maps/modular_generic/jungle_m_armory.dmm index 39090181945..0ba60740059 100644 --- a/_maps/modular_generic/jungle_m_armory.dmm +++ b/_maps/modular_generic/jungle_m_armory.dmm @@ -242,7 +242,7 @@ /obj/effect/turf_decal/siding/wood{ dir = 4 }, -/obj/item/ammo_box/strilka310, +/obj/item/ammo_box/speedloader/strilka310, /obj/effect/decal/cleanable/dirt, /obj/structure/railing/corner/end/flip{ dir = 8 diff --git a/_maps/modular_generic/station_s_vault.dmm b/_maps/modular_generic/station_s_vault.dmm index 774d50d3152..3a621492bb2 100644 --- a/_maps/modular_generic/station_s_vault.dmm +++ b/_maps/modular_generic/station_s_vault.dmm @@ -77,7 +77,7 @@ /obj/effect/turf_decal/trimline/dark_blue/corner{ dir = 8 }, -/obj/item/ammo_box/a357, +/obj/item/ammo_box/speedloader/c357, /obj/item/gun/ballistic/revolver/golden, /turf/open/floor/iron/smooth_corner{ dir = 8 diff --git a/_maps/shuttles/hunter_psyker.dmm b/_maps/shuttles/hunter_psyker.dmm index 476e58ce6f8..2c744e09ec0 100644 --- a/_maps/shuttles/hunter_psyker.dmm +++ b/_maps/shuttles/hunter_psyker.dmm @@ -147,25 +147,25 @@ "gE" = ( /obj/effect/turf_decal/tile/dark_blue/diagonal_edge, /obj/structure/table/reinforced/plasmarglass, -/obj/item/ammo_box/c38/match{ +/obj/item/ammo_box/speedloader/c38/match{ pixel_x = -5; pixel_y = 4 }, -/obj/item/ammo_box/c38/match{ +/obj/item/ammo_box/speedloader/c38/match{ pixel_x = -1; pixel_y = 4 }, -/obj/item/ammo_box/c38/match{ +/obj/item/ammo_box/speedloader/c38/match{ pixel_x = 3; pixel_y = 4 }, -/obj/item/ammo_box/c38/match{ +/obj/item/ammo_box/speedloader/c38/match{ pixel_x = -8 }, -/obj/item/ammo_box/c38/match{ +/obj/item/ammo_box/speedloader/c38/match{ pixel_x = -4 }, -/obj/item/ammo_box/c38/match, +/obj/item/ammo_box/speedloader/c38/match, /turf/open/floor/iron/white/diagonal, /area/shuttle/hunter) "gW" = ( diff --git a/_maps/shuttles/hunter_russian.dmm b/_maps/shuttles/hunter_russian.dmm index 3f3f24fee57..46840f7cdd7 100644 --- a/_maps/shuttles/hunter_russian.dmm +++ b/_maps/shuttles/hunter_russian.dmm @@ -173,10 +173,10 @@ /obj/structure/closet/crate/secure/weapon{ name = "surplus crate" }, -/obj/item/ammo_box/strilka310, -/obj/item/ammo_box/strilka310, -/obj/item/ammo_box/strilka310, -/obj/item/ammo_box/strilka310, +/obj/item/ammo_box/speedloader/strilka310, +/obj/item/ammo_box/speedloader/strilka310, +/obj/item/ammo_box/speedloader/strilka310, +/obj/item/ammo_box/speedloader/strilka310, /turf/open/floor/pod/dark, /area/shuttle/hunter/russian) "qF" = ( @@ -611,7 +611,7 @@ /obj/effect/decal/cleanable/dirt, /obj/item/gun/ballistic/automatic/pistol, /obj/item/ammo_box/magazine/m9mm, -/obj/item/ammo_box/strilka310, +/obj/item/ammo_box/speedloader/strilka310, /obj/item/crowbar, /turf/open/floor/pod/dark, /area/shuttle/hunter/russian) diff --git a/_maps/shuttles/pirate_silverscale.dmm b/_maps/shuttles/pirate_silverscale.dmm index b95c32be7d1..e5780fed0cb 100644 --- a/_maps/shuttles/pirate_silverscale.dmm +++ b/_maps/shuttles/pirate_silverscale.dmm @@ -802,18 +802,18 @@ dir = 8 }, /obj/effect/turf_decal/bot, -/obj/item/ammo_box/strilka310/phasic{ +/obj/item/ammo_box/speedloader/strilka310/phasic{ pixel_y = -5; pixel_x = 5 }, -/obj/item/ammo_box/strilka310/phasic{ +/obj/item/ammo_box/speedloader/strilka310/phasic{ pixel_x = 5 }, -/obj/item/ammo_box/strilka310/phasic{ +/obj/item/ammo_box/speedloader/strilka310/phasic{ pixel_x = -5; pixel_y = -5 }, -/obj/item/ammo_box/strilka310/phasic{ +/obj/item/ammo_box/speedloader/strilka310/phasic{ pixel_x = -5 }, /obj/item/gun/ballistic/rifle/boltaction/prime{ diff --git a/_maps/templates/battlecruiser_starfury.dmm b/_maps/templates/battlecruiser_starfury.dmm index 7f8ab9909db..5dd8929572b 100644 --- a/_maps/templates/battlecruiser_starfury.dmm +++ b/_maps/templates/battlecruiser_starfury.dmm @@ -2221,11 +2221,11 @@ pixel_y = 4 }, /obj/item/ammo_box/c10mm, -/obj/item/ammo_box/a357{ +/obj/item/ammo_box/speedloader/c357{ icon_state = "357-7"; pixel_y = 3 }, -/obj/item/ammo_box/a357{ +/obj/item/ammo_box/speedloader/c357{ icon_state = "357-7"; pixel_x = 2 }, @@ -2376,7 +2376,7 @@ /obj/item/storage/lockbox/medal{ req_access = list("syndicate_leader") }, -/obj/item/ammo_box/a357{ +/obj/item/ammo_box/speedloader/c357{ icon_state = "357-7"; pixel_x = 2 }, diff --git a/_maps/virtual_domains/meta_central.dmm b/_maps/virtual_domains/meta_central.dmm index ee1bfe8d10f..a9879576f73 100644 --- a/_maps/virtual_domains/meta_central.dmm +++ b/_maps/virtual_domains/meta_central.dmm @@ -4083,7 +4083,7 @@ /area/virtual_domain) "Il" = ( /obj/structure/lattice, -/obj/item/ammo_box/strilka310/surplus, +/obj/item/ammo_box/speedloader/strilka310/surplus, /turf/open/space/basic, /area/virtual_domain) "Io" = ( diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index a340e522896..7d9276b08c7 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -236,16 +236,22 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list( // Ammo box multiload defines /// Ammo box does not accept multiload in or out, e.g. ammo box CANNOT transfer multiple casings in one action, either IN or OUT. #define AMMO_BOX_MULTILOAD_NONE 0 -/// Ammo box accepts multiload going in, e.g. ammo box can transfer multiple casings IN at once. +/// Ammo box accepts multiload going in, e.g. a magazine being fed from a stripper clip. #define AMMO_BOX_MULTILOAD_IN (1 << 0) -/// Ammo box accepts multiload going out, e.g. ammo box can transfer multiple casings OUT at once. +/// Ammo box can multiload going out to other ammo boxes, but not loaded magazines, e.g. an ammo box feeding into an unloaded magazine. #define AMMO_BOX_MULTILOAD_OUT (1 << 1) +/// Ammo box can multiload going out into loaded magazines, e.g. a speedloader feeding into a revolver's cylinder or a stripper clip feeding into a loaded magazine. +#define AMMO_BOX_MULTILOAD_OUT_LOADED (1 << 2) /// Ammo box accepts multiload in AND out, e.g. ammo box can transfer multiple casings IN at once *and* OUT at once. -#define AMMO_BOX_MULTILOAD_BOTH AMMO_BOX_MULTILOAD_IN | AMMO_BOX_MULTILOAD_OUT +/// Ammo boxes are assumed to have some variety of magazine loading assistance. +#define AMMO_BOX_MULTILOAD_BOTH (AMMO_BOX_MULTILOAD_IN | AMMO_BOX_MULTILOAD_OUT) +/// Ammo box can accept multiloads, AND can give multiloads to boxes that are loaded or not loaded. Individual stripper clips would count for this. +#define AMMO_BOX_MULTILOAD_ALL (AMMO_BOX_MULTILOAD_IN | AMMO_BOX_MULTILOAD_OUT | AMMO_BOX_MULTILOAD_OUT_LOADED) DEFINE_BITFIELD(ammo_box_multiload, list( "LOAD_IN" = AMMO_BOX_MULTILOAD_IN, "LOAD_OUT" = AMMO_BOX_MULTILOAD_OUT, + "LOAD_OUT_LOADED" = AMMO_BOX_MULTILOAD_OUT_LOADED, )) #define SUPPRESSED_NONE 0 diff --git a/code/__HELPERS/type_processing.dm b/code/__HELPERS/type_processing.dm index 40f21f4b189..180079cf65a 100644 --- a/code/__HELPERS/type_processing.dm +++ b/code/__HELPERS/type_processing.dm @@ -29,6 +29,9 @@ /obj/item/organ = "ORGAN", /obj/item/mod/control = "MODSUIT", /obj/item/mod/module = "MODSUIT_MOD", + /obj/item/ammo_box = "AMMOBOX", + /obj/item/ammo_box/magazine = "AMMOBOX_MAGAZINE", + /obj/item/ammo_box/speedloader = "AMMOBOX_SPEEDLOADER", /obj/item/gun = "GUN", /obj/item/gun/magic = "GUN_MAGIC", /obj/item/gun/energy = "GUN_ENERGY", diff --git a/code/datums/storage/subtypes/belts.dm b/code/datums/storage/subtypes/belts.dm index 37b47169c28..3f3470a0e4c 100644 --- a/code/datums/storage/subtypes/belts.dm +++ b/code/datums/storage/subtypes/belts.dm @@ -323,7 +323,7 @@ /datum/storage/unfathomable_curio/New(atom/parent, max_slots, max_specific_storage, max_total_storage, rustle_sound, remove_rustle_sound) . = ..() set_holdable(list( - /obj/item/ammo_box/strilka310/lionhunter, + /obj/item/ammo_box/speedloader/strilka310/lionhunter, /obj/item/heretic_labyrinth_handbook, /obj/item/bodypart, // Bodyparts are often used in rituals. /obj/item/clothing/neck/eldritch_amulet, diff --git a/code/datums/storage/subtypes/holsters.dm b/code/datums/storage/subtypes/holsters.dm index b3a3189f9ad..e82007fea71 100644 --- a/code/datums/storage/subtypes/holsters.dm +++ b/code/datums/storage/subtypes/holsters.dm @@ -55,9 +55,7 @@ /obj/item/ammo_box/magazine/m45, /obj/item/ammo_box/magazine/m50, /obj/item/gun/ballistic/revolver, - /obj/item/ammo_box/c38, // Revolver speedloaders. - /obj/item/ammo_box/a357, - /obj/item/ammo_box/strilka310, + /obj/item/ammo_box/speedloader, // Speedloaders, which includes stripper clips on a technicality. /obj/item/ammo_box/magazine/toy/pistol, /obj/item/gun/energy/e_gun/mini, /obj/item/gun/energy/disabler, @@ -84,9 +82,7 @@ /obj/item/ammo_box/magazine/m45, /obj/item/ammo_box/magazine/m50, /obj/item/gun/ballistic/revolver, - /obj/item/ammo_box/c38, - /obj/item/ammo_box/a357, - /obj/item/ammo_box/strilka310, + /obj/item/ammo_box/speedloader, /obj/item/ammo_box/magazine/toy/pistol, /obj/item/gun/energy/recharge/ebow, /obj/item/gun/energy/e_gun/mini, @@ -107,9 +103,7 @@ holdables = list( /obj/item/gun, // ALL guns. /obj/item/ammo_box/magazine, // ALL magazines. - /obj/item/ammo_box/c38, //There isn't a speedloader parent type, so I just put these three here by hand. - /obj/item/ammo_box/a357, //I didn't want to just use /obj/item/ammo_box, because then this could hold huge boxes of ammo. - /obj/item/ammo_box/strilka310, + /obj/item/ammo_box/speedloader, // ALL speedloaders (there's 3 types at time of writing so it's probably fine) /obj/item/ammo_casing, // For shotgun shells, rockets, launcher grenades, and a few other things. /obj/item/grenade, // All regular grenades, the big grenade launcher fires these. ) diff --git a/code/datums/storage/subtypes/pockets.dm b/code/datums/storage/subtypes/pockets.dm index 9fc26b542d1..20772274674 100644 --- a/code/datums/storage/subtypes/pockets.dm +++ b/code/datums/storage/subtypes/pockets.dm @@ -213,7 +213,7 @@ /obj/item/reagent_containers/cup/glass/bottle/vodka, /obj/item/reagent_containers/cup/glass/bottle/molotov, /obj/item/reagent_containers/cup/glass/drinkingglass, - /obj/item/ammo_box/strilka310 + /obj/item/ammo_box/speedloader/strilka310 )) ///Void cloak pocket @@ -231,7 +231,7 @@ . = ..() set_holdable( can_hold_list = list( - /obj/item/ammo_box/strilka310/lionhunter, + /obj/item/ammo_box/speedloader/strilka310/lionhunter, /obj/item/bodypart, // Bodyparts are often used in rituals. They're also often normal sized, so you can only fit one. /obj/item/clothing/neck/eldritch_amulet, /obj/item/clothing/neck/heretic_focus, diff --git a/code/game/objects/effects/spawners/random/russian_rifle_spawner.dm b/code/game/objects/effects/spawners/random/russian_rifle_spawner.dm index 84b19f59ee0..bebdab726b0 100644 --- a/code/game/objects/effects/spawners/random/russian_rifle_spawner.dm +++ b/code/game/objects/effects/spawners/random/russian_rifle_spawner.dm @@ -10,7 +10,7 @@ /obj/effect/spawner/random/sakhno/ammo name = ".310 Strilka stripper clip spawner" loot = list( - /obj/item/ammo_box/strilka310/surplus = 80, - /obj/item/ammo_box/strilka310 = 10, + /obj/item/ammo_box/speedloader/strilka310/surplus = 80, + /obj/item/ammo_box/speedloader/strilka310 = 10, /obj/item/food/rationpack = 1, ) diff --git a/code/game/objects/items/storage/holsters.dm b/code/game/objects/items/storage/holsters.dm index 6461a76d040..379d8b1c3bf 100644 --- a/code/game/objects/items/storage/holsters.dm +++ b/code/game/objects/items/storage/holsters.dm @@ -57,7 +57,7 @@ /obj/item/storage/belt/holster/detective/full/PopulateContents() generate_items_inside(list( - /obj/item/ammo_box/c38 = 2, + /obj/item/ammo_box/speedloader/c38 = 2, /obj/item/gun/ballistic/revolver/c38/detective = 1, ), src) @@ -99,7 +99,7 @@ /obj/item/storage/belt/holster/nukie/cowboy/full/PopulateContents() generate_items_inside(list( - /obj/item/ammo_box/a357 = 2, + /obj/item/ammo_box/speedloader/c357 = 2, /obj/item/gun/ballistic/revolver/cowboy/nuclear = 1, ), src) diff --git a/code/game/objects/items/storage/toolboxes/weapons.dm b/code/game/objects/items/storage/toolboxes/weapons.dm index a16e4b9cfbf..b1e13ba58b5 100644 --- a/code/game/objects/items/storage/toolboxes/weapons.dm +++ b/code/game/objects/items/storage/toolboxes/weapons.dm @@ -39,10 +39,10 @@ name = ".310 Strilka ammo box (Surplus?)" desc = "It contains a few clips. Goddamn, this thing smells awful. \ Has this been sitting in a warehouse for the last several centuries?" - ammo_to_spawn = /obj/item/ammo_box/strilka310 + ammo_to_spawn = /obj/item/ammo_box/speedloader/strilka310 /obj/item/storage/toolbox/ammobox/strilka310/surplus - ammo_to_spawn = /obj/item/ammo_box/strilka310/surplus + ammo_to_spawn = /obj/item/ammo_box/speedloader/strilka310/surplus /obj/item/storage/toolbox/ammobox/wt550m9 name = "4.6x30mm ammo box" @@ -196,7 +196,7 @@ /obj/item/storage/toolbox/guncase/revolver name = "revolver gun case" weapon_to_spawn = /obj/item/gun/ballistic/revolver/badass/nuclear - extra_to_spawn = /obj/item/ammo_box/a357 + extra_to_spawn = /obj/item/ammo_box/speedloader/c357 /obj/item/storage/toolbox/guncase/sword_and_board name = "energy sword and shield weapon case" diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 709f3e190b3..53548989384 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -79,8 +79,8 @@ if(KIT_GUN) new /obj/item/gun/ballistic/revolver(src) // 13 tc - new /obj/item/ammo_box/a357(src) // 4tc - new /obj/item/ammo_box/a357(src) + new /obj/item/ammo_box/speedloader/c357(src) // 4tc + new /obj/item/ammo_box/speedloader/c357(src) new /obj/item/storage/belt/holster/chameleon(src) // 1 tc new /obj/item/card/emag/doorjack(src) // 3 tc replaced the emag with the doorjack new /obj/item/grenade/c4(src) // 1 tc diff --git a/code/game/objects/structures/crates_lockers/closets/secure/misc.dm b/code/game/objects/structures/crates_lockers/closets/secure/misc.dm index a0a811fc6c8..c82d4230b0a 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/misc.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/misc.dm @@ -14,8 +14,8 @@ new /obj/item/ammo_box/magazine/m50(src) new /obj/item/gun/ballistic/automatic/pistol/deagle(src) else - new /obj/item/ammo_box/a357(src) - new /obj/item/ammo_box/a357(src) + new /obj/item/ammo_box/speedloader/c357(src) + new /obj/item/ammo_box/speedloader/c357(src) new /obj/item/gun/ballistic/revolver/mateba(src) /obj/structure/closet/secure_closet/ert_com/populate_contents_immediate() diff --git a/code/modules/antagonists/fugitive/hunters/hunter_outfits.dm b/code/modules/antagonists/fugitive/hunters/hunter_outfits.dm index 422c576ed9e..65e22b1ed6c 100644 --- a/code/modules/antagonists/fugitive/hunters/hunter_outfits.dm +++ b/code/modules/antagonists/fugitive/hunters/hunter_outfits.dm @@ -42,7 +42,7 @@ gloves = /obj/item/clothing/gloves/tackler/combat head = /obj/item/clothing/head/helmet/alt shoes = /obj/item/clothing/shoes/russian - l_pocket = /obj/item/ammo_box/strilka310 + l_pocket = /obj/item/ammo_box/speedloader/strilka310 r_pocket = /obj/item/restraints/handcuffs/cable/zipties id = /obj/item/card/id/advanced/bountyhunter diff --git a/code/modules/antagonists/heretic/items/hunter_rifle.dm b/code/modules/antagonists/heretic/items/hunter_rifle.dm index 43f55b8b77f..b328c3215fc 100644 --- a/code/modules/antagonists/heretic/items/hunter_rifle.dm +++ b/code/modules/antagonists/heretic/items/hunter_rifle.dm @@ -174,10 +174,10 @@ return ..() // Extra ammunition can be made with a heretic ritual. -/obj/item/ammo_box/strilka310/lionhunter +/obj/item/ammo_box/speedloader/strilka310/lionhunter name = "stripper clip (.310 hunter)" desc = "A stripper clip of mysterious, atypical ammo. It doesn't fit into normal ballistic rifles." - icon_state = "310_strip" + icon_state = "lionhunter_strip" ammo_type = /obj/item/ammo_casing/strilka310/lionhunter max_ammo = 3 multiple_sprites = AMMO_BOX_PER_BULLET diff --git a/code/modules/antagonists/heretic/knowledge/side_blade_rust.dm b/code/modules/antagonists/heretic/knowledge/side_blade_rust.dm index 814e8522cdd..8f9a595859f 100644 --- a/code/modules/antagonists/heretic/knowledge/side_blade_rust.dm +++ b/code/modules/antagonists/heretic/knowledge/side_blade_rust.dm @@ -79,7 +79,7 @@ required_atoms = list( /obj/item/ammo_casing = 3, ) - result_atoms = list(/obj/item/ammo_box/strilka310/lionhunter) + result_atoms = list(/obj/item/ammo_box/speedloader/strilka310/lionhunter) cost = 0 research_tree_icon_path = 'icons/obj/weapons/guns/ammo.dmi' diff --git a/code/modules/bitrunning/outfits.dm b/code/modules/bitrunning/outfits.dm index 0da85853f51..f17d02903ec 100644 --- a/code/modules/bitrunning/outfits.dm +++ b/code/modules/bitrunning/outfits.dm @@ -43,7 +43,7 @@ /// Corresponding ammo var/list/corresponding_ammo = list( /obj/item/ammo_box/magazine/m9mm, - /obj/item/ammo_box/strilka310, + /obj/item/ammo_box/speedloader/strilka310, /obj/item/ammo_box/magazine/uzim9mm, /obj/item/ammo_box/magazine/m50, /obj/item/food/pizzaslice/dank, // more silly, less destructive diff --git a/code/modules/cargo/goodies.dm b/code/modules/cargo/goodies.dm index a19a544e22d..4e05e97b3fa 100644 --- a/code/modules/cargo/goodies.dm +++ b/code/modules/cargo/goodies.dm @@ -17,21 +17,21 @@ desc = "Contains one speedloader of .38 DumDum ammunition, good for embedding in soft targets." cost = PAYCHECK_CREW * 2 access_view = ACCESS_WEAPONS - contains = list(/obj/item/ammo_box/c38/dumdum) + contains = list(/obj/item/ammo_box/speedloader/c38/dumdum) /datum/supply_pack/goody/match38 name = ".38 Match Grade Speedloader Single-Pack" desc = "Contains one speedloader of match grade .38 ammunition, perfect for showing off trickshots." cost = PAYCHECK_CREW * 2 access_view = ACCESS_WEAPONS - contains = list(/obj/item/ammo_box/c38/match) + contains = list(/obj/item/ammo_box/speedloader/c38/match) /datum/supply_pack/goody/rubber name = ".38 Rubber Speedloader Single-Pack" desc = "Contains one speedloader of bouncy rubber .38 ammunition, for when you want to bounce your shots off anything and everything." cost = PAYCHECK_CREW * 1.5 access_view = ACCESS_WEAPONS - contains = list(/obj/item/ammo_box/c38/match/bouncy) + contains = list(/obj/item/ammo_box/speedloader/c38/match/bouncy) /datum/supply_pack/goody/dumdum38br name = ".38 DumDum Magazine Single-Pack" diff --git a/code/modules/cargo/packs/imports.dm b/code/modules/cargo/packs/imports.dm index ccbca24f818..d98d1b2ee11 100644 --- a/code/modules/cargo/packs/imports.dm +++ b/code/modules/cargo/packs/imports.dm @@ -224,8 +224,8 @@ cost = CARGO_CRATE_VALUE * 12 contains = list( /obj/item/food/rationpack, - /obj/item/ammo_box/strilka310, - /obj/item/ammo_box/strilka310/surplus, + /obj/item/ammo_box/speedloader/strilka310, + /obj/item/ammo_box/speedloader/strilka310/surplus, /obj/effect/spawner/random/armory/strilka, /obj/item/gun_maintenance_supplies, /obj/item/clothing/suit/armor/vest/russian, diff --git a/code/modules/cargo/packs/security.dm b/code/modules/cargo/packs/security.dm index 409c746aad5..41942e1ba47 100644 --- a/code/modules/cargo/packs/security.dm +++ b/code/modules/cargo/packs/security.dm @@ -11,9 +11,9 @@ access_view = ACCESS_ARMORY contains = list(/obj/item/storage/box/beanbag = 3, /obj/item/storage/box/rubbershot = 3, - /obj/item/ammo_box/c38/trac, - /obj/item/ammo_box/c38/hotshot, - /obj/item/ammo_box/c38/iceblox, + /obj/item/ammo_box/speedloader/c38/trac, + /obj/item/ammo_box/speedloader/c38/hotshot, + /obj/item/ammo_box/speedloader/c38/iceblox, ) crate_name = "ammo crate" @@ -321,7 +321,7 @@ desc = "Contains four tracking implants and three tracking speedloaders of tracing .38 ammo." cost = CARGO_CRATE_VALUE * 4.5 contains = list(/obj/item/storage/box/trackimp, - /obj/item/ammo_box/c38/trac = 3, + /obj/item/ammo_box/speedloader/c38/trac = 3, ) crate_name = "tracking implant crate" diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert.dm index f6774e9b2aa..62655f3153c 100644 --- a/code/modules/clothing/outfits/ert.dm +++ b/code/modules/clothing/outfits/ert.dm @@ -304,8 +304,8 @@ glasses = /obj/item/clothing/glasses/sunglasses gloves = /obj/item/clothing/gloves/color/black shoes = /obj/item/clothing/shoes/sneakers/black - l_pocket = /obj/item/ammo_box/strilka310 - r_pocket = /obj/item/ammo_box/strilka310 + l_pocket = /obj/item/ammo_box/speedloader/strilka310 + r_pocket = /obj/item/ammo_box/speedloader/strilka310 l_hand = /obj/item/gun/ballistic/rifle/boltaction /datum/outfit/centcom/centcom_intern/post_equip(mob/living/carbon/human/H, visuals_only = FALSE) @@ -434,7 +434,7 @@ back = /obj/item/mod/control/pre_equipped/apocryphal box = /obj/item/storage/box/survival/centcom backpack_contents = list( - /obj/item/ammo_box/a357 = 1, + /obj/item/ammo_box/speedloader/c357 = 1, /obj/item/flashlight = 1, /obj/item/grenade/c4/x4 = 1, /obj/item/storage/box/flashbangs = 1, diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 2aa79e3706b..2730af4c636 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -221,7 +221,7 @@ sec_briefcase.contents += new /obj/item/stack/spacecash/c1000 sec_briefcase.contents += new /obj/item/gun/energy/recharge/ebow sec_briefcase.contents += new /obj/item/gun/ballistic/revolver/mateba - sec_briefcase.contents += new /obj/item/ammo_box/a357 + sec_briefcase.contents += new /obj/item/ammo_box/speedloader/c357 sec_briefcase.contents += new /obj/item/grenade/c4/x4 var/obj/item/modular_computer/pda/heads/pda = H.belt @@ -247,7 +247,7 @@ head = /obj/item/clothing/head/hats/centhat mask = /obj/item/cigarette/cigar/cohiba shoes = /obj/item/clothing/shoes/combat/swat - l_pocket = /obj/item/ammo_box/a357 + l_pocket = /obj/item/ammo_box/speedloader/c357 r_pocket = /obj/item/lighter /datum/outfit/centcom/commander/post_equip(mob/living/carbon/human/H, visuals_only = FALSE) diff --git a/code/modules/deathmatch/deathmatch_loadouts.dm b/code/modules/deathmatch/deathmatch_loadouts.dm index 32d66ba3831..bc27f6b0282 100644 --- a/code/modules/deathmatch/deathmatch_loadouts.dm +++ b/code/modules/deathmatch/deathmatch_loadouts.dm @@ -176,7 +176,7 @@ backpack_contents = list( /obj/item/grenade/smokebomb = 2, - /obj/item/ammo_box/strilka310 = 2, + /obj/item/ammo_box/speedloader/strilka310 = 2, ) /datum/outfit/deathmatch_loadout/battler/druid @@ -1071,8 +1071,8 @@ belt = /obj/item/storage/belt/unfathomable_curio gloves = null shoes = /obj/item/clothing/shoes/winterboots/ice_boots - l_pocket = /obj/item/ammo_box/strilka310/lionhunter - r_pocket = /obj/item/ammo_box/strilka310/lionhunter + l_pocket = /obj/item/ammo_box/speedloader/strilka310/lionhunter + r_pocket = /obj/item/ammo_box/speedloader/strilka310/lionhunter back = /obj/item/gun/ballistic/rifle/lionhunter // for his neutral b, he wields a gun diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index 31307efcde1..cb987f0cc91 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -29,12 +29,12 @@ mail_goodies = list( /obj/item/storage/fancy/cigarettes = 25, - /obj/item/ammo_box/c38 = 20, - /obj/item/ammo_box/c38/dumdum = 5, - /obj/item/ammo_box/c38/hotshot = 5, - /obj/item/ammo_box/c38/iceblox = 5, - /obj/item/ammo_box/c38/match = 5, - /obj/item/ammo_box/c38/trac = 5, + /obj/item/ammo_box/speedloader/c38 = 20, + /obj/item/ammo_box/speedloader/c38/dumdum = 5, + /obj/item/ammo_box/speedloader/c38/hotshot = 5, + /obj/item/ammo_box/speedloader/c38/iceblox = 5, + /obj/item/ammo_box/speedloader/c38/match = 5, + /obj/item/ammo_box/speedloader/c38/trac = 5, /obj/item/card/id/advanced/plainclothes = 5, /obj/item/storage/belt/holster/detective/full = 1, ) diff --git a/code/modules/jobs/job_types/janitor.dm b/code/modules/jobs/job_types/janitor.dm index 13a3496c609..2cf5997d32b 100644 --- a/code/modules/jobs/job_types/janitor.dm +++ b/code/modules/jobs/job_types/janitor.dm @@ -47,10 +47,10 @@ . = ..() if(check_holidays(GARBAGEDAY)) backpack_contents += list(/obj/item/gun/ballistic/revolver) - r_pocket = /obj/item/ammo_box/a357 + r_pocket = /obj/item/ammo_box/speedloader/c357 /datum/outfit/job/janitor/get_types_to_preload() . = ..() if(check_holidays(GARBAGEDAY)) . += /obj/item/gun/ballistic/revolver - . += /obj/item/ammo_box/a357 + . += /obj/item/ammo_box/speedloader/c357 diff --git a/code/modules/projectiles/boxes_magazines/_box_magazine.dm b/code/modules/projectiles/boxes_magazines/_box_magazine.dm index f708ec04f6c..f5c123866b3 100644 --- a/code/modules/projectiles/boxes_magazines/_box_magazine.dm +++ b/code/modules/projectiles/boxes_magazines/_box_magazine.dm @@ -30,7 +30,7 @@ var/multiple_sprite_use_base = FALSE ///String, used for checking if ammo of different types but still fits can fit inside it; generally used for magazines var/caliber - /// Determines whether ammo boxes can multiload in or out. + /// Determines whether ammo boxes can multiload in or out. See code/__DEFINES/combat.dm for details. var/ammo_box_multiload = AMMO_BOX_MULTILOAD_BOTH ///Whether the magazine should start with nothing in it @@ -189,7 +189,17 @@ if(did_load) other_box.stored_ammo -= casing num_loaded++ - if(!did_load || !(ammo_box_multiload & AMMO_BOX_MULTILOAD_IN) || !(other_box.ammo_box_multiload & AMMO_BOX_MULTILOAD_OUT)) + // failed to load (full already? ran out of ammo?) + if(!did_load) + break + // this box can't accept being multiloaded into + if(!(ammo_box_multiload & AMMO_BOX_MULTILOAD_IN)) + break + // the other box can't give multiple bullets in one go to an unloaded magazine + if(!isgun(loc) && !(other_box.ammo_box_multiload & AMMO_BOX_MULTILOAD_OUT)) + break + // the other box can't give multiple bullets in one go to a loaded magazine + if(isgun(loc) && !(other_box.ammo_box_multiload & AMMO_BOX_MULTILOAD_OUT_LOADED)) break if(num_loaded) diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm index 42e0ee45e88..4d099d7f34f 100644 --- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm +++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm @@ -1,108 +1,3 @@ -/obj/item/ammo_box/a357 - name = "speed loader (.357)" - desc = "Designed to quickly reload revolvers." - icon_state = "357" - ammo_type = /obj/item/ammo_casing/c357 - max_ammo = 7 - caliber = CALIBER_357 - multiple_sprites = AMMO_BOX_PER_BULLET - item_flags = NO_MAT_REDEMPTION - ammo_band_icon = "+357_ammo_band" - ammo_band_color = null - -/obj/item/ammo_box/a357/match - name = "speed loader (.357 Match)" - desc = "Designed to quickly reload revolvers. These rounds are manufactured within extremely tight tolerances, making them easy to show off trickshots with." - ammo_type = /obj/item/ammo_casing/c357/match - ammo_band_color = "#77828a" - -/obj/item/ammo_box/a357/phasic - name = "speed loader (.357 Phasic)" - desc = "Designed to quickly reload revolvers. Holds phasic ammo, also known as 'Ghost Lead', allowing it to pass through non-organic material." - ammo_type = /obj/item/ammo_casing/c357/phasic - ammo_band_color = "#693a6a" - -/obj/item/ammo_box/a357/heartseeker - name = "speed loader (.357 Heartseeker)" - desc = "Designed to quickly reload revolvers. Holds heartseeker ammo, which veers into targets with exceptional precision using \ - an unknown method. It apparently predicts movement using neural pulses in the brain, but that's less marketable. \ - As seen in the hit NTFlik horror-space western film, Forget-Me-Not! Brought to you by Roseus Galactic!" - ammo_type = /obj/item/ammo_casing/c357/heartseeker - ammo_band_color = "#a91e1e" - -/obj/item/ammo_box/c38 - name = "speed loader (.38)" - desc = "Designed to quickly reload revolvers." - icon_state = "38" - base_icon_state = "38" - ammo_type = /obj/item/ammo_casing/c38 - max_ammo = 6 - caliber = CALIBER_38 - multiple_sprites = AMMO_BOX_PER_BULLET - custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT) - ammo_band_icon = "+38_ammo_band" - ammo_band_color = null - -/obj/item/ammo_box/c38/update_icon_state() - . = ..() - icon_state = "[base_icon_state]-base" - -/obj/item/ammo_box/c38/update_overlays() - . = ..() - if(!LAZYLEN(stored_ammo)) - return - for(var/inserted_ammo in 1 to stored_ammo.len) - var/obj/item/ammo_casing/c38/boolet = stored_ammo[inserted_ammo] - . += "38-[boolet::lead_or_laser]-[inserted_ammo]" - -/obj/item/ammo_box/c38/trac - name = "speed loader (.38 TRAC)" - desc = "Designed to quickly reload revolvers. TRAC bullets embed a tracking implant within the target's body." - ammo_type = /obj/item/ammo_casing/c38/trac - ammo_band_color = COLOR_AMMO_TRACK - -/obj/item/ammo_box/c38/match - name = "speed loader (.38 Match)" - desc = "Designed to quickly reload revolvers. These rounds are manufactured within extremely tight tolerances, making them easy to show off trickshots with." - ammo_type = /obj/item/ammo_casing/c38/match - ammo_band_color = COLOR_AMMO_MATCH - -/obj/item/ammo_box/c38/match/bouncy - name = "speed loader (.38 Rubber)" - desc = "Designed to quickly reload revolvers. These rounds are incredibly bouncy and MOSTLY nonlethal, making them great to show off trickshots with." - ammo_type = /obj/item/ammo_casing/c38/match/bouncy - ammo_band_color = COLOR_AMMO_RUBBER - -/obj/item/ammo_box/c38/true - name = "speed loader (.38 True Strike)" - desc = "Designed to quickly reload revolvers. Bullets bounce towards new targets with surprising accuracy." - ammo_type = /obj/item/ammo_casing/c38/match/true - ammo_band_color = COLOR_AMMO_TRUESTRIKE - -/obj/item/ammo_box/c38/dumdum - name = "speed loader (.38 DumDum)" - desc = "Designed to quickly reload revolvers. These rounds expand on impact, allowing them to shred the target and cause massive bleeding. Very weak against armor and distant targets." - ammo_type = /obj/item/ammo_casing/c38/dumdum - ammo_band_color = COLOR_AMMO_DUMDUM - -/obj/item/ammo_box/c38/hotshot - name = "speed loader (.38 Hot Shot)" - desc = "Designed to quickly reload revolvers. Hot Shot bullets contain an incendiary payload." - ammo_type = /obj/item/ammo_casing/c38/hotshot - ammo_band_color = COLOR_AMMO_HOTSHOT - -/obj/item/ammo_box/c38/iceblox - name = "speed loader (.38 Iceblox)" - desc = "Designed to quickly reload revolvers. Iceblox bullets contain a cryogenic payload." - ammo_type = /obj/item/ammo_casing/c38/iceblox - ammo_band_color = COLOR_AMMO_ICEBLOX - -/obj/item/ammo_box/c38/flare - name = "speed loader (.38 Flare)" - desc = "Designed to quickly reload revolvers. Flare casings launch a concentrated particle beam towards a target, lighting them up for everyone to see." - ammo_type = /obj/item/ammo_casing/c38/flare - ammo_band_color = COLOR_AMMO_HELLFIRE - /obj/item/ammo_box/c9mm name = "ammo box (9mm)" icon_state = "9mmbox" @@ -142,25 +37,6 @@ /obj/item/ammo_box/rocket/can_load(mob/user) return FALSE -/obj/item/ammo_box/strilka310 - name = "stripper clip (.310 Strilka)" - desc = "A stripper clip." - icon_state = "310_strip" - ammo_type = /obj/item/ammo_casing/strilka310 - max_ammo = 5 - caliber = CALIBER_STRILKA310 - multiple_sprites = AMMO_BOX_PER_BULLET - -/obj/item/ammo_box/strilka310/surplus - name = "stripper clip (.310 Surplus)" - ammo_type = /obj/item/ammo_casing/strilka310/surplus - -/obj/item/ammo_box/strilka310/phasic - name = "stripper clip (.310 Phasic)" - desc = "A stripper clip filled with phasic bullets, hastily developed after an incident where a misfire resulted in the destruction of Atrakor Silverscale's priceless Vigoxian Fabergé egg. \ - These fancy bullets pass right though valuables until they end up in a far less expensive human skull." - ammo_type = /obj/item/ammo_casing/strilka310/phasic - /obj/item/ammo_box/n762 name = "ammo box (7.62x38mmR)" icon_state = "10mmbox" diff --git a/code/modules/projectiles/boxes_magazines/speedloaders.dm b/code/modules/projectiles/boxes_magazines/speedloaders.dm new file mode 100644 index 00000000000..0fe437f05b9 --- /dev/null +++ b/code/modules/projectiles/boxes_magazines/speedloaders.dm @@ -0,0 +1,134 @@ +/obj/item/ammo_box/speedloader + name = "speed loader (base type)" + desc = "This shouldn't be here. Report this to a coder, thanks!" + multiple_sprites = AMMO_BOX_PER_BULLET + ammo_box_multiload = (AMMO_BOX_MULTILOAD_IN | AMMO_BOX_MULTILOAD_OUT_LOADED) + // You can feed ammo in from a box (assuming someone ever codes a relevant ammo box), + // you can feed ammo out to a revolver's cylinder, + // but you can't use it to teleport six bullets into a detached rifle magazine. + +/obj/item/ammo_box/speedloader/c357 + name = "speed loader (.357)" + desc = "Designed to quickly reload seven-chamber .357 revolvers." + icon_state = "357" + ammo_type = /obj/item/ammo_casing/c357 + max_ammo = 7 + caliber = CALIBER_357 + item_flags = NO_MAT_REDEMPTION + ammo_band_icon = "+357_ammo_band" + ammo_band_color = null + +/obj/item/ammo_box/speedloader/c357/match + name = "speed loader (.357 Match)" + desc = parent_type::desc + " Match rounds are manufactured within extremely tight tolerances, making them easy to show off trickshots with." + ammo_type = /obj/item/ammo_casing/c357/match + ammo_band_color = "#77828a" + +/obj/item/ammo_box/speedloader/c357/phasic + name = "speed loader (.357 Phasic)" + desc = parent_type::desc + " Phasic rounds, also known as 'Ghost Lead', are specially manufactured to pass through non-organic material. Somehow." + ammo_type = /obj/item/ammo_casing/c357/phasic + ammo_band_color = "#693a6a" + +/obj/item/ammo_box/speedloader/c357/heartseeker + name = "speed loader (.357 Heartseeker)" + desc = parent_type::desc + " Heartseeker rounds veer into targets with exceptional precision using an unknown method. \ + It apparently predicts movement using neural pulses in the brain, but that's less marketable. \ + As seen in the hit NTFlik horror-space western film, Forget-Me-Not, brought to you by Roseus Galactic!" + ammo_type = /obj/item/ammo_casing/c357/heartseeker + ammo_band_color = "#a91e1e" + +/obj/item/ammo_box/speedloader/c38 + name = "speed loader (.38)" + desc = "Designed to quickly reload six-chamber .38 Special revolvers." + icon_state = "38" + base_icon_state = "38" + ammo_type = /obj/item/ammo_casing/c38 + max_ammo = 6 + caliber = CALIBER_38 + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT) + ammo_band_icon = "+38_ammo_band" + ammo_band_color = null + +/obj/item/ammo_box/speedloader/c38/update_icon_state() + . = ..() + icon_state = "[base_icon_state]-base" + +/obj/item/ammo_box/speedloader/c38/update_overlays() + . = ..() + if(!LAZYLEN(stored_ammo)) + return + for(var/inserted_ammo in 1 to stored_ammo.len) + var/obj/item/ammo_casing/c38/boolet = stored_ammo[inserted_ammo] + . += "38-[boolet::lead_or_laser]-[inserted_ammo]" + +/obj/item/ammo_box/speedloader/c38/trac + name = "speed loader (.38 TRAC)" + desc = parent_type::desc + " TRAC bullets embed a tracking implant within the target's body." + ammo_type = /obj/item/ammo_casing/c38/trac + ammo_band_color = COLOR_AMMO_TRACK + +/obj/item/ammo_box/speedloader/c38/match + name = "speed loader (.38 Match)" + desc = parent_type::desc + " Match bullets are manufactured within extremely tight tolerances, making them easy to show off trickshots with." + ammo_type = /obj/item/ammo_casing/c38/match + ammo_band_color = COLOR_AMMO_MATCH + +/obj/item/ammo_box/speedloader/c38/match/bouncy + name = "speed loader (.38 Rubber)" + desc = parent_type::desc + " Rubber rounds are incredibly bouncy and MOSTLY less-lethal, making them great to show off trickshots with." + ammo_type = /obj/item/ammo_casing/c38/match/bouncy + ammo_band_color = COLOR_AMMO_RUBBER + +/obj/item/ammo_box/speedloader/c38/true + name = "speed loader (.38 True Strike)" + desc = parent_type::desc + " True Strike bullets bounce towards new targets with surprising accuracy after ricocheting." + ammo_type = /obj/item/ammo_casing/c38/match/true + ammo_band_color = COLOR_AMMO_TRUESTRIKE + +/obj/item/ammo_box/speedloader/c38/dumdum + name = "speed loader (.38 DumDum)" + desc = parent_type::desc + " DumDum bullets expand on impact, reducing outright stopping power but \ + shredding targets and causing massive bleeding in close range, \ + at the cost of suffering greatly against armor and distant targets." + ammo_type = /obj/item/ammo_casing/c38/dumdum + ammo_band_color = COLOR_AMMO_DUMDUM + +/obj/item/ammo_box/speedloader/c38/hotshot + name = "speed loader (.38 Hot Shot)" + desc = parent_type::desc + " Hot Shot bullets contain an incendiary payload that ignites struck targets." + ammo_type = /obj/item/ammo_casing/c38/hotshot + ammo_band_color = COLOR_AMMO_HOTSHOT + +/obj/item/ammo_box/speedloader/c38/iceblox + name = "speed loader (.38 Iceblox)" + desc = parent_type::desc + " Iceblox bullets contain a cryogenic payload that lower the body temperature of struck targets." + ammo_type = /obj/item/ammo_casing/c38/iceblox + ammo_band_color = COLOR_AMMO_ICEBLOX + +/obj/item/ammo_box/speedloader/c38/flare + name = "speed loader (.38 Flare)" + desc = parent_type::desc + " Flare casings launch a concentrated particle beam towards a target, lighting them up for everyone to see." + ammo_type = /obj/item/ammo_casing/c38/flare + ammo_band_color = COLOR_AMMO_HELLFIRE + +/obj/item/ammo_box/speedloader/strilka310 + name = "stripper clip (.310 Strilka)" + desc = "A five-round stripper clip for .310 Strilka rifles." + icon_state = "310_strip" + ammo_type = /obj/item/ammo_casing/strilka310 + max_ammo = 5 + ammo_box_multiload = AMMO_BOX_MULTILOAD_ALL + caliber = CALIBER_STRILKA310 + +/obj/item/ammo_box/speedloader/strilka310/surplus + name = "stripper clip (.310 Surplus)" + desc = parent_type::desc + " This one has a few spots of rust where there's not excessive amounts of gun grease." + ammo_type = /obj/item/ammo_casing/strilka310/surplus + +/obj/item/ammo_box/speedloader/strilka310/phasic + name = "stripper clip (.310 Phasic)" + desc = parent_type::desc + " These should come with phasic bullets, \ + hastily developed after an incident where a misfire resulted in the destruction of Atrakor Silverscale's priceless Vigoxian Fabergé egg. \ + These fancy bullets pass right though valuables until they end up in a far less expensive human skull." + ammo_type = /obj/item/ammo_casing/strilka310/phasic diff --git a/code/modules/research/designs/autolathe/security_designs.dm b/code/modules/research/designs/autolathe/security_designs.dm index 4115a33f424..c6a96542ef3 100644 --- a/code/modules/research/designs/autolathe/security_designs.dm +++ b/code/modules/research/designs/autolathe/security_designs.dm @@ -27,7 +27,7 @@ id = "c38" build_type = AUTOLATHE materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*3) - build_path = /obj/item/ammo_box/c38 + build_path = /obj/item/ammo_box/speedloader/c38 category = list( RND_CATEGORY_INITIAL, RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO, diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index d0a54cb7d4a..66f550b9055 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -21,7 +21,7 @@ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/ammo_box/c38/trac + build_path = /obj/item/ammo_box/speedloader/c38/trac category = list( RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO ) @@ -36,7 +36,7 @@ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 3, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT * 1.5, ) - build_path = /obj/item/ammo_box/c38/hotshot + build_path = /obj/item/ammo_box/speedloader/c38/hotshot category = list( RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO ) @@ -51,7 +51,7 @@ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 3, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT * 1.5, ) - build_path = /obj/item/ammo_box/c38/iceblox + build_path = /obj/item/ammo_box/speedloader/c38/iceblox category = list( RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO ) @@ -63,7 +63,7 @@ id = "c38_rubber" build_type = PROTOLATHE | AWAY_LATHE materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 3) - build_path = /obj/item/ammo_box/c38/match/bouncy + build_path = /obj/item/ammo_box/speedloader/c38/match/bouncy category = list( RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO ) @@ -78,7 +78,7 @@ /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 3, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT * 1.5, ) - build_path = /obj/item/ammo_box/c38/true + build_path = /obj/item/ammo_box/speedloader/c38/true category = list( RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO ) @@ -94,7 +94,7 @@ /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, ) - build_path = /obj/item/ammo_box/c38/flare + build_path = /obj/item/ammo_box/speedloader/c38/flare category = list( RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_AMMO ) diff --git a/code/modules/uplink/uplink_items/ammunition.dm b/code/modules/uplink/uplink_items/ammunition.dm index 7000fb7e9a7..63853d55745 100644 --- a/code/modules/uplink/uplink_items/ammunition.dm +++ b/code/modules/uplink/uplink_items/ammunition.dm @@ -51,7 +51,7 @@ name = ".357 Speed Loader" desc = "A speed loader that contains seven additional .357 Magnum rounds; usable with the Syndicate revolver. \ For when you really need a lot of things dead." - item = /obj/item/ammo_box/a357 + item = /obj/item/ammo_box/speedloader/c357 cost = 4 purchasable_from = ~(UPLINK_ALL_SYNDIE_OPS | UPLINK_SPY) //nukies get their own version uplink_item_flags = SYNDIE_TRIPS_CONTRABAND diff --git a/code/modules/uplink/uplink_items/nukeops.dm b/code/modules/uplink/uplink_items/nukeops.dm index ed38ef0ac8e..1b83a572ddd 100644 --- a/code/modules/uplink/uplink_items/nukeops.dm +++ b/code/modules/uplink/uplink_items/nukeops.dm @@ -218,7 +218,7 @@ name = ".357 Speed Loader (Revolver)" desc = "A speed loader that contains seven additional .357 Magnum rounds; usable with the Syndicate revolver. \ For when you really need a lot of things dead. Unlike field agents, operatives get a premium price for their speedloaders!" - item = /obj/item/ammo_box/a357 + item = /obj/item/ammo_box/speedloader/c357 purchasable_from = parent_type::purchasable_from | UPLINK_SPY /datum/uplink_item/ammo_nuclear/special/revolver/phasic @@ -226,7 +226,7 @@ desc = "A speed loader that contains seven additional .357 Magnum phasic rounds; usable with the Syndicate revolver. \ These bullets are made from an experimental alloy, 'Ghost Lead', that allows it to pass through almost any non-organic material. \ The name is a misnomer. It doesn't contain any lead whatsoever!" - item = /obj/item/ammo_box/a357/phasic + item = /obj/item/ammo_box/speedloader/c357/phasic purchasable_from = parent_type::purchasable_from | UPLINK_SPY /datum/uplink_item/ammo_nuclear/special/revolver/heartseeker @@ -234,7 +234,7 @@ desc = "A speed loader that contains seven additional .357 Magnum heartseeker rounds; usable with the Syndicate revolver. \ Able to veer straight into targets! Don't miss a shot with heartseeker! As seen in the hit NTFlik horror-space western film, Forget-Me-Not! \ Brought to you by Roseus Galactic!" - item = /obj/item/ammo_box/a357/heartseeker + item = /obj/item/ammo_box/speedloader/c357/heartseeker cost = 3 purchasable_from = parent_type::purchasable_from | UPLINK_SPY diff --git a/icons/obj/weapons/guns/ammo.dmi b/icons/obj/weapons/guns/ammo.dmi index 37533a6cdeb49e7148087888b098976d7e362047..79250688cc415fbb6bc8152057c5b6c7d82b27f8 100644 GIT binary patch literal 31279 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%0A`%y!@d|6;BK}X5Aa-S^rBSd&Q#;e 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