scenario.cpp: check item types before adding a default description,

party.cpp: minor cleaninggs...
This commit is contained in:
ALONSO Laurent
2021-11-04 10:16:45 +01:00
committed by Celtic Minstrel
parent 31124a46b6
commit afc17ba754
2 changed files with 86 additions and 3 deletions

View File

@@ -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())

View File

@@ -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;
}