From 035d34293a4c8a0a1298913a86deb37975ed8b36 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sun, 23 Sep 2018 03:14:25 +0200 Subject: [PATCH] Clean up PlayDungMsgs --- Source/player.cpp | 205 +++++++++++----------------------------------- 1 file changed, 50 insertions(+), 155 deletions(-) diff --git a/Source/player.cpp b/Source/player.cpp index 811497656..e9d74056f 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -4802,164 +4802,59 @@ void __fastcall InitDungMsgs(int pnum) void __cdecl PlayDungMsgs() { - int v0; // eax - 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 ) - { + if ( (DWORD)myplr >= MAX_PLRS ) { TermMsg("PlayDungMsgs: illegal player %d", myplr); - v0 = myplr; } - switch ( currlevel ) - { - case 1u: - v1 = v0; - if ( !plr[v1]._pLvlVisited[1] && gbMaxPlayers == currlevel ) - { - v2 = plr[v1].pDungMsgs; - if ( !(v2 & 1) ) - { - v3 = plr[v1]._pClass; - sfxdelay = 40; - if ( v3 ) - { - if ( v3 == 1 ) - { - sfxdnum = PS_ROGUE97; - } - else if ( v3 == 2 ) - { - sfxdnum = PS_MAGE97; - } - } - else - { - sfxdnum = PS_WARR97; - } - v4 = v2 | 1; -LABEL_14: - plr[v1].pDungMsgs = v4; - return; - } - } - break; - case 5u: - v1 = v0; - if ( !plr[v1]._pLvlVisited[5] && gbMaxPlayers == 1 ) - { - v5 = plr[v1].pDungMsgs; - if ( !(v5 & 2) ) - { - v6 = plr[v1]._pClass; - sfxdelay = 40; - if ( v6 ) - { - if ( v6 == 1 ) - { - sfxdnum = PS_ROGUE96; - } - else if ( v6 == 2 ) - { - 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; + + if ( currlevel == 1 && !plr[myplr]._pLvlVisited[1] && gbMaxPlayers == 1 && !(plr[myplr].pDungMsgs & 0x1) ) { + sfxdelay = 40; + if ( plr[myplr]._pClass == PC_WARRIOR ) { + sfxdnum = PS_WARR97; + } else if ( plr[myplr]._pClass == PC_ROGUE ) { + sfxdnum = PS_ROGUE97; + } else if ( plr[myplr]._pClass == PC_SORCERER ) { + sfxdnum = PS_MAGE97; + } + plr[myplr].pDungMsgs = plr[myplr].pDungMsgs | 0x1; + } else if ( currlevel == 5 && !plr[myplr]._pLvlVisited[5] && gbMaxPlayers == 1 && !(plr[myplr].pDungMsgs & 0x2) ) { + sfxdelay = 40; + if ( plr[myplr]._pClass == PC_WARRIOR ) { + sfxdnum = PS_WARR96B; + } else if ( plr[myplr]._pClass == PC_ROGUE ) { + sfxdnum = PS_ROGUE96; + } else if ( plr[myplr]._pClass == PC_SORCERER ) { + sfxdnum = PS_MAGE96; + } + plr[myplr].pDungMsgs |= 0x2; + } else if ( currlevel == 9 && !plr[myplr]._pLvlVisited[9] && gbMaxPlayers == 1 && !(plr[myplr].pDungMsgs & 0x4) ) { + sfxdelay = 40; + if ( plr[myplr]._pClass == PC_WARRIOR ) { + sfxdnum = PS_WARR98; + } else if ( plr[myplr]._pClass == PC_ROGUE ) { + sfxdnum = PS_ROGUE98; + } else if ( plr[myplr]._pClass == PC_SORCERER ) { + sfxdnum = PS_MAGE98; + } + plr[myplr].pDungMsgs |= 0x4; + } else if ( currlevel == 13 && !plr[myplr]._pLvlVisited[13] && gbMaxPlayers == 1 && !(plr[myplr].pDungMsgs & 0x8) ) { + sfxdelay = 40; + if ( plr[myplr]._pClass == PC_WARRIOR ) { + sfxdnum = PS_WARR99; + } else if ( plr[myplr]._pClass == PC_ROGUE ) { + sfxdnum = PS_ROGUE99; + } else if ( plr[myplr]._pClass == PC_SORCERER ) { + sfxdnum = PS_MAGE99; + } + plr[myplr].pDungMsgs |= 0x8; + } else if ( currlevel == 16 && !plr[myplr]._pLvlVisited[15] && gbMaxPlayers == 1 && !(plr[myplr].pDungMsgs & 0x10) ) { + sfxdelay = 40; + if ( plr[myplr]._pClass == PC_WARRIOR || plr[myplr]._pClass == PC_ROGUE || plr[myplr]._pClass == PC_SORCERER ) { + sfxdnum = PS_DIABLVLINT; + } + plr[myplr].pDungMsgs |= 0x10; + } else { + sfxdelay = 0; } - sfxdelay = 0; } // 52A554: using guessed type int sfxdelay; // 679660: using guessed type char gbMaxPlayers;