Page 1 of 1

Bugs found playing Dungeon Master in DSB

Posted: Sun Apr 08, 2007 7:43 pm
by Joramun
[corrected] x_relay attempting illegal stuff :
two relays were triggering at the same time, one sending message M_ACTIVATE, the other M_DESTROY, resulting in a reference to a destroyed item. It comes from the fact RTC handles triggers in the order they are "piled" on the tile, while in dsb there is no such order.

[corrected] pressure plate having unexpected behavior in some cases :
the wall text (RTC_1599) (level 1, x=21 y=23) "THIS WALL SAYS NOTHING" stays even after the party leaves the pressure plate at x=23, y=23

[corrected in v0.11] triggers not taking account of items flying over it / carried by party

[corrected in v0.11] teleporter problem : when toggling a teleporter, if the party steps on the tile when the teleporter is deactivated, and then waits, when teleportes is reactivated, the party DOES NOT get teleported

[corrected in v0.11] items in mirror or sconces or invisible alcoves !

Posted: Mon Apr 09, 2007 12:03 pm
by Joramun
[corrected in v0.11] another teleporter problem : opby_thing = true doesn't teleport flying objects...

[corrected] monster generator are now properly translated by RTSB

[corrected] hit and run will now work properly

[corrected in v0.11] monster generator problem, crash : "invalid pointer to pointerize"

Posted: Mon Apr 09, 2007 7:50 pm
by Sophia
Joramund wrote:triggers not taking account of items flying over it / carried by party

teleporter problem : when toggling a teleporter, if the party steps on the tile when the teleporter is deactivated, and then waits, when teleportes is reactivated, the party DOES NOT get teleported

another teleporter problem : opby_thing = true doesn't teleport flying objects
These have all been fixed for 0.11.
Joramund wrote:items in mirror or sconces or invisible alcoves
For this one, you'll need to call dungeon_translate just before the end of the file. I can send this one to you, or it'll be in 0.11 too.
Joramund wrote:monster generator problem, crash : "invalid pointer to pointerize"
I'll need to see the crash log to be able to make sense of this.

Posted: Wed Apr 11, 2007 4:15 pm
by Joramun
New bug :

- triggers working only once ( 1,16,16) room of pads
(i looked for the reason, but didn't find)

Posted: Thu Apr 12, 2007 1:11 am
by Sophia
Fixed!

Posted: Thu Apr 12, 2007 1:17 pm
by Joramun
Actually, most of the trigger mechanics are going badly in some circumstances :

When moving fast enough, a trigger won't be triggered / untriggered when stepping on or off it. In particular, constant weight plate can be abused by stepping very fast on and then off them : they don't untrigger.

I experienced that only for trigger operating doors, so either triggers are globally "broken" or doors respond too slow to a M_TOGGLE, because of the high amount of code they call.

Posted: Thu Apr 12, 2007 8:00 pm
by Sophia
It has nothing to do with speed. Triggers were just globally broken, I think. Fortunately, the fix is fairly simple.
Replace floor_trigger_off in base/triggers.lua with the following and it should work better:

Code: Select all

function floor_trigger_off(self, id, what)
	if (not exvar[id]) then
	    return false
	elseif (not exvar[id].target) then
	    return false
	end
	
	if (is_opby(id, what, 0)) then
		local tc = exvar[id].tc
		if (tc == 1) then
			if (exvar[id].const_weight) then
				if (not exvar[id].silent) then
					if (exvar[id].sound) then
						local_sound(id, exvar[id].sound)
					elseif (not self.default_silent) then
						local_sound(id, snd.click)
					end
				end				
				exvar[id].tc = nil
				got_untriggered(id, what)
			else
				exvar[id].tc = nil
			end
		else
			exvar[id].tc = tc - 1
		end
	end
end