pokemon-showdown
pokemon-showdown copied to clipboard
Add and improve various move failure messages
This PR does a number of small things:
- Convert Damp, Queenly Majesty, and Dazzling protocol to properly use
-block
protocol - Add a failure message to Corrosive Gas
- Add the always-plays and failure message of Teatime
- Add the proper message for a Pokemon attempting to use an attack mid-Disable
- Add the proper fail message to Aura Wheel
While I'm at it, I'd like to properly add the failure messages for Rest vs. Insomnia / Vital Spirit and Own Tempo vs. confusion, but I those require a client-side update too, so I'm drafting this for now until I figure out how to properly test my server-side changes there.
Should we take this opportunity to make -block
etc consistent?
If I remember correctly, the end goal was to make it work like this:
-
-fail
- some move or other effect fails due to its own mechanics (Counter failing because the opponent hasn't moved) -
-block
- some condition causes some move or other effect to fail (Mirror Coat failing because the opponent has Wonder Guard) -
-immune
- only used for type immunities (most existing uses of-immune
should be-block
instead) -
-activate
- should not be used in situations where-fail
/-block
apply - used only when a condition does something that isn't already described by a different protocol message (Spite reducing PP) -
-ability
,-item
- the equivalent of-start
but for abilities/items; should not be used where-activate
applies (should only be used if the ability/item was changed, or revealed without any other effect; if it's revealed while having an effect,-activate
applies) (Mold Break or Air Balloon announcing itself on switch-in)
I'm down to include that as part of the process!
There's also an interesting argument that we don't need -block
because it means the same thing as -immune
so we should just always just use -immune
. I don't know if that would be more or less confusing, though.
Based on my thoughts in Discord, these are my thoughts on current protocol.
Failure cause | Current protocol | Proposed protocol |
---|---|---|
Choice lock / Gorilla Tactics active and trying to use a move not locked into | fail | cant |
Inner Focus, Own Tempo, Oblivious, and Scrappy blocking Intimidate | fail | immune |
Primordial Sea / Desolate Land blocking Fire / Water moves | fail | block |
Aura Wheel, Dark Void, and Hyperspace Fury as wrong Pokemon | fail | fail |
Bide with no energy stored | fail | fail |
Burn Up when not Fire-type | fail | fail |
Corrosive Gas when target lacks item | N/A | fail |
Weight-based moves into Dynamax | fail | block |
Heal Block against target that already is affected | fail | fail |
Rest at full HP / user has Insomnia or Vital Spirit | fail | fail |
Sky Drop and target above 200kg | fail | fail |
Repeated Soak | fail | fail (but should be corrected in modern gens) |
Substitute | fail | fail |
Move failure on Sub (except stat failures) | fail | fail |
Stat failure on Sub | ? | immune |
Teatime with no Berries eaten | N/A | fail |
Uproar blocking Rest / sleep moves | fail | immune |
Generic 'Try' or 'PrepareHit' failures | fail | fail |
Generic 'TryHit' failures | fail | fail |
Generic 'TryHitField' or 'TryHitSide' failures | fail | fail |
If damage returns false?!?!? Idk | fail | fail |
If user HP is 100% and healing move | fail | fail |
If some kind of healing fails, idk | fail | fail |
Some ultra generic failure if a Pokemon didn't do anything | fail | fail |
Forced switch failure | fail | fail |
Truant loaf | cant | cant |
Full para | cant | cant |
Fast asleep | cant | cant |
Frozen | cant | cant |
Flinched | cant | cant |
Must recharge | cant | cant |
Attract full infatuation | cant | cant |
Disable move is disabled | N/A | cant |
Focus Punch lost focus | cant | cant |
Gravity blocks move | cant | cant |
Heal Block blocks move | cant | cant |
Imprison blocks move | cant | cant |
Magnet Rise / Splash / Telekinesis Z-move failure in Gravity | cant | fail |
Shell Trap and user wasn't hit | cant | fail |
Taunt blocks move | cant | cant |
Throat Chop move failure | cant | cant |
Move has no PP | cant | cant |
Aroma Veil / Flower Veil / Pastel Veil / Sweet Veil | block | immune |
Damp / Queenly / Dazzling | cant | block |
Dynamax phazing moves | block | block |
All Abilities with -immune | immune | immune |
Pollen Puff into full HP | immune | fail |
Rototiller into ungrounded target | immune | immune |
Sky Drop and target has Flying-type | immune | immune |
Telekinesis into Diglett etc | immune | immune |
Powder | immune | immune |
TryImmunity | immune | immune |
Prankster | immune | immune |
OHKO moves vs Dynamax or higher level | immune | immune |
Suction Cups | activate | immune |
Telepathy | activate | immune |
Safety Goggles | activate | immune |
Electric Terrain | activate | immune |
Ingrain | activate | immune |
Mist | activate | immune |
Misty Terrain | activate | immune |
Psychic Terrain | activate | immune |
Safeguard | activate | immune |
Hm, so, as mentioned earlier, I think it's impossible to pick a sensical difference between -immune
and -block
. I can't figure out your rule here.
As for cant
vs -fail
, the difference has always been:
- Replaces "[POKEMON] used [MOVE]" →
cant
- Otherwise →
-fail
You seem to be correctly reflecting this, though. Your other changes appear to be the correct fixes, but again, I can't figure out your line between -immune
and -block
, and I suspect it won't be the same as others' lines between -immune
and -block
, and there's no real reason for them not to be the merged together.
I think merging them is good as well. I don't have a torch to carry one way or another, and simplifying protocol is good! I'll start tackling that now as well as the rest of the list, and note changes in another comment.
The last three commits are untested - I want to go through and verify stuff should work like I expect it to.
If we've decided to make them all -immune
, we might want to consider also renaming the entries in data/text/
.
@DaWoblefet are you planning to do more work on this PR?
https://discord.com/channels/630837856075513856/630845310033330206/1165829327456325662