From 47d5e1d5e63b8b716c3c265cb2e0a65d0dc7eede Mon Sep 17 00:00:00 2001 From: Jeffrey Date: Sun, 13 Jan 2013 20:02:00 -0600 Subject: [PATCH] Fix for battle list sorting All creatures were being removed and re-added, only add ones we don't have, and then remove ones we shouldn't have. --- modules/game_battle/battle.lua | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/modules/game_battle/battle.lua b/modules/game_battle/battle.lua index 47a24af9..6d46b183 100644 --- a/modules/game_battle/battle.lua +++ b/modules/game_battle/battle.lua @@ -97,21 +97,26 @@ function onMiniWindowClose() end function checkCreatures() - removeAllCreatures() - - local spectators = {} local player = g_game.getLocalPlayer() if g_game.isOnline() then creatures = g_map.getSpectators(player:getPosition(), false) for i, creature in ipairs(creatures) do if creature ~= player and doCreatureFitFilters(creature) then - table.insert(spectators, creature) + if not hasCreature(creature) then + addCreature(creature) + end end end - end - - for i, v in pairs(spectators) do - addCreature(v) + local toRemove = {} + for i, b in pairs(battleButtonsByCreaturesList) do + if (not table.contains(creatures, b.creature)) or (not doCreatureFitFilters(b.creature)) then + table.insert(toRemove, b.creature) + end + end + + for i, creature in pairs(toRemove) do + removeCreature(creature) + end end end