mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-06-29 21:12:45 +02:00
Implement NuzLocke related challenges and AI changes
The Nuzlocke challenges that were implemented were the following: - "No Free Heal" which consists in disabling the auto heal that occurs every 10th wave, replacing it with a normal shop phase. Changes made: - Added a new challenge "NO_AUTO_HEAL" with a challenge type "NO_HEAL_PHASE" and created a new function "applyNoHealPhase" to determine whether the Pokémon can heal if the challenge is active ("challenge.ts"). - Added a confirmation on the healing phase to check if the challenge is active or not, and if it is, it should skip the phase ("party-heal-phase.ts"). - Changed the logistic of when the shop should be displayed, so when the challenge is active the shop appears every 10th wave ("modifier-type.ts") and actually push the shop phase ("victory-phase.ts"). - "Hardcore": Challenge divided into two modes, normal and hard, where fainted Pokémon can't be revived, in addition, the hard mode deletes the fainted Pokémon so the player can't switch it's items after death. Changes made: - Added a new challenge "HARDCORE" with several challenge types with the correspondent apply functions ("challenge.ts"), each one is used as follows: - RANDOM_ITEM_BLACKLIST: filter the reward items with only the valid one's ("modifier-type.ts"). - SHOP_ITEM_BLACKLIST: filter the shop items with only the valid one's ("modifier-select-ui-handler.ts"). - MOVE_BLACKLIST: checks if the move selected is allowed and if not sends a message of no apply ("pokemon.ts"). - DELETE_POKEMON: if hard mode was selected, automatically delete the fainted Pokémon from the party ("battle-end-pahse.ts"). - SHOULD_FUSE: changed the logic of should apply function to prohibit the fusion with dead Pokémon ("modifier.ts"). - PREVENT_REVIVE: prevent the gain of hp of fainted Pokémon ("party-heal-phase.ts"). - "Limited Catch": Only the first wild Pokémon encounter of every biome can be added to the player's current party. Changes made: - Added a new challenge LIMITED_CATCH with a challenge type ADD_POKEMON_TO_PARTY and created a new function "applyAddPokemonToParty" to determine whether the Pokémon can be added to the party, which should only occur every 11th wave if it isn't a catchable mystery encounter or every 12th wave if the 11th wave was a catchable mystery encounter ("challenge.ts"). - Changed the logistic of adding a Pokémon where it can be caught so that the "pokedex" is updated but the Pokémon isn't added to the party of the player affecting specifically mystery encounters ("encounter-pokemon-utils.ts") and added the same logic to normal encounters. ("attempt-capture-phase.ts") The changes in the game AI were as follows ("pokemon.ts"): - More accurately accounts for the Pokémon's actual moves and their effectiveness against the player instead of only the pokemon type - Introduced logic to decide when a Pokémon should be sacrificed or switched based on its HP and speed. Signed-off-by: Matilde Simões <matilde.simoes@tecnico.ulisboa.pt> Co-authored-by: Fuad Ali <fuad.ali@tecnico.ulisboa.pt>
This commit is contained in:
parent
4afb9b695d
commit
f8a3352bb3
@ -19,6 +19,7 @@ export class PartyHealPhase extends BattlePhase {
|
||||
const isHealPhaseActive = new BooleanHolder(true);
|
||||
const isReviveActive = new BooleanHolder(true);
|
||||
applyChallenges(ChallengeType.NO_HEAL_PHASE, isHealPhaseActive);
|
||||
applyChallenges(ChallengeType.PREVENT_REVIVE, isReviveActive);
|
||||
if (!isHealPhaseActive.value) {
|
||||
return this.end();
|
||||
}
|
||||
@ -28,7 +29,6 @@ export class PartyHealPhase extends BattlePhase {
|
||||
}
|
||||
globalScene.ui.fadeOut(1000).then(() => {
|
||||
for (const pokemon of globalScene.getPlayerParty()) {
|
||||
applyChallenges(ChallengeType.PREVENT_REVIVE, isReviveActive);
|
||||
if (isReviveActive.value || !pokemon.isFainted()) {
|
||||
pokemon.hp = pokemon.getMaxHp();
|
||||
pokemon.resetStatus(true, false, false, true);
|
||||
|
Loading…
Reference in New Issue
Block a user