Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ballistics Firearm Operations Overhaul and New Improvised Firearms #10020

Merged
merged 63 commits into from
Dec 23, 2023
Merged
Show file tree
Hide file tree
Changes from 55 commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
394660c
Adds .41 caliber, lever rifle
VickiMorris Oct 12, 2023
a8db1d0
Piperifle, Recoil, .41 Ammo Box
VickiMorris Oct 13, 2023
7d92206
Adds TWO_STEP bolt type, refactors bolt rifle code
VickiMorris Oct 13, 2023
919b2ae
FIXES A LOADING FUCKUP
VickiMorris Oct 14, 2023
3e2aea1
New Sprites for Lever Rifle
VickiMorris Oct 14, 2023
8ce7fdb
Proper pipe gun sprites
VickiMorris Oct 14, 2023
d37c5cd
Merge branch 'master' into pipeGuns
VickiMorris Oct 14, 2023
45ca720
Tweaks ballistics.dm & recoil, merges upstream
VickiMorris Oct 14, 2023
7a8aae3
Squashes sprite sheets
VickiMorris Oct 14, 2023
1f697ea
Ups .41 cal damage, improv shotgun nerf
VickiMorris Oct 14, 2023
514505e
Merge branch 'master' into pipeGuns
VickiMorris Oct 15, 2023
0a3172e
Ports slow break action guns
VickiMorris Oct 15, 2023
e19842b
Massively cleans up NO_BOLT cycling, new buckshot
VickiMorris Oct 15, 2023
5d144f1
Shotguns pump like Mosins bolt
VickiMorris Oct 15, 2023
7655c0d
Merge pull request #1 from VickiMorris/master
VickiMorris Oct 15, 2023
451b4d3
Sniper changes, Magazine tweaks, Multiloading
VickiMorris Oct 16, 2023
93a2303
Auto-racking pump action
VickiMorris Oct 16, 2023
0a76fc0
NO_BOLT guns function like they used to (mostly)
VickiMorris Oct 16, 2023
ac16b05
Reimplements 3-Step NO_BOLT guns as new bolt type
VickiMorris Oct 16, 2023
979c7c4
Makes guns not chamber on initialize
VickiMorris Oct 17, 2023
1fe7373
Cleans up code slightly
VickiMorris Oct 18, 2023
6a611bc
the shitcode was coming from INSIDE THE PR
VickiMorris Oct 23, 2023
c694328
Adds Pipe Repeater (SMG), De-Pins Improvised Guns
VickiMorris Oct 23, 2023
f2ec4ed
Pipe SMG Sprites
VickiMorris Oct 23, 2023
c7c02f6
fuck my stupid baka life
VickiMorris Oct 26, 2023
b733f66
(Most) Shotgun Bolt Overlays
VickiMorris Oct 27, 2023
9cbcfc4
Defines the musket, Commit to not lose progress
VickiMorris Oct 30, 2023
4be5157
shitcode compiles, will tear out later
VickiMorris Oct 30, 2023
737ffdc
Removes the shitcode, as promised :)
VickiMorris Oct 31, 2023
57791dd
Minor Tweaks
VickiMorris Nov 1, 2023
8bcce86
Merge branch 'master' into pipeGuns
VickiMorris Nov 7, 2023
b8e5dec
Merge Upstream, Re-Remove Complex NO_BOLT
VickiMorris Nov 7, 2023
5601283
Retypes glasspack shells
VickiMorris Nov 7, 2023
f54084a
Retype a41/paper to a41/improv
VickiMorris Nov 7, 2023
53ff3fd
All Ammo Boxes are now SMALL & Crafting Recipes
VickiMorris Nov 7, 2023
6ed6c8a
In-Hands for Improv Shottie & Pipe Rifle
VickiMorris Nov 7, 2023
10e97ff
Fixes mapping issue?
VickiMorris Nov 7, 2023
58c80f3
Reverts some shotgun ammo changes
VickiMorris Nov 7, 2023
731905b
Inches the lever rifle's lever forward a bit
VickiMorris Nov 7, 2023
b6e3ed3
Cleans up a few remaining touches
VickiMorris Nov 7, 2023
c0c2a00
Further increases range of improv shells
VickiMorris Nov 7, 2023
e1ff7f9
Guts .41 ammo, retypes to a7.62 & .38
VickiMorris Nov 9, 2023
1a51682
Hacksaw available in hacked autolathes
VickiMorris Nov 9, 2023
edb0480
Improv .38, .357
VickiMorris Nov 9, 2023
b5522b8
Removes AP on improv 7.62
VickiMorris Nov 9, 2023
1a2987e
Code Clean-Up Pass 1
VickiMorris Nov 11, 2023
58f1d8a
Merge branch 'BeeStation:master' into pipeGuns
VickiMorris Nov 11, 2023
89882e0
Merge remote-tracking branch 'upstream/master' into pipeGuns
VickiMorris Dec 3, 2023
326e519
Light Balance Tweaks
VickiMorris Dec 3, 2023
9bade30
Fixes my runtime
VickiMorris Dec 3, 2023
d492da2
Derringer's weight tweak
VickiMorris Dec 3, 2023
b711b14
Actually makes the change from the last commit.
VickiMorris Dec 3, 2023
da15c58
Merge branch 'master' into pipeGuns
VickiMorris Dec 19, 2023
b64bf55
Update shotgun.dm
VickiMorris Dec 19, 2023
b077ee7
Update tools.dm
VickiMorris Dec 19, 2023
13be27f
Update tools.dm
VickiMorris Dec 20, 2023
dd5de35
Update autolathe_designs.dm
VickiMorris Dec 20, 2023
fcff4fc
Barrel Stress & Explosions
VickiMorris Dec 21, 2023
6d57835
Vanishing Bullet Shrapnel
VickiMorris Dec 22, 2023
4c17f23
Update shrapnel.dm
VickiMorris Dec 22, 2023
8072bdf
updates barrel stress numbers
VickiMorris Dec 23, 2023
c8d6e09
readability
VickiMorris Dec 23, 2023
3533b77
maybe I should READ first
VickiMorris Dec 23, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions _maps/shuttles/hunter/hunter_russian.dmm

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions code/__DEFINES/combat.dm
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,7 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list(
#define BOLT_TYPE_NO_BOLT 3
#define BOLT_TYPE_LOCKING 4
#define BOLT_TYPE_PUMP 5 //Requires 2 hands to pump, but standard
#define BOLT_TYPE_TWO_STEP 6 //Pump, but each interaction toggles bolt between locked and unlocked
// Sawn off nerfs
#define SAWN_OFF_ACC_PENALTY 25
#define SAWN_OFF_RECOIL 1
Expand Down
138 changes: 137 additions & 1 deletion code/datums/components/crafting/recipes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -371,6 +371,19 @@
subcategory = CAT_AMMO
dangerous_craft = TRUE

/datum/crafting_recipe/improvisedglassslug
name = "Glasspack Shotgun Shell"
result = /obj/item/ammo_casing/shotgun/improvised/glasspack
reqs = list(/obj/item/grenade/chem_grenade = 1,
/obj/item/stack/sheet/glass = 1,
/obj/item/stack/cable_coil = 1,
/datum/reagent/fuel = 10)
tools = list(TOOL_SCREWDRIVER)
time = 5
category = CAT_WEAPONRY
subcategory = CAT_AMMO
dangerous_craft = TRUE

/datum/crafting_recipe/laserslug
name = "Scatter Laser Shell"
result = /obj/item/ammo_casing/shotgun/laserslug
Expand All @@ -383,6 +396,99 @@
subcategory = CAT_AMMO
dangerous_craft = TRUE

/datum/crafting_recipe/a762improv
name = "Improvised 7.62 Cartridge"
result = /obj/item/ammo_casing/a762/improv
reqs = list(/obj/item/grenade/chem_grenade = 1,
/obj/item/stack/sheet/iron = 1,
/obj/item/stack/cable_coil = 1,
/datum/reagent/fuel = 10)
tools = list(TOOL_SCREWDRIVER)
time = 5
category = CAT_WEAPONRY
subcategory = CAT_AMMO
dangerous_craft = TRUE

/datum/crafting_recipe/a762hotload
name = "Hot-Loaded 7.62 Cartridge"
result = /obj/item/ammo_casing/a762/improv/hotload
reqs = list(/obj/item/grenade/chem_grenade = 1,
/obj/item/stack/sheet/iron = 1,
/obj/item/stack/cable_coil = 1,
/datum/reagent/blackpowder = 10)
tools = list(TOOL_SCREWDRIVER)
time = 5
category = CAT_WEAPONRY
subcategory = CAT_AMMO
dangerous_craft = TRUE

/datum/crafting_recipe/improv9mm_pack
name = "Improvised 9mm Ammo Pack"
result = /obj/item/ammo_box/pouch/c9mm/improv
reqs = list(/obj/item/grenade/chem_grenade = 2,
/obj/item/stack/rods = 3,
/obj/item/stack/cable_coil = 3,
/datum/reagent/fuel = 20,
/obj/item/paper = 1)
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
time = 15
category = CAT_WEAPONRY
subcategory = CAT_AMMO
dangerous_craft = TRUE

/datum/crafting_recipe/improv10mm_pack
name = "Improvised 10mm Ammo Pack"
result = /obj/item/ammo_box/pouch/c10mm/improv
reqs = list(/obj/item/grenade/chem_grenade = 2,
/obj/item/stack/sheet/iron = 2,
/obj/item/stack/cable_coil = 2,
/datum/reagent/fuel = 20,
/obj/item/paper = 1)
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
time = 15
category = CAT_WEAPONRY
subcategory = CAT_AMMO
dangerous_craft = TRUE

/datum/crafting_recipe/improv38_pack
name = "Improvised .38 Ammo Pack"
result = /obj/item/ammo_box/pouch/c38/improv
reqs = list(/obj/item/grenade/chem_grenade = 2,
/obj/item/stack/rods = 2,
/obj/item/stack/cable_coil = 2,
/datum/reagent/fuel = 20,
/obj/item/paper = 1)
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
time = 15
category = CAT_WEAPONRY
subcategory = CAT_AMMO
dangerous_craft = TRUE

/datum/crafting_recipe/improv357
name = "Improvised .357 Cartridge"
result = /obj/item/ammo_casing/a357/improv
reqs = list(/obj/item/grenade/chem_grenade = 1,
/obj/item/stack/sheet/iron = 1,
/obj/item/stack/cable_coil = 2,
/datum/reagent/blackpowder = 10)
tools = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
time = 5
category = CAT_WEAPONRY
subcategory = CAT_AMMO
dangerous_craft = TRUE

/datum/crafting_recipe/pipesmg_mag
name = "Pipe Repeater Magazine"
result = /obj/item/ammo_box/magazine/pipem9mm
reqs = list(/obj/item/grenade/chem_grenade = 1,
/obj/item/stock_parts/matter_bin = 1,
/obj/item/stack/cable_coil = 3,
/obj/item/stack/package_wrap = 3)
tools = list(TOOL_WELDER, TOOL_WIRECUTTER)
time = 50
category = CAT_WEAPONRY
subcategory = CAT_AMMO

/datum/crafting_recipe/arrow
name = "Arrow"
result = /obj/item/ammo_casing/caseless/arrow/wood
Expand Down Expand Up @@ -428,8 +534,38 @@
reqs = list(/obj/item/weaponcrafting/receiver = 1,
/obj/item/pipe = 1,
/obj/item/weaponcrafting/stock = 1,
/obj/item/assembly/igniter = 1,
/obj/item/stack/package_wrap = 5)
tools = list(TOOL_SCREWDRIVER)
tools = list(TOOL_SCREWDRIVER, TOOL_WELDER)
time = 100
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
dangerous_craft = TRUE

/datum/crafting_recipe/piperifle
name = "Singleshot Pipe Rifle"
result = /obj/item/gun/ballistic/rifle/pipe
reqs = list(/obj/item/weaponcrafting/receiver = 1,
/obj/item/pipe = 1,
/obj/item/weaponcrafting/stock = 1,
/obj/item/assembly/igniter = 1,
/obj/item/stack/package_wrap = 5)
tools = list(TOOL_SCREWDRIVER, TOOL_WELDER)
time = 100
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
dangerous_craft = TRUE

/datum/crafting_recipe/pipesmg
name = "Mag-Fed Pipe Repeater"
result = /obj/item/gun/ballistic/automatic/pipe_smg
reqs = list(/obj/item/weaponcrafting/receiver = 1,
/obj/item/pipe = 2,
/obj/item/stack/rods = 2,
/obj/item/stack/sheet/wood = 2,
/obj/item/assembly/igniter = 1,
/obj/item/stack/package_wrap = 5)
tools = list(TOOL_SCREWDRIVER, TOOL_WELDER)
time = 100
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
Expand Down
4 changes: 4 additions & 0 deletions code/game/objects/items/shrapnel.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@
name = "\improper .38 DumDum bullet"
embedding = list(embed_chance=70, fall_chance=7, jostle_chance=7, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.4, pain_mult=5, jostle_pain_mult=6, rip_time=10)

/obj/item/shrapnel/bullet/shotgun/glass // Improvised glasspack shell
name = "glass shard"
embedding = list(embed_chance=60, fall_chance=2, jostle_chance=10, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.3, pain_mult=2, jostle_pain_mult=3, rip_time=8)

/obj/projectile/bullet/shrapnel
name = "flying shrapnel shard"
damage = 9
Expand Down
3 changes: 2 additions & 1 deletion code/modules/projectiles/ammunition/_ammunition.dm
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,8 @@
BB = new projectile_type(src, src)

/obj/item/ammo_casing/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/ammo_box))
//Regular boxes of ammo can sweep shells up from the floor, magazines that get insert into guns do not though
if(istype(I, /obj/item/ammo_box) && !istype(I, /obj/item/ammo_box/magazine))
var/obj/item/ammo_box/box = I
if(isturf(loc))
var/boolets = 0
Expand Down
14 changes: 14 additions & 0 deletions code/modules/projectiles/ammunition/ballistic/pistol.dm
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,14 @@
caliber = "10mm"
projectile_type = /obj/projectile/bullet/c10mm

/obj/item/ammo_casing/c10mm/improv
name = "improvised 10mm bullet casing"
desc = "A handmade 10mm bullet casing."
caliber = "10mm"
projectile_type = /obj/projectile/bullet/c10mm/improv
randomspread = TRUE
variance = 10 //Shit ammo is inaccurate.

/obj/item/ammo_casing/c10mm/ap
name = "10mm armor-piercing bullet casing"
desc = "A 10mm armor-piercing bullet casing."
Expand All @@ -29,6 +37,12 @@
caliber = "9mm"
projectile_type = /obj/projectile/bullet/c9mm

/obj/item/ammo_casing/c9mm/improv
name = "improvised 9mm bullet casing"
desc = "A handmade 9mm bullet casing."
randomspread = TRUE
variance = 10 //Shit ammo is inaccurate.

/obj/item/ammo_casing/c9mm/ap
name = "9mm armor-piercing bullet casing"
desc = "A 9mm armor-piercing bullet casing."
Expand Down
13 changes: 13 additions & 0 deletions code/modules/projectiles/ammunition/ballistic/revolver.dm
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@
caliber = "357"
projectile_type = /obj/projectile/bullet/a357/match

/obj/item/ammo_casing/a357/improv
name = "improv .357 bullet casing"
desc = "An improvised .357 bullet casing."
projectile_type = /obj/projectile/bullet/a357/improv
variance = 15

// 7.62x38mmR (Nagant Revolver)

/obj/item/ammo_casing/n762
Expand Down Expand Up @@ -77,6 +83,13 @@
icon_state = "sS-casing"
projectile_type = /obj/projectile/bullet/c38/emp

/obj/item/ammo_casing/c38/improv
name = "improv .38 bullet casing"
desc = "An improvised .38 bullet casing."
caliber = "38"
projectile_type = /obj/projectile/bullet/c38/improv
variance = 10

/obj/item/ammo_casing/caseless/mime
name = "invisible .38 bullet casing"
icon_state = null
Expand Down
13 changes: 12 additions & 1 deletion code/modules/projectiles/ammunition/ballistic/rifle.dm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// 7.62 (Nagant Rifle)
// 7.62 (Nagant Rifle / Pipe Rifle)

/obj/item/ammo_casing/a762
name = "7.62 bullet casing"
Expand All @@ -7,6 +7,17 @@
caliber = "a762"
projectile_type = /obj/projectile/bullet/a762

/obj/item/ammo_casing/a762/improv
name = "a762 improvised cartridge"
desc = "A handmade 7.62 cartidge, made from metal and some other scraps. It reeks of welding fuel."
icon_state = "762improv"
projectile_type = /obj/projectile/bullet/a762/improv

/obj/item/ammo_casing/a762/improv/hotload
name = "7.62 hotload cartridge"
desc = "A higher quality handmade 7.62 cartridge. It smells like charcoal."
projectile_type = /obj/projectile/bullet/a762/improv/hotload

/obj/item/ammo_casing/a762/enchanted
projectile_type = /obj/projectile/bullet/a762_enchanted

Expand Down
19 changes: 19 additions & 0 deletions code/modules/projectiles/ammunition/ballistic/shotgun.dm
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,30 @@
desc = "A 12 gauge lead slug."
icon_state = "blshell"
caliber = "shotgun"
var/high_power = TRUE
Rukofamicom marked this conversation as resolved.
Show resolved Hide resolved
custom_materials = list(/datum/material/iron=4000)
projectile_type = /obj/projectile/bullet/shotgun_slug

/obj/item/ammo_casing/shotgun/beanbag
name = "beanbag slug"
desc = "A weak beanbag slug for riot control."
icon_state = "bshell"
high_power = FALSE
custom_materials = list(/datum/material/iron=250)
projectile_type = /obj/projectile/bullet/shotgun_beanbag

/obj/item/ammo_casing/shotgun/incendiary
name = "incendiary slug"
desc = "An incendiary-coated shotgun slug."
icon_state = "ishell"
high_power = FALSE
projectile_type = /obj/projectile/bullet/incendiary/shotgun

/obj/item/ammo_casing/shotgun/dragonsbreath
name = "dragonsbreath shell"
desc = "A shotgun shell which fires a spread of incendiary pellets."
icon_state = "ishell2"
high_power = FALSE
projectile_type = /obj/projectile/bullet/incendiary/shotgun/dragonsbreath
pellets = 4
variance = 35
Expand Down Expand Up @@ -68,6 +72,7 @@
name = "rubber shot"
desc = "A shotgun casing filled with densely-packed rubber balls, used to incapacitate crowds from a distance."
icon_state = "bshell"
high_power = FALSE
projectile_type = /obj/projectile/bullet/pellet/shotgun_rubbershot
pellets = 6
variance = 20
Expand All @@ -77,6 +82,7 @@
name = "custom incapacitating shot"
desc = "A shotgun casing filled with... something. used to incapacitate targets."
icon_state = "bountyshell"
high_power = FALSE
projectile_type = /obj/projectile/bullet/pellet/shotgun_incapacitate
pellets = 12//double the pellets, but half the stun power of each, which makes this best for just dumping right in someone's face.
variance = 20
Expand All @@ -86,11 +92,20 @@
name = "improvised shell"
desc = "A shotgun shell improvised from small metal shards. It won't travel as far as a regular shotgun shell, but it will still pack a punch against unarmoured opponents at close ranges."
icon_state = "improvshell"
high_power = FALSE
projectile_type = /obj/projectile/bullet/pellet/shotgun_improvised
custom_materials = list(/datum/material/iron=250)
pellets = 9
variance = 15

/obj/item/ammo_casing/shotgun/improvised/glasspack
name = "improvised glass-packed shell"
desc = "An extremely weak shotgun shell that's been filled with shards of glass instead of metal pellets."
projectile_type = /obj/projectile/bullet/pellet/shotgun_glass
custom_materials = list(/datum/material/iron=100, /datum/material/glass=100)
pellets = 5
variance = 15

/obj/item/ammo_casing/shotgun/ion
name = "ion shell"
desc = "An advanced shotgun shell which uses a subspace ansible crystal to produce an effect similar to a standard ion rifle. \
Expand Down Expand Up @@ -118,6 +133,7 @@
name = "shotgun dart"
desc = "A dart for use in shotguns. Can be injected with up to 30 units of any chemical."
icon_state = "cshell"
high_power = FALSE
projectile_type = /obj/projectile/bullet/dart
var/reagent_amount = 30

Expand All @@ -131,6 +147,7 @@
/obj/item/ammo_casing/shotgun/dart/noreact
name = "cryostasis shotgun dart"
desc = "A dart for use in shotguns, using similar technology as cryostatis beakers to keep internal reagents from reacting. Can be injected with up to 10 units of any chemical."
high_power = FALSE
icon_state = "cnrshell"
reagent_amount = 10

Expand All @@ -140,6 +157,7 @@

/obj/item/ammo_casing/shotgun/dart/bioterror
desc = "A shotgun dart filled with deadly toxins."
high_power = FALSE

/obj/item/ammo_casing/shotgun/dart/bioterror/Initialize(mapload)
. = ..()
Expand All @@ -153,5 +171,6 @@
name = "breaching slug"
desc = "A 12 gauge anti-material slug. Great for breaching airlocks and windows with minimal shots."
icon_state = "breacher"
high_power = FALSE
projectile_type = /obj/projectile/bullet/shotgun_breaching
custom_materials = list(/datum/material/iron=4000)
Loading
Loading