* @param c plr_classes value */
| 528 | * @param c plr_classes value |
| 529 | */ |
| 530 | void CreatePlayer(int pnum, char c) |
| 531 | { |
| 532 | char val; |
| 533 | int hp, mana; |
| 534 | int i; |
| 535 | |
| 536 | ClearPlrRVars(&plr[pnum]); |
| 537 | SetRndSeed(SDL_GetTicks()); |
| 538 | |
| 539 | if ((DWORD)pnum >= MAX_PLRS) { |
| 540 | app_fatal("CreatePlayer: illegal player %d", pnum); |
| 541 | } |
| 542 | plr[pnum]._pClass = c; |
| 543 | |
| 544 | val = StrengthTbl[c]; |
| 545 | if (val < 0) { |
| 546 | val = 0; |
| 547 | } |
| 548 | plr[pnum]._pStrength = val; |
| 549 | plr[pnum]._pBaseStr = val; |
| 550 | |
| 551 | val = MagicTbl[c]; |
| 552 | if (val < 0) { |
| 553 | val = 0; |
| 554 | } |
| 555 | plr[pnum]._pMagic = val; |
| 556 | plr[pnum]._pBaseMag = val; |
| 557 | |
| 558 | val = DexterityTbl[c]; |
| 559 | if (val < 0) { |
| 560 | val = 0; |
| 561 | } |
| 562 | plr[pnum]._pDexterity = val; |
| 563 | plr[pnum]._pBaseDex = val; |
| 564 | |
| 565 | val = VitalityTbl[c]; |
| 566 | if (val < 0) { |
| 567 | val = 0; |
| 568 | } |
| 569 | plr[pnum]._pVitality = val; |
| 570 | plr[pnum]._pBaseVit = val; |
| 571 | |
| 572 | plr[pnum]._pStatPts = 0; |
| 573 | plr[pnum].pTownWarps = 0; |
| 574 | plr[pnum].pDungMsgs = 0; |
| 575 | plr[pnum].pLvlLoad = 0; |
| 576 | plr[pnum].pDiabloKillLevel = 0; |
| 577 | |
| 578 | if (c == PC_ROGUE) { |
| 579 | plr[pnum]._pDamageMod = plr[pnum]._pLevel * (plr[pnum]._pStrength + plr[pnum]._pDexterity) / 200; |
| 580 | } else { |
| 581 | plr[pnum]._pDamageMod = plr[pnum]._pStrength * plr[pnum]._pLevel / 100; |
| 582 | } |
| 583 | |
| 584 | plr[pnum]._pBaseToBlk = ToBlkTbl[c]; |
| 585 | |
| 586 | plr[pnum]._pHitPoints = (val + 10) << 6; |
| 587 | if (c == PC_WARRIOR) { |
no test coverage detected