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

Function GoldAutoPlace

Source/inv.cpp:551–614  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

549}
550
551BOOL GoldAutoPlace(int pnum)
552{
553 BOOL done;
554 int i, ii;
555 int xx, yy;
556
557 done = FALSE;
558 for (i = 0; i < plr[pnum]._pNumInv && !done; i++) {
559 if (plr[pnum].InvList[i]._itype == ITYPE_GOLD) {
560 if (plr[pnum].HoldItem._ivalue + plr[pnum].InvList[i]._ivalue <= GOLD_MAX_LIMIT) {
561 plr[pnum].InvList[i]._ivalue = plr[pnum].HoldItem._ivalue + plr[pnum].InvList[i]._ivalue;
562 if (plr[pnum].InvList[i]._ivalue >= GOLD_MEDIUM_LIMIT)
563 plr[pnum].InvList[i]._iCurs = ICURS_GOLD_LARGE;
564 else if (plr[pnum].InvList[i]._ivalue <= GOLD_SMALL_LIMIT)
565 plr[pnum].InvList[i]._iCurs = ICURS_GOLD_SMALL;
566 else
567 plr[pnum].InvList[i]._iCurs = ICURS_GOLD_MEDIUM;
568 plr[pnum]._pGold = CalculateGold(pnum);
569 done = TRUE;
570 }
571 }
572 }
573 if (done)
574 return done;
575
576 for (i = 0; i < plr[pnum]._pNumInv && !done; i++) {
577 if (plr[pnum].InvList[i]._itype == ITYPE_GOLD && plr[pnum].InvList[i]._ivalue < GOLD_MAX_LIMIT) {
578 if (plr[pnum].HoldItem._ivalue + plr[pnum].InvList[i]._ivalue <= GOLD_MAX_LIMIT) {
579 plr[pnum].InvList[i]._ivalue = plr[pnum].HoldItem._ivalue + plr[pnum].InvList[i]._ivalue;
580 if (plr[pnum].InvList[i]._ivalue >= GOLD_MEDIUM_LIMIT)
581 plr[pnum].InvList[i]._iCurs = ICURS_GOLD_LARGE;
582 else if (plr[pnum].InvList[i]._ivalue <= GOLD_SMALL_LIMIT)
583 plr[pnum].InvList[i]._iCurs = ICURS_GOLD_SMALL;
584 else
585 plr[pnum].InvList[i]._iCurs = ICURS_GOLD_MEDIUM;
586 plr[pnum]._pGold = CalculateGold(pnum);
587 done = TRUE;
588 }
589 }
590 }
591 if (done)
592 return done;
593
594 for (i = 39; i >= 0 && !done; i--) {
595 yy = 10 * (i / 10);
596 xx = i % 10;
597 if (!plr[pnum].InvGrid[xx + yy]) {
598 ii = plr[pnum]._pNumInv;
599 plr[pnum].InvList[ii] = plr[pnum].HoldItem;
600 plr[pnum]._pNumInv = plr[pnum]._pNumInv + 1;
601 plr[pnum].InvGrid[xx + yy] = plr[pnum]._pNumInv;
602 if (plr[pnum].HoldItem._ivalue >= GOLD_MEDIUM_LIMIT)
603 plr[pnum].InvList[ii]._iCurs = ICURS_GOLD_LARGE;
604 else if (plr[pnum].HoldItem._ivalue <= GOLD_SMALL_LIMIT)
605 plr[pnum].InvList[ii]._iCurs = ICURS_GOLD_SMALL;
606 else
607 plr[pnum].InvList[ii]._iCurs = ICURS_GOLD_MEDIUM;
608 plr[pnum]._pGold = CalculateGold(pnum);

Callers 1

AutoGetItemFunction · 0.85

Calls 1

CalculateGoldFunction · 0.85

Tested by

no test coverage detected