Files
5573612a43 Adds .38 Flare, which is a lethal laser bullet casing available for printing with Advanced Beam Weaponry. Adjust ammo material values. (#91726)
## About The Pull Request


![image](https://github.com/user-attachments/assets/1332d28c-8d5f-41b7-a614-b74027210145)

Adds the .38 Flare. It does 20 damage. This round highlights the target
for 2 minutes, and projectiles hitting the target always hit the limb
that the shooter was aiming at. Your shot has effectively perfect limb
accuracy, no matter how far the bullet needs to travel. This also
affects other projectiles hitting the target that aren't the .38 Flare.

To indicate whether or not a round in a magazine is either lead or
laser, I've borrowed the implementation of ammo overlays from the C-20r
toy magazines Now each bullet in the speedloaders for .38 can be a
distinct type visibly. Might be interesting if anyone wants to add
additional unique appearances for some of the other .38 rounds.

Reduces the overall cost of a lot of the ammunition in the sec and
autolathe, such as loose bullets. Also reduces the material quantity
within bullet casings.

## Why It's Good For The Game

> .38 Flare

By popular demand, I've come up with a new idea. And that idea...is an
anti-bullet deviation tool. Most players are probably not conscious of
bullet deviation. But if you're familiar with the mechanic, it's why
sometimes your shots may hit into an arm or a leg even though you were
aiming at the head.

The way this works is that over the course of a bullets flight, it
increases in inaccuracy and the pobability of drifting into a limb. From
my last estimate, shooting somewhere around 5 tiles away will usually
result in bullet drift.

While affected by the flare shot, that does not happen. You shoot at the
head, you hit the head.

To put it into perspective; you could consider bullet deviation a form
of damage loss (its a bit more complicated than this and there are
instances where it is positive), and this projectile eliminates that
problem for everyone shooting the target.

> Ammo cost

Some of these were pretty excessive for the cost, and a notable example
of this include the .357 loose casings, .310 Surplus loose casings, and
most shotgun shells. These should go down to roughly below 3/5th of a
sheet of metal when printed from a fully upgraded lathe.

Meanwhile, a single bullet casing was like a sheet of metal each, which
didn't seem right to me. So they're now by default one fifth of a sheet
of metal on recycle.

## Changelog
🆑
add: .38 Flare, a laser bullet! Available in both .38 speedloader and
BR-38 magazine once Advanced Beam Weaponry is researched.
add: .38 Flare highlights the target in an outline and makes sure your
bullets never accidentally hit any limb except the one you are aiming
at. Never accidentally hit someone in the arm when you were going for a
headshot.
balance: Reduces the printing costs of several ammunition types from the
autolathe and security lathe. Reduces the overall material contents of
said printed ammo/magazines. If you find a material dupe, let a coder
know.
/🆑

---------

Co-authored-by: projectkepler-RU <99981766+projectkepler-ru@users.noreply.github.com>
Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
2025-07-11 18:04:51 -04:00

88 lines
3.5 KiB
Plaintext

/obj/item/ammo_box/magazine/m223
name = "toploader magazine (.223)"
desc = "A top-loading .223 magazine, suitable for the M-90gl carbine."
icon_state = ".223"
ammo_band_icon = "+.223ab"
ammo_type = /obj/item/ammo_casing/a223
caliber = CALIBER_A223
max_ammo = 30
multiple_sprites = AMMO_BOX_FULL_EMPTY
/obj/item/ammo_box/magazine/m223/phasic
name = "toploader magazine (.223 Phasic)"
desc = parent_type::desc + "<br>Carries phasic rounds, which completely ignore armor and phase through cover, but not targets."
ammo_type = /obj/item/ammo_casing/a223/phasic
// .38 (Battle Rifle) //
/obj/item/ammo_box/magazine/m38
name = "battle rifle magazine (.38)"
desc = "A .38 magazine for a BR-38 battle rifle."
icon_state = "38mag"
base_icon_state = "38mag"
w_class = WEIGHT_CLASS_NORMAL
ammo_type = /obj/item/ammo_casing/c38
caliber = CALIBER_38
custom_materials = list(
/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 3,
/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT * 1,
)
max_ammo = 15
ammo_band_icon = "+38mag_ammo_band"
ammo_band_color = null
/obj/item/ammo_box/magazine/m38/update_icon_state()
. = ..()
icon_state = "[base_icon_state][ammo_count() ? "-ammo" : ""]"
/obj/item/ammo_box/magazine/m38/empty
start_empty = TRUE
/obj/item/ammo_box/magazine/m38/trac
name = "battle rifle magazine (.38 TRAC)"
desc = parent_type::desc + " TRAC bullets embed a tracking implant within the target's body and are entirely nonlethal."
ammo_type = /obj/item/ammo_casing/c38/trac
ammo_band_color = COLOR_AMMO_TRACK
/obj/item/ammo_box/magazine/m38/match
name = "battle rifle magazine (.38 Match)"
desc = parent_type::desc + " 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/magazine/m38/match/bouncy
name = "battle rifle magazine (.38 Rubber)"
desc = parent_type::desc + " 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/magazine/m38/true
name = "battle rifle magazine (.38 True Strike)"
desc = parent_type::desc + " 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/magazine/m38/dumdum
name = "battle rifle magazine (.38 DumDum)"
desc = parent_type::desc + " 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/magazine/m38/hotshot
name = "battle rifle magazine (.38 Hot Shot)"
desc = parent_type::desc + " 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/magazine/m38/iceblox
name = "battle rifle magazine (.38 Iceblox)"
desc = parent_type::desc + " Iceblox bullets contain a cryogenic payload."
ammo_type = /obj/item/ammo_casing/c38/iceblox
ammo_band_color = COLOR_AMMO_ICEBLOX
/obj/item/ammo_box/magazine/m38/flare
name = "battle rifle magazine (.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