Page 1 of 1
[b36] Lua Error at the Ambush
Posted: Sat Dec 10, 2011 6:21 pm
by zmadian
I have gotten this Lua Error twice in a row when "dying" at the Ambush. After the error i'm stuck in that area.
I have only passed the ambush once before but if i remember correctly one should be teleported out of the area.
Code: Select all
Lua Error: /data/quests/staff-absorption.lua:80: attempt to index global 'player' (a nil value)
At [C]:-1 __index
At /data/quests/staff-absorption.lua:80 die
At /engine/interface/ActorLife.lua:72 takeHit
At /data/damage_types.lua:227 projector
At /mod/class/interface/Archery.lua:157 damtype
At /engine/interface/ActorProject.lua:347 projectDoAct
At /engine/interface/ActorProject.lua:412 projectDoStop
At /engine/Projectile.lua:226 act
At /engine/GameEnergyBased.lua:118 tickLevel
At /engine/GameEnergyBased.lua:62 tick
At /engine/GameTurnBased.lua:44 tick
At /mod/class/Game.lua:955
Any suggestions on how to get out of the area after the error occures would be greatly appreciated

Re: [b36] Lua Error at the Ambush
Posted: Sun Dec 11, 2011 7:03 pm
by Devorius
Do you mean a world map mob encounter? i.e bandits, bears, wolves, etc.? There will be an exit somewhere at the edge of the map, usually on the opposite side of where you spawned.
Re: [b36] Lua Error at the Ambush
Posted: Sun Dec 11, 2011 7:32 pm
by thesmuel
I have suffered a similar problem at the same point.
Code: Select all
Lua Error: /engine/interface/ActorTalents.lua:140: /data/quests/staff-absorption.lua:80: attempt to index global 'player' (a nil value)
At [C]:-1
At [C]:-1 error
At /engine/interface/ActorTalents.lua:140 bumpInto
At /mod/class/Actor.lua:1921 attack
At /engine/interface/ActorLife.lua:41 check
At [string "return function(self, x, y, what, ...) local ..."]:1 checkAllEntities
At /engine/Actor.lua:166 move
At /mod/class/Actor.lua:641 doAI
At /mod/class/NPC.lua:47 act
At /engine/GameEnergyBased.lua:118 tickLevel
At /engine/GameEnergyBased.lua:62 tick
At /engine/GameTurnBased.lua:44 tick
At /mod/class/Game.lua:955
ps @Devorious This is at "Ambush! (1)", the cutscene-style mini level after recalling from Dreadfell with the rod of absorption
Re: [b36] Lua Error at the Ambush
Posted: Sun Dec 11, 2011 9:47 pm
by Marcas
I´ve had this bug too, and my lua error looks like thesmuel´s. Would appreciate if anyone knows how to solve this..
Re: [b36] Lua Error at the Ambush
Posted: Sun Dec 11, 2011 9:49 pm
by Marcas
I´ve had this bug too and my lua error looks like thesmuel´s. Would appreciate if anyone know how to solve this..
Re: [b36] Lua Error at the Ambush
Posted: Sun Dec 11, 2011 10:52 pm
by Devorius
thesmuel wrote:ps @Devorious This is at "Ambush! (1)", the cutscene-style mini level after recalling from Dreadfell with the rod of absorption
Ah, haven't been to Dreadfell yet.
I found the offending code though, as per the error messages:
Code: Select all
local o, item, inven_id = player:findInAllInventoriesBy("define_as", "STAFF_ABSORPTION")
if o then
self:removeObject(inven_id, item, true)
o:removed()
end
Which seems to fail because of:
Code: Select all
who.die = function(self)
self.dead = false
self.die = nil
self.life = 1
for _, e in pairs(game.level.entities) do
if e ~= self and self:reactionToward(e) < 0 then
game.level:removeEntity(e)
e.dead = true
end
end
I'm not familiar with the specifics of the T-Engine, however it seems like this is meant to prevent the player from dying, but for some reason it looks like the player is not getting excluded from the for loop logic as he should.
I don't know Lua, however I know C/C++/C# so apologies if I'm wrong. I'm assuming ~= is the inequality operator, so I get this logic:
If e is not the Player, and is not an ally of the Player, then ...
That looks sound, so unless there's an error in the comparative logic, my only other guess is the Player object is being destroyed prior to calling the quest code...
Re: [b36] Lua Error at the Ambush
Posted: Mon Dec 12, 2011 12:26 am
by Marcas
Ok, a very friendly player gave me the
solution
1. go to
http://te4.org/wiki/t4modules-debugging and read the instructions on how to enable debugging mode.
2. Keybind debugging to something.
3. press the bound key to bring up the debugging menu. Change the zone to last hope and then give yourself the quest named "Orc hunt"
4. Disable debugging mode by simply deleting the file or change "true" to "false"
5. ENJOY!
Re: [b36] Lua Error at the Ambush
Posted: Mon Dec 12, 2011 12:36 am
by zmadian
Thanks for the tip Marcas!
I did some testing and substituting:
Code: Select all
player:findInAllInventoriesBy("define_as", "STAFF_ABSORPTION")
with
Code: Select all
self:findInAllInventoriesBy("define_as", "STAFF_ABSORPTION")
did the trick for me.
Looks like player:findInAllInventoriesBy is causing no answeres to appear at the Elder in Last Hope too.