mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-21 07:32:02 +00:00
442 lines
15 KiB
Plaintext
442 lines
15 KiB
Plaintext
/obj/item/weapon/gun/projectile/automatic
|
|
name = "prototype SMG"
|
|
desc = "A protoype lightweight, fast firing gun. Uses 9mm rounds."
|
|
icon_state = "saber" //ugly
|
|
w_class = 3
|
|
load_method = SPEEDLOADER //yup. until someone sprites a magazine for it.
|
|
max_shells = 22
|
|
caliber = "9mm"
|
|
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2)
|
|
slot_flags = SLOT_BELT
|
|
ammo_type = /obj/item/ammo_casing/c9mm
|
|
accuracy = 1
|
|
multi_aim = 1
|
|
burst_delay = 2
|
|
sel_mode = 1
|
|
|
|
firemodes = list(
|
|
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
|
|
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=2, burst_accuracy=list(1,0,0), dispersion=list(0, 10, 15)),
|
|
list(mode_name="short bursts", burst=5, fire_delay=null, move_delay=3, burst_accuracy=list(1,0,,-1,-1), dispersion=list(5, 10, 15, 20))
|
|
)
|
|
|
|
//Submachine guns and personal defence weapons, go.
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/mini_uzi
|
|
name = ".45 machine pistol"
|
|
desc = "The UZI is a lightweight, fast firing gun. For when you want someone dead. Uses .45 rounds."
|
|
icon_state = "mini-uzi"
|
|
w_class = 3
|
|
load_method = MAGAZINE
|
|
magazine_type = /obj/item/ammo_magazine/c45uzi
|
|
allowed_magazines = list(/obj/item/ammo_magazine/c45uzi)
|
|
max_shells = 16
|
|
caliber = ".45"
|
|
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
|
|
ammo_type = /obj/item/ammo_casing/c45
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/mini_uzi/update_icon()
|
|
..()
|
|
icon_state = (ammo_magazine)? "mini-uzi" : "mini-uzi-e"
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/c20r
|
|
name = "submachine gun"
|
|
desc = "The C-20r is a lightweight and rapid firing SMG, for when you REALLY need someone dead. Uses 10mm rounds. Has a 'Scarborough Arms - Per falcis, per pravitas' buttstamp."
|
|
icon_state = "c20r"
|
|
item_state = "c20r"
|
|
w_class = 3
|
|
force = 10
|
|
caliber = "10mm"
|
|
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
|
|
slot_flags = SLOT_BELT|SLOT_BACK
|
|
fire_sound = 'sound/weapons/gunshot_pistol.ogg'
|
|
load_method = MAGAZINE
|
|
magazine_type = /obj/item/ammo_magazine/a10mm
|
|
allowed_magazines = list(/obj/item/ammo_magazine/a10mm)
|
|
auto_eject = 1
|
|
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/c20r/update_icon()
|
|
..()
|
|
if(ammo_magazine)
|
|
icon_state = "c20r-[round(ammo_magazine.stored_ammo.len,4)]"
|
|
else
|
|
icon_state = "c20r"
|
|
return
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/wt550
|
|
name = "machine pistol"
|
|
desc = "The NI 550 Saber is a cheap self-defense weapon, mass-produced by Necropolis Industries for paramilitary and private use. Uses 9mm rounds."
|
|
icon_state = "wt550"
|
|
item_state = "wt550"
|
|
w_class = 3
|
|
caliber = "9mm"
|
|
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2)
|
|
slot_flags = SLOT_BELT
|
|
ammo_type = "/obj/item/ammo_casing/c9mmr"
|
|
fire_sound = 'sound/weapons/gunshot_pistol.ogg'
|
|
load_method = MAGAZINE
|
|
magazine_type = /obj/item/ammo_magazine/mc9mmt/rubber
|
|
allowed_magazines = list(/obj/item/ammo_magazine/mc9mmt)
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/wt550/update_icon()
|
|
..()
|
|
if(ammo_magazine)
|
|
icon_state = "wt550-[round(ammo_magazine.stored_ammo.len,4)]"
|
|
else
|
|
icon_state = "wt550"
|
|
return
|
|
|
|
//Ballistic rifles, go.
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle
|
|
name = "automatic rifle"
|
|
desc = "A weapon firing an intermediate caliber round, or larger."
|
|
icon_state = "arifle"
|
|
item_state = null
|
|
w_class = 4
|
|
force = 10
|
|
caliber = "a762"
|
|
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
|
|
slot_flags = SLOT_BACK
|
|
load_method = MAGAZINE
|
|
fire_sound = 'sound/weapons/rifleshot.ogg'
|
|
magazine_type = /obj/item/ammo_magazine/c762
|
|
allowed_magazines = list(/obj/item/ammo_magazine/c762)
|
|
|
|
firemodes = list(
|
|
list(mode_name="semiauto", burst=1, fire_delay=10, move_delay=null, burst_accuracy=null, dispersion=null),
|
|
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=2, burst_accuracy=list(1,0,0), dispersion=list(0, 5, 10)),
|
|
list(mode_name="short bursts", burst=5, fire_delay=null, move_delay=3, burst_accuracy=list(1,0,0,-1,-1), dispersion=list(5, 5, 15))
|
|
)
|
|
|
|
//slower to regain aim, more inaccurate if not wielding
|
|
fire_delay = 10
|
|
accuracy = -1
|
|
|
|
//wielding information
|
|
fire_delay_wielded = 6
|
|
accuracy_wielded = 2
|
|
|
|
//action button for wielding
|
|
action_button_name = "Wield rifle"
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/can_wield()
|
|
return 1
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/ui_action_click()
|
|
if(src in usr)
|
|
toggle_wield(usr)
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/verb/wield_rifle()
|
|
set name = "Wield rifle"
|
|
set category = "Object"
|
|
set src in usr
|
|
|
|
toggle_wield(usr)
|
|
usr.update_icon()
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/sts35
|
|
name = "assault rifle"
|
|
desc = "A durable, rugged looking automatic weapon of a make popular on the frontier worlds. Uses 7.62mm rounds. It is unmarked."
|
|
can_bayonet = TRUE
|
|
knife_x_offset = 23
|
|
knife_y_offset = 13
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/sts35/update_icon()
|
|
..()
|
|
icon_state = (ammo_magazine)? "arifle" : "arifle-empty"
|
|
if(wielded)
|
|
item_state = (ammo_magazine)? "arifle-wielded" : "arifle-wielded-empty"
|
|
else
|
|
item_state = (ammo_magazine)? "arifle" : "arifle-empty"
|
|
update_held_icon()
|
|
|
|
/datum/firemode/z8
|
|
var/use_launcher = 0
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/z8
|
|
name = "bullpup assault carbine"
|
|
desc = "The Z8 Bulldog bullpup carbine, made by the now defunct Zendai Foundries. Uses armor piercing 5.56mm rounds. Makes you feel like a space marine when you hold it."
|
|
icon_state = "carbine"
|
|
item_state = "z8carbine"
|
|
w_class = 4
|
|
force = 10
|
|
caliber = "a556"
|
|
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 3)
|
|
ammo_type = "/obj/item/ammo_casing/a556"
|
|
fire_sound = 'sound/weapons/rifleshot.ogg'
|
|
slot_flags = SLOT_BACK
|
|
load_method = MAGAZINE
|
|
magazine_type = /obj/item/ammo_magazine/a556
|
|
allowed_magazines = list(/obj/item/ammo_magazine/a556)
|
|
auto_eject = 1
|
|
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
|
|
|
|
can_bayonet = TRUE
|
|
knife_x_offset = 23
|
|
knife_y_offset = 13
|
|
|
|
burst_delay = 4
|
|
firemodes = list(
|
|
list(mode_name="semiauto", burst=1, fire_delay=10, move_delay=null, use_launcher=null, burst_accuracy=null, dispersion=null),
|
|
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=3, use_launcher=null, burst_accuracy=list(2,1,1), dispersion=list(0, 7.5)),
|
|
list(mode_name="fire grenades", burst=null, fire_delay=null, move_delay=null, use_launcher=1, burst_accuracy=null, dispersion=null)
|
|
)
|
|
|
|
var/use_launcher = 0
|
|
var/obj/item/weapon/gun/launcher/grenade/underslung/launcher
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/z8/Initialize()
|
|
. = ..()
|
|
launcher = new(src)
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/z8/attackby(obj/item/I, mob/user)
|
|
if((istype(I, /obj/item/weapon/grenade)))
|
|
launcher.load(I, user)
|
|
else
|
|
..()
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/z8/attack_hand(mob/user)
|
|
if(user.get_inactive_hand() == src && use_launcher)
|
|
launcher.unload(user)
|
|
else
|
|
..()
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/z8/Fire(atom/target, mob/living/user, params, pointblank=0, reflex=0)
|
|
if(use_launcher)
|
|
launcher.Fire(target, user, params, pointblank, reflex)
|
|
if(!launcher.chambered)
|
|
switch_firemodes() //switch back automatically
|
|
else
|
|
..()
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/z8/update_icon()
|
|
..()
|
|
if(ammo_magazine)
|
|
icon_state = "carbine-[round(ammo_magazine.stored_ammo.len,2)]"
|
|
else
|
|
icon_state = "carbine"
|
|
if(wielded)
|
|
item_state = "z8carbine-wielded"
|
|
else
|
|
item_state = "z8carbine"
|
|
update_held_icon()
|
|
return
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/z8/examine(mob/user)
|
|
..()
|
|
if(launcher.chambered)
|
|
user << "\The [launcher] has \a [launcher.chambered] loaded."
|
|
else
|
|
user << "\The [launcher] is empty."
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/l6_saw
|
|
name = "light machine gun"
|
|
desc = "A rather traditionally made L6 SAW with a pleasantly lacquered wooden pistol grip. Has 'Aussec Armoury- 2431' engraved on the receiver"
|
|
icon_state = "l6closed100"
|
|
item_state = "l6closedmag"
|
|
w_class = 4
|
|
force = 10
|
|
slot_flags = 0
|
|
max_shells = 50
|
|
caliber = "a762"
|
|
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 2)
|
|
slot_flags = SLOT_BACK
|
|
ammo_type = "/obj/item/ammo_casing/a762"
|
|
allowed_magazines = list(/obj/item/ammo_magazine/a762)
|
|
fire_sound = 'sound/weapons/gunshot_saw.ogg'
|
|
load_method = MAGAZINE
|
|
magazine_type = /obj/item/ammo_magazine/a762
|
|
|
|
firemodes = list(
|
|
list(mode_name="short bursts", burst=5, move_delay=4, burst_accuracy = list(1,0,0,-1,-1), dispersion = list(3, 6, 9)),
|
|
list(mode_name="long bursts", burst=8, move_delay=5, burst_accuracy = list(1,0,0,-1,-1,-1,-2,-2), dispersion = list(8))
|
|
)
|
|
|
|
var/cover_open = 0
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/l6_saw/special_check(mob/user)
|
|
if(cover_open)
|
|
user << "<span class='warning'>[src]'s cover is open! Close it before firing!</span>"
|
|
return 0
|
|
return ..()
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/l6_saw/proc/toggle_cover(mob/user)
|
|
cover_open = !cover_open
|
|
user << "<span class='notice'>You [cover_open ? "open" : "close"] [src]'s cover.</span>"
|
|
if(cover_open)
|
|
playsound(user, 'sound/weapons/sawopen.ogg', 60, 1)
|
|
else
|
|
playsound(user, 'sound/weapons/sawclose.ogg', 60, 1)
|
|
update_icon()
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/l6_saw/attack_self(mob/user as mob)
|
|
if(cover_open)
|
|
toggle_cover(user) //close the cover
|
|
else
|
|
return ..() //once closed, behave like normal
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/l6_saw/attack_hand(mob/user as mob)
|
|
if(!cover_open && user.get_inactive_hand() == src)
|
|
toggle_cover(user) //open the cover
|
|
else
|
|
return ..() //once open, behave like normal
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/l6_saw/update_icon()
|
|
icon_state = "l6[cover_open ? "open" : "closed"][ammo_magazine ? round(ammo_magazine.stored_ammo.len*2, 25) : "-empty"]"
|
|
if(wielded)
|
|
item_state = "l6closedmag-wielded"
|
|
else
|
|
item_state = initial(item_state)
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/l6_saw/load_ammo(var/obj/item/A, mob/user)
|
|
if(!cover_open)
|
|
user << "<span class='warning'>You need to open the cover to load [src].</span>"
|
|
return
|
|
..()
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/l6_saw/unload_ammo(mob/user, var/allow_dump=1)
|
|
if(!cover_open)
|
|
user << "<span class='warning'>You need to open the cover to unload [src].</span>"
|
|
return
|
|
..()
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/tommygun
|
|
name = "vintage submachine gun"
|
|
desc = "A classic Thompson submachine gun, ya see? Uses .45 rounds."
|
|
icon_state = "tommygun"
|
|
w_class = 3
|
|
max_shells = 50
|
|
caliber = ".45"
|
|
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
|
|
slot_flags = SLOT_BELT
|
|
ammo_type = /obj/item/ammo_casing/c45
|
|
load_method = MAGAZINE
|
|
magazine_type = /obj/item/ammo_magazine/tommymag
|
|
allowed_magazines = list(/obj/item/ammo_magazine/tommymag, /obj/item/ammo_magazine/tommydrum)
|
|
fire_sound = 'sound/weapons/tommygun_shoot.ogg'
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/tommygun/update_icon()
|
|
..()
|
|
icon_state = (ammo_magazine)? "tommygun" : "tommygun-empty"
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/railgun
|
|
name = "railgun"
|
|
desc = "An advanced rifle that magnetically propels hyperdense rods at breakneck speeds to devastating effect."
|
|
icon_state = "railgun"
|
|
item_state = "railgun"
|
|
w_class = 4
|
|
force = 10
|
|
caliber = "trod"
|
|
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 7)
|
|
slot_flags = SLOT_BELT|SLOT_BACK
|
|
fire_sound = 'sound/effects/Explosion2.ogg'
|
|
load_method = MAGAZINE
|
|
magazine_type = /obj/item/ammo_magazine/trodpack
|
|
allowed_magazines = list(/obj/item/ammo_magazine/trodpack)
|
|
auto_eject = 1
|
|
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
|
|
|
|
firemodes = list(
|
|
list(mode_name="single coil", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
|
|
list(mode_name="dual coil", burst=2, move_delay=5, accuracy = list(-2,-3), dispersion = list(20))
|
|
)
|
|
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/terminator
|
|
name = "flechette rifle"
|
|
desc = "A fearsome Necropolis Industries designed rifle with unattached bayonet that fires lethal flechette rounds."
|
|
icon = 'icons/obj/terminator.dmi'
|
|
icon_state = "flechetterifle"
|
|
item_state = "flechetterifle"
|
|
contained_sprite = 1
|
|
w_class = 5
|
|
force = 30
|
|
caliber = "flechette"
|
|
slot_flags = SLOT_BELT|SLOT_BACK
|
|
fire_sound = 'sound/weapons/Gunshot_DMR.ogg'
|
|
load_method = MAGAZINE
|
|
magazine_type = /obj/item/ammo_magazine/flechette
|
|
allowed_magazines = list(/obj/item/ammo_magazine/flechette,/obj/item/ammo_magazine/flechette/explosive)
|
|
auto_eject = 1
|
|
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
|
|
|
|
firemodes = list(
|
|
list(mode_name="semiauto", burst=1, move_delay=null, burst_accuracy=null, dispersion=null),
|
|
list(mode_name="3-round bursts", burst=3, move_delay=2, burst_accuracy=list(2,1,1), dispersion=list(0, 10, 15)),
|
|
list(mode_name="short bursts", burst=5, move_delay=3, burst_accuracy=list(2,1,1,0,0), dispersion=list(5, 10, 15))
|
|
)
|
|
|
|
|
|
fire_delay = 20
|
|
accuracy = -1
|
|
|
|
//wielding information
|
|
fire_delay_wielded = 5
|
|
accuracy_wielded = 2
|
|
scoped_accuracy = 2
|
|
|
|
action_button_name = "Wield rifle"
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/terminator/verb/scope()
|
|
set category = "Object"
|
|
set name = "Use Scope"
|
|
set popup_menu = 1
|
|
|
|
if(wielded)
|
|
toggle_scope(2.0, usr)
|
|
else
|
|
usr << "<span class='warning'>You can't look through the scope without stabilizing the rifle!</span>"
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/terminator/can_wield()
|
|
return 1
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/terminator/ui_action_click()
|
|
if(src in usr)
|
|
toggle_wield(usr)
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/terminator/verb/wield_rifle()
|
|
set name = "Wield rifle"
|
|
set category = "Object"
|
|
set src in usr
|
|
|
|
toggle_wield(usr)
|
|
usr.update_icon()
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/shotgun
|
|
name = "assault shotgun"
|
|
desc = "A experimental, semi-automatic combat shotgun, designed for boarding operations and law enforcement agencies."
|
|
icon = 'icons/obj/dragunov.dmi' //lazy but works fine
|
|
icon_state = "cshotgun"
|
|
item_state = "cshotgun"
|
|
contained_sprite = 1
|
|
w_class = 4
|
|
load_method = MAGAZINE
|
|
max_shells = 8
|
|
caliber = "shotgun"
|
|
magazine_type = /obj/item/ammo_magazine/assault_shotgun
|
|
allowed_magazines = list(/obj/item/ammo_magazine/assault_shotgun)
|
|
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 4, TECH_ILLEGAL = 5)
|
|
slot_flags = SLOT_BACK
|
|
auto_eject = 1
|
|
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
|
|
recoil = 3
|
|
fire_sound = 'sound/weapons/shotgun_shoot.ogg'
|
|
|
|
accuracy = -2
|
|
fire_delay = 10
|
|
recoil_wielded = 0
|
|
|
|
fire_delay_wielded = 6
|
|
accuracy_wielded = 0
|
|
|
|
firemodes = list(
|
|
list(mode_name="semiauto", burst=1, fire_delay= 10, move_delay=null, burst_accuracy=null, dispersion=null),
|
|
list(mode_name="3-round bursts", burst=3, fire_delay=null, move_delay=3, burst_accuracy=list(0,-1,-1), dispersion=list(0, 10, 15))
|
|
)
|
|
|
|
/obj/item/weapon/gun/projectile/automatic/rifle/shotgun/update_icon()
|
|
..()
|
|
icon_state = (ammo_magazine)? "cshotgun" : "cshotgun-empty"
|