Adding extra valid check for battery recharge (#356)

* Update bonus.lua

* Update bonus.lua

* Update bonus.lua

* Update bonus.lua

* Update bonus.lua
This commit is contained in:
2025-01-16 05:38:12 +09:00
committed by GitHub
parent 74fc233f1a
commit ef63c690bb

View File

@@ -75,18 +75,22 @@ local function apply_periodic_bonus(player)
local disp = frame.container["bonus_st_2"].disp.table
if vlayer.get_statistics()["energy_sustained"] > 0 then
local armor = player.get_inventory(defines.inventory.character_armor)[1].grid
local armor = player.get_inventory(defines.inventory.character_armor)
if armor then
local slider = disp["bonus_display_personal_battery_recharge_slider"].slider_value * 100000 * config.player_special_bonus_rate / 6
if armor and armor[1] and armor[1].valid_for_read and armor[1].grid then
local armor_grid = armor[1].grid
for i = 1, #armor.equipment do
if armor.equipment[i].energy < armor.equipment[i].max_energy then
local energy_required = math.min(math.floor(armor.equipment[i].max_energy - armor.equipment[i].energy), vlayer.get_statistics()["energy_storage"], slider)
armor.equipment[i].energy = armor.equipment[i].energy + energy_required
vlayer.energy_changed(-energy_required)
if armor_grid and armor_grid.available_in_batteries and armor_grid.battery_capacity and armor_grid.available_in_batteries < armor_grid.battery_capacity then
local slider = disp["bonus_display_personal_battery_recharge_slider"].slider_value * 100000 * config.player_special_bonus_rate / 6
slider = slider - energy_required
for i = 1, #armor_grid.equipment do
if armor_grid.equipment[i].energy < armor_grid.equipment[i].max_energy then
local energy_required = math.min(math.floor(armor_grid.equipment[i].max_energy - armor_grid.equipment[i].energy), vlayer.get_statistics()["energy_storage"], slider)
armor_grid.equipment[i].energy = armor_grid.equipment[i].energy + energy_required
vlayer.energy_changed(-energy_required)
slider = slider - energy_required
end
end
end
end