diff --git a/src/game/client/library/swgClientUserInterface/src/shared/page/SwgCuiQuestAcceptance.cpp b/src/game/client/library/swgClientUserInterface/src/shared/page/SwgCuiQuestAcceptance.cpp index 2e488fc11..7a2b92fe5 100644 --- a/src/game/client/library/swgClientUserInterface/src/shared/page/SwgCuiQuestAcceptance.cpp +++ b/src/game/client/library/swgClientUserInterface/src/shared/page/SwgCuiQuestAcceptance.cpp @@ -546,9 +546,12 @@ void SwgCuiQuestAcceptance::updateDecriptionReward(Quest const & quest) int currentItem = 0; std::vector const & inclusiveLootItemNames = quest.getInclusiveStaticLootItemNames(); std::vector const & exclusiveLootItemNames = quest.getExclusiveStaticLootItemNames(); + std::vector const & inclusiveLootCounts = quest.getInclusiveStaticLootItemCounts(); + std::vector const & exclusiveLootCounts = quest.getExclusiveStaticLootItemCounts(); DEBUG_FATAL(!inclusiveLootItemNames.empty() && !exclusiveLootItemNames.empty(), ("Both AND and OR rewards type set in quest [%s], this is not allowed. Use only one!", quest.getName().getString())); std::vector const & lootItems = (!inclusiveLootItemNames.empty()) ? inclusiveLootItemNames : exclusiveLootItemNames; + std::vector const & lootCounts = (!inclusiveLootItemNames.empty()) ? inclusiveLootCounts : exclusiveLootCounts; for(int i = 0; i < cms_maxItems; ++i) ms_itemRewards[i].clear(); @@ -609,8 +612,19 @@ void SwgCuiQuestAcceptance::updateDecriptionReward(Quest const & quest) m_rewardItemViewers[currentItem]->GetParentWidget()->GetParentWidget()->GetParentWidget()->SetLocalTooltip(result); m_rewardItemViewers[currentItem]->recomputeZoom(); m_rewardItemViewers[currentItem]->setViewDirty(true); - m_rewardItemNames[currentItem]->SetLocalText(StringId("static_item_n", lootItem).localize()); + int p = std::distance(lootItems.begin(), it); + if (lootCounts[p] > 1) { + char pr[16]; + snprintf(pr, sizeof(pr) - 1, "%d", lootCounts[p]); + std::string countMessage = "("; + countMessage += pr; + countMessage += "x) "; + m_rewardItemNames[currentItem]->SetLocalText(Unicode::narrowToWide(countMessage) + StringId("static_item_n", lootItem).localize()); + } + else { + m_rewardItemNames[currentItem]->SetLocalText(StringId("static_item_n", lootItem).localize()); + } showedSomeReward = true; ++currentItem; } diff --git a/src/game/client/library/swgClientUserInterface/src/shared/page/SwgCuiQuestJournal.cpp b/src/game/client/library/swgClientUserInterface/src/shared/page/SwgCuiQuestJournal.cpp index 04d554572..3bdddcf9e 100644 --- a/src/game/client/library/swgClientUserInterface/src/shared/page/SwgCuiQuestJournal.cpp +++ b/src/game/client/library/swgClientUserInterface/src/shared/page/SwgCuiQuestJournal.cpp @@ -1071,8 +1071,11 @@ void SwgCuiQuestJournal::updateDecriptionReward(Quest const & quest) int currentItem = 0; std::vector const & inclusiveLootItemNames = quest.getInclusiveStaticLootItemNames(); std::vector const & exclusiveLootItemNames = quest.getExclusiveStaticLootItemNames(); + std::vector const & inclusiveLootCounts = quest.getInclusiveStaticLootItemCounts(); + std::vector const & exclusiveLootCounts = quest.getExclusiveStaticLootItemCounts(); DEBUG_FATAL(!inclusiveLootItemNames.empty() && !exclusiveLootItemNames.empty(), ("Both AND and OR rewards type set in quest [%s], this is not allowed. Use only one!", quest.getName().getString())); std::vector const & lootItems = (!inclusiveLootItemNames.empty()) ? inclusiveLootItemNames : exclusiveLootItemNames;; + std::vector const & lootCounts = (!inclusiveLootItemNames.empty()) ? inclusiveLootCounts : exclusiveLootCounts; if(!inclusiveLootItemNames.empty()) { @@ -1148,7 +1151,19 @@ void SwgCuiQuestJournal::updateDecriptionReward(Quest const & quest) m_rewardItemViewers[currentItem]->GetParentWidget()->GetParentWidget()->GetParentWidget()->SetLocalTooltip(result); m_rewardItemViewers[currentItem]->recomputeZoom(); m_rewardItemViewers[currentItem]->setViewDirty(true); - m_rewardItemNames[currentItem]->SetLocalText(StringId("static_item_n", lootItem).localize()); + + int p = std::distance(lootItems.begin(), it); + if (lootCounts[p] > 1) { + char pr[16]; + snprintf(pr, sizeof(pr) - 1, "%d", lootCounts[p]); + std::string countMessage = "("; + countMessage += pr; + countMessage += "x) "; + m_rewardItemNames[currentItem]->SetLocalText(Unicode::narrowToWide(countMessage) + StringId("static_item_n", lootItem).localize()); + } + else { + m_rewardItemNames[currentItem]->SetLocalText(StringId("static_item_n", lootItem).localize()); + } showedSomeReward = true; ++currentItem;