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

Function ValidatePlayer

Source/player.cpp:3359–3409  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

3357}
3358
3359void ValidatePlayer()
3360{
3361 __int64 msk;
3362 int gt, pc, i, b;
3363
3364 msk = 0;
3365
3366 if ((DWORD)myplr >= MAX_PLRS) {
3367 app_fatal("ValidatePlayer: illegal player %d", myplr);
3368 }
3369 if (plr[myplr]._pLevel > MAXCHARLEVEL - 1)
3370 plr[myplr]._pLevel = MAXCHARLEVEL - 1;
3371 if (plr[myplr]._pExperience > plr[myplr]._pNextExper)
3372 plr[myplr]._pExperience = plr[myplr]._pNextExper;
3373
3374 gt = 0;
3375 for (i = 0; i < plr[myplr]._pNumInv; i++) {
3376 if (plr[myplr].InvList[i]._itype == ITYPE_GOLD) {
3377 if (plr[myplr].InvList[i]._ivalue > GOLD_MAX_LIMIT) {
3378 plr[myplr].InvList[i]._ivalue = GOLD_MAX_LIMIT;
3379 }
3380 gt += plr[myplr].InvList[i]._ivalue;
3381 }
3382 }
3383 if (gt != plr[myplr]._pGold)
3384 plr[myplr]._pGold = gt;
3385
3386 pc = plr[myplr]._pClass;
3387 if (plr[myplr]._pBaseStr > MaxStats[pc][ATTRIB_STR]) {
3388 plr[myplr]._pBaseStr = MaxStats[pc][ATTRIB_STR];
3389 }
3390 if (plr[myplr]._pBaseMag > MaxStats[pc][ATTRIB_MAG]) {
3391 plr[myplr]._pBaseMag = MaxStats[pc][ATTRIB_MAG];
3392 }
3393 if (plr[myplr]._pBaseDex > MaxStats[pc][ATTRIB_DEX]) {
3394 plr[myplr]._pBaseDex = MaxStats[pc][ATTRIB_DEX];
3395 }
3396 if (plr[myplr]._pBaseVit > MaxStats[pc][ATTRIB_VIT]) {
3397 plr[myplr]._pBaseVit = MaxStats[pc][ATTRIB_VIT];
3398 }
3399
3400 for (b = 1; b < MAX_SPELLS; b++) {
3401 if (spelldata[b].sBookLvl != -1) {
3402 msk |= (__int64)1 << (b - 1);
3403 if (plr[myplr]._pSplLvl[b] > 15)
3404 plr[myplr]._pSplLvl[b] = 15;
3405 }
3406 }
3407
3408 plr[myplr]._pMemSpells &= msk;
3409}
3410
3411void ProcessPlayers()
3412{

Callers 1

ProcessPlayersFunction · 0.85

Calls 1

app_fatalFunction · 0.85

Tested by

no test coverage detected