diff --git a/game/engines/default/engine/Zone.lua b/game/engines/default/engine/Zone.lua index 247719c428f982279d7a4e823f98a611e768c356..ac7be4b08fc631a6d73b7fa349d06b65c9415b89 100644 --- a/game/engines/default/engine/Zone.lua +++ b/game/engines/default/engine/Zone.lua @@ -252,8 +252,13 @@ function _M:makeEntity(level, type, filter, force_level, prob_filter) -- No filter else local list = level:getEntitiesList(type) - e = self:pickEntity(list) - if not e then return nil end + local tries = filter and filter.nb_tries or 50 -- A little crude here too but we only check 50 times, this is simply to prevent duplicate uniques + while tries > 0 do + e = self:pickEntity(list) + if e and self:checkFilter(e, nil) then break end + tries = tries - 1 + end + if tries == 0 then return nil end end if filter then e.force_ego = filter.force_ego end