Skip to content

Commit

Permalink
Pipegun updates and glowup (tgstation#83063)
Browse files Browse the repository at this point in the history
## About The Pull Request

Updates pipeguns with a brand new set of sprites. Also comes with pipe
pistols; plinkier versions of the pipegun.

![ye
pipeguns](https://github.com/tgstation/tgstation/assets/40847847/dd8ea3db-aa5a-403e-9eca-c3aa2c38b694)


![image](https://github.com/tgstation/tgstation/assets/40847847/9015f1fe-8ed2-4724-844d-7d550d35b890)


![image](https://github.com/tgstation/tgstation/assets/40847847/0d99551a-ecc4-4f2b-a397-46c5f26437f7)

Alters pipeguns away from utilizing shotgun/rifle ammunition towards a
bespoke junk round ammo. These shells are crafted similarly to current
improvised shells. This also removes improvised shells as a shotgun ammo
type. (these new shells aren't shotgun shells to begin with, they're
more like rifle bullets)

Crafting junk rounds produces an entirely unknown projectile in the
shell. You won't know what you get until you fire the gun. Almost in
every instance, however, the shot is beneficial towards killing things.
And they all do about the same amount of damage, so there is hopefully
never a round you didn't want to fire in the gun. Fighting someone with
a pipegun is usually predictable for what amount of damage it will do,
but any additional effects it might have is going to be an unknown
factor. They also brutalize borgs, which is a quality that improvised
shells had previously.

Pipeguns operate as they did before, and do roughly 40 damage per shot
with the majority of their ammo types (less than what they do currently
with .310). They only have one shell in the gun at a time, so every time
they're fired, they must be reloaded.

Pipe pistols do roughly 15 damage per shot, but hold more ammo than the
bigger pipegun. However, they're more likely to veer off-course.

There are regal versions of each of these weapons, and each are more
potent respective of their general rarity. Having one is going to be a
lot more noteworthy.

### Minor changes

Some more clothing items can carry pipeguns in their suit storage.

The icemoon hermit spawns with a heroic laser musket rather than a regal
pipegun (partially because it is too difficult for the hermit to get
more ammo for their gun, and also because the regal pipegun is a more
powerful weapon than previously)

## Why It's Good For The Game

It has been a few years since I added the pipegun, and time was never
particularly kind to it. There are alternative weapons now with
interesting mechanics of their own. The ammunition it used has changed
considerably. And it simply didn't ever feel like a 'junk gun' in a way
that was fun. The original mechanics added to give it that feeling were
just not fun to experience and were removed. So the pipegun has been
left as 'a shitty version of X'. Even the regal pipegun was, at the end
of the day, a shittier version of either a shotgun or cargo rifle.

It didn't feel right not having some kind of unique quality to using
these weapons that help them express themselves as unpredictable trash
weapons built inside of maintenance. But I expressly didn't want to make
it 'unpredictable' in a way that felt unfair on the person getting shot
either. So just giving it more damage was right out. As a compromise, I
reduced the overall lethality of the weapons while introducing a gimmick
that will appeal to those wanting to play out the role of a homeless
lunatic with a shitty homemade gun stalking maintenance. A 'chaos gun'
so to speak. Maybe that will appeal to people.

## Changelog
:cl:
balance: Reworks pipeguns to use an unpredictable 'junk round'. You
won't know what you're shooting until you fire it.
add: Introduces a pistol version of the pipegun; the pipe pistol. It is
inaccurate and does significantly less damage, but more portable and has
more ammunition in the gun.
image: Updates the visuals of the pipeguns.
balance: Also improves the Regal varieties of these weapons. By a lot.
balance: More articles of clothing can be used to carry pipeguns in suit
storage.
balance: The Icemoon Hermit comes with a Heroic Laser Musket instead of
a Regal Pipegun.
remove: Improvised shells (the shotgun shell) has been replaced with
improvised junk shells (which don't work with shotguns but do work with
pipeguns).
/:cl:

---------

Co-authored-by: Jacquerel <[email protected]>
  • Loading branch information
necromanceranne and Jacquerel authored May 8, 2024
1 parent 946860d commit 6fd6ebd
Show file tree
Hide file tree
Showing 25 changed files with 267 additions and 48 deletions.
2 changes: 1 addition & 1 deletion _maps/RandomRuins/IceRuins/icemoon_underground_hermit.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@
/turf/open/floor/grass/fairy,
/area/ruin/powered/hermit)
"wf" = (
/obj/item/gun/ballistic/rifle/boltaction/pipegun/prime,
/obj/item/gun/energy/laser/musket/prime,
/obj/structure/table/wood,
/obj/item/flashlight/lantern,
/turf/open/floor/wood,
Expand Down
2 changes: 1 addition & 1 deletion _maps/deathmatch/maint_mania.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@
/turf/open/indestructible,
/area/deathmatch)
"zF" = (
/obj/item/ammo_casing/shotgun/improvised,
/obj/effect/spawner/random/junk_shell,
/turf/open/indestructible,
/area/deathmatch)
"AG" = (
Expand Down
2 changes: 1 addition & 1 deletion _maps/map_files/NorthStar/north_star.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -68078,7 +68078,7 @@
/area/station/maintenance/floor1/starboard/fore)
"rxZ" = (
/obj/item/storage/toolbox/maint_kit,
/obj/item/ammo_casing/shotgun/improvised,
/obj/effect/spawner/random/junk_shell,
/turf/open/floor/pod/light,
/area/station/maintenance/floor4/port)
"ryh" = (
Expand Down
2 changes: 2 additions & 0 deletions code/__DEFINES/projectiles.dm
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@
#define CALIBER_HOOK "hook"
/// The caliber used by the changeling tentacle mutation.
#define CALIBER_TENTACLE "tentacle"
/// The caliber used by pipeguns and pipe pistols
#define CALIBER_JUNK "junk"

/// For gunpoints, how many tiles around the target the shooter can roam without losing their shot
#define GUNPOINT_SHOOTER_STRAY_RANGE 2
Expand Down
25 changes: 22 additions & 3 deletions code/datums/components/crafting/ranged_weapon.dm
Original file line number Diff line number Diff line change
Expand Up @@ -181,11 +181,29 @@
/datum/crafting_recipe/pipegun
name = "Pipegun"
result = /obj/item/gun/ballistic/rifle/boltaction/pipegun
reqs = list(/obj/item/weaponcrafting/receiver = 1,
/obj/item/pipe = 1,
reqs = list(
/obj/item/weaponcrafting/receiver = 1,
/obj/item/pipe = 2,
/obj/item/weaponcrafting/stock = 1,
/obj/item/storage/toolbox = 1, // for the screws
/obj/item/stack/sticky_tape = 1,
)
tool_behaviors = list(TOOL_SCREWDRIVER)
time = 5 SECONDS
category = CAT_WEAPON_RANGED

/datum/crafting_recipe/pipepistol
name = "Pipe Pistol"
result = /obj/item/gun/ballistic/rifle/boltaction/pipegun/pistol
reqs = list(
/obj/item/weaponcrafting/receiver = 1,
/obj/item/pipe = 1,
/obj/item/stock_parts/servo = 2,
/obj/item/stack/sheet/mineral/wood = 4,
/obj/item/storage/toolbox = 1, // for the screws
/obj/item/stack/sticky_tape = 1,
)
tool_paths = list(/obj/item/hatchet)
tool_behaviors = list(TOOL_SCREWDRIVER)
time = 5 SECONDS
category = CAT_WEAPON_RANGED
Expand Down Expand Up @@ -229,10 +247,11 @@
/datum/reagent/consumable/grey_bull = 20,
/obj/item/spear = 1,
/obj/item/storage/toolbox = 1,
/obj/item/clothing/head/costume/crown = 1, // Any ol' crown will do
)
tool_behaviors = list(TOOL_SCREWDRIVER)
tool_paths = list(/obj/item/clothing/gloves/color/yellow, /obj/item/clothing/mask/gas, /obj/item/melee/baton/security/cattleprod)
time = 30 SECONDS //contemplate for a bit
time = 15 SECONDS //contemplate for a bit
category = CAT_WEAPON_RANGED
crafting_flags = CRAFT_CHECK_DENSITY | CRAFT_MUST_BE_LEARNED

Expand Down
4 changes: 2 additions & 2 deletions code/datums/components/crafting/weapon_ammo.dm
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@
category = CAT_WEAPON_AMMO

/datum/crafting_recipe/improvisedslug
name = "Improvised Shotgun Shell"
result = /obj/item/ammo_casing/shotgun/improvised
name = "Junk Shell"
result = /obj/effect/spawner/random/junk_shell
reqs = list(
/obj/item/stack/sheet/iron = 2,
/obj/item/stack/cable_coil = 1,
Expand Down
1 change: 1 addition & 0 deletions code/game/objects/items/granters/crafting/pipegun.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
"Did he drop this into a moisture trap? Yuck.",
"Toolboxing techniques, huh? I kinda just want to know how to make the gun.",
"What the hell does he mean by 'ancient warrior tradition'?",
"...the true masters of this place are not those who merely inhabit it...",
)

/obj/item/book/granter/crafting_recipe/dusting/laser_musket_prime
Expand Down
1 change: 1 addition & 0 deletions code/game/objects/items/storage/belt.dm
Original file line number Diff line number Diff line change
Expand Up @@ -730,6 +730,7 @@
/obj/item/ammo_casing/strilka310,
/obj/item/ammo_casing/shotgun,
/obj/item/ammo_casing/a357,
/obj/item/ammo_casing/junk,
))

/obj/item/storage/belt/fannypack
Expand Down
6 changes: 3 additions & 3 deletions code/modules/cargo/bounties/assistant.dm
Original file line number Diff line number Diff line change
Expand Up @@ -198,11 +198,11 @@
wanted_types = list(/obj/item/pneumatic_cannon/ghetto = TRUE)

/datum/bounty/item/assistant/improvised_shells
name = "Improvised Shotgun Shells"
description = "Budget cuts are hitting our security department pretty hard. Send some improvised shotgun shells when you can."
name = "Junk Shells"
description = "Our assistant militia has chewed through all our iron supplies. To stop them making bullets out of station property, we need junk shells, pronto."
reward = CARGO_CRATE_VALUE * 4
required_count = 5
wanted_types = list(/obj/item/ammo_casing/shotgun/improvised = TRUE)
wanted_types = list(/obj/item/ammo_casing/junk = TRUE)

/datum/bounty/item/assistant/flamethrower
name = "Flamethrower"
Expand Down
51 changes: 49 additions & 2 deletions code/modules/clothing/suits/jacket.dm
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,16 @@
desc = "Aviators not included."
icon_state = "bomberjacket"
inhand_icon_state = "brownjsuit"
allowed = list(
/obj/item/flashlight,
/obj/item/tank/internals/emergency_oxygen,
/obj/item/tank/internals/plasmaman,
/obj/item/toy,
/obj/item/storage/fancy/cigarettes,
/obj/item/lighter,
/obj/item/gun/ballistic/rifle/boltaction/pipegun,
/obj/item/radio,
)

/obj/item/clothing/suit/jacket/leather
name = "leather jacket"
Expand All @@ -62,7 +72,19 @@
inhand_icon_state = "hostrench"
resistance_flags = NONE
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/gun/ballistic/revolver/c38/detective, /obj/item/radio)
allowed = list(
/obj/item/flashlight,
/obj/item/tank/internals/emergency_oxygen,
/obj/item/tank/internals/plasmaman,
/obj/item/toy,
/obj/item/storage/fancy/cigarettes,
/obj/item/lighter,
/obj/item/gun/ballistic/automatic/pistol,
/obj/item/gun/ballistic/revolver,
/obj/item/gun/ballistic/revolver/c38/detective,
/obj/item/gun/ballistic/rifle/boltaction/pipegun,
/obj/item/radio,
)

/obj/item/clothing/suit/jacket/leather/biker
name = "biker jacket"
Expand Down Expand Up @@ -96,7 +118,19 @@
desc = "A canvas jacket styled after classical American military garb. Feels sturdy, yet comfortable."
icon_state = "militaryjacket"
inhand_icon_state = null
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/radio)
allowed = list(
/obj/item/flashlight,
/obj/item/tank/internals/emergency_oxygen,
/obj/item/tank/internals/plasmaman,
/obj/item/toy,
/obj/item/storage/fancy/cigarettes,
/obj/item/lighter,
/obj/item/gun/ballistic/automatic/pistol,
/obj/item/gun/ballistic/revolver,
/obj/item/gun/ballistic/revolver/c38/detective,
/obj/item/gun/ballistic/rifle/boltaction/pipegun,
/obj/item/radio,
)

/obj/item/clothing/suit/jacket/letterman
name = "letterman jacket"
Expand All @@ -118,6 +152,19 @@
icon_state = "letterman_s"
inhand_icon_state = null
species_exception = list(/datum/species/golem)
allowed = list(
/obj/item/flashlight,
/obj/item/tank/internals/emergency_oxygen,
/obj/item/tank/internals/plasmaman,
/obj/item/toy,
/obj/item/storage/fancy/cigarettes,
/obj/item/lighter,
/obj/item/gun/ballistic/automatic/pistol,
/obj/item/gun/ballistic/revolver,
/obj/item/gun/ballistic/revolver/c38/detective,
/obj/item/gun/ballistic/rifle/boltaction/pipegun,
/obj/item/radio,
)

/obj/item/clothing/suit/jacket/letterman_nanotrasen
name = "blue letterman jacket"
Expand Down
2 changes: 1 addition & 1 deletion code/modules/clothing/suits/jobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,7 @@
/obj/item/tank/internals/emergency_oxygen,
/obj/item/tank/internals/plasmaman,
/obj/item/t_scanner,
/obj/item/gun/ballistic/rifle/boltaction/pipegun/prime,
/obj/item/gun/ballistic/rifle/boltaction/pipegun,
)
resistance_flags = NONE
species_exception = list(/datum/species/golem)
Expand Down
2 changes: 1 addition & 1 deletion code/modules/clothing/suits/wetfloor.dm
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
allowed = list(
/obj/item/tank/internals/emergency_oxygen,
/obj/item/tank/internals/plasmaman,
/obj/item/gun/ballistic/rifle/boltaction/pipegun/prime,
/obj/item/gun/ballistic/rifle/boltaction/pipegun,
)

/datum/armor/suit_caution
Expand Down
43 changes: 43 additions & 0 deletions code/modules/projectiles/ammunition/ballistic/junk.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
// Junk

/obj/item/ammo_casing/junk
name = "improvised junk round"
desc = "What is in the shell? Shoot it to find out."
icon_state = "improvshell"
caliber = CALIBER_JUNK
projectile_type = /obj/projectile/bullet/junk
custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*2, /datum/material/glass=SMALL_MATERIAL_AMOUNT*1)

// Junk Shell Spawner; used to spawn in our random shells upon crafting

/obj/effect/spawner/random/junk_shell
name = "junk shell spawner"
desc = "Bullet. Bullet Bullet."
icon_state = "junkround"
loot = list(
/obj/item/ammo_casing/junk = 50,
/obj/item/ammo_casing/junk/incendiary = 20,
/obj/item/ammo_casing/junk/shock = 20,
/obj/item/ammo_casing/junk/hunter = 20,
/obj/item/ammo_casing/junk/phasic = 5,
/obj/item/ammo_casing/junk/ripper = 5,
/obj/item/ammo_casing/junk/reaper = 1,
)

/obj/item/ammo_casing/junk/incendiary
projectile_type = /obj/projectile/bullet/incendiary/fire/junk

/obj/item/ammo_casing/junk/phasic
projectile_type = /obj/projectile/bullet/junk/phasic

/obj/item/ammo_casing/junk/shock
projectile_type = /obj/projectile/bullet/junk/shock

/obj/item/ammo_casing/junk/hunter
projectile_type = /obj/projectile/bullet/junk/hunter

/obj/item/ammo_casing/junk/ripper
projectile_type = /obj/projectile/bullet/junk/ripper

/obj/item/ammo_casing/junk/reaper
projectile_type = /obj/projectile/bullet/junk/reaper
9 changes: 0 additions & 9 deletions code/modules/projectiles/ammunition/ballistic/shotgun.dm
Original file line number Diff line number Diff line change
Expand Up @@ -103,15 +103,6 @@
variance = 25
custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*2)

/obj/item/ammo_casing/shotgun/improvised
name = "improvised shell"
desc = "A homemade shotgun casing filled with crushed glass, used to commmit vandalism and property damage."
icon_state = "improvshell"
projectile_type = /obj/projectile/bullet/pellet/shotgun_improvised
custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*2, /datum/material/glass=SMALL_MATERIAL_AMOUNT*1)
pellets = 6
variance = 30

/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. \
Expand Down
16 changes: 13 additions & 3 deletions code/modules/projectiles/boxes_magazines/internal/rifle.dm
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,23 @@

/obj/item/ammo_box/magazine/internal/boltaction/pipegun
name = "pipegun internal magazine"
caliber = CALIBER_SHOTGUN
ammo_type = /obj/item/ammo_casing/shotgun/improvised
caliber = CALIBER_JUNK
ammo_type = /obj/item/ammo_casing/junk
max_ammo = 1

/obj/item/ammo_box/magazine/internal/boltaction/pipegun/pistol
name = "pipe pistol internal magazine"
max_ammo = 3

/obj/item/ammo_box/magazine/internal/boltaction/pipegun/prime
name = "regal pipegun internal magazine"
max_ammo = 3
max_ammo = 4
ammo_type = /obj/item/ammo_casing/junk/reaper

/obj/item/ammo_box/magazine/internal/boltaction/pipegun/pistol/prime
name = "regal pipe pistol internal magazine"
max_ammo = 6
ammo_type = /obj/item/ammo_casing/junk/reaper

/obj/item/ammo_box/magazine/internal/enchanted
max_ammo = 1
Expand Down
Loading

0 comments on commit 6fd6ebd

Please sign in to comment.