Core/Housing: stage 36 reject expired Initiative reward claims
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
#include "HousingInitiativeReward.h"
|
||||
#include "Log.h"
|
||||
#include "Player.h"
|
||||
#include <algorithm>
|
||||
#include <limits>
|
||||
#include <mutex>
|
||||
#include <vector>
|
||||
@@ -344,6 +345,24 @@ namespace Housing
|
||||
if (!player || neighborhoodGuid.IsEmpty() || !generationId)
|
||||
return InitiativeRewardExecutionResult::InvalidRequest;
|
||||
|
||||
std::vector<ArchivedInitiativeReward> archivedRewards;
|
||||
InitiativeRewardClaimResult const loadResult =
|
||||
LoadArchivedInitiativeRewards(player, neighborhoodGuid, archivedRewards);
|
||||
if (loadResult != InitiativeRewardClaimResult::Success)
|
||||
return MapClaimResult(loadResult);
|
||||
|
||||
auto const archivedReward = std::find_if(archivedRewards.begin(), archivedRewards.end(),
|
||||
[generationId](ArchivedInitiativeReward const& reward)
|
||||
{
|
||||
return reward.GenerationId == generationId;
|
||||
});
|
||||
if (archivedReward == archivedRewards.end())
|
||||
return InitiativeRewardExecutionResult::NoReward;
|
||||
|
||||
uint64 const now = uint64(GameTime::GetGameTime());
|
||||
if (archivedReward->ExpiredAt != 0 && archivedReward->ExpiredAt <= now && !archivedReward->ClaimPending)
|
||||
return InitiativeRewardExecutionResult::NoReward;
|
||||
|
||||
InitiativeRewardClaimReservation reservation;
|
||||
InitiativeRewardClaimResult const reserveResult =
|
||||
ReserveArchivedInitiativeReward(player, neighborhoodGuid, generationId, reservation);
|
||||
|
||||
Reference in New Issue
Block a user