Browse Source

Fixed item properties not being written to the "normal" infobox if the floating infobox option is disabled

pull/8107/head
Andrettin 7 months ago committed by Anders Jenbo
parent
commit
0e005c87a4
  1. 161
      Source/items.cpp

161
Source/items.cpp

@ -1595,92 +1595,94 @@ void ItemDoppel()
void PrintItemOil(char iDidx)
{
const bool floatingInfoBoxEnabled = *GetOptions().Gameplay.floatingInfoBox;
switch (iDidx) {
case IMISC_OILACC:
AddInfoBoxString(_("increases a weapon's"), true);
AddInfoBoxString(_("chance to hit"), true);
AddInfoBoxString(_("increases a weapon's"), floatingInfoBoxEnabled);
AddInfoBoxString(_("chance to hit"), floatingInfoBoxEnabled);
break;
case IMISC_OILMAST:
AddInfoBoxString(_("greatly increases a"), true);
AddInfoBoxString(_("weapon's chance to hit"), true);
AddInfoBoxString(_("greatly increases a"), floatingInfoBoxEnabled);
AddInfoBoxString(_("weapon's chance to hit"), floatingInfoBoxEnabled);
break;
case IMISC_OILSHARP:
AddInfoBoxString(_("increases a weapon's"), true);
AddInfoBoxString(_("damage potential"), true);
AddInfoBoxString(_("increases a weapon's"), floatingInfoBoxEnabled);
AddInfoBoxString(_("damage potential"), floatingInfoBoxEnabled);
break;
case IMISC_OILDEATH:
AddInfoBoxString(_("greatly increases a weapon's"), true);
AddInfoBoxString(_("damage potential - not bows"), true);
AddInfoBoxString(_("greatly increases a weapon's"), floatingInfoBoxEnabled);
AddInfoBoxString(_("damage potential - not bows"), floatingInfoBoxEnabled);
break;
case IMISC_OILSKILL:
AddInfoBoxString(_("reduces attributes needed"), true);
AddInfoBoxString(_("to use armor or weapons"), true);
AddInfoBoxString(_("reduces attributes needed"), floatingInfoBoxEnabled);
AddInfoBoxString(_("to use armor or weapons"), floatingInfoBoxEnabled);
break;
case IMISC_OILBSMTH:
AddInfoBoxString(/*xgettext:no-c-format*/ _("restores 20% of an"), true);
AddInfoBoxString(_("item's durability"), true);
AddInfoBoxString(/*xgettext:no-c-format*/ _("restores 20% of an"), floatingInfoBoxEnabled);
AddInfoBoxString(_("item's durability"), floatingInfoBoxEnabled);
break;
case IMISC_OILFORT:
AddInfoBoxString(_("increases an item's"), true);
AddInfoBoxString(_("current and max durability"), true);
AddInfoBoxString(_("increases an item's"), floatingInfoBoxEnabled);
AddInfoBoxString(_("current and max durability"), floatingInfoBoxEnabled);
break;
case IMISC_OILPERM:
AddInfoBoxString(_("makes an item indestructible"), true);
AddInfoBoxString(_("makes an item indestructible"), floatingInfoBoxEnabled);
break;
case IMISC_OILHARD:
AddInfoBoxString(_("increases the armor class"), true);
AddInfoBoxString(_("of armor and shields"), true);
AddInfoBoxString(_("increases the armor class"), floatingInfoBoxEnabled);
AddInfoBoxString(_("of armor and shields"), floatingInfoBoxEnabled);
break;
case IMISC_OILIMP:
AddInfoBoxString(_("greatly increases the armor"), true);
AddInfoBoxString(_("class of armor and shields"), true);
AddInfoBoxString(_("greatly increases the armor"), floatingInfoBoxEnabled);
AddInfoBoxString(_("class of armor and shields"), floatingInfoBoxEnabled);
break;
case IMISC_RUNEF:
AddInfoBoxString(_("sets fire trap"), true);
AddInfoBoxString(_("sets fire trap"), floatingInfoBoxEnabled);
break;
case IMISC_RUNEL:
case IMISC_GR_RUNEL:
AddInfoBoxString(_("sets lightning trap"), true);
AddInfoBoxString(_("sets lightning trap"), floatingInfoBoxEnabled);
break;
case IMISC_GR_RUNEF:
AddInfoBoxString(_("sets fire trap"), true);
AddInfoBoxString(_("sets fire trap"), floatingInfoBoxEnabled);
break;
case IMISC_RUNES:
AddInfoBoxString(_("sets petrification trap"), true);
AddInfoBoxString(_("sets petrification trap"), floatingInfoBoxEnabled);
break;
case IMISC_FULLHEAL:
AddInfoBoxString(_("restore all life"), true);
AddInfoBoxString(_("restore all life"), floatingInfoBoxEnabled);
break;
case IMISC_HEAL:
AddInfoBoxString(_("restore some life"), true);
AddInfoBoxString(_("restore some life"), floatingInfoBoxEnabled);
break;
case IMISC_MANA:
AddInfoBoxString(_("restore some mana"), true);
AddInfoBoxString(_("restore some mana"), floatingInfoBoxEnabled);
break;
case IMISC_FULLMANA:
AddInfoBoxString(_("restore all mana"), true);
AddInfoBoxString(_("restore all mana"), floatingInfoBoxEnabled);
break;
case IMISC_ELIXSTR:
AddInfoBoxString(_("increase strength"), true);
AddInfoBoxString(_("increase strength"), floatingInfoBoxEnabled);
break;
case IMISC_ELIXMAG:
AddInfoBoxString(_("increase magic"), true);
AddInfoBoxString(_("increase magic"), floatingInfoBoxEnabled);
break;
case IMISC_ELIXDEX:
AddInfoBoxString(_("increase dexterity"), true);
AddInfoBoxString(_("increase dexterity"), floatingInfoBoxEnabled);
break;
case IMISC_ELIXVIT:
AddInfoBoxString(_("increase vitality"), true);
AddInfoBoxString(_("increase vitality"), floatingInfoBoxEnabled);
break;
case IMISC_REJUV:
AddInfoBoxString(_("restore some life and mana"), true);
AddInfoBoxString(_("restore some life and mana"), floatingInfoBoxEnabled);
break;
case IMISC_FULLREJUV:
AddInfoBoxString(_("restore all life and mana"), true);
AddInfoBoxString(_("restore all life and mana"), floatingInfoBoxEnabled);
break;
case IMISC_ARENAPOT:
AddInfoBoxString(_("restore all life and mana"), true);
AddInfoBoxString(_("(works only in arenas)"), true);
AddInfoBoxString(_("restore all life and mana"), floatingInfoBoxEnabled);
AddInfoBoxString(_("(works only in arenas)"), floatingInfoBoxEnabled);
break;
}
}
@ -1714,33 +1716,37 @@ Point DrawUniqueInfoWindow(const Surface &out)
void printItemMiscKBM(const Item &item, const bool isOil, const bool isCastOnTarget)
{
const bool floatingInfoBoxEnabled = *GetOptions().Gameplay.floatingInfoBox;
if (item._iMiscId == IMISC_MAPOFDOOM) {
AddInfoBoxString(_("Right-click to view"), true);
AddInfoBoxString(_("Right-click to view"), floatingInfoBoxEnabled);
} else if (isOil) {
PrintItemOil(item._iMiscId);
AddInfoBoxString(_("Right-click to use"), true);
AddInfoBoxString(_("Right-click to use"), floatingInfoBoxEnabled);
} else if (isCastOnTarget) {
AddInfoBoxString(_("Right-click to read, then\nleft-click to target"), true);
AddInfoBoxString(_("Right-click to read, then\nleft-click to target"), floatingInfoBoxEnabled);
} else if (IsAnyOf(item._iMiscId, IMISC_BOOK, IMISC_NOTE, IMISC_SCROLL, IMISC_SCROLLT)) {
AddInfoBoxString(_("Right-click to read"), true);
AddInfoBoxString(_("Right-click to read"), floatingInfoBoxEnabled);
}
}
void printItemMiscGenericGamepad(const Item &item, const bool isOil, bool isCastOnTarget)
{
const bool floatingInfoBoxEnabled = *GetOptions().Gameplay.floatingInfoBox;
if (item._iMiscId == IMISC_MAPOFDOOM) {
AddInfoBoxString(_("Activate to view"), true);
AddInfoBoxString(_("Activate to view"), floatingInfoBoxEnabled);
} else if (isOil) {
PrintItemOil(item._iMiscId);
if (!invflag) {
AddInfoBoxString(_("Open inventory to use"), true);
AddInfoBoxString(_("Open inventory to use"), floatingInfoBoxEnabled);
} else {
AddInfoBoxString(_("Activate to use"), true);
AddInfoBoxString(_("Activate to use"), floatingInfoBoxEnabled);
}
} else if (isCastOnTarget) {
AddInfoBoxString(_("Select from spell book, then\ncast spell to read"), true);
AddInfoBoxString(_("Select from spell book, then\ncast spell to read"), floatingInfoBoxEnabled);
} else if (IsAnyOf(item._iMiscId, IMISC_BOOK, IMISC_NOTE, IMISC_SCROLL, IMISC_SCROLLT)) {
AddInfoBoxString(_("Activate to read"), true);
AddInfoBoxString(_("Activate to read"), floatingInfoBoxEnabled);
}
}
@ -1753,30 +1759,34 @@ void printItemMiscGamepad(const Item &item, bool isOil, bool isCastOnTarget)
const std::string_view activateButton = GetOptions().Padmapper.InputNameForAction("SecondaryAction");
const std::string_view castButton = GetOptions().Padmapper.InputNameForAction("SpellAction");
const bool floatingInfoBoxEnabled = *GetOptions().Gameplay.floatingInfoBox;
if (item._iMiscId == IMISC_MAPOFDOOM) {
AddInfoBoxString(fmt::format(fmt::runtime(_("{} to view")), activateButton), true);
AddInfoBoxString(fmt::format(fmt::runtime(_("{} to view")), activateButton), floatingInfoBoxEnabled);
} else if (isOil) {
PrintItemOil(item._iMiscId);
if (!invflag) {
AddInfoBoxString(_("Open inventory to use"), true);
AddInfoBoxString(_("Open inventory to use"), floatingInfoBoxEnabled);
} else {
AddInfoBoxString(fmt::format(fmt::runtime(_("{} to use")), activateButton), true);
AddInfoBoxString(fmt::format(fmt::runtime(_("{} to use")), activateButton), floatingInfoBoxEnabled);
}
} else if (isCastOnTarget) {
AddInfoBoxString(fmt::format(fmt::runtime(_("Select from spell book,\nthen {} to read")), castButton), true);
AddInfoBoxString(fmt::format(fmt::runtime(_("Select from spell book,\nthen {} to read")), castButton), floatingInfoBoxEnabled);
} else if (IsAnyOf(item._iMiscId, IMISC_BOOK, IMISC_NOTE, IMISC_SCROLL, IMISC_SCROLLT)) {
AddInfoBoxString(fmt::format(fmt::runtime(_("{} to read")), activateButton), true);
AddInfoBoxString(fmt::format(fmt::runtime(_("{} to read")), activateButton), floatingInfoBoxEnabled);
}
}
void PrintItemMisc(const Item &item)
{
const bool floatingInfoBoxEnabled = *GetOptions().Gameplay.floatingInfoBox;
if (item._iMiscId == IMISC_EAR) {
AddInfoBoxString(fmt::format(fmt::runtime(pgettext("player", "Level: {:d}")), item._ivalue), true);
AddInfoBoxString(fmt::format(fmt::runtime(pgettext("player", "Level: {:d}")), item._ivalue), floatingInfoBoxEnabled);
return;
}
if (item._iMiscId == IMISC_AURIC) {
AddInfoBoxString(_("Doubles gold capacity"), true);
AddInfoBoxString(_("Doubles gold capacity"), floatingInfoBoxEnabled);
return;
}
const bool isOil = (item._iMiscId >= IMISC_USEFIRST && item._iMiscId <= IMISC_USELAST)
@ -1816,7 +1826,8 @@ void PrintItemInfo(const Item &item)
text.append(fmt::format(fmt::runtime(_(" {:d} Mag")), mag));
if (dex != 0)
text.append(fmt::format(fmt::runtime(_(" {:d} Dex")), dex));
AddInfoBoxString(text, true);
const bool floatingInfoBoxEnabled = *GetOptions().Gameplay.floatingInfoBox;
AddInfoBoxString(text, floatingInfoBoxEnabled);
}
}
@ -4056,36 +4067,38 @@ void PrintItemDetails(const Item &item)
if (HeadlessMode)
return;
const bool floatingInfoBoxEnabled = *GetOptions().Gameplay.floatingInfoBox;
if (item._iClass == ICLASS_WEAPON) {
if (item._iMinDam == item._iMaxDam) {
if (item._iMaxDur == DUR_INDESTRUCTIBLE)
AddInfoBoxString(fmt::format(fmt::runtime(_("damage: {:d} Indestructible")), item._iMinDam), true);
AddInfoBoxString(fmt::format(fmt::runtime(_("damage: {:d} Indestructible")), item._iMinDam), floatingInfoBoxEnabled);
else
AddInfoBoxString(fmt::format(fmt::runtime(_(/* TRANSLATORS: Dur: is durability */ "damage: {:d} Dur: {:d}/{:d}")), item._iMinDam, item._iDurability, item._iMaxDur), true);
AddInfoBoxString(fmt::format(fmt::runtime(_(/* TRANSLATORS: Dur: is durability */ "damage: {:d} Dur: {:d}/{:d}")), item._iMinDam, item._iDurability, item._iMaxDur), floatingInfoBoxEnabled);
} else {
if (item._iMaxDur == DUR_INDESTRUCTIBLE)
AddInfoBoxString(fmt::format(fmt::runtime(_("damage: {:d}-{:d} Indestructible")), item._iMinDam, item._iMaxDam), true);
AddInfoBoxString(fmt::format(fmt::runtime(_("damage: {:d}-{:d} Indestructible")), item._iMinDam, item._iMaxDam), floatingInfoBoxEnabled);
else
AddInfoBoxString(fmt::format(fmt::runtime(_(/* TRANSLATORS: Dur: is durability */ "damage: {:d}-{:d} Dur: {:d}/{:d}")), item._iMinDam, item._iMaxDam, item._iDurability, item._iMaxDur), true);
AddInfoBoxString(fmt::format(fmt::runtime(_(/* TRANSLATORS: Dur: is durability */ "damage: {:d}-{:d} Dur: {:d}/{:d}")), item._iMinDam, item._iMaxDam, item._iDurability, item._iMaxDur), floatingInfoBoxEnabled);
}
}
if (item._iClass == ICLASS_ARMOR) {
if (item._iMaxDur == DUR_INDESTRUCTIBLE)
AddInfoBoxString(fmt::format(fmt::runtime(_("armor: {:d} Indestructible")), item._iAC), true);
AddInfoBoxString(fmt::format(fmt::runtime(_("armor: {:d} Indestructible")), item._iAC), floatingInfoBoxEnabled);
else
AddInfoBoxString(fmt::format(fmt::runtime(_(/* TRANSLATORS: Dur: is durability */ "armor: {:d} Dur: {:d}/{:d}")), item._iAC, item._iDurability, item._iMaxDur), true);
AddInfoBoxString(fmt::format(fmt::runtime(_(/* TRANSLATORS: Dur: is durability */ "armor: {:d} Dur: {:d}/{:d}")), item._iAC, item._iDurability, item._iMaxDur), floatingInfoBoxEnabled);
}
if (item._iMiscId == IMISC_STAFF && item._iMaxCharges != 0) {
AddInfoBoxString(fmt::format(fmt::runtime(_("Charges: {:d}/{:d}")), item._iCharges, item._iMaxCharges), true);
AddInfoBoxString(fmt::format(fmt::runtime(_("Charges: {:d}/{:d}")), item._iCharges, item._iMaxCharges), floatingInfoBoxEnabled);
}
if (item._iPrePower != -1) {
AddInfoBoxString(PrintItemPower(item._iPrePower, item), true);
AddInfoBoxString(PrintItemPower(item._iPrePower, item), floatingInfoBoxEnabled);
}
if (item._iSufPower != -1) {
AddInfoBoxString(PrintItemPower(item._iSufPower, item), true);
AddInfoBoxString(PrintItemPower(item._iSufPower, item), floatingInfoBoxEnabled);
}
if (item._iMagical == ITEM_QUALITY_UNIQUE) {
AddInfoBoxString(_("unique item"), true);
AddInfoBoxString(_("unique item"), floatingInfoBoxEnabled);
ShowUniqueItemInfoBox = true;
curruitem = item;
}
@ -4097,37 +4110,39 @@ void PrintItemDur(const Item &item)
if (HeadlessMode)
return;
const bool floatingInfoBoxEnabled = *GetOptions().Gameplay.floatingInfoBox;
if (item._iClass == ICLASS_WEAPON) {
if (item._iMinDam == item._iMaxDam) {
if (item._iMaxDur == DUR_INDESTRUCTIBLE)
AddInfoBoxString(fmt::format(fmt::runtime(_("damage: {:d} Indestructible")), item._iMinDam), true);
AddInfoBoxString(fmt::format(fmt::runtime(_("damage: {:d} Indestructible")), item._iMinDam), floatingInfoBoxEnabled);
else
AddInfoBoxString(fmt::format(fmt::runtime(_("damage: {:d} Dur: {:d}/{:d}")), item._iMinDam, item._iDurability, item._iMaxDur), true);
AddInfoBoxString(fmt::format(fmt::runtime(_("damage: {:d} Dur: {:d}/{:d}")), item._iMinDam, item._iDurability, item._iMaxDur), floatingInfoBoxEnabled);
} else {
if (item._iMaxDur == DUR_INDESTRUCTIBLE)
AddInfoBoxString(fmt::format(fmt::runtime(_("damage: {:d}-{:d} Indestructible")), item._iMinDam, item._iMaxDam), true);
AddInfoBoxString(fmt::format(fmt::runtime(_("damage: {:d}-{:d} Indestructible")), item._iMinDam, item._iMaxDam), floatingInfoBoxEnabled);
else
AddInfoBoxString(fmt::format(fmt::runtime(_("damage: {:d}-{:d} Dur: {:d}/{:d}")), item._iMinDam, item._iMaxDam, item._iDurability, item._iMaxDur), true);
AddInfoBoxString(fmt::format(fmt::runtime(_("damage: {:d}-{:d} Dur: {:d}/{:d}")), item._iMinDam, item._iMaxDam, item._iDurability, item._iMaxDur), floatingInfoBoxEnabled);
}
if (item._iMiscId == IMISC_STAFF && item._iMaxCharges > 0) {
AddInfoBoxString(fmt::format(fmt::runtime(_("Charges: {:d}/{:d}")), item._iCharges, item._iMaxCharges), true);
AddInfoBoxString(fmt::format(fmt::runtime(_("Charges: {:d}/{:d}")), item._iCharges, item._iMaxCharges), floatingInfoBoxEnabled);
}
if (item._iMagical != ITEM_QUALITY_NORMAL)
AddInfoBoxString(_("Not Identified"), true);
AddInfoBoxString(_("Not Identified"), floatingInfoBoxEnabled);
}
if (item._iClass == ICLASS_ARMOR) {
if (item._iMaxDur == DUR_INDESTRUCTIBLE)
AddInfoBoxString(fmt::format(fmt::runtime(_("armor: {:d} Indestructible")), item._iAC), true);
AddInfoBoxString(fmt::format(fmt::runtime(_("armor: {:d} Indestructible")), item._iAC), floatingInfoBoxEnabled);
else
AddInfoBoxString(fmt::format(fmt::runtime(_("armor: {:d} Dur: {:d}/{:d}")), item._iAC, item._iDurability, item._iMaxDur), true);
AddInfoBoxString(fmt::format(fmt::runtime(_("armor: {:d} Dur: {:d}/{:d}")), item._iAC, item._iDurability, item._iMaxDur), floatingInfoBoxEnabled);
if (item._iMagical != ITEM_QUALITY_NORMAL)
AddInfoBoxString(_("Not Identified"), true);
AddInfoBoxString(_("Not Identified"), floatingInfoBoxEnabled);
if (item._iMiscId == IMISC_STAFF && item._iMaxCharges > 0) {
AddInfoBoxString(fmt::format(fmt::runtime(_("Charges: {:d}/{:d}")), item._iCharges, item._iMaxCharges), true);
AddInfoBoxString(fmt::format(fmt::runtime(_("Charges: {:d}/{:d}")), item._iCharges, item._iMaxCharges), floatingInfoBoxEnabled);
}
}
if (IsAnyOf(item._itype, ItemType::Ring, ItemType::Amulet))
AddInfoBoxString(_("Not Identified"), true);
AddInfoBoxString(_("Not Identified"), floatingInfoBoxEnabled);
PrintItemInfo(item);
}

Loading…
Cancel
Save