Files
Bubberstation/code/modules/projectiles/ammunition/ballistic/shotgun.dm
necromanceranne df3d6a31ca Reworks flechette into a AP pellet round that does mostly wounds. Adds the Donk Co. 'Donk Spike' flechette round as a surplus round. (#89972)
## About The Pull Request


![image](https://github.com/user-attachments/assets/a9932294-5355-4a75-b64d-cd8350092c21)

Reworks flechette shells from... whatever it was that they were supposed
to be before into an AP pellet round that primarily focuses on wounding
power and embedding power over specifically dealing direct damage (16 as
opposed to buckshot's 30). Useful if you want to maim as a priority.

You can print flechette once science researches Exotic Ammunition.
Nuclear Operatives also get flechette rounds as a Bulldog Shotgun
magazine choice priced as a basic ammunition type.

In addition, you can also acquire Donk Co. 'Donk Spike' flechette
shells. These shells fire plastic darts! They can be purchased by
Nuclear Operatives as a surplus option for Bulldog shotguns. 7 magazines
for the price of one.

Donk Co. 'Donk Spike' flechette was intended to be an alternative to the
standard flechette but failed spectacularly once it hit the market. Due
to a lack of confidence in the product, Donk Co. 'Donk Spike' flechette
now appears in maintenance loot as potential trash, as Donk Co. dumped
it in the millions into various landfills across the sector.

You can also print it if you find the tech in a BEPIS tech disk. 

Does it work? Why don't you take a chance on Donk and find out?

## Why It's Good For The Game

I'm not sure if the person who made the original flechette actually
understood what each of the variables was supposed to be doing or how
they actually worked. A bullet with an excessively negative standard
wound power (for a pellet projectile) and low damage, but then an
excessively high bare wound bonus (for a pellet projectile). But then
some ricochet variables without ricochet being assigned to the bullet...
and a demolition mod on a round meant to be weak against armor?

Nonsensical.

So I've reworked it into two unique rounds. The first serving a
practical purpose and becoming an AP option when the crew typically
begins seeing those options open up (such as x-ray lasers). The same can
be said for nukies, who love AP options, but one focused on lasting
wounds is handy too for keeping someone down. There isn't a milspec
option; so for nukies, this isn't doing nearly as much upfront damage as
buckshot or slugs. You buy this when you want someone not to be
recovered with a LOT of medical attention.

The second being more tongue in cheek, but also giving a surplus option
for Bulldog shotguns, which I think are having ammunition problems even
still. Surplus ammunition might slowly roll out for all the guns, but
I'm mostly focusing on the ones that have some slight price disparity
for total shots compared to other weapons. Also, shooting people full of
plastic is kind of funny.

## Changelog
🆑
balance: Flechette has been reworked into an AP pellet round that embeds
and wounds, but has less actual damage to buckshot. You can print it
once Exotic Ammunition has been researched. Also available to Nuclear
Operatives.
add: Donk Co. 'Donk Spike' flechette rounds. No longer offered by Donk
Co. It can sometimes shows up in trashbins and dumpsters. And operatives
can buy it in bulk if they really feel like it.
/🆑

---------

Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
2025-03-19 08:01:22 +01:00

237 lines
9.4 KiB
Plaintext

// Shotgun
/obj/item/ammo_casing/shotgun
name = "shotgun slug"
desc = "A 12 gauge lead slug."
icon_state = "blshell"
worn_icon_state = "shell"
caliber = CALIBER_SHOTGUN
custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*2)
projectile_type = /obj/projectile/bullet/shotgun_slug
newtonian_force = 1.25
/obj/item/ammo_casing/shotgun/milspec
name = "shotgun milspec slug"
desc = "A 12 gauge milspec lead slug."
projectile_type = /obj/projectile/bullet/shotgun_slug/milspec
/obj/item/ammo_casing/shotgun/executioner
name = "executioner slug"
desc = "A 12 gauge lead slug purpose built to annihilate flesh on impact."
icon_state = "stunshell"
projectile_type = /obj/projectile/bullet/shotgun_slug/executioner
/obj/item/ammo_casing/shotgun/pulverizer
name = "pulverizer slug"
desc = "A 12 gauge lead slug purpose built to annihilate bones on impact."
icon_state = "stunshell"
projectile_type = /obj/projectile/bullet/shotgun_slug/pulverizer
/obj/item/ammo_casing/shotgun/beanbag
name = "beanbag slug"
desc = "A weak beanbag slug for riot control."
icon_state = "bshell"
custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*2.5)
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"
projectile_type = /obj/projectile/bullet/incendiary/shotgun
/obj/item/ammo_casing/shotgun/incendiary/no_trail
name = "precision incendiary slug"
desc = "An incendiary-coated shotgun slug, specially treated to only ignite on impact."
projectile_type = /obj/projectile/bullet/incendiary/shotgun/no_trail
/obj/item/ammo_casing/shotgun/dragonsbreath
name = "dragonsbreath shell"
desc = "A shotgun shell which fires a spread of incendiary pellets."
icon_state = "ishell2"
projectile_type = /obj/projectile/bullet/incendiary/shotgun/dragonsbreath
pellets = 6
variance = 15
randomspread = TRUE
/obj/item/ammo_casing/shotgun/stunslug
name = "taser slug"
desc = "A stunning taser slug."
icon_state = "stunshell"
projectile_type = /obj/projectile/bullet/shotgun_stunslug
custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*2.5)
/obj/item/ammo_casing/shotgun/meteorslug
name = "meteorslug shell"
desc = "A shotgun shell rigged with CMC technology, which launches a massive slug when fired."
icon_state = "mshell"
projectile_type = /obj/projectile/bullet/cannonball/meteorslug
/obj/item/ammo_casing/shotgun/pulseslug
name = "pulse slug"
desc = "A delicate device which can be loaded into a shotgun. The primer acts as a button which triggers the gain medium and fires a powerful \
energy blast. While the heat and power drain limit it to one use, it can still allow an operator to engage targets that ballistic ammunition \
would have difficulty with."
icon_state = "pshell"
projectile_type = /obj/projectile/beam/pulse/shotgun
/obj/item/ammo_casing/shotgun/frag12
name = "FRAG-12 slug"
desc = "A high explosive breaching round for a 12 gauge shotgun."
icon_state = "heshell"
projectile_type = /obj/projectile/bullet/shotgun_frag12
/obj/item/ammo_casing/shotgun/buckshot
name = "buckshot shell"
desc = "A 12 gauge buckshot shell."
icon_state = "gshell"
projectile_type = /obj/projectile/bullet/pellet/shotgun_buckshot
pellets = 6
variance = 15
randomspread = TRUE
/obj/item/ammo_casing/shotgun/buckshot/old
projectile_type = /obj/projectile/bullet/pellet/shotgun_buckshot/old
can_misfire = TRUE
misfire_increment = 2
integrity_damage = 4
/obj/item/ammo_casing/shotgun/buckshot/old/fire_casing(atom/target, mob/living/user, params, distro, quiet, zone_override, spread, atom/fired_from)
. = ..()
if(!fired_from)
return
var/datum/effect_system/fluid_spread/smoke/smoke = new
smoke.set_up(0, holder = fired_from, location = fired_from)
/obj/item/ammo_casing/shotgun/buckshot/milspec
name = "milspec buckshot shell"
desc = "A 12 gauge buckshot shell, used by various paramilitaries and mercernary forces."
projectile_type = /obj/projectile/bullet/pellet/shotgun_buckshot/milspec
/obj/item/ammo_casing/shotgun/buckshot/spent
projectile_type = null
/obj/item/ammo_casing/shotgun/rubbershot
name = "rubber shot"
desc = "A shotgun casing filled with densely-packed rubber balls, used to incapacitate crowds from a distance."
icon_state = "rshell"
projectile_type = /obj/projectile/bullet/pellet/shotgun_rubbershot
pellets = 6
variance = 15
randomspread = TRUE
custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*2)
/obj/item/ammo_casing/shotgun/incapacitate
name = "custom incapacitating shot"
desc = "A shotgun casing filled with... something. used to incapacitate targets."
icon_state = "bountyshell"
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 = 25
custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*2)
/obj/item/ammo_casing/shotgun/flechette
name = "flechette shell"
desc = "A shotgun casing filled with small metal darts. Pokes many tiny holes into meat and kevlar alike. Useful for turning someones insides \
into outsides."
icon_state = "flechette"
projectile_type = /obj/projectile/bullet/pellet/flechette
custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
pellets = 8
variance = 10
/obj/item/ammo_casing/shotgun/flechette/donk
name = "\improper Donk Co. 'Donk Spike' Shell"
desc = "Donk Co., looking to create a new and exciting shell to move onto the open market, invented what they call the 'Donk Spike'. \
A flechette not made from standard ferrous metals. But...plastic. It was a financial failure due to a complete lack of \
confidence in the product. Now there are millions of these things in landfills across the sector. This is one such example. \
Looks like a donk-pocket! Tastes like death!"
icon_state = "flechette_donk"
projectile_type = /obj/projectile/bullet/pellet/flechette/donk
custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2)
pellets = 5
/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. \
The unique properties of the crystal split the pulse into a spread of individually weaker bolts."
icon_state = "ionshell"
projectile_type = /obj/projectile/ion/weak
pellets = 4
variance = 15
randomspread = TRUE
/obj/item/ammo_casing/shotgun/scatterlaser
name = "scatter laser shell"
desc = "An advanced shotgun shell that uses a micro laser to replicate the effects of a scatter laser weapon in a ballistic package."
icon_state = "lshell"
projectile_type = /obj/projectile/beam/scatter
pellets = 6
variance = 15
randomspread = TRUE
/obj/item/ammo_casing/shotgun/scatterlaser/emp_act(severity)
. = ..()
if(isnull(loaded_projectile) || !prob(40/severity))
return
name = "malfunctioning laser shell"
desc = "An advanced shotgun shell that uses a micro laser to replicate the effects of a scatter laser weapon in a ballistic package. The capacitor powering this assembly appears to be smoking."
projectile_type = /obj/projectile/beam/scatter/pathetic
loaded_projectile = new projectile_type(src)
/obj/item/ammo_casing/shotgun/techshell
name = "unloaded technological shell"
desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects."
icon_state = "cshell"
projectile_type = null
/obj/item/ammo_casing/shotgun/techshell/Initialize(mapload)
. = ..()
var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/meteorslug, /datum/crafting_recipe/pulseslug, /datum/crafting_recipe/dragonsbreath, /datum/crafting_recipe/ionslug)
AddElement(
/datum/element/slapcrafting,\
slapcraft_recipes = slapcraft_recipe_list,\
)
/obj/item/ammo_casing/shotgun/dart
name = "shotgun dart"
desc = "A dart for use in shotguns. Can be injected with up to 15 units of any chemical."
icon_state = "cshell"
projectile_type = /obj/projectile/bullet/dart
var/reagent_amount = 15
/obj/item/ammo_casing/shotgun/dart/Initialize(mapload)
. = ..()
create_reagents(reagent_amount, OPENCONTAINER)
/obj/item/ammo_casing/shotgun/dart/attackby()
return
/obj/item/ammo_casing/shotgun/dart/large
name = "XL shotgun dart"
desc = "A dart for use in shotguns. Can be injected with up to 25 units of any chemical."
reagent_amount = 25
/obj/item/ammo_casing/shotgun/dart/bioterror
name = "bioterror dart"
desc = "An improved shotgun dart filled with deadly toxins. Can be injected with up to 30 units of any chemical."
reagent_amount = 30
/obj/item/ammo_casing/shotgun/dart/bioterror/Initialize(mapload)
. = ..()
reagents.add_reagent(/datum/reagent/consumable/ethanol/neurotoxin, 6)
reagents.add_reagent(/datum/reagent/toxin/spore, 6)
reagents.add_reagent(/datum/reagent/toxin/mutetoxin, 6) //;HELP OPS IN MAINT
reagents.add_reagent(/datum/reagent/toxin/coniine, 6)
reagents.add_reagent(/datum/reagent/toxin/sodium_thiopental, 6)
/obj/item/ammo_casing/shotgun/breacher
name = "breaching slug"
desc = "A 12 gauge anti-material slug. Great for breaching airlocks and windows, quickly and efficiently."
icon_state = "breacher"
projectile_type = /obj/projectile/bullet/shotgun_breaching
custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*2)