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

Function CreatePlayer

Source/player.cpp:530–683  ·  view source on GitHub ↗

* @param c plr_classes value */

Source from the content-addressed store, hash-verified

528 * @param c plr_classes value
529 */
530void 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) {

Callers 1

pfile_ui_save_createFunction · 0.85

Calls 4

ClearPlrRVarsFunction · 0.85
SetRndSeedFunction · 0.85
app_fatalFunction · 0.85
InitDungMsgsFunction · 0.85

Tested by

no test coverage detected