Skip to content
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

[Moves][Ability] Implement Torment / Taunt / Imprison + Aroma Veil #4378

Merged
merged 46 commits into from
Sep 25, 2024

Conversation

frutescens
Copy link
Collaborator

@frutescens frutescens commented Sep 22, 2024

What are the changes the user will see?

Torment / Taunt / Imprison will be implemented.
Aroma Veil will also be implemented due to its relationship to move disabling.
However, because Uproar hasn't been fully implemented, Torment can't be fully implemented so it is marked as partial for now.

Why am I making these changes?

Gotta do my part.

What are the changes from a developer perspective?

Useful Reference: https://www.smogon.com/dp/articles/move_restrictions#torment

New Battler Tags for Torment / Taunt / Imprison
Checklist:

  • Torment
    • Torment prevents the target from using the same move twice in a row. The effect lasts until the target is switched out.
    • If a Pokémon has selected the move it used last turn and becomes affected with Torment, it may still use the move this turn (even if it moves after the user of Torment).
    • Moves such as Rollout will still be fully executed under the effects of Torment.
    • Test
  • Taunt
    • Taunt makes the afflicted Pokémon unable to use status moves. The effect wears off if the subject is switched out. Unlike most status moves, Taunt will affect a target with a substitute.
    • On the turn that Taunt is used, if the Pokémon using Taunt goes before the target and the target selected a status move that turn, the target's move will fail.
    • Pokémon with Oblivious or under the effect of Aroma Veil cannot become taunted.
    • Test
  • Imprison
    • As long as the user remains in battle, opponents cannot use any move which is also known by the user. This includes opponents switched in after the move was used.
    • Imprison applies only to the user's current moveset, including any new moves learned when leveling up in battle, or any moves acquired in battle by using Mimic, Sketch, or Transform.
    • On the turn that Imprison is used, if an opposing Pokémon would move after Imprison is used and it selected a move the user knows that turn, it will be unable to use that move and will make no action that turn (i.e. PP for that move is not consumed). In this case, the affected Pokémon will not use Struggle
    • Test
    • Aroma Veil
      • Blocks Disable
      • Blocks Taunt
      • Blocks Torment
      • Blocks Infatuation
      • Blocks Heal Block
      • Blocks Cursed Body
      • Blocks Encore
      • Does not block Imprison
      • Test

Screenshots/Videos

Torment
Screen.Recording.2024-09-23.at.7.09.30.PM.mov
Taunt
Screen.Recording.2024-09-23.at.7.11.30.PM.mov
Imprison
Screen.Recording.2024-09-23.at.7.16.29.PM.mov
Aroma Veil
Screen.Recording.2024-09-23.at.7.12.53.PM.mov

How to test the changes?

Use overrides to emulate the conditions needed to use and activate the effects of these moves/interactions with Aroma Veil.

Checklist

  • I'm using beta as my base branch
  • There is no overlap with another PR?
  • The PR is self-contained and cannot be split into smaller PRs?
  • Have I provided a clear explanation of the changes?
  • Have I considered writing automated tests for the issue?
  • If I have text, did I make it translatable and add a key in the English locale file(s)?
  • Have I tested the changes (manually)?
    • Are all unit tests still passing? (npm run test)
  • Are the changes visual?
    • Have I provided screenshots/videos of the changes?

@frutescens frutescens added the Move Affects a move label Sep 22, 2024
@frutescens frutescens changed the title [Moves] Implement Torment / Taunt / Imprison [Moves][Ability] Implement Torment / Taunt / Imprison + Aroma Veil Sep 23, 2024
@frutescens frutescens added the Ability Affects an ability label Sep 23, 2024
ben-lear
ben-lear previously approved these changes Sep 24, 2024
src/data/arena-tag.ts Outdated Show resolved Hide resolved
Copy link
Collaborator

@innerthunder innerthunder left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The effects of Aroma Veil aren't supported well by arena tags for a few reasons:

  • What happens if the ability gets suppressed/ignored? You basically have to rewrite these checks within the arena tag's functions if you want to account for them correctly.
  • Arena tags currently only support end-of-turn lapsing. If a Pokemon with Aroma Veil decides to switch out, the arena tag will still apply throughout the rest of the turn.

The implementation for Armor Tail/Dazzling/Queenly Majesty is probably the closest thing to how Aroma Veil should work, imo.

DayKev
DayKev previously approved these changes Sep 25, 2024
flx-sta
flx-sta previously approved these changes Sep 25, 2024
@flx-sta
Copy link
Collaborator

flx-sta commented Sep 25, 2024

SangaraSorama
SangaraSorama previously approved these changes Sep 25, 2024
Copy link
Collaborator

@torranx torranx left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

most comments are nits/documentation, otherwise looks good except for Imprison's implementation

src/data/arena-tag.ts Show resolved Hide resolved
src/data/arena-tag.ts Outdated Show resolved Hide resolved
src/data/arena-tag.ts Outdated Show resolved Hide resolved
src/data/battler-tags.ts Outdated Show resolved Hide resolved
src/data/battler-tags.ts Outdated Show resolved Hide resolved
src/data/battler-tags.ts Show resolved Hide resolved
src/data/battler-tags.ts Outdated Show resolved Hide resolved
src/data/battler-tags.ts Outdated Show resolved Hide resolved
src/test/abilities/aroma_veil.test.ts Outdated Show resolved Hide resolved
src/test/abilities/aroma_veil.test.ts Outdated Show resolved Hide resolved
src/data/battler-tags.ts Outdated Show resolved Hide resolved
@frutescens frutescens merged commit 57f39ef into pagefaultgames:beta Sep 25, 2024
14 checks passed
src/data/arena-tag.ts Show resolved Hide resolved
src/data/arena-tag.ts Show resolved Hide resolved
src/data/arena-tag.ts Show resolved Hide resolved
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Ability Affects an ability Enhancement New feature or request Move Affects a move
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants