/* Copyright Bob Bartsch, 2021 This code is governed by the Creative Commons Attribution–NonCommercial License https://creativecommons.org/licenses/by-nc/3.0/ (Meaning: credit me if you modify and/or redistribute this code. Also, you may not sell this code.) */ #modloaded qmd import crafttweaker.item.IIngredient; import crafttweaker.item.IItemStack; import crafttweaker.oredict.IOreDict; import crafttweaker.oredict.IOreDictEntry; import crafttweaker.liquid.ILiquidStack; import mods.nuclearcraft.AlloyFurnace; import mods.nuclearcraft.Assembler; import mods.nuclearcraft.DecayHastener; import mods.nuclearcraft.Infuser; import mods.nuclearcraft.Separator; import mods.nuclearcraft.FuelReprocessor; import mods.nuclearcraft.PebbleFission; import mods.nuclearcraft.SolidFission; import mods.nuclearcraft.FissionIrradiator; /* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- QMD Processing -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */ mods.qmd.target_chamber.addRecipe(, ((*240000)^6000)~1.0, , null, , null, 8000, 0.1, -3000, 0.0001); mods.qmd.target_chamber.addRecipe(, ((*1920000)^15000)~1.0, , null, *2, null, 25000, 0.01, -13000, 0.0001); mods.qmd.target_chamber.addRecipe(, ((*3840000)^30000)~1.0, , *2, , null, 50000, 0.01, -33000, 0.0001); val stuff = ; if(false){ //loadedMods has "thermalfoundation" recipes.addShaped("mana",stuff,[[, , ],[, , ],[,,]]); mods.qmd.target_chamber.addRecipe(stuff, ((*120000)^8000)~2.6, , null, , null, 20000, 1.0, 0, 0.0021); }else{ recipes.addShaped("mana",stuff,[[, , ],[, , ],[,,]]); mods.qmd.target_chamber.addRecipe(stuff, ((*120000)^40000)~2.6, , , null, null, 50000, 1.0, -25000, 0.0021); } /* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- QMD Fuels -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */ // this is a separate/extra multiplier beyond NC's base multiplier // (meaning this only affects MoarFuels' fuels, while NC's config // affects both NC's & MoarFuels' fuels) // only accepts an integer value val lifetimeMultiplier = 1; //does all liquid stuff except isotope mixing & separation function superMelt(item as IItemStack, array as ILiquidStack[], prod as ILiquidStack[], doub as double[], integs as int[], selfPriming as bool){ //array is molten, fluoride, FLiBe, dFLiBe, dF, dMolten //prod is 4 actinides, 2 fission products //doub is time, efficiency, radiation, decay factor //integs is heat, criticality, fission product1 chance, fission product2 chance //basic melter mods.nuclearcraft.Melter.addRecipe(item, array[0]*144); mods.nuclearcraft.IngotFormer.addRecipe(array[0]*144, item); //fuel making mods.nuclearcraft.ChemicalReactor.addRecipe(array[0]*72, *500, array[1]*72, null); mods.nuclearcraft.Electrolyzer.addRecipe(array[1]*72, array[0]*72, *500, null, null); mods.nuclearcraft.SaltMixer.addRecipe(array[1]*72, *72, array[2]*72); mods.nuclearcraft.Centrifuge.addRecipe(array[2]*72, array[1]*72, *72, null, null, null, null); //MSR recipe mods.nuclearcraft.SaltFission.addRecipe(array[2], array[3], doub[0], integs[0], doub[1], integs[1], doub[3], selfPriming, doub[2]); //reprocessing mods.nuclearcraft.Centrifuge.addRecipe(array[3]*72, array[4]*72, *72, null, null, null, null); mods.nuclearcraft.Electrolyzer.addRecipe(array[4]*72, array[5]*72, *500, null, null); val fisProd1 = mods.nuclearcraft.ChanceFluidIngredient.create(prod[4]*16, integs[2], 16); val fisProd2 = mods.nuclearcraft.ChanceFluidIngredient.create(prod[5]*16, integs[3], 16); mods.nuclearcraft.Centrifuge.addRecipe(array[5]*144, prod[0], prod[1], fisProd1, prod[2], prod[3], fisProd2); } /* -=-=-=-=- MIX Fuels -=-=-=-=-*/ val graphite = |; val zirconium = |; var fis = [[,,,,],[,,,,],[,,,,]] as IIngredient[][]; var fer = [[,,,,],[,,,,],[,,,,]] as IIngredient[][]; var decayRad = [0.788146499,5.26E-07,1.12E-04,3.70E-06,1.04E-05,3.85E-06] as double[]; var decayFactor =[0.11,0.11,0.11] as double[]; var FuelNames = [["mendelevium_fuel","mendelevium_fuel_carbide","mendelevium_fuel_oxide","mendelevium_fuel_nitride","mendelevium_fuel_zirconium"],["flerovium_fuel","flerovium_fuel_carbide","flerovium_fuel_triso","flerovium_fuel_oxide","flerovium_fuel_nitride","flerovium_fuel_zirconium"],["darmstadtium_fuel","darmstadtium_fuel_carbide","darmstadtium_fuel_triso","darmstadtium_fuel_oxide","darmstadtium_fuel_nitride","darmstadtium_fuel_zirconium"]] as string[][]; var allFuels = [[,,,,],[,,,,],[,,,,]] as IItemStack[][]; var fuelN2 = [,,] as IItemStack[]; // time, heat, criticality var fuelStats = [[[lifetimeMultiplier*1200,3389,21],[lifetimeMultiplier*768,5295,14],[lifetimeMultiplier*864,4707,15]],[[lifetimeMultiplier*7100,1696,60],[lifetimeMultiplier*4544,2650,41],[lifetimeMultiplier*4176,5109,29]],[[lifetimeMultiplier*5800,3678,40],[lifetimeMultiplier*3712,5748,27],[lifetimeMultiplier*5112,2356,43]]] as int[][][]; var fuelCrits = [[17],[48],[32]] as int[][]; val fuelPrime = [true,true,true] as bool[]; var trisoFuels = [,,] as IItemStack[]; var dFuels = [[,,,],[,,,],[,,,]] as IIngredient[][]; var dFuels2 = [[,,,],[,,,],[,,,]] as IItemStack[][]; // time, heat, criticality var trisoStats = [[lifetimeMultiplier*960,4236,14],[lifetimeMultiplier*5680,2120,51],[lifetimeMultiplier*4640,4598,27]] as int[][]; // efficiency, radiation var trisoStatsAlt = [[2.15,1.24E-02],[4.0,2.71E-04],[6.0,2.59E-04]] as double[][]; // MRR Compat if (oreDict has "QuantumTraverseIHaveHadEnoughOfYourSpaghettiCodeAndAbsurdNames") { trisoStatsAlt = [[2.15,6.67E-03],[4.0,2.21E-04],[6.0,0.0002114613636]] as double[][]; } var fisProd1 = mods.nuclearcraft.ChanceItemIngredient.create(, 25); var fisProd2 = mods.nuclearcraft.ChanceItemIngredient.create(, 25); var fluidFuelNames= [[,,,,,],[,,,,,],[,,,,,]] as ILiquidStack[][]; var fluidProd= [[*32,*48,*32,*16,,],[*32,*16,*48,*32,,],[*16,*16,*48,*48,,]] as ILiquidStack[][]; var moltenTimes = [8.333333333, 49.30555556, 40.27777778] as double[]; //oreDic var oreDictList = ["ingotMIX258All","ingotMIX298All","ingotMIX294All","ingotDepletedMIX258All","ingotDepletedMIX298All","ingotDepletedMIX294All"] as string[]; for entry in oreDictList { oreDict.entry; } var realOreDictList = [,,,,,] as IOreDictEntry[]; for i,array in allFuels{ for j,item in array{ //crafting recipes.addShapeless(FuelNames[i][j],item * 9,[fis[i][j], fer[i][j], fer[i][j], fer[i][j], fer[i][j], fer[i][j], fer[i][j], fer[i][j], fer[i][j]]); mods.nuclearcraft.Radiation.setRadiationLevel(item, decayRad[i]); realOreDictList[i].add(item); } //non-crafting recipes mods.nuclearcraft.AlloyFurnace.addRecipe(array[0], graphite, array[1]); mods.nuclearcraft.Infuser.addRecipe(array[0], *1000, array[2]); mods.nuclearcraft.Infuser.addRecipe(array[0], *1000, array[3]); mods.nuclearcraft.AlloyFurnace.addRecipe(array[0], zirconium, array[4]); furnace.addRecipe(fuelN2[i], array[3]); furnace.addRecipe(fuelN2[i], array[2]); mods.nuclearcraft.Separator.addRecipe(array[1], array[0], ); mods.nuclearcraft.Separator.addRecipe(array[4], array[0], ); mods.nuclearcraft.Separator.addRecipe(array[0]*9, fis[i][0], fer[i][0]*8); //pebbles mods.nuclearcraft.Assembler.addRecipe(array[1]*9, , , , trisoFuels[i]*9); if (oreDict has "QuantumTraverseWhyCanISteamMyCrabs") { mods.nuclearcraft.SolidFission.addRecipe(trisoFuels[i], dFuels[i][0], fuelStats[i][2][0], fuelStats[i][2][1], trisoStatsAlt[i][0], fuelStats[i][2][2], decayFactor[i], fuelPrime[i], trisoStatsAlt[i][1]); }else{ mods.nuclearcraft.PebbleFission.addRecipe(trisoFuels[i], dFuels[i][0], trisoStats[i][0], trisoStats[i][1], trisoStatsAlt[i][0], trisoStats[i][2], decayFactor[i], fuelPrime[i], trisoStatsAlt[i][1]); } mods.nuclearcraft.Radiation.setRadiationLevel(trisoFuels[i], decayRad[i]); realOreDictList[i].add(trisoFuels[i]); //oxide mods.nuclearcraft.SolidFission.addRecipe(array[2], dFuels[i][1], trisoStats[i][0], trisoStats[i][1], trisoStatsAlt[i][0], fuelCrits[i][0], decayFactor[i], fuelPrime[i], trisoStatsAlt[i][1]); //nitride mods.nuclearcraft.SolidFission.addRecipe(array[3], dFuels[i][2], fuelStats[i][0][0], fuelStats[i][0][1], trisoStatsAlt[i][0], fuelStats[i][0][2], decayFactor[i], fuelPrime[i], trisoStatsAlt[i][1]); //zirconium mods.nuclearcraft.SolidFission.addRecipe(array[4], dFuels[i][3], fuelStats[i][1][0], fuelStats[i][1][1], trisoStatsAlt[i][0], fuelStats[i][1][2], decayFactor[i], fuelPrime[i], trisoStatsAlt[i][1]); //melting time superMelt(array[0], fluidFuelNames[i], fluidProd[i], [moltenTimes[i], trisoStatsAlt[i][0], trisoStatsAlt[i][1], decayFactor[i]] as double[], [fuelStats[i][0][1],fuelCrits[i][0],25,25] as int[], true); } // reprocessing var ddecayRad = [7.61E-03,1.73E-02,1.64E-02,1.90E-03,5.69E-03,9.22E-04] as double[]; var dIso = [[[*2,*3,*2,], [*2,*3,*2,], [*2,*3,*2,], [*2,*3,*2,]], [[*2,,*3,*2],[*2,,*3,*2],[*2,,*3,*2],[*2,,*3,*2]],[[,,*3,*3],[,,*3,*3],[,,*3,*3],[,,*3,*3]]] as IIngredient[][][]; for i,array in dFuels{ if(i==1){ fisProd1 = mods.nuclearcraft.ChanceItemIngredient.create(, 25); } //triso mods.nuclearcraft.FuelReprocessor.addRecipe(array[0].amount(9), dIso[i][0][0], dIso[i][0][1], fisProd1, .amount(3), dIso[i][0][2], dIso[i][0][3], fisProd2, ); //oxide mods.nuclearcraft.FuelReprocessor.addRecipe(array[1].amount(9), dIso[i][1][0], dIso[i][1][1], fisProd1, null, dIso[i][1][2], dIso[i][1][3], fisProd2, null); //nitride mods.nuclearcraft.FuelReprocessor.addRecipe(array[2].amount(9), dIso[i][2][0], dIso[i][2][1], fisProd1, null, dIso[i][2][2], dIso[i][2][3], fisProd2, null); //zirc mods.nuclearcraft.FuelReprocessor.addRecipe(array[3].amount(9), dIso[i][3][0], dIso[i][3][1], fisProd1, , dIso[i][3][2], dIso[i][3][3], fisProd2, null); for j,item in array{ mods.nuclearcraft.Radiation.setRadiationLevel(item, ddecayRad[i]); realOreDictList[i+3].add(dFuels2[i][j]); } } /* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- PBU & LUF Time -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */ oreDict.ingotPBU; .add(); oreDict.ingotPBUAll; oreDict.ingotUranium232; .add(); oreDict.ingotLUF; .add(); oreDict.ingotLUFAll; //.add(); //.add(); //recipes.addShaped(*3,[[],[],[]]); //recipes.addShaped(*3,[[,,]]); // MRR Compat if (oreDict has "QuantumTraverseIHaveHadEnoughOfYourSpaghettiCodeAndAbsurdNames") { mods.nuclearcraft.Radiation.setRadiationLevel(, 2.12E-02); mods.nuclearcraft.DecayHastener.addRecipe(, , 1.0, 1.0, 2.12E-02); mods.nuclearcraft.FissionIrradiator.removeRecipeWithInput(); mods.nuclearcraft.FissionIrradiator.addRecipe(, , 5833, 0.8, 0.0, 3.05E-05); //mods.nuclearcraft.FissionIrradiator.addRecipe(, , 151000, 0.05, 0.0, 3.05E-05); //mods.nuclearcraft.FissionIrradiator.addRecipe(, , 5833, 2.5, 0.0, 3.05E-05); mods.nuclearcraft.FissionIrradiator.addRecipe(, , 99167, 8.0, 0.0, 1.33E-03); }else{ mods.nuclearcraft.Radiation.setRadiationLevel(, 1.45E-02); mods.nuclearcraft.DecayHastener.addRecipe(, , 1.0, 1.0, 1.45E-02); mods.nuclearcraft.FissionIrradiator.removeRecipeWithInput(); mods.nuclearcraft.FissionIrradiator.addRecipe(, , 142222, 0.8, 0.0, 1.56E-04); //mods.nuclearcraft.FissionIrradiator.addRecipe(, , 3840000, 0.05, 0.0, 1.56E-04); //mods.nuclearcraft.FissionIrradiator.addRecipe(, , 142222, 2.5, 0.0, 1.56E-04); mods.nuclearcraft.FissionIrradiator.addRecipe(, , 2417778, 8.0, 0.0, 8.35E-04); } mods.nuclearcraft.Assembler.addRecipe(, null, null, null, ); recipes.addShapeless(*9,[, , , , , , , , ]); // does all the needed things (with toggle-able reprocessing) function theMediumCheeseWithFries(pellet as IItemStack[], triso as IItemStack, dpellet as IIngredient[], dpellet2 as IItemStack[], fuelInts as int[][], integs as int[], fuelDoubles as double[], array as ILiquidStack[], prod as ILiquidStack[], solidProd as IIngredient[][], selfPriming as bool, oreNames as IOreDictEntry[], reprocQ as bool){ //fis/fert/pellet is [normal,carbide,oxide,nitride,za] //dpellet is [tr, ox, ni, za] //fuelInts is [time, heat, criticality] for [ox, ni, za, trisoSFR] //integs is [enrichment, fisProd1 base chance, fisProd2 base chance, affected chance reprocessing ingredient] //fuelDoubles is [efficiency, base radiation, burn radiation, depleted radiation, MSR time, decay factor] //array is molten, fluoride, FLiBe, dFLiBe, dF, dMolten //prod is 4 actinides, 2 fission products as liquids //solidProd is 4 actinides, 2 fission products as items //reprocQ determines whether reprocessing is done for i,item in pellet{ mods.nuclearcraft.Radiation.setRadiationLevel(item, fuelDoubles[1]); oreNames[0].add(item); } //non-crafting recipes mods.nuclearcraft.AlloyFurnace.addRecipe(pellet[0], |, pellet[1]); mods.nuclearcraft.Infuser.addRecipe(pellet[0], *1000, pellet[2]); mods.nuclearcraft.Infuser.addRecipe(pellet[0], *1000, pellet[3]); mods.nuclearcraft.AlloyFurnace.addRecipe(pellet[0], |, pellet[4]); furnace.addRecipe(pellet[0], pellet[3]); furnace.addRecipe(pellet[0], pellet[2]); mods.nuclearcraft.Separator.addRecipe(pellet[1], pellet[0], ); mods.nuclearcraft.Separator.addRecipe(pellet[4], pellet[0], ); //pebbles mods.nuclearcraft.Assembler.addRecipe(pellet[1]*9, , , , triso*9); mods.nuclearcraft.Radiation.setRadiationLevel(triso, fuelDoubles[1]); oreNames[0].add(triso); if (oreDict has "QuantumTraverseWhyCanISteamMyCrabs") { mods.nuclearcraft.SolidFission.addRecipe(triso, dpellet[0], fuelInts[3][0], fuelInts[3][1], fuelDoubles[0], fuelInts[3][2], fuelDoubles[5], selfPriming, fuelDoubles[2]); }else{ mods.nuclearcraft.PebbleFission.addRecipe(triso, dpellet[0], fuelInts[0][0], fuelInts[0][1], fuelDoubles[0], fuelInts[2][2], fuelDoubles[5], selfPriming, fuelDoubles[2]); } //oxide mods.nuclearcraft.SolidFission.addRecipe(pellet[2], dpellet[1], fuelInts[0][0], fuelInts[0][1], fuelDoubles[0], fuelInts[0][2], fuelDoubles[5], selfPriming, fuelDoubles[2]); //nitride mods.nuclearcraft.SolidFission.addRecipe(pellet[3], dpellet[2], fuelInts[1][0], fuelInts[1][1], fuelDoubles[0], fuelInts[1][2], fuelDoubles[5], selfPriming, fuelDoubles[2]); //zirconium mods.nuclearcraft.SolidFission.addRecipe(pellet[4], dpellet[3], fuelInts[2][0], fuelInts[2][1], fuelDoubles[0], fuelInts[2][2], fuelDoubles[5], selfPriming, fuelDoubles[2]); //melting time superMelt(pellet[0], array, prod, [fuelDoubles[4], fuelDoubles[0], fuelDoubles[2], fuelDoubles[5]] as double[], [fuelInts[1][1],fuelInts[0][2], integs[1], integs[2]] as int[], selfPriming); //decayed fuel stuff for i,item in dpellet{ mods.nuclearcraft.Radiation.setRadiationLevel(item, fuelDoubles[3]); oreNames[1].add(dpellet2[i]); } if(reprocQ){ var num = 9-integs[0] as int; var num2 = integs[0] as int; val fisProd1 = mods.nuclearcraft.ChanceItemIngredient.create(solidProd[0][4] * num2, integs[1]); val fisProd2 = mods.nuclearcraft.ChanceItemIngredient.create(solidProd[0][5] * num2, integs[2]); //reprocessing time num = 1+integs[0] as int; num2 = 5+integs[0] as int; var graphite = mods.nuclearcraft.ChanceItemIngredient.create( * num2, 50); var zirconium = mods.nuclearcraft.ChanceItemIngredient.create( * num, 50); if(integs[0]==1){ graphite = * (num2/2); zirconium = * (num/2); } //triso mods.nuclearcraft.FuelReprocessor.addRecipe(dpellet[0] * 9, solidProd[0][0], solidProd[0][1], fisProd1, graphite, solidProd[0][2], solidProd[0][3], fisProd2, ); //oxide mods.nuclearcraft.FuelReprocessor.addRecipe(dpellet[1] * 9, solidProd[1][0], solidProd[1][1], fisProd1, null, solidProd[1][2], solidProd[1][3], fisProd2, null); //nitride mods.nuclearcraft.FuelReprocessor.addRecipe(dpellet[2] * 9, solidProd[2][0], solidProd[2][1], fisProd1, null, solidProd[2][2], solidProd[2][3], fisProd2, null); //zirc mods.nuclearcraft.FuelReprocessor.addRecipe(dpellet[3] * 9, solidProd[3][0], solidProd[3][1], fisProd1, zirconium, solidProd[3][2], solidProd[3][3], fisProd2, null); } } var pbu_rads = [8.35E-04,4.27E-05,1.90E-03] as double[]; //base, burn, depleted var luf_rads = [1.45E-02,4.92E-04,1.70E-02] as double[]; if (oreDict has "QuantumTraverseIHaveHadEnoughOfYourSpaghettiCodeAndAbsurdNames") { pbu_rads = [1.33E-03,4.66E-05,1.66E-03]; luf_rads = [2.12E-02,5.87E-04,1.64E-02]; } theMediumCheeseWithFries([,,,,], , [,,,], [,,,], [[7024,82,118],[8727,66,148],[5592,103,100],[6330,91,106]], [1, 30, 20, 4], [1.10, pbu_rads[0], pbu_rads[1], pbu_rads[2], 60.60416667, 0.050], [,,,,,], [*32,,*32,*48,,], [[*2,,*2,*3,,],[*2,,*2,*3,,],[*2,,*2,*3,,],[*2,,*2,*3,,]], false, [,], true); //fis/fert/pellet is [normal,carbide,oxide,nitride,za] //dpellet is [tr, ox, ni, za] //fuelInts is [time, heat, criticality] for [ox, ni, za, trisoSFR] //integs is [enrichment, fisProd1 base chance, fisProd2 base chance, affected chance reprocessing ingredient] //fuelDoubles is [efficiency, base radiation, burn radiation, depleted radiation, MSR time, decay factor] //array is molten, fluoride, FLiBe, dFLiBe, dF, dMolten //prod is 4 actinides, 2 fission products as liquids //solidProd is 4 actinides, 2 fission products as items theMediumCheeseWithFries([,,,,], , [,,,], [,,,], [[6063,855,24],[7580,684,30],[4840,1069,20],[5434,950,22]], [9, 25, 25, 4], [1.30, luf_rads[0], luf_rads[1], luf_rads[2], 52.63888889, 0.055], [,,,,,], [*16,*16,*16,*16,,], [[null]], false, [,], false); //external processing fisProd1 = mods.nuclearcraft.ChanceItemIngredient.create( * 9, 25); fisProd2 = mods.nuclearcraft.ChanceItemIngredient.create( * 9, 25); //triso mods.nuclearcraft.FuelReprocessor.addRecipe( * 9, , , fisProd1, *8, , , fisProd2, ); //oxide mods.nuclearcraft.FuelReprocessor.addRecipe( * 9, , , fisProd1, null, , , fisProd2, null); //nitride mods.nuclearcraft.FuelReprocessor.addRecipe( * 9, , , fisProd1, null, , , fisProd2, null); //zirc mods.nuclearcraft.FuelReprocessor.addRecipe( * 9, , , fisProd1, *6, , , fisProd2, null); fisProd1 = mods.nuclearcraft.ChanceFluidIngredient.create(*144, 25, 16); fisProd2 = mods.nuclearcraft.ChanceFluidIngredient.create(*144, 25, 16); mods.nuclearcraft.Centrifuge.removeRecipeWithInput(*144); mods.nuclearcraft.Centrifuge.addRecipe(*144, *16,*16,fisProd1,*16,*16,fisProd2); /* -=-=-=-=- UBU & Pa-231 Based Fuels -=-=-=-=-*/ val paFuels = [[,,,,],[,,,,],[,,,,]] as IItemStack[][]; val dpaFuels = [[,,,],[,,,],[,,,]] as IIngredient[][]; val dpaFuels2 = [[,,,],[,,,],[,,,]] as IItemStack[][]; val paeff = [1.25,1.3,1.2] as double[]; val paStats = [[[lifetimeMultiplier*9600,60,160],[lifetimeMultiplier*12000,48,200],[lifetimeMultiplier*7680,75,136],[lifetimeMultiplier*8597,67,144]],[[lifetimeMultiplier*9600,180,80],[lifetimeMultiplier*12000,144,100],[lifetimeMultiplier*7680,225,68],[lifetimeMultiplier*8597,201,72]],[[lifetimeMultiplier*4500,128,96],[lifetimeMultiplier*5647,102,120],[lifetimeMultiplier*3600,160,82],[lifetimeMultiplier*4056,142,86]]] as int[][][]; var burnrad = [2.97E-05,8.90E-05,1.45E-05] as double[]; decayFactor = [0.065,0.045,0.045]; // MRR Compat if (oreDict has "QuantumTraverseIHaveHadEnoughOfYourSpaghettiCodeAndAbsurdNames") { burnrad = [2.61E-05,7.82E-05,2.12E-05] as double[]; } val pebbles = [,,] as IItemStack[]; fuelN2 = [,,] as IItemStack[]; fluidFuelNames= [[,,,,,],[,,,,,],[,,,,,]] as ILiquidStack[][]; fluidProd= [[*64,*16,*16,*32,,],[*32,*32,*32,*16,,],[*32,*16,*32,*48,,]] as ILiquidStack[][]; moltenTimes = [83.33333333,83.33333333,39.21527778] as double[]; val fisProdChance = [[30,20],[90,60],[25,25]] as int[][]; //base recipe mods.nuclearcraft.Assembler.addRecipe(, *8, null, null, paFuels[0][0]*9); mods.nuclearcraft.Assembler.addRecipe(*2, paFuels[0][0]*6, null, null, paFuels[1][0]*8); oreDict.ingotUBU; .add(); mods.nuclearcraft.FissionIrradiator.removeRecipeWithInput(); mods.nuclearcraft.FissionIrradiator.addRecipe(, , 106667, 0.0, 0.0, 4.07E-06); mods.nuclearcraft.FissionIrradiator.addRecipe(, , 1813333, 0.0, 0.0, 1.42E-09); oreDictList = ["ingotLAM231All","ingotEAM231All","ingotUBUAll","ingotDepletedLAM231All","ingotDepletedEAM231All","ingotDepletedUBUAll"] as string[]; for entry in oreDictList { oreDict.entry; } realOreDictList = [,,,,,] as IOreDictEntry[]; //non-base recipes for i, array in paFuels{ for item in array{ mods.nuclearcraft.Radiation.setRadiationLevel(item, decayRad[i+3]); realOreDictList[i].add(item); } mods.nuclearcraft.AlloyFurnace.addRecipe(array[0], graphite, array[1]); mods.nuclearcraft.Infuser.addRecipe(array[0], *1000, array[2]); mods.nuclearcraft.Infuser.addRecipe(array[0], *1000, array[3]); mods.nuclearcraft.AlloyFurnace.addRecipe(array[0], zirconium, array[4]); furnace.addRecipe(fuelN2[i], array[3]); furnace.addRecipe(fuelN2[i], array[2]); mods.nuclearcraft.Separator.addRecipe(array[1], array[0], ); mods.nuclearcraft.Separator.addRecipe(array[4], array[0], ); //pebbles mods.nuclearcraft.Assembler.addRecipe(array[1]*9, , , , pebbles[i]*9); if (oreDict has "QuantumTraverseWhyCanISteamMyCrabs") { mods.nuclearcraft.SolidFission.addRecipe(pebbles[i], dpaFuels[i][0], paStats[i][3][0], paStats[i][3][1], paeff[i], paStats[i][3][2], decayFactor[i], false, burnrad[i]); }else{ mods.nuclearcraft.PebbleFission.addRecipe(pebbles[i], dpaFuels[i][0], paStats[i][0][0], paStats[i][0][1], paeff[i], paStats[i][2][2], decayFactor[i], false, burnrad[i]); } mods.nuclearcraft.Radiation.setRadiationLevel(pebbles[i], decayRad[i+2]); realOreDictList[i].add(trisoFuels[i]); //oxide mods.nuclearcraft.SolidFission.addRecipe(array[2], dpaFuels[i][1], paStats[i][0][0], paStats[i][0][1], paeff[i], paStats[i][0][2], decayFactor[i], false, burnrad[i]); //nitride mods.nuclearcraft.SolidFission.addRecipe(array[3], dpaFuels[i][2], paStats[i][1][0], paStats[i][1][1], paeff[i], paStats[i][1][2], decayFactor[i], false, burnrad[i]); //zirconium mods.nuclearcraft.SolidFission.addRecipe(array[4], dpaFuels[i][3], paStats[i][2][0], paStats[i][2][1], paeff[i], paStats[i][2][2], decayFactor[i], false, burnrad[i]); //melting time superMelt(array[0], fluidFuelNames[i], fluidProd[i], [moltenTimes[i], paeff[i], burnrad[i], decayFactor[i]] as double[], [paStats[i][0][1],paStats[i][0][2], fisProdChance[i][0], fisProdChance[i][1]] as int[], false); } fisProd1 = mods.nuclearcraft.ChanceItemIngredient.create(, 30); fisProd2 = mods.nuclearcraft.ChanceItemIngredient.create(, 20); //reprocessing //triso mods.nuclearcraft.FuelReprocessor.addRecipe(dpaFuels[0][0] * 9, * 4, , fisProd1, .amount(4), , *2, fisProd2, ); //oxide mods.nuclearcraft.FuelReprocessor.addRecipe(dpaFuels[0][1] * 9, * 4, , fisProd1, null, , *2, fisProd2, null); //nitride mods.nuclearcraft.FuelReprocessor.addRecipe(dpaFuels[0][2] * 9, * 4, , fisProd1, null, , *2, fisProd2, null); //zirc mods.nuclearcraft.FuelReprocessor.addRecipe(dpaFuels[0][3] * 9, * 4, , fisProd1, * 2, , *2, fisProd2, null); fisProd1 = mods.nuclearcraft.ChanceItemIngredient.create(, 90); fisProd2 = mods.nuclearcraft.ChanceItemIngredient.create(, 60); //triso mods.nuclearcraft.FuelReprocessor.addRecipe(dpaFuels[1][0] * 9, *2, *2, fisProd1, .amount(6), *2, , fisProd2, ); //oxide mods.nuclearcraft.FuelReprocessor.addRecipe(dpaFuels[1][1] * 9, *2, *2, fisProd1, null, *2, , fisProd2, null); //nitride mods.nuclearcraft.FuelReprocessor.addRecipe(dpaFuels[1][2] * 9, *2, *2, fisProd1, null, *2, , fisProd2, null); //zirc mods.nuclearcraft.FuelReprocessor.addRecipe(dpaFuels[1][3] * 9, *2, *2, fisProd1, * 4, *2, , fisProd2, null); fisProd1 = mods.nuclearcraft.ChanceItemIngredient.create(, 25); fisProd2 = mods.nuclearcraft.ChanceItemIngredient.create(, 25); //reprocessing //triso mods.nuclearcraft.FuelReprocessor.addRecipe(dpaFuels[2][0] * 9, * 2, , fisProd1, .amount(3), * 2, *3, fisProd2, ); //oxide mods.nuclearcraft.FuelReprocessor.addRecipe(dpaFuels[2][1] * 9, * 2, , fisProd1, null, * 2, *3, fisProd2, null); //nitride mods.nuclearcraft.FuelReprocessor.addRecipe(dpaFuels[2][2] * 9, * 2, , fisProd1, null, * 2, *3, fisProd2, null); //zirc mods.nuclearcraft.FuelReprocessor.addRecipe(dpaFuels[2][3] * 9, * 2, , fisProd1, , * 2, *3, fisProd2, null); for i,array in dpaFuels{ for j,item in array{ mods.nuclearcraft.Radiation.setRadiationLevel(item, ddecayRad[i+3]); realOreDictList[i+3].add(dpaFuels2[i][j]); } } /* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Isotope Stuff -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*/ val qIsoNames= [[,,,,],[,,,,],[,,,,],[,,,,]] as IIngredient[][]; val qIsoNames2= [[,,,,],[,,,,],[,,,,],[,,,,]] as IItemStack[][]; val qisoN2 = [,,,] as IItemStack[]; val qdecays = [,,,,] as IIngredient[]; decayRad = [1.26E-04,7.09,1.0e-6,1.0e-9] as double[]; oreDictList = ["ingotThorium229All","ingotMendelevium258All","ingotFlerovium298All","ingotDarmstadtium294All"] as string[]; for entry in oreDictList { oreDict.entry; } realOreDictList = [,,,] as IOreDictEntry[]; for i,array in qIsoNames{ // adding carbides mods.nuclearcraft.AlloyFurnace.addRecipe(array[0], graphite, array[1]); // adding oxides mods.nuclearcraft.Infuser.addRecipe(array[0], *1000, array[2]); // adding nitrides mods.nuclearcraft.Infuser.addRecipe(array[0], *1000, array[3]); // adding zirconium alloys mods.nuclearcraft.AlloyFurnace.addRecipe(array[0], zirconium, array[4]); // recipes for normal furnace.addRecipe(qisoN2[i], array[3]); furnace.addRecipe(qisoN2[i], array[2]); mods.nuclearcraft.Separator.addRecipe(array[1], array[0], ); mods.nuclearcraft.Separator.addRecipe(array[4], array[0], ); //adding decays for j,item in array{ mods.nuclearcraft.Radiation.setRadiationLevel(item, decayRad[i]); realOreDictList[i].add(qIsoNames2[i][j]); if (i==1){ mods.nuclearcraft.DecayHastener.addRecipe(item, qdecays[j],1.0,1.0,decayRad[i]); } } } var uran = ; mods.nuclearcraft.DecayHastener.removeRecipeWithInput(uran); uran = ||; mods.nuclearcraft.DecayHastener.addRecipe(uran, ,1.0,1.0,1.42e-9); // Stuff for Actinium-227 & Thorium-229 oreDict.dustActinium227; .add(); mods.nuclearcraft.FissionIrradiator.addRecipe(, , 1563000, 0.0, 0.0, 0.0); mods.nuclearcraft.DecayHastener.addRecipe(, ,1.0,1.0,4.59E-02); mods.nuclearcraft.Radiation.setRadiationLevel(, 4.59E-02); oreDict.ingotThorium229Pure; .add(); mods.nuclearcraft.Manufactory.addRecipe(, ); mods.nuclearcraft.Radiation.setRadiationLevel(, 1.26E-04); mods.nuclearcraft.FissionIrradiator.addRecipe(, , 201000, 0.0, 0.0, 0.0); mods.nuclearcraft.DecayHastener.addRecipe(|||, ,1.0,1.0,decayRad[0]); //enhancements mods.nuclearcraft.AlloyFurnace.addRecipe(*64, , *64); mods.nuclearcraft.AlloyFurnace.addRecipe(*8, , *8); // U-234 melting time mods.nuclearcraft.Melter.addRecipe(, *144); mods.nuclearcraft.IngotFormer.addRecipe(*144, ); //Special Thorium Pellet Stuff if (oreDict has "QuantumTraverseIHaveHadEnoughOfYourSpaghettiCodeAndAbsurdNames") { //.add(); //.add(); //recipes.addShaped(*3,[[],[],[]]); //recipes.addShaped(*3,[[,,]]); mods.nuclearcraft.FissionIrradiator.addRecipe(, , 1185000, 7.5, 0.0, 3.30E-04); //mods.nuclearcraft.FissionIrradiator.addRecipe(, , 1185000, 7.5, 0.0, 3.30E-04); //mods.nuclearcraft.FissionIrradiator.addRecipe(, , 1198000, 0.1, 0.0, 3.30E-04); }else{ //mods.jei.JEI.hide(); //mods.jei.JEI.hide(); } /* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Improved RTGs -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */ val radioIso = [,] as IIngredient[]; val decayIso = [,] as IIngredient[]; val red = ; val sige = ; var input = [,] as IIngredient[]; var output = [,] as IIngredient[]; //mean lifetime, power, radiation var rtgstats = [[126600.0,36.0,1.90E-01],[522000.0,1370.0,4.59E-02]] as double[][]; // MRR Compat if (oreDict has "QuantumTraverseIHaveHadEnoughOfYourSpaghettiCodeAndAbsurdNames") { rtgstats = [[126600.0,36.0,3.50E-01],[522000.0,1370.0,5.90E-02]] as double[][]; } for i,item in input{ mods.nuclearcraft.Assembler.addRecipe(radioIso[i].amount(9), *4, red*2, sige*2, item); mods.nuclearcraft.DecayGenerator.addRecipe(item, output[i], rtgstats[i][0], rtgstats[i][1], rtgstats[i][2]); mods.nuclearcraft.FuelReprocessor.addRecipe(output[i], decayIso[i].amount(9), *4, null, null, red*2, sige*2, null, null); mods.nuclearcraft.Radiation.setRadiationLevel(item, rtgstats[i][2]); } /* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Clock Fun -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- */ val nClock = .withTag({display: {Name: "Nuclear Clock", Lore: ["Somehow hundreds of times even more accurate than an atomic clock!"]}}); recipes.addShaped(nClock,[[null, , null],[, , ],[null,,null]]);