Pipegun updates and glowup (#83063)

## 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
🆑
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).
/🆑

---------

Co-authored-by: Jacquerel <hnevard@ gmail.com>
This commit is contained in:
necromanceranne
2024-05-08 17:43:04 -04:00
committed by SkyratBot
co-authored by Jacquerel
parent 32e27e1193
commit a2cad3c467
25 changed files with 381 additions and 162 deletions
@@ -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,
+1 -1
View File
@@ -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" = (
+114 -114
View File
@@ -3381,16 +3381,6 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/turf/open/floor/iron,
/area/station/hallway/floor3/aft)
"aSz" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/door/poddoor/shutters/preopen{
dir = 1;
id = "cmoshutter";
name = "CMO Privacy Shutters"
},
/obj/structure/cable,
/turf/open/floor/plating,
/area/station/command/heads_quarters/cmo)
"aSB" = (
/obj/effect/spawner/random/trash/cigbutt,
/turf/open/floor/iron/dark,
@@ -8551,6 +8541,16 @@
/mob/living/basic/rabbit,
/turf/open/floor/grass,
/area/station/hallway/secondary/entry)
"ceF" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
/obj/machinery/door/poddoor/shutters/preopen{
name = "CMO Privacy Shutters";
dir = 4;
id = "cmoshutter"
},
/turf/open/floor/plating,
/area/station/medical/storage)
"ceH" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/turf_decal/trimline/green/line{
@@ -11197,31 +11197,6 @@
/obj/machinery/airalarm/directional/west,
/turf/open/floor/bronze/filled,
/area/station/maintenance/floor1/starboard)
"cNC" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
/obj/machinery/button/door/directional/west{
id = "viro-inner";
name = "Inner Virology Lockdown";
pixel_y = -8
},
/obj/machinery/button/door/directional/west{
id = "viro-outer";
name = "Outer Virology Lockdown";
pixel_y = 8
},
/obj/machinery/button/door/directional/west{
id = "viro-iso";
name = "Isolation Bolts";
normaldoorcontrol = 1;
pixel_x = -36;
specialfunctions = 4
},
/obj/effect/turf_decal/tile/green/opposingcorners,
/obj/effect/landmark/start/virologist,
/turf/open/floor/iron/white,
/area/station/medical/virology)
"cNE" = (
/obj/structure/mineral_door/paperframe,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -14128,16 +14103,6 @@
/obj/machinery/camera/autoname/directional/south,
/turf/open/floor/iron/dark/side,
/area/station/hallway/floor4/aft)
"dCm" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/door/poddoor/shutters/preopen{
dir = 8;
id = "cmoshutter";
name = "CMO Privacy Shutters"
},
/obj/structure/cable,
/turf/open/floor/plating,
/area/station/command/heads_quarters/cmo)
"dCt" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
@@ -26969,6 +26934,16 @@
/obj/effect/landmark/start/atmospheric_technician,
/turf/open/floor/iron,
/area/station/engineering/atmos)
"hab" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/door/poddoor/shutters/preopen{
dir = 1;
id = "cmoshutter";
name = "CMO Privacy Shutters"
},
/obj/structure/cable,
/turf/open/floor/plating,
/area/station/command/heads_quarters/cmo)
"hah" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/iron/white/smooth_corner{
@@ -29826,16 +29801,6 @@
dir = 8
},
/area/station/commons/dorms/room1)
"hLa" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
/obj/machinery/door/poddoor/shutters/preopen{
dir = 1;
id = "cmoshutter";
name = "CMO Privacy Shutters"
},
/turf/open/floor/plating,
/area/station/command/heads_quarters/cmo)
"hLd" = (
/obj/machinery/door/firedoor/border_only{
dir = 1
@@ -41362,19 +41327,6 @@
/obj/effect/turf_decal/trimline/dark_blue/end,
/turf/open/floor/iron/dark,
/area/station/commons/storage/tools)
"kIx" = (
/obj/machinery/keycard_auth/directional/north{
pixel_x = 9
},
/obj/machinery/button/door/directional/north{
name = "CMO Privacy Shutters";
id = "cmoshutter";
req_access = list("cmo");
pixel_y = 25;
pixel_x = -5
},
/turf/open/floor/iron/dark,
/area/station/command/heads_quarters/cmo)
"kIG" = (
/obj/machinery/button/door/directional/north{
id = "Secure Storage";
@@ -41750,6 +41702,11 @@
/obj/machinery/duct,
/turf/open/floor/iron/white,
/area/station/science/xenobiology)
"kNy" = (
/obj/item/storage/toolbox/maint_kit,
/obj/effect/spawner/random/junk_shell,
/turf/open/floor/pod/light,
/area/station/maintenance/floor4/port)
"kNA" = (
/obj/structure/cable,
/obj/structure/disposalpipe/segment{
@@ -42618,16 +42575,6 @@
/obj/structure/rack,
/turf/open/floor/pod/light,
/area/station/maintenance/floor2/port/fore)
"kYr" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
/obj/machinery/door/poddoor/shutters/preopen{
dir = 8;
id = "cmoshutter";
name = "CMO Privacy Shutters"
},
/turf/open/floor/plating,
/area/station/command/heads_quarters/cmo)
"kYt" = (
/obj/structure/chair/comfy/carp,
/turf/open/floor/carpet/neon/simple/pink/nodots,
@@ -46303,6 +46250,16 @@
},
/turf/open/floor/pod/dark,
/area/station/maintenance/floor2/port)
"lTO" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
/obj/machinery/door/poddoor/shutters/preopen{
dir = 1;
id = "cmoshutter";
name = "CMO Privacy Shutters"
},
/turf/open/floor/plating,
/area/station/command/heads_quarters/cmo)
"lTV" = (
/obj/machinery/door/firedoor,
/obj/machinery/mineral/ore_redemption,
@@ -51277,6 +51234,16 @@
/obj/structure/cable/layer3,
/turf/open/floor/iron/dark,
/area/station/ai_monitored/turret_protected/aisat)
"nge" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/machinery/door/poddoor/shutters/preopen{
dir = 8;
id = "cmoshutter";
name = "CMO Privacy Shutters"
},
/obj/structure/cable,
/turf/open/floor/plating,
/area/station/command/heads_quarters/cmo)
"ngf" = (
/obj/structure/railing,
/obj/effect/decal/cleanable/dirt,
@@ -57427,6 +57394,16 @@
/obj/structure/sign/poster/official/terragov/directional/north,
/turf/open/floor/iron/dark/small,
/area/station/science/xenobiology)
"oJs" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
/obj/machinery/door/poddoor/shutters/preopen{
dir = 8;
id = "cmoshutter";
name = "CMO Privacy Shutters"
},
/turf/open/floor/plating,
/area/station/command/heads_quarters/cmo)
"oJO" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
/turf/open/floor/pod/dark,
@@ -59400,14 +59377,6 @@
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
/turf/open/floor/pod/dark,
/area/station/maintenance/floor2/port/aft)
"pmI" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
/obj/effect/turf_decal/tile/green/opposingcorners,
/obj/effect/landmark/start/virologist,
/turf/open/floor/iron/white,
/area/station/medical/virology)
"pmO" = (
/obj/structure/chair/comfy/brown{
dir = 8
@@ -68112,11 +68081,6 @@
},
/turf/open/floor/plating,
/area/station/maintenance/floor1/starboard/fore)
"rxZ" = (
/obj/item/storage/toolbox/maint_kit,
/obj/item/ammo_casing/shotgun/improvised,
/turf/open/floor/pod/light,
/area/station/maintenance/floor4/port)
"ryh" = (
/obj/structure/cable/multilayer/multiz,
/turf/open/floor/plating/airless,
@@ -87843,16 +87807,6 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/carpet/red,
/area/station/service/theater)
"wBe" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/cable,
/obj/machinery/door/poddoor/shutters/preopen{
name = "CMO Privacy Shutters";
dir = 4;
id = "cmoshutter"
},
/turf/open/floor/plating,
/area/station/medical/storage)
"wBg" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/decal/cleanable/robot_debris/up,
@@ -92040,6 +91994,19 @@
/obj/effect/turf_decal/siding/thinplating_new/corner,
/turf/open/floor/iron/smooth,
/area/station/cargo/sorting)
"xEv" = (
/obj/machinery/keycard_auth/directional/north{
pixel_x = 9
},
/obj/machinery/button/door/directional/north{
name = "CMO Privacy Shutters";
id = "cmoshutter";
req_access = list("cmo");
pixel_y = 25;
pixel_x = -5
},
/turf/open/floor/iron/dark,
/area/station/command/heads_quarters/cmo)
"xEw" = (
/obj/machinery/computer/camera_advanced/base_construction/aux{
dir = 4
@@ -93018,6 +92985,14 @@
dir = 1
},
/area/station/science/genetics)
"xRI" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
/obj/effect/turf_decal/tile/green/opposingcorners,
/obj/effect/landmark/start/virologist,
/turf/open/floor/iron/white,
/area/station/medical/virology)
"xRJ" = (
/obj/effect/decal/cleanable/blood/old,
/obj/item/screwdriver,
@@ -94318,6 +94293,31 @@
/obj/item/reagent_containers/pill/maintenance,
/turf/open/floor/iron/white,
/area/station/medical/abandoned)
"yks" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
/obj/structure/cable,
/obj/machinery/button/door/directional/west{
id = "viro-inner";
name = "Inner Virology Lockdown";
pixel_y = -8
},
/obj/machinery/button/door/directional/west{
id = "viro-outer";
name = "Outer Virology Lockdown";
pixel_y = 8
},
/obj/machinery/button/door/directional/west{
id = "viro-iso";
name = "Isolation Bolts";
normaldoorcontrol = 1;
pixel_x = -36;
specialfunctions = 4
},
/obj/effect/turf_decal/tile/green/opposingcorners,
/obj/effect/landmark/start/virologist,
/turf/open/floor/iron/white,
/area/station/medical/virology)
"ykt" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -190467,9 +190467,9 @@ syV
wPX
xKq
nCG
dCm
nge
goX
kYr
oJs
nCG
mrG
mrG
@@ -190723,7 +190723,7 @@ jRO
ihm
wyE
xKq
hLa
lTO
rac
srK
keJ
@@ -190980,7 +190980,7 @@ jRO
eCO
wyE
xKq
aSz
hab
dZz
bPP
xhJ
@@ -191752,7 +191752,7 @@ tam
oKR
xKq
nCG
kIx
xEv
rBt
aDp
xug
@@ -192267,10 +192267,10 @@ eBo
vOn
nfv
nfv
wBe
wBe
wBe
wBe
ceF
ceF
ceF
ceF
nfv
nfv
mHh
@@ -195582,7 +195582,7 @@ mqc
mRQ
dVV
xNy
cNC
yks
mcI
rPC
sJn
@@ -196096,7 +196096,7 @@ iOA
utl
doh
gJz
pmI
xRI
hwQ
piz
aWO
@@ -196610,7 +196610,7 @@ iOA
dfU
pZm
wJy
pmI
xRI
dVV
bLm
yhv
@@ -314350,7 +314350,7 @@ cis
cub
wTg
vEa
rxZ
kNy
tCG
pme
iho
+2
View File
@@ -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
@@ -181,15 +181,33 @@
/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
/datum/crafting_recipe/rebarxbow
name = "Heated Rebar Crossbow"
result = /obj/item/gun/ballistic/rifle/rebarxbow
@@ -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
@@ -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,
@@ -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
+1
View File
@@ -758,6 +758,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
+3 -3
View File
@@ -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"
+49 -2
View File
@@ -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"
@@ -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"
@@ -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"
@@ -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"
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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
@@ -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
@@ -104,15 +104,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. \
@@ -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
@@ -259,46 +259,78 @@
. = ..()
AddComponent(/datum/component/scope, range_modifier = 2) //enough range to at least be useful for stealth
/// PIPE GUNS ///
/obj/item/gun/ballistic/rifle/boltaction/pipegun
name = "pipegun"
desc = "An excellent weapon for flushing out tunnel rats and enemy assistants, but its rifling leaves much to be desired."
icon = 'icons/obj/weapons/guns/ballistic.dmi'
icon_state = "musket"
inhand_icon_state = "musket"
worn_icon_state = "musket"
lefthand_file = 'icons/mob/inhands/weapons/64x_guns_left.dmi'
righthand_file = 'icons/mob/inhands/weapons/64x_guns_right.dmi'
inhand_x_dimension = 64
inhand_y_dimension = 64
desc = "A symbol that the true masters of this place are not those who merely inhabit it, but the one willing to twist it towards a killing intent."
icon_state = "pipegun"
inhand_icon_state = "pipegun"
worn_icon_state = "pipegun"
fire_sound = 'sound/weapons/gun/sniper/shot.ogg'
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/pipegun
initial_caliber = CALIBER_SHOTGUN
alternative_caliber = CALIBER_STRILKA310
initial_fire_sound = 'sound/weapons/gun/sniper/shot.ogg'
alternative_fire_sound = 'sound/weapons/gun/shotgun/shot.ogg'
can_modify_ammo = TRUE
projectile_damage_multiplier = 1.35
obj_flags = UNIQUE_RENAME
can_bayonet = TRUE
knife_x_offset = 25
knife_y_offset = 11
can_be_sawn_off = FALSE
projectile_damage_multiplier = 0.75
trigger_guard = TRIGGER_GUARD_ALLOW_ALL
SET_BASE_PIXEL(0, 0)
SET_BASE_PIXEL(-8, 0)
/obj/item/gun/ballistic/rifle/boltaction/pipegun/handle_chamber()
. = ..()
do_sparks(1, TRUE, src)
/obj/item/gun/ballistic/rifle/boltaction/pipegun/examine_more(mob/user)
. = ..()
. += span_notice("<b><i>Looking down at the [name], you recall a tale told to you in some distant memory...</i></b>")
. += span_info("It's said that the first slaying committed on a Nanotrasen space station was by an assistant.")
. += span_info("That this act, done by toolbox, maybe spear, was what consigned their kind to a life of destitution, rejection and violence.")
. += span_info("They carry the weight of this act visibly; the grey jumpsuit. Breathing deeply filtered air. And with bloodsoaked yellow hands clenched into fists. Eyes, sharp and waiting. Hunters in the dark.")
. += span_info("Eventually, these killing spirits sought to stake a claim on the metal tombs they were trapped within. Rejecting their status. Determined to be something more.")
. += span_info("This weapon is one such tool. And it is a grim one indeed. Wrought from scrap, pulled from the station's walls and floors and the very nails holding it together.")
. += span_info("It is a symbol that the true masters of this place are not those who merely inhabit it. But the one willing to twist it towards a killing intent.")
/obj/item/gun/ballistic/rifle/boltaction/pipegun/pistol
name = "pipe pistol"
desc = "It is foolish to think that anyone wearing the grey is incapable of hurting you, simply because they are not baring their teeth."
icon_state = "pipepistol"
inhand_icon_state = "pipepistol"
worn_icon_state = "gun"
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/pipegun/pistol
projectile_damage_multiplier = 0.50
spread = 15 //kinda inaccurate
slot_flags = ITEM_SLOT_BELT
w_class = WEIGHT_CLASS_NORMAL
can_bayonet = FALSE
weapon_weight = WEAPON_MEDIUM
SET_BASE_PIXEL(0, 0)
/obj/item/gun/ballistic/rifle/boltaction/pipegun/prime
name = "regal pipegun"
desc = "Older, territorial assistants typically possess more valuable loot."
icon_state = "musket_prime"
inhand_icon_state = "musket_prime"
worn_icon_state = "musket_prime"
desc = "To call this 'regal' is a cruel irony. For the only noteworthy quality of nobility is in how it is wielded to kill. \
All monarchs deserve to be crowned. But none will remember the dead tyrant for the red stain they left on the carpet."
icon_state = "regal_pipegun"
inhand_icon_state = "regal_pipegun"
worn_icon_state = "regal_pipegun"
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/pipegun/prime
projectile_damage_multiplier = 1
projectile_damage_multiplier = 2
/// MAGICAL BOLT ACTIONS + ARCANE BARRAGE? ///
/obj/item/gun/ballistic/rifle/boltaction/pipegun/pistol/prime
name = "regal pipe pistol"
desc = "What value is there in honesty towards the dishonest? So that they might twist the arm and slit the wrist? \
The open palm is no sign of weakness; it is to draw the eyes away from the other hand, lying in wait."
icon_state = "regal_pipepistol"
inhand_icon_state = "regal_pipepistol"
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/pipegun/pistol/prime
projectile_damage_multiplier = 1
spread = 0
/// MAGICAL BOLT ACTIONS ///
/obj/item/gun/ballistic/rifle/enchanted
name = "enchanted bolt action rifle"
@@ -0,0 +1,71 @@
// Junk (Pipe Pistols and Pipeguns)
/obj/projectile/bullet/junk
name = "junk bullet"
icon_state = "trashball"
damage = 30
embedding = list(embed_chance=15, fall_chance=3, jostle_chance=4, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.4, pain_mult=5, jostle_pain_mult=6, rip_time=10)
var/bane_mob_biotypes = MOB_ROBOTIC
var/bane_multiplier = 1.5
var/bane_added_damage = 0
/obj/projectile/bullet/junk/Initialize(mapload)
. = ..()
AddElement(/datum/element/bane, mob_biotypes = bane_mob_biotypes, target_type = /mob/living, damage_multiplier = bane_multiplier, added_damage = bane_added_damage, requires_combat_mode = FALSE)
/obj/projectile/bullet/incendiary/fire/junk
name = "burning oil"
damage = 30
fire_stacks = 5
suppressed = SUPPRESSED_NONE
/obj/projectile/bullet/junk/phasic
name = "junk phasic bullet"
icon_state = "gaussphase"
projectile_phasing = PASSTABLE | PASSGLASS | PASSGRILLE | PASSCLOSEDTURF | PASSMACHINE | PASSSTRUCTURE | PASSDOORS
/obj/projectile/bullet/junk/shock
name = "bundle of live electrical parts"
icon_state = "tesla_projectile"
damage = 15
embedding = null
shrapnel_type = null
bane_multiplier = 3
/obj/projectile/bullet/junk/shock/on_hit(atom/target, blocked = 0, pierce_hit)
. = ..()
if(isliving(target))
var/mob/living/victim = target
victim.electrocute_act(damage, src, siemens_coeff = 1, flags = SHOCK_NOSTUN)
/obj/projectile/bullet/junk/hunter
name = "junk hunter bullet"
icon_state = "gauss"
bane_mob_biotypes = MOB_ROBOTIC | MOB_BEAST | MOB_SPECIAL
bane_multiplier = 0
bane_added_damage = 50
/obj/projectile/bullet/junk/ripper
name = "junk ripper bullet"
icon_state = "redtrac"
damage = 10
embedding = list(embed_chance=100, fall_chance=3, jostle_chance=4, ignore_throwspeed_threshold=TRUE, pain_stam_pct=0.4, pain_mult=5, jostle_pain_mult=6, rip_time=10)
wound_bonus = 10
bare_wound_bonus = 30
/obj/projectile/bullet/junk/reaper
name = "junk reaper bullet"
tracer_type = /obj/effect/projectile/tracer/sniper
impact_type = /obj/effect/projectile/impact/sniper
muzzle_type = /obj/effect/projectile/muzzle/sniper
hitscan = TRUE
impact_effect_type = null
hitscan_light_intensity = 3
hitscan_light_range = 0.75
hitscan_light_color_override = LIGHT_COLOR_DIM_YELLOW
muzzle_flash_intensity = 5
muzzle_flash_range = 1
muzzle_flash_color_override = LIGHT_COLOR_DIM_YELLOW
impact_light_intensity = 5
impact_light_range = 1
impact_light_color_override = LIGHT_COLOR_DIM_YELLOW
Binary file not shown.

Before

Width:  |  Height:  |  Size: 93 KiB

After

Width:  |  Height:  |  Size: 93 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 124 KiB

After

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

+2
View File
@@ -5458,6 +5458,7 @@
#include "code\modules\projectiles\ammunition\_firing.dm"
#include "code\modules\projectiles\ammunition\ballistic\foam.dm"
#include "code\modules\projectiles\ammunition\ballistic\harpoon.dm"
#include "code\modules\projectiles\ammunition\ballistic\junk.dm"
#include "code\modules\projectiles\ammunition\ballistic\lmg.dm"
#include "code\modules\projectiles\ammunition\ballistic\pistol.dm"
#include "code\modules\projectiles\ammunition\ballistic\revolver.dm"
@@ -5541,6 +5542,7 @@
#include "code\modules\projectiles\projectile\bullets\dnainjector.dm"
#include "code\modules\projectiles\projectile\bullets\foam_dart.dm"
#include "code\modules\projectiles\projectile\bullets\grenade.dm"
#include "code\modules\projectiles\projectile\bullets\junk.dm"
#include "code\modules\projectiles\projectile\bullets\lmg.dm"
#include "code\modules\projectiles\projectile\bullets\pistol.dm"
#include "code\modules\projectiles\projectile\bullets\revolver.dm"