diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm
index 01765fad4b5..0345775a7e5 100644
--- a/_maps/map_files/cyberiad/z2.dmm
+++ b/_maps/map_files/cyberiad/z2.dmm
@@ -923,7 +923,7 @@
"rM" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_rightnostop"; nostop = 1},/turf/space/transit/east/shuttlespace_ew2,/area/space)
"rN" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_rightnostop"; nostop = 1},/turf/space/transit/east/shuttlespace_ew10,/area/space)
"rO" = (/obj/effect/step_trigger/thrower{affect_ghosts = 1; direction = 4; name = "thrower_rightnostop"; nostop = 1},/turf/space/transit/east/shuttlespace_ew6,/area/space)
-"rP" = (/obj/structure/table/reinforced,/obj/item/weapon/grenade/flashbang/clusterbang,/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine,/area/shuttle/gamma/space)
+"rP" = (/obj/structure/table/reinforced,/obj/item/weapon/grenade/clusterbuster,/obj/machinery/ai_status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine,/area/shuttle/gamma/space)
"rQ" = (/obj/structure/table/reinforced,/obj/item/weapon/grenade/chem_grenade/incendiary{name = "Incendiary Grenade"},/obj/machinery/light{dir = 1},/turf/simulated/floor/engine,/area/shuttle/gamma/space)
"rR" = (/obj/structure/table/reinforced,/obj/item/weapon/kitchenknife/combat,/obj/item/weapon/kitchenknife/combat,/obj/item/weapon/kitchenknife/combat,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/engine,/area/shuttle/gamma/space)
"rS" = (/obj/structure/closet/secure_closet/guncabinet,/obj/item/ammo_box/shotgun/buck,/obj/item/ammo_box/shotgun/buck,/obj/item/ammo_box/shotgun/buck,/obj/item/weapon/gun/projectile/shotgun/combat,/obj/item/weapon/gun/projectile/shotgun/combat,/obj/item/weapon/gun/projectile/shotgun/combat,/turf/simulated/floor/engine,/area/shuttle/gamma/space)
@@ -2072,3 +2072,4 @@ aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
aNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN
"}
+
diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index 2e3b0d4fba8..40e82c38d9c 100644
--- a/code/game/mecha/equipment/weapons/weapons.dm
+++ b/code/game/mecha/equipment/weapons/weapons.dm
@@ -402,7 +402,7 @@
name = "SOB-3 Grenade Launcher"
desc = "A weapon for combat exosuits. Launches primed clusterbangs. You monster."
projectiles = 3
- projectile = /obj/item/weapon/grenade/flashbang/clusterbang
+ projectile = /obj/item/weapon/grenade/clusterbuster
projectile_energy_cost = 1600 //getting off cheap seeing as this is 3 times the flashbangs held in the grenade launcher.
equip_cooldown = 90
size=1
diff --git a/code/game/objects/items/random_items.dm b/code/game/objects/items/random_items.dm
index 494353ee47a..937d901f117 100644
--- a/code/game/objects/items/random_items.dm
+++ b/code/game/objects/items/random_items.dm
@@ -276,7 +276,7 @@
/mob/living/simple_animal/hostile/hivebot,/mob/living/simple_animal/hostile/viscerator,/mob/living/simple_animal/hostile/pirate)
visible_message("\red Something falls out of the [src]!")
- var/obj/item/weapon/grenade/flashbang/clusterbang/C = new(src.loc)
+ var/obj/item/weapon/grenade/clusterbuster/C = new(src.loc)
C.prime()
spawn(10)
new menace(src.loc)
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index 13717265c78..348b4311677 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -415,8 +415,7 @@
var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
- B1.reagents.add_reagent("aluminum", 25)
- B1.reagents.add_reagent("incendiaryfuel",25)
+ B1.reagents.add_reagent("phosphorus", 25)
B2.reagents.add_reagent("plasma", 25)
B2.reagents.add_reagent("sacid", 25)
@@ -485,6 +484,26 @@
beakers += B2
update_icon()
+/obj/item/weapon/grenade/chem_grenade/facid
+ name = "acid grenade"
+ desc = "Used for melting armoured opponents."
+ stage = READY
+
+/obj/item/weapon/grenade/chem_grenade/facid/New()
+ ..()
+ var/obj/item/weapon/reagent_containers/glass/beaker/bluespace/B1 = new(src)
+ var/obj/item/weapon/reagent_containers/glass/beaker/bluespace/B2 = new(src)
+
+ B1.reagents.add_reagent("facid", 280)
+ B1.reagents.add_reagent("potassium", 20)
+ B2.reagents.add_reagent("phosphorus", 20)
+ B2.reagents.add_reagent("sugar", 20)
+ B2.reagents.add_reagent("facid", 260)
+
+ beakers += B1
+ beakers += B2
+ update_icon()
+
/obj/item/weapon/grenade/chem_grenade/tabungas
payload_name = "tabungas"
desc = "Contains tabun gas; extremely deadly and fast acting; use with extreme caution."
diff --git a/code/game/objects/items/weapons/grenades/clusterbuster.dm b/code/game/objects/items/weapons/grenades/clusterbuster.dm
new file mode 100644
index 00000000000..a160c99f8c3
--- /dev/null
+++ b/code/game/objects/items/weapons/grenades/clusterbuster.dm
@@ -0,0 +1,266 @@
+////////////////////
+//Clusterbang
+////////////////////
+/obj/item/weapon/grenade/clusterbuster
+ desc = "Use of this weapon may constiute a war crime in your area, consult your local captain."
+ name = "clusterbang"
+ icon = 'icons/obj/grenade.dmi'
+ icon_state = "clusterbang"
+ var/payload = /obj/item/weapon/grenade/flashbang/cluster
+
+/obj/item/weapon/grenade/clusterbuster/prime()
+ update_mob()
+ var/numspawned = rand(4,8)
+ var/again = 0
+
+ for(var/more = numspawned,more > 0,more--)
+ if(prob(35))
+ again++
+ numspawned--
+
+ for(var/loop = again ,loop > 0, loop--)
+ new /obj/item/weapon/grenade/clusterbuster/segment(loc, payload)//Creates 'segments' that launches a few more payloads
+
+ new /obj/effect/payload_spawner(loc, payload, numspawned)//Launches payload
+
+ playsound(loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
+
+ qdel(src)
+
+
+//////////////////////
+//Clusterbang segment
+//////////////////////
+/obj/item/weapon/grenade/clusterbuster/segment
+ desc = "A smaller segment of a clusterbang. Better run."
+ name = "clusterbang segment"
+ icon = 'icons/obj/grenade.dmi'
+ icon_state = "clusterbang_segment"
+
+/obj/item/weapon/grenade/clusterbuster/segment/New(var/loc, var/payload_type = /obj/item/weapon/grenade/flashbang/cluster)
+ ..()
+ icon_state = "clusterbang_segment_active"
+ payload = payload_type
+ active = 1
+ walk_away(src,loc,rand(1,4))
+ spawn(rand(15,60))
+ prime()
+
+
+/obj/item/weapon/grenade/clusterbuster/segment/prime()
+
+ new /obj/effect/payload_spawner(loc, payload, rand(4,8))
+
+ playsound(loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
+
+ qdel(src)
+
+//////////////////////////////////
+//The payload spawner effect
+/////////////////////////////////
+/obj/effect/payload_spawner/New(var/turf/newloc,var/type, var/numspawned as num)
+
+ for(var/loop = numspawned ,loop > 0, loop--)
+ var/obj/item/weapon/grenade/P = new type(loc)
+ if(istype(P, /obj/item/weapon/grenade))
+ P.active = 1
+ walk_away(P,loc,rand(1,4))
+
+ spawn(rand(15,60))
+ if(P && isnull(P.gcDestroyed))
+ if(istype(P, /obj/item/weapon/grenade))
+ P.prime()
+ qdel(src)
+
+
+//////////////////////////////////
+//Custom payload clusterbusters
+/////////////////////////////////
+/obj/item/weapon/grenade/flashbang/cluster
+ icon_state = "flashbang_active"
+ banglet = 1
+
+/obj/item/weapon/grenade/clusterbuster/emp
+ name = "Electromagnetic Storm"
+ payload = /obj/item/weapon/grenade/empgrenade
+
+/obj/item/weapon/grenade/clusterbuster/smoke
+ name = "Ninja Vanish"
+ payload = /obj/item/weapon/grenade/smokebomb
+
+/obj/item/weapon/grenade/clusterbuster/metalfoam
+ name = "Instant Concrete"
+ payload = /obj/item/weapon/grenade/chem_grenade/metalfoam
+
+/obj/item/weapon/grenade/clusterbuster/inferno
+ name = "Inferno"
+ payload = /obj/item/weapon/grenade/chem_grenade/incendiary
+
+/obj/item/weapon/grenade/clusterbuster/antiweed
+ name = "RoundDown"
+ payload = /obj/item/weapon/grenade/chem_grenade/antiweed
+
+/obj/item/weapon/grenade/clusterbuster/cleaner
+ name = "Mr. Proper"
+ payload = /obj/item/weapon/grenade/chem_grenade/cleaner
+
+/obj/item/weapon/grenade/clusterbuster/teargas
+ name = "Oignon Grenade"
+ payload = /obj/item/weapon/grenade/chem_grenade/teargas
+
+/obj/item/weapon/grenade/clusterbuster/facid
+ name = "Aciding Rain"
+ payload = /obj/item/weapon/grenade/chem_grenade/facid
+
+/obj/item/weapon/grenade/clusterbuster/syndieminibomb
+ name = "SyndiWrath"
+ payload = /obj/item/weapon/grenade/syndieminibomb
+
+/obj/item/weapon/grenade/clusterbuster/spawner_manhacks
+ name = "iViscerator"
+ payload = /obj/item/weapon/grenade/spawnergrenade/manhacks
+
+/obj/item/weapon/grenade/clusterbuster/spawner_spesscarp
+ name = "Invasion of the Space Carps"
+ payload = /obj/item/weapon/grenade/spawnergrenade/spesscarp
+
+/obj/item/weapon/grenade/clusterbuster/monster
+ name = "Monster Megabomb"
+ payload = /obj/item/weapon/grenade/chem_grenade/large/monster
+
+/obj/item/weapon/grenade/clusterbuster/meat
+ name = "Mega Meat Grenade"
+ payload = /obj/item/weapon/grenade/chem_grenade/meat
+
+/obj/item/weapon/grenade/clusterbuster/nervegas
+ name = "Nerve Gas Clusterbomb"
+ payload = /obj/item/weapon/grenade/chem_grenade/tabungas
+
+/obj/item/weapon/grenade/clusterbuster/megadirt
+ name = "Megamaid's Revenge Grenade"
+ payload = /obj/item/weapon/grenade/chem_grenade/dirt
+
+/obj/item/weapon/grenade/clusterbuster/ultima
+ name = "Earth Shattering Kaboom"
+ desc = "Contains one Aludium Q-36 explosive space modulator."
+ payload = /obj/item/weapon/grenade/chem_grenade/explosion
+
+/obj/item/weapon/grenade/clusterbuster/lube
+ name = "Newton's First Law"
+ desc = "An object in motion remains in motion."
+ payload = /obj/item/weapon/grenade/chem_grenade/lube
+
+/obj/item/weapon/grenade/clusterbuster/hippie
+ name = "Hippie Grenade"
+ desc = "Almost as good as the summer of '69."
+ payload = /obj/item/weapon/grenade/chem_grenade/drugs
+
+/obj/item/weapon/grenade/clusterbuster/holy
+ name = "Purification Grenade"
+ desc = "Blessed excessively."
+ payload = /obj/item/weapon/grenade/chem_grenade/holywater
+
+/obj/item/weapon/grenade/clusterbuster/hellwater
+ name = "Righteous Fury"
+ desc = "It's righteous, not badminnery."
+ payload = /obj/item/weapon/grenade/chem_grenade/hellwater
+
+/obj/item/weapon/grenade/clusterbuster/booze
+ name = "Booze Grenade"
+ payload = /obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink
+
+/obj/item/weapon/grenade/clusterbuster/honk
+ name = "Mega Honk Grenade"
+ payload = /obj/item/weapon/bananapeel
+
+/obj/item/weapon/grenade/clusterbuster/honk_evil
+ name = "Evil Mega Honk Grenade"
+ payload = /obj/item/weapon/grenade/clown_grenade
+
+/obj/item/weapon/grenade/clusterbuster/xmas
+ name = "Christmas Miracle"
+ payload = /obj/item/weapon/a_gift
+
+/obj/item/weapon/grenade/clusterbuster/dirt
+ name = "Megamaid's Job Security Grenade"
+ payload = /obj/effect/decal/cleanable/random
+
+/obj/item/weapon/grenade/clusterbuster/apocalypsefake
+ name = "Fun Bomb"
+ desc = "Not like the other bomb."
+ payload = /obj/item/toy/spinningtoy
+
+/obj/item/weapon/grenade/clusterbuster/apocalypse
+ name = "Apocalypse Bomb"
+ desc = "No matter what, do not EVER use this."
+ payload = /obj/singularity
+
+/obj/item/weapon/grenade/clusterbuster/tools
+ name = "Quick Repair Grenade"
+ desc = "An assistant's every dream."
+ payload = /obj/random/tool
+
+/obj/item/weapon/grenade/clusterbuster/tools
+ name = "Engineering Deployment Platfom"
+ desc = "For the that time when gearing up was just too hard."
+ payload = /obj/random/tech_supply
+
+/obj/item/weapon/grenade/clusterbuster/toys
+ name = "Toy Delivery System"
+ desc = "Who needs skill at arcades anyway?"
+ payload = /obj/item/toy/random
+
+/obj/item/weapon/grenade/clusterbuster/banquet
+ name = "Bork Bork Bonanza"
+ desc = "Bork bork bork."
+ payload = /obj/item/weapon/grenade/clusterbuster/banquet/child
+
+/obj/item/weapon/grenade/clusterbuster/banquet/child
+ payload = /obj/item/weapon/grenade/chem_grenade/large/feast
+
+/obj/item/weapon/grenade/clusterbuster/aviary
+ name = "Poly-Poly Grenade"
+ desc = "That's an uncomfortable number of birds."
+ payload = /mob/living/simple_animal/parrot
+
+/obj/item/weapon/grenade/clusterbuster/monkey
+ name = "Barrel of Monkeys"
+ desc = "Not really that much fun."
+ payload = /mob/living/carbon/human/monkey
+
+/obj/item/weapon/grenade/clusterbuster/fluffy
+ name = "Fluffy Love Bomb"
+ desc = "Exactly as snuggly as it sounds."
+ payload = /mob/living/simple_animal/pet/corgi/puppy
+
+/obj/item/weapon/grenade/clusterbuster/fox
+ name = "Troublemaking Grenade"
+ desc = "More trouble than two foxes combined."
+ payload = /mob/living/simple_animal/pet/fox
+
+/obj/item/weapon/grenade/clusterbuster/crab
+ name = "Crab Grenade"
+ desc = "Reserved for those pesky request."
+ payload = /mob/living/simple_animal/crab
+
+////////////Clusterbuster of Clusterbusters////////////
+
+/obj/item/weapon/grenade/clusterbuster/mega_fox
+ name = "Mega Troublemaking Grenade."
+ payload = /obj/item/weapon/grenade/clusterbuster/fox
+
+/obj/item/weapon/grenade/clusterbuster/mega_bang
+ name = "For when stunlocking is just too short."
+ payload = /obj/item/weapon/grenade/clusterbuster
+
+/obj/item/weapon/grenade/clusterbuster/mega_syndieminibomb
+ name = "Mega SyndiWrath."
+ payload = /obj/item/weapon/grenade/clusterbuster/syndieminibomb
+
+/obj/item/weapon/grenade/clusterbuster/mega_honk_evil
+ name = "Mega Evil Mega Honk Grenade."
+ payload = /obj/item/weapon/grenade/clusterbuster/honk_evil
+
+/obj/item/weapon/grenade/clusterbuster/mega_emp
+ name = "Electromagnetic Storm"
+ payload = /obj/item/weapon/grenade/clusterbuster/emp
diff --git a/code/game/objects/items/weapons/grenades.dm b/code/game/objects/items/weapons/grenades/custom_grenades.dm
similarity index 55%
rename from code/game/objects/items/weapons/grenades.dm
rename to code/game/objects/items/weapons/grenades/custom_grenades.dm
index b8badd98707..d22a9e1a982 100644
--- a/code/game/objects/items/weapons/grenades.dm
+++ b/code/game/objects/items/weapons/grenades/custom_grenades.dm
@@ -47,6 +47,22 @@
B.reagents.add_reagent("holywater",100)
beakers += B
+/obj/item/weapon/grenade/chem_grenade/hellwater
+ payload_name = "hell water"
+ desc = "And he struck them down with an unholy fury that burn like one-thousands badmins."
+ stage = 2
+ det_time = 30
+
+ New()
+ ..()
+ var/obj/item/weapon/reagent_containers/glass/beaker/large/B1 = new(src)
+ var/obj/item/weapon/reagent_containers/glass/beaker/large/B2 = new(src)
+ B1.reagents.add_reagent("hellwater",80)
+ B1.reagents.add_reagent("sugar",20)
+ B2.reagents.add_reagent("hellwater", 60)
+ B2.reagents.add_reagent("potassium", 20)
+ B2.reagents.add_reagent("phosphorus", 20)
+
/obj/item/weapon/grenade/chem_grenade/drugs
payload_name = "miracle"
@@ -253,17 +269,6 @@
beakers += B1
beakers += B2
-// Slime Clusterbusters
-/*/obj/item/weapon/grenade/clusterbuster/bluespace
- name = "Bluespace Megabomb"
- desc = "Widely regarded as proof that while there is a God, He is Insane."
- payload = /obj/item/weapon/grenade/chem_grenade/large/bluespace*/
-
-/obj/item/weapon/grenade/clusterbuster/monster
- name = "Monster Megabomb"
- desc = "Widely regarded as proof that there is no God."
- payload = /obj/item/weapon/grenade/chem_grenade/large/monster
-
// --------------------------------------
// Syndie Kits
// --------------------------------------
@@ -291,171 +296,4 @@
new /obj/item/weapon/grenade/chem_grenade/lube(src)
new /obj/item/device/multitool(src) // used to adjust the chemgrenade's signaller
new /obj/item/device/assembly/signaler(src)
- return
-// --------------------------------------
-// Clusterbuster Variable Payload Grenade
-// Adapted from flashbang/clusterbang
-// --------------------------------------
-
-/obj/item/weapon/grenade/clusterbuster
- desc = "This highly intimidating bunch of hardware seems eager to be let loose."
- name = "Clusterbang"
- icon = 'icons/obj/grenade.dmi'
- icon_state = "clusterbang"
- var/payload = /obj/item/weapon/grenade/flashbang
-
-
-// Subtypes
-
-// Serious grenades
-/obj/item/weapon/grenade/clusterbuster/explosion
- name = "Cluster Grenade"
- payload = /obj/item/weapon/grenade/chem_grenade/explosion
-/obj/item/weapon/grenade/clusterbuster/emp
- name = "Electromagnetic Storm"
- payload = /obj/item/weapon/grenade/chem_grenade/emp
-/obj/item/weapon/grenade/clusterbuster/smoke
- name = "Ninja Vanish"
- payload = /obj/item/weapon/grenade/smokebomb
-
-// Not serious grenades
-/obj/item/weapon/grenade/clusterbuster/meat
- name = "Mega Meat Grenade"
- payload = /obj/item/weapon/grenade/chem_grenade/meat
-/obj/item/weapon/grenade/clusterbuster/booze
- name = "Booze Grenade"
- payload = /obj/item/weapon/reagent_containers/food/drinks/bottle/random_drink
-/obj/item/weapon/grenade/clusterbuster/honk
- name = "Mega Honk Grenade"
- payload = /obj/item/weapon/bananapeel
-/obj/item/weapon/grenade/clusterbuster/xmas
- name = "Christmas Miracle"
- payload = /obj/item/weapon/a_gift
-/obj/item/weapon/grenade/clusterbuster/dirt
- name = "Megamaid's Job Security Grenade"
- payload = /obj/effect/decal/cleanable/random
-/obj/item/weapon/grenade/clusterbuster/megadirt
- name = "Megamaid's Revenge Grenade"
- payload = /obj/item/weapon/grenade/chem_grenade/dirt
-/obj/item/weapon/grenade/clusterbuster/inferno
- name = "Little Boy"
- payload = /obj/item/weapon/grenade/chem_grenade/incendiary
-/obj/item/weapon/grenade/clusterbuster/apocalypsefake
- name = "Fun Bomb"
- desc = "Not like the other bomb."
- payload = /obj/item/toy/spinningtoy
-
-// Grenades that should never see the light of day
-/obj/item/weapon/grenade/clusterbuster/apocalypse
- name = "Apocalypse Bomb"
- desc = "No matter what, do not EVER use this."
- payload = /obj/singularity
-
-/obj/item/weapon/grenade/clusterbuster/ultima
- name = "Earth Shattering Kaboom"
- desc = "Contains one Aludium Q-36 explosive space modulator."
- payload = /obj/item/weapon/grenade/chem_grenade/explosion
-
-/obj/item/weapon/grenade/clusterbuster/lube
- name = "Newton's First Law"
- desc = "An object in motion remains in motion."
- payload = /obj/item/weapon/grenade/chem_grenade/lube
-
-
-/*/obj/item/weapon/grenade/clusterbuster/bluespace
- name = "Maximum Warp"
- desc = "Spacetime: Nice job breaking it, hero."
- payload = /obj/item/weapon/grenade/chem_grenade/large/bluespace*/
-/obj/item/weapon/grenade/clusterbuster/monster
- name = "The Monster Mash"
- desc = "It's a graveyeard smash."
- payload = /obj/item/weapon/grenade/chem_grenade/large/monster
-/obj/item/weapon/grenade/clusterbuster/banquet
- name = "Bork Bork Bonanza"
- desc = "Bork bork bork."
- payload = /obj/item/weapon/grenade/clusterbuster/banquet/child
- child
- payload = /obj/item/weapon/grenade/chem_grenade/large/feast
-
-// Mob spawning grenades
-/obj/item/weapon/grenade/clusterbuster/aviary
- name = "Poly-Poly Grenade"
- desc = "That's an uncomfortable number of birds."
- payload = /mob/living/simple_animal/parrot
-/obj/item/weapon/grenade/clusterbuster/monkey
- name = "Barrel of Monkeys"
- desc = "Not really that much fun."
- payload = /mob/living/carbon/human/monkey
-/obj/item/weapon/grenade/clusterbuster/fluffy
- name = "Fluffy Love Bomb"
- desc = "Exactly as snuggly as it sounds."
- payload = /mob/living/simple_animal/pet/corgi/puppy
-
-/obj/item/weapon/grenade/clusterbuster/prime()
- var/numspawned = rand(4,8)
- var/again = 0
- for(var/more = numspawned,more > 0,more--)
- if(prob(35))
- again++
- numspawned --
-
- for(,numspawned > 0, numspawned--)
- spawn(0)
- new /obj/item/weapon/grenade/clusterbuster/node(src.loc,payload,name)//Launches payload
- playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
-
- for(,again > 0, again--)
- spawn(0)
- new /obj/item/weapon/grenade/clusterbuster/segment(src.loc,payload,name)//Creates a 'segment' that launches more payloads
- playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
- spawn(0)
- qdel(src)
- return
-
-/obj/item/weapon/grenade/clusterbuster/segment
- desc = "What's happening? Aaah!"
- name = "clusterbuster segment"
- icon = 'icons/obj/grenade.dmi'
- icon_state = "clusterbang_segment"
-
-/obj/item/weapon/grenade/clusterbuster/segment/New(var/turf/newloc,var/T,var/N)//Segments should never exist except part of the clusterbang, since these immediately 'do their thing' and asplode
- icon_state = "clusterbang_segment_active"
- active = 1
- payload = T
- name = N
- var/stepdist = rand(1,5) //How far to step
- var/temploc = src.loc //Saves the current location to know where to step away from
- walk_away(src,temploc,stepdist) //I must go, my people need me
- var/dettime = rand(15,60)
- spawn(dettime)
- prime()
-
-/obj/item/weapon/grenade/clusterbuster/segment/prime()
- var/numspawned = rand(4,8)
- for(var/more = numspawned,more > 0,more--)
- if(prob(35))
- numspawned --
-
- for(,numspawned > 0, numspawned--)
- new /obj/item/weapon/grenade/clusterbuster/node(src.loc,payload)
- spawn(0)
- playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
- qdel(src)
- return
-
-/obj/item/weapon/grenade/clusterbuster/node/New(var/turf/newloc,var/T,var/N)
- icon_state = "flashbang_active"
- active = 1
- payload = T
- name = N
- var/stepdist = rand(1,4)
- var/temploc = src.loc
- walk_away(src,temploc,stepdist)
- var/dettime = rand(15,60)
- spawn(dettime)
- var/atom/A = new payload(loc)
- if(istype(A,/obj/item/weapon/grenade))
- A:prime()
- if(istype(A,/obj/singularity)) // I can't emphasize enough how much you should never use this grenade
- A:energy = 200
- qdel(src)
+ return
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm
index 9efb53e3207..7eca6aa719b 100644
--- a/code/game/objects/items/weapons/grenades/flashbang.dm
+++ b/code/game/objects/items/weapons/grenades/flashbang.dm
@@ -21,7 +21,7 @@
/obj/item/weapon/grenade/flashbang/proc/bang(var/turf/T , var/mob/living/M)
M.show_message("BANG", 2)
- playsound(src.loc, 'sound/effects/bang.ogg', 25, 1)
+ playsound(loc, 'sound/effects/bang.ogg', 25, 1)
//Checking for protections
var/eye_safety = 0
@@ -48,12 +48,12 @@
M << "Your eyes start to burn badly!"
else
M << "The flash blinds you!"
- if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang)))
+ if(!banglet)
if (E.damage >= E.min_broken_damage)
M << "You can't see anything!"
//Bang
- if((src.loc == M) || src.loc == M.loc)//Holding on person or being exactly where lies is significantly more dangerous and voids protection
+ if((loc == M) || loc == M.loc)//Holding on person or being exactly where lies is significantly more dangerous and voids protection
M.Stun(10)
M.Weaken(10)
if(!ear_safety)
@@ -63,81 +63,10 @@
M.ear_deaf = max(M.ear_deaf,15)
if (M.ear_damage >= 15)
M << "Your ears start to ring badly!"
- if(!banglet && !(istype(src , /obj/item/weapon/grenade/flashbang/clusterbang)))
+ if(!banglet)
if(prob(M.ear_damage - 10 + 5))
M << "You can't hear anything!"
M.disabilities |= DEAF
else
if (M.ear_damage >= 5)
- M << "Your ears start to ring!"
-
-////////////////////
-//Clusterbang
-////////////////////
-/obj/item/weapon/grenade/flashbang/clusterbang
- desc = "Use of this weapon may constiute a war crime in your area, consult your local captain."
- name = "clusterbang"
- icon = 'icons/obj/grenade.dmi'
- icon_state = "clusterbang"
-
-/obj/item/weapon/grenade/flashbang/clusterbang/prime()
- update_mob()
- var/numspawned = rand(4,8)
- var/again = 0
-
- for(var/more = numspawned,more > 0,more--)
- if(prob(35))
- again++
- numspawned--
-
- for(var/loop = numspawned, loop > 0, loop--)
- new /obj/item/weapon/grenade/flashbang/cluster(loc)//Launches flashbangs
-
- for(var/loop = again ,loop > 0, loop--)
- new /obj/item/weapon/grenade/flashbang/clusterbang/segment(loc)//Creates a 'segment' that launches a few more flashbangs
-
- playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
-
- qdel(src)
-
-
-//////////////////////
-//Clusterbang segment
-//////////////////////
-/obj/item/weapon/grenade/flashbang/clusterbang/segment
- desc = "A smaller segment of a clusterbang. Better run."
- name = "clusterbang segment"
- icon = 'icons/obj/grenade.dmi'
- icon_state = "clusterbang_segment"
-
-/obj/item/weapon/grenade/flashbang/clusterbang/segment/New()
- ..()
- icon_state = "clusterbang_segment_active"
- active = 1
- walk_away(src,loc,rand(1,4))
- spawn(rand(15,60))
- prime()
-
-
-/obj/item/weapon/grenade/flashbang/clusterbang/segment/prime()
- update_mob()
- var/numspawned = rand(4,8)
-
- for(var/loop = numspawned ,loop > 0, loop--)
- new /obj/item/weapon/grenade/flashbang/cluster(loc)
-
- playsound(src.loc, 'sound/weapons/armbomb.ogg', 75, 1, -3)
-
- qdel(src)
-
-////////////////////////////////
-//Clusterbang spawned flashbang
-////////////////////////////////
-/obj/item/weapon/grenade/flashbang/cluster/New()
- ..()
- icon_state = "flashbang_active"
- active = 1
- banglet = 1
- walk_away(src,loc,rand(1,3))
- spawn(rand(15,60))
- prime()
\ No newline at end of file
+ M << "Your ears start to ring!"
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm
index 0dd85c270ab..a687faac443 100644
--- a/code/game/objects/items/weapons/storage/lockbox.dm
+++ b/code/game/objects/items/weapons/storage/lockbox.dm
@@ -81,7 +81,7 @@
New()
..()
- new /obj/item/weapon/grenade/flashbang/clusterbang(src)
+ new /obj/item/weapon/grenade/clusterbuster(src)
/obj/item/weapon/storage/lockbox/medal
diff --git a/code/modules/reagents/oldchem/reagents/reagents_flammable.dm b/code/modules/reagents/oldchem/reagents/reagents_flammable.dm
index 4603aa6c238..4e9d4baa1e9 100644
--- a/code/modules/reagents/oldchem/reagents/reagents_flammable.dm
+++ b/code/modules/reagents/oldchem/reagents/reagents_flammable.dm
@@ -40,38 +40,6 @@
M.adjustBruteLoss(2)
holder.remove_reagent(src.id, 1)
-
-/datum/reagent/incendiary_fuel //copy-pasta of welding fuel; allow incendiary grenades to function better without the headache of people spraying fuel everywhere with regular welding fuel.
- name = "Incendiary fuel"
- id = "incendiaryfuel"
- description = "A highly flammable compound used in incendiary grenades."
- reagent_state = LIQUID
- color = "#660000" // rgb: 102, 0, 0
-
-/datum/reagent/incendiary_fuel/reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)//Splashing people with welding fuel to make them easy to ignite!
- if(!istype(M, /mob/living))
- return
- if(method == TOUCH)
- M.adjust_fire_stacks(volume / 10)
- return
-
-/datum/reagent/incendiary_fuel/reaction_obj(var/obj/O, var/volume)
- var/turf/the_turf = get_turf(O)
- if(!the_turf)
- return //No sense trying to start a fire if you don't have a turf to set on fire. --NEO
- new /obj/effect/decal/cleanable/liquid_fuel(the_turf, volume)
-
-/datum/reagent/incendiary_fuel/reaction_turf(var/turf/T, var/volume)
- new /obj/effect/decal/cleanable/liquid_fuel(T, volume)
- return
-
-/datum/reagent/incendiary_fuel/on_mob_life(var/mob/living/M as mob)
- if(!M) M = holder.my_atom
- M.adjustToxLoss(1)
- ..()
- return
-
-
/datum/reagent/plasma
name = "Plasma"
id = "plasma"
diff --git a/code/modules/reagents/reagent_containers/food/drinks/jar.dm b/code/modules/reagents/reagent_containers/food/drinks/jar.dm
index 6a75c658526..c28aee6b6cc 100644
--- a/code/modules/reagents/reagent_containers/food/drinks/jar.dm
+++ b/code/modules/reagents/reagent_containers/food/drinks/jar.dm
@@ -9,12 +9,12 @@
item_state = "beaker"
New()
..()
- reagents.add_reagent("slime", 50)
+ reagents.add_reagent("slimejelly", 50)
on_reagent_change()
if (reagents.reagent_list.len > 0)
switch(reagents.get_master_reagent_id())
- if("slime")
+ if("slimejelly")
icon_state = "jar_slime"
name = "slime jam"
desc = "A jar of slime jam. Delicious!"
diff --git a/paradise.dme b/paradise.dme
index 46e066f4f22..12792020cb1 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -715,7 +715,6 @@
#include "code\game\objects\items\weapons\fireworks.dm"
#include "code\game\objects\items\weapons\flamethrower.dm"
#include "code\game\objects\items\weapons\gift_wrappaper.dm"
-#include "code\game\objects\items\weapons\grenades.dm"
#include "code\game\objects\items\weapons\handcuffs.dm"
#include "code\game\objects\items\weapons\holosign.dm"
#include "code\game\objects\items\weapons\hydroponics.dm"
@@ -752,6 +751,8 @@
#include "code\game\objects\items\weapons\grenades\bananade.dm"
#include "code\game\objects\items\weapons\grenades\chem_grenade.dm"
#include "code\game\objects\items\weapons\grenades\clowngrenade.dm"
+#include "code\game\objects\items\weapons\grenades\clusterbuster.dm"
+#include "code\game\objects\items\weapons\grenades\custom_grenades.dm"
#include "code\game\objects\items\weapons\grenades\emgrenade.dm"
#include "code\game\objects\items\weapons\grenades\flashbang.dm"
#include "code\game\objects\items\weapons\grenades\ghettobomb.dm"