diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 61273d181d..0cdfec0754 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -496,7 +496,12 @@ //Standard reaction mechanics: else - if (C.FermiChem == TRUE)//Just to make sure + if (C.FermiChem == TRUE)//Just to make sure, should only proc when grenades are combining. + if (chem_temp > C.ExplodeTemp) //To allow fermigrenades + var/datum/chemical_reaction/fermi/Ferm = selected_reaction + fermiIsReacting = FALSE + SSblackbox.record_feedback("tally", "fermi_chem", 1, ("[Ferm] explosion")) + Ferm.FermiExplode(src, my_atom, volume = total_volume, temp = chem_temp, pH = pH) return 0 for(var/B in cached_required_reagents) // diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index d993322fcb..367093ea6f 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -24,26 +24,32 @@ if (500 to 750) for(var/turf/turf in range(1,T)) new /obj/effect/hotspot(turf) + volume*=1.1 if (751 to 1100) for(var/turf/turf in range(2,T)) new /obj/effect/hotspot(turf) + volume*=1.2 if (1101 to 1500) //If you're crafty for(var/turf/turf in range(3,T)) new /obj/effect/hotspot(turf) + volume*=1.3 if (1501 to 2500) //requested for(var/turf/turf in range(4,T)) new /obj/effect/hotspot(turf) + volume*=1.4 if (2501 to 5000) for(var/turf/turf in range(5,T)) new /obj/effect/hotspot(turf) + volume*=1.5 if (5001 to INFINITY) for(var/turf/turf in range(6,T)) new /obj/effect/hotspot(turf) + volume*=1.6 message_admins("Fermi explosion at [T], with a temperature of [temp], pH of [pH], Impurity tot of [ImpureTot].") @@ -66,7 +72,7 @@ if (pH > 10) //if alkaline, small explosion. var/datum/effect_system/reagents_explosion/e = new() - e.set_up(round((volume/30)*(pH-9)), T, 0, 0) + e.set_up(round((volume/28)*(pH-9)), T, 0, 0) e.start() if(!ImpureTot == 0) //If impure, v.small emp (0.6 or less) @@ -137,12 +143,16 @@ /datum/chemical_reaction/fermi/SDGF/FermiExplode(datum/reagents, var/atom/my_atom, volume, temp, pH)//Spawns an angery teratoma! var/turf/T = get_turf(my_atom) - var/mob/living/simple_animal/slime/S = new(T,"green") - S.damage_coeff = list(BRUTE = 0.9 , BURN = 2, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) - S.name = "Living teratoma" - S.real_name = "Living teratoma" - S.rabid = 1//Make them an angery boi - S.color = "#810010" + var/amount_to_spawn = round((volume/100), 1) + if(amount_to_spawn <= 0) + amount_to_spawn = 1 + for(var/i in 1 to amount_to_spawn) + var/mob/living/simple_animal/slime/S = new(T,"green") + S.damage_coeff = list(BRUTE = 0.9 , BURN = 2, TOX = 1, CLONE = 1, STAMINA = 0, OXY = 1) + S.name = "Living teratoma" + S.real_name = "Living teratoma" + S.rabid = 1//Make them an angery boi + S.color = "#810010" my_atom.reagents.clear_reagents() var/list/seen = viewers(8, get_turf(my_atom)) for(var/mob/M in seen) @@ -353,11 +363,15 @@ PurityMin = 0.5 /datum/chemical_reaction/fermi/hatmium/FermiExplode(src, var/atom/my_atom, volume, temp, pH) - var/obj/item/clothing/head/hattip/hat = new /obj/item/clothing/head/hattip(get_turf(my_atom)) - hat.animate_atom_living() + var/amount_to_spawn = round((volume/100), 1) + if(amount_to_spawn <= 0) + amount_to_spawn = 1 + for(var/i in 1 to amount_to_spawn) + var/obj/item/clothing/head/hattip/hat = new /obj/item/clothing/head/hattip(get_turf(my_atom)) + hat.animate_atom_living() var/list/seen = viewers(8, get_turf(my_atom)) for(var/mob/M in seen) - to_chat(M, "The makes an off sounding pop, as a hat suddenly climbs out of the beaker!") + to_chat(M, "The [my_atom] makes an off sounding pop, as a hat suddenly climbs out of it!") my_atom.reagents.clear_reagents() /datum/chemical_reaction/fermi/furranium