Added generateRewardOptionFromId function

This commit is contained in:
Wlowscha 2025-08-04 00:21:14 +02:00
parent b293b9063e
commit 49092aad55
No known key found for this signature in database
GPG Key ID: 3C8F1AD330565D04

View File

@ -42,37 +42,28 @@ export function generateReward(rewardFunc: RewardFunc, pregenArgs?: any[]): Rewa
} }
/** /**
* Generates a Reward Option from a given function * Generates a Reward Option from a given id
* @param rewardFunc * @param rewardFunc
* @param pregenArgs - can specify BerryType for berries, TM for TMs, AttackBoostType for item, etc. * @param pregenArgs - can specify BerryType for berries, TM for TMs, AttackBoostType for item, etc.
*/ */
export function generateRewardOption(rewardFunc: RewardFunc, pregenArgs?: any[]): RewardOption | null { export function generateRewardOptionFromId(id: RewardPoolId, cost = 0, pregenArgs?: any[]): RewardOption | null {
const reward = generateReward(rewardFunc, pregenArgs);
if (reward) {
const tier = getRewardDefaultTier(reward);
return new RewardOption(reward, 0, tier);
}
return null;
}
export function generateRewardOptionFromId(id: RewardPoolId, pregenArgs?: any[]): RewardOption | null {
if (isHeldItemId(id)) { if (isHeldItemId(id)) {
const reward = new HeldItemReward(id); const reward = new HeldItemReward(id);
const tier = heldItemRarities[id]; const tier = heldItemRarities[id];
return new RewardOption(reward, 0, tier); return new RewardOption(reward, 0, tier, cost);
} }
if (isTrainerItemId(id)) { if (isTrainerItemId(id)) {
const reward = new TrainerItemReward(id); const reward = new TrainerItemReward(id);
const tier = trainerItemRarities[id]; const tier = trainerItemRarities[id];
return new RewardOption(reward, 0, tier); return new RewardOption(reward, 0, tier, cost);
} }
const rewardFunc = allRewards[id]; const rewardFunc = allRewards[id];
const reward = generateReward(rewardFunc, pregenArgs); const reward = generateReward(rewardFunc, pregenArgs);
if (reward) { if (reward) {
const tier = rewardRarities[id]; const tier = rewardRarities[id];
return new RewardOption(reward, 0, tier); return new RewardOption(reward, 0, tier, cost);
} }
return null; return null;
} }
@ -84,26 +75,26 @@ export function getPlayerShopRewardOptionsForWave(waveIndex: number, baseCost: n
const options = [ const options = [
[ [
new RewardOption(allRewards.POTION(), 0, baseCost * 0.2), generateRewardOptionFromId(RewardId.POTION, baseCost * 0.2),
new RewardOption(allRewards.ETHER(), 0, baseCost * 0.4), generateRewardOptionFromId(RewardId.ETHER, baseCost * 0.4),
new RewardOption(allRewards.REVIVE(), 0, baseCost * 2), generateRewardOptionFromId(RewardId.REVIVE, baseCost * 2),
], ],
[ [
new RewardOption(allRewards.SUPER_POTION(), 0, baseCost * 0.45), generateRewardOptionFromId(RewardId.SUPER_POTION, baseCost * 0.45),
new RewardOption(allRewards.FULL_HEAL(), 0, baseCost), generateRewardOptionFromId(RewardId.FULL_HEAL, baseCost),
], ],
[new RewardOption(allRewards.ELIXIR(), 0, baseCost), new RewardOption(allRewards.MAX_ETHER(), 0, baseCost)], [generateRewardOptionFromId(RewardId.ELIXIR, baseCost), generateRewardOptionFromId(RewardId.MAX_ETHER, baseCost)],
[ [
new RewardOption(allRewards.HYPER_POTION(), 0, baseCost * 0.8), generateRewardOptionFromId(RewardId.HYPER_POTION, baseCost * 0.8),
new RewardOption(allRewards.MAX_REVIVE(), 0, baseCost * 2.75), generateRewardOptionFromId(RewardId.MAX_REVIVE, baseCost * 2.75),
new RewardOption(allRewards.MEMORY_MUSHROOM(), 0, baseCost * 4), generateRewardOptionFromId(RewardId.MEMORY_MUSHROOM, baseCost * 4),
], ],
[ [
new RewardOption(allRewards.MAX_POTION(), 0, baseCost * 1.5), generateRewardOptionFromId(RewardId.MAX_POTION, baseCost * 1.5),
new RewardOption(allRewards.MAX_ELIXIR(), 0, baseCost * 2.5), generateRewardOptionFromId(RewardId.MAX_ELIXIR, baseCost * 2.5),
], ],
[new RewardOption(allRewards.FULL_RESTORE(), 0, baseCost * 2.25)], [generateRewardOptionFromId(RewardId.FULL_RESTORE, baseCost * 2.25)],
[new RewardOption(allRewards.SACRED_ASH(), 0, baseCost * 10)], [generateRewardOptionFromId(RewardId.SACRED_ASH, baseCost * 10)],
]; ];
return options.slice(0, Math.ceil(Math.max(waveIndex + 10, 0) / 30)).flat(); return options.slice(0, Math.ceil(Math.max(waveIndex + 10, 0) / 30)).flat();
} }