Skip to content

Commit

Permalink
Mini-Nukie Update: The Bulldog is a 2-shot burst fire gun edition (an…
Browse files Browse the repository at this point in the history
…d lone ops get some spare ammo for their bulldog) (tgstation#81715)

<!-- Write **BELOW** The Headers and **ABOVE** The comments else it may
not be viewable. -->
<!-- You can view Contributing.MD for a detailed description of the pull
request process. -->

## About The Pull Request

The bulldog shotgun, available to ops, now has a burst fire of 2 rounds.
This means it launches a fairly rapid volley of bullets per click.

Currently, the lone operative spawns with a single bulldog shotgun.
Instead of just the shotgun, the operative now comes with some spare
magazines for their gun.

## Why It's Good For The Game

The bulldog still seems to be really unpopular, and still feels like it
isn't quite doing as much as other options for operatives. Even for the
cheap price, it just doesn't pull its weight. It lacks staying power or
range to face several opponents at once. You can certainly buy ammo to
make it better at engaging at range, but this sometimes begs the
question as to why you bothered with the bulldog over something else.

It is primarily only really good at killing one person at a time in
close quarters, but the person you would be using that power against is
usually a more armored opponent like the Captain or Head of Security.
Lots of other nuclear operative weapons simply do that much better than
the bulldog.

If the bulldog is meant to be mulching single targets one at a time, it
should absolutely be doing that reliably. Because people really like
shotguns. So why not unload two buckshot straight into someone's cranium
with a single pull of the trigger for a nice crunchy splat.

Lone operative got themselves a bulldog, but were cheated out of the
free ammo they would have received if they had simply bought the bulldog
from their uplink. Lone ops are not nearly as scary as an actual
midround nuclear assault, primarily because their objective doesn't come
with the benefit of an infiltrator or a bomb to deliver. They're a
punishment mechanic, technically. But even as a punishment, they don't
really do a terribly good job at punishing. Since the bulldog is focused
on putting down the captain as fast as possible, then it stands to
reason that the lone operative gets as much help accomplishing that as
necessary.

## Changelog

<!-- If your PR modifies aspects of the game that can be concretely
observed by players or admins you should add a changelog. If your change
does NOT meet this description, remove this section. Be sure to properly
mark your PRs to prevent unnecessary GBP loss. You can read up on GBP
and it's effects on PRs in the tgstation guides for contributors. Please
note that maintainers freely reserve the right to remove and add tags
should they deem it appropriate. You can attempt to finagle the system
all you want, but it's best to shoot for clear communication right off
the bat. -->

:cl:
balance: Bulldog Shotguns now have a 2-round burst fire.
balance: Lone Operatives now come with some additional Bulldog Shotgun
magazines.
/:cl:

<!-- Both :cl:'s are required for the changelog to work! You can put
your name to the right of the first :cl: if you want to overwrite your
GitHub username as author ingame. -->
<!-- You can use multiple of the same prefix (they're only used for the
icon ingame) and delete the unneeded ones. Despite some of the tags,
changelogs should generally represent how a player might be affected by
the changes rather than a summary of the PR's contents. -->
  • Loading branch information
necromanceranne authored Mar 9, 2024
1 parent b1a0dc9 commit 91f698f
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 48 deletions.
1 change: 1 addition & 0 deletions code/modules/antagonists/nukeop/outfits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@
backpack_contents = list(
/obj/item/gun/ballistic/automatic/pistol/clandestine = 1,
/obj/item/pen/edagger = 1,
/obj/item/ammo_box/magazine/m12g = 3,
)

/datum/outfit/syndicate/full/plasmaman
Expand Down
35 changes: 35 additions & 0 deletions code/modules/projectiles/guns/ballistic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,12 @@
///What is the cap on our misfire probability? Do not set this to 100.
var/misfire_probability_cap = 25

/// Fire Selector Variables ///
/// Tracks the firemode of burst weapons. TRUE means it is in burst mode.
var/burst_fire_selection = FALSE
/// If it has an icon for a selector switch indicating current firemode.
var/selector_switch_icon = FALSE

/obj/item/gun/ballistic/Initialize(mapload)
. = ..()
if(!spawn_magazine_type)
Expand Down Expand Up @@ -200,6 +206,14 @@

/obj/item/gun/ballistic/update_overlays()
. = ..()

if(selector_switch_icon)
switch(burst_fire_selection)
if(FALSE)
. += "[initial(icon_state)]_semi"
if(TRUE)
. += "[initial(icon_state)]_burst"

if(show_bolt_icon)
if (bolt_type == BOLT_TYPE_LOCKING)
. += "[icon_state]_bolt[bolt_locked ? "_locked" : ""]"
Expand Down Expand Up @@ -249,6 +263,27 @@
if(capacity_number)
. += "[icon_state]_mag_[capacity_number]"

/obj/item/gun/ballistic/ui_action_click(mob/user, actiontype)
if(istype(actiontype, /datum/action/item_action/toggle_firemode))
burst_select()
else
..()

/obj/item/gun/ballistic/proc/burst_select()
var/mob/living/carbon/human/user = usr
burst_fire_selection = !burst_fire_selection
if(!burst_fire_selection)
burst_size = 1
fire_delay = 0
balloon_alert(user, "switched to semi-automatic")
else
burst_size = initial(burst_size)
fire_delay = initial(fire_delay)
balloon_alert(user, "switched to [burst_size]-round burst")

playsound(user, 'sound/weapons/empty.ogg', 100, TRUE)
update_appearance()
update_item_action_buttons()

/obj/item/gun/ballistic/handle_chamber(empty_chamber = TRUE, from_firing = TRUE, chamber_next_round = TRUE)
if(!semi_auto && from_firing)
Expand Down
44 changes: 1 addition & 43 deletions code/modules/projectiles/guns/ballistic/automatic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,41 +9,7 @@
fire_sound_volume = 90
rack_sound = 'sound/weapons/gun/smg/smgrack.ogg'
suppressed_sound = 'sound/weapons/gun/smg/shot_suppressed.ogg'
var/select = 1 ///fire selector position. 1 = semi, 2 = burst. anything past that can vary between guns.
var/selector_switch_icon = FALSE ///if it has an icon for a selector switch indicating current firemode.

/obj/item/gun/ballistic/automatic/update_overlays()
. = ..()
if(!selector_switch_icon)
return

switch(select)
if(0)
. += "[initial(icon_state)]_semi"
if(1)
. += "[initial(icon_state)]_burst"

/obj/item/gun/ballistic/automatic/ui_action_click(mob/user, actiontype)
if(istype(actiontype, /datum/action/item_action/toggle_firemode))
burst_select()
else
..()

/obj/item/gun/ballistic/automatic/proc/burst_select()
var/mob/living/carbon/human/user = usr
select = !select
if(!select)
burst_size = 1
fire_delay = 0
balloon_alert(user, "switched to semi-automatic")
else
burst_size = initial(burst_size)
fire_delay = initial(fire_delay)
balloon_alert(user, "switched to [burst_size]-round burst")

playsound(user, 'sound/weapons/empty.ogg', 100, TRUE)
update_appearance()
update_item_action_buttons()
burst_fire_selection = TRUE

/obj/item/gun/ballistic/automatic/proto
name = "\improper Nanotrasen Saber SMG"
Expand Down Expand Up @@ -205,14 +171,6 @@
else
..()

/obj/item/gun/ballistic/automatic/m90/update_overlays()
. = ..()
switch(select)
if(0)
. += "[initial(icon_state)]_semi"
if(1)
. += "[initial(icon_state)]_burst"

/obj/item/gun/ballistic/automatic/tommygun
name = "\improper Thompson SMG"
desc = "Based on the classic 'Chicago Typewriter'."
Expand Down
9 changes: 5 additions & 4 deletions code/modules/projectiles/guns/ballistic/shotgun.dm
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@

/obj/item/gun/ballistic/shotgun/bulldog
name = "\improper Bulldog Shotgun"
desc = "A semi-auto, mag-fed shotgun for combat in narrow corridors, nicknamed 'Bulldog' by boarding parties. Compatible only with specialized 8-round drum magazines. Can have a secondary magazine attached to quickly swap between ammo types, or just to keep shooting."
desc = "A 2-round burst fire, mag-fed shotgun for combat in narrow corridors, nicknamed 'Bulldog' by boarding parties. Compatible only with specialized 8-round drum magazines. Can have a secondary magazine attached to quickly swap between ammo types, or just to keep shooting."
icon_state = "bulldog"
inhand_icon_state = "bulldog"
worn_icon_state = "cshotgun"
Expand All @@ -152,11 +152,11 @@
weapon_weight = WEAPON_MEDIUM
accepted_magazine_type = /obj/item/ammo_box/magazine/m12g
can_suppress = FALSE
burst_size = 1
fire_delay = 0
burst_size = 2
fire_delay = 1
pin = /obj/item/firing_pin/implant/pindicate
fire_sound = 'sound/weapons/gun/shotgun/shot_alt.ogg'
actions_types = list()
actions_types = list(/datum/action/item_action/toggle_firemode)
mag_display = TRUE
empty_indicator = TRUE
empty_alarm = TRUE
Expand All @@ -165,6 +165,7 @@
semi_auto = TRUE
internal_magazine = FALSE
tac_reloads = TRUE
burst_fire_selection = TRUE
///the type of secondary magazine for the bulldog
var/secondary_magazine_type
///the secondary magazine
Expand Down
2 changes: 1 addition & 1 deletion code/modules/uplink/uplink_items/nukeops.dm
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@

/datum/uplink_item/weapon_kits/low_cost/shotgun
name = "Bulldog Shotgun Case (Moderate)"
desc = "A fully-loaded semi-automatic drum-fed shotgun, complete with a secondary magazine you can hotswap. The gun has a handy label to explain how. \
desc = "A fully-loaded 2-round burst fire drum-fed shotgun, complete with a secondary magazine you can hotswap. The gun has a handy label to explain how. \
Compatible with all 12g rounds. Designed for close quarter anti-personnel engagements. Comes with three spare magazines."
item = /obj/item/storage/toolbox/guncase/bulldog

Expand Down

0 comments on commit 91f698f

Please sign in to comment.