Files
Bubberstation/code/modules/projectiles/guns/ballistic/automatic.dm
grungussuss ec1eb8bd64 ballistics handling sounds try 2 (#87053)
## About The Pull Request
just trying to salvage https://github.com/tgstation/tgstation/pull/85603
mostly


https://github.com/user-attachments/assets/32f4634a-ff76-4a4e-9ddb-7607e1e7a2d0
## Why It's Good For The Game
more sound variety
## Changelog
🆑 grungussuss
sound: ballistics have new handling sounds
/🆑
2024-11-11 00:43:41 -08:00

355 lines
12 KiB
Plaintext

/obj/item/gun/ballistic/automatic
w_class = WEIGHT_CLASS_NORMAL
can_suppress = TRUE
burst_size = 3
fire_delay = 2
actions_types = list(/datum/action/item_action/toggle_firemode)
semi_auto = TRUE
fire_sound = 'sound/items/weapons/gun/smg/shot.ogg'
fire_sound_volume = 90
rack_sound = 'sound/items/weapons/gun/smg/smgrack.ogg'
suppressed_sound = 'sound/items/weapons/gun/smg/shot_suppressed.ogg'
burst_fire_selection = TRUE
drop_sound = 'sound/items/handling/gun/ballistics/smg/smg_drop1.ogg'
pickup_sound = 'sound/items/handling/gun/ballistics/smg/smg_pickup1.ogg'
/obj/item/gun/ballistic/automatic/proto
name = "\improper Nanotrasen Saber SMG"
desc = "A prototype full-auto 9mm submachine gun, designated 'SABR'. Has a threaded barrel for suppressors."
icon_state = "saber"
burst_size = 1
actions_types = list()
mag_display = TRUE
empty_indicator = TRUE
accepted_magazine_type = /obj/item/ammo_box/magazine/smgm9mm
pin = null
bolt_type = BOLT_TYPE_LOCKING
show_bolt_icon = FALSE
/obj/item/gun/ballistic/automatic/proto/Initialize(mapload)
. = ..()
AddComponent(/datum/component/automatic_fire, 0.2 SECONDS)
/obj/item/gun/ballistic/automatic/proto/unrestricted
pin = /obj/item/firing_pin
/obj/item/gun/ballistic/automatic/c20r
name = "\improper C-20r SMG"
desc = "A bullpup three-round burst .45 SMG, designated 'C-20r'. Has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp."
icon_state = "c20r"
inhand_icon_state = "c20r"
selector_switch_icon = TRUE
accepted_magazine_type = /obj/item/ammo_box/magazine/smgm45
fire_delay = 2
burst_size = 3
pin = /obj/item/firing_pin/implant/pindicate
mag_display = TRUE
mag_display_ammo = TRUE
empty_indicator = TRUE
/obj/item/gun/ballistic/automatic/c20r/add_bayonet_point()
AddComponent(/datum/component/bayonet_attachable, offset_x = 26, offset_y = 12)
/obj/item/gun/ballistic/automatic/c20r/update_overlays()
. = ..()
if(!chambered && empty_indicator) //this is duplicated due to a layering issue with the select fire icon.
. += "[icon_state]_empty"
/obj/item/gun/ballistic/automatic/c20r/unrestricted
pin = /obj/item/firing_pin
/obj/item/gun/ballistic/automatic/c20r/Initialize(mapload)
. = ..()
update_appearance()
/obj/item/gun/ballistic/automatic/wt550
name = "\improper WT-550 Autorifle"
desc = "Recalled by Nanotrasen due to public backlash around heat distribution resulting in unintended discombobulation. \
This outcry was fabricated through various Syndicate-backed misinformation operations to force Nanotrasen to abandon \
its ballistics weapon program, cornering them into the energy weapons market. Most often found today in the hands of pirates, \
underfunded security personnel, cargo technicians, theoritical physicists and gang bangers out on the rim. \
Light-weight and fully automatic. Uses 4.6x30mm rounds."
icon_state = "wt550"
w_class = WEIGHT_CLASS_BULKY
inhand_icon_state = "arg"
accepted_magazine_type = /obj/item/ammo_box/magazine/wt550m9
fire_delay = 2
can_suppress = FALSE
burst_size = 1
actions_types = list()
mag_display = TRUE
mag_display_ammo = TRUE
empty_indicator = TRUE
/obj/item/gun/ballistic/automatic/wt550/Initialize(mapload)
. = ..()
AddComponent(/datum/component/automatic_fire, 0.3 SECONDS)
/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/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()
bolt_type = BOLT_TYPE_LOCKING
can_suppress = FALSE
mag_display = TRUE
empty_indicator = TRUE
click_on_low_ammo = FALSE
/// List of the possible firing sounds
var/list/firing_sound_list = list(
'sound/items/weapons/gun/smartgun/smartgun_shoot_1.ogg',
'sound/items/weapons/gun/smartgun/smartgun_shoot_2.ogg',
'sound/items/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"
desc = "A lightweight, burst-fire submachine gun, for when you really want someone dead. Uses 9mm rounds."
icon_state = "miniuzi"
accepted_magazine_type = /obj/item/ammo_box/magazine/uzim9mm
burst_size = 2
bolt_type = BOLT_TYPE_OPEN
show_bolt_icon = FALSE
mag_display = TRUE
rack_sound = 'sound/items/weapons/gun/pistol/slide_lock.ogg'
/**
* Weak uzi for syndicate chimps. It comes in a 4 TC kit.
* Roughly 9 damage per bullet every 0.2 seconds, equaling out to downing an opponent in a bit over a second, if they have no armor.
*/
/obj/item/gun/ballistic/automatic/mini_uzi/chimpgun
name = "\improper MONK-10"
desc = "Developed by Syndicate monkeys, for syndicate Monkeys. Despite the name, this weapon resembles an Uzi significantly more than a MAC-10. Uses 9mm rounds. There's a label on the other side of the gun that says \"Do what comes natural.\""
projectile_damage_multiplier = 0.4
projectile_wound_bonus = -25
pin = /obj/item/firing_pin/monkey
/obj/item/gun/ballistic/automatic/m90
name = "\improper M-90gl Carbine"
desc = "A three-round burst .223 toploading carbine, designated 'M-90gl'. Has an attached underbarrel grenade launcher."
desc_controls = "Right-click to use grenade launcher."
icon_state = "m90"
w_class = WEIGHT_CLASS_BULKY
inhand_icon_state = "m90"
selector_switch_icon = TRUE
accepted_magazine_type = /obj/item/ammo_box/magazine/m223
can_suppress = FALSE
var/obj/item/gun/ballistic/revolver/grenadelauncher/underbarrel
burst_size = 3
fire_delay = 2
spread = 5
pin = /obj/item/firing_pin/implant/pindicate
mag_display = TRUE
empty_indicator = TRUE
fire_sound = 'sound/items/weapons/gun/smg/shot_alt.ogg'
/obj/item/gun/ballistic/automatic/m90/Initialize(mapload)
. = ..()
underbarrel = new /obj/item/gun/ballistic/revolver/grenadelauncher(src)
update_appearance()
/obj/item/gun/ballistic/automatic/m90/Destroy()
QDEL_NULL(underbarrel)
return ..()
/obj/item/gun/ballistic/automatic/m90/unrestricted
pin = /obj/item/firing_pin
/obj/item/gun/ballistic/automatic/m90/unrestricted/Initialize(mapload)
. = ..()
underbarrel = new /obj/item/gun/ballistic/revolver/grenadelauncher/unrestricted(src)
update_appearance()
/obj/item/gun/ballistic/automatic/m90/try_fire_gun(atom/target, mob/living/user, params)
if(LAZYACCESS(params2list(params), RIGHT_CLICK))
return underbarrel.try_fire_gun(target, user, params)
return ..()
/obj/item/gun/ballistic/automatic/m90/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
if(isammocasing(tool))
if(istype(tool, underbarrel.magazine.ammo_type))
underbarrel.attack_self(user)
underbarrel.attackby(tool, user, list2params(modifiers))
return ITEM_INTERACT_BLOCKING
return ..()
/obj/item/gun/ballistic/automatic/tommygun
name = "\improper Thompson SMG"
desc = "Based on the classic 'Chicago Typewriter'."
icon_state = "tommygun"
inhand_icon_state = "shotgun"
selector_switch_icon = TRUE
w_class = WEIGHT_CLASS_BULKY
slot_flags = 0
accepted_magazine_type = /obj/item/ammo_box/magazine/tommygunm45
can_suppress = FALSE
burst_size = 1
actions_types = list()
fire_delay = 1
bolt_type = BOLT_TYPE_OPEN
empty_indicator = TRUE
show_bolt_icon = FALSE
/// Rate of fire, set on initialize only
var/rof = 0.1 SECONDS
/obj/item/gun/ballistic/automatic/tommygun/Initialize(mapload)
. = ..()
AddComponent(/datum/component/automatic_fire, rof)
/**
* Weak tommygun for syndicate chimps. It comes in a 4 TC kit.
* Roughly 9 damage per bullet every 0.2 seconds, equaling out to downing an opponent in a bit over a second, if they have no armor.
*/
/obj/item/gun/ballistic/automatic/tommygun/chimpgun
name = "\improper Typewriter"
desc = "It was the best of times, it was the BLURST of times!? You stupid monkeys!"
fire_delay = 2
rof = 0.2 SECONDS
projectile_damage_multiplier = 0.4
projectile_wound_bonus = -25
pin = /obj/item/firing_pin/monkey
/obj/item/gun/ballistic/automatic/ar
name = "\improper NT-ARG 'Boarder'"
desc = "A robust assault rifle used by Nanotrasen fighting forces."
icon_state = "arg"
inhand_icon_state = "arg"
slot_flags = 0
accepted_magazine_type = /obj/item/ammo_box/magazine/m223
can_suppress = FALSE
burst_size = 3
fire_delay = 1
// L6 SAW //
/obj/item/gun/ballistic/automatic/l6_saw
name = "\improper L6 SAW"
desc = "A heavily modified 7mm light machine gun, designated 'L6 SAW'. Has 'Aussec Armoury - 2531' engraved on the receiver below the designation."
icon_state = "l6"
inhand_icon_state = "l6closedmag"
base_icon_state = "l6"
w_class = WEIGHT_CLASS_HUGE
slot_flags = 0
accepted_magazine_type = /obj/item/ammo_box/magazine/m7mm
weapon_weight = WEAPON_HEAVY
burst_size = 1
actions_types = list()
can_suppress = FALSE
spread = 7
pin = /obj/item/firing_pin/implant/pindicate
bolt_type = BOLT_TYPE_OPEN
show_bolt_icon = FALSE
mag_display = TRUE
mag_display_ammo = TRUE
tac_reloads = FALSE
fire_sound = 'sound/items/weapons/gun/l6/shot.ogg'
rack_sound = 'sound/items/weapons/gun/l6/l6_rack.ogg'
suppressed_sound = 'sound/items/weapons/gun/general/heavy_shot_suppressed.ogg'
var/cover_open = FALSE
/obj/item/gun/ballistic/automatic/l6_saw/unrestricted
pin = /obj/item/firing_pin
/obj/item/gun/ballistic/automatic/l6_saw/Initialize(mapload)
. = ..()
AddElement(/datum/element/update_icon_updates_onmob)
AddComponent(/datum/component/automatic_fire, 0.2 SECONDS)
/obj/item/gun/ballistic/automatic/l6_saw/examine(mob/user)
. = ..()
. += "<b>alt + click</b> to [cover_open ? "close" : "open"] the dust cover."
if(cover_open && magazine)
. += span_notice("It seems like you could use an <b>empty hand</b> to remove the magazine.")
/obj/item/gun/ballistic/automatic/l6_saw/click_alt(mob/user)
cover_open = !cover_open
balloon_alert(user, "cover [cover_open ? "opened" : "closed"]")
playsound(src, 'sound/items/weapons/gun/l6/l6_door.ogg', 60, TRUE)
update_appearance()
return CLICK_ACTION_SUCCESS
/obj/item/gun/ballistic/automatic/l6_saw/update_icon_state()
. = ..()
inhand_icon_state = "[base_icon_state][cover_open ? "open" : "closed"][magazine ? "mag":"nomag"]"
/obj/item/gun/ballistic/automatic/l6_saw/update_overlays()
. = ..()
. += "l6_door_[cover_open ? "open" : "closed"]"
/obj/item/gun/ballistic/automatic/l6_saw/try_fire_gun(atom/target, mob/living/user, params)
if(cover_open)
balloon_alert(user, "close the cover!")
return FALSE
. = ..()
if(.)
update_appearance()
return .
//ATTACK HAND IGNORING PARENT RETURN VALUE
/obj/item/gun/ballistic/automatic/l6_saw/attack_hand(mob/user, list/modifiers)
if (loc != user)
..()
return
if (!cover_open)
balloon_alert(user, "open the cover!")
return
..()
/obj/item/gun/ballistic/automatic/l6_saw/attackby(obj/item/A, mob/user, params)
if(!cover_open && istype(A, accepted_magazine_type))
balloon_alert(user, "open the cover!")
return
..()
// Old Semi-Auto Rifle //
/obj/item/gun/ballistic/automatic/surplus
name = "surplus rifle"
desc = "One of countless obsolete ballistic rifles that still sees use as a cheap deterrent. Uses 10mm ammo and its bulky frame prevents one-hand firing."
icon_state = "surplus"
worn_icon_state = null
weapon_weight = WEAPON_HEAVY
accepted_magazine_type = /obj/item/ammo_box/magazine/m10mm/rifle
fire_delay = 30
burst_size = 1
can_unsuppress = TRUE
can_suppress = TRUE
w_class = WEIGHT_CLASS_HUGE
slot_flags = ITEM_SLOT_BACK
actions_types = list()
mag_display = TRUE
// Laser rifle (rechargeable magazine) //
/obj/item/gun/ballistic/automatic/laser
name = "laser rifle"
desc = "Though sometimes mocked for the relatively weak firepower of their energy weapons, the logistic miracle of rechargeable ammunition has given Nanotrasen a decisive edge over many a foe."
icon_state = "oldrifle"
w_class = WEIGHT_CLASS_BULKY
inhand_icon_state = "arg"
accepted_magazine_type = /obj/item/ammo_box/magazine/recharge
empty_indicator = TRUE
fire_delay = 2
can_suppress = FALSE
burst_size = 0
actions_types = list()
fire_sound = 'sound/items/weapons/laser.ogg'
casing_ejector = FALSE