From 0eeb7af0f20dd4fa71cf53b41752aefd43f8d40b Mon Sep 17 00:00:00 2001 From: Juliano Leal Goncalves Date: Mon, 20 Sep 2021 01:31:26 -0300 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Leverage=20'Damage'=20for?= =?UTF-8?q?=20'=5FiL[Min|Max]Dam'=20'Item'=20fields?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/items.cpp | 37 +++++++++++++++---------------------- Source/items.h | 3 +-- Source/loadsave.cpp | 10 ++++++---- test/pack_test.cpp | 4 ++-- 4 files changed, 24 insertions(+), 30 deletions(-) diff --git a/Source/items.cpp b/Source/items.cpp index c10a2cf12..ef616d548 100644 --- a/Source/items.cpp +++ b/Source/items.cpp @@ -833,14 +833,12 @@ int SaveItemPower(Item &item, const ItemPower &power) item._iFlags |= ISPL_FIREDAM; item._iFlags &= ~ISPL_LIGHTDAM; item._iFDamage = { power.param1, power.param2 }; - item._iLMinDam = 0; - item._iLMaxDam = 0; + item._iLDamage = { 0 }; break; case IPL_LIGHTDAM: item._iFlags |= ISPL_LIGHTDAM; item._iFlags &= ~ISPL_FIREDAM; - item._iLMinDam = power.param1; - item._iLMaxDam = power.param2; + item._iLDamage = { power.param1, power.param2 }; item._iFDamage = { 0 }; break; case IPL_STR: @@ -929,21 +927,18 @@ int SaveItemPower(Item &item, const ItemPower &power) item._iFlags |= ISPL_FIRE_ARROWS; item._iFlags &= ~ISPL_LIGHT_ARROWS; item._iFDamage = { power.param1, power.param2 }; - item._iLMinDam = 0; - item._iLMaxDam = 0; + item._iLDamage = { 0 }; break; case IPL_LIGHT_ARROWS: item._iFlags |= ISPL_LIGHT_ARROWS; item._iFlags &= ~ISPL_FIRE_ARROWS; - item._iLMinDam = power.param1; - item._iLMaxDam = power.param2; + item._iLDamage = { power.param1, power.param2 }; item._iFDamage = { 0 }; break; case IPL_FIREBALL: item._iFlags |= (ISPL_LIGHT_ARROWS | ISPL_FIRE_ARROWS); item._iFDamage = { power.param1, power.param2 }; - item._iLMinDam = 0; - item._iLMaxDam = 0; + item._iLDamage = { 0 }; break; case IPL_THORNS: item._iFlags |= ISPL_THORNS; @@ -1048,14 +1043,12 @@ int SaveItemPower(Item &item, const ItemPower &power) case IPL_ADDACLIFE: item._iFlags |= (ISPL_LIGHT_ARROWS | ISPL_FIRE_ARROWS); item._iFDamage = { power.param1, power.param2 }; - item._iLMinDam = 1; - item._iLMaxDam = 0; + item._iLDamage = { 1, 0 }; break; case IPL_ADDMANAAC: item._iFlags |= (ISPL_LIGHTDAM | ISPL_FIREDAM); item._iFDamage = { power.param1, power.param2 }; - item._iLMinDam = 2; - item._iLMaxDam = 0; + item._iLDamage = { 2, 0 }; break; case IPL_FIRERESCLVL: item._iPLFR = 30 - Players[MyPlayerId]._pLevel; @@ -2689,8 +2682,8 @@ void CalcPlrItemVals(Player &player, bool loadgfx) enac += item._iPLEnAc; fmin += item._iFDamage.minValue; fmax += item._iFDamage.maxValue; - lmin += item._iLMinDam; - lmax += item._iLMaxDam; + lmin += item._iLDamage.minValue; + lmax += item._iLDamage.maxValue; } } } @@ -3880,10 +3873,10 @@ void PrintItemPower(char plidx, Item *x) strcpy(tempstr, fmt::format(_("Fire hit damage: {:d}-{:d}"), x->_iFDamage.minValue, x->_iFDamage.maxValue).c_str()); break; case IPL_LIGHTDAM: - if (x->_iLMinDam == x->_iLMaxDam) - strcpy(tempstr, fmt::format(_("Lightning hit damage: {:d}"), x->_iLMinDam).c_str()); + if (x->_iLDamage.IsFixed()) + strcpy(tempstr, fmt::format(_("Lightning hit damage: {:d}"), x->_iLDamage.minValue).c_str()); else - strcpy(tempstr, fmt::format(_("Lightning hit damage: {:d}-{:d}"), x->_iLMinDam, x->_iLMaxDam).c_str()); + strcpy(tempstr, fmt::format(_("Lightning hit damage: {:d}-{:d}"), x->_iLDamage.minValue, x->_iLDamage.maxValue).c_str()); break; case IPL_STR: case IPL_STR_CURSE: @@ -3942,10 +3935,10 @@ void PrintItemPower(char plidx, Item *x) strcpy(tempstr, fmt::format(_("fire arrows damage: {:d}-{:d}"), x->_iFDamage.minValue, x->_iFDamage.maxValue).c_str()); break; case IPL_LIGHT_ARROWS: - if (x->_iLMinDam == x->_iLMaxDam) - strcpy(tempstr, fmt::format(_("lightning arrows damage {:d}"), x->_iLMinDam).c_str()); + if (x->_iLDamage.IsFixed()) + strcpy(tempstr, fmt::format(_("lightning arrows damage {:d}"), x->_iLDamage.minValue).c_str()); else - strcpy(tempstr, fmt::format(_("lightning arrows damage {:d}-{:d}"), x->_iLMinDam, x->_iLMaxDam).c_str()); + strcpy(tempstr, fmt::format(_("lightning arrows damage {:d}-{:d}"), x->_iLDamage.minValue, x->_iLDamage.maxValue).c_str()); break; case IPL_FIREBALL: if (x->_iFDamage.IsFixed()) diff --git a/Source/items.h b/Source/items.h index 6c9e8e4c9..e02564b78 100644 --- a/Source/items.h +++ b/Source/items.h @@ -224,8 +224,7 @@ struct Item { /** Unique item ID, used as an index into UniqueItemList */ int _iUid; Damage _iFDamage; - int16_t _iLMinDam; - int16_t _iLMaxDam; + Damage _iLDamage; int16_t _iPLEnAc; enum item_effect_type _iPrePower; enum item_effect_type _iSufPower; diff --git a/Source/loadsave.cpp b/Source/loadsave.cpp index bbca308b3..bdea98c5f 100644 --- a/Source/loadsave.cpp +++ b/Source/loadsave.cpp @@ -272,8 +272,10 @@ void LoadItemData(LoadHelper &file, Item &item) auto maxFireDamage = file.NextLE(); item._iFDamage = { minFireDamage, maxFireDamage }; - item._iLMinDam = file.NextLE(); - item._iLMaxDam = file.NextLE(); + auto minLightningDamage = file.NextLE(); + auto maxLightningDamage = file.NextLE(); + item._iLDamage = { minLightningDamage, maxLightningDamage }; + item._iPLEnAc = file.NextLE(); item._iPrePower = static_cast(file.NextLE()); item._iSufPower = static_cast(file.NextLE()); @@ -957,8 +959,8 @@ void SaveItem(SaveHelper &file, const Item &item) file.WriteLE(item._iUid); file.WriteLE(item._iFDamage.minValue); file.WriteLE(item._iFDamage.maxValue); - file.WriteLE(item._iLMinDam); - file.WriteLE(item._iLMaxDam); + file.WriteLE(item._iLDamage.minValue); + file.WriteLE(item._iLDamage.maxValue); file.WriteLE(item._iPLEnAc); file.WriteLE(item._iPrePower); file.WriteLE(item._iSufPower); diff --git a/test/pack_test.cpp b/test/pack_test.cpp index 2ef4320c3..60967ecbb 100644 --- a/test/pack_test.cpp +++ b/test/pack_test.cpp @@ -122,8 +122,8 @@ static void CompareItems(const Item *item1, const TestItemStruct *item2) EXPECT_EQ(item1->_iUid, item2->_iUid); EXPECT_EQ(item1->_iFDamage.minValue, item2->_iFMinDam); EXPECT_EQ(item1->_iFDamage.maxValue, item2->_iFMaxDam); - EXPECT_EQ(item1->_iLMinDam, item2->_iLMinDam); - EXPECT_EQ(item1->_iLMaxDam, item2->_iLMaxDam); + EXPECT_EQ(item1->_iLDamage.minValue, item2->_iLMinDam); + EXPECT_EQ(item1->_iLDamage.maxValue, item2->_iLMaxDam); EXPECT_EQ(item1->_iPrePower, item2->_iPrePower); EXPECT_EQ(item1->_iSufPower, item2->_iSufPower); EXPECT_EQ(item1->_iMinStr, item2->_iMinStr);