Replaces my old and crusty pp-95 with the cool new nukeops tech on the block, smart SMGs (#85211)

## About The Pull Request


![image](https://github.com/user-attachments/assets/c399db0d-c8b8-4f0e-b20d-e81e153a4fac)

![smart
bullet](https://github.com/user-attachments/assets/02af6174-f967-487c-b5ee-90c73300d179)

Adds the Abielle Smart-SMG to replace the pp-95 entirely.

The Abielle performs nearly identically to the pp-95 in nearly all
aspects, doing 0.5 less damage because it's not a projectile modifier on
9mm anymore.

What the Abielle does do majorly differently, is give it's bullets a
slight homing ability VS whatever you clicked on. This keeps the weapon
equally useless to it's predecessor at spraying blindly down hallways,
while rewarding careful aim with bullets that slightly track the target.

## Why It's Good For The Game

The surplus smg sucks, and I don't mean performance-wise (although it
certainly does, that's the idea). The surplus smg sucks because
typically you would be better suited using it as a melee weapon due to
the inaccuracy and low damage. Making the cheapo "I forgot to buy a
weapon" gun practically useless is super punishing especially for newer
ops who might not remember to buy a weapon first. The smartgun makes the
surplus smg still pretty shit compared to the other nukeops guns that
can down a man nearly instantly, but means that reinforcements or broke
ass nukeops can still be relatively effective so long as they can click
on a spaceman across the screen.

## Changelog
🆑
balance: The nukeops surplus smg, the pp-95, has been reworked into the
Abielle Smart-SMG. It performs nearly identically to the pp-95, however
it's projectiles get a slight homing ability towards whatever you click
on.
sound: New firing sounds for the surplus smg, credit to the m41 sound
effects from tgmc
image: New sprites for the surplus smg, made by me
/🆑
This commit is contained in:
Paxilmaniac
2024-07-29 17:31:18 +01:00
committed by GitHub
parent fc2c6e3512
commit b98afcd140
17 changed files with 93 additions and 40 deletions
@@ -26,7 +26,7 @@
desc = "A 10mm reaper bullet casing."
projectile_type = /obj/projectile/bullet/c10mm/reaper
// 9mm (Makarov, Stechkin APS, PP-95)
// 9mm (Makarov, Stechkin APS)
/obj/item/ammo_casing/c9mm
name = "9mm bullet casing"
@@ -49,7 +49,6 @@
desc = "A 9mm incendiary bullet casing."
projectile_type = /obj/projectile/bullet/incendiary/c9mm
// .50AE (Desert Eagle)
/obj/item/ammo_casing/a50ae
@@ -57,3 +56,21 @@
desc = "A .50AE bullet casing."
caliber = CALIBER_50AE
projectile_type = /obj/projectile/bullet/a50ae
// .160 Smart (Abielle smartgun)
/obj/item/ammo_casing/c160smart
name = ".160 smart bullet casing"
desc = "A .160 smart bullet with a small charge of booster propellant at the bottom."
icon_state = "smartgun_casing"
caliber = CALIBER_160SMART
projectile_type = /obj/projectile/bullet/c160smart
/obj/item/ammo_casing/c160smart/Initialize(mapload)
. = ..()
AddElement(/datum/element/caseless)
/obj/item/ammo_casing/c160smart/ready_proj(atom/target, mob/living/user, quiet, zone_override, atom/fired_from)
. = ..()
if(!isturf(target))
loaded_projectile.set_homing_target(target)
+8 -10
View File
@@ -30,18 +30,16 @@
. = ..()
icon_state = "[base_icon_state]-[round(ammo_count(), 4)]"
/obj/item/ammo_box/magazine/plastikov9mm
name = "PP-95 magazine (9mm)"
icon_state = "9x19-50"
base_icon_state = "9x19"
ammo_type = /obj/item/ammo_casing/c9mm
caliber = CALIBER_9MM
/obj/item/ammo_box/magazine/smartgun
name = "Abielle magazine (.160 Smart)"
icon_state = "smartgun"
base_icon_state = "smartgun"
ammo_type = /obj/item/ammo_casing/c160smart
multiple_sprites = AMMO_BOX_FULL_EMPTY
multiple_sprite_use_base = TRUE
caliber = CALIBER_160SMART
max_ammo = 50
/obj/item/ammo_box/magazine/plastikov9mm/update_icon_state()
. = ..()
icon_state = "[base_icon_state]-[ammo_count() ? 50 : 0]"
/obj/item/ammo_box/magazine/uzim9mm
name = "uzi magazine (9mm)"
icon_state = "uzi9mm-32"
@@ -86,20 +86,33 @@
/obj/item/gun/ballistic/automatic/wt550/add_bayonet_point()
AddComponent(/datum/component/bayonet_attachable, offset_x = 25, offset_y = 12)
/obj/item/gun/ballistic/automatic/plastikov
name = "\improper PP-95 SMG"
desc = "An ancient 9mm submachine gun pattern updated and simplified to lower costs, though perhaps simplified too much."
icon_state = "plastikov"
inhand_icon_state = "plastikov"
accepted_magazine_type = /obj/item/ammo_box/magazine/plastikov9mm
burst_size = 5
spread = 25
can_suppress = FALSE
/obj/item/gun/ballistic/automatic/smartgun
name = "\improper Abielle Smart-SMG"
desc = "An old experiment in smart-weapon technology that guides bullets towards the target the gun was aimed at when fired. \
While the tracking functions worked fine, the gun is prone to insanely wide spread thanks to it's practically non-existant barrel."
icon_state = "smartgun"
inhand_icon_state = "smartgun"
accepted_magazine_type = /obj/item/ammo_box/magazine/smartgun
burst_size = 4
fire_delay = 1
spread = 40
dual_wield_spread = 20
actions_types = list()
projectile_damage_multiplier = 0.35 //It's like 10.5 damage per bullet, it's close enough to 10 shots
bolt_type = BOLT_TYPE_LOCKING
can_suppress = FALSE
mag_display = TRUE
empty_indicator = TRUE
fire_sound = 'sound/weapons/gun/smg/shot_alt.ogg'
click_on_low_ammo = FALSE
/// List of the possible firing sounds
var/list/firing_sound_list = list(
'sound/weapons/gun/smartgun/smartgun_shoot_1.ogg',
'sound/weapons/gun/smartgun/smartgun_shoot_2.ogg',
'sound/weapons/gun/smartgun/smartgun_shoot_3.ogg',
)
/obj/item/gun/ballistic/automatic/smartgun/fire_sounds()
var/picked_fire_sound = pick(firing_sound_list)
playsound(src, picked_fire_sound, fire_sound_volume, vary_fire_sound)
/obj/item/gun/ballistic/automatic/mini_uzi
name = "\improper Type U3 Uzi"
@@ -71,3 +71,25 @@
impact_light_intensity = 5
impact_light_range = 1
impact_light_color_override = LIGHT_COLOR_DIM_YELLOW
// .160 Smart
/obj/projectile/bullet/c160smart
name = ".160 smart bullet"
icon_state = "smartgun"
damage = 10
embed_type = /datum/embed_data/bullet_c160smart
speed = 2
homing_turn_speed = 5
homing_inaccuracy_min = 4
homing_inaccuracy_max = 10
/datum/embed_data/bullet_c160smart
embed_chance = 10
fall_chance = 5
jostle_chance = 3
ignore_throwspeed_threshold = TRUE
pain_stam_pct = 0.25
pain_mult = 3
jostle_pain_mult = 6
rip_time = 5