MCPcopy Create free account
hub / github.com/diasurgical/DevilutionX / SaveItemPower

Function SaveItemPower

Source/items.cpp:719–1060  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

717}
718
719int SaveItemPower(const Player &player, Item &item, ItemPower &power)
720{
721 if (!gbIsHellfire) {
722 if (power.type == IPL_TARGAC) {
723 power.param1 = 1 << power.param1;
724 power.param2 = 3 << power.param2;
725 }
726 }
727
728 int r = RndPL(power.param1, power.param2);
729
730 switch (power.type) {
731 case IPL_TOHIT:
732 item._iPLToHit += r;
733 break;
734 case IPL_TOHIT_CURSE:
735 item._iPLToHit -= r;
736 break;
737 case IPL_DAMP:
738 item._iPLDam += r;
739 break;
740 case IPL_DAMP_CURSE:
741 item._iPLDam -= r;
742 break;
743 case IPL_DOPPELGANGER:
744 item._iDamAcFlags |= ItemSpecialEffectHf::Doppelganger;
745 [[fallthrough]];
746 case IPL_TOHIT_DAMP:
747 r = RndPL(power.param1, power.param2);
748 item._iPLDam += r;
749 item._iPLToHit += CalculateToHitBonus(power.param1);
750 break;
751 case IPL_TOHIT_DAMP_CURSE:
752 item._iPLDam -= r;
753 item._iPLToHit += CalculateToHitBonus(-power.param1);
754 break;
755 case IPL_ACP:
756 item._iPLAC += r;
757 break;
758 case IPL_ACP_CURSE:
759 item._iPLAC -= r;
760 break;
761 case IPL_SETAC:
762 item._iAC = r;
763 break;
764 case IPL_AC_CURSE:
765 item._iAC -= r;
766 break;
767 case IPL_FIRERES:
768 item._iPLFR += r;
769 break;
770 case IPL_LIGHTRES:
771 item._iPLLR += r;
772 break;
773 case IPL_MAGICRES:
774 item._iPLMR += r;
775 break;
776 case IPL_ALLRES:

Callers 2

SaveItemAffixFunction · 0.85
GetUniqueItemFunction · 0.85

Calls 3

RndPLFunction · 0.85
CalculateToHitBonusFunction · 0.85
RedrawComponentFunction · 0.85

Tested by

no test coverage detected