| 3357 | } |
| 3358 | |
| 3359 | void 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 | |
| 3411 | void ProcessPlayers() |
| 3412 | { |
no test coverage detected