Fixed decompilation, game can now be played start to finish (#15)
Fix Lazurus seals, dropping items, and Shrine spawning.pull/18/head
parent
0db106a5b4
commit
ade35fb4a4
|
@ -2540,7 +2540,7 @@ int __fastcall CanPut(int i, int j)
|
|||
v7 = v6 < 0;
|
||||
if ( v6 > 0 )
|
||||
{
|
||||
if ( _LOBYTE(objectavail[30 * v6 + 113]) ) /* check */
|
||||
if ( _LOBYTE(object[v6-1]._oSelFlag) ) /* check */
|
||||
return 0;
|
||||
v7 = v6 < 0;
|
||||
}
|
||||
|
@ -2550,7 +2550,7 @@ int __fastcall CanPut(int i, int j)
|
|||
if ( v8 > 0 )
|
||||
{
|
||||
v9 = dObject[v2][j + 1];
|
||||
if ( v9 > 0 && _LOBYTE(objectavail[30 * v8 + 113]) && _LOBYTE(objectavail[30 * v9 + 113]) )
|
||||
if ( v9 > 0 && _LOBYTE(object[v8-1]._oSelFlag) && _LOBYTE(object[v9-1]._oSelFlag) )
|
||||
return 0;
|
||||
}
|
||||
if ( !currlevel && (dMonster[0][v3] || dMonster[1][v3 + 1]) )
|
||||
|
|
|
@ -1636,7 +1636,7 @@ bool __fastcall ItemSpaceOk(int i, int j)
|
|||
v7 = v6 < 0;
|
||||
if ( v6 > 0 )
|
||||
{
|
||||
if ( _LOBYTE(objectavail[30 * v6 + 113]) ) /* check */
|
||||
if ( _LOBYTE(object[v6-1]._oSelFlag) ) /* check */
|
||||
return 0;
|
||||
v7 = v6 < 0;
|
||||
}
|
||||
|
@ -1646,7 +1646,7 @@ bool __fastcall ItemSpaceOk(int i, int j)
|
|||
if ( v8 <= 0 )
|
||||
return nSolidTable[dPiece[0][v3]] == 0;
|
||||
v9 = dObject[v2][j + 1];
|
||||
if ( v9 <= 0 || !_LOBYTE(objectavail[30 * v8 + 113]) || !_LOBYTE(objectavail[30 * v9 + 113]) )
|
||||
if ( v9 <= 0 || !_LOBYTE(object[v8-1]._oSelFlag) || !_LOBYTE(object[v9-1]._oSelFlag) )
|
||||
return nSolidTable[dPiece[0][v3]] == 0;
|
||||
}
|
||||
return 0;
|
||||
|
|
|
@ -4204,7 +4204,7 @@ void __fastcall OperateBook(int pnum, int i)
|
|||
}
|
||||
if ( v4 )
|
||||
{
|
||||
++objectavail[30 * dObject[35][36] + 123]; /* fix */
|
||||
++object[dObject[35][36]-1]._oVar5; // ++objectavail[30 * dObject[35][36] + 123]; /* fix */
|
||||
AddMissile(plr[v3].WorldX, plr[v3].WorldY, v1, v2, plr[v3]._pdir, MIS_RNDTELEPORT, 0, v3, 0, 0);
|
||||
v11 = 1;
|
||||
v4 = 0;
|
||||
|
|
|
@ -87,7 +87,7 @@ bool __fastcall TFit_Shrine(int i)
|
|||
&& !nSolidTable[dPiece[1][v3]]
|
||||
&& dung_map[-1][v3] == v1 // block_lvid[v3 + 1940] == v1
|
||||
&& dung_map[1][v3] == v1
|
||||
&& !dungeon[37][v3 + 7]
|
||||
&& !dObject[-1][v3 - 1]
|
||||
&& !dObject[0][v3 + 111] )
|
||||
{
|
||||
v6 = 1;
|
||||
|
@ -99,8 +99,8 @@ bool __fastcall TFit_Shrine(int i)
|
|||
|| nSolidTable[dPiece[0][v3 + 1]]
|
||||
|| dung_map[0][v3 - 1] != v1 // *(&byte_5B78EB + v3) != v1
|
||||
|| dung_map[0][v3 + 1] != v1
|
||||
|| dungeon[37][v3 + 7]
|
||||
|| dungeon[37][v3 + 9] )
|
||||
|| dObject[-1][v3 - 1]
|
||||
|| dObject[-1][v3 + 1] ) /* check */
|
||||
{
|
||||
goto LABEL_21;
|
||||
}
|
||||
|
|
21
TODO
21
TODO
|
@ -11,19 +11,18 @@
|
|||
1000 - Sometimes dungeon will crash on loading if previous levels loaded (DrawClippedObject)
|
||||
|
||||
2000 - Generation of Cathedral/Catacombs is slightly inaccurate
|
||||
2001 - The last seal in Lazarus' Lair doesn't trigger the video/teleport
|
||||
2002 - White pixels on monsters/cathedral/catacombs (palette entry 256?)
|
||||
2003 - Swapping items in inventory sometimes deletes the item
|
||||
2004 - Some spells don't use any mana or charges when they should
|
||||
2005 - Some tiles are drawn fully lit when they should be transparent (world.cpp)
|
||||
2006 - Objects should darken with radius instead of being fully lit
|
||||
2007 - Automap sometimes draws incorrectly, check 'engine_draw_automap_pixels'
|
||||
2001 - White pixels on monsters/cathedral/catacombs (palette entry 256?)
|
||||
2002 - Swapping items in inventory sometimes deletes the item
|
||||
2003 - Some spells don't use any mana or charges when they should
|
||||
2004 - Some tiles are drawn fully lit when they should be transparent (world.cpp)
|
||||
2005 - Objects should darken with radius instead of being fully lit
|
||||
2006 - Automap sometimes draws incorrectly, check 'engine_draw_automap_pixels'
|
||||
*Bad args ECX/EDX for 'engine_draw_pixel' (engine.cpp)
|
||||
2008 - After being in the dungeon for awhile, the 'Control Panel' will sometimes
|
||||
2007 - After being in the dungeon for awhile, the 'Control Panel' will sometimes
|
||||
corrupt and be filled with glitched colors (likely a buffer overflow)
|
||||
2009 - Some CEL functions were written in ASM and have been disabled (engine.cpp)
|
||||
2010 - Timed messages are broken and have been disabled (tmsg.cpp)
|
||||
2011 - Server commands are broken and have been disabled (msgcmd.cpp)
|
||||
2008 - Some CEL functions were written in ASM and have been disabled (engine.cpp)
|
||||
2009 - Timed messages are broken and have been disabled (tmsg.cpp)
|
||||
2010 - Server commands are broken and have been disabled (msgcmd.cpp)
|
||||
|
||||
3000 - Critical sections should be constructors using CCritSect
|
||||
3001 - Function 'DRLG_L4TransFix', decompile and check (Test: seed 2349839 level 13)
|
||||
|
|
Loading…
Reference in New Issue