feat: unify victory reward experience
This commit is contained in:
@@ -26,10 +26,13 @@ const server = await createServer({
|
||||
|
||||
try {
|
||||
const {
|
||||
acknowledgeCampaignVictoryReward,
|
||||
campaignVictoryRewardPresentation,
|
||||
campaignStorageKey,
|
||||
applyCampBondExp,
|
||||
applyCampVisitReward,
|
||||
getCampaignState,
|
||||
getPendingCampaignVictoryRewardReport,
|
||||
hasCampaignSave,
|
||||
loadCampaignState,
|
||||
normalizeCampaignReserveTrainingAssignments,
|
||||
@@ -999,6 +1002,32 @@ try {
|
||||
repeatedSettlement.battleHistory[firstScenario.id]?.campaignRewards?.unlocks[0]?.battleId === 'second-battle-yellow-turban-pursuit',
|
||||
`Expected campaign unlock rewards to survive repeated battle report settlement: ${JSON.stringify(repeatedSettlement)}`
|
||||
);
|
||||
const pendingVictoryRewardReport = getPendingCampaignVictoryRewardReport();
|
||||
assert(
|
||||
pendingVictoryRewardReport?.battleId === firstScenario.id &&
|
||||
pendingVictoryRewardReport.rewardGold === firstBattleReport.rewardGold &&
|
||||
pendingVictoryRewardReport.campaignRewards?.equipment[0] === firstBattleReport.campaignRewards.equipment[0],
|
||||
`Expected an unacknowledged victory to expose its persisted reward report: ${JSON.stringify(pendingVictoryRewardReport)}`
|
||||
);
|
||||
const acknowledgedVictoryReward = acknowledgeCampaignVictoryReward(firstScenario.id);
|
||||
const repeatedVictoryRewardAcknowledgement = acknowledgeCampaignVictoryReward(firstScenario.id);
|
||||
const acknowledgedVictoryRewardSave = JSON.parse(storage.get(campaignStorageKey));
|
||||
assert(
|
||||
JSON.stringify(acknowledgedVictoryReward.acknowledgedVictoryRewardBattleIds) === JSON.stringify([firstScenario.id]) &&
|
||||
JSON.stringify(repeatedVictoryRewardAcknowledgement.acknowledgedVictoryRewardBattleIds) === JSON.stringify([firstScenario.id]) &&
|
||||
getPendingCampaignVictoryRewardReport() === undefined &&
|
||||
acknowledgedVictoryRewardSave.acknowledgedVictoryRewardBattleIds.includes(firstScenario.id),
|
||||
`Expected victory reward acknowledgement to persist once and suppress repeat arrival prompts: ${JSON.stringify({ acknowledgedVictoryReward, repeatedVictoryRewardAcknowledgement, acknowledgedVictoryRewardSave })}`
|
||||
);
|
||||
const corruptedFutureAcknowledgementSave = JSON.parse(storage.get(campaignStorageKey));
|
||||
corruptedFutureAcknowledgementSave.acknowledgedVictoryRewardBattleIds.push('second-battle-yellow-turban-pursuit');
|
||||
storage.set(campaignStorageKey, JSON.stringify(corruptedFutureAcknowledgementSave));
|
||||
const normalizedFutureAcknowledgementSave = loadCampaignState();
|
||||
assert(
|
||||
normalizedFutureAcknowledgementSave.acknowledgedVictoryRewardBattleIds.includes(firstScenario.id) &&
|
||||
!normalizedFutureAcknowledgementSave.acknowledgedVictoryRewardBattleIds.includes('second-battle-yellow-turban-pursuit'),
|
||||
`Expected acknowledgement normalization to retain recorded victories while rejecting future known battle ids without a victory: ${JSON.stringify(normalizedFutureAcknowledgementSave.acknowledgedVictoryRewardBattleIds)}`
|
||||
);
|
||||
setFirstBattleReport({
|
||||
...firstBattleReport,
|
||||
rewardGold: 140,
|
||||
@@ -1243,8 +1272,13 @@ try {
|
||||
setCampaignSortieOrderSelection(firstScenario.id, 'elite');
|
||||
const firstOrderCanonicalReport = setFirstBattleReport(orderBattleReport);
|
||||
const firstOrderSettlement = getCampaignState();
|
||||
const firstOrderRewardPresentation = campaignVictoryRewardPresentation(firstOrderCanonicalReport);
|
||||
assert(
|
||||
firstOrderCanonicalReport?.sortieOrder?.rewardGranted === true &&
|
||||
firstOrderRewardPresentation.baseRewardGold === 100 &&
|
||||
firstOrderRewardPresentation.rewardGold === 280 &&
|
||||
firstOrderRewardPresentation.sortieOrderBonus?.rewardGold === 180 &&
|
||||
firstOrderRewardPresentation.itemRewards.includes('상처약 1') &&
|
||||
firstOrderSettlement.gold === 280 &&
|
||||
firstOrderSettlement.inventory.Bean === 2 &&
|
||||
firstOrderSettlement.inventory['Iron Sword'] === 1 &&
|
||||
|
||||
Reference in New Issue
Block a user