diff --git a/Source/player.cpp b/Source/player.cpp index d557af5ea..1b0babfab 100644 --- a/Source/player.cpp +++ b/Source/player.cpp @@ -871,8 +871,11 @@ void __fastcall NextPlrLevel(int pnum) TermMsg("NextPlrLevel: illegal player %d", pnum); } - char l = ++plr[pnum]._pLevel; + plr[pnum]._pLevel++; + char l = plr[pnum]._pLevel; + plr[pnum]._pMaxLvl++; + if ( CalcStatDiff(pnum) < 5 ) { plr[pnum]._pStatPts = CalcStatDiff(pnum); } else { @@ -882,6 +885,7 @@ void __fastcall NextPlrLevel(int pnum) plr[pnum]._pNextExper = ExpLvlsTbl[l]; char c = plr[pnum]._pClass; + int hp = c == PC_SORCERER ? 64 : 128; if ( gbMaxPlayers == 1 ) { hp++; @@ -890,19 +894,23 @@ void __fastcall NextPlrLevel(int pnum) plr[pnum]._pHitPoints = plr[pnum]._pMaxHP; plr[pnum]._pMaxHPBase += hp; plr[pnum]._pHPBase = plr[pnum]._pMaxHPBase; + if ( pnum == myplr ) { drawhpflag = 1; } + int mana = c != PC_WARRIOR ? 128 : 64; if ( gbMaxPlayers == 1 ) { - ++mana; + mana++; } plr[pnum]._pMaxMana += mana; plr[pnum]._pMaxManaBase += mana; + if ( !(plr[pnum]._pIFlags & ISPL_NOMANA) ) { plr[pnum]._pMana = plr[pnum]._pMaxMana; plr[pnum]._pManaBase = plr[pnum]._pMaxManaBase; } + if ( pnum == myplr ) { drawmanaflag = 1; }