-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
Implement Taunt, Torment, Heal Block, and Aroma Veil #1153
base: main
Are you sure you want to change the base?
Conversation
TormentI (almost entirely) implemented torment. Torment requirements
Torment implementationTorment prevents the user from selecting the same move twice (see below video). torment.normal.mp4Torment status is removed upon switch, baton pass, and faint (see below video). My abra is tormented with a previous move of growl before switching out. When my abra comes back in, it has no torment status and can use growl again. switch.remove.torment.mp4Torment causes the target to struggle every turn which is has no usable moves (see below videos). Torment + encore means the target will have no usable moves every other turn, starting the turn after the encore status is given. torment.encore.struggle.mp4Torment on a pokemon with only one move in its moveset causes the target to struggle every other turn. torment.one.move.struggle.mp4Torment does not take effect until the turn after it is used (see below video), meaning a pokemon who was just tormented can use the same move as it did last turn. My shuckle keeps using growl. On the turn it is tormented, it is still able to use growl. I cut the video off too early, but the next turn shuckle cannot select growl just like in the first video. torment.wait.next.turn.mp4Torment remains in effect between battles as long as the target remains on the field (see below video). torment.remain.summon.mp4Torment fails on Max pokemon (see below video). torment.fails.max.mp4What's Next for TormentMechanicsMagic guard and magic bounce need to reflect status moves like torment. Torment also needs to bypass substitute. I will leave these to whoever takes on the tasks of implementing these. LocalizationTorment has two messages which need localization: the message when a pokemon is tormented ("pokemon was subjected to torment!") and the message when the user tries to select the same move as they did the previous turn under torment ("pokemon can't use the same move twice in a row due to the torment!"). Unintuitive StruggleAs shown in the third video (about torment causes struggle every other turn in some cases), the UI shows the pokemon's move instead of what will happen, struggle. This could be confusing and/or frustrating, so it would be a good idea to change this move to struggle in this scenario. This also probably applies to other existing implementations of moves like disable. |
TauntI (almost completely) implemented taunt Taunt requirements
Taunt implementationTaunt prevents the target from selecting status moves (see below video). When the target (my Bulbasaur) moves before the user (enemy pokemon), taunt lasts for 4 turns (3 additional turns after the turn it was inflicted). Taunt persists as long as the target remains on the field, even if the user faints. taunt.normal.remain.summon.mp4When the target (my Shuckle) moves after the user (enemy pokemon), taunt lasts for 3 turns (2 additional turns after the turn it was inflicted). taunt.slow.mp4Taunt causes the target to struggle if the target has only status moves (see below video). taunt.struggle.mp4Taunt fails on a pokemon with the oblivious ability. taunt.oblivious.mp4What's Next for TauntMechanicsMagic guard and magic bounce need to reflect status moves like taunt. Taunt also needs to bypass substitute. I will leave these to whoever takes on the tasks of implementing these. LocalizationTaunt has three messages which need localization: the message when a pokemon is taunted ("pokemon fell for the taunt!"), the message when a move fails due to taunt or the user attempts to select a status move while taunted ("pokemon can't use move after the taunt!"), and the message when the taunt duration expires ("pokemon shook off the taunt!"). Unintuitive StruggleSame point as above in torment comment in this pr. |
…ing BattlerTagImmunityAbAttr, and fix BattlerTagImmunityAbAttr's message and ability popping up when activated
…us and aroma veil abilities
…lerTag for heal block and psychic noise
This marks all the changes I want to make for these features, I will start testing and making updated videos/comments soon |
Heal Block/Psychic NoiseI partially implemented the heal block status (just blocks healing moves) for Heal Block and Psychic Noise Heal Block status requirementsRequirements for my partial implementation
Additional Requirements for a full implementation
Heal Block implementationThe Heal Block move inflicts the Heal Block status for 5 turns (including the turn it is used), blocking the use of healing moves. The status remains as long as the pokemon remains on the field, even between battles. NOTE: Giga drain should be usable, but only the damage portion occurs. My implementation currently blocks all healing moves. heal.block.normal.remain.summon.mp4Psychic Noise inflicts the Heal Block status for 2 turns (including the turn it is used). Psychic Noise damages targets who already have the Heal Block status but does not reset the timer. heal.block.psychic.noise.mp4The Heal Block status prevents the target from using a healing move on the same move it is inflicted. The Heal Block status can be transferred with baton pass but is removed when leaving the battlefield otherwise. heal.block.slow.baton.pass.switch.mp4Pokemon with no usable moves as a result of the Heal Block status will struggle. heal.block.struggle.mp4What's Next for Heal Block/Psychic NoiseMechanicsMagic guard and magic bounce need to reflect status moves like heal block, but not the heal block status component of Psychic Noise (tested in showdown). The heal block move does not seem to bypass substitute like taunt and torment, but I am not entirely sure. I will leave these to whoever takes on the tasks of implementing these. LocalizationThe Heal Block status has three messages which need localization: the message when a pokemon is affected by heal block ("pokemon was prevented from healing!"), the message when a move fails due to heal block or the user attempts to select a healing move while affected by heal block ("pokemon can't use move after the Heal Block!"), and the message when the heal block status duration expires ("pokemon's Heal Block wore off!"). Unintuitive StruggleSame point as above in torment comment in this pr. |
DisableI modified the existing implementation for disable to be a BattlerTag like the other move blocking statuses. This comment describes testing the new implementation to ensure everything works properly. Disable requirements
Disable testingDisable disables the target's previously used move for 4 turns (including the turn the status is applied). It fails when the target has not yet used a move. It cancel's the target's move for the turn if the user moves before the target and the target used the same move as last turn. It remains in effect as long as the target remains on the battlefield, even if the user faints. disable.slow.remain.summon.mp4The disable status is removed whenever the user leaves the battlefield (switch, baton pass, faint, etc.). disable.switch.mp4Pokemon with no usable moves as a result of the disable status will struggle. disable.struggle.mp4Disable fails on Max pokemon. disable.max.fail.mp4What's Next for DisableMechanicsMagic guard and magic bounce need to reflect status moves like disable. Disable does not seem to bypass substitute like taunt and torment, but I am not entirely sure. I will leave these to whoever takes on the tasks of implementing these. Unintuitive StruggleSame point as above comments in this pr. |
Aroma VeilI implemented Aroma Veil. Aroma Veil requirements
Aroma Veil implementationAroma Veil prevents the effects of taunt, torment, encore, and disable. aroma.veil.taunt.torment.encore.disable.mp4Aroma Veil prevents the effects of heal block and attract. It also prevents the heal block status of psychic noise but not the damage. aroma.veil.heal.block.psychic.noise.attract.mp4Aroma Veil prevents the disable status from cursed body and the infatuation status from cute charm. aroma.veil.cursed.body.mp4aroma.veil.cute.charm.mp4Aroma Veil can be suppressed by Gastro Acid, like other normal abilities. aroma.veil.gastro.acid.mp4What's left for Aroma VeilI believe Aroma Veil is fully implemented. It only prevents the status conditions listed above and seems to have no other effects or interactions. |
A few other things to consider:
|
Ready for review |
(WIP) Implement Taunt, Torment, and Heal Block moves. All these moves are variants of disable which prevent the target from using certain types of moves. Also implement Aroma Veil, which prevents the effects of these moves and a few others.