From afc17ba754792066c94e8ee048f8db5647ea785a Mon Sep 17 00:00:00 2001 From: ALONSO Laurent Date: Thu, 4 Nov 2021 10:16:45 +0100 Subject: [PATCH] scenario.cpp: check item types before adding a default description, party.cpp: minor cleaninggs... --- src/scenario/scenario.cpp | 82 +++++++++++++++++++++++++++++++++++++++ src/universe/party.cpp | 7 ++-- 2 files changed, 86 insertions(+), 3 deletions(-) diff --git a/src/scenario/scenario.cpp b/src/scenario/scenario.cpp index 6c0f66fd..c1183b39 100644 --- a/src/scenario/scenario.cpp +++ b/src/scenario/scenario.cpp @@ -429,8 +429,90 @@ void cScenario::import_legacy(legacy::scen_item_data_type const &old){ scen_items.resize(400); StringList strings = *ResMgr::strings.get("legacy-items-desc"); + static eItemType const legacyTypes[399]={ + eItemType::GOLD, eItemType::FOOD, eItemType::FOOD, eItemType::FOOD, eItemType::PANTS, + eItemType::PANTS, eItemType::ARMOR, eItemType::ARMOR, eItemType::ARMOR, eItemType::THROWN_MISSILE, + eItemType::THROWN_MISSILE, eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, + eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, eItemType::TOOL, eItemType::TOOL, eItemType::NON_USE_OBJECT, + eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, + eItemType::TOOL, eItemType::TOOL, eItemType::SCROLL, eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, + eItemType::ARMOR, eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, + eItemType::ONE_HANDED, eItemType::TWO_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, + eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::TWO_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, + eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::TWO_HANDED, eItemType::TWO_HANDED, eItemType::TWO_HANDED, + eItemType::TWO_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, + eItemType::TWO_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, + eItemType::TWO_HANDED, eItemType::TWO_HANDED, eItemType::TWO_HANDED, eItemType::TWO_HANDED, eItemType::ONE_HANDED, + eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::TWO_HANDED, eItemType::ONE_HANDED, + eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::TWO_HANDED, eItemType::TWO_HANDED, + eItemType::TWO_HANDED, eItemType::TWO_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, + eItemType::ONE_HANDED, eItemType::TWO_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, + eItemType::ONE_HANDED, eItemType::TWO_HANDED, eItemType::TWO_HANDED, eItemType::TWO_HANDED, eItemType::TWO_HANDED, + eItemType::TWO_HANDED, eItemType::TWO_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, + eItemType::ONE_HANDED, eItemType::THROWN_MISSILE, eItemType::THROWN_MISSILE, eItemType::THROWN_MISSILE, eItemType::THROWN_MISSILE, + eItemType::THROWN_MISSILE, eItemType::THROWN_MISSILE, eItemType::THROWN_MISSILE, eItemType::ARROW, eItemType::ARROW, + eItemType::ARROW, eItemType::THROWN_MISSILE, eItemType::THROWN_MISSILE, eItemType::BOW, eItemType::BOW, + eItemType::BOW, eItemType::BOW, eItemType::CROSSBOW, eItemType::CROSSBOW, eItemType::CROSSBOW, + eItemType::BOLTS, eItemType::BOLTS, eItemType::BOLTS, eItemType::MISSILE_NO_AMMO, eItemType::MISSILE_NO_AMMO, + eItemType::ARMOR, eItemType::ARMOR, eItemType::ARMOR, eItemType::ARMOR, eItemType::ARMOR, + eItemType::ARMOR, eItemType::ARMOR, eItemType::ARMOR, eItemType::ARMOR, eItemType::ARMOR, + eItemType::ARMOR, eItemType::ARMOR, eItemType::ARMOR, eItemType::ARMOR, eItemType::ARMOR, + eItemType::ARMOR, eItemType::ARMOR, eItemType::ARMOR, eItemType::ARMOR, eItemType::SHIELD, + eItemType::SHIELD, eItemType::SHIELD, eItemType::SHIELD, eItemType::SHIELD, eItemType::SHIELD, + eItemType::SHIELD, eItemType::SHIELD, eItemType::SHIELD, eItemType::SHIELD, eItemType::SHIELD, + eItemType::SHIELD, eItemType::SHIELD, eItemType::SHIELD, eItemType::SHIELD, eItemType::HELM, + eItemType::HELM, eItemType::HELM, eItemType::HELM, eItemType::HELM, eItemType::HELM, + eItemType::HELM, eItemType::HELM, eItemType::HELM, eItemType::HELM, eItemType::GLOVES, + eItemType::GLOVES, eItemType::GLOVES, eItemType::GLOVES, eItemType::GLOVES, eItemType::BOOTS, + eItemType::BOOTS, eItemType::TOOL, eItemType::WEAPON_POISON, eItemType::WEAPON_POISON, eItemType::WEAPON_POISON, + eItemType::WEAPON_POISON, eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, eItemType::TOOL, eItemType::TOOL, + eItemType::SCROLL, eItemType::NON_USE_OBJECT, eItemType::POTION, eItemType::SCROLL, eItemType::SCROLL, + eItemType::SCROLL, eItemType::POTION, eItemType::SCROLL, eItemType::SCROLL, eItemType::POTION, + eItemType::POTION, eItemType::POTION, eItemType::SCROLL, eItemType::SCROLL, eItemType::SCROLL, + eItemType::POTION, eItemType::SCROLL, eItemType::SCROLL, eItemType::SCROLL, eItemType::SCROLL, + eItemType::SCROLL, eItemType::SCROLL, eItemType::SCROLL, eItemType::SCROLL, eItemType::SCROLL, + eItemType::SCROLL, eItemType::SCROLL, eItemType::SCROLL, eItemType::SCROLL, eItemType::WAND, + eItemType::WAND, eItemType::POTION, eItemType::POTION, eItemType::POTION, eItemType::POTION, + eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, eItemType::HELM, eItemType::HELM, eItemType::HELM, + eItemType::HELM, eItemType::HELM, eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, + eItemType::NON_USE_OBJECT, eItemType::GLOVES, eItemType::GLOVES, eItemType::GLOVES, eItemType::GLOVES, + eItemType::GLOVES, eItemType::GLOVES, eItemType::BOOTS, eItemType::BOOTS, eItemType::BOOTS, + eItemType::BOOTS, eItemType::BOOTS, eItemType::SHIELD, eItemType::SHIELD, eItemType::SHIELD, + eItemType::SHIELD, eItemType::SHIELD, eItemType::SHIELD, eItemType::SHIELD, eItemType::SHIELD, + eItemType::SHIELD, eItemType::POTION, eItemType::POTION, eItemType::POTION, eItemType::POTION, + eItemType::POTION, eItemType::POTION, eItemType::POTION, eItemType::POTION, eItemType::POTION, + eItemType::POTION, eItemType::POTION, eItemType::POTION, eItemType::POTION, eItemType::POTION, + eItemType::POTION, eItemType::POTION, eItemType::POTION, eItemType::POTION, eItemType::POTION, + eItemType::POTION, eItemType::POTION, eItemType::POTION, eItemType::POTION, eItemType::POTION, + eItemType::POTION, eItemType::POTION, eItemType::POTION, eItemType::THROWN_MISSILE, eItemType::THROWN_MISSILE, + eItemType::ARROW, eItemType::ARROW, eItemType::ARROW, eItemType::ARROW, eItemType::ARROW, + eItemType::BOW, eItemType::BOW, eItemType::THROWN_MISSILE, eItemType::WAND, eItemType::WAND, + eItemType::WAND, eItemType::WAND, eItemType::WAND, eItemType::WAND, eItemType::WAND, + eItemType::WAND, eItemType::WAND, eItemType::WAND, eItemType::RING, eItemType::RING, + eItemType::RING, eItemType::RING, eItemType::RING, eItemType::RING, eItemType::RING, + eItemType::RING, eItemType::RING, eItemType::RING, eItemType::RING, eItemType::RING, + eItemType::RING, eItemType::RING, eItemType::RING, eItemType::RING, eItemType::RING, + eItemType::RING, eItemType::RING, eItemType::RING, eItemType::RING, eItemType::RING, + eItemType::RING, eItemType::RING, eItemType::RING, eItemType::RING, eItemType::NECKLACE, + eItemType::NECKLACE, eItemType::NECKLACE, eItemType::NECKLACE, eItemType::NECKLACE, eItemType::NECKLACE, + eItemType::NECKLACE, eItemType::NECKLACE, eItemType::NECKLACE, eItemType::NECKLACE, eItemType::NECKLACE, + eItemType::NECKLACE, eItemType::NECKLACE, eItemType::NECKLACE, eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, + eItemType::POTION, eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, eItemType::SCROLL, eItemType::SCROLL, + eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::TWO_HANDED, eItemType::ONE_HANDED, + eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, + eItemType::SCROLL, eItemType::SCROLL, eItemType::POTION, eItemType::RING, eItemType::RING, + eItemType::NECKLACE, eItemType::WAND, eItemType::WAND, eItemType::HELM, eItemType::SHIELD, + eItemType::ONE_HANDED, eItemType::SHIELD, eItemType::RING, eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, + eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, + eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, eItemType::ONE_HANDED, eItemType::ONE_HANDED, eItemType::TWO_HANDED, + eItemType::ONE_HANDED, eItemType::SHIELD, eItemType::ONE_HANDED, eItemType::RING, eItemType::TWO_HANDED, + eItemType::NON_USE_OBJECT, eItemType::NON_USE_OBJECT, eItemType::ONE_HANDED, eItemType::ARMOR, eItemType::PANTS, + eItemType::FOOD, eItemType::FOOD, eItemType::SCROLL, eItemType::NON_USE_OBJECT, + }; for(size_t i = 0; i < 400; i++) { scen_items[i].import_legacy(old.scen_items[i]); + if (i>=399 || scen_items[i].variety!=legacyTypes[i]) // check with legacy type + continue; if (i>=strings.size()) continue; if (!scen_items[i].desc.empty()) diff --git a/src/universe/party.cpp b/src/universe/party.cpp index 07be316c..8550d21c 100644 --- a/src/universe/party.cpp +++ b/src/universe/party.cpp @@ -649,10 +649,10 @@ bool cParty::forced_give(cItem item,eItemAbil abil,short dat) { item.abil_data[0] = dat / 1000; item.abil_data[1] = dat % 1000; } - // TODO: It's strange to check main_status in the inner loop here rather than the outer loop - for(cPlayer& pc : *this) + for(cPlayer& pc : *this) { + if(pc.main_status != eMainStatus::ALIVE) continue; for(cItem& slot : pc.items) - if(pc.main_status == eMainStatus::ALIVE && slot.variety == eItemType::NO_ITEM) { + if(slot.variety == eItemType::NO_ITEM) { slot = item; if(print_result) { @@ -668,6 +668,7 @@ bool cParty::forced_give(cItem item,eItemAbil abil,short dat) { pc.sort_items(); return true; } + } return false; }