Skip to content

Commit

Permalink
Replaces my old and crusty pp-95 with the cool new nukeops tech on th…
Browse files Browse the repository at this point in the history
…e block, smart SMGs (tgstation#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
:cl:
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
/:cl:
  • Loading branch information
Paxilmaniac authored Jul 29, 2024
1 parent fc2c6e3 commit b98afcd
Show file tree
Hide file tree
Showing 17 changed files with 93 additions and 40 deletions.
4 changes: 2 additions & 2 deletions _maps/RandomRuins/SpaceRuins/infested_frigate.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -856,7 +856,7 @@
icon_state = "floor5-old"
},
/obj/item/ammo_casing/spent,
/obj/item/gun/ballistic/automatic/plastikov,
/obj/item/gun/ballistic/automatic/smartgun,
/obj/effect/mob_spawn/corpse/human/syndicatepilot,
/turf/open/floor/mineral/plastitanium/red,
/area/ruin/space/has_grav/infested_frigate)
Expand Down Expand Up @@ -2790,7 +2790,7 @@
icon_state = "plastitaniumtiny"
},
/mob/living/basic/alien/queen/large{
loot = list(/obj/effect/gibspawner/xeno,/obj/item/ammo_box/magazine/plastikov9mm,/obj/effect/mob_spawn/corpse/human/syndicatecommando/soft_suit);
loot = list(/obj/effect/gibspawner/xeno,/obj/item/ammo_box/magazine/smartgun,/obj/effect/mob_spawn/corpse/human/syndicatecommando/soft_suit);
desc = "What you saw in your dreams last night.";
faction = list("syndicate","xenomorph")
},
Expand Down
4 changes: 3 additions & 1 deletion code/__DEFINES/projectiles.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,10 @@
#define CALIBER_A7MM "a7mm"
/// The caliber used by the [security auto-rifle][/obj/item/gun/ballistic/automatic/wt550].
#define CALIBER_46X30MM "4.6x30mm"
/// The caliber used by the Nanotrasen Saber SMG, PP-95 SMG and Type U3 Uzi. Also used as the default caliber for pistols but only the stechkin APS machine pistol doesn't override it.
/// The caliber used by the Nanotrasen Saber SMG and Type U3 Uzi. Also used as the default caliber for pistols but only the stechkin APS machine pistol doesn't override it.
#define CALIBER_9MM "9mm"
/// The caliber used by smart SMG ammunition
#define CALIBER_160SMART ".160 Smart"
/// The caliber used as the default for ballistic guns. Only not overridden for the [surplus rifle][/obj/item/gun/ballistic/automatic/surplus].
#define CALIBER_10MM "10mm"
/// The caliber used by most revolver variants.
Expand Down
11 changes: 5 additions & 6 deletions code/game/objects/items/storage/toolbox.dm
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,11 @@
weapon_to_spawn = /obj/item/gun/ballistic/automatic/c20r
extra_to_spawn = /obj/item/ammo_box/magazine/smgm45

/obj/item/storage/toolbox/guncase/smartgun
name = "adielle smartgun case"
weapon_to_spawn = /obj/item/gun/ballistic/automatic/smartgun
extra_to_spawn = /obj/item/ammo_box/magazine/smartgun

/obj/item/storage/toolbox/guncase/clandestine
name = "clandestine gun case"
weapon_to_spawn = /obj/item/gun/ballistic/automatic/pistol/clandestine
Expand Down Expand Up @@ -442,12 +447,6 @@
weapon_to_spawn = /obj/effect/spawner/random/sakhno
extra_to_spawn = /obj/effect/spawner/random/sakhno/ammo

/obj/item/storage/toolbox/guncase/soviet/plastikov
name = "ancient surplus gun case"
desc = "A gun case. Has the symbol of the Third Soviet Union stamped on the side."
weapon_to_spawn = /obj/item/gun/ballistic/automatic/plastikov
extra_to_spawn = /obj/item/food/rationpack //sorry comrade, cannot get you more ammo, here, have lunch

/obj/item/storage/toolbox/guncase/monkeycase
name = "monkey gun case"
desc = "Everything a monkey needs to truly go ape-shit. There's a paw-shaped hand scanner lock on the front of the case."
Expand Down
4 changes: 2 additions & 2 deletions code/modules/antagonists/nukeop/outfits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -102,8 +102,8 @@
name = "Syndicate Operative - Reinforcement"
tc = 0
backpack_contents = list(
/obj/item/gun/ballistic/automatic/plastikov = 1,
/obj/item/ammo_box/magazine/plastikov9mm = 2,
/obj/item/gun/ballistic/automatic/smartgun = 1,
/obj/item/ammo_box/magazine/smartgun = 2,
)
var/faction = "The Syndicate"

Expand Down
21 changes: 19 additions & 2 deletions code/modules/projectiles/ammunition/ballistic/pistol.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -49,11 +49,28 @@
desc = "A 9mm incendiary bullet casing."
projectile_type = /obj/projectile/bullet/incendiary/c9mm


// .50AE (Desert Eagle)

/obj/item/ammo_casing/a50ae
name = ".50AE bullet casing"
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)
18 changes: 8 additions & 10 deletions code/modules/projectiles/boxes_magazines/external/smg.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
35 changes: 24 additions & 11 deletions code/modules/projectiles/guns/ballistic/automatic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
22 changes: 22 additions & 0 deletions code/modules/projectiles/projectile/bullets/pistol.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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
14 changes: 8 additions & 6 deletions code/modules/uplink/uplink_items/nukeops.dm
Original file line number Diff line number Diff line change
Expand Up @@ -373,16 +373,18 @@
//Meme weapons: Literally just weapons used as a joke, shouldn't be particularly expensive.

/datum/uplink_item/weapon_kits/surplus_smg
name = "Surplus SMG Case (Flukie)"
desc = "A horribly outdated automatic weapon. Why would you want to use this? Comes with...rations."
item = /obj/item/gun/ballistic/automatic/plastikov
name = "Surplus Smart-SMG (Flukie)"
desc = "An outdated smart-SMG with limited stopping power, however it's bullets will gradually track towards whatever \
the gun was shot at. This does require you to actually aim at the person you are shooting at before firing, but \
surely a highly trained operative such as yourself can manage that."
item = /obj/item/gun/ballistic/automatic/smartgun
cost = 2
purchasable_from = UPLINK_SERIOUS_OPS

/datum/uplink_item/ammo_nuclear/surplus_smg
name = "Surplus SMG Magazine (Surplus)"
desc = "A cylindrical magazine designed for the PP-95 SMG."
item = /obj/item/ammo_box/magazine/plastikov9mm
name = "Surplus Smart-SMG Magazine (Smartgun)"
desc = "A large box magazine made for use in the Abielle smart-SMG."
item = /obj/item/ammo_box/magazine/smartgun
cost = 1
purchasable_from = UPLINK_SERIOUS_OPS
uplink_item_flags = SYNDIE_TRIPS_CONTRABAND
Expand Down
Binary file modified icons/mob/inhands/weapons/guns_lefthand.dmi
Binary file not shown.
Binary file modified icons/mob/inhands/weapons/guns_righthand.dmi
Binary file not shown.
Binary file modified icons/obj/weapons/guns/ammo.dmi
Binary file not shown.
Binary file modified icons/obj/weapons/guns/ballistic.dmi
Binary file not shown.
Binary file modified icons/obj/weapons/guns/projectiles.dmi
Binary file not shown.
Binary file not shown.
Binary file added sound/weapons/gun/smartgun/smartgun_shoot_2.ogg
Binary file not shown.
Binary file added sound/weapons/gun/smartgun/smartgun_shoot_3.ogg
Binary file not shown.

0 comments on commit b98afcd

Please sign in to comment.