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