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

🆑
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.
/🆑

---------

Co-authored-by: Hatterhat <Hatterhat@users.noreply.github.com>
This commit is contained in:
Hatterhat
2025-09-20 08:10:35 +10:00
committed by GitHub
co-authored by Hatterhat
parent 96f319c3d2
commit c0f8e7bb5c
51 changed files with 268 additions and 238 deletions
@@ -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)
+2 -2
View File
@@ -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" = (
+2 -2
View File
@@ -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";
@@ -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,
+1 -1
View File
@@ -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.";
+2 -2
View File
@@ -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,
+1 -1
View File
@@ -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,
+6 -6
View File
@@ -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" = (
+1 -1
View File
@@ -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" = (
+4 -4
View File
@@ -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
},
@@ -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" = (
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+6 -6
View File
@@ -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" = (
+5 -5
View File
@@ -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)
+4 -4
View File
@@ -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{
+3 -3
View File
@@ -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
},
+1 -1
View File
@@ -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" = (
+9 -3
View File
@@ -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
+3
View File
@@ -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",
+1 -1
View File
@@ -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,
+3 -9
View File
@@ -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.
)
+2 -2
View File
@@ -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,
@@ -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,
)
+2 -2
View File
@@ -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)
@@ -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"
@@ -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
@@ -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()
@@ -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
@@ -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
@@ -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'
+1 -1
View File
@@ -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
+3 -3
View File
@@ -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"
+2 -2
View File
@@ -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,
+4 -4
View File
@@ -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"
+3 -3
View File
@@ -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,
+2 -2
View File
@@ -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)
@@ -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
+6 -6
View File
@@ -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,
)
+2 -2
View File
@@ -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
@@ -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)
@@ -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"
@@ -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
@@ -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,
@@ -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
)
@@ -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
+3 -3
View File
@@ -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
Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

+1
View File
@@ -5820,6 +5820,7 @@
#include "code\modules\projectiles\ammunition\special\syringe.dm"
#include "code\modules\projectiles\boxes_magazines\_box_magazine.dm"
#include "code\modules\projectiles\boxes_magazines\ammo_boxes.dm"
#include "code\modules\projectiles\boxes_magazines\speedloaders.dm"
#include "code\modules\projectiles\boxes_magazines\external\grenade.dm"
#include "code\modules\projectiles\boxes_magazines\external\lmg.dm"
#include "code\modules\projectiles\boxes_magazines\external\pistol.dm"
+3
View File
@@ -0,0 +1,3 @@
/obj/item/ammo_box/a357/@SUBTYPES : /obj/item/ammo_box/speedloader/c357/@SUBTYPES{@OLD}
/obj/item/ammo_box/c38/@SUBTYPES : /obj/item/ammo_box/speedloader/c38/@SUBTYPES{@OLD}
/obj/item/ammo_box/strilka310/@SUBTYPES : /obj/item/ammo_box/speedloader/strilka310/@SUBTYPES{@OLD}
@@ -0,0 +1,3 @@
/obj/item/ammo_box/a357/@SUBTYPES : /obj/item/ammo_box/speedloader/c357/@SUBTYPES{@OLD}
/obj/item/ammo_box/c38/@SUBTYPES : /obj/item/ammo_box/speedloader/c38/@SUBTYPES{@OLD}
/obj/item/ammo_box/strilka310/@SUBTYPES : /obj/item/ammo_box/speedloader/strilka310/@SUBTYPES{@OLD}