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

Function InitPlayer

Source/player.cpp:837–948  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

835}
836
837void 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 {

Callers 2

LoadGameLevelFunction · 0.85
UnPackPlayerFunction · 0.85

Calls 9

app_fatalFunction · 0.85
ClearPlrRVarsFunction · 0.85
SetPlrAnimsFunction · 0.85
ClearPlrPVarsFunction · 0.85
NewPlrAnimFunction · 0.85
random_Function · 0.85
PosOkPlayerFunction · 0.85
AddLightFunction · 0.85
AddVisionFunction · 0.85

Tested by

no test coverage detected