Hi. I ran some tests, including one of obi's that I quoted below. All of these tests where made on
Pearl version against the twins with two Pachirisu under Floaroma town. I read some posts back that it should be done in Heart Gold or Soul Silver, but I still don't have those versions. At least these tests can be used as a starting point.
Where does a move having 0 PP fall in the veto tiers? This can be tested by using a move with low PP twice in a row, with a faster Pokemon using Spite before the second execution.
I did two tests for this:
The first I used a Bronzor (Lvl 5) with Trick Room and a Misdreavus (over Lvl 40) with Spite. The battle went like this (I'll cut out the Pachirisus' moves, because I don't remember them and they don't affect the outcome anyway):
Turn 1:
Misdreavus Spites one of the Pachirisu, Bronzor uses Trick Room (4 PP afterwards)
Turn 2:
Misdreavus Spites the other Pachirisu, Bronzor uses Trick Room (3 PP)
Turn 3:
Misdreavus Spites Bronzor and the message says that Trick Room's PP was reduced by 3 (in other words, the game doesn't take more PP than those that are left), and afterwards Bronzor uses Trick Room (now with 0 PP) and the following message apears: "But there was no PP left for the move!"
In the following turn I checked the PP of Trick Room and it was at 0, so using a move with 0 PP doesn't put the PP of the move under 0 or anything like that (and I was waiting for a glitch :P )...
I did a second test with similar results. This time I used a second Misdreavus (lvl 5) instead of Bronzor, that I will call MisdreavusB, that had Perish Song, also with 5 PP.
Turn 1:
Misdreavus Spites MisdreavusB and fails, MisdreavusB uses Perish Song (4 PP afterwards)
Turn 2:
Misdreavus Spites MisdreavusB and reduces Perish Song's PP by 4, MisdreavusB uses Perish Song (now with 0 PP) and the "But there was no PP left for the move!" message apears.
So it looks like you can actually use Spite as a makeshift Protect if your Pokémon is faster than the oponent and the move the oponent is going to use has 4 or less PP left.
Second problem:
After all the talking about Shadow Force working as Feint, I had the doubt if it worked for the entire turn or only after it hit. For this test I used a Giratina with Shadow Force and a Rayquaza with ExtremeSpeed (to attack Giratina and do nothing) and Protect.
Turn 1:
Rayquaza ExtremeSpeeds Giratina (no damage), both Pachirisu Quick Attack Rayquaza and hit, then Giratina "vanishes instantly" with Rayquaza as it's target.
Turn 2:
Rayquaza Protects, both Pachirisu Quick Attack Rayquaza and fail to hit due to Protect, then Giratina hits Rayquaza with Shadow Force.
I did a second round with this test with the same results.
So we can see that Shadow Force only takes down Protect after it hits. I would assume that Feint woks the same way, but since it has it's own priority bracket, it may be hard to test. The only thing I see that can be tested is if a second Feint fails after the first one breaks a Protect...
Third problem:
For Future Sight, the special attack and special defence used on calculating damage are those of the Pokémon (user and target) that are on field when the attack is selected. In the same way, acording to the Smogon page of the move, Protect will only work on Future Sight if used on the turn it is selected. But what about accuracy? When does the move check if it hits or misses?
For this test I used a Bronzong with Future Sight, a Staraptor with Double Team, and a third Pokémon that I will call X (because I don't remember which Pokémon it was :P ) for "place holding"
The battle goes as followed:
Turn 1
Bronzong and Pokémon X are on the field. Bronzong Future Sights X and X wastes time.
Turn 2
Pokémon X is switched out for Staraptor and Bronzong Hypnosis one of the Pachirisu.
Turn 3
Staraptor uses Double Team and Bronzong Hypnosis the other Pachirisu (don't know if Hypnosis hits any turn, doesn't matter anyway, it's just stalling turns). At the end of the turn Future Sight comes (I'll show a hit and miss counting at the end).
After this the battle enters the following loop:
Turn 1 of loop
Staraptor is switched for Pokémon X and Bronzong Future Sights X.
Turn 2 of loop
Pokémon X is switched out for Staraptor and Bronzong Hypnosis the Pachirisus, recovers PP of Future Sight or of Double Team or even recovers Staraptors HP (to let the battle go longer).
Turn 3 of loop
Staraptor uses Double Team and Bronzong continues wasting time. At the end of the turn Future Sight comes.
End of loop
So after the first 3 turns and 44 loops (or in other words, 45 Future Sight turns) I obtained the following hit count:
27 hits and 18 misses in 45 Future Sights. This would mean a 27/45=60% accuracy.
With one Double Team, Future Sight's accuracy will be 90%*0.75=67.5%.
With the 60% that I obtained, I think we can tell that the evasion modifiers used to calculate if Future Sight hits or not (and consequntly, the turn the hit test is done) are those of the Pokémon in the field at the moment the move comes.
I don't know if there is any problem with the tests I made (maybe should have done more turns for the Future Sight test?) but if you see any please tell me.