If I understand it correctly, this issue happens because there is some sort of protection against splitting rare clones from rare enemies. With this mechanism in place rare enemies with multiply or split on hit skills only produce normal (not rare) copies of themselves. The infinite dungeon (ID) challenge adds multiply along with a counter (it should allow all enemies to create exact copies), but normal copies remain unaffected. The lack of a counter leads to this error. I hope this makes sense.
It is possible that the ooze still can work as expected after 4 errors.
I couldn't get the challenge to do more testing, ergo the following is but a theory.
Additional switch in ...\mod\class\GameState.lua line 2809
Code: Select all
game:onTickEnd(function()
local p = game:getPlayer(true)
for uid, e in pairs(game.level.entities) do
if p:reactionToward(e) < 0 and not game.party:hasMember(e) then
--Hack for infinite dungeon mutiplicity challenge
if e.clone_base then e.inf_dun = true end
e:learnTalent(e.T_MULTIPLY, true)
e.can_multiply = 3
end
end
end)
and a modifocation to ...\data\talents\misc\npcs.lua line 51
Code: Select all
-- Find a place around to clone
self.can_multiply = self.can_multiply - 1
local a
if self.clone_base then
a = self.clone_base:cloneFull()
--Allow rare enemies to produce rare clones in infinite dungeon
if self.inf_dun then
a = self:cloneFull()
end
else a = self:cloneFull()
end
can work, but it leads to unnecessary calculations for every use of multiply (even outside the ID).
Another approach I can think of is to create a special version of multiply for the ID.
...\mod\class\GameState.lua line 2809 (probably not a valid code because I'm not sure whether it should be
if e:knowTalent(e.T_MULTIPLY) then e:unlearnTalent(e.T_MULTIPLY, e:getTalentLevelRaw(e.T_MULTIPLY)) or
if e.talents.T_MULTIPLY then e.talents.T_MULTIPLY = nil or something else)
Code: Select all
game:onTickEnd(function()
local p = game:getPlayer(true)
for uid, e in pairs(game.level.entities) do
if p:reactionToward(e) < 0 and not game.party:hasMember(e) then
--Remove normal multiply for infinite dungeon mutiplicity challenge
if e:knowTalent(e.T_MULTIPLY) then e:unlearnTalent(e.T_MULTIPLY, e:getTalentLevelRaw(e.T_MULTIPLY)) end
e:learnTalent(e.T_MULTIPLYID, true)
e.can_multiply = 3
end
end
end)
and a new talent called multiplyid (not the best name, I know

) in ...\data\talents\misc\npcs.lua that is a copy of multiply except for the name and protection
Code: Select all
-- Find a place around to clone
self.can_multiply = self.can_multiply - 1
local a = self:cloneFull()
This solution suffers from doubling the same code, but doesn't require any additional calculations for normal multiply.
Frankly, any other solution is beyond my capabilities.