From d930b94d34ef0b8f9153b8defcd193947e3e581b Mon Sep 17 00:00:00 2001 From: Atermonera Date: Thu, 27 Jan 2022 20:08:40 -0800 Subject: [PATCH] Merge pull request #8385 from Atermonera/bb Adds caseless BB rounds for common gun types --- code/modules/projectiles/ammunition/rounds.dm | 56 ++++++++++++++++++- code/modules/projectiles/gun.dm | 2 +- code/modules/projectiles/projectile.dm | 10 ++-- .../modules/projectiles/projectile/bullets.dm | 22 +++++++- 4 files changed, 81 insertions(+), 9 deletions(-) diff --git a/code/modules/projectiles/ammunition/rounds.dm b/code/modules/projectiles/ammunition/rounds.dm index 14d52325f75..c10cf8f7b35 100644 --- a/code/modules/projectiles/ammunition/rounds.dm +++ b/code/modules/projectiles/ammunition/rounds.dm @@ -29,6 +29,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 +57,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 +84,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 +119,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 +134,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 +186,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 */ @@ -180,6 +209,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 +291,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 +331,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 +391,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 */ @@ -385,4 +437,4 @@ /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 \ No newline at end of file + projectile_type = null diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 4979cc743c4..7c04ec37508 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -464,7 +464,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() diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 9fc3ffcd3c9..abba257a937 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -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 diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 31fa34dc120..84e6674020f 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -323,4 +323,24 @@ /obj/item/projectile/bullet/blank/cap/process() loc = null - qdel(src) \ No newline at end of file + qdel(src) + +/* 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 \ No newline at end of file