Files
CHOMPStation2/code/modules/projectiles/ammunition/rounds.dm
2021-03-09 21:53:03 +00:00

389 lines
12 KiB
Plaintext

/************************************************************************/
/*
# 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 magazines.dm as well.
*/
/************************************************************************/
/*
* .357
*/
/obj/item/ammo_casing/a357
desc = "A .357 bullet casing."
caliber = ".357"
projectile_type = /obj/item/projectile/bullet/pistol/strong
matter = list(DEFAULT_WALL_MATERIAL = 210)
/*
* .38
*/
/obj/item/ammo_casing/a38
desc = "A .38 bullet casing."
caliber = ".38"
projectile_type = /obj/item/projectile/bullet/pistol
matter = list(DEFAULT_WALL_MATERIAL = 60)
/obj/item/ammo_casing/a38/rubber
desc = "A .38 rubber bullet casing."
icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/rubber
/obj/item/ammo_casing/a38/emp
name = ".38 haywire round"
desc = "A .38 bullet casing fitted with a single-use ion pulse generator."
icon_state = "empcasing"
projectile_type = /obj/item/projectile/ion/small
matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100)
/*
* .44
*/
/obj/item/ammo_casing/a44
desc = "A .44 bullet casing."
caliber = ".44"
projectile_type = /obj/item/projectile/bullet/pistol/strong
matter = list(DEFAULT_WALL_MATERIAL = 210)
/obj/item/ammo_casing/a44/rubber
icon_state = "r-casing"
desc = "A .44 rubber bullet casing."
projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong
matter = list(DEFAULT_WALL_MATERIAL = 60)
/obj/item/ammo_casing/a44/rifle
desc = "A proprietary Hedberg-Hammarstrom .44 bullet casing designed for use in revolving rifles."
projectile_type = /obj/item/projectile/bullet/rifle/a44rifle
matter = list(DEFAULT_WALL_MATERIAL = 210)
/*
* .75 (aka Gyrojet Rockets, aka admin abuse)
*/
/obj/item/ammo_casing/a75
desc = "A .75 gyrojet rocket sheathe."
caliber = ".75"
projectile_type = /obj/item/projectile/bullet/gyro
matter = list(DEFAULT_WALL_MATERIAL = 4000)
/*
* 9mm
*/
/obj/item/ammo_casing/a9mm
desc = "A 9mm bullet casing."
caliber = "9mm"
projectile_type = /obj/item/projectile/bullet/pistol
matter = list(DEFAULT_WALL_MATERIAL = 60)
/obj/item/ammo_casing/a9mm/ap
desc = "A 9mm armor-piercing bullet casing."
projectile_type = /obj/item/projectile/bullet/pistol/ap
matter = list(DEFAULT_WALL_MATERIAL = 80)
/obj/item/ammo_casing/a9mm/hp
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"
projectile_type = /obj/item/projectile/energy/flash
/obj/item/ammo_casing/a9mm/rubber
desc = "A 9mm rubber bullet casing."
icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/rubber
/obj/item/ammo_casing/a9mm/practice
desc = "A 9mm practice bullet casing."
icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/practice
/*
* .45
*/
/obj/item/ammo_casing/a45
desc = "A .45 bullet casing."
caliber = ".45"
projectile_type = /obj/item/projectile/bullet/pistol/medium
matter = list(DEFAULT_WALL_MATERIAL = 75)
/obj/item/ammo_casing/a45/ap
desc = "A .45 Armor-Piercing bullet casing."
icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/medium/ap
matter = list(DEFAULT_WALL_MATERIAL = 50, MAT_PLASTEEL = 25)
/obj/item/ammo_casing/a45/practice
desc = "A .45 practice bullet casing."
icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/practice
matter = list(DEFAULT_WALL_MATERIAL = 60)
/obj/item/ammo_casing/a45/rubber
desc = "A .45 rubber bullet casing."
icon_state = "r-casing"
projectile_type = /obj/item/projectile/bullet/pistol/rubber
matter = list(DEFAULT_WALL_MATERIAL = 60)
/obj/item/ammo_casing/a45/flash
desc = "A .45 flash shell casing."
icon_state = "r-casing"
projectile_type = /obj/item/projectile/energy/flash
matter = list(DEFAULT_WALL_MATERIAL = 60)
/obj/item/ammo_casing/a45/emp
name = ".45 haywire round"
desc = "A .45 bullet casing fitted with a single-use ion pulse generator."
projectile_type = /obj/item/projectile/ion/small
icon_state = "empcasing"
matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100)
/obj/item/ammo_casing/a45/hp
desc = "A .45 hollow-point bullet casing."
projectile_type = /obj/item/projectile/bullet/pistol/medium/hp
matter = list(DEFAULT_WALL_MATERIAL = 60, MAT_PLASTIC = 15)
/*
* 10mm
*/
/obj/item/ammo_casing/a10mm
desc = "A 10mm bullet casing."
caliber = "10mm"
projectile_type = /obj/item/projectile/bullet/pistol/medium
matter = list(DEFAULT_WALL_MATERIAL = 75)
/obj/item/ammo_casing/a10mm/emp
name = "10mm haywire round"
desc = "A 10mm bullet casing fitted with a single-use ion pulse generator."
projectile_type = /obj/item/projectile/ion/small
icon_state = "empcasing"
matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100)
/*
* 12g (aka shotgun ammo)
*/
/obj/item/ammo_casing/a12g
name = "shotgun slug"
desc = "A 12 gauge slug."
icon_state = "slshell"
caliber = "12g"
projectile_type = /obj/item/projectile/bullet/shotgun
matter = list(DEFAULT_WALL_MATERIAL = 360)
/obj/item/ammo_casing/a12g/pellet
name = "shotgun shell"
desc = "A 12 gauge shell."
icon_state = "gshell"
projectile_type = /obj/item/projectile/bullet/pellet/shotgun
/obj/item/ammo_casing/a12g/blank
name = "shotgun shell"
desc = "A blank shell."
icon_state = "blshell"
projectile_type = /obj/item/projectile/bullet/blank
matter = list(DEFAULT_WALL_MATERIAL = 90)
/obj/item/ammo_casing/a12g/practice
name = "shotgun shell"
desc = "A practice shell."
icon_state = "pshell"
projectile_type = /obj/item/projectile/bullet/practice
matter = list(DEFAULT_WALL_MATERIAL = 90)
/obj/item/ammo_casing/a12g/beanbag
name = "beanbag shell"
desc = "A beanbag shell."
icon_state = "bshell"
projectile_type = /obj/item/projectile/bullet/shotgun/beanbag
matter = list(DEFAULT_WALL_MATERIAL = 180)
//Can stun in one hit if aimed at the head, but
//is blocked by clothing that stops tasers and is vulnerable to EMP
/obj/item/ammo_casing/a12g/stunshell
name = "stun shell"
desc = "A 12 gauge taser cartridge."
icon_state = "stunshell"
projectile_type = /obj/item/projectile/energy/electrode/stunshot
matter = list(DEFAULT_WALL_MATERIAL = 360, "glass" = 720)
/obj/item/ammo_casing/a12g/stunshell/emp_act(severity)
if(prob(100/severity)) BB = null
update_icon()
//Does not stun, only blinds, but has area of effect.
/obj/item/ammo_casing/a12g/flash
name = "flash shell"
desc = "A chemical shell used to signal distress or provide illumination."
icon_state = "fshell"
projectile_type = /obj/item/projectile/energy/flash/flare
matter = list(DEFAULT_WALL_MATERIAL = 90, "glass" = 90)
/obj/item/ammo_casing/a12g/emp
name = "ion shell"
desc = "An advanced shotgun round that creates a small EMP when it strikes a target."
icon_state = "empshell"
projectile_type = /obj/item/projectile/ion
// projectile_type = /obj/item/projectile/bullet/shotgun/ion
matter = list(DEFAULT_WALL_MATERIAL = 360, "uranium" = 240)
/obj/item/ammo_casing/a12g/flechette
name = "shotgun flechette"
desc = "A 12 gauge flechette cartidge, also known as nailshot."
icon_state = "slshell"
caliber = "12g"
projectile_type = /obj/item/projectile/scatter/flechette
matter = list(DEFAULT_WALL_MATERIAL = 360, MAT_PLASTEEL = 100)
/*
* 7.62mm
*/
/obj/item/ammo_casing/a762
desc = "A 7.62mm bullet casing."
caliber = "7.62mm"
icon_state = "rifle-casing"
projectile_type = /obj/item/projectile/bullet/rifle/a762
matter = list(DEFAULT_WALL_MATERIAL = 200)
/obj/item/ammo_casing/a762/ap
desc = "A 7.62mm armor-piercing bullet casing."
projectile_type = /obj/item/projectile/bullet/rifle/a762/ap
matter = list(DEFAULT_WALL_MATERIAL = 300)
/obj/item/ammo_casing/a762/practice
desc = "A 7.62mm practice bullet casing."
icon_state = "rifle-casing" // Need to make an icon for these
projectile_type = /obj/item/projectile/bullet/practice
matter = list(DEFAULT_WALL_MATERIAL = 90)
/obj/item/ammo_casing/a762/blank
desc = "A blank 7.62mm bullet casing."
projectile_type = /obj/item/projectile/bullet/blank
matter = list(DEFAULT_WALL_MATERIAL = 90)
/obj/item/ammo_casing/a762/hp
desc = "A 7.62mm hollow-point bullet casing."
projectile_type = /obj/item/projectile/bullet/rifle/a762/hp
/obj/item/ammo_casing/a762/hunter
desc = "A 7.62mm hunting bullet casing."
projectile_type = /obj/item/projectile/bullet/rifle/a762/hunter
/*
* 14.5mm (anti-materiel rifle round)
*/
/obj/item/ammo_casing/a145
desc = "A 14.5mm shell."
icon_state = "lcasing"
caliber = "14.5mm"
projectile_type = /obj/item/projectile/bullet/rifle/a145
matter = list(MAT_TITANIUM = 2500, MAT_URANIUM = 1000, MAT_PLASTEEL = 1500)
/obj/item/ammo_casing/a145/highvel
desc = "A 14.5mm sabot shell."
projectile_type = /obj/item/projectile/bullet/rifle/a145
matter = list(MAT_TITANIUM = 2500, MAT_PLASTEEL = 1500)
/obj/item/ammo_casing/a145/spent/Initialize()
. = ..()
expend()
/*
* 5.45mm
*/
/obj/item/ammo_casing/a545
desc = "A 5.45mm bullet casing."
caliber = "5.45mm"
icon_state = "rifle-casing"
projectile_type = /obj/item/projectile/bullet/rifle/a545
matter = list(DEFAULT_WALL_MATERIAL = 180)
/obj/item/ammo_casing/a545/ap
desc = "A 5.45mm armor-piercing bullet casing."
projectile_type = /obj/item/projectile/bullet/rifle/a545/ap
matter = list(DEFAULT_WALL_MATERIAL = 270)
/obj/item/ammo_casing/a545/practice
desc = "A 5.45mm practice bullet casing."
icon_state = "rifle-casing" // Need to make an icon for these
projectile_type = /obj/item/projectile/bullet/practice
matter = list(DEFAULT_WALL_MATERIAL = 90)
/obj/item/ammo_casing/a545/blank
desc = "A blank 5.45mm bullet casing."
projectile_type = /obj/item/projectile/bullet/blank
matter = list(DEFAULT_WALL_MATERIAL = 90)
/obj/item/ammo_casing/a545/hp
desc = "A 5.45mm hollow-point bullet casing."
projectile_type = /obj/item/projectile/bullet/rifle/a545/hp
/obj/item/ammo_casing/a545/hunter
desc = "A 5.45mm hunting bullet casing."
projectile_type = /obj/item/projectile/bullet/rifle/a545/hunter
/*
* 5mm Caseless
*/
/obj/item/ammo_casing/a5mmcaseless
desc = "A 5mm solid phoron caseless round."
caliber = "5mm caseless"
icon_state = "casing" // Placeholder. Should probably be purple.
projectile_type = /obj/item/projectile/bullet/pistol // Close enough to be comparable.
matter = list(DEFAULT_WALL_MATERIAL = 180)
caseless = 1
/obj/item/ammo_casing/a5mmcaseless/stun
desc = "A 5mm solid phoron caseless stun round."
projectile_type = /obj/item/projectile/energy/electrode // Maybe nerf this considering there's 30 rounds in a mag.
/*
* Misc
*/
/obj/item/ammo_casing/rocket
name = "rocket shell"
desc = "A high explosive designed to be fired from a launcher."
icon_state = "rocketshell"
projectile_type = /obj/item/projectile/bullet/srmrocket
caliber = "rocket"
matter = list(DEFAULT_WALL_MATERIAL = 10000)
/obj/item/ammo_casing/cap
name = "cap"
desc = "A cap for children toys."
caliber = "caps"
icon_state = "r-casing"
color = "#FF0000"
projectile_type = /obj/item/projectile/bullet/pistol/cap
matter = list(DEFAULT_WALL_MATERIAL = 85)
/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