diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index d860c9dae0f..674c5f2b9e7 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -414,8 +414,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) 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..5573ff44d27 --- /dev/null +++ b/code/game/objects/items/weapons/grenades/clusterbuster.dm @@ -0,0 +1,244 @@ +//////////////////// +//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 \ No newline at end of file diff --git a/code/game/objects/items/weapons/grenades.dm b/code/game/objects/items/weapons/grenades/custom_grenades.dm similarity index 53% rename from code/game/objects/items/weapons/grenades.dm rename to code/game/objects/items/weapons/grenades/custom_grenades.dm index af5ea2ba45e..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" @@ -280,230 +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 -//////////////////// -//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/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/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/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/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 - + return \ No newline at end of file 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/paradise.dme b/paradise.dme index 1100195b20e..8a62cf544d9 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"