Browse Source

Add Cain identify all option

pull/8502/head
morfidon 1 month ago
parent
commit
289325ced4
  1. 58
      Source/stores.cpp
  2. 1
      Source/stores.h

58
Source/stores.cpp

@ -903,6 +903,15 @@ void StoreConfirm(Item &item)
HasScrollbar = false;
ClearSText(5, 23);
if (OldActiveStore == TalkID::StorytellerIdentifyAll) {
AddSText(0, 10, _("Identify all items?"), UiFlags::ColorWhite | UiFlags::AlignCenter, false);
AddSText(0, 12, fmt::format(fmt::runtime(_("Cost: {:s} gold")), FormatInteger(item._iIvalue)), UiFlags::ColorWhitegold | UiFlags::AlignCenter, false);
AddSText(0, 15, _("Are you sure you want to identify all items?"), UiFlags::ColorWhite | UiFlags::AlignCenter, false);
AddSText(0, 18, _("Yes"), UiFlags::ColorWhite | UiFlags::AlignCenter, true);
AddSText(0, 20, _("No"), UiFlags::ColorWhite | UiFlags::AlignCenter, true);
return;
}
const UiFlags itemColor = item.getTextColorWithStatCheck();
AddSText(20, 8, item.getName(), itemColor, false);
AddSTextVal(8, item._iIvalue);
@ -917,6 +926,9 @@ void StoreConfirm(Item &item)
case TalkID::StorytellerIdentify:
prompt = _("Are you sure you want to identify this item?");
break;
case TalkID::StorytellerIdentifyAll:
prompt = _("Are you sure you want to identify all items?");
break;
case TalkID::HealerBuy:
case TalkID::SmithPremiumBuy:
case TalkID::WitchBuy:
@ -1050,19 +1062,14 @@ void StartStoryteller()
AddSText(0, 9, _("Would you like to:"), UiFlags::ColorWhitegold | UiFlags::AlignCenter, false);
AddSText(0, 12, _("Talk to Cain"), UiFlags::ColorBlue | UiFlags::AlignCenter, true);
AddSText(0, 14, _("Identify an item"), UiFlags::ColorWhite | UiFlags::AlignCenter, true);
AddSText(0, 16, _("Identify all items"), UiFlags::ColorWhite | UiFlags::AlignCenter, true);
AddSText(0, 18, _("Say goodbye"), UiFlags::ColorWhite | UiFlags::AlignCenter, true);
AddSLine(5);
}
bool IdItemOk(Item *i)
{
if (i->isEmpty()) {
return false;
}
if (i->_iMagical == ITEM_QUALITY_NORMAL) {
return false;
}
return !i->_iIdentified;
return IsItemIdentifiableByStoryteller(*i);
}
void AddStoreHoldId(Item itm, int8_t i)
@ -1174,6 +1181,13 @@ void StartStorytellerIdentifyShow(Item &item)
AddSText(0, 18, _("Done"), UiFlags::ColorWhite | UiFlags::AlignCenter, true);
}
void StorytellerIdentifyAllItems()
{
Player &myPlayer = *MyPlayer;
TakePlrsMoney(CountIdentifiablePlayerItems(myPlayer) * 100);
IdentifyPlayerItems(myPlayer);
}
void StartTalk()
{
int la;
@ -1779,6 +1793,11 @@ void ConfirmEnter(Item &item)
StorytellerIdentifyItem(item);
StartStore(TalkID::StorytellerIdentifyShow);
return;
case TalkID::StorytellerIdentifyAll:
StorytellerIdentifyAllItems();
StartStore(TalkID::Storyteller);
CurrentTextLine = 16;
return;
case TalkID::SmithPremiumBuy:
SmithBuyPItem(item);
break;
@ -1858,6 +1877,22 @@ void StorytellerEnter()
case 14:
StartStore(TalkID::StorytellerIdentify);
break;
case 16:
OldActiveStore = TalkID::StorytellerIdentifyAll;
OldTextLine = 16;
OldScrollPos = 0;
TempItem.clear();
TempItem._iIvalue = CountIdentifiablePlayerItems(*MyPlayer) * 100;
if (TempItem._iIvalue == 0) {
StartStore(TalkID::StorytellerIdentify);
return;
}
if (!PlayerCanAfford(TempItem._iIvalue)) {
StartStore(TalkID::NoMoney);
return;
}
StartStore(TalkID::Confirm);
return;
case 18:
ActiveStore = TalkID::None;
break;
@ -2293,6 +2328,8 @@ void StartStore(TalkID s)
case TalkID::StorytellerIdentify:
StartStorytellerIdentify();
break;
case TalkID::StorytellerIdentifyAll:
break;
case TalkID::SmithPremiumBuy:
if (!StartSmithPremiumBuy())
return;
@ -2438,6 +2475,10 @@ void StoreESC()
StartStore(TalkID::Storyteller);
CurrentTextLine = 14;
break;
case TalkID::StorytellerIdentifyAll:
StartStore(TalkID::Storyteller);
CurrentTextLine = 16;
break;
case TalkID::StorytellerIdentifyShow:
StartStore(TalkID::StorytellerIdentify);
break;
@ -2635,6 +2676,9 @@ void StoreEnter()
case TalkID::StorytellerIdentify:
StorytellerIdentifyEnter();
break;
case TalkID::StorytellerIdentifyAll:
StartStore(TalkID::Confirm);
break;
case TalkID::Gossip:
TalkEnter();
break;

1
Source/stores.h

@ -54,6 +54,7 @@ enum class TalkID : uint8_t {
Storyteller,
HealerBuy,
StorytellerIdentify,
StorytellerIdentifyAll,
SmithPremiumBuy,
Gossip,
StorytellerIdentifyShow,

Loading…
Cancel
Save