| 698 | } |
| 699 | |
| 700 | void 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 | |
| 756 | void AddPlrExperience(int pnum, int lvl, int exp) |
| 757 | { |
no test coverage detected