Skip to content

Commit

Permalink
Quarad rebalance, minor nukie + import gun changes (#5212)
Browse files Browse the repository at this point in the history
## About The Pull Request


Completely overhauls the Quarad LMG: Heavily nerfed vs crew, larger
magazine capacity, bonus damage vs xenos+simplemobs.
Removes the Quarad LMG from cargo, adds it to the armory heavy weapon
locker spawner along with limited ammo.
Adds a nukie Quarad LMG, complete with sprites and unique ammo. 
Buffs the CR20 slightly. (Wound bonus + mag size.) (Requested on
discord)
Swaps the practice rounds which spawn with the Kiboko grenade launcher
in armory to shrapnel.
Slightly nerfs Lanca AP ammunition. (2 hits -> 3 hits, -5 damage
overall)
Makes the L6 SAW ammunition move at different speeds depending on which
ammo it is.
Somewhat buffs foam darts.   (Requested on discord)
## Why It's Good For The Game
The Quarad LMG was vastly overpowered for being available in cargo, but
I could not come up with a way to have it FEEL like a machine gun while
being reasonable for balance.
Thus, it has been rechambered into ammunition with low effect on crew,
high effect on xenos and simplemobs. This gives it a dedicated niche,
without making it irrelevant.
A SINGLE one spawns in armory, with 2 standard mags, 1 AP mag, 1
incendiary mag. There is currently no way to refill ammo.

EXACT NUMBERS:
Quarad LMG ammunition: (6.5x39mm, I.E 6.5 Anti-Xeno caseless.)

Frangible (standard rounds)
Damage: 20 -> 10
Wound bonus: 10 -> -10
Armor penetration: 0
Demolition mod: 0.5
Bare wound bonus: 10 -> 15
Damage vs Xenos: 25

AP rounds
Damage: 10 -> 6
Wound bonus: -10 -> 5
Armor penetration : 60
Demolition mod: 1.5 (Combined with the additional direct demolition
damage, will break a reinforced window in 4 hits)
Bare wound bonus: 0
Damage vs Xenos: 18
Speed = 0.3
Penetrates up to 3 mobs

Incendiary
Damage: 5
Speed = 0.7
1x firestack per hit
No fire trail

Syndicate standard (FMJ) - 2 TC
Wound bonus = 10
Bare wound bonus = 10
Armour penetration = 30
Demolition mod = 2

Syndicate AP (UDS - non-depleted uranium discarding sabot) - 4 TC
Damage: 7
Wound bonus: 10
Armor pen: 60
Demolition mod: 3
1x radiation pulse on hit
Up to 3 mobs pierce

Syndicate incendiary - 4 TC
Damage: 5
1x firestack on hit (effectively 2 with the fire trail)
Pierces 1 mob
Fire trail

Quarad LMG:
Firerate: 0.1 -> 0.2
Recoil: 2 | 0.5 -> 3 | 0.75
Magazine size: 60 -> 120

Syndicate Quarad LMG: - 16 TC
Recoil: 2 | 0.5
Firerate: 0.1
Spread: 12.5 -> 8
Damage modifier: 1.3
Wound bonus: 10

CR20
Wound bonus: -10  -> 20
Mag size: 24 -> 42
(These changes make it more ammo/tc efficient than the M90 GL, gives it
a larger magazine than the M90 GL, and makes it more effective at close
range than the M90 GL. It has very high wound drop-off, and lower base
damage than the M90 GL.)

Kiboko:
No idea why it spawned with practice rounds in armory to begin with,
they are essentially useless. Having a grenade launcher in armory that
you still needed to buy an ammo station and advanced disk to effectively
use for anything but tear gas seems foolish.

Lanca AP ammo:
Damage: 50 -> 45
Speed: 0.4 -> 0.3
AP ammo should have less effect on unarmored targets than standard ammo.
AP ammo should by and large move a little faster than standard ammo.

L6 SAW:
Tweaks the speed of the various ammo types to make it a little more fun

Riot darts:
Now apply 4 stacks of debilitated. Still weaker than they were before
stamina changes, but a bit stronger than they are now.

If needed, I can easily split off or remove any of the minor tweaks from
the machine guns. Same with rebalancing of values.
## Changelog
:cl:

add: Syndicate enhanced Quarad with special ammo and sprites - nuke ops
only
balance: Quarad nerf + removal from cargo + add to armory + extra effect
vs Xenos
balance: Mild buff CR20
balance: Mild Lanca AP ammo nerf
balance: Moderate Riot Dart buff
balance: Armory Kiboko now gets shrapnel instead of practice shells.
/:cl:

---------

Co-authored-by: Lucy <[email protected]>
  • Loading branch information
Loiosh42 and Absolucy authored Feb 13, 2025
1 parent d6d479f commit 59498ef
Show file tree
Hide file tree
Showing 21 changed files with 390 additions and 10 deletions.
2 changes: 1 addition & 1 deletion code/modules/projectiles/boxes_magazines/external/smg.dm
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@
base_icon_state = "c20r45"
ammo_type = /obj/item/ammo_casing/c45
caliber = CALIBER_45
max_ammo = 24
max_ammo = 42 ///monke edit 24 -> 42

/obj/item/ammo_box/magazine/smgm45/update_icon_state()
. = ..()
Expand Down
5 changes: 5 additions & 0 deletions code/modules/projectiles/projectile/bullets/lmg.dm
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
/obj/projectile/bullet/mm712x82/ap
name = "7.12x82mm armor-piercing bullet"
armour_penetration = 75
speed = 0.3 //monke edit

/obj/projectile/bullet/mm712x82/hp
name = "7.12x82mm hollow-point bullet"
Expand All @@ -56,13 +57,15 @@
name = "7.12x82mm incendiary bullet"
damage = 15
fire_stacks = 3
speed = 0.6 //monke edit

/obj/projectile/bullet/mm712x82/match
name = "7.12x82mm match bullet"
ricochets_max = 2
ricochet_chance = 60
ricochet_auto_aim_range = 4
ricochet_incidence_leeway = 55
speed = 0.3 //monke edit

/obj/projectile/bullet/mm712x82/bouncy
name = "7.12x82mm rubber bullet"
Expand All @@ -72,3 +75,5 @@
ricochet_auto_aim_range = 4
ricochet_incidence_leeway = 0
ricochet_decay_chance = 0.9
speed = 0.6 //monke edit

2 changes: 1 addition & 1 deletion code/modules/projectiles/projectile/bullets/smg.dm
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
/obj/projectile/bullet/c45
name = ".45 bullet"
damage = 30
wound_bonus = -10
wound_bonus = 20 ///monke -10 -> 20
wound_falloff_tile = -10

/obj/projectile/bullet/c45/ap
Expand Down
2 changes: 2 additions & 0 deletions code/modules/projectiles/projectile/reusable/foam_dart.dm
Original file line number Diff line number Diff line change
Expand Up @@ -39,3 +39,5 @@
base_icon_state = "foamdart_riot_proj"
ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot
stamina = 25
debilitating = TRUE
debilitate_mult = 4
1 change: 1 addition & 0 deletions monkestation/code/__DEFINES/projectile.dm
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
/// The caliber used by the Paco handgun.
#define CALIBER_35 ".35"
#define CALIBER_C65XENO "6.5x39"
4 changes: 2 additions & 2 deletions monkestation/code/modules/blueshift/armaments/sol.dm
Original file line number Diff line number Diff line change
Expand Up @@ -112,12 +112,12 @@
item_type = /obj/item/gun/ballistic/automatic/sol_rifle
cost = PAYCHECK_COMMAND * 14
contraband = TRUE

/* ///Monke removal
/datum/armament_entry/company_import/sol_defense/longarm/outomaties
item_type = /obj/item/gun/ballistic/automatic/sol_rifle/machinegun
cost = PAYCHECK_COMMAND * 23
contraband = TRUE

*/
/datum/armament_entry/company_import/sol_defense/longarm/kiboko
item_type = /obj/item/gun/ballistic/automatic/sol_grenade_launcher
cost = PAYCHECK_COMMAND * 46
Expand Down
3 changes: 2 additions & 1 deletion monkestation/code/modules/blueshift/items/ammo.dm
Original file line number Diff line number Diff line change
Expand Up @@ -632,9 +632,10 @@

/obj/projectile/bullet/strilka310/ap
name = ".310 armor-piercing bullet"
damage = 50
damage = 45
armour_penetration = 50
wound_bonus = -20
speed = 0.3

// .585 Trappiste
// High caliber round used in large pistols and revolvers
Expand Down
6 changes: 3 additions & 3 deletions monkestation/code/modules/blueshift/items/company_guns.dm
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,8 @@
/obj/item/gun/ballistic/automatic/sol_rifle/marksman/no_mag
spawnwithmagazine = FALSE

// Machinegun based on the base Sol rifle

// Machinegun based on the base Sol rifle ///monke edit: Rechambered to 6.5mm Anti-Xeno, now in monkestation/modules/projectiles
/*
/obj/item/gun/ballistic/automatic/sol_rifle/machinegun
name = "\improper Qarad Light Machinegun"
desc = "A hefty machinegun commonly seen in the hands of SolFed military types. Accepts any standard SolFed rifle magazine."
Expand Down Expand Up @@ -152,7 +152,7 @@
/obj/item/gun/ballistic/automatic/sol_rifle/machinegun/no_mag
spawnwithmagazine = FALSE

*/
// Evil version of the rifle (nothing different its just black)

/obj/item/gun/ballistic/automatic/sol_rifle/evil
Expand Down
3 changes: 2 additions & 1 deletion monkestation/code/modules/blueshift/items/gunset.dm
Original file line number Diff line number Diff line change
Expand Up @@ -216,9 +216,10 @@

generate_items_inside(list(
/obj/item/storage/toolbox/guncase/skyrat/carwo_large_case/kiboko_magless = 1,
/obj/item/ammo_box/c980grenade = 2,
/obj/item/ammo_box/c980grenade/shrapnel = 2, //monke edit, practice to shrapnel
/obj/item/ammo_box/c980grenade/smoke = 1,
/obj/item/ammo_box/c980grenade/riot = 1,
/obj/item/storage/toolbox/guncase/skyrat/quarad_guncase = 1, //monke edit
), src)

/obj/structure/closet/secure_closet/armory_kiboko_but_evil
Expand Down
2 changes: 1 addition & 1 deletion monkestation/code/modules/blueshift/spawners/armory.dm
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@
guns = list(
/obj/item/gun/ballistic/automatic/sol_rifle,
/obj/item/gun/ballistic/automatic/sol_rifle,
/obj/item/gun/ballistic/automatic/sol_rifle/machinegun,
/obj/item/gun/ballistic/automatic/quarad_lmg, ///Monke edit, sol quarad to 6.5 Anti-xeno
)

/obj/effect/spawner/armory_spawn/centcom_lasers
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
/obj/item/ammo_casing/c65xeno
name = "6.5mm Anti-Xeno frangible bullet casing"
desc = "An unusual 6.5mm caseless round, designed for minimum property damage, maximum xenomorph shredding"
icon = 'monkestation/code/modules/blueshift/icons/obj/company_and_or_faction_based/carwo_defense_systems/ammo.dmi'
icon_state = "40sol"
caliber = CALIBER_C65XENO
projectile_type = /obj/projectile/bullet/c65xeno

/obj/item/ammo_casing/c65xeno/Initialize(mapload)
. = ..()
AddElement(/datum/element/caseless)

/obj/item/ammo_casing/c65xeno/evil
name = "6.5mm FMJ bullet casing"
desc = "A 6.5mm caseless frangible round with the projectile replaced by a terrestial military round. Much more effective against armor, and at breaking windows."
caliber = CALIBER_C65XENO
projectile_type = /obj/projectile/bullet/c65xeno/evil
can_be_printed = FALSE

/obj/item/ammo_casing/c65xeno/pierce
name = "6.5mm Subcaliber tungsten sabot round"
desc = "A 6.5mm caseless round loaded with a subcaliber tungsten penetrator. Designed to punch straight through targets."
projectile_type = /obj/projectile/bullet/c65xeno/pierce

custom_materials = AMMO_MATS_AP
advanced_print_req = TRUE

/obj/item/ammo_casing/c65xeno/pierce/evil
name = "6.5mm UDS"
desc = "A 6.5mm Uranium Discarding Sabot. No, NOT depleted uranium. Prepare to be irradiated."
projectile_type = /obj/projectile/bullet/c65xeno/pierce/evil

can_be_printed = FALSE

/obj/item/ammo_casing/c65xeno/incendiary
name = "6.5mm Subcaliber incendiary round"
desc = "A 6.5mm caseless round tipped with an extremely flammable compound. Leaves no flaming trail, only igniting targets on impact."
projectile_type = /obj/projectile/bullet/c65xeno/incendiary

custom_materials = AMMO_MATS_TEMP
advanced_print_req = TRUE

/obj/item/ammo_casing/c65xeno/incendiary/evil
name = "6.5mm Inferno round"
desc = "A 6.5mm caseless round designed to leave a trail of EXTREMLY flammable substance behind it in flight. Do not smoke within 30 meters of these."
projectile_type = /obj/projectile/bullet/c65xeno/incendiary/evil

can_be_printed = FALSE


/obj/item/ammo_box/magazine/c65xeno_drum
name = "\improper 6.5mm drum magazine"
desc = "A hefty 120 round drum of 6.5mm frangible rounds, designed for minimal damage to company property."

icon = 'monkestation/icons/obj/weapons/guns/ammo.dmi'
icon_state = "c65xeno_drum"

multiple_sprites = AMMO_BOX_FULL_EMPTY

w_class = WEIGHT_CLASS_BULKY

ammo_type = /obj/item/ammo_casing/c65xeno
caliber = CALIBER_C65XENO
max_ammo = 120

/obj/item/ammo_box/magazine/c65xeno_drum/pierce
name = "\improper 6.5mm AP drum magazine"
desc = "A hefty 120 round drum of 6.5mm saboted tungsten penetrators, designed to punch through multiple targets. Warning: Liable to break windows."

icon = 'monkestation/icons/obj/weapons/guns/ammo.dmi'
icon_state = "c65xeno_drumP"

ammo_type = /obj/item/ammo_casing/c65xeno/pierce
max_ammo = 120

/obj/item/ammo_box/magazine/c65xeno_drum/incendiary
name = "\improper 6.5mm incendiary drum magazine"
desc = "A hefty 120 round drum of 6.5mm rounds tipped with an incendiary compound."

icon = 'monkestation/icons/obj/weapons/guns/ammo.dmi'
icon_state = "c65xeno_drumI"

ammo_type = /obj/item/ammo_casing/c65xeno/incendiary
max_ammo = 120

/obj/item/ammo_box/magazine/c65xeno_drum/evil
name = "\improper 6.5mm FMJ drum magazine"
desc = "A hefty 120 round drum of 6.5mm FMJ rounds."

icon = 'monkestation/icons/obj/weapons/guns/ammo.dmi'
icon_state = "c65xeno_drumevil"

ammo_type = /obj/item/ammo_casing/c65xeno/evil
max_ammo = 120

/obj/item/ammo_box/magazine/c65xeno_drum/pierce/evil
name = "\improper 6.5mm UDS drum magazine"
desc = "A hefty 120 round drum of 6.5mm Uranium Discarding Sabot rounds. No, NOT depleted uranium. Prepare for your enemies to be irradiated."

icon = 'monkestation/icons/obj/weapons/guns/ammo.dmi'
icon_state = "c65xeno_drumPevil"

ammo_type = /obj/item/ammo_casing/c65xeno/pierce/evil
max_ammo = 120

/obj/item/ammo_box/magazine/c65xeno_drum/incendiary/evil
name = "\improper 6.5mm Inferno drum magazine"
desc = "A hefty 120 round drum of 6.5mm inferno rounds. They leave a trail of fire as they fly."

icon = 'monkestation/icons/obj/weapons/guns/ammo.dmi'
icon_state = "c65xeno_drumIevil"

ammo_type = /obj/item/ammo_casing/c65xeno/incendiary/evil
max_ammo = 120
109 changes: 109 additions & 0 deletions monkestation/code/modules/projectiles/guns/ballistic/machine_guns.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
// Base Sol rifle

/obj/item/gun/ballistic/automatic/quarad_lmg
name = "\improper Qarad Light Machinegun"
desc = "A spotless, if outdated machinegun. The same model was used to great effect against xenomorph incursions in the past, hopefully this one doesn't have any manufacturing defects...."

icon = 'monkestation/icons/obj/weapons/guns/guns48x.dmi'
icon_state = "outomaties"

worn_icon = 'monkestation/code/modules/blueshift/icons/mob/company_and_or_faction_based/carwo_defense_systems/guns_worn.dmi'
worn_icon_state = "outomaties"

lefthand_file = 'monkestation/code/modules/blueshift/icons/mob/company_and_or_faction_based/carwo_defense_systems/guns_lefthand.dmi'
righthand_file = 'monkestation/code/modules/blueshift/icons/mob/company_and_or_faction_based/carwo_defense_systems/guns_righthand.dmi'
inhand_icon_state = "outomaties"

bolt_type = BOLT_TYPE_OPEN

accepted_magazine_type = /obj/item/ammo_box/magazine/c65xeno_drum
spawn_magazine_type = /obj/item/ammo_box/magazine/c65xeno_drum

SET_BASE_PIXEL(-8, 0)

special_mags = TRUE

w_class = WEIGHT_CLASS_BULKY
weapon_weight = WEAPON_HEAVY
slot_flags = ITEM_SLOT_BACK | ITEM_SLOT_SUITSTORE

fire_sound = 'monkestation/code/modules/blueshift/sounds/rifle_heavy.ogg'
suppressed_sound = 'monkestation/code/modules/blueshift/sounds/suppressed_rifle.ogg'
can_suppress = TRUE

can_bayonet = FALSE

suppressor_x_offset = 12

actions_types = list()

burst_size = 1
fire_delay = 0.2 SECONDS

recoil = 3
wield_recoil = 0.75
spread = 12.5

/obj/item/gun/ballistic/automatic/quarad_lmg/Initialize(mapload)
. = ..()

give_autofire()

/// Separate proc for handling auto fire just because one of these subtypes isn't otomatica
/obj/item/gun/ballistic/automatic/quarad_lmg/proc/give_autofire()
AddComponent(/datum/component/automatic_fire, fire_delay)

/obj/item/gun/ballistic/automatic/quarad_lmg/examine(mob/user)
. = ..()
. += span_notice("You can <b>examine closer</b> to learn a little more about this weapon.")

/obj/item/gun/ballistic/automatic/quarad_lmg/examine_more(mob/user)
. = ..()

. += "The Qarad light machinegun is an old weapon, dating back to the largest of the \
xenomorph containment efforts. It's specially-tooled 6.5mm cartridges have \
poor effect on humans, being designed for much more durable targets. \
Despite it's age and suboptimal design, it will still spit bullets down-range \
like nothing else. After a string of expensive xenomorph breaches on research stations,\
NT pulled these machine guns out of deep storage, many still in their original packaging."



/obj/item/gun/ballistic/automatic/quarad_lmg/evil
name = "\improper Suspicious Qarad Light Machinegun"
desc = "A heavily modified machinegun, complete with bluespace barrel extender! More bullet per bullet, more barrel per inch!"

icon_state = "outomaties_evil"
worn_icon = 'monkestation/icons/mob/inhands/gunsx48_worn.dmi'
worn_icon_state = "outomaties_evil"
lefthand_file = 'monkestation/icons/mob/inhands/weapons/guns_lefthandx48.dmi'
righthand_file = 'monkestation/icons/mob/inhands/weapons/guns_righthandx48.dmi'
inhand_icon_state = "outomaties_evil"
spawn_magazine_type = /obj/item/ammo_box/magazine/c65xeno_drum/evil
fire_delay = 0.1 SECONDS
recoil = 2
wield_recoil = 0.25
spread = 8
projectile_wound_bonus = 10
projectile_damage_multiplier = 1.3

/obj/item/storage/toolbox/guncase/skyrat/quarad_guncase
name = "\improper Quarad light machinegun storage case"

weapon_to_spawn = /obj/item/gun/ballistic/automatic/quarad_lmg
extra_to_spawn = /obj/item/ammo_box/magazine/c65xeno_drum
var/extra_to_spawn2 = /obj/item/ammo_box/magazine/c65xeno_drum/pierce
var/extra_to_spawn3 = /obj/item/ammo_box/magazine/c65xeno_drum/incendiary

/obj/item/storage/toolbox/guncase/skyrat/quarad_guncase/PopulateContents()
new weapon_to_spawn (src)
new extra_to_spawn (src)
new extra_to_spawn2 (src)
new extra_to_spawn3 (src)

/obj/item/storage/toolbox/guncase/skyrat/quarad_guncase/evil ///Currently unavailable, exists for easy testing and admeming
name = "\improper EVIL Quarad light machinegun storage case"
weapon_to_spawn = /obj/item/gun/ballistic/automatic/quarad_lmg/evil
extra_to_spawn = /obj/item/ammo_box/magazine/c65xeno_drum/evil
extra_to_spawn2 = /obj/item/ammo_box/magazine/c65xeno_drum/pierce/evil
extra_to_spawn3 = /obj/item/ammo_box/magazine/c65xeno_drum/incendiary/evil
Loading

0 comments on commit 59498ef

Please sign in to comment.