diff --git a/scripts/components/aipc_oldone.lua b/scripts/components/aipc_oldone.lua index b40f0a8f..676cebdd 100644 --- a/scripts/components/aipc_oldone.lua +++ b/scripts/components/aipc_oldone.lua @@ -24,17 +24,22 @@ local function OnIsDay(inst, isday) if factor > 0 then local pt = inst:GetPosition() - local stones = TheSim:FindEntities(pt.x, pt.y, pt.z, 0.1, { "aip_bloodstone" }) - local first = stones[1] - if first ~= nil and first.components.finiteuses ~= nil then - first.components.finiteuses:Use(-factor) - - if first.components.finiteuses:GetPercent() > 1 then - first.components.finiteuses:SetPercent(1) - end - end - end -end + local stones = TheSim:FindEntities(pt.x, pt.y, pt.z, 0.1, { "aip_bloodstone" }) + local first = stones[1] + if first ~= nil and first.components.finiteuses ~= nil then + local finiteuses = first.components.finiteuses + local maxUses = finiteuses.total + + -- 满充能时重复叠加会导致次数异常,直接按上限截断 + if maxUses ~= nil and maxUses > 0 then + local currUses = finiteuses:GetUses() + if currUses < maxUses then + finiteuses:SetUses(math.min(maxUses, currUses + factor)) + end + end + end + end +end ------------------------------- 组件 ------------------------------- local Oldone = Class(function(self, inst) @@ -90,4 +95,4 @@ function Oldone:OnLoad(data) end end -return Oldone \ No newline at end of file +return Oldone