However, it doesn't seem to be working as intended. I can't figure out how to trace the issue due to several issues.
Printing to the player fails semi-randomly, so using it gives false negatives a lot.
Code: Select all
for x,equipmentData in ipairs(RanaMods.ModularArmor.equipmentData) do -- Count all scripted equipment
--globalPrint(x)
for y,equipmentType in ipairs (equipmentData.equipment) do
Code: Select all
function registerEquipmentGroup(iGroup)
--iGroup.mod = iMod
if not RanaMods.ModularArmor.equipmentData then
RanaMods.ModularArmor.equipmentData = {}
end
if iGroup and iGroup.name and iGroup.type then
globalPrint(iGroup.name.." "..iGroup.type)
for _, v in pairs(RanaMods.ModularArmor.equipmentData) do
if v.name == iName then
return
end
end
table.insert(RanaMods.ModularArmor.equipmentData, iGroup)
else
return "Invalid Table"
end
end
function registerPrototype (iGroup,iPrototype,iType)
-- Ideally, this will register equipment group itself, if it doesn't yet exist.
if not RanaMods.ModularArmor.equipmentData then
RanaMods.ModularArmor.equipmentData = {}
end
if iGroup and iGroup.name and iGroup.type then
if iPrototype and iPrototype.name and iPrototype.power then
for _, v in pairs(RanaMods.ModularArmor.equipmentData) do
if v.name == iGroup.name then
thisTable = nil
if iType == "equipment" then
if not v.equipment then
v.equipment = {}
end
thisTable = v.equipment
elseif iType == "fuel" then
if not v.fuel then
v.fuel = {}
end
thisTable = v.fuel
else
globalPrint("Invalid Type "..iType)
return "Invalid Type"
end
for _, data in pairs(thisTable) do
if data.name == iPrototype.name then
data = iPrototype
return
end
end
table.insert(thisTable, iPrototype)
break
end
end
else
return "Invalid iPrototype"
end
else
return "Invalid iGroup"
end
end
function reset_equipment()
globalPrint("reset_equipment")
RanaMods.ModularArmor.equipmentData = {}
end
function refresh_equipment()
luadata = {raw = loadstring(game.entity_prototypes["DATA_RAW"].order)()}
reset_equipment()
for i, equipment in pairs (luadata.raw["battery-equipment"]) do
if equipment.rana_mod then
if equipment.rana_mod.powerType then
-- This will happen repeatedly, but it should work correctly even with duplicate registrations, just failing instead.
registerEquipmentGroup({name = equipment.rana_mod.powerGroup,type = equipment.rana_mod.powerType})
registerPrototype({name = equipment.rana_mod.powerGroup,type = equipment.rana_mod.powerType},{name = equipment.name ,power = equipment.rana_mod.fuelPower},"equipment")
end
-- might have more data attachment types later.
end
end
for i, fuel in pairs (luadata.raw["item"]) do
if fuel.rana_mod then
if fuel.rana_mod.powerType then
registerEquipmentGroup({name = fuel.rana_mod.powerGroup,type = fuel.rana_mod.powerType})
registerPrototype({name = fuel.rana_mod.powerGroup,type = fuel.rana_mod.powerType},{name = fuel.name ,power = fuel.rana_mod.fuelPower},"fuel")
end
end
end
--[[registerEquipmentGroup({name = "conduit",type = "conduit"})
registerEquipmentGroup({name = "burner" ,type = "fuelled"})
registerEquipmentGroup({name = "fusion" ,type = "fuelled"})
registerPrototype({name = "conduit",type = "conduit"},{name = "semi-conduit-conduit-equipment" ,power = 40 * 1000},"equipment","Modular-Armor")
registerPrototype({name = "conduit",type = "conduit"},{name = "power-conduit-equipment" ,power = 720 * 1000},"equipment","Modular-Armor")
registerPrototype({name = "burner" ,type = "fuelled"},{name = "engine-equipment" ,power = 100 * 1000},"equipment","Modular-Armor")
registerPrototype({name = "fusion" ,type = "fuelled"},{name = "fusion-reactor-equipment" ,power = 960 * 1000},"equipment","Modular-Armor")
]]--
--[[registerPrototype({name = "burner" ,type = "fuelled"},{name = "solid-fuel" ,power = 25 * 1000 * 1000},"fuel","Modular-Armor")
registerPrototype({name = "burner" ,type = "fuelled"},{name = "coal" ,power = 8. * 1000 * 1000},"fuel","Modular-Armor")
registerPrototype({name = "burner" ,type = "fuelled"},{name = "raw-wood" ,power = 4. * 1000 * 1000},"fuel","Modular-Armor")
registerPrototype({name = "fusion" ,type = "fuelled"},{name = "alien-fuel" ,power = 200. * 1000 * 1000},"fuel","Modular-Armor")
]]--
end