Files
Bubberstation/code/modules/research/techweb/nodes/security_nodes.dm
necromanceranne 8f15d0ea2c 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-09 17:11:23 +00:00

126 lines
3.5 KiB
Plaintext

/datum/techweb_node/basic_arms
id = TECHWEB_NODE_BASIC_ARMS
starting_node = TRUE
display_name = "Basic Arms"
description = "Ballistics can be unpredictable in space."
design_ids = list(
"toy_armblade",
"toygun",
"c38_rubber",
"c38_rubber_mag",
"c38_sec",
"c38_mag",
"capbox",
"foam_dart",
"sec_beanbag_slug",
"sec_dart",
"sec_Islug",
"sec_rshot",
)
/datum/techweb_node/sec_equip
id = TECHWEB_NODE_SEC_EQUIP
display_name = "Security Equipment"
description = "All the essentials to subdue a mime."
prereq_ids = list(TECHWEB_NODE_BASIC_ARMS)
design_ids = list(
"secdata",
"mining",
"prisonmanage",
"rdcamera",
"seccamera",
"security_photobooth",
"photobooth",
"scanner_gate",
"pepperspray",
"dragnet_beacon",
"inspector",
"evidencebag",
"zipties",
"seclite",
"electropack",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS)
announce_channels = list(RADIO_CHANNEL_SECURITY)
/datum/techweb_node/riot_supression
id = TECHWEB_NODE_RIOT_SUPRESSION
display_name = "Riot Supression"
description = "When you are on the opposing side of a revolutionary movement."
prereq_ids = list(TECHWEB_NODE_SEC_EQUIP)
design_ids = list(
"clown_firing_pin",
"pin_testing",
"pin_loyalty",
"tele_shield",
"ballistic_shield",
"handcuffs_s",
"bola_energy",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_2_POINTS)
announce_channels = list(RADIO_CHANNEL_SECURITY)
/datum/techweb_node/explosives
id = TECHWEB_NODE_EXPLOSIVES
display_name = "Explosives"
description = "For once, intentional explosions."
prereq_ids = list(TECHWEB_NODE_RIOT_SUPRESSION)
design_ids = list(
"large_grenade",
"adv_grenade",
"pyro_grenade",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS)
required_experiments = list(/datum/experiment/ordnance/explosive/lowyieldbomb)
announce_channels = list(RADIO_CHANNEL_SECURITY, RADIO_CHANNEL_MEDICAL)
/datum/techweb_node/exotic_ammo
id = TECHWEB_NODE_EXOTIC_AMMO
display_name = "Exotic Ammunition"
description = "Specialized bullets designed to ignite, freeze, and inflict various other effects on targets, expanding combat capabilities."
prereq_ids = list(TECHWEB_NODE_EXPLOSIVES)
design_ids = list(
"c38_hotshot",
"c38_hotshot_mag",
"c38_iceblox",
"c38_iceblox_mag",
"c38_trac",
"c38_trac_mag",
"c38_true_strike",
"c38_true_strike_mag",
"techshotshell",
"flechetteshell",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS)
discount_experiments = list(/datum/experiment/ordnance/explosive/highyieldbomb = TECHWEB_TIER_4_POINTS)
announce_channels = list(RADIO_CHANNEL_SECURITY)
/datum/techweb_node/electric_weapons
id = TECHWEB_NODE_ELECTRIC_WEAPONS
display_name = "Electric Weaponry"
description = "Energy-based weaponry designed for both lethal and non-lethal applications."
prereq_ids = list(TECHWEB_NODE_RIOT_SUPRESSION)
design_ids = list(
"stunrevolver",
"ioncarbine",
"temp_gun",
"lasershell",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS)
announce_channels = list(RADIO_CHANNEL_SECURITY)
/datum/techweb_node/beam_weapons
id = TECHWEB_NODE_BEAM_WEAPONS
display_name = "Advanced Beam Weaponry"
description = "So advanced, even engineers are baffled by its operational principles."
prereq_ids = list(TECHWEB_NODE_ELECTRIC_WEAPONS)
design_ids = list(
"xray_laser",
"nuclear_gun",
"c38_flare",
"c38_flare_mag",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_4_POINTS)
announce_channels = list(RADIO_CHANNEL_SECURITY)