Aleksei-bird 7c9c708c92 Первый фикс
Пачки некоторых позиций увеличены
2024-03-01 20:54:33 +03:00

91 lines
2.3 KiB
Lua

local util = scripts.util
local config = require("config")
local entity = scripts.helpers
local _ = scripts.helpers.on
-- Helper functions for LuaEntity --
function entity:entityrequests() -- fetch all requests as table
local requests = {}
if self.request_slot_count > 0 then
for i = 1, self.request_slot_count do
local request = self.get_request_slot(i)
if request then
local item, amount = request.name, request.count
if amount > 0 then
requests[item] = math.max(requests[item] or 0, amount)
end
end
end
end
return requests
end
function entity:entityrequest(item) -- fetch specific item request
local count = 0
if self.request_slot_count > 0 then
for i = 1, self.request_slot_count do
local request = self.get_request_slot(i)
if request and request.name == item and request.count > count then
count = math.max(count, request.count)
end
end
end
return count
end
function entity:logisticSlots() -- fetch all requests as table
local logisticSlots = {}
if self.request_slot_count > 0 then
for i = 1, self.request_slot_count do
local slot = self.get_personal_logistic_slot(i)
if slot and slot.name then
logisticSlots[slot.name] = slot
end
end
end
return logisticSlots
end
function entity:isIgnored(player)
return not global.allowedEntities[self.name] or
global.settings[player.index].ignoredEntities[self.name] or
global.remoteIgnoredEntities[self.name]
end
function entity:recipe()
return _(self.get_recipe() or (self.type == "furnace" and self.previous_recipe))
end
-- for turrets
function entity:supportsAmmo(item)
local ammoType = item.get_ammo_type("turret") or item.get_ammo_type()
if ammoType then
local attackParameters = self.prototype.attack_parameters
if attackParameters then
return _(attackParameters.ammo_categories):contains(ammoType.category)
elseif self.type == "artillery-turret" or self.type == "artillery-wagon" then
return ammoType.category == "artillery-shell"
end
end
return false
end
-- for furnace
function entity:canSmelt(item)
return #game.get_filtered_recipe_prototypes({
unpack(_(self.prototype.crafting_categories):map(function(category)
return nil, {filter = "category", category = category, mode = "or"}
end):toPlain()),
{filter = "has-ingredient-item", elem_filters = {{filter = "name", name = item}}, mode = "and"},
}) > 0
end