mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-29 23:17:28 +01:00
Merge branch 'master' into upstream-merge-8298
This commit is contained in:
@@ -246,3 +246,39 @@
|
||||
magazine_icondata_keys[M.type] = icon_keys
|
||||
magazine_icondata_states[M.type] = ammo_states
|
||||
|
||||
/*
|
||||
* Ammo Boxes
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box
|
||||
name = "ammo box"
|
||||
desc = "A box that holds some kind of ammo."
|
||||
icon = 'icons/obj/ammo_boxes.dmi'
|
||||
icon_state = "pistol"
|
||||
slot_flags = null //You can't fit a box on your belt
|
||||
item_state = "paper"
|
||||
matter = null
|
||||
throwforce = 3
|
||||
throw_speed = 5
|
||||
throw_range = 12
|
||||
preserve_item = 1
|
||||
caliber = ".357"
|
||||
drop_sound = 'sound/items/drop/matchbox.ogg'
|
||||
pickup_sound = 'sound/items/pickup/matchbox.ogg'
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/AltClick(mob/user)
|
||||
if(can_remove_ammo)
|
||||
if(isliving(user) && Adjacent(user))
|
||||
if(stored_ammo.len)
|
||||
var/obj/item/ammo_casing/C = stored_ammo[stored_ammo.len]
|
||||
stored_ammo-=C
|
||||
user.put_in_hands(C)
|
||||
user.visible_message("\The [user] removes \a [C] from [src].", "<span class='notice'>You remove \a [C] from [src].</span>")
|
||||
update_icon()
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/examine(mob/user)
|
||||
. = ..()
|
||||
|
||||
. += to_chat(usr, "<span class='notice'>Alt-click to extract contents</span>")
|
||||
@@ -0,0 +1,554 @@
|
||||
/************************************************************************/
|
||||
/*
|
||||
# An explaination of the naming format for guns and ammo:
|
||||
#
|
||||
# a = Ammo, as in individual rounds of ammunition.
|
||||
# b = Box, intended to have ammo taken out one at a time by hand.
|
||||
# c = Clips, intended to reload magazines or guns quickly.
|
||||
# m = Magazine, intended to hold rounds of ammo.
|
||||
# s = Speedloaders, intended to reload guns quickly.
|
||||
#
|
||||
# Use this format, followed by the caliber. For example, a shotgun's caliber
|
||||
# variable is "12g" as a result. Ergo, a shotgun round's path would have "a12g",
|
||||
# or a magazine with shotgun shells would be "m12g" instead. To avoid confusion
|
||||
# for developers and in-game admins spawning these items, stick to this format.
|
||||
# Likewise, when creating new rounds, the caliber variable should match whatever
|
||||
# the name says.
|
||||
#
|
||||
# This comment is copied in rounds.dm and magazines.dm as well.
|
||||
#
|
||||
# Also, to remove bullets from ammo boxes, use Alt-Click on the box.
|
||||
*/
|
||||
/************************************************************************/
|
||||
|
||||
/*
|
||||
* Foam
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/foam
|
||||
name = "\improper Donk-Soft ammo box"
|
||||
desc = "Contains Donk-Soft foam darts. It's Donk or Don't! Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "foambox"
|
||||
caliber = "foam"
|
||||
ammo_type = /obj/item/ammo_casing/afoam_dart
|
||||
matter = list(MAT_PLASTIC = 1800)
|
||||
max_ammo = 30
|
||||
multiple_sprites = null
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/foam/riot
|
||||
name = "\improper Donk-Soft riot ammo box"
|
||||
desc = "Contains Donk-Soft riot darts. It's Donk or Don't! Ages 18 and up."
|
||||
icon_state = "foambox_riot"
|
||||
matter = list(MAT_STEEL = 5040, MAT_PLASTIC = 1800)
|
||||
|
||||
/*
|
||||
* Cap
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/cap
|
||||
name = "\improper AlliCo SNAP! Caps"
|
||||
desc = "A box of spare caps for capguns. Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "capbox"
|
||||
caliber = "caps"
|
||||
ammo_type = /obj/item/ammo_casing/cap
|
||||
matter = list(MAT_STEEL = 2040)
|
||||
max_ammo = 24
|
||||
multiple_sprites = null
|
||||
|
||||
/*
|
||||
* .357
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b357
|
||||
name = "ammo box (.357)"
|
||||
desc = "A box of .357 rounds"
|
||||
icon_state = "magnum"
|
||||
caliber = ".357"
|
||||
ammo_type = /obj/item/ammo_casing/a357
|
||||
matter = list(MAT_STEEL = 5040)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b357/rubber
|
||||
name = "ammo box (.357 rubber)"
|
||||
desc = "A box of .357 rubber rounds"
|
||||
icon_state = "magnum_r"
|
||||
caliber = ".357"
|
||||
ammo_type = /obj/item/ammo_casing/a357/rubber
|
||||
matter = list(MAT_STEEL = 5040)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/*
|
||||
* .38
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b38
|
||||
name = "ammo box (.38)"
|
||||
desc = "A box of .38 rounds"
|
||||
icon_state = "pistol"
|
||||
caliber = ".38"
|
||||
ammo_type = /obj/item/ammo_casing/a38
|
||||
matter = list(MAT_STEEL = 1440)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b38/rubber
|
||||
name = "ammo box (.38 rubber)"
|
||||
desc = "A box of .38 rubber rounds"
|
||||
icon_state = "pistol_p"
|
||||
caliber = ".38"
|
||||
ammo_type = /obj/item/ammo_casing/a38/rubber
|
||||
matter = list(MAT_STEEL = 1440)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/*
|
||||
* 10mm
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b10mm
|
||||
name = "ammo box (10mm)"
|
||||
desc = "A box of 10mm rounds"
|
||||
icon_state = "box10mm"
|
||||
caliber = "10mm"
|
||||
ammo_type = /obj/item/ammo_casing/a10mm
|
||||
matter = list(MAT_STEEL = 3000)
|
||||
max_ammo = 40
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b10mm/practice
|
||||
name = "ammo box (10mm practice)"
|
||||
desc = "A box of 10mm practice rounds"
|
||||
icon_state = "box10mm-practice"
|
||||
caliber = "10mm"
|
||||
ammo_type = /obj/item/ammo_casing/a10mm/practice
|
||||
matter = list(MAT_STEEL = 2400)
|
||||
max_ammo = 40
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b10mm/rubber
|
||||
name = "ammo box (10mm rubber)"
|
||||
desc = "A box of 10mm rubber rounds"
|
||||
icon_state = "box10mm-rubber"
|
||||
caliber = "10mm"
|
||||
ammo_type = /obj/item/ammo_casing/a10mm/rubber
|
||||
matter = list(MAT_STEEL = 2400)
|
||||
max_ammo = 40
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b10mm/emp
|
||||
name = "ammo box (10mm haywire)"
|
||||
desc = "A box of 10mm haywire rounds"
|
||||
icon_state = "box10mm-hw"
|
||||
caliber = "10mm"
|
||||
ammo_type = /obj/item/ammo_casing/a10mm/emp
|
||||
matter = list(MAT_STEEL = 5200, MAT_URANIUM = 4000)
|
||||
max_ammo = 40
|
||||
multiple_sprites = 1
|
||||
|
||||
/*
|
||||
* .44
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b44
|
||||
name = "ammo box (.44)"
|
||||
desc = "A box of .44 rounds"
|
||||
icon_state = "box44"
|
||||
caliber = ".44"
|
||||
ammo_type = /obj/item/ammo_casing/a44
|
||||
matter = list(MAT_STEEL = 5040)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b44/rubber
|
||||
name = "ammo box (.44 rubber)"
|
||||
desc = "A box of .44 rubber rounds"
|
||||
icon_state = "box44-rubber"
|
||||
caliber = ".44"
|
||||
ammo_type = /obj/item/ammo_casing/a44/rubber
|
||||
matter = list(MAT_STEEL = 1440)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/*
|
||||
* .45
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b45
|
||||
name = "ammo box (.45)"
|
||||
desc = "A box of .45 rounds"
|
||||
icon_state = "pistol_s"
|
||||
caliber = ".45"
|
||||
ammo_type = /obj/item/ammo_casing/a45
|
||||
matter = list(MAT_STEEL = 1800)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b45/practice
|
||||
name = "ammo box (.45 practice)"
|
||||
desc = "A box of .45 practice rounds"
|
||||
icon_state = "pistol_p"
|
||||
caliber = ".45"
|
||||
ammo_type = /obj/item/ammo_casing/a45/practice
|
||||
matter = list(MAT_STEEL = 1440)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b45/ap
|
||||
name = "ammo box (.45 AP)"
|
||||
desc = "A box of .45 armor-piercing rounds"
|
||||
icon_state = "pistol_ap"
|
||||
caliber = ".45"
|
||||
ammo_type = /obj/item/ammo_casing/a45/ap
|
||||
matter = list(MAT_STEEL = 1200, MAT_PLASTEEL = 600)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b45/hp
|
||||
name = "ammo box (.45 HP)"
|
||||
desc = "A box of .45 hollow-point rounds"
|
||||
icon_state = "pistol_hp"
|
||||
caliber = ".45"
|
||||
ammo_type = /obj/item/ammo_casing/a45/hp
|
||||
matter = list(MAT_STEEL = 1440, MAT_PLASTIC = 360)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b45/rubber
|
||||
name = "ammo box (.45 rubber)"
|
||||
desc = "A box of .45 rubber rounds"
|
||||
icon_state = "pistol_r"
|
||||
caliber = ".45"
|
||||
ammo_type = /obj/item/ammo_casing/a45/rubber
|
||||
matter = list(MAT_STEEL = 1440)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b45/emp
|
||||
name = "ammo box (.45 haywire)"
|
||||
desc = "A box of .45 haywire rounds"
|
||||
icon_state = "pistol_hw"
|
||||
caliber = ".45"
|
||||
ammo_type = /obj/item/ammo_casing/a45/emp
|
||||
matter = list(MAT_STEEL = 3120, MAT_URANIUM = 2400)
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/*
|
||||
* 12g (aka shotgun ammo)
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b12g
|
||||
name = "ammo box (12 gauge slug)"
|
||||
desc = "A box of 12 gauge slug rounds"
|
||||
icon_state = "slug"
|
||||
caliber = "12g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g
|
||||
matter = list(MAT_STEEL = 2880)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/pellet
|
||||
name = "ammo box (12 gauge buckshot)"
|
||||
desc = "A box of 12 gauge buckshot rounds"
|
||||
icon_state = "buckshot"
|
||||
caliber = "12g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/pellet
|
||||
matter = list(MAT_STEEL = 2880)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/beanbag
|
||||
name = "ammo box (12 gauge beanbag)"
|
||||
desc = "A box of 12 gauge beanbag rounds"
|
||||
icon_state = "bean"
|
||||
caliber = "12g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/beanbag
|
||||
matter = list(MAT_STEEL = 1440)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/stunshell
|
||||
name = "ammo box (12 gauge stun)"
|
||||
desc = "A box of 12 gauge stun rounds"
|
||||
icon_state = "stunslug"
|
||||
caliber = "12g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/stunshell
|
||||
matter = list(MAT_STEEL = 2880, MAT_GLASS = 5760)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/emp
|
||||
name = "ammo box (12 gauge EMP)"
|
||||
desc = "A box of 12 gauge EMP rounds"
|
||||
icon_state = "emp"
|
||||
caliber = "12g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/emp
|
||||
matter = list(MAT_STEEL = 2880, MAT_URANIUM = 1920)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/flechette
|
||||
name = "ammo box (12 gauge flechette)"
|
||||
desc = "A box of 12 gauge flechette rounds"
|
||||
icon_state = "bean"
|
||||
caliber = "12g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/flechette
|
||||
matter = list(MAT_STEEL = 2880, MAT_PLASTEEL = 800)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/practice
|
||||
name = "ammo box (12 gauge practice)"
|
||||
desc = "A box of 12 gauge practice rounds"
|
||||
icon_state = "practice"
|
||||
caliber = "12g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/practice
|
||||
matter = list(MAT_STEEL = 480)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/blank
|
||||
name = "ammo box (12 gauge blank)"
|
||||
desc = "A box of 12 gauge blank rounds"
|
||||
icon_state = "blank"
|
||||
caliber = "12g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/blank
|
||||
matter = list(MAT_STEEL = 720)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b12g/flash
|
||||
name = "ammo box (12 gauge flash)"
|
||||
desc = "A box of 12 gauge flash rounds"
|
||||
icon_state = "flash"
|
||||
caliber = "12g"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/flash
|
||||
matter = list(MAT_STEEL = 720, MAT_GLASS = 720)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/*
|
||||
* 14.5mm (anti-materiel rifle round)
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b145
|
||||
desc = "ammo box (14.5mm)"
|
||||
desc = "A box of 14.5mm rounds"
|
||||
icon_state = "sniper"
|
||||
caliber = "14.5mm"
|
||||
ammo_type = /obj/item/ammo_casing/a145
|
||||
matter = list(MAT_STEEL = 8750)
|
||||
max_ammo = 7
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b145/highvel
|
||||
desc = "ammo box (14.5mm sabot)"
|
||||
desc = "A box of 14.5mm sabot rounds"
|
||||
icon_state = "sniper"
|
||||
caliber = "14.5mm"
|
||||
ammo_type = /obj/item/ammo_casing/a145
|
||||
matter = list(MAT_STEEL = 8750)
|
||||
max_ammo = 7
|
||||
multiple_sprites = 1
|
||||
|
||||
/*
|
||||
* 7.62mm
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b762
|
||||
name = "ammo box (7.62mm)"
|
||||
desc = "A box of 7.62mm rounds"
|
||||
icon_state = "rifle"
|
||||
caliber = "7.62mm"
|
||||
ammo_type = /obj/item/ammo_casing/a762
|
||||
matter = list(MAT_STEEL = 6000)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b762/hp
|
||||
name = "ammo box (7.62mm HP)"
|
||||
desc = "A box of 7.62mm hollow-point rounds"
|
||||
icon_state = "rifle_hp"
|
||||
caliber = "7.62mm"
|
||||
ammo_type = /obj/item/ammo_casing/a762/hp
|
||||
matter = list(MAT_STEEL = 9000)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b762/ap
|
||||
name = "ammo box (7.62mm AP)"
|
||||
desc = "A box of 7.62mm armor-piercing rounds"
|
||||
icon_state = "rifle_ap"
|
||||
caliber = "7.62mm"
|
||||
ammo_type = /obj/item/ammo_casing/a762/ap
|
||||
matter = list(MAT_STEEL = 9000)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b762/practice
|
||||
name = "ammo box (7.62mm practice)"
|
||||
desc = "A box of 7.62mm practice rounds"
|
||||
icon_state = "rifle_p"
|
||||
caliber = "7.62mm"
|
||||
ammo_type = /obj/item/ammo_casing/a762/practice
|
||||
matter = list(MAT_STEEL = 2700)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b762/hunter
|
||||
name = "ammo box (7.62mm hunter)"
|
||||
desc = "A box of 7.62mm hunter rounds"
|
||||
icon_state = "rifle_hunter"
|
||||
caliber = "7.62mm"
|
||||
ammo_type = /obj/item/ammo_casing/a762/hunter
|
||||
matter = list(MAT_STEEL = 6000)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b762/surplus
|
||||
name = "ammo wrap (7.62mm)"
|
||||
desc = "A paper wrap of 7.62mm rounds"
|
||||
icon_state = "paper_wrap"
|
||||
caliber = "7.62mm"
|
||||
ammo_type = /obj/item/ammo_casing/a762
|
||||
matter = list(MAT_STEEL = 1600)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b762/surplus/blank
|
||||
name = "ammo wrap (7.62mm blank)"
|
||||
desc = "A paper wrap of 7.62mm blank rounds"
|
||||
icon_state = "paper_wrap"
|
||||
caliber = "7.62mm"
|
||||
ammo_type = /obj/item/ammo_casing/a762/blank
|
||||
matter = list(MAT_STEEL = 720)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b762/surplus/hunter
|
||||
name = "ammo wrap (7.62mm hunter)"
|
||||
desc = "A paper wrap of 7.62mm hunter rounds"
|
||||
icon_state = "paper_wrap"
|
||||
caliber = "7.62mm"
|
||||
ammo_type = /obj/item/ammo_casing/a762/hunter
|
||||
matter = list(MAT_STEEL = 1600)
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/*
|
||||
* 5.45mm
|
||||
*/
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545
|
||||
name = "ammo box (5.45mm)"
|
||||
desc = "A box of 5.45mm rounds"
|
||||
icon_state = "hrifle"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545
|
||||
matter = list(MAT_STEEL = 5400)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/ap
|
||||
name = "ammo box (5.45mm AP)"
|
||||
desc = "A box of 5.45mm armor-piercing rounds"
|
||||
icon_state = "hrifle-ap"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545/ap
|
||||
matter = list(MAT_STEEL = 8100)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/hp
|
||||
name = "ammo box (5.45mm HP)"
|
||||
desc = "A box of 5.45mm hollow-point rounds"
|
||||
icon_state = "hrifle-hp"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545/hp
|
||||
matter = list(MAT_STEEL = 5400)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/practice
|
||||
name = "ammo box (5.45mm practice)"
|
||||
desc = "A box of 5.45mm practice rounds"
|
||||
icon_state = "hrifle-practice"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545/practice
|
||||
matter = list(MAT_STEEL = 2700)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/hunter
|
||||
name = "ammo box (5.45mm hunter)"
|
||||
desc = "A box of 5.45mm hunter rounds"
|
||||
icon_state = "hrifle-hunter"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545/hunter
|
||||
matter = list(MAT_STEEL = 5400)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/blank
|
||||
name = "ammo box (5.45mm blank)"
|
||||
desc = "A box of 5.45mm blank rounds"
|
||||
icon_state = "hrifle-practice"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545/blank
|
||||
matter = list(MAT_STEEL = 2700)
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/large
|
||||
name = "ammo box (5.45mm)"
|
||||
desc = "A steel box of 5.45mm rounds"
|
||||
icon_state = "boxhrifle"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545
|
||||
matter = list(MAT_STEEL = 18000)
|
||||
max_ammo = 100
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/large/ap
|
||||
name = "ammo box (5.45mm AP)"
|
||||
desc = "A steel box of 5.45mm armor-piercing rounds"
|
||||
icon_state = "boxhrifle-ap"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545/ap
|
||||
matter = list(MAT_STEEL = 27000)
|
||||
max_ammo = 100
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/large/hp
|
||||
name = "ammo box (5.45mm HP)"
|
||||
desc = "A steel box of 5.45mm hollow-point rounds"
|
||||
icon_state = "boxhrifle-hp"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545/hp
|
||||
matter = list(MAT_STEEL = 18000)
|
||||
max_ammo = 100
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/large/practice
|
||||
name = "ammo box (5.45mm practice)"
|
||||
desc = "A steel box of 5.45mm practice rounds"
|
||||
icon_state = "boxhrifle-practice"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545/practice
|
||||
matter = list(MAT_STEEL = 9000)
|
||||
max_ammo = 100
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/ammo_box/b545/large/hunter
|
||||
name = "ammo box (5.45mm hunter)"
|
||||
desc = "A steel box of 5.45mm hunter rounds"
|
||||
icon_state = "boxhrifle-hunter"
|
||||
caliber = "5.45mm"
|
||||
ammo_type = /obj/item/ammo_casing/a545/hunter
|
||||
matter = list(MAT_STEEL = 18000)
|
||||
max_ammo = 100
|
||||
multiple_sprites = 1
|
||||
@@ -3,7 +3,7 @@
|
||||
# An explaination of the naming format for guns and ammo:
|
||||
#
|
||||
# a = Ammo, as in individual rounds of ammunition.
|
||||
# b = Box, intended to have ammo taken out one at a time by hand. Really obsolete. Don't use this.
|
||||
# b = Box, intended to have ammo taken out one at a time by hand.
|
||||
# c = Clips, intended to reload magazines or guns quickly.
|
||||
# m = Magazine, intended to hold rounds of ammo.
|
||||
# s = Speedloaders, intended to reload guns quickly.
|
||||
@@ -15,14 +15,50 @@
|
||||
# Likewise, when creating new rounds, the caliber variable should match whatever
|
||||
# the name says.
|
||||
#
|
||||
# This comment is copied in rounds.dm as well.
|
||||
# This comment is copied in rounds.dm and ammo_boxes.dm as well.
|
||||
#
|
||||
# Also, if a magazine is only meant for a specific gun, include the name
|
||||
# of the specific gun in the path. Example: m45uzi is only for the Uzi.
|
||||
*/
|
||||
/************************************************************************/
|
||||
|
||||
///////// Foam /////////
|
||||
|
||||
/obj/item/ammo_magazine/mfoam_dart/pistol
|
||||
name = "\improper Donk-Soft pistol magazine"
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "toy"
|
||||
mag_type = MAGAZINE
|
||||
ammo_type = /obj/item/ammo_casing/afoam_dart
|
||||
matter = list(MAT_PLASTIC = 250)
|
||||
caliber = "foam"
|
||||
max_ammo = 9
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/mfoam_dart/pistol/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/mfoam_dart/pistol/riot
|
||||
ammo_type = /obj/item/ammo_casing/afoam_dart/riot
|
||||
|
||||
// SMG
|
||||
/obj/item/ammo_magazine/mfoam_dart/smg
|
||||
name = "\improper Donk-Soft smg magazine"
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "toysmg"
|
||||
mag_type = MAGAZINE
|
||||
ammo_type = /obj/item/ammo_casing/afoam_dart
|
||||
matter = list(MAT_PLASTIC = 250)
|
||||
caliber = "foam"
|
||||
max_ammo = 20
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/mfoam_dart/smg/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/mfoam_dart/smg/riot
|
||||
ammo_type = /obj/item/ammo_casing/afoam_dart/riot
|
||||
matter = list(MAT_PLASTIC = 1260, MAT_PLASTIC = 250)
|
||||
|
||||
///////// .357 /////////
|
||||
|
||||
@@ -36,6 +72,21 @@
|
||||
max_ammo = 6
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/s357/stun
|
||||
name = "speedloader (.357 stun)"
|
||||
icon_state = "T38"
|
||||
ammo_type = /obj/item/ammo_casing/a357/stun
|
||||
|
||||
/obj/item/ammo_magazine/s357/rubber
|
||||
name = "speedloader (.357 rubber)"
|
||||
icon_state = "T38"
|
||||
ammo_type = /obj/item/ammo_casing/a357/rubber
|
||||
|
||||
/obj/item/ammo_magazine/s357/flash
|
||||
name = "speedloader (.357 flash)"
|
||||
icon_state = "S38"
|
||||
ammo_type = /obj/item/ammo_casing/a357/flash
|
||||
|
||||
///////// .38 /////////
|
||||
|
||||
/obj/item/ammo_magazine/s38
|
||||
@@ -96,6 +147,7 @@
|
||||
name = "ammunition box (.45 haywire)"
|
||||
ammo_type = /obj/item/ammo_casing/a45/emp
|
||||
|
||||
// Uzi
|
||||
/obj/item/ammo_magazine/m45uzi
|
||||
name = "stick magazine (.45)"
|
||||
icon_state = "uzi45"
|
||||
@@ -109,14 +161,16 @@
|
||||
/obj/item/ammo_magazine/m45uzi/empty
|
||||
initial_ammo = 0
|
||||
|
||||
// Tommy Gun
|
||||
/obj/item/ammo_magazine/m45tommy
|
||||
name = "Tommy Gun magazine (.45)"
|
||||
icon_state = "tommy-mag"
|
||||
icon_state = "tomstick"
|
||||
mag_type = MAGAZINE
|
||||
ammo_type = /obj/item/ammo_casing/a45
|
||||
matter = list(MAT_STEEL = 1500)
|
||||
caliber = ".45"
|
||||
max_ammo = 20
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m45tommy/ap
|
||||
name = "Tommy Gun magazine (.45 AP)"
|
||||
@@ -127,21 +181,23 @@
|
||||
|
||||
/obj/item/ammo_magazine/m45tommydrum
|
||||
name = "Tommy Gun drum magazine (.45)"
|
||||
icon_state = "tommy-drum"
|
||||
icon_state = "tomdrum"
|
||||
w_class = ITEMSIZE_NORMAL // Bulky ammo doesn't fit in your pockets!
|
||||
mag_type = MAGAZINE
|
||||
ammo_type = /obj/item/ammo_casing/a45
|
||||
matter = list(MAT_STEEL = 3750)
|
||||
caliber = ".45"
|
||||
max_ammo = 50
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m45tommydrum/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m45tommydrum/ap
|
||||
name = "Tommy Gun drum magazine (.45 AP)"
|
||||
ammo_type = /obj/item/ammo_casing/a45/ap
|
||||
|
||||
/obj/item/ammo_magazine/m45tommydrum/empty
|
||||
initial_ammo = 0
|
||||
|
||||
// Stripper Clip
|
||||
/obj/item/ammo_magazine/clip/c45
|
||||
name = "ammo clip (.45)"
|
||||
icon_state = "clip_pistol"
|
||||
@@ -164,13 +220,14 @@
|
||||
name = "ammo clip (.45 flash)"
|
||||
ammo_type = /obj/item/ammo_casing/a45/flash
|
||||
|
||||
// Speedloader
|
||||
/obj/item/ammo_magazine/s45
|
||||
name = "speedloader (.45)"
|
||||
icon_state = "45s"
|
||||
ammo_type = /obj/item/ammo_casing/a45
|
||||
matter = list(MAT_STEEL = 525) //metal costs are very roughly based around 1 .45 casing = 75 metal
|
||||
caliber = ".45"
|
||||
max_ammo = 7
|
||||
max_ammo = 6
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/s45/empty
|
||||
@@ -203,6 +260,9 @@
|
||||
max_ammo = 30
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m5mmcaseless/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m5mmcaseless/stun
|
||||
icon_state = "caseless-mag-alt"
|
||||
ammo_type = /obj/item/ammo_casing/a5mmcaseless/stun
|
||||
@@ -211,7 +271,7 @@
|
||||
|
||||
/obj/item/ammo_magazine/m9mm
|
||||
name = "magazine (9mm)"
|
||||
icon_state = "9x19p_fullsize"
|
||||
icon_state = "m91"
|
||||
origin_tech = list(TECH_COMBAT = 2)
|
||||
mag_type = MAGAZINE
|
||||
matter = list(MAT_STEEL = 600)
|
||||
@@ -220,15 +280,6 @@
|
||||
max_ammo = 10
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m9mm/large
|
||||
desc = "\"FOR LAW ENFORCEMENT/MILITARY USE ONLY\" is clearly etched on the magazine. This is probably illegal for you to have." // Remember, Security is not Law Enforcement, so it's illegal for Security to use as well.
|
||||
icon_state = "9x19p_highcap"
|
||||
max_ammo = 17
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_ILLEGAL = 1)
|
||||
|
||||
/obj/item/ammo_magazine/m9mm/large/preban // Sold by traders.
|
||||
desc = "A large capacity magazine that was built before the SolGov Assault Weapons Ban, so it's legal to own."
|
||||
|
||||
/obj/item/ammo_magazine/m9mm/empty
|
||||
initial_ammo = 0
|
||||
|
||||
@@ -244,10 +295,33 @@
|
||||
name = "magazine (9mm practice)"
|
||||
ammo_type = /obj/item/ammo_casing/a9mm/practice
|
||||
|
||||
// Extended
|
||||
/obj/item/ammo_magazine/m9mm/large
|
||||
name = "extended magazine (9mm)"
|
||||
desc = "\"FOR LAW ENFORCEMENT/MILITARY USE ONLY\" is clearly etched on the magazine. This is probably illegal for you to have." // Remember, Security is not Law Enforcement, so it's illegal for Security to use as well.
|
||||
icon_state = "m93"
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_ILLEGAL = 1)
|
||||
mag_type = MAGAZINE
|
||||
matter = list(MAT_STEEL = 1000)
|
||||
caliber = "9mm"
|
||||
ammo_type = /obj/item/ammo_casing/a9mm
|
||||
max_ammo = 17
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m9mm/large/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m9mm/large/preban // Sold by traders.
|
||||
desc = "A large capacity magazine that was built before the SolGov Assault Weapons Ban, so it's legal to own."
|
||||
|
||||
/obj/item/ammo_magazine/m9mm/large/preban/hp // Hollow Point version
|
||||
name = "magazine (9mm hollow-point)"
|
||||
ammo_type = /obj/item/ammo_casing/a9mm/hp
|
||||
|
||||
// Compact
|
||||
/obj/item/ammo_magazine/m9mm/compact
|
||||
name = "compact magazine (9mm)"
|
||||
icon_state = "9x19p"
|
||||
icon_state = "m92"
|
||||
origin_tech = list(TECH_COMBAT = 2)
|
||||
mag_type = MAGAZINE
|
||||
matter = list(MAT_STEEL = 480)
|
||||
@@ -302,6 +376,7 @@
|
||||
ammo_type = /obj/item/ammo_casing/a9mm/ap
|
||||
matter = list(MAT_STEEL = 1000, MAT_PLASTEEL = 2000)
|
||||
|
||||
// P90
|
||||
/obj/item/ammo_magazine/m9mmp90
|
||||
name = "large capacity top mounted magazine (9mm armor-piercing)"
|
||||
icon_state = "p90"
|
||||
@@ -315,6 +390,7 @@
|
||||
/obj/item/ammo_magazine/m9mmp90/empty
|
||||
initial_ammo = 0
|
||||
|
||||
// Stripper Clip
|
||||
/obj/item/ammo_magazine/clip/c9mm
|
||||
name = "ammo clip (9mm)"
|
||||
icon_state = "clip_pistol"
|
||||
@@ -337,6 +413,7 @@
|
||||
name = "ammo clip (.45 flash)"
|
||||
ammo_type = /obj/item/ammo_casing/a9mm/flash
|
||||
|
||||
// Advanced SMG
|
||||
/obj/item/ammo_magazine/m9mmAdvanced
|
||||
desc = "A very high capacity double stack magazine made specially for the Advanced SMG. Filled with 21 9mm bullets."
|
||||
icon_state = "S9mm"
|
||||
@@ -373,20 +450,6 @@
|
||||
/obj/item/ammo_magazine/m10mm/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/clip/c10mm
|
||||
name = "ammo clip (10mm)"
|
||||
icon_state = "clip_pistol"
|
||||
desc = "A stripper clip for reloading 5mm rounds into magazines."
|
||||
caliber = "10mm"
|
||||
ammo_type = /obj/item/ammo_casing/a10mm
|
||||
matter = list(MAT_STEEL = 675) // metal costs are very roughly based around one 10mm casing = 75 metal
|
||||
max_ammo = 9
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/box/emp/b10
|
||||
name = "ammunition box (10mm haywire)"
|
||||
ammo_type = /obj/item/ammo_casing/a10mm/emp
|
||||
|
||||
///////// 5.45mm /////////
|
||||
|
||||
/obj/item/ammo_magazine/m545
|
||||
@@ -400,41 +463,43 @@
|
||||
max_ammo = 20
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m545/ext
|
||||
name = "extended magazine (5.45mm)"
|
||||
matter = list(MAT_STEEL = 2700)
|
||||
max_ammo = 30
|
||||
|
||||
/obj/item/ammo_magazine/m545/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m545/ext/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m545/practice
|
||||
name = "magazine (5.45mm practice)"
|
||||
ammo_type = /obj/item/ammo_casing/a545/practice
|
||||
|
||||
/obj/item/ammo_magazine/m545/practice/ext
|
||||
name = "extended magazine (5.45mm practice)"
|
||||
max_ammo = 30
|
||||
|
||||
/obj/item/ammo_magazine/m545/ap
|
||||
name = "magazine (5.45mm armor-piercing)"
|
||||
ammo_type = /obj/item/ammo_casing/a545/ap
|
||||
|
||||
/obj/item/ammo_magazine/m545/ap/ext
|
||||
name = "extended magazine (5.45mm armor-piercing)"
|
||||
max_ammo = 30
|
||||
|
||||
/obj/item/ammo_magazine/m545/hunter
|
||||
name = "magazine (5.45mm hunting)"
|
||||
ammo_type = /obj/item/ammo_casing/a545/hunter
|
||||
|
||||
// Extended
|
||||
/obj/item/ammo_magazine/m545/ext
|
||||
name = "extended magazine (5.45mm)"
|
||||
matter = list(MAT_STEEL = 2700)
|
||||
max_ammo = 30
|
||||
|
||||
/obj/item/ammo_magazine/m545/ext/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m545/practice/ext
|
||||
name = "extended magazine (5.45mm practice)"
|
||||
max_ammo = 30
|
||||
|
||||
/obj/item/ammo_magazine/m545/ap/ext
|
||||
name = "extended magazine (5.45mm armor-piercing)"
|
||||
max_ammo = 30
|
||||
|
||||
/obj/item/ammo_magazine/m545/hunter/ext
|
||||
name = "extended magazine (5.45mm hunting)"
|
||||
max_ammo = 30
|
||||
|
||||
// Reduced
|
||||
/obj/item/ammo_magazine/m545/small
|
||||
name = "reduced magazine (5.45mm)"
|
||||
icon_state = "m545-small"
|
||||
@@ -456,6 +521,7 @@
|
||||
name = "magazine (5.45mm hunting)"
|
||||
ammo_type = /obj/item/ammo_casing/a545/hunter
|
||||
|
||||
// Stripper Clip
|
||||
/obj/item/ammo_magazine/clip/c545
|
||||
name = "ammo clip (5.45mm)"
|
||||
icon_state = "clip_rifle"
|
||||
@@ -477,6 +543,7 @@
|
||||
name = "rifle clip (5.45mm practice)"
|
||||
ammo_type = /obj/item/ammo_casing/a545
|
||||
|
||||
// SAW
|
||||
/obj/item/ammo_magazine/m545saw
|
||||
name = "magazine box (5.45mm)"
|
||||
icon_state = "a545"
|
||||
@@ -489,6 +556,9 @@
|
||||
max_ammo = 50
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m545saw/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m545saw/ap
|
||||
name = "magazine box (5.45mm armor-piercing)"
|
||||
ammo_type = /obj/item/ammo_casing/a545/ap
|
||||
@@ -497,9 +567,6 @@
|
||||
name = "magazine box (5.45mm hunting)"
|
||||
ammo_type = /obj/item/ammo_casing/a545/hunter
|
||||
|
||||
/obj/item/ammo_magazine/m545saw/empty
|
||||
initial_ammo = 0
|
||||
|
||||
///////// .44 Magnum /////////
|
||||
|
||||
/obj/item/ammo_magazine/m44
|
||||
@@ -516,6 +583,7 @@
|
||||
/obj/item/ammo_magazine/m44/empty
|
||||
initial_ammo = 0
|
||||
|
||||
// Stripper Clip
|
||||
/obj/item/ammo_magazine/clip/c44
|
||||
name = "ammo clip (.44)"
|
||||
icon_state = "clip_pistol"
|
||||
@@ -526,6 +594,7 @@
|
||||
max_ammo = 9
|
||||
multiple_sprites = 1
|
||||
|
||||
// Speedloader
|
||||
/obj/item/ammo_magazine/s44
|
||||
name = "speedloader (.44)"
|
||||
icon_state = "44"
|
||||
@@ -560,33 +629,31 @@
|
||||
max_ammo = 10
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m762/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m762/ap
|
||||
name = "magazine (7.62mm armor-piercing)"
|
||||
ammo_type = /obj/item/ammo_casing/a762/ap
|
||||
|
||||
/obj/item/ammo_magazine/m762/empty
|
||||
// Extended
|
||||
/obj/item/ammo_magazine/m762/ext
|
||||
name = "extended magazine (7.62mm)"
|
||||
icon_state = "m762"
|
||||
matter = list(MAT_STEEL = 4000)
|
||||
max_ammo = 20
|
||||
|
||||
/obj/item/ammo_magazine/m762/ext/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m762m // Intentionally not a subtype of m762 because it's supposed to be incompatible with the Z8 Bulldog rifle.
|
||||
name = "magazine (7.62mm)"
|
||||
icon_state = "m762"
|
||||
mag_type = MAGAZINE
|
||||
caliber = "7.62mm"
|
||||
matter = list(MAT_STEEL = 4000)
|
||||
ammo_type = /obj/item/ammo_casing/a762
|
||||
max_ammo = 20
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m762m/ap
|
||||
/obj/item/ammo_magazine/m762/ext/ap
|
||||
name = "magazine (7.62mm armor-piercing)"
|
||||
ammo_type = /obj/item/ammo_casing/a762/ap
|
||||
|
||||
/obj/item/ammo_magazine/m762m/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m762garand
|
||||
name = "garand clip (7.62mm)" // The clip goes into the magazine, hence the name. I'm very sure this is correct.
|
||||
icon_state = "gclip"
|
||||
// Enbloc
|
||||
/obj/item/ammo_magazine/m762enbloc
|
||||
name = "enbloc (7.62mm)"
|
||||
icon_state = "enbloc"
|
||||
mag_type = MAGAZINE
|
||||
caliber = "7.62mm"
|
||||
matter = list(MAT_STEEL = 1600)
|
||||
@@ -594,13 +661,14 @@
|
||||
max_ammo = 8
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m762garand/ap
|
||||
/obj/item/ammo_magazine/m762enbloc/ap
|
||||
name = "garand clip (7.62mm armor-piercing)"
|
||||
ammo_type = /obj/item/ammo_casing/a762/ap
|
||||
|
||||
/obj/item/ammo_magazine/m762/empty
|
||||
/obj/item/ammo_magazine/m762enbloc/empty
|
||||
initial_ammo = 0
|
||||
|
||||
// Stripper Clip
|
||||
/obj/item/ammo_magazine/clip/c762
|
||||
name = "ammo clip (7.62mm)"
|
||||
icon_state = "clip_rifle"
|
||||
@@ -622,6 +690,7 @@
|
||||
name = "rifle clip (7.62mm hunting)"
|
||||
ammo_type = /obj/item/ammo_casing/a762/hunter
|
||||
|
||||
// SVD
|
||||
/obj/item/ammo_magazine/m762svd
|
||||
name = "\improper SVD magazine (7.62mm)"
|
||||
icon_state = "SVD"
|
||||
@@ -632,13 +701,13 @@
|
||||
max_ammo = 10
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m762svd/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m762svd/ap
|
||||
name = "\improper SVD magazine (7.62mm armor-piercing)"
|
||||
ammo_type = /obj/item/ammo_casing/a762/ap
|
||||
|
||||
/obj/item/ammo_magazine/m762svd/empty
|
||||
initial_ammo = 0
|
||||
|
||||
///////// 12g /////////
|
||||
|
||||
/obj/item/ammo_magazine/m12gdrum
|
||||
@@ -651,6 +720,9 @@
|
||||
max_ammo = 24
|
||||
multiple_sprites = 1
|
||||
|
||||
/obj/item/ammo_magazine/m12gdrum/empty
|
||||
initial_ammo = 0
|
||||
|
||||
/obj/item/ammo_magazine/m12gdrum/beanbag
|
||||
name = "magazine (12 gauge beanbag)"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/beanbag
|
||||
@@ -663,9 +735,7 @@
|
||||
name = "magazine (12 gauge flash)"
|
||||
ammo_type = /obj/item/ammo_casing/a12g/flash
|
||||
|
||||
/obj/item/ammo_magazine/m12gdrum/empty
|
||||
initial_ammo = 0
|
||||
|
||||
// Clip
|
||||
/obj/item/ammo_magazine/clip/c12g
|
||||
name = "ammo clip (12g slug)"
|
||||
icon_state = "12gclipslug" // Still a placeholder sprite. Feel free to make a better one.
|
||||
@@ -703,15 +773,3 @@
|
||||
|
||||
/obj/item/ammo_magazine/m75/empty
|
||||
initial_ammo = 0
|
||||
|
||||
///////// Misc. /////////
|
||||
|
||||
/obj/item/ammo_magazine/caps
|
||||
name = "speedloader (caps)"
|
||||
icon_state = "T38"
|
||||
caliber = "caps"
|
||||
color = "#FF0000"
|
||||
ammo_type = /obj/item/ammo_casing/cap
|
||||
matter = list(MAT_STEEL = 600)
|
||||
max_ammo = 7
|
||||
multiple_sprites = 1
|
||||
@@ -1,9 +0,0 @@
|
||||
/obj/item/ammo_magazine/m9mm/large/preban/hp // Hollow Point Version
|
||||
name = "magazine (9mm hollow-point)"
|
||||
ammo_type = /obj/item/ammo_casing/a9mm/hp
|
||||
|
||||
/obj/item/weapon/magnetic_ammo/pistol/khi
|
||||
name = "flechette magazine (small, khi)"
|
||||
desc = "A magazine containing smaller carbyne flechettes, intended for a pistol."
|
||||
icon_state = "caseless-mag-short-alt"
|
||||
remaining = 12
|
||||
@@ -17,3 +17,9 @@
|
||||
name = "flechette magazine (small)"
|
||||
desc = "A magazine containing smaller steel flechettes, intended for a pistol."
|
||||
icon_state = "caseless-mag-short"
|
||||
|
||||
/obj/item/weapon/magnetic_ammo/pistol/khi
|
||||
name = "flechette magazine (small, khi)"
|
||||
desc = "A magazine containing smaller carbyne flechettes, intended for a pistol."
|
||||
icon_state = "caseless-mag-short-alt"
|
||||
remaining = 12
|
||||
@@ -19,6 +19,26 @@
|
||||
*/
|
||||
/************************************************************************/
|
||||
|
||||
/*
|
||||
* Foam
|
||||
*/
|
||||
|
||||
/obj/item/ammo_casing/afoam_dart
|
||||
name = "foam dart"
|
||||
desc = "It's Donk or Don't! Ages 8 and up."
|
||||
projectile_type = /obj/item/projectile/bullet/foam_dart
|
||||
matter = list(MAT_PLASTIC = 60)
|
||||
caliber = "foam"
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "foamdart"
|
||||
caseless = 1
|
||||
|
||||
/obj/item/ammo_casing/afoam_dart/riot
|
||||
name = "riot foam dart"
|
||||
desc = "Whose smart idea was it to use toys as crowd control? Ages 18 and up."
|
||||
matter = list(MAT_STEEL = 210, MAT_PLASTIC = 60)
|
||||
icon_state = "foamdart_riot"
|
||||
|
||||
/*
|
||||
* .357
|
||||
*/
|
||||
@@ -29,6 +49,12 @@
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/strong
|
||||
matter = list(MAT_STEEL = 210)
|
||||
|
||||
/obj/item/ammo_casing/a357/bb
|
||||
desc = "A .357 BB."
|
||||
projectile_type = /obj/item/projectile/bullet/bb
|
||||
matter = list(MAT_PLASTIC = 20)
|
||||
caseless = TRUE
|
||||
|
||||
/*
|
||||
* .38
|
||||
*/
|
||||
@@ -51,6 +77,12 @@
|
||||
projectile_type = /obj/item/projectile/ion/small
|
||||
matter = list(MAT_STEEL = 130, MAT_URANIUM = 100)
|
||||
|
||||
/obj/item/ammo_casing/a38/bb
|
||||
desc = "A .38 BB."
|
||||
projectile_type = /obj/item/projectile/bullet/bb
|
||||
matter = list(MAT_PLASTIC = 20)
|
||||
caseless = TRUE
|
||||
|
||||
/*
|
||||
* .44
|
||||
*/
|
||||
@@ -72,6 +104,12 @@
|
||||
projectile_type = /obj/item/projectile/bullet/rifle/a44rifle
|
||||
matter = list(MAT_STEEL = 210)
|
||||
|
||||
/obj/item/ammo_casing/a44/bb
|
||||
desc = "A .44 BB."
|
||||
projectile_type = /obj/item/projectile/bullet/bb
|
||||
matter = list(MAT_PLASTIC = 20)
|
||||
caseless = TRUE
|
||||
|
||||
/*
|
||||
* .75 (aka Gyrojet Rockets, aka admin abuse)
|
||||
*/
|
||||
@@ -101,7 +139,6 @@
|
||||
desc = "A 9mm hollow-point bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/hp
|
||||
|
||||
|
||||
/obj/item/ammo_casing/a9mm/flash
|
||||
desc = "A 9mm flash shell casing."
|
||||
icon_state = "r-casing"
|
||||
@@ -117,6 +154,12 @@
|
||||
icon_state = "r-casing"
|
||||
projectile_type = /obj/item/projectile/bullet/practice
|
||||
|
||||
/obj/item/ammo_casing/a9mm/bb
|
||||
desc = "A 9mm BB."
|
||||
projectile_type = /obj/item/projectile/bullet/bb
|
||||
matter = list(MAT_PLASTIC = 20)
|
||||
caseless = TRUE
|
||||
|
||||
/*
|
||||
* .45
|
||||
*/
|
||||
@@ -163,6 +206,12 @@
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/medium/hp
|
||||
matter = list(MAT_STEEL = 60, MAT_PLASTIC = 15)
|
||||
|
||||
/obj/item/ammo_casing/a45/bb
|
||||
desc = "A .45 BB."
|
||||
projectile_type = /obj/item/projectile/bullet/bb
|
||||
matter = list(MAT_PLASTIC = 20)
|
||||
caseless = TRUE
|
||||
|
||||
/*
|
||||
* 10mm
|
||||
*/
|
||||
@@ -173,6 +222,18 @@
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/medium
|
||||
matter = list(MAT_STEEL = 75)
|
||||
|
||||
/obj/item/ammo_casing/a10mm/practice
|
||||
desc = "A 10mm practice bullet casing."
|
||||
icon_state = "r-casing"
|
||||
projectile_type = /obj/item/projectile/bullet/practice
|
||||
matter = list(MAT_STEEL = 60)
|
||||
|
||||
/obj/item/ammo_casing/a10mm/rubber
|
||||
desc = "A 10mm rubber bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/rubber
|
||||
icon_state = "r-casing"
|
||||
matter = list(MAT_STEEL = 60)
|
||||
|
||||
/obj/item/ammo_casing/a10mm/emp
|
||||
name = "10mm haywire round"
|
||||
desc = "A 10mm bullet casing fitted with a single-use ion pulse generator."
|
||||
@@ -180,6 +241,12 @@
|
||||
icon_state = "empcasing"
|
||||
matter = list(MAT_STEEL = 130, MAT_URANIUM = 100)
|
||||
|
||||
/obj/item/ammo_casing/a10mm/bb
|
||||
desc = "A 10mm BB."
|
||||
projectile_type = /obj/item/projectile/bullet/bb
|
||||
matter = list(MAT_PLASTIC = 20)
|
||||
caseless = TRUE
|
||||
|
||||
/*
|
||||
* 12g (aka shotgun ammo)
|
||||
*/
|
||||
@@ -256,6 +323,11 @@
|
||||
projectile_type = /obj/item/projectile/scatter/flechette
|
||||
matter = list(MAT_STEEL = 360, MAT_PLASTEEL = 100)
|
||||
|
||||
/obj/item/ammo_casing/a12g/bb
|
||||
desc = "A shotgun BB shell."
|
||||
projectile_type = /obj/item/projectile/bullet/pellet/shotgun/bb // Shotgun
|
||||
matter = list(MAT_PLASTIC = 120) // 6 pellets
|
||||
|
||||
/*
|
||||
* 7.62mm
|
||||
*/
|
||||
@@ -291,6 +363,12 @@
|
||||
desc = "A 7.62mm hunting bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/rifle/a762/hunter
|
||||
|
||||
/obj/item/ammo_casing/a762/bb
|
||||
desc = "A 7.62mm BB."
|
||||
projectile_type = /obj/item/projectile/bullet/bb
|
||||
matter = list(MAT_PLASTIC = 20)
|
||||
caseless = TRUE
|
||||
|
||||
/*
|
||||
* 14.5mm (anti-materiel rifle round)
|
||||
*/
|
||||
@@ -345,6 +423,12 @@
|
||||
desc = "A 5.45mm hunting bullet casing."
|
||||
projectile_type = /obj/item/projectile/bullet/rifle/a545/hunter
|
||||
|
||||
/obj/item/ammo_casing/a545/bb
|
||||
desc = "A 5.45mm BB."
|
||||
projectile_type = /obj/item/projectile/bullet/bb
|
||||
matter = list(MAT_PLASTIC = 20)
|
||||
caseless = TRUE
|
||||
|
||||
/*
|
||||
* 5mm Caseless
|
||||
*/
|
||||
@@ -375,14 +459,15 @@
|
||||
|
||||
/obj/item/ammo_casing/cap
|
||||
name = "cap"
|
||||
desc = "A cap for children toys."
|
||||
desc = "A cap for children toys. Ages 8 and up."
|
||||
caliber = "caps"
|
||||
icon_state = "r-casing"
|
||||
color = "#FF0000"
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/cap
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "cap"
|
||||
projectile_type = /obj/item/projectile/bullet/cap
|
||||
matter = list(MAT_STEEL = 85)
|
||||
caseless = 1
|
||||
|
||||
/obj/item/ammo_casing/spent // For simple hostile mobs only, so they don't cough up usable bullets when firing. This is for literally nothing else.
|
||||
icon_state = "s-casing-spent"
|
||||
BB = null
|
||||
projectile_type = null
|
||||
projectile_type = null
|
||||
|
||||
@@ -465,7 +465,7 @@
|
||||
P.dispersion = disp
|
||||
|
||||
P.shot_from = src.name
|
||||
P.silenced = silenced
|
||||
P.silenced |= silenced // A silent bullet (e.g., BBs) can be fired quietly from any gun.
|
||||
|
||||
P.old_style_target(target)
|
||||
P.fire()
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
var/transforming = 0
|
||||
var/failure_chance = 15 // This can become negative with part tiers above 3, which helps offset penalties
|
||||
var/obj/item/weapon/stock_parts/scanning_module/scanmod
|
||||
var/dropnoms_active = TRUE
|
||||
|
||||
/obj/item/weapon/bluespace_harpoon/Initialize()
|
||||
. = ..()
|
||||
@@ -26,6 +27,8 @@
|
||||
|
||||
/obj/item/weapon/bluespace_harpoon/examine(var/mob/user)
|
||||
. = ..()
|
||||
. += "It is currently in [mode ? "transmitting" : "recieving"] mode."
|
||||
. += "Spatial rearrangement is [dropnoms_active ? "active" : "inactive"]."
|
||||
if(Adjacent(user))
|
||||
. += "It has [scanmod ? scanmod : "no scanner module"] installed."
|
||||
|
||||
@@ -80,7 +83,7 @@
|
||||
playsound(src, 'sound/weapons/wave.ogg', 60, 1)
|
||||
return
|
||||
var/turf/T = get_turf(A)
|
||||
if(!T || (T.check_density() && mode == 1))
|
||||
if(!T || (T.check_density(ignore_mobs = TRUE) && mode == 1))
|
||||
to_chat(user,"<span class = 'warning'>That's a little too solid to harpoon into!</span>")
|
||||
return
|
||||
var/turf/ownturf = get_turf(src)
|
||||
@@ -118,12 +121,47 @@
|
||||
for(var/rider in L.buckled_mobs)
|
||||
sendfailchance += 15
|
||||
|
||||
var/mob/living/living_user = user
|
||||
var/can_dropnom = TRUE
|
||||
if(!dropnoms_active || !istype(living_user))
|
||||
can_dropnom = FALSE
|
||||
|
||||
if(mode)
|
||||
if(user in FromTurf)
|
||||
if(prob(sendfailchance))
|
||||
user.forceMove(pick(trange(24,user)))
|
||||
else
|
||||
user.forceMove(ToTurf)
|
||||
var/vore_happened = FALSE
|
||||
if(can_dropnom && living_user.can_be_drop_pred)
|
||||
var/obj/belly/belly_dest
|
||||
if(living_user.vore_selected)
|
||||
belly_dest = living_user.vore_selected
|
||||
else if(living_user.vore_organs.len)
|
||||
belly_dest = pick(living_user.vore_organs)
|
||||
if(belly_dest)
|
||||
for(var/mob/living/prey in ToTurf)
|
||||
if(prey != user && prey.can_be_drop_prey)
|
||||
prey.forceMove(belly_dest)
|
||||
vore_happened = TRUE
|
||||
to_chat(prey, "<span class='danger'>[living_user] materializes around you, as you end up in their [belly_dest]!</span>")
|
||||
to_chat(living_user, "<span class='notice'>You materialize around [prey] as they end up in your [belly_dest]!</span>")
|
||||
if(can_dropnom && !vore_happened && living_user.can_be_drop_prey)
|
||||
var/mob/living/pred
|
||||
for(var/mob/living/potential_pred in ToTurf)
|
||||
if(potential_pred != user && potential_pred.can_be_drop_pred)
|
||||
pred = potential_pred
|
||||
if(pred)
|
||||
var/obj/belly/belly_dest
|
||||
if(pred.vore_selected)
|
||||
belly_dest = pred.vore_selected
|
||||
else if(pred.vore_organs.len)
|
||||
belly_dest = pick(pred.vore_organs)
|
||||
if(belly_dest)
|
||||
living_user.forceMove(belly_dest)
|
||||
to_chat(pred, "<span class='notice'>[living_user] materializes inside you as they end up in your [belly_dest]!</span>")
|
||||
to_chat(living_user, "<span class='danger'>You materialize inside [pred] as you end up in their [belly_dest]!</span>")
|
||||
|
||||
else
|
||||
for(var/obj/O in FromTurf)
|
||||
if(O.anchored) continue
|
||||
@@ -132,25 +170,58 @@
|
||||
else
|
||||
O.forceMove(ToTurf)
|
||||
|
||||
var/user_vored = FALSE
|
||||
|
||||
for(var/mob/living/M in FromTurf)
|
||||
if(prob(recievefailchance))
|
||||
M.forceMove(pick(trange(24,user)))
|
||||
else
|
||||
M.forceMove(ToTurf)
|
||||
if(can_dropnom && living_user.can_be_drop_pred && M.can_be_drop_prey)
|
||||
var/obj/belly/belly_dest
|
||||
if(living_user.vore_selected)
|
||||
belly_dest = living_user.vore_selected
|
||||
else if(living_user.vore_organs.len)
|
||||
belly_dest = pick(living_user.vore_organs)
|
||||
if(belly_dest)
|
||||
M.forceMove(belly_dest)
|
||||
to_chat(living_user, "<span class='notice'>[M] materializes inside you as they end up in your [belly_dest]!</span>")
|
||||
to_chat(M, "<span class='danger'>You materialize inside [living_user] as you end up in their [belly_dest]!</span>")
|
||||
else if(can_dropnom && living_user.can_be_drop_prey && M.can_be_drop_pred && !user_vored)
|
||||
var/obj/belly/belly_dest
|
||||
if(M.vore_selected)
|
||||
belly_dest = M.vore_selected
|
||||
else if(M.vore_organs.len)
|
||||
belly_dest = pick(M.vore_organs)
|
||||
if(belly_dest)
|
||||
living_user.forceMove(belly_dest)
|
||||
user_vored = TRUE
|
||||
to_chat(living_user, "<span class='danger'>[M] materializes around you, as you end up in their [belly_dest]!</span>")
|
||||
to_chat(M, "<span class='notice'>You materialize around [living_user] as they end up in your [belly_dest]!</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/bluespace_harpoon/attack_self(mob/living/user as mob)
|
||||
return chande_fire_mode(user)
|
||||
|
||||
/obj/item/weapon/bluespace_harpoon/verb/chande_fire_mode(mob/user as mob)
|
||||
set name = "Change fire mode"
|
||||
set name = "Change Fire Mode"
|
||||
set category = "Object"
|
||||
set src in oview(1)
|
||||
set src in range(0)
|
||||
|
||||
if(transforming) return
|
||||
mode = !mode
|
||||
transforming = 1
|
||||
to_chat(user,"<span class = 'info'>You change \the [src]'s mode to [mode ? "transmiting" : "receiving"].</span>")
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/bluespace_harpoon/verb/chande_dropnom_mode(mob/user as mob)
|
||||
set name = "Toggle Spatial Rearrangement"
|
||||
set category = "Object"
|
||||
set src in range(0)
|
||||
|
||||
dropnoms_active = !dropnoms_active
|
||||
to_chat(user,"<span class = 'info'>You switch \the [src]'s spatial rearrangement [dropnoms_active ? "on" : "off"]. (Telenoms [dropnoms_active ? "enabled" : "disabled"])</span>")
|
||||
|
||||
/obj/item/weapon/bluespace_harpoon/update_icon()
|
||||
if(transforming)
|
||||
switch(mode)
|
||||
|
||||
@@ -191,7 +191,7 @@
|
||||
/obj/item/weapon/gun/energy/kinetic_accelerator/proc/empty()
|
||||
if(power_supply)
|
||||
power_supply.use(power_supply.charge)
|
||||
update_icon()
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/gun/energy/kinetic_accelerator/proc/attempt_reload(recharge_time)
|
||||
if(!power_supply)
|
||||
@@ -223,7 +223,7 @@
|
||||
|
||||
/obj/item/weapon/gun/energy/kinetic_accelerator/update_icon()
|
||||
cut_overlays()
|
||||
if(overheat || (power_supply.charge == 0))
|
||||
if(overheat || !power_supply || (power_supply.charge == 0))
|
||||
add_overlay(emptystate)
|
||||
|
||||
#define KA_ENVIRO_TYPE_COLD 0
|
||||
@@ -273,6 +273,7 @@
|
||||
else if(environment == KA_ENVIRO_TYPE_OFFSITE)
|
||||
if(!offsite_environment_check(get_turf(src)))
|
||||
name = "nullified [name]"
|
||||
nodamage = TRUE
|
||||
damage = 0
|
||||
pressure_decrease_active = TRUE
|
||||
return ..()
|
||||
@@ -292,6 +293,7 @@
|
||||
else if(environment == KA_ENVIRO_TYPE_OFFSITE)
|
||||
if(!offsite_environment_check(get_turf(src)))
|
||||
name = "nullified [name]"
|
||||
nodamage = TRUE
|
||||
damage = 0
|
||||
pressure_decrease_active = TRUE
|
||||
return ..()
|
||||
@@ -323,6 +325,7 @@
|
||||
else if(environment == KA_ENVIRO_TYPE_OFFSITE)
|
||||
if(!offsite_environment_check(get_turf(src)))
|
||||
name = "nullified [name]"
|
||||
nodamage = TRUE
|
||||
damage = 0
|
||||
pressure_decrease_active = TRUE
|
||||
var/turf/target_turf = get_turf(target)
|
||||
@@ -546,7 +549,7 @@
|
||||
//Tendril-unique modules
|
||||
/obj/item/borg/upgrade/modkit/cooldown/repeater
|
||||
name = "rapid repeater"
|
||||
desc = "Quarters the kinetic accelerator's cooldown on striking a living target, but greatly increases the base cooldown."
|
||||
desc = "Quarters the kinetic accelerator's cooldown on striking a living or mineral target, but greatly increases the base cooldown."
|
||||
denied_type = /obj/item/borg/upgrade/modkit/cooldown/repeater
|
||||
modifier = -14 //Makes the cooldown 3 seconds(with no cooldown mods) if you miss. Don't miss.
|
||||
cost = 50
|
||||
@@ -654,9 +657,11 @@
|
||||
name = "offsite pressure modulator"
|
||||
desc = "A non-standard modification kit that increases the damage a kinetic accelerator does in pressurized environments, \
|
||||
in exchange for nullifying any projected forces while on or in an associated facility."
|
||||
denied_type = /obj/item/borg/upgrade/modkit/heater
|
||||
maximum_of_type = 1
|
||||
cost = 35
|
||||
|
||||
/obj/item/borg/upgrade/modkit/indoors/offsite/modify_projectile(obj/item/projectile/kinetic/K)
|
||||
/obj/item/borg/upgrade/modkit/offsite/modify_projectile(obj/item/projectile/kinetic/K)
|
||||
K.environment = KA_ENVIRO_TYPE_OFFSITE
|
||||
|
||||
// Atmospheric
|
||||
@@ -664,7 +669,7 @@
|
||||
name = "temperature modulator"
|
||||
desc = "A remarkably unusual modification kit that makes kinetic accelerators more usable in hot, overpressurized environments, \
|
||||
in exchange for making them weak elsewhere, like the cold or in space."
|
||||
denied_type = /obj/item/borg/upgrade/modkit/indoors
|
||||
denied_type = /obj/item/borg/upgrade/modkit/offsite
|
||||
maximum_of_type = 1
|
||||
cost = 10
|
||||
|
||||
|
||||
@@ -278,41 +278,6 @@
|
||||
accuracy = 0
|
||||
scoped_accuracy = 20
|
||||
|
||||
////////Laser Tag////////////////////
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag
|
||||
name = "laser tag gun"
|
||||
item_state = "laser"
|
||||
desc = "Standard issue weapon of the Imperial Guard"
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MAGNET = 2)
|
||||
matter = list(MAT_STEEL = 2000)
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/blue
|
||||
cell_type = /obj/item/weapon/cell/device/weapon/recharge
|
||||
battery_lock = 1
|
||||
var/required_vest
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/special_check(var/mob/living/carbon/human/M)
|
||||
if(ishuman(M))
|
||||
if(!istype(M.wear_suit, required_vest))
|
||||
to_chat(M, "<span class='warning'>You need to be wearing your laser tag vest!</span>")
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/blue
|
||||
icon_state = "bluetag"
|
||||
item_state = "bluetag"
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/blue
|
||||
required_vest = /obj/item/clothing/suit/bluetag
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/red
|
||||
icon_state = "redtag"
|
||||
item_state = "redtag"
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/red
|
||||
required_vest = /obj/item/clothing/suit/redtag
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/omni
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/omni
|
||||
|
||||
// Laser scattergun, proof of concept.
|
||||
|
||||
/obj/item/weapon/gun/energy/lasershotgun
|
||||
|
||||
@@ -127,35 +127,6 @@
|
||||
cut_overlays()
|
||||
update_mode()
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
//////////////////// Custom Ammo ////////////////////
|
||||
/////////////////////////////////////////////////////
|
||||
//---------------- Beams ----------------
|
||||
/obj/item/projectile/beam/eluger
|
||||
name = "laser beam"
|
||||
icon_state = "xray"
|
||||
light_color = "#00FF00"
|
||||
muzzle_type = /obj/effect/projectile/muzzle/xray
|
||||
tracer_type = /obj/effect/projectile/tracer/xray
|
||||
impact_type = /obj/effect/projectile/impact/xray
|
||||
|
||||
/obj/item/projectile/beam/imperial
|
||||
name = "laser beam"
|
||||
fire_sound = 'sound/weapons/mandalorian.ogg'
|
||||
icon_state = "darkb"
|
||||
light_color = "#8837A3"
|
||||
muzzle_type = /obj/effect/projectile/muzzle/darkmatter
|
||||
tracer_type = /obj/effect/projectile/tracer/darkmatter
|
||||
impact_type = /obj/effect/projectile/impact/darkmatter
|
||||
|
||||
/obj/item/projectile/beam/stun/kin21
|
||||
name = "kinh21 stun beam"
|
||||
icon_state = "omnilaser"
|
||||
light_color = "#0000FF"
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_omni
|
||||
impact_type = /obj/effect/projectile/impact/laser_omni
|
||||
|
||||
//Gun Locking Mechanism
|
||||
/obj/item/weapon/gun/energy/locked
|
||||
req_access = list(access_armory) //for toggling safety
|
||||
|
||||
@@ -45,4 +45,14 @@
|
||||
L.Confuse(1)
|
||||
L.throw_at(get_edge_target_turf(L, throwdir), rand(3,6), 10)
|
||||
|
||||
//VOREStation Add Start
|
||||
if(istype(L, /mob/living/simple_mob/vore/alienanimals/startreader))
|
||||
var/mob/living/simple_mob/vore/alienanimals/startreader/S = L
|
||||
if(!S.flipped)
|
||||
S.adjustBruteLoss(100)
|
||||
S.visible_message("<span class='notice'>\The [S] is flipped over!!!</span>")
|
||||
S.flipped = TRUE
|
||||
S.flip_cooldown = 10
|
||||
S.handle_flip()
|
||||
//VOREStation Add End
|
||||
return 1
|
||||
|
||||
@@ -47,7 +47,9 @@
|
||||
modifystate = "floramut"
|
||||
cell_type = /obj/item/weapon/cell/device/weapon/recharge
|
||||
battery_lock = 1
|
||||
|
||||
var/decl/plantgene/gene = null
|
||||
var/obj/item/weapon/stock_parts/micro_laser/emitter
|
||||
|
||||
firemodes = list(
|
||||
list(mode_name="induce mutations", projectile_type=/obj/item/projectile/energy/floramut, modifystate="floramut"),
|
||||
@@ -55,8 +57,42 @@
|
||||
list(mode_name="induce specific mutations", projectile_type=/obj/item/projectile/energy/floramut/gene, modifystate="floramut"),
|
||||
)
|
||||
|
||||
/obj/item/weapon/gun/energy/floragun/Initialize()
|
||||
. = ..()
|
||||
emitter = new(src)
|
||||
|
||||
/obj/item/weapon/gun/energy/floragun/examine(var/mob/user)
|
||||
. = ..()
|
||||
if(Adjacent(user))
|
||||
. += "It has [emitter ? emitter : "no micro laser"] installed."
|
||||
|
||||
/obj/item/weapon/gun/energy/floragun/attackby(obj/item/W, mob/user)
|
||||
if(istype(W, /obj/item/weapon/stock_parts/micro_laser))
|
||||
if(!emitter)
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
emitter = W
|
||||
to_chat(user, "<span class='notice'>You install a [emitter.name] in [src].</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>[src] already has a laser.</span>")
|
||||
|
||||
else if(W.is_screwdriver())
|
||||
if(emitter)
|
||||
to_chat(user, "<span class='notice'>You remove the [emitter.name] from the [src].</span>")
|
||||
emitter.loc = get_turf(src.loc)
|
||||
playsound(src, W.usesound, 50, 1)
|
||||
emitter = null
|
||||
return
|
||||
else
|
||||
to_chat(user, "<span class='notice'>There is no micro laser in this [src].</span>")
|
||||
return
|
||||
|
||||
/obj/item/weapon/gun/energy/floragun/afterattack(obj/target, mob/user, adjacent_flag)
|
||||
//allow shooting into adjacent hydrotrays regardless of intent
|
||||
if(!emitter)
|
||||
to_chat(user, "<span class='notice'>The [src] has no laser! </span>")
|
||||
playsound(src, 'sound/weapons/empty.ogg', 50, 1)
|
||||
return
|
||||
if(adjacent_flag && istype(target,/obj/machinery/portable_atmospherics/hydroponics))
|
||||
user.visible_message("<span class='danger'>\The [user] fires \the [src] into \the [target]!</span>")
|
||||
Fire(target,user)
|
||||
@@ -82,8 +118,16 @@
|
||||
/obj/item/weapon/gun/energy/floragun/consume_next_projectile()
|
||||
. = ..()
|
||||
var/obj/item/projectile/energy/floramut/gene/G = .
|
||||
var/obj/item/projectile/energy/florayield/GY = .
|
||||
var/obj/item/projectile/energy/floramut/GM = .
|
||||
// Inserting the upgrade level of the gun to the projectile as there isn't a better way to do this.
|
||||
if(istype(G))
|
||||
G.gene = gene
|
||||
G.lasermod = emitter.rating
|
||||
else if(istype(GY))
|
||||
GY.lasermod = emitter.rating
|
||||
else if(istype(GM))
|
||||
GM.lasermod = emitter.rating
|
||||
|
||||
/obj/item/weapon/gun/energy/meteorgun
|
||||
name = "meteor gun"
|
||||
|
||||
@@ -85,6 +85,8 @@
|
||||
|
||||
|
||||
/obj/item/weapon/gun/magnetic/matfed/attackby(var/obj/item/thing, var/mob/user)
|
||||
. = ..()
|
||||
update_rating_mod()
|
||||
if(removable_components)
|
||||
if(thing.is_crowbar())
|
||||
if(!manipulator)
|
||||
@@ -112,7 +114,6 @@
|
||||
update_rating_mod()
|
||||
return
|
||||
|
||||
|
||||
if(is_type_in_list(thing, load_type))
|
||||
var/obj/item/stack/material/M = thing
|
||||
var/success = FALSE
|
||||
@@ -147,7 +148,6 @@
|
||||
playsound(src, 'sound/weapons/flipblade.ogg', 50, 1)
|
||||
update_icon()
|
||||
return
|
||||
. = ..()
|
||||
|
||||
#define GEN_STARTING -1
|
||||
#define GEN_OFF 0
|
||||
|
||||
@@ -415,7 +415,7 @@
|
||||
slot_flags = SLOT_BACK
|
||||
load_method = MAGAZINE
|
||||
magazine_type = /obj/item/ammo_magazine/m762
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762m)
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762/ext)
|
||||
projectile_type = /obj/item/projectile/bullet/rifle/a762
|
||||
|
||||
one_handed_penalty = 45
|
||||
@@ -429,7 +429,7 @@
|
||||
..()
|
||||
if(istype(ammo_magazine,/obj/item/ammo_magazine/m762))
|
||||
icon_state = "bullpup-small"
|
||||
else if(istype(ammo_magazine,/obj/item/ammo_magazine/m762m))
|
||||
else if(istype(ammo_magazine,/obj/item/ammo_magazine/m762/ext))
|
||||
icon_state = "bullpup"
|
||||
else
|
||||
item_state = "bullpup-empty"
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
caliber = ".45"
|
||||
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
|
||||
ammo_type = /obj/item/ammo_casing/a45/rubber
|
||||
max_shells = 7
|
||||
max_shells = 6
|
||||
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/detective45/verb/rename_gun()
|
||||
@@ -148,18 +148,6 @@
|
||||
flick("deckard-reload",src)
|
||||
..()
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/capgun
|
||||
name = "cap gun"
|
||||
desc = "Looks almost like the real thing! Ages 8 and up."
|
||||
icon_state = "revolver"
|
||||
item_state = "revolver"
|
||||
caliber = "caps"
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1)
|
||||
handle_casings = CYCLE_CASINGS
|
||||
max_shells = 7
|
||||
ammo_type = /obj/item/ammo_casing/cap
|
||||
projectile_type = /obj/item/projectile/bullet/pistol/strong
|
||||
|
||||
/obj/item/weapon/gun/projectile/revolver/judge
|
||||
name = "\"The Judge\""
|
||||
desc = "A revolving hand-shotgun by Jindal Arms that packs the power of a 12 guage in the palm of your hand (if you don't break your wrist). Uses 12g rounds."
|
||||
|
||||
@@ -12,8 +12,8 @@
|
||||
slot_flags = SLOT_BACK
|
||||
//fire_sound = 'sound/weapons/rifleshot.ogg'
|
||||
load_method = MAGAZINE // ToDo: Make it so MAGAZINE, SPEEDLOADER and SINGLE_CASING can all be used on the same gun.
|
||||
magazine_type = /obj/item/ammo_magazine/m762garand
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m762garand)
|
||||
magazine_type = /obj/item/ammo_magazine/m762enbloc
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/m762enbloc)
|
||||
auto_eject = 1
|
||||
auto_eject_sound = 'sound/weapons/garand_ping.ogg'
|
||||
|
||||
|
||||
@@ -0,0 +1,251 @@
|
||||
/* Toys Guns!
|
||||
*
|
||||
* Contains:
|
||||
* Cap Gun
|
||||
* Shotgun
|
||||
* Pistol
|
||||
* N99 Pistol
|
||||
* Levergun
|
||||
* Revolver
|
||||
* Big Iron
|
||||
* Crossbow
|
||||
* Crossbow (Halloween)
|
||||
* Sawn Off
|
||||
* SMG
|
||||
* Laser Tag
|
||||
*/
|
||||
|
||||
/*
|
||||
* Cap Gun
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/capgun
|
||||
name = "cap gun"
|
||||
desc = "Looks almost like the real thing! Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "cap_gun"
|
||||
item_state = "revolver"
|
||||
caliber = "caps"
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1)
|
||||
ammo_type = /obj/item/ammo_casing/cap
|
||||
projectile_type = /obj/item/projectile/bullet/cap
|
||||
matter = list(MAT_STEEL = 1000)
|
||||
handle_casings = null
|
||||
recoil = 1 //it's a toy
|
||||
|
||||
/*
|
||||
* Shotgun
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/toy
|
||||
name = "\improper Donk-Soft shotgun"
|
||||
desc = "Donk-Soft foam shotgun! It's Donk or Don't! Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "shotgun"
|
||||
item_state = "shotgun"
|
||||
max_shells = 6
|
||||
w_class = ITEMSIZE_LARGE
|
||||
force = 2
|
||||
slot_flags = null
|
||||
caliber = "foam"
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1)
|
||||
load_method = SINGLE_CASING
|
||||
ammo_type = /obj/item/ammo_casing/afoam_dart
|
||||
projectile_type = /obj/item/projectile/bullet/foam_dart
|
||||
matter = list(MAT_PLASTIC = 2000)
|
||||
handle_casings = null
|
||||
recoil = null //it's a toy
|
||||
|
||||
/*
|
||||
* Pistol
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/pistol/toy
|
||||
name = "\improper Donk-Soft pistol"
|
||||
desc = "Donk-Soft foam pistol! It's Donk or Don't! Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "pistol"
|
||||
item_state = "gun"
|
||||
magazine_type = /obj/item/ammo_magazine/mfoam_dart/pistol
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/mfoam_dart/pistol)
|
||||
projectile_type = /obj/item/projectile/bullet/foam_dart
|
||||
caliber = "foam"
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1)
|
||||
load_method = MAGAZINE
|
||||
matter = list(MAT_PLASTIC = 1000)
|
||||
recoil = null //it's a toy
|
||||
|
||||
/obj/item/weapon/gun/projectile/pistol/toy/update_icon()
|
||||
if(ammo_magazine)
|
||||
icon_state = initial(icon_state)
|
||||
else
|
||||
icon_state = "[initial(icon_state)]-e"
|
||||
|
||||
/*
|
||||
* N99 Pistol
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/pistol/toy/n99
|
||||
name = "\improper Donk-Soft commemorative pistol"
|
||||
desc = "A special made Donk-Soft pistol to promote 'Radius: Legend of the Demon Core', a popular post-apocolyptic TV series."
|
||||
icon_state = "n99"
|
||||
item_state = "gun"
|
||||
|
||||
/obj/item/weapon/gun/projectile/pistol/toy/n99/update_icon()
|
||||
if(ammo_magazine)
|
||||
icon_state = initial(icon_state)
|
||||
else
|
||||
icon_state = "[initial(icon_state)]-e"
|
||||
|
||||
/*
|
||||
* Levergun
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/shotgun/pump/toy/levergun
|
||||
name = "\improper Donk-Soft levergun"
|
||||
desc = "Donk-Soft foam levergun! Time to cowboy up! Ages 8 and up."
|
||||
icon_state = "leveraction"
|
||||
item_state = "leveraction"
|
||||
max_shells = 5
|
||||
pump_animation = "leveraction-cycling"
|
||||
|
||||
/*
|
||||
* Revolver
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/toy
|
||||
name = "\improper Donk-Soft revolver"
|
||||
desc = "Donk-Soft foam revolver! Time to cowboy up! Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "revolver"
|
||||
item_state = "revolver"
|
||||
caliber = "foam"
|
||||
ammo_type = /obj/item/ammo_casing/afoam_dart
|
||||
projectile_type = /obj/item/projectile/bullet/foam_dart
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1)
|
||||
load_method = SINGLE_CASING
|
||||
max_shells = 6
|
||||
matter = list(MAT_PLASTIC = 1000)
|
||||
handle_casings = null
|
||||
recoil = null //it's a toy
|
||||
|
||||
/*
|
||||
* Big Iron
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/big_iron
|
||||
name = "\improper Donk-Soft big iron"
|
||||
desc = "A special made Donk-Soft pistol to promote 'A Fistful of Phoron', a popular frontier novel series."
|
||||
icon_state = "big_iron"
|
||||
item_state = "revolver"
|
||||
|
||||
/*
|
||||
* Crossbow
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/crossbow
|
||||
name = "\improper Donk-Soft crossbow"
|
||||
desc = "Donk-Soft foam crossbow! It's Donk or Don't! Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "foamcrossbow"
|
||||
item_state = "foamcrossbow"
|
||||
max_shells = 5
|
||||
|
||||
/*
|
||||
* Crossbow (Halloween)
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/crossbow/halloween
|
||||
name = "\improper Donk-Soft special edition crossbow"
|
||||
desc = "A special edition Donk-Soft crossbow! Made special for your Halloween cosplay. It's Donk or Don't! Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "foamcrossbow_halloween"
|
||||
item_state = "foamcrossbow_halloween"
|
||||
max_shells = 5
|
||||
|
||||
/*
|
||||
* Sawn Off
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/revolver/toy/sawnoff //revolver code just because it's easier
|
||||
name = "\improper Donk-Soft sawn off shotgun"
|
||||
desc = "Donk-Soft foam sawn off! It's Donk or Don't! Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "sawnshotgun"
|
||||
item_state = "dshotgun"
|
||||
max_shells = 2
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
matter = list(MAT_PLASTIC = 1500)
|
||||
|
||||
/*
|
||||
* SMG
|
||||
*/
|
||||
/obj/item/weapon/gun/projectile/automatic/toy
|
||||
name = "\improper Donk-Soft SMG"
|
||||
desc = "Donk-Soft foam SMG! It's Donk or Don't! Ages 8 and up."
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "smg"
|
||||
caliber = "foam"
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
load_method = MAGAZINE
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MATERIAL = 1)
|
||||
slot_flags = SLOT_BELT
|
||||
magazine_type = /obj/item/ammo_magazine/mfoam_dart/smg
|
||||
allowed_magazines = list(/obj/item/ammo_magazine/mfoam_dart/smg)
|
||||
projectile_type = /obj/item/projectile/bullet/foam_dart
|
||||
matter = list(MAT_PLASTIC = 1500)
|
||||
recoil = null //it's a toy
|
||||
|
||||
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(0,-2,-2), dispersion=null)
|
||||
)
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/toy/riot
|
||||
magazine_type = /obj/item/ammo_magazine/mfoam_dart/smg/riot
|
||||
|
||||
/obj/item/weapon/gun/projectile/automatic/toy/update_icon()
|
||||
if(ammo_magazine)
|
||||
icon_state = initial(icon_state)
|
||||
else
|
||||
icon_state = "[initial(icon_state)]-e"
|
||||
|
||||
/*
|
||||
* Laser Tag
|
||||
*/
|
||||
/obj/item/weapon/gun/energy/lasertag
|
||||
name = "laser tag gun"
|
||||
desc = "Standard issue weapon of the Imperial Guard"
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
item_state = "omnitag"
|
||||
item_state = "retro"
|
||||
origin_tech = list(TECH_COMBAT = 1, TECH_MAGNET = 2)
|
||||
matter = list(MAT_STEEL = 2000)
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/blue
|
||||
cell_type = /obj/item/weapon/cell/device/weapon/recharge
|
||||
battery_lock = 1
|
||||
var/required_vest
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/special_check(var/mob/living/carbon/human/M)
|
||||
if(ishuman(M))
|
||||
if(!istype(M.wear_suit, required_vest))
|
||||
to_chat(M, "<span class='warning'>You need to be wearing your laser tag vest!</span>")
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/blue
|
||||
icon_state = "bluetag"
|
||||
item_state = "bluetag"
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/blue
|
||||
required_vest = /obj/item/clothing/suit/bluetag
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/blue/sub
|
||||
name = "Brigader Sidearm"
|
||||
desc = "A laser tag replica of the standard issue weapon for the Spacer Union Brigade from the hit series Spacer Trail (Blue Team)."
|
||||
icon_state = "bluetwo"
|
||||
item_state = "retro"
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/red
|
||||
icon_state = "redtag"
|
||||
item_state = "redtag"
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/red
|
||||
required_vest = /obj/item/clothing/suit/redtag
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/red/dom
|
||||
name = "Mu'tu'bi sidearm"
|
||||
desc = "A laser tag replica of the Mu'tu'bi sidearm from the hit series Spacer Trail (Red Team)."
|
||||
icon_state = "redtwo"
|
||||
item_state = "retro"
|
||||
|
||||
/obj/item/weapon/gun/energy/lasertag/omni
|
||||
projectile_type = /obj/item/projectile/beam/lasertag/omni
|
||||
@@ -83,10 +83,10 @@
|
||||
|
||||
//Misc/Polaris variables
|
||||
|
||||
var/def_zone = "" //Aiming at
|
||||
var/mob/firer = null//Who shot it
|
||||
var/silenced = 0 //Attack message
|
||||
var/shot_from = "" // name of the object which shot us
|
||||
var/def_zone = "" //Aiming at
|
||||
var/mob/firer = null //Who shot it
|
||||
var/silenced = FALSE //Attack message
|
||||
var/shot_from = "" // name of the object which shot us
|
||||
|
||||
var/accuracy = 0
|
||||
var/dispersion = 0.0
|
||||
@@ -748,7 +748,7 @@
|
||||
/obj/item/projectile/proc/launch_from_gun(atom/target, target_zone, mob/user, params, angle_override, forced_spread, obj/item/weapon/gun/launcher)
|
||||
|
||||
shot_from = launcher.name
|
||||
silenced = launcher.silenced
|
||||
silenced |= launcher.silenced // Silent bullets (e.g., BBs) are always silent
|
||||
if(user)
|
||||
firer = user
|
||||
|
||||
|
||||
@@ -37,6 +37,14 @@
|
||||
icon_state = "laser"
|
||||
damage = 15
|
||||
|
||||
/obj/item/projectile/beam/weaklaser/blue
|
||||
icon_state = "bluelaser"
|
||||
light_color = "#0066FF"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_blue
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_blue
|
||||
impact_type = /obj/effect/projectile/impact/laser_blue
|
||||
|
||||
/obj/item/projectile/beam/smalllaser
|
||||
damage = 25
|
||||
|
||||
@@ -44,7 +52,7 @@
|
||||
damage = 30
|
||||
armor_penetration = 10
|
||||
|
||||
|
||||
|
||||
/obj/item/projectile/beam/midlaser
|
||||
damage = 40
|
||||
armor_penetration = 10
|
||||
@@ -226,7 +234,7 @@
|
||||
fire_sound = 'sound/weapons/Taser.ogg'
|
||||
nodamage = 1
|
||||
taser_effect = 1
|
||||
agony = 40
|
||||
agony = 35
|
||||
damage_type = HALLOSS
|
||||
light_color = "#FFFFFF"
|
||||
hitsound = 'sound/weapons/zapbang.ogg'
|
||||
@@ -264,6 +272,34 @@
|
||||
if(A.cell)
|
||||
A.cell.give(drainamt * 2)
|
||||
|
||||
/obj/item/projectile/beam/stun/kin21
|
||||
name = "kinh21 stun beam"
|
||||
icon_state = "omnilaser"
|
||||
light_color = "#0000FF"
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_omni
|
||||
impact_type = /obj/effect/projectile/impact/laser_omni
|
||||
|
||||
/obj/item/projectile/beam/stun/blue
|
||||
icon_state = "bluelaser"
|
||||
light_color = "#0066FF"
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_blue
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_blue
|
||||
impact_type = /obj/effect/projectile/impact/laser_blue
|
||||
|
||||
/obj/item/projectile/beam/disable
|
||||
name = "disabler beam"
|
||||
icon_state = "omnilaser"
|
||||
nodamage = 1
|
||||
taser_effect = 1
|
||||
agony = 100 //One shot stuns for the time being until adjustments are fully made.
|
||||
damage_type = HALLOSS
|
||||
light_color = "#00CECE"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_omni
|
||||
impact_type = /obj/effect/projectile/impact/laser_omni
|
||||
|
||||
/obj/item/projectile/beam/shock
|
||||
name = "shock beam"
|
||||
icon_state = "lightning"
|
||||
@@ -282,11 +318,26 @@
|
||||
damage = 5
|
||||
agony = 10
|
||||
|
||||
/obj/item/projectile/beam/eluger
|
||||
name = "laser beam"
|
||||
icon_state = "xray"
|
||||
light_color = "#00FF00"
|
||||
muzzle_type = /obj/effect/projectile/muzzle/xray
|
||||
tracer_type = /obj/effect/projectile/tracer/xray
|
||||
impact_type = /obj/effect/projectile/impact/xray
|
||||
|
||||
/obj/item/projectile/beam/imperial
|
||||
name = "laser beam"
|
||||
fire_sound = 'sound/weapons/mandalorian.ogg'
|
||||
icon_state = "darkb"
|
||||
light_color = "#8837A3"
|
||||
muzzle_type = /obj/effect/projectile/muzzle/darkmatter
|
||||
tracer_type = /obj/effect/projectile/tracer/darkmatter
|
||||
impact_type = /obj/effect/projectile/impact/darkmatter
|
||||
|
||||
//
|
||||
// Projectile Beam Definitions
|
||||
//
|
||||
|
||||
/obj/item/projectile/beam/pointdefense
|
||||
name = "point defense salvo"
|
||||
icon_state = "laser"
|
||||
@@ -300,3 +351,63 @@
|
||||
muzzle_type = /obj/effect/projectile/muzzle/pointdefense
|
||||
tracer_type = /obj/effect/projectile/tracer/pointdefense
|
||||
impact_type = /obj/effect/projectile/impact/pointdefense
|
||||
|
||||
//
|
||||
// Energy Net
|
||||
//
|
||||
/obj/item/projectile/beam/energy_net
|
||||
name = "energy net projection"
|
||||
icon_state = "xray"
|
||||
nodamage = 1
|
||||
agony = 5
|
||||
damage_type = HALLOSS
|
||||
light_color = "#00CC33"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/xray
|
||||
tracer_type = /obj/effect/projectile/tracer/xray
|
||||
impact_type = /obj/effect/projectile/impact/xray
|
||||
|
||||
/obj/item/projectile/beam/energy_net/on_hit(var/atom/netted)
|
||||
do_net(netted)
|
||||
..()
|
||||
|
||||
/obj/item/projectile/beam/energy_net/proc/do_net(var/mob/M)
|
||||
var/obj/item/weapon/energy_net/net = new (get_turf(M))
|
||||
net.throw_impact(M)
|
||||
|
||||
//
|
||||
// Healing Beam
|
||||
//
|
||||
/obj/item/projectile/beam/medigun
|
||||
name = "healing beam"
|
||||
icon_state = "healbeam"
|
||||
damage = 0 //stops it damaging walls
|
||||
nodamage = TRUE
|
||||
no_attack_log = TRUE
|
||||
damage_type = BURN
|
||||
check_armour = "laser"
|
||||
light_color = "#80F5FF"
|
||||
|
||||
combustion = FALSE
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/medigun
|
||||
tracer_type = /obj/effect/projectile/tracer/medigun
|
||||
impact_type = /obj/effect/projectile/impact/medigun
|
||||
|
||||
/obj/item/projectile/beam/medigun/on_hit(var/atom/target, var/blocked = 0)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/M = target
|
||||
if(M.health < M.maxHealth)
|
||||
var/obj/effect/overlay/pulse = new /obj/effect/overlay(get_turf(M))
|
||||
pulse.icon = 'icons/effects/effects.dmi'
|
||||
pulse.icon_state = "heal"
|
||||
pulse.name = "heal"
|
||||
pulse.anchored = TRUE
|
||||
spawn(20)
|
||||
qdel(pulse)
|
||||
to_chat(target, "<span class='notice'>As the beam strikes you, your injuries close up!</span>")
|
||||
M.adjustBruteLoss(-15)
|
||||
M.adjustFireLoss(-15)
|
||||
M.adjustToxLoss(-5)
|
||||
M.adjustOxyLoss(-5)
|
||||
return 1
|
||||
@@ -1,85 +0,0 @@
|
||||
/obj/item/projectile/beam/disable
|
||||
name = "disabler beam"
|
||||
icon_state = "omnilaser"
|
||||
nodamage = 1
|
||||
taser_effect = 1
|
||||
agony = 100 //One shot stuns for the time being until adjustments are fully made.
|
||||
damage_type = HALLOSS
|
||||
light_color = "#00CECE"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_omni
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_omni
|
||||
impact_type = /obj/effect/projectile/impact/laser_omni
|
||||
|
||||
/obj/item/projectile/beam/stun
|
||||
agony = 35
|
||||
|
||||
/obj/item/projectile/beam/energy_net
|
||||
name = "energy net projection"
|
||||
icon_state = "xray"
|
||||
nodamage = 1
|
||||
agony = 5
|
||||
damage_type = HALLOSS
|
||||
light_color = "#00CC33"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/xray
|
||||
tracer_type = /obj/effect/projectile/tracer/xray
|
||||
impact_type = /obj/effect/projectile/impact/xray
|
||||
|
||||
/obj/item/projectile/beam/energy_net/on_hit(var/atom/netted)
|
||||
do_net(netted)
|
||||
..()
|
||||
|
||||
/obj/item/projectile/beam/energy_net/proc/do_net(var/mob/M)
|
||||
var/obj/item/weapon/energy_net/net = new (get_turf(M))
|
||||
net.throw_impact(M)
|
||||
|
||||
/obj/item/projectile/beam/stun/blue
|
||||
icon_state = "bluelaser"
|
||||
light_color = "#0066FF"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_blue
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_blue
|
||||
impact_type = /obj/effect/projectile/impact/laser_blue
|
||||
|
||||
/obj/item/projectile/beam/weaklaser/blue
|
||||
icon_state = "bluelaser"
|
||||
light_color = "#0066FF"
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/laser_blue
|
||||
tracer_type = /obj/effect/projectile/tracer/laser_blue
|
||||
impact_type = /obj/effect/projectile/impact/laser_blue
|
||||
|
||||
/obj/item/projectile/beam/medigun
|
||||
name = "healing beam"
|
||||
icon_state = "healbeam"
|
||||
damage = 0 //stops it damaging walls
|
||||
nodamage = TRUE
|
||||
no_attack_log = TRUE
|
||||
damage_type = BURN
|
||||
check_armour = "laser"
|
||||
light_color = "#80F5FF"
|
||||
|
||||
combustion = FALSE
|
||||
|
||||
muzzle_type = /obj/effect/projectile/muzzle/medigun
|
||||
tracer_type = /obj/effect/projectile/tracer/medigun
|
||||
impact_type = /obj/effect/projectile/impact/medigun
|
||||
|
||||
/obj/item/projectile/beam/medigun/on_hit(var/atom/target, var/blocked = 0)
|
||||
if(istype(target, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/M = target
|
||||
if(M.health < M.maxHealth)
|
||||
var/obj/effect/overlay/pulse = new /obj/effect/overlay(get_turf(M))
|
||||
pulse.icon = 'icons/effects/effects.dmi'
|
||||
pulse.icon_state = "heal"
|
||||
pulse.name = "heal"
|
||||
pulse.anchored = TRUE
|
||||
spawn(20)
|
||||
qdel(pulse)
|
||||
to_chat(target, "<span class='notice'>As the beam strikes you, your injuries close up!</span>")
|
||||
M.adjustBruteLoss(-15)
|
||||
M.adjustFireLoss(-15)
|
||||
M.adjustToxLoss(-5)
|
||||
M.adjustOxyLoss(-5)
|
||||
return 1
|
||||
@@ -321,6 +321,72 @@
|
||||
embed_chance = 0
|
||||
sharp = FALSE
|
||||
|
||||
/obj/item/projectile/bullet/blank/cap/process()
|
||||
/* BB Rounds */
|
||||
/obj/item/projectile/bullet/bb // Generic single BB
|
||||
name = "BB"
|
||||
damage = 0
|
||||
agony = 0
|
||||
embed_chance = 0
|
||||
sharp = FALSE
|
||||
silenced = TRUE
|
||||
|
||||
/obj/item/projectile/bullet/pellet/shotgun/bb // Shotgun
|
||||
name = "BB"
|
||||
damage = 0
|
||||
agony = 0
|
||||
embed_chance = 0
|
||||
sharp = FALSE
|
||||
pellets = 6
|
||||
range_step = 1
|
||||
spread_step = 10
|
||||
silenced = TRUE
|
||||
|
||||
/* toy projectiles */
|
||||
/obj/item/projectile/bullet/cap
|
||||
name = "cap"
|
||||
desc = "SNAP!"
|
||||
damage = 0 // It's a damn toy.
|
||||
embed_chance = 0
|
||||
nodamage = TRUE
|
||||
sharp = FALSE
|
||||
damage_type = HALLOSS
|
||||
impact_effect_type = null
|
||||
fire_sound = 'sound/effects/snap.ogg'
|
||||
combustion = FALSE
|
||||
|
||||
/obj/item/projectile/bullet/cap/process()
|
||||
loc = null
|
||||
qdel(src)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/projectile/bullet/foam_dart
|
||||
name = "foam dart"
|
||||
desc = "I hope you're wearing eye protection."
|
||||
damage = 0 // It's a damn toy.
|
||||
embed_chance = 0
|
||||
nodamage = TRUE
|
||||
sharp = FALSE
|
||||
damage_type = HALLOSS
|
||||
impact_effect_type = null
|
||||
fire_sound = 'sound/items/syringeproj.ogg'
|
||||
combustion = FALSE
|
||||
icon = 'icons/obj/gun_toy.dmi'
|
||||
icon_state = "foamdart_proj"
|
||||
range = 15
|
||||
|
||||
/obj/item/projectile/bullet/foam_dart/on_impact(var/atom/A)
|
||||
. = ..()
|
||||
var/turf/T = get_turf(loc)
|
||||
if(istype(T))
|
||||
new /obj/item/ammo_casing/afoam_dart(get_turf(loc))
|
||||
|
||||
/obj/item/projectile/bullet/foam_dart/on_range(var/atom/A)
|
||||
. = ..()
|
||||
var/turf/T = get_turf(loc)
|
||||
if(istype(T))
|
||||
new /obj/item/ammo_casing/afoam_dart(get_turf(loc))
|
||||
|
||||
/obj/item/projectile/bullet/foam_dart/riot
|
||||
name = "riot foam dart"
|
||||
desc = "Whose smart idea was it to use toys as crowd control? Ages 18 and up."
|
||||
agony = 50
|
||||
icon_state = "foamdart_riot_proj"
|
||||
@@ -1,29 +0,0 @@
|
||||
/obj/item/projectile/bullet/pistol/rubber/strong //"rubber" bullets for revolvers and matebas
|
||||
damage = 10
|
||||
agony = 60
|
||||
embed_chance = 0
|
||||
sharp = FALSE
|
||||
check_armour = "melee"
|
||||
|
||||
/obj/item/projectile/energy/flash/strong
|
||||
name = "chemical shell"
|
||||
icon_state = "bullet"
|
||||
damage = 10
|
||||
range = 15 //if the shell hasn't hit anything after travelling this far it just explodes.
|
||||
flash_strength = 15
|
||||
brightness = 15
|
||||
|
||||
/obj/item/projectile/energy/electrode/stunshot/strong
|
||||
name = "stunshot"
|
||||
icon_state = "bullet"
|
||||
damage = 10
|
||||
taser_effect = 1
|
||||
agony = 100
|
||||
|
||||
/obj/item/projectile/bullet/magnetic/flechette/small/khi
|
||||
name = "small carbyne flechette"
|
||||
icon_state = "flechette"
|
||||
fire_sound = 'sound/weapons/rapidslice.ogg'
|
||||
damage = 18
|
||||
armor_penetration = 100
|
||||
penetrating = 10
|
||||
@@ -87,6 +87,13 @@
|
||||
damage = 5
|
||||
agony = 80
|
||||
|
||||
/obj/item/projectile/energy/electrode/stunshot/strong
|
||||
name = "stunshot"
|
||||
icon_state = "bullet"
|
||||
damage = 10
|
||||
taser_effect = 1
|
||||
agony = 100
|
||||
|
||||
/obj/item/projectile/energy/declone
|
||||
name = "declone"
|
||||
icon_state = "declone"
|
||||
@@ -136,6 +143,19 @@
|
||||
name = "largebolt"
|
||||
damage = 20
|
||||
|
||||
/obj/item/projectile/energy/bow
|
||||
name = "engergy bolt"
|
||||
icon_state = "cbbolt"
|
||||
damage = 20
|
||||
|
||||
/obj/item/projectile/energy/bow/heavy
|
||||
damage = 30
|
||||
icon_state = "cbbolt"
|
||||
|
||||
/obj/item/projectile/energy/bow/stun
|
||||
name = "stun bolt"
|
||||
agony = 30
|
||||
|
||||
/obj/item/projectile/energy/acid //Slightly up-gunned (Read: The thing does agony and checks bio resist) variant of the simple alien mob's projectile, for queens and sentinels.
|
||||
name = "acidic spit"
|
||||
icon_state = "neurotoxin"
|
||||
@@ -260,3 +280,23 @@
|
||||
range = 10
|
||||
damage = 15
|
||||
SA_bonus_damage = 60 // 75 total on animals
|
||||
|
||||
/obj/item/projectile/energy/electrode/strong
|
||||
agony = 70
|
||||
|
||||
/obj/item/projectile/energy
|
||||
flash_strength = 10
|
||||
|
||||
/obj/item/projectile/energy/flash
|
||||
flash_range = 1
|
||||
|
||||
/obj/item/projectile/energy/flash/strong
|
||||
name = "chemical shell"
|
||||
icon_state = "bullet"
|
||||
damage = 10
|
||||
range = 15 //if the shell hasn't hit anything after travelling this far it just explodes.
|
||||
flash_strength = 15
|
||||
brightness = 15
|
||||
|
||||
/obj/item/projectile/energy/flash/flare
|
||||
flash_range = 2
|
||||
@@ -1,25 +0,0 @@
|
||||
/obj/item/projectile/energy/electrode/strong
|
||||
agony = 70
|
||||
|
||||
/obj/item/projectile/energy
|
||||
flash_strength = 10
|
||||
|
||||
/obj/item/projectile/energy/flash
|
||||
flash_range = 1
|
||||
|
||||
/obj/item/projectile/energy/flash/flare
|
||||
flash_range = 2
|
||||
|
||||
/obj/item/projectile/energy/bow
|
||||
name = "engergy bolt"
|
||||
icon_state = "cbbolt"
|
||||
damage = 20
|
||||
|
||||
|
||||
/obj/item/projectile/energy/bow/heavy
|
||||
damage = 30
|
||||
icon_state = "cbbolt"
|
||||
|
||||
/obj/item/projectile/energy/bow/stun
|
||||
name = "stun bolt"
|
||||
agony = 30
|
||||
@@ -9,22 +9,30 @@
|
||||
does_spin = 0
|
||||
|
||||
/obj/item/projectile/bullet/srmrocket/on_hit(atom/target, blocked=0)
|
||||
..()
|
||||
if(!isliving(target)) //if the target isn't alive, so is a wall or something
|
||||
explosion(target, 0, 1, 2, 4)
|
||||
else
|
||||
explosion(target, 0, 0, 2, 4)
|
||||
return 1
|
||||
|
||||
/obj/item/projectile/bullet/srmrocket/throw_impact(atom/target, var/speed)
|
||||
if(!isliving(target)) //if the target isn't alive, so is a wall or something
|
||||
explosion(target, 0, 1, 2, 4)
|
||||
else
|
||||
explosion(target, 0, 0, 2, 4)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/projectile/bullet/srmrocket/weak //Used in the jury rigged one.
|
||||
damage = 10
|
||||
|
||||
/obj/item/projectile/bullet/srmrocket/weak/on_hit(atom/target, blocked=0)
|
||||
..()
|
||||
explosion(target, 0, 0, 2, 4)//No need to have a question.
|
||||
return 1
|
||||
|
||||
/obj/item/projectile/bullet/srmrocket/weak/throw_impact(atom/target, var/speed)
|
||||
explosion(target, 0, 0, 2, 4)//No need to have a question.
|
||||
qdel(src)
|
||||
|
||||
/*Old vars here for reference.
|
||||
var/devastation = 0
|
||||
var/heavy_blast = 1
|
||||
|
||||
@@ -29,6 +29,14 @@
|
||||
damage = 12
|
||||
armor_penetration = 100
|
||||
|
||||
/obj/item/projectile/bullet/magnetic/flechette/small/khi
|
||||
name = "small carbyne flechette"
|
||||
icon_state = "flechette"
|
||||
fire_sound = 'sound/weapons/rapidslice.ogg'
|
||||
damage = 18
|
||||
armor_penetration = 100
|
||||
penetrating = 10
|
||||
|
||||
/obj/item/projectile/bullet/magnetic/flechette/hunting
|
||||
name = "shredder slug"
|
||||
armor_penetration = 30
|
||||
@@ -179,4 +187,4 @@
|
||||
explosion(A, -1, -1, 1, 3)
|
||||
return ..()
|
||||
else
|
||||
..()
|
||||
..()
|
||||
@@ -87,7 +87,12 @@
|
||||
|
||||
new_temperature = round(new_temperature * temp_factor)
|
||||
L.bodytemperature = new_temperature
|
||||
|
||||
//VOREStation Add Start - The last metroid has escaped from captivity, the galaxy is no longer safe.
|
||||
if(istype(L, /mob/living/simple_mob/vore/alienanimals/space_jellyfish) && target_temperature <= T0C)
|
||||
var/mob/living/simple_mob/vore/alienanimals/space_jellyfish/J = L
|
||||
J.adjustFireLoss(75)
|
||||
J.movement_cooldown *= 2
|
||||
//VOREStation Add End
|
||||
return 1
|
||||
|
||||
/obj/item/projectile/temp/hot
|
||||
@@ -138,7 +143,7 @@
|
||||
light_power = 0.5
|
||||
light_color = "#33CC00"
|
||||
impact_effect_type = /obj/effect/temp_visual/impact_effect/monochrome_laser
|
||||
|
||||
var/lasermod = 0
|
||||
combustion = FALSE
|
||||
|
||||
/obj/item/projectile/energy/floramut/on_hit(var/atom/target, var/blocked = 0)
|
||||
@@ -195,6 +200,7 @@
|
||||
light_power = 0.5
|
||||
light_color = "#FFFFFF"
|
||||
impact_effect_type = /obj/effect/temp_visual/impact_effect/monochrome_laser
|
||||
var/lasermod = 0
|
||||
|
||||
/obj/item/projectile/energy/florayield/on_hit(var/atom/target, var/blocked = 0)
|
||||
var/mob/living/M = target
|
||||
|
||||
Reference in New Issue
Block a user