diff --git a/hyperstation/sound/misc/slam.ogg b/hyperstation/sound/misc/slam.ogg new file mode 100644 index 00000000..de1dc83d Binary files /dev/null and b/hyperstation/sound/misc/slam.ogg differ diff --git a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm index cf9b20ae..ee7d7c16 100644 --- a/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm +++ b/modular_citadel/code/modules/reagents/chemistry/reagents/fermi_reagents.dm @@ -400,4 +400,63 @@ H.say("*wag")//force update sprites. to_chat(H, "[words]") qdel(catto) - log_game("FERMICHEM: [H] ckey: [H.key] has returned to normal") \ No newline at end of file + log_game("FERMICHEM: [H] ckey: [H.key] has returned to normal") + + +//Tablesmitium + +/datum/reagent/fermi/tablesmitium + name = "Tablesmitium" + description = "Why is this a thing? Why did CentCom even commission such a thing?" + color = "#7bbcd6" + overdose_threshold = 30 + impure_chem = /datum/reagent/toxin/acid //AAAA + inverse_chem_val = 0.25 + inverse_chem = /datum/reagent/toxin/acid //OW. ACID. + taste_description = "what can only be described as licking every single table in the galaxy at the same time. Curious." + pH = 9 + value = 90 + can_synth = FALSE + +/datum/reagent/fermi/tablesmitium/on_mob_life(mob/living/carbon/C) + var/list/areas = list() + for(var/area/A in world) + if(A.z == SSmapping.station_start) + areas += A + var/area/B = pick(areas) + var/list/obj/structure/table/tables = list() + for(var/obj/structure/table/T in B) + tables += T + if(tables.len) + var/obj/structure/table/S = pick(tables) + do_sparks(5,FALSE,C) + S.tablepush(C, C) + do_sparks(5,FALSE,C) + playsound(C.loc, 'sound/effects/phasein.ogg', 50, 1) + playsound(C.loc, 'hyperstation/sound/misc/slam.ogg', 50, 1) + ..() + +/datum/reagent/fermi/tablesmitium/overdose_start(mob/living/M) + . = ..() + to_chat(M, "You have stared into the abyss of tables... And it gazed back.") + log_game("FERMICHEM: [M] ckey: [M.key] has overdosed on tablesmitium") + M.Jitter(20) + metabolization_rate += 0.5 //So you're not stuck forever tabling. + +/datum/reagent/fermi/tablesmitium/overdose_process(mob/living/carbon/C) + var/list/obj/structure/table/tables = list() + for(var/obj/structure/table/T in view_or_range(10, C, "range")) + tables += T + if(tables.len) + var/obj/structure/table/S = pick(tables) + C.throw_at(S, rand(8,10), 14, C) + if(prob(25)) + radiation_pulse(C, 10) + playsound(C.loc, 'sound/effects/supermatter.ogg', 50, 1) + var/turf/B = get_turf(C.loc) + if(!isspaceturf(B)) + var/obj/effect/decal/cleanable/greenglow/radioactive/GG = locate() in B.contents + if(!GG) + GG = new/obj/effect/decal/cleanable/greenglow/radioactive(B) + GG.reagents.add_reagent(/datum/reagent/uranium, 3) + ..() diff --git a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm index 282be5eb..265ef5e0 100644 --- a/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm +++ b/modular_citadel/code/modules/reagents/chemistry/recipes/fermi.dm @@ -555,3 +555,28 @@ HIonRelease = 0.1 RateUpLim = 2 FermiChem = TRUE + +//Tablesmitium, oh no + +/datum/chemical_reaction/fermi/tablesmitium + name = "Tablesmitium" + id = /datum/reagent/fermi/tablesmitium + results = list(/datum/reagent/fermi/tablesmitium = 1) + required_reagents = list(/datum/reagent/bluespace = 1, /datum/reagent/uranium = 1, /datum/reagent/consumable/coffee = 1) + mix_message = "the reaction... Smells like admin abuse?" + //FermiChem vars: + OptimalTempMin = 500 // Lower area of bell curve for determining heat based rate reactions + OptimalTempMax = 600 // Upper end for above + ExplodeTemp = 635 //Temperature at which reaction explodes + OptimalpHMin = 7 // Lowest value of pH determining pH a 1 value for pH based rate reactions (Plateu phase) + OptimalpHMax = 9 // Higest value for above + ReactpHLim = 5 // How far out pH wil react, giving impurity place (Exponential phase) + CatalystFact = 0 // How much the catalyst affects the reaction (0 = no catalyst) + CurveSharpT = 3 // How sharp the temperature exponential curve is (to the power of value) + CurveSharppH = 5 // How sharp the pH exponential curve is (to the power of value) + ThermicConstant = 10 //Temperature change per 1u produced + HIonRelease = -0.02 //pH change per 1u reaction + RateUpLim = 3 //Optimal/max rate possible if all conditions are perfect + FermiChem = TRUE//If the chemical uses the Fermichem reaction mechanics + FermiExplode = FALSE //If the chemical explodes in a special way + PurityMin = 0.4 //The minimum purity something has to be above, otherwise it explodes.