-
-
Notifications
You must be signed in to change notification settings - Fork 1.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Challenge] Add Nuzlocke-related challenges #4311
base: beta
Are you sure you want to change the base?
Conversation
8172200
to
d381734
Compare
I see it picks 3 random people to request for review now lmao. Anyway, more or less ready (still need to figure out some tests). Could use some opinions on the challenge names/descriptions, I didn't spend long on them. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you edit challengeParser() in run-info-ui-handler to process these new challenges?
Question: "Hardcore" mode also prevent the Pokémon to be heald every 10 waves, or it only applies to reviving items? |
It only prevents reviving, non-fainted Pokémon will still be healed if only Hardcore is active. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approval for the locales folder.
5fa30b8
to
f600dfd
Compare
} | ||
|
||
override applyAddPokemonToParty(pokemon: EnemyPokemon, waveIndex: number, canAddToParty: BooleanHolder): boolean { | ||
if (!(waveIndex % 10 === 1) && !(pokemon.scene.lastMysteryEncounter && (waveIndex % 10 === 2))) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lastMysteryEncounter
gets cleared upon reload (it's only used for clearing the last wave's ME visuals), so the player would no longer be able to add a wild Pokemon to the party if they reload on wave X2 after an ME.
There's also an edge case of ME on wave X1 and then trainer battle on wave X2, which would not allow the player to add any Pokemon from that biome.
Would it be possible for the session save data to keep track of a mostRecentWildEncounter
instead (it would probably also require changes to the backend DB)? If not, then we could use mysteryEncounterSaveData.encounteredEvents
to search for wave X1 ME's instead.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hm, I'll look into it and see what can be done.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Adding to this, some MEs let you fight and catch a mon (or even several mons, like the Safari Zone) so it probably needs to be considered even with PigeonBar's suggestion
Some MEs also allow to get a mon without needing to catch it like the Oricorio one or the Pokemon Salesman, should that be allowed for this challenge if not on wave X1?
if (!isHealPhaseActive.value) { | ||
this.scene.unshiftPhase(new SelectModifierPhase(this.scene)); | ||
return this.end(); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some ME's also use PartyHealPhase
now. What is the intended behaviour here?
20241017.ME.Party.Heal.mp4
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Uh, hm... I hadn't considered MEs (well, they didn't even exist when the challenge was first added). Will probably have to consult with damo on this.
In the Hardcore challenge, should the player be allowed to splice a fainted Pokemon with an alive Pokemon, which would sort of allow the fainted Pokemon to participate again? |
The Hardcore challenge allows Revival Blessing to be used indirectly, such as from Sleep Talk: 20241017.Sleep.Talk.Revival.mp4
|
Sure. I'm not sure what the best short names to use are though.
Probably not. Ugh, fusions... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(not done with reviewing at all, just submitting to share the comments i have so far)
} | ||
|
||
override applyAddPokemonToParty(pokemon: EnemyPokemon, waveIndex: number, canAddToParty: BooleanHolder): boolean { | ||
if (!(waveIndex % 10 === 1) && !(pokemon.scene.lastMysteryEncounter && (waveIndex % 10 === 2))) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Adding to this, some MEs let you fight and catch a mon (or even several mons, like the Safari Zone) so it probably needs to be considered even with PigeonBar's suggestion
Some MEs also allow to get a mon without needing to catch it like the Oricorio one or the Pokemon Salesman, should that be allowed for this challenge if not on wave X1?
Might not always apply for English, but might apply for some languages |
Or, well, on the above, a small icon to indicate each challenge type will likely be needed in the future as they wouldn't all have achievements associated likely. Unsure how to shorten them though. |
It turns out that after beating Wave X0, To avoid the problem, we could instead have |
- "No Free Heal": Disables the automatic healing that occurs after every 10th wave, replacing it with a normal shop phase - "Hardcore": Fainted Pokémon can't be revived - "Limited Catch": Only the first wild Pokémon encounter of every biome can be added to your current party
d885134
to
9172303
Compare
9172303
to
4de5572
Compare
Is it possible to reuse the code from Sam's original nuzlocke mode that makes cries longer when a Pokemon faints in permadeath? It's such a small thing but it makes death's feel more impactful |
What exactly do you mean by longer? Like, the cry should be slowed down so that it takes a longer time to complete? By how much; and what should be done about pitch shifting, if anything? |
Todo:
PartyHealPhase
from appearing during no autoheal challenge?What are the changes the user will see?
Adds 3 new challenges:
of every biome can be added to your current party (ie: from waves 1, 11, 21, ...)
Why am I making these changes?
Nuzlocke mode is a popular request/on the roadmap.
What are the changes from a developer perspective?
6 new
ChallengeType
s were added:NO_HEAL_PHASE
Checks if the heal phase after every 10th wave should be activated. See
src/phases/party-heal-phase.ts
SHOP_ITEM_BLACKLIST
Filters the shop for specific items. See
src/modifier/modifier-type.ts
andsrc/ui/modifier-select-ui-handler.ts
RANDOM_ITEM_BLACKLIST
Filters the random item selection for specific items. See
src/modifier/modifier-type.ts
ADD_POKEMON_TO_PARTY
Checks if the current caught Pokémon can be added to the party. See
src/phases/attempt-capture-phase.ts
MOVE_BLACKLIST
Checks if move the user wants to use is illegal for this challenge. See
src/phases/command-phase.ts
PREVENT_REVIVE
Checks if Pokémon can be revived. See
src/phases/party-heal-phase.ts
Screenshots/Videos
Starter filter with "No Legends" challenge active
Shop with "Hardcore" challenge active
Lack of auto-heal with "No Free Heal" challenge active
no.auto.heal.challenge.mp4
Caught Pokémon not going to party with "Limited Catch" challenge active
pokemon.doesn.t.go.to.party.mp4
How to test the changes?
Start a new challenge run with one or more of the challenges active.
Checklist
beta
as my base branchnpm run test
)[ ] Are the changes visual?