Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require "/HLib/Scripts/HelperScripts.lua"
- function GetLiquidCombinations()
- local Liquids = {};
- local function LiquidInteraction (ingredient1,ingredient2,result)
- local self = {};
- self.Ingredient1 = ingredient1;
- self.Ingredient2 = ingredient2;
- self.Result = result;
- return self;
- end
- for i=1,256 do
- local liquid = root.liquidConfig(i);
- if liquid then
- Liquids[i] = liquid;
- end
- end
- local ItemLiquids = {}
- local nameToItem = function (itemname)
- return Item({name = itemname,count = 1});
- end
- local nameToDisplayName = function (id,itemname)
- if id == 8 then
- return "Core Lava";
- else
- return nameToItem(itemname).DisplayName;
- end
- end
- local materialToDisplayName = function (material)
- return nameToItem(root.materialConfig(material).config.itemDrop).DisplayName;
- end
- for id,liquid in pairs(Liquids) do
- local item = nameToDisplayName(id,liquid.config.itemDrop);
- ItemLiquids[id] = {Name = item; Interactions = liquid.config.interactions};
- end
- local LiquidInteractions = {};
- for id,liquid in pairs(ItemLiquids) do
- if liquid.Interactions then
- for i=1,#liquid.Interactions do
- local mix = liquid.Interactions[i];
- if mix.materialResult then
- LiquidInteractions[#LiquidInteractions + 1] = LiquidInteraction(liquid.Name,ItemLiquids[mix.liquid].Name,materialToDisplayName(mix.materialResult));
- else
- if mix.liquidResult ~= 0 then
- LiquidInteractions[#LiquidInteractions + 1] = LiquidInteraction(liquid.Name,ItemLiquids[mix.liquid].Name,ItemLiquids[mix.liquidResult].Name);
- end
- end
- end
- end
- end
- local interactions = #LiquidInteractions;
- for i=1,interactions do
- LiquidInteractions[#LiquidInteractions + 1] = LiquidInteraction(LiquidInteractions[i].Ingredient2,LiquidInteractions[i].Ingredient1,LiquidInteractions[i].Result);
- end
- local output = "";
- for i=1,#LiquidInteractions do
- output = output .. LiquidInteractions[i].Ingredient1 .. ";"..LiquidInteractions[i].Ingredient2.. ";"..LiquidInteractions[i].Result.."\n";
- end
- LogDebug(output);
- output = "";
- local results = {};
- local function res_contains(int)
- for i=1,#results do
- if results[i].Result == int.Result and ((results[i].Ingredient1 == int.Ingredient1 and results[i].Ingredient2 == int.Ingredient2) or ((results[i].Ingredient1 == int.Ingredient2 and results[i].Ingredient2 == int.Ingredient1))) then
- return true;
- end
- end
- return false;
- end
- for i=1,#LiquidInteractions do
- if not res_contains(LiquidInteractions[i]) then
- results[#results + 1] = LiquidInteractions[i];
- output = output .. LiquidInteractions[i].Ingredient1 .. ";"..LiquidInteractions[i].Ingredient2.. ";"..LiquidInteractions[i].Result.."\n";
- end
- end
- LogDebug(output);
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement