Laser Gun Update: Deep Lore, Gun Variety, Pew Pew (#93520)

## About The Pull Request

Updates the laser gun into four proper subtypes: Standard, Pistol, Rifle
and Carbine.

<img width="229" height="210" alt="image"
src="https://github.com/user-attachments/assets/12c03076-8ebf-4d87-8c98-6a8cce6821db"
/>

Current sprites are pending a palette change.

**Standard:** Functions as you would expect. Same as ever.

**Pistol**: Lower charge, 20 force, normal sized, recharges faster.

**Carbine**: 15 force, 26 mag, two round burst. Projectiles flight
slightly faster. Cannot dual-wield.

**Rifle**: 20 force. 40 mag. Two round burst. EMP resistant (not
immune). Projectiles fly slightly faster. Cannot dual-wield (not that
you need to).

All but the rifle can be sourced from cargo. You can also buy the sovl
version of the laser gun if you're especially nostalgic.

### Armory Changes

The Armory now can potentially spawn either pistols, carbines or
standard. The weighting leans closer to spawning carbines and standard
as opposed to pistols.

### Lore Dump

The laser line of weapons now all have lore. That rich, deep lore that
every game needs and is totally not important at all to the meat and
potatoes of the game. I'm paid by the hour ($0.00)

### Code Tidying

Lasers are old and a total mess code-wise so we've tidied up while we're
here.

## Why It's Good For The Game

Variety is the spice of life and also some of these weapons could have
used a face lift. Especially the laser carbine. Both functionaltiy wise
and appearance wise.

A bit of randomness in the armory means some rounds might have unique
outcomes compared to others. Sometimes, items in cargo don't see
particularly much use, so peppering in a few random potential deviations
can maybe nudge people to utilize variant gear on future rounds.

I'm obsessed with writing too much information. I blame Hatterhat.

## Changelog
🆑
add: Three variants of the laser gun; Carbine (replacing the existing
one), Pistol and Rifle! Find it (possibly) in your armory today!
balance: The armory laser guns might be different variants of the laser
gun, rather than always being the standard. The standard is the same as
ever, even if it looks different.
add: If you care, the sovl version is available as a goodie. And in the
hands of pirates...
spellcheck: Lore! LORE FOR LASER GUNS! LOOOORE! Examine laser guns
closely and you might learn more about them.
balance: The new set of laser guns come with brand new sprites.
/🆑

---------

Co-authored-by: StaringGasMask <62149527+Exester509@users.noreply.github.com>
This commit is contained in:
necromanceranne
2025-11-20 22:21:16 -05:00
committed by GitHub
co-authored by StaringGasMask
parent 51358855a0
commit d76d2f5438
37 changed files with 480 additions and 92 deletions
+14
View File
@@ -26,6 +26,20 @@
cost = CARGO_CRATE_VALUE
unit_name = "laser gun"
export_types = list(/obj/item/gun/energy/laser)
exclude_types = list(
/obj/item/gun/energy/laser/pistol,
/obj/item/gun/energy/laser/assault,
)
/datum/export/weapon/laser_pistol
cost = CARGO_CRATE_VALUE * 0.2
unit_name = "laser pistol"
export_types = list(/obj/item/gun/energy/laser/pistol)
/datum/export/weapon/laser_assault
cost = CARGO_CRATE_VALUE * 10
unit_name = "assault laser gun"
export_types = list(/obj/item/gun/energy/laser/assault)
/datum/export/weapon/disabler
cost = CARGO_CRATE_VALUE * 0.5
+18 -4
View File
@@ -99,19 +99,33 @@
contains = list(/obj/item/gun/energy/e_gun)
/datum/supply_pack/goody/laser_single
name = "Laser Gun Single-Pack"
desc = "Contains one laser gun, the lethal workhorse of Nanotrasen security everywhere."
name = "Type 5 Laser Gun Single-Pack"
desc = "Contains one Type 5 laser gun, the lethal workhorse of Nanotrasen security everywhere."
cost = PAYCHECK_COMMAND * 6
access_view = ACCESS_WEAPONS
contains = list(/obj/item/gun/energy/laser)
/datum/supply_pack/goody/carbine_single
name = "Laser Carbine Single_Pack"
desc = "Contains one laser carbines, capable of rapidly firing weak lasers."
name = "Type 5R Laser Carbine Single_Pack"
desc = "Contains one laser carbine. Fires a rapid burst of slightly weaker laser projectiles."
cost = PAYCHECK_COMMAND * 8
access_view = ACCESS_WEAPONS
contains = list(/obj/item/gun/energy/laser/carbine)
/datum/supply_pack/goody/laser_pistol_single
name = "Type 5C Laser Pistol Single-Pack"
desc = "Contains one Type 5C laser pistol in an energy shoulder holster. Groovy."
cost = PAYCHECK_COMMAND * 2
access_view = ACCESS_WEAPONS
contains = list(/obj/item/storage/belt/holster/energy/laser_pistol)
/datum/supply_pack/goody/laser_single_soul
name = "Type 3 Laser Gun Single-Pack"
desc = "Contains one Type 3 laser gun. They don't make 'em like they used to."
cost = PAYCHECK_COMMAND * 6
access_view = ACCESS_WEAPONS
contains = list(/obj/item/gun/energy/laser/soul)
/datum/supply_pack/goody/smg_single
name = "Disabler SMG Single_Pack"
desc = "Contains one disabler SMGs, capable of rapidly firing weak disabler beams."
+10 -9
View File
@@ -241,19 +241,20 @@
crate_type = /obj/structure/closet/crate/secure/plasma
/datum/supply_pack/security/armory/laser
name = "Lasers Crate"
desc = "Contains three lethal, high-energy laser guns."
name = "Type 5 Laser Gun Crate"
desc = "Contains three Type 5 laser guns, developed by Nanotrasen. For when the going gets tough, you get going with the \
Type 5 Heat Delivery System. As developed by Nanotrasen."
cost = CARGO_CRATE_VALUE * 4
contains = list(/obj/item/gun/energy/laser = 3)
crate_name = "laser crate"
crate_name = "\improper Type 5 laser crate"
crate_type = /obj/structure/closet/crate/secure/plasma
/datum/supply_pack/security/armory/laser_carbine
name = "Laser Carbine Crate"
desc = "Contains three laser carbines, capable of rapidly firing weak lasers."
name = "Type 5R Laser Carbine Crate"
desc = "Contains three Type 5R laser carbines, developed by Nanotrasen. Fires a rapid burst of slightly weaker laser projectiles."
cost = CARGO_CRATE_VALUE * 9
contains = list(/obj/item/gun/energy/laser/carbine = 3)
crate_name = "laser carbine crate"
crate_name = "\improper Type 5R laser carbine crate"
crate_type = /obj/structure/closet/crate/secure/plasma
/datum/supply_pack/security/armory/disabler_smg
@@ -266,9 +267,9 @@
/datum/supply_pack/security/armory/battle_rifle
name = "NT BR-38 Crate"
desc = "An experimental energy-based ballistic battle rifle. Only available to \
Nanotrasen stations for security purposes. DO NOT RESELL TO OUTSIDE COMPANIES. \
Contains three NT BR-38 rifles and 6 magazines containing .38 Standard."
desc = "An experimental energy-based ballistic battle rifle, as developed by Nanotrasen. \
Only available to Nanotrasen stations for security purposes. DO NOT RESELL TO OUTSIDE \
COMPANIES. Contains three NT BR-38 rifles and 6 magazines containing .38 Standard."
cost = CARGO_CRATE_VALUE * 100
contains = list(
/obj/item/gun/ballistic/automatic/battle_rifle = 3,