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