@Grim13
Could you answer whether you entered unremarkable cave (or explored Eastern World Map) before completing Slazish Fen, please?
@scsijon
Very useful information. Thanks for sharing.
Speculations. As far as I can see both Krogar and Golbug can drop the orb. Maybe Golbug doesn't drop the orb because it was assigned to Krogar earlier.
If I understand it correctly it can be fixed by removing it first and then reassigning to a different boss. I couldn't figure out how to do that though.
I tried to apply the mechanism used by Rod of Recall to Orb of Many Ways. From a quick test it seems to work. Here are changes if anyone wants to test.
Commented out ..\data\zones\reknor\npcs.lua (L54) and ..\data\zones\unremarkable-cave\npcs.lua (L124).
Code: Select all
resolvers.drops{chance=100, nb=1, {type="jewelry", subtype="orb", defined="ORB_MANY_WAYS"} },
In ..\mod\class\Game.lua
Code: Select all
-- Create the entity to store various game state things
self.state = GameState.new{}
local birth_done = function()
--Added for orb of many ways (1 line)
self.state:allowOrbOfManyWays(true)
if self.state.birth.__allow_rod_recall then self.state:allowRodRecall(true) self.state.birth.__allow_rod_recall = nil end
if self.state.birth.__allow_transmo_chest and profile.mod.allow_build.birth_transmo_chest then
self.state.birth.__allow_transmo_chest = nil
local chest = self.zone:makeEntityByName(self.level, "object", "TRANSMO_CHEST")
if chest then
self.zone:addEntity(self.level, chest, "object")
self.player:addObject(self.player:getInven("INVEN"), chest)
end
end
In ..\mod\class\GameState.lua
Code: Select all
--- Allow dropping the orb of many ways (4 lines)
function _M:allowOrbOfManyWays(v)
if v == nil then return self.allow_drop_oomw end
self.allow_drop_oomw = v
end
In ..\mod\class\NPC.lua
Code: Select all
function _M:die(src, death_note)
if self.dead then self:disappear(src) self:deleteFromMap(game.level.map) if game.level:hasEntity(self) then game.level:removeEntity(self, true) end return true end
if src and Faction:get(self.faction) and Faction:get(self.faction).hostile_on_attack then
Faction:setFactionReaction(self.faction, src.faction, Faction:factionReaction(self.faction, src.faction) - self.rank, true)
end
-- Get angry if attacked by a friend
if src and src ~= self and src.resolveSource and src.faction then
local rsrc = src:resolveSource()
local rid = rsrc.unique or rsrc.name
-- Call for help if we become hostile
for i = 1, #self.fov.actors_dist do
local act = self.fov.actors_dist[i]
if act and act ~= self and act:reactionToward(rsrc) >= 0 and self:reactionToward(act) > 0 and not act.dead and act.checkAngered then
act:checkAngered(src, false, -101)
end
end
end
--Added for orb of many ways (11 lines)
if (self.define_as == "GOLBUG" or self.define_as == "CORRUPTOR") and game.state:allowOrbOfManyWays() then
local oomw = game.zone:makeEntityByName(game.level, "object", "ORB_MANY_WAYS")
if oomw then
if not game.player:canMove(self.x, self.y, true) then
game.zone:addEntity(game.level, oomw, "object")
game:getPlayer(true):addObject(game:getPlayer(true):getInven("INVEN"), oomw)
else
game.zone:addEntity(game.level, oomw, "object", self.x, self.y)
end
end
end
if self.rank >= 4 and game.state:allowRodRecall() and not self:attr("no_rod_recall") then
local rod = game.zone:makeEntityByName(game.level, "object", "ROD_OF_RECALL")
if rod then
-- If the player can move to the space the NPC died on, drop in the normal way
-- Else make absolutely sure they get the Rod of Recall by moving it to their inventory directly
if not game.player:canMove(self.x, self.y, true) then
game.zone:addEntity(game.level, rod, "object")
game:getPlayer(true):addObject(game:getPlayer(true):getInven("INVEN"), rod)
rod:identify(true)
else
game.zone:addEntity(game.level, rod, "object", self.x, self.y)
end
game.state:allowRodRecall(false)
if self.define_as == "THE_MASTER" then world:gainAchievement("FIRST_BOSS_MASTER", src)
elseif self.define_as == "GRAND_CORRUPTOR" then world:gainAchievement("FIRST_BOSS_GRAND_CORRUPTOR", src)
elseif self.define_as == "PROTECTOR_MYSSIL" then world:gainAchievement("FIRST_BOSS_MYSSIL", src)
elseif self.define_as == "URKIS" then world:gainAchievement("FIRST_BOSS_URKIS", src)
end
end
end
-- Ok the player managed to kill a boss dont bother him with tutorial anymore
if self.rank >= 3.5 and not profile.mod.allow_build.tutorial_done then game:setAllowedBuild("tutorial_done") end
return mod.class.Actor.die(self, src, death_note)
end
There should be no problems with Tannen because he drops a different orb. I'm not sure what happens if you quickly recall from Unremarkable Cave (after arriving there from the west) before Krogar dies and return to kill him after creating the portal in Last Hope.