diff --git a/_maps/map_files/stations/boxstation.dmm b/_maps/map_files/stations/boxstation.dmm index ebc87d4687b..cdf79f3c730 100644 --- a/_maps/map_files/stations/boxstation.dmm +++ b/_maps/map_files/stations/boxstation.dmm @@ -1691,6 +1691,10 @@ pixel_x = 3; pixel_y = -3 }, +/obj/item/storage/box/stingers{ + pixel_x = 3; + pixel_y = 3 + }, /obj/structure/window/reinforced{ dir = 8 }, diff --git a/_maps/map_files/stations/cerestation.dmm b/_maps/map_files/stations/cerestation.dmm index 92ca3f5ec0a..3100f2fc7fb 100644 --- a/_maps/map_files/stations/cerestation.dmm +++ b/_maps/map_files/stations/cerestation.dmm @@ -92015,6 +92015,7 @@ pixel_y = -2 }, /obj/item/storage/box/handcuffs, +/obj/item/storage/box/stingers, /obj/item/storage/box/teargas{ pixel_x = -3; pixel_y = -3 diff --git a/_maps/map_files/stations/deltastation.dmm b/_maps/map_files/stations/deltastation.dmm index 12cc0a8a1fc..d6510ce5c30 100644 --- a/_maps/map_files/stations/deltastation.dmm +++ b/_maps/map_files/stations/deltastation.dmm @@ -15929,6 +15929,7 @@ pixel_y = -3 }, /obj/item/storage/box/handcuffs, +/obj/item/storage/box/stingers, /obj/item/storage/box/flashbangs{ pixel_x = -2; pixel_y = -2 diff --git a/_maps/map_files/stations/emeraldstation.dmm b/_maps/map_files/stations/emeraldstation.dmm index cccfbe11e01..2f940dbf33a 100644 --- a/_maps/map_files/stations/emeraldstation.dmm +++ b/_maps/map_files/stations/emeraldstation.dmm @@ -110878,6 +110878,7 @@ /obj/item/storage/box/flashbangs{ pixel_x = -3 }, +/obj/item/storage/box/stingers, /obj/item/storage/box/teargas{ pixel_x = -1; pixel_y = 2 diff --git a/_maps/map_files/stations/metastation.dmm b/_maps/map_files/stations/metastation.dmm index b6c46433d6f..d54fe0bf7d3 100644 --- a/_maps/map_files/stations/metastation.dmm +++ b/_maps/map_files/stations/metastation.dmm @@ -65653,6 +65653,7 @@ pixel_x = 1; pixel_y = 4 }, +/obj/item/storage/box/stingers, /obj/item/storage/box/teargas{ pixel_x = -1; pixel_y = 2 diff --git a/code/game/objects/items/weapons/grenades/frag.dm b/code/game/objects/items/weapons/grenades/frag.dm index 676477a6900..52d95636b5f 100644 --- a/code/game/objects/items/weapons/grenades/frag.dm +++ b/code/game/objects/items/weapons/grenades/frag.dm @@ -17,6 +17,22 @@ create_shrapnel(loc, shrapnel_contained, shrapnel_type = embedded_type) qdel(src) +/obj/item/grenade/frag/stinger + name = "stingball grenade" + desc = "A specialized less-lethal hand grenade used for police action. Launches hard rubber balls in all directions upon detonation." + icon_state = "stinger" + item_state = "grenade" + det_time = 5 SECONDS + modifiable_timer = FALSE + shrapnel_contained = 50 + embedded_type = /obj/item/projectile/bullet/pellet/rubber/stinger + +/obj/item/grenade/frag/prime() + update_mob() + explosion(loc, 0, 0, 0, 0, DEFAULT_SHRAPNEL_RANGE + 2, cause = name, breach = FALSE) + create_shrapnel(loc, shrapnel_contained, shrapnel_type = embedded_type) + qdel(src) + /** * Shrapnel that flies through the air and hits you */ diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 6098f358144..a0efde6cdbe 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -311,6 +311,7 @@ /obj/item/grenade/barrier, /obj/item/grenade/flashbang, /obj/item/grenade/chem_grenade/teargas, + /obj/item/grenade/frag/stinger, /obj/item/reagent_containers/spray/pepper, /obj/item/restraints/handcuffs, /obj/item/flash, diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm index 9c3c83a6a66..c77bafb2c3e 100644 --- a/code/game/objects/items/weapons/storage/boxes.dm +++ b/code/game/objects/items/weapons/storage/boxes.dm @@ -569,6 +569,15 @@ for(var/I in 1 to 7) new /obj/item/grenade/flashbang(src) +/obj/item/storage/box/stingers + name = "box of stinger grenades (WARNING)" + desc = "WARNING: These devices are dangerous and can cause significant physical harm with repeated use." + icon_state = "flashbang_box" + +/obj/item/storage/box/stingers/populate_contents() + for(var/I in 1 to 7) + new /obj/item/grenade/frag/stinger(src) + /obj/item/storage/box/smoke_grenades name = "smoke grenades" desc = "A box with 7 smoke grenades." diff --git a/code/modules/projectiles/projectile/bullets.dm b/code/modules/projectiles/projectile/bullets.dm index 6fb3ddd2bb6..3c49efc0c1b 100644 --- a/code/modules/projectiles/projectile/bullets.dm +++ b/code/modules/projectiles/projectile/bullets.dm @@ -99,6 +99,13 @@ if(initial(range) - range <= 5 && H.getStaminaLoss() >= 60) H.KnockDown(8 SECONDS) +/obj/item/projectile/bullet/pellet/rubber/stinger + name = "stingball" + damage = 1 + stamina = 12.5 + icon_state = "bullet-r" + armour_penetration_flat = -10 + /obj/item/projectile/bullet/pellet/assassination damage = 12 tile_dropoff = 1 // slightly less damage and greater damage falloff compared to normal buckshot diff --git a/code/modules/supply/supply_packs/pack_security.dm b/code/modules/supply/supply_packs/pack_security.dm index 36ac74377fb..a4e19f7ae2a 100644 --- a/code/modules/supply/supply_packs/pack_security.dm +++ b/code/modules/supply/supply_packs/pack_security.dm @@ -226,6 +226,13 @@ containertype = /obj/structure/closet/crate/secure/plasma containername = "energy shotgun crate" +/datum/supply_packs/security/armory/stingers + name = "Stinger Grenade Crate" + contains = list(/obj/item/storage/box/stingers, + /obj/item/storage/box/stingers) + cost = 300 + containername = "stingball grenade crate" + /// costs 3/5ths of the normal e-guns for 3/4ths the total ammo, making it cheaper to arm more people, but less convient for any one person /datum/supply_packs/security/armory/epistol name = "Energy Pistol Crate" diff --git a/icons/obj/grenade.dmi b/icons/obj/grenade.dmi index dae1a66e726..51ea2b94d44 100644 Binary files a/icons/obj/grenade.dmi and b/icons/obj/grenade.dmi differ