mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-28 18:11:16 +00:00
## About The Pull Request What it says on the tin. Practically everything but pistols, SMGs, and traitor weapons can no longer be stashed into bags. I had considered making some large guns that traitors can order (like the blast cannon) also bulky, but concealment is important for some of those things. However, the bulldog shotgun and sniper rifle have been made bulky, because they're shotguns and sniper rifles! Traitor objectives are still normal size and can fit in backpacks. ## Why It's Good For The Game Makes previous changes to weapons and thus balance consistent across our full list of guns. Players can clearly understand what can fit in the bag based on the size of the weapon.
392 lines
12 KiB
Plaintext
392 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/weapons/gun/smg/shot.ogg'
|
|
fire_sound_volume = 90
|
|
vary_fire_sound = FALSE
|
|
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/proto
|
|
name = "\improper Nanotrasen Saber SMG"
|
|
desc = "A prototype three-round burst 9mm submachine gun, designated 'SABR'. Has a threaded barrel for suppressors."
|
|
icon_state = "saber"
|
|
selector_switch_icon = TRUE
|
|
mag_display = TRUE
|
|
empty_indicator = TRUE
|
|
mag_type = /obj/item/ammo_box/magazine/smgm9mm
|
|
pin = null
|
|
bolt_type = BOLT_TYPE_LOCKING
|
|
show_bolt_icon = FALSE
|
|
|
|
/obj/item/gun/ballistic/automatic/proto/unrestricted
|
|
pin = /obj/item/firing_pin
|
|
|
|
/obj/item/gun/ballistic/automatic/update_overlays()
|
|
. = ..()
|
|
if(!selector_switch_icon)
|
|
return
|
|
if(!select)
|
|
. += "[initial(icon_state)]_semi"
|
|
if(select == 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
|
|
to_chat(user, "<span class='notice'>You switch to semi-automatic.</span>")
|
|
else
|
|
burst_size = initial(burst_size)
|
|
fire_delay = initial(fire_delay)
|
|
to_chat(user, "<span class='notice'>You switch to [burst_size]-round burst.</span>")
|
|
|
|
playsound(user, 'sound/weapons/empty.ogg', 100, TRUE)
|
|
update_icon()
|
|
for(var/X in actions)
|
|
var/datum/action/A = X
|
|
A.UpdateButtonIcon()
|
|
|
|
/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
|
|
mag_type = /obj/item/ammo_box/magazine/smgm45
|
|
fire_delay = 2
|
|
burst_size = 3
|
|
pin = /obj/item/firing_pin/implant/pindicate
|
|
can_bayonet = TRUE
|
|
knife_x_offset = 26
|
|
knife_y_offset = 12
|
|
mag_display = TRUE
|
|
mag_display_ammo = TRUE
|
|
empty_indicator = TRUE
|
|
|
|
/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()
|
|
. = ..()
|
|
update_icon()
|
|
|
|
/obj/item/gun/ballistic/automatic/wt550
|
|
name = "security auto rifle"
|
|
desc = "An outdated personal defence weapon. Uses 4.6x30mm rounds and is designated the WT-550 Automatic Rifle."
|
|
icon_state = "wt550"
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
inhand_icon_state = "arg"
|
|
mag_type = /obj/item/ammo_box/magazine/wt550m9
|
|
fire_delay = 2
|
|
can_suppress = FALSE
|
|
burst_size = 0
|
|
actions_types = list()
|
|
can_bayonet = TRUE
|
|
knife_x_offset = 25
|
|
knife_y_offset = 12
|
|
mag_display = TRUE
|
|
mag_display_ammo = TRUE
|
|
empty_indicator = TRUE
|
|
|
|
/obj/item/gun/ballistic/automatic/plastikov
|
|
name = "\improper PP-95 SMG"
|
|
desc = "An ancient 9x19mm submachine gun pattern updated and simplified to lower costs, though perhaps simplified too much."
|
|
icon_state = "plastikov"
|
|
inhand_icon_state = "plastikov"
|
|
mag_type = /obj/item/ammo_box/magazine/plastikov9mm
|
|
burst_size = 5
|
|
spread = 25
|
|
can_suppress = FALSE
|
|
actions_types = list()
|
|
mag_display = TRUE
|
|
empty_indicator = TRUE
|
|
fire_sound = 'sound/weapons/gun/smg/shot_alt.ogg'
|
|
|
|
/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"
|
|
mag_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/weapons/gun/pistol/slide_lock.ogg'
|
|
|
|
/obj/item/gun/ballistic/automatic/m90
|
|
name = "\improper M-90gl Carbine"
|
|
desc = "A three-round burst 5.56 toploading carbine, designated 'M-90gl'. Has an attached underbarrel grenade launcher which can be toggled on and off."
|
|
icon_state = "m90"
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
inhand_icon_state = "m90"
|
|
selector_switch_icon = TRUE
|
|
mag_type = /obj/item/ammo_box/magazine/m556
|
|
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/weapons/gun/smg/shot_alt.ogg'
|
|
|
|
/obj/item/gun/ballistic/automatic/m90/Initialize()
|
|
. = ..()
|
|
underbarrel = new /obj/item/gun/ballistic/revolver/grenadelauncher(src)
|
|
update_icon()
|
|
|
|
/obj/item/gun/ballistic/automatic/m90/unrestricted
|
|
pin = /obj/item/firing_pin
|
|
|
|
/obj/item/gun/ballistic/automatic/m90/unrestricted/Initialize()
|
|
. = ..()
|
|
underbarrel = new /obj/item/gun/ballistic/revolver/grenadelauncher/unrestricted(src)
|
|
update_icon()
|
|
|
|
/obj/item/gun/ballistic/automatic/m90/afterattack(atom/target, mob/living/user, flag, params)
|
|
if(select == 2)
|
|
underbarrel.afterattack(target, user, flag, params)
|
|
else
|
|
return ..()
|
|
|
|
/obj/item/gun/ballistic/automatic/m90/attackby(obj/item/A, mob/user, params)
|
|
if(istype(A, /obj/item/ammo_casing))
|
|
if(istype(A, underbarrel.magazine.ammo_type))
|
|
underbarrel.attack_self(user)
|
|
underbarrel.attackby(A, user, params)
|
|
else
|
|
..()
|
|
|
|
/obj/item/gun/ballistic/automatic/m90/update_overlays()
|
|
. = ..()
|
|
switch(select)
|
|
if(0)
|
|
. += "[initial(icon_state)]_semi"
|
|
if(1)
|
|
. += "[initial(icon_state)]_burst"
|
|
if(2)
|
|
. += "[initial(icon_state)]_gren"
|
|
|
|
/obj/item/gun/ballistic/automatic/m90/burst_select()
|
|
var/mob/living/carbon/human/user = usr
|
|
switch(select)
|
|
if(0)
|
|
select = 1
|
|
burst_size = initial(burst_size)
|
|
fire_delay = initial(fire_delay)
|
|
to_chat(user, "<span class='notice'>You switch to [burst_size]-rnd burst.</span>")
|
|
if(1)
|
|
select = 2
|
|
to_chat(user, "<span class='notice'>You switch to grenades.</span>")
|
|
if(2)
|
|
select = 0
|
|
burst_size = 1
|
|
fire_delay = 0
|
|
to_chat(user, "<span class='notice'>You switch to semi-auto.</span>")
|
|
playsound(user, 'sound/weapons/empty.ogg', 100, TRUE)
|
|
update_icon()
|
|
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
|
|
mag_type = /obj/item/ammo_box/magazine/tommygunm45
|
|
can_suppress = FALSE
|
|
burst_size = 4
|
|
fire_delay = 1
|
|
bolt_type = BOLT_TYPE_OPEN
|
|
empty_indicator = TRUE
|
|
show_bolt_icon = FALSE
|
|
|
|
/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
|
|
mag_type = /obj/item/ammo_box/magazine/m556
|
|
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 7.12x82mm light machine gun, designated 'L6 SAW'. Has 'Aussec Armoury - 2531' engraved on the receiver below the designation."
|
|
icon_state = "l6"
|
|
inhand_icon_state = "l6"
|
|
w_class = WEIGHT_CLASS_HUGE
|
|
slot_flags = 0
|
|
mag_type = /obj/item/ammo_box/magazine/mm712x82
|
|
weapon_weight = WEAPON_HEAVY
|
|
var/cover_open = FALSE
|
|
can_suppress = FALSE
|
|
burst_size = 3
|
|
fire_delay = 1
|
|
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/weapons/gun/l6/shot.ogg'
|
|
rack_sound = 'sound/weapons/gun/l6/l6_rack.ogg'
|
|
suppressed_sound = 'sound/weapons/gun/general/heavy_shot_suppressed.ogg'
|
|
|
|
/obj/item/gun/ballistic/automatic/l6_saw/unrestricted
|
|
pin = /obj/item/firing_pin
|
|
|
|
|
|
/obj/item/gun/ballistic/automatic/l6_saw/ComponentInitialize()
|
|
. = ..()
|
|
AddElement(/datum/element/update_icon_updates_onmob)
|
|
|
|
/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 class='notice'>It seems like you could use an <b>empty hand</b> to remove the magazine.</span>"
|
|
|
|
|
|
/obj/item/gun/ballistic/automatic/l6_saw/AltClick(mob/user)
|
|
if(!user.canUseTopic(src))
|
|
return
|
|
cover_open = !cover_open
|
|
to_chat(user, "<span class='notice'>You [cover_open ? "open" : "close"] [src]'s cover.</span>")
|
|
playsound(src, 'sound/weapons/gun/l6/l6_door.ogg', 60, TRUE)
|
|
update_icon()
|
|
|
|
/obj/item/gun/ballistic/automatic/l6_saw/update_icon_state()
|
|
inhand_icon_state = "[initial(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/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params)
|
|
if(cover_open)
|
|
to_chat(user, "<span class='warning'>[src]'s cover is open! Close it before firing!</span>")
|
|
return
|
|
else
|
|
. = ..()
|
|
update_icon()
|
|
|
|
//ATTACK HAND IGNORING PARENT RETURN VALUE
|
|
/obj/item/gun/ballistic/automatic/l6_saw/attack_hand(mob/user)
|
|
if (loc != user)
|
|
..()
|
|
return
|
|
if (!cover_open)
|
|
to_chat(user, "<span class='warning'>[src]'s cover is closed! Open it before trying to remove the magazine!</span>")
|
|
return
|
|
..()
|
|
|
|
/obj/item/gun/ballistic/automatic/l6_saw/attackby(obj/item/A, mob/user, params)
|
|
if(!cover_open && istype(A, mag_type))
|
|
to_chat(user, "<span class='warning'>[src]'s dust cover prevents a magazine from being fit.</span>")
|
|
return
|
|
..()
|
|
|
|
|
|
|
|
// SNIPER //
|
|
|
|
/obj/item/gun/ballistic/automatic/sniper_rifle
|
|
name = "sniper rifle"
|
|
desc = "A long ranged weapon that does significant damage. No, you can't quickscope."
|
|
icon_state = "sniper"
|
|
w_class = WEIGHT_CLASS_BULKY
|
|
inhand_icon_state = "sniper"
|
|
worn_icon_state = null
|
|
fire_sound = 'sound/weapons/gun/sniper/shot.ogg'
|
|
fire_sound_volume = 90
|
|
vary_fire_sound = FALSE
|
|
load_sound = 'sound/weapons/gun/sniper/mag_insert.ogg'
|
|
rack_sound = 'sound/weapons/gun/sniper/rack.ogg'
|
|
suppressed_sound = 'sound/weapons/gun/general/heavy_shot_suppressed.ogg'
|
|
recoil = 2
|
|
weapon_weight = WEAPON_HEAVY
|
|
mag_type = /obj/item/ammo_box/magazine/sniper_rounds
|
|
fire_delay = 40
|
|
burst_size = 1
|
|
w_class = WEIGHT_CLASS_NORMAL
|
|
zoomable = TRUE
|
|
zoom_amt = 10 //Long range, enough to see in front of you, but no tiles behind you.
|
|
zoom_out_amt = 5
|
|
slot_flags = ITEM_SLOT_BACK
|
|
actions_types = list()
|
|
mag_display = TRUE
|
|
|
|
/obj/item/gun/ballistic/automatic/sniper_rifle/syndicate
|
|
name = "syndicate sniper rifle"
|
|
desc = "An illegally modified .50 cal sniper rifle with suppression compatibility. Quickscoping still doesn't work."
|
|
can_suppress = TRUE
|
|
can_unsuppress = TRUE
|
|
pin = /obj/item/firing_pin/implant/pindicate
|
|
|
|
// 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"
|
|
inhand_icon_state = "moistnugget"
|
|
worn_icon_state = null
|
|
weapon_weight = WEAPON_HEAVY
|
|
mag_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"
|
|
mag_type = /obj/item/ammo_box/magazine/recharge
|
|
mag_display_ammo = TRUE
|
|
fire_delay = 2
|
|
can_suppress = FALSE
|
|
burst_size = 0
|
|
actions_types = list()
|
|
fire_sound = 'sound/weapons/laser.ogg'
|
|
casing_ejector = FALSE
|