Files
necromanceranne d76d2f5438 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>
2025-11-20 22:21:16 -05:00

109 lines
4.5 KiB
Plaintext

/obj/item/storage/belt/holster
name = "shoulder holster"
desc = "A rather plain but still cool looking holster that can hold a handgun."
icon_state = "holster"
inhand_icon_state = "holster"
worn_icon_state = "holster"
alternate_worn_layer = UNDER_SUIT_LAYER
w_class = WEIGHT_CLASS_BULKY
storage_type = /datum/storage/holster
/obj/item/storage/belt/holster/equipped(mob/user, slot)
. = ..()
if(slot & (ITEM_SLOT_BELT|ITEM_SLOT_SUITSTORE))
ADD_CLOTHING_TRAIT(user, TRAIT_GUNFLIP)
/obj/item/storage/belt/holster/dropped(mob/user)
. = ..()
REMOVE_CLOTHING_TRAIT(user, TRAIT_GUNFLIP)
/obj/item/storage/belt/holster/energy
name = "energy shoulder holsters"
desc = "A rather plain pair of shoulder holsters with a bit of insulated padding inside. Designed to hold energy weaponry."
storage_type = /datum/storage/holster/energy
/obj/item/storage/belt/holster/energy/thermal
name = "thermal shoulder holsters"
desc = "A rather plain pair of shoulder holsters with a bit of insulated padding inside. Meant to hold a twinned pair of thermal pistols, but can fit several kinds of energy handguns as well."
/obj/item/storage/belt/holster/energy/thermal/PopulateContents()
generate_items_inside(list(
/obj/item/gun/energy/laser/thermal/inferno = 1,
/obj/item/gun/energy/laser/thermal/cryo = 1,
),src)
/obj/item/storage/belt/holster/energy/disabler
desc = "A rather plain pair of shoulder holsters with a bit of insulated padding inside. Designed to hold energy weaponry. A production stamp indicates that it was shipped with a disabler."
/obj/item/storage/belt/holster/energy/disabler/PopulateContents()
new /obj/item/gun/energy/disabler(src)
/obj/item/storage/belt/holster/energy/laser_pistol
desc = "A rather plain pair of shoulder holsters with a bit of insulated padding inside. Designed to hold energy weaponry. A production stamp indicates that it was shipped with a Type 5C laser pistol."
/obj/item/storage/belt/holster/energy/laser_pistol/PopulateContents()
new /obj/item/gun/energy/laser/pistol(src)
/obj/item/storage/belt/holster/energy/smoothbore
desc = "A rather plain pair of shoulder holsters with a bit of insulated padding inside. Designed to hold energy weaponry. Seems it was meant to fit two smoothbores."
/obj/item/storage/belt/holster/energy/smoothbore/PopulateContents()
generate_items_inside(list(
/obj/item/gun/energy/disabler/smoothbore = 2,
),src)
/obj/item/storage/belt/holster/detective
name = "detective's holster"
desc = "A holster able to carry handguns and some ammo. WARNING: Badasses only."
w_class = WEIGHT_CLASS_BULKY
storage_type = /datum/storage/holster/detective
/obj/item/storage/belt/holster/detective/full/PopulateContents()
generate_items_inside(list(
/obj/item/ammo_box/speedloader/c38 = 2,
/obj/item/gun/ballistic/revolver/c38/detective = 1,
), src)
/obj/item/storage/belt/holster/detective/full/ert
name = "marine's holster"
desc = "Wearing this makes you feel badass, but you suspect it's just a repainted detective's holster from the NT surplus."
icon_state = "syndicate_holster"
inhand_icon_state = "syndicate_holster"
worn_icon_state = "syndicate_holster"
/obj/item/storage/belt/holster/detective/full/ert/PopulateContents()
generate_items_inside(list(
/obj/item/ammo_box/magazine/m45 = 2,
/obj/item/gun/ballistic/automatic/pistol/m1911 = 1,
),src)
/obj/item/storage/belt/holster/chameleon
name = "syndicate holster"
desc = "A hip holster that uses chameleon technology to disguise itself, due to the added chameleon tech, it cannot be mounted onto armor."
icon_state = "syndicate_holster"
inhand_icon_state = "syndicate_holster"
worn_icon_state = "syndicate_holster"
w_class = WEIGHT_CLASS_NORMAL
actions_types = list(/datum/action/item_action/chameleon/change/belt)
storage_type = /datum/storage/holster/chameleon
/obj/item/storage/belt/holster/nukie
name = "operative holster"
desc = "A deep shoulder holster capable of holding almost any form of firearm and its ammo."
icon_state = "syndicate_holster"
inhand_icon_state = "syndicate_holster"
worn_icon_state = "syndicate_holster"
w_class = WEIGHT_CLASS_BULKY
storage_type = /datum/storage/holster/nukie
/obj/item/storage/belt/holster/nukie/cowboy
desc = "A deep shoulder holster capable of holding almost any form of small firearm and its ammo. This one's specialized for handguns."
storage_type = /datum/storage/holster/nukie/cowboy
/obj/item/storage/belt/holster/nukie/cowboy/full/PopulateContents()
generate_items_inside(list(
/obj/item/ammo_box/speedloader/c357 = 2,
/obj/item/gun/ballistic/revolver/cowboy/nuclear = 1,
), src)