I checked the code with uMod and this is what I found:
MonsterStealWeaponComponent has this function:
Code: Select all
function MonsterStealWeaponComponent:finish()
if self.go.tongueItem then
self.go:removeComponent(self.go.tongueItem)
end
self.tongueItemScale = nil
-- digest items
for _,it in self.go.monster:contents() do
it:sendMessage("onDigestItem", self.go.monster)
end
end
Which doesn't actually do anything because the message is being sent to the item component rather than the object itself
Then BombItemComponent has this function:
Code: Select all
function BombItemComponent:onDigestItem(monster)
-- bomb was eaten by a monster
self:explode(monster.go.map, monster.go.x, monster.go.y, monster.go.facing)
monster:removeItem(self.go)
monster:performAction("eatBomb")
return true
end
Which causes an error when it tries to remove itself from the monster
So I fixed the functions with uMod
Code: Select all
function MonsterStealWeaponComponent:finish()
if self.go.tongueItem then
self.go:removeComponent(self.go.tongueItem)
end
self.tongueItemScale = nil
-- digest items
for _,it in self.go.monster:contents() do
it.go:sendMessage("onDigestItem", self.go.monster)
end
end
function BombItemComponent:onDigestItem(monster)
-- bomb was eaten by a monster
self:explode(monster.go.map, monster.go.x, monster.go.y, monster.go.facing)
local bomb = monster:getItemById(self.go.id)
monster:removeItem(bomb)
monster:performAction("eatBomb")
return true
end
This is the result:
https://drive.google.com/file/d/1YpiAqF ... drive_link
So either they broke it by accident before release, or left it broken on purpose for some other reason. I don't know if you could fix this via regular scripting but hopefully this at least helps shed some light on this mechanic