Browse Source

Merge branch 'PlayDungMsgs' into nightly

pull/4/head
Robin Eklind 8 years ago
parent
commit
d5f9e097cc
  1. 205
      Source/player.cpp
  2. 9
      enums.h

205
Source/player.cpp

@ -4502,164 +4502,59 @@ void __fastcall InitDungMsgs(int pnum)
void __cdecl PlayDungMsgs() void __cdecl PlayDungMsgs()
{ {
int v0; // eax if ( (DWORD)myplr >= MAX_PLRS ) {
int v1; // eax
char v2; // cl
char v3; // dl
char v4; // cl
char v5; // cl
char v6; // dl
char v7; // cl
char v8; // dl
char v9; // cl
char v10; // dl
char v11; // cl
char v12; // dl
v0 = myplr;
if ( (unsigned int)myplr >= 4 )
{
TermMsg("PlayDungMsgs: illegal player %d", myplr); TermMsg("PlayDungMsgs: illegal player %d", myplr);
v0 = myplr;
} }
switch ( currlevel )
{ if ( currlevel == 1 && !plr[myplr]._pLvlVisited[1] && gbMaxPlayers == 1 && !(plr[myplr].pDungMsgs & DMSG_CATHEDRAL) ) {
case 1u: sfxdelay = 40;
v1 = v0; if ( plr[myplr]._pClass == PC_WARRIOR ) {
if ( !plr[v1]._pLvlVisited[1] && gbMaxPlayers == currlevel ) sfxdnum = PS_WARR97;
{ } else if ( plr[myplr]._pClass == PC_ROGUE ) {
v2 = plr[v1].pDungMsgs; sfxdnum = PS_ROGUE97;
if ( !(v2 & 1) ) } else if ( plr[myplr]._pClass == PC_SORCERER ) {
{ sfxdnum = PS_MAGE97;
v3 = plr[v1]._pClass; }
sfxdelay = 40; plr[myplr].pDungMsgs = plr[myplr].pDungMsgs | DMSG_CATHEDRAL;
if ( v3 ) } else if ( currlevel == 5 && !plr[myplr]._pLvlVisited[5] && gbMaxPlayers == 1 && !(plr[myplr].pDungMsgs & DMSG_CATACOMBS) ) {
{ sfxdelay = 40;
if ( v3 == 1 ) if ( plr[myplr]._pClass == PC_WARRIOR ) {
{ sfxdnum = PS_WARR96B;
sfxdnum = PS_ROGUE97; } else if ( plr[myplr]._pClass == PC_ROGUE ) {
} sfxdnum = PS_ROGUE96;
else if ( v3 == 2 ) } else if ( plr[myplr]._pClass == PC_SORCERER ) {
{ sfxdnum = PS_MAGE96;
sfxdnum = PS_MAGE97; }
} plr[myplr].pDungMsgs |= DMSG_CATACOMBS;
} } else if ( currlevel == 9 && !plr[myplr]._pLvlVisited[9] && gbMaxPlayers == 1 && !(plr[myplr].pDungMsgs & DMSG_CAVES) ) {
else sfxdelay = 40;
{ if ( plr[myplr]._pClass == PC_WARRIOR ) {
sfxdnum = PS_WARR97; sfxdnum = PS_WARR98;
} } else if ( plr[myplr]._pClass == PC_ROGUE ) {
v4 = v2 | 1; sfxdnum = PS_ROGUE98;
LABEL_14: } else if ( plr[myplr]._pClass == PC_SORCERER ) {
plr[v1].pDungMsgs = v4; sfxdnum = PS_MAGE98;
return; }
} plr[myplr].pDungMsgs |= DMSG_CAVES;
} } else if ( currlevel == 13 && !plr[myplr]._pLvlVisited[13] && gbMaxPlayers == 1 && !(plr[myplr].pDungMsgs & DMSG_HELL) ) {
break; sfxdelay = 40;
case 5u: if ( plr[myplr]._pClass == PC_WARRIOR ) {
v1 = v0; sfxdnum = PS_WARR99;
if ( !plr[v1]._pLvlVisited[5] && gbMaxPlayers == 1 ) } else if ( plr[myplr]._pClass == PC_ROGUE ) {
{ sfxdnum = PS_ROGUE99;
v5 = plr[v1].pDungMsgs; } else if ( plr[myplr]._pClass == PC_SORCERER ) {
if ( !(v5 & 2) ) sfxdnum = PS_MAGE99;
{ }
v6 = plr[v1]._pClass; plr[myplr].pDungMsgs |= DMSG_HELL;
sfxdelay = 40; } else if ( currlevel == 16 && !plr[myplr]._pLvlVisited[15] && gbMaxPlayers == 1 && !(plr[myplr].pDungMsgs & DMSG_DIABLO) ) {
if ( v6 ) sfxdelay = 40;
{ if ( plr[myplr]._pClass == PC_WARRIOR || plr[myplr]._pClass == PC_ROGUE || plr[myplr]._pClass == PC_SORCERER ) {
if ( v6 == 1 ) sfxdnum = PS_DIABLVLINT;
{ }
sfxdnum = PS_ROGUE96; plr[myplr].pDungMsgs |= DMSG_DIABLO;
} } else {
else if ( v6 == 2 ) sfxdelay = 0;
{
sfxdnum = PS_MAGE96;
}
}
else
{
sfxdnum = PS_WARR96B;
}
v4 = v5 | 2;
goto LABEL_14;
}
}
break;
case 9u:
v1 = v0;
if ( !plr[v1]._pLvlVisited[9] && gbMaxPlayers == 1 )
{
v7 = plr[v1].pDungMsgs;
if ( !(v7 & 4) )
{
v8 = plr[v1]._pClass;
sfxdelay = 40;
if ( v8 )
{
if ( v8 == 1 )
{
sfxdnum = PS_ROGUE98;
}
else if ( v8 == 2 )
{
sfxdnum = PS_MAGE98;
}
}
else
{
sfxdnum = PS_WARR98;
}
v4 = v7 | 4;
goto LABEL_14;
}
}
break;
case 13u:
v1 = v0;
if ( !plr[v1]._pLvlVisited[13] && gbMaxPlayers == 1 )
{
v9 = plr[v1].pDungMsgs;
if ( !(v9 & 8) )
{
v10 = plr[v1]._pClass;
sfxdelay = 40;
if ( v10 )
{
if ( v10 == 1 )
{
sfxdnum = PS_ROGUE99;
}
else if ( v10 == 2 )
{
sfxdnum = PS_MAGE99;
}
}
else
{
sfxdnum = PS_WARR99;
}
v4 = v9 | 8;
goto LABEL_14;
}
}
break;
case 16u:
v1 = v0;
if ( !plr[v1]._pLvlVisited[15] && gbMaxPlayers == 1 )
{
v11 = plr[v1].pDungMsgs;
if ( !(v11 & 0x10) )
{
v12 = plr[v1]._pClass;
sfxdelay = 40;
if ( !v12 || v12 == 1 || v12 == 2 )
sfxdnum = PS_DIABLVLINT;
v4 = v11 | 0x10;
goto LABEL_14;
}
}
break;
} }
sfxdelay = 0;
} }
// 52A554: using guessed type int sfxdelay; // 52A554: using guessed type int sfxdelay;
// 679660: using guessed type char gbMaxPlayers; // 679660: using guessed type char gbMaxPlayers;

9
enums.h

@ -1773,6 +1773,15 @@ enum dflag
DFLAG_EXPLORED = 0x80, DFLAG_EXPLORED = 0x80,
}; };
enum dungeon_message
{
DMSG_CATHEDRAL = 1 << 0,
DMSG_CATACOMBS = 1 << 1,
DMSG_CAVES = 1 << 2,
DMSG_HELL = 1 << 3,
DMSG_DIABLO = 1 << 4,
};
enum magic_type enum magic_type
{ {
STYPE_FIRE = 0x0, STYPE_FIRE = 0x0,

Loading…
Cancel
Save