From 454705ea93d773952cc40c3f1ff056187cde2ec9 Mon Sep 17 00:00:00 2001 From: Anders Jenbo Date: Sun, 23 Sep 2018 09:59:40 +0200 Subject: [PATCH] Clean up ModifyPlr* (#324) --- Source/player.cpp | 130 +++++++++++++++++++--------------------------- 1 file changed, 52 insertions(+), 78 deletions(-) diff --git a/Source/player.cpp b/Source/player.cpp index 21a4b0ec4..de25820f0 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -4503,86 +4503,62 @@ void __fastcall CheckStats(int pnum) void __fastcall ModifyPlrStr(int pnum, int l) { - int v2; // esi - int v3; // edi - int v4; // esi - char v5; // dl - int v6; // ecx - int v7; // eax - int v8; // ebx - int v9; // eax - signed int v10; // ecx - int p; // [esp+8h] [ebp-4h] - - v2 = pnum; - v3 = l; - p = pnum; - if ( (unsigned int)pnum >= MAX_PLRS ) + if ( (DWORD)pnum >= MAX_PLRS ) { TermMsg("ModifyPlrStr: illegal player %d", pnum); - v4 = v2; - v5 = plr[v4]._pClass; - v6 = plr[v4]._pBaseStr; - v7 = MaxStats[v5][0]; - if ( v6 + v3 > v7 ) - v3 = v7 - v6; - plr[v4]._pBaseStr = v3 + v6; - plr[v4]._pStrength += v3; - v8 = plr[v4]._pStrength; - if ( v5 == 1 ) - { - v9 = plr[v4]._pLevel * (v8 + plr[v4]._pDexterity); - v10 = 200; } - else - { - v9 = v8 * plr[v4]._pLevel; - v10 = 100; + + int max = MaxStats[plr[pnum]._pClass][ATTRIB_STR]; + if ( plr[pnum]._pBaseStr + l > max ) { + l = max - plr[pnum]._pBaseStr; + } + + plr[pnum]._pStrength += l; + plr[pnum]._pBaseStr += l; + + if ( plr[pnum]._pClass == PC_ROGUE ) { + plr[pnum]._pDamageMod = plr[pnum]._pLevel * (plr[pnum]._pStrength + plr[pnum]._pDexterity) / 200; + } else { + plr[pnum]._pDamageMod = plr[pnum]._pLevel * plr[pnum]._pStrength / 100; + } + + CalcPlrInv(pnum, TRUE); + + if ( pnum == myplr ) { + NetSendCmdParam1(FALSE, CMD_SETSTR, plr[pnum]._pBaseStr); //60 } - plr[v4]._pDamageMod = v9 / v10; - CalcPlrInv(p, 1u); - if ( p == myplr ) - NetSendCmdParam1(0, CMD_SETSTR, plr[v4]._pBaseStr); } void __fastcall ModifyPlrMag(int pnum, int l) { - int v2; // esi - int v3; // edi - int v4; // esi - char v5; // dl - int v6; // ecx - int v7; // eax - int v8; // eax - int v9; // edi - int p; // [esp+8h] [ebp-4h] - - v2 = pnum; - v3 = l; - p = pnum; - if ( (unsigned int)pnum >= MAX_PLRS ) + if ( (DWORD)pnum >= MAX_PLRS ) { TermMsg("ModifyPlrMag: illegal player %d", pnum); - v4 = v2; - v5 = plr[v4]._pClass; - v6 = MaxStats[v5][1]; - v7 = plr[v4]._pBaseMag; - if ( v7 + v3 > v6 ) - v3 = v6 - v7; - plr[v4]._pMagic += v3; - v8 = v3 + v7; - v9 = v3 << 6; - plr[v4]._pBaseMag = v8; - if ( v5 == 2 ) - v9 *= 2; - plr[v4]._pMaxManaBase += v9; - plr[v4]._pMaxMana += v9; - if ( !(plr[v4]._pIFlags & 0x8000000) ) - { - plr[v4]._pManaBase += v9; - plr[v4]._pMana += v9; } - CalcPlrInv(p, 1u); - if ( p == myplr ) - NetSendCmdParam1(0, CMD_SETMAG, plr[v4]._pBaseMag); + + int max = MaxStats[plr[pnum]._pClass][ATTRIB_MAG]; + if ( plr[pnum]._pBaseMag + l > max ) { + l = max - plr[pnum]._pBaseMag; + } + + plr[pnum]._pMagic += l; + plr[pnum]._pBaseMag += l; + + int ms = l << 6; + if ( plr[pnum]._pClass == PC_SORCERER ) { + ms *= 2; + } + + plr[pnum]._pMaxManaBase += ms; + plr[pnum]._pMaxMana += ms; + if ( !(plr[pnum]._pIFlags & ISPL_NOMANA) ) { + plr[pnum]._pManaBase += ms; + plr[pnum]._pMana += ms; + } + + CalcPlrInv(pnum, TRUE); + + if ( pnum == myplr ) { + NetSendCmdParam1(FALSE, CMD_SETMAG, plr[pnum]._pBaseMag); + } } void __fastcall ModifyPlrDex(int pnum, int l) @@ -4592,21 +4568,20 @@ void __fastcall ModifyPlrDex(int pnum, int l) } int max = MaxStats[plr[pnum]._pClass][ATTRIB_DEX]; - if ( plr[pnum]._pBaseDex + l > max ) - { + if ( plr[pnum]._pBaseDex + l > max ) { l = max - plr[pnum]._pBaseDex; } plr[pnum]._pDexterity += l; plr[pnum]._pBaseDex += l; - CalcPlrInv(pnum, 1); + CalcPlrInv(pnum, TRUE); if ( plr[pnum]._pClass == PC_ROGUE ) { plr[pnum]._pDamageMod = plr[pnum]._pLevel * (plr[pnum]._pDexterity + plr[pnum]._pStrength) / 200; } if ( pnum == myplr ) { - NetSendCmdParam1(0, CMD_SETDEX, plr[pnum]._pBaseDex); + NetSendCmdParam1(FALSE, CMD_SETDEX, plr[pnum]._pBaseDex); } } @@ -4617,8 +4592,7 @@ void __fastcall ModifyPlrVit(int pnum, int l) } int max = MaxStats[plr[pnum]._pClass][ATTRIB_VIT]; - if ( plr[pnum]._pBaseVit + l > max ) - { + if ( plr[pnum]._pBaseVit + l > max ) { l = max - plr[pnum]._pBaseVit; } @@ -4721,7 +4695,7 @@ void __fastcall SetPlrVit(int pnum, int v) plr[pnum]._pBaseVit = v; int hp = v << 6; - if ( !_LOBYTE(plr[pnum]._pClass) ) { + if ( plr[pnum]._pClass == PC_WARRIOR ) { hp *= 2; }