diff --git a/__DEFINES/reagents.dm b/__DEFINES/reagents.dm index 1a61e32648b..d539cbdf40d 100644 --- a/__DEFINES/reagents.dm +++ b/__DEFINES/reagents.dm @@ -79,6 +79,8 @@ #define SILICON "silicon" #define FUEL "fuel" #define FUELBOMB "fuelbomb" +#define PLASMABOMB "plasmabomb" +#define ANFOBOMB "anfobomb" #define VOMIT "vomit" #define CLEANER "cleaner" #define BLEACH "bleach" @@ -144,6 +146,7 @@ #define SALINE "saline" #define GLUE "glue" #define DIETHYLAMINE "diethylamine" +#define AMMONIUMNITRATE "ammoniumnitrate" #define ETHYLREDOXRAZINE "ethylredoxrazine" #define CHLORALHYDRATE "chloralhydrate" #define SUX "suxameth" diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 5b88ccb1a24..994d6332709 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -4467,6 +4467,10 @@ var/procizine_tolerance = 0 density = 0.65 specheatcap = 35.37 +/datum/reagent/diethylamine/ammoniumnitrate + name = "Ammonium Nitrate" + id = AMMONIUMNITRATE + /datum/reagent/diethylamine/on_plant_life(obj/machinery/portable_atmospherics/hydroponics/T) if(!holder) return diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index d2d05ce03f5..d249c80a8f3 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -583,6 +583,8 @@ required_reagents = list(FUEL = 1) required_temp = AUTOIGNITION_WELDERFUEL result_amount = 1 + var/fire_temp = AUTOIGNITION_WELDERFUEL + var/power = 0 /datum/chemical_reaction/fuelbomb/on_reaction(var/datum/reagents/holder, var/created_volume) if(holder.my_atom.is_open_container()) @@ -591,17 +593,18 @@ for(var/turf/simulated/floor/target_tile in range(0,location)) spawn(0) - target_tile.hotspot_expose(AUTOIGNITION_WELDERFUEL, created_volume, surfaces = 1) + target_tile.hotspot_expose(fire_temp, created_volume, surfaces = 1) - holder.del_reagent(FUEL) + for(var/reagent in required_reagents) + holder.del_reagent(reagent) else var/datum/effect/system/reagents_explosion/e = new() if(created_volume > 500) - e.set_up(15, holder.my_atom, 0, 0, null, 1, 2, 4) + e.set_up(15, holder.my_atom, 0, 0, null, 1+power, 2+(power*2), 4+(power*2)) else if(created_volume > 100) - e.set_up(9, holder.my_atom, 0, 0, null, 0, 1, 3) + e.set_up(9, holder.my_atom, 0, 0, null, 0+power, 1+power, 3+power) else - e.set_up(9, holder.my_atom, 0, 0, null, -1, 1, 2) + e.set_up(9, holder.my_atom, 0, 0, null, -1+power, 1, 2+power) e.holder_damage(holder.my_atom) if(isliving(holder.my_atom)) e.amount *= 0.5 @@ -611,6 +614,23 @@ e.start() holder.clear_reagents() + +/datum/chemical_reaction/fuelbomb/plasma + name = "Plasma bomb" + id = PLASMABOMB + required_reagents = list(PLASMA = 1) + required_temp = AUTOIGNITION_WELDERFUEL + fire_temp = AUTOIGNITION_WELDERFUEL + power = 1 + +/datum/chemical_reaction/fuelbomb/anfo + name = "AN/FO bomb" + id = ANFOBOMB + required_reagents = list(AMMONIUMNITRATE = 16, FUEL = 1) // rough approximation of the 94%-6% mix + required_temp = AUTOIGNITION_WELDERFUEL-1 // just for priority and to stop recipe conflicts + fire_temp = AUTOIGNITION_WELDERFUEL + power = 1 + /datum/chemical_reaction/sodiumchloride name = "Sodium Chloride" id = SODIUMCHLORIDE @@ -1206,6 +1226,13 @@ required_reagents = list(HYDROGEN = 3, NITROGEN = 1) result_amount = 3 +/datum/chemical_reaction/ammoniumnitrate + name = "Ammonium Nitrate" + id = AMMONIUMNITRATE + result = AMMONIUMNITRATE + required_reagents = list(AMMONIA = 5, CLEANER = 3, NITROGEN = 2, OXYGEN = 5) + result_amount = 18 + /datum/chemical_reaction/diethylamine name = "Diethylamine" id = DIETHYLAMINE