MCPcopy Create free account
hub / github.com/diasurgical/devilution / NextPlrLevel

Function NextPlrLevel

Source/player.cpp:700–754  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

698}
699
700void NextPlrLevel(int pnum)
701{
702 int hp, mana;
703
704 if ((DWORD)pnum >= MAX_PLRS) {
705 app_fatal("NextPlrLevel: illegal player %d", pnum);
706 }
707
708 plr[pnum]._pLevel++;
709 plr[pnum]._pMaxLvl++;
710
711 if (CalcStatDiff(pnum) < 5) {
712 plr[pnum]._pStatPts = CalcStatDiff(pnum);
713 } else {
714 plr[pnum]._pStatPts += 5;
715 }
716
717 plr[pnum]._pNextExper = ExpLvlsTbl[plr[pnum]._pLevel];
718
719 hp = plr[pnum]._pClass == PC_SORCERER ? 64 : 128;
720 if (gbMaxPlayers == 1) {
721 hp++;
722 }
723 plr[pnum]._pMaxHP += hp;
724 plr[pnum]._pHitPoints = plr[pnum]._pMaxHP;
725 plr[pnum]._pMaxHPBase += hp;
726 plr[pnum]._pHPBase = plr[pnum]._pMaxHPBase;
727
728 if (pnum == myplr) {
729 drawhpflag = TRUE;
730 }
731
732 if (plr[pnum]._pClass == PC_WARRIOR)
733 mana = 64;
734 else
735 mana = 128;
736
737 if (gbMaxPlayers == 1) {
738 mana++;
739 }
740 plr[pnum]._pMaxMana += mana;
741 plr[pnum]._pMaxManaBase += mana;
742
743 if (!(plr[pnum]._pIFlags & ISPL_NOMANA)) {
744 plr[pnum]._pMana = plr[pnum]._pMaxMana;
745 plr[pnum]._pManaBase = plr[pnum]._pMaxManaBase;
746 }
747
748 if (pnum == myplr) {
749 drawmanaflag = TRUE;
750 }
751
752 if (sgbControllerActive)
753 FocusOnCharInfo();
754}
755
756void AddPlrExperience(int pnum, int lvl, int exp)
757{

Callers 2

On_CHEAT_EXPERIENCEFunction · 0.85
AddPlrExperienceFunction · 0.85

Calls 3

app_fatalFunction · 0.85
CalcStatDiffFunction · 0.85
FocusOnCharInfoFunction · 0.85

Tested by

no test coverage detected