fix: chest loot not working (#1933)

* fix bons and dragon loot

* fix chest server loot
This commit is contained in:
David Markowitz
2025-11-16 14:17:49 -08:00
committed by GitHub
parent 991e55f305
commit ca7424cbeb
2 changed files with 7 additions and 36 deletions

View File

@@ -20,24 +20,10 @@ void TreasureChestDragonServer::OnUse(Entity* self, Entity* user) {
if (scriptedActivityComponent == nullptr) {
return;
}
auto rating = 1;
auto* team = TeamManager::Instance()->GetTeam(user->GetObjectID());
if (team != nullptr) {
rating = team->members.size();
for (const auto member : team->members) {
auto* memberObject = Game::entityManager->GetEntity(member);
if (memberObject == nullptr) continue;
Loot::DropActivityLoot(memberObject, self->GetObjectID(), scriptedActivityComponent->GetActivityID(), rating);
}
} else {
Loot::DropActivityLoot(user, self->GetObjectID(), scriptedActivityComponent->GetActivityID(), rating);
}
Loot::DropActivityLoot(user, self->GetObjectID(), scriptedActivityComponent->GetActivityID(), team ? team->members.size() : 1);
self->Smash(self->GetObjectID());
}

View File

@@ -4,6 +4,7 @@
#include "EntityManager.h"
#include "dZoneManager.h"
#include "Loot.h"
#include "dServer.h"
void MinigameTreasureChestServer::OnUse(Entity* self, Entity* user) {
auto* sac = self->GetComponent<ScriptedActivityComponent>();
@@ -18,25 +19,9 @@ void MinigameTreasureChestServer::OnUse(Entity* self, Entity* user) {
UpdatePlayer(self, user->GetObjectID());
auto* team = TeamManager::Instance()->GetTeam(user->GetObjectID());
uint32_t activityRating = 0;
if (team != nullptr) {
for (const auto& teamMemberID : team->members) {
auto* teamMember = Game::entityManager->GetEntity(teamMemberID);
if (teamMember != nullptr) {
activityRating = CalculateActivityRating(self, teamMemberID);
if (self->GetLOT() == frakjawChestId) activityRating = team->members.size();
Loot::DropActivityLoot(teamMember, self->GetObjectID(), sac->GetActivityID(), activityRating);
}
}
} else {
activityRating = CalculateActivityRating(self, user->GetObjectID());
if (self->GetLOT() == frakjawChestId) activityRating = 1;
Loot::DropActivityLoot(user, self->GetObjectID(), sac->GetActivityID(), activityRating);
}
uint32_t activityRating = CalculateActivityRating(self, user->GetObjectID());
if (self->GetLOT() == frakjawChestId || Game::server->GetZoneID() == 1204) activityRating = team != nullptr ? team->members.size() : 1;
Loot::DropActivityLoot(user, self->GetObjectID(), sac->GetActivityID(), activityRating);
sac->PlayerRemove(user->GetObjectID());