mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2026-10-02 10:53:44 +00:00
fix(loot): activity reward coins use the reward's ChallengeRating level
ActivityRewards coins were always read from CurrencyTable npcminlevel 1. Live used the reward row's ChallengeRating as the npcminlevel, and level 1 when the currency index has no row for that level: - FV foot races (ChallengeRating 4, index 1) gave 36 and 48 coins, which only level 4 (30-50) fits; level 1 is 3-5. - Frakjaw's chest (activity 58, ChallengeRating 6) gave 250 each to a team of 2: its currency indices 123-126 only have a level 6 row (500), so DLU gave nothing. - Quickbuilds, wishing wells and chests have ChallengeRating 1; survival and the shooting galleries have ratings with no row and keep level 1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -27,7 +27,6 @@
|
||||
#include "MessageType/Chat.h"
|
||||
#include "ObjectIDManager.h"
|
||||
|
||||
#include "CDCurrencyTableTable.h"
|
||||
#include "CDActivityRewardsTable.h"
|
||||
#include "CDActivitiesTable.h"
|
||||
#include "LeaderboardManager.h"
|
||||
@@ -532,16 +531,7 @@ void ActivityInstance::RewardParticipant(Entity* participant) {
|
||||
std::vector<CDActivityRewards> activityRewards = activityRewardsTable->Query([this](CDActivityRewards entry) { return (entry.objectTemplate == m_ActivityInfo.ActivityID); });
|
||||
|
||||
if (!activityRewards.empty()) {
|
||||
uint32_t minCoins = 0;
|
||||
uint32_t maxCoins = 0;
|
||||
|
||||
auto* currencyTableTable = CDClientManager::GetTable<CDCurrencyTableTable>();
|
||||
std::vector<CDCurrencyTable> currencyTable = currencyTableTable->Query([=](CDCurrencyTable entry) { return (entry.currencyIndex == activityRewards[0].CurrencyIndex && entry.npcminlevel == 1); });
|
||||
|
||||
if (!currencyTable.empty()) {
|
||||
minCoins = currencyTable[0].minvalue;
|
||||
maxCoins = currencyTable[0].maxvalue;
|
||||
}
|
||||
const auto [minCoins, maxCoins] = Loot::GetActivityCoinRange(activityRewards[0]);
|
||||
|
||||
Loot::DropLoot(participant, m_Parent->GetObjectID(), activityRewards[0].LootMatrixIndex, minCoins, maxCoins);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user