Browse Source

Refactor OperateShrineGloomy

pull/8380/head
Eric Robinson 3 months ago
parent
commit
6a3ffef1ee
  1. 23
      Source/objects.cpp

23
Source/objects.cpp

@ -2331,7 +2331,21 @@ void OperateShrineGloomy(Player &player)
if (&player != MyPlayer)
return;
// Increment armor class by 2 and decrements max damage by 1.
auto clampU8 = [](int v) {
return std::clamp(v, 0, 255);
};
auto incAC = [&](Item &item, int delta) {
item._iAC = clampU8(item._iAC + delta);
};
auto decMaxDam = [&](Item &item) {
const int minDam = static_cast<int>(item._iMinDam);
const int maxDam = static_cast<int>(item._iMaxDam);
const int newMax = std::max(maxDam - 1, minDam);
item._iMaxDam = static_cast<uint8_t>(clampU8(newMax));
};
for (Item &item : PlayerItemsRange(player)) {
switch (item._itype) {
case ItemType::Sword:
@ -2339,16 +2353,14 @@ void OperateShrineGloomy(Player &player)
case ItemType::Bow:
case ItemType::Mace:
case ItemType::Staff:
item._iMaxDam--;
if (item._iMaxDam < item._iMinDam)
item._iMaxDam = item._iMinDam;
decMaxDam(item);
break;
case ItemType::Shield:
case ItemType::Helm:
case ItemType::LightArmor:
case ItemType::MediumArmor:
case ItemType::HeavyArmor:
item._iAC += 2;
incAC(item, 2);
break;
default:
break;
@ -2356,7 +2368,6 @@ void OperateShrineGloomy(Player &player)
}
CalcPlrInv(player, true);
InitDiabloMsg(EMSG_SHRINE_GLOOMY);
}

Loading…
Cancel
Save