| 835 | } |
| 836 | |
| 837 | void InitPlayer(int pnum, BOOL FirstTime) |
| 838 | { |
| 839 | DWORD i; |
| 840 | |
| 841 | if ((DWORD)pnum >= MAX_PLRS) { |
| 842 | app_fatal("InitPlayer: illegal player %d", pnum); |
| 843 | } |
| 844 | |
| 845 | ClearPlrRVars(&plr[pnum]); |
| 846 | |
| 847 | if (FirstTime) { |
| 848 | plr[pnum]._pRSpell = SPL_INVALID; |
| 849 | plr[pnum]._pSBkSpell = SPL_INVALID; |
| 850 | plr[pnum]._pSpell = SPL_INVALID; |
| 851 | plr[pnum]._pRSplType = RSPLTYPE_INVALID; |
| 852 | plr[pnum]._pSplType = RSPLTYPE_INVALID; |
| 853 | if ((plr[pnum]._pgfxnum & 0xF) == ANIM_ID_BOW) { |
| 854 | plr[pnum]._pwtype = WT_RANGED; |
| 855 | } else { |
| 856 | plr[pnum]._pwtype = WT_MELEE; |
| 857 | } |
| 858 | plr[pnum].pManaShield = FALSE; |
| 859 | } |
| 860 | |
| 861 | if (plr[pnum].plrlevel == currlevel || leveldebug) { |
| 862 | |
| 863 | SetPlrAnims(pnum); |
| 864 | |
| 865 | plr[pnum]._pxoff = 0; |
| 866 | plr[pnum]._pyoff = 0; |
| 867 | plr[pnum]._pxvel = 0; |
| 868 | plr[pnum]._pyvel = 0; |
| 869 | |
| 870 | ClearPlrPVars(pnum); |
| 871 | |
| 872 | if (plr[pnum]._pHitPoints >> 6 > 0) { |
| 873 | plr[pnum]._pmode = PM_STAND; |
| 874 | NewPlrAnim(pnum, plr[pnum]._pNAnim[DIR_S], plr[pnum]._pNFrames, 3, plr[pnum]._pNWidth); |
| 875 | plr[pnum]._pAnimFrame = random_(2, plr[pnum]._pNFrames - 1) + 1; |
| 876 | plr[pnum]._pAnimCnt = random_(2, 3); |
| 877 | } else { |
| 878 | plr[pnum]._pmode = PM_DEATH; |
| 879 | NewPlrAnim(pnum, plr[pnum]._pDAnim[DIR_S], plr[pnum]._pDFrames, 1, plr[pnum]._pDWidth); |
| 880 | plr[pnum]._pAnimFrame = plr[pnum]._pAnimLen - 1; |
| 881 | plr[pnum]._pVar8 = 2 * plr[pnum]._pAnimLen; |
| 882 | } |
| 883 | |
| 884 | plr[pnum]._pdir = DIR_S; |
| 885 | plr[pnum]._peflag = 0; |
| 886 | |
| 887 | if (pnum == myplr) { |
| 888 | if (!FirstTime || currlevel != 0) { |
| 889 | plr[pnum].WorldX = ViewX; |
| 890 | plr[pnum].WorldY = ViewY; |
| 891 | } |
| 892 | plr[pnum]._ptargx = plr[pnum].WorldX; |
| 893 | plr[pnum]._ptargy = plr[pnum].WorldY; |
| 894 | } else { |
no test coverage detected