mirror of
https://github.com/NathanHandley/mod-ah-bot-plus.git
synced 2026-01-13 01:08:37 +00:00
Merge pull request #40 from zeb139/development
Improved UseDropRates item selection logic, Removed duplicates from ItemTiersByClassAndQuality
This commit is contained in:
@@ -1101,10 +1101,10 @@ bool AuctionHouseBot::HandleAdvancedListingRuleUseDropRates(ItemTemplate const*&
|
|||||||
double r = 100.0 * (urand(0, INT32_MAX) / static_cast<double>(INT32_MAX));
|
double r = 100.0 * (urand(0, INT32_MAX) / static_cast<double>(INT32_MAX));
|
||||||
int tier = GetItemDropChanceTier(r);
|
int tier = GetItemDropChanceTier(r);
|
||||||
|
|
||||||
// If chosen tier is empty, search rarer tiers until not empty
|
// If chosen tier is empty, search more common tiers until not empty
|
||||||
auto& tierBuckets = ItemTiersByClassAndQuality[proto->Class][proto->Quality];
|
auto& tierBuckets = ItemTiersByClassAndQuality[proto->Class][proto->Quality];
|
||||||
while (tierBuckets[tier].empty() && tier < 10) {
|
while (tierBuckets[tier].empty() && tier > 0) {
|
||||||
tier++;
|
tier--;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pull a random item from selected rarity tier
|
// Pull a random item from selected rarity tier
|
||||||
@@ -1197,11 +1197,11 @@ void AuctionHouseBot::PopulateItemDropChances()
|
|||||||
for (size_t k = 0; k < tiers.size(); ++k)
|
for (size_t k = 0; k < tiers.size(); ++k)
|
||||||
{
|
{
|
||||||
const auto& items = tiers[k];
|
const auto& items = tiers[k];
|
||||||
if (i == 2)
|
if (i == ITEM_CLASS_WEAPON)
|
||||||
LOG_INFO("module", "Armor Count: {} Tier {} has {} items", GetQualityName((ItemQualities)j), k, items.size());
|
|
||||||
if (i == 4)
|
|
||||||
LOG_INFO("module", "Weapon Count: {} Tier {} has {} items", GetQualityName((ItemQualities)j), k, items.size());
|
LOG_INFO("module", "Weapon Count: {} Tier {} has {} items", GetQualityName((ItemQualities)j), k, items.size());
|
||||||
if (i == 9)
|
if (i == ITEM_CLASS_ARMOR)
|
||||||
|
LOG_INFO("module", "Armor Count: {} Tier {} has {} items", GetQualityName((ItemQualities)j), k, items.size());
|
||||||
|
if (i == ITEM_CLASS_RECIPE)
|
||||||
LOG_INFO("module", "Recipe Count: {} Tier {} has {} items", GetQualityName((ItemQualities)j), k, items.size());
|
LOG_INFO("module", "Recipe Count: {} Tier {} has {} items", GetQualityName((ItemQualities)j), k, items.size());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1405,6 +1405,14 @@ void AuctionHouseBot::PopulateItemDropChancesForCategoryAndQuality(ItemClass cat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove duplicates
|
||||||
|
for (auto& byClass : ItemTiersByClassAndQuality)
|
||||||
|
for (auto& byQuality : byClass)
|
||||||
|
for (auto& byTier : byQuality) {
|
||||||
|
std::sort(byTier.begin(), byTier.end());
|
||||||
|
byTier.erase(std::unique(byTier.begin(), byTier.end()), byTier.end());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AuctionHouseBot::InitializeAdvancedListingRuleUseDropRatesTiers()
|
void AuctionHouseBot::InitializeAdvancedListingRuleUseDropRatesTiers()
|
||||||
|
|||||||
Reference in New Issue
Block a user