Truant has a flag attached to it with two possible values: Loafing and NotLoafing. At the end of every round, the flag flips. It does not flip right before, during, or right after the Pokémon in question takes a turn. It flips at the end of every round during the end-of-turn effects. If a Pokémon with Truant switches into battle in the middle of a turn, the flag is set to Loafing and therefore flips to NotLoafing for its first full turn in battle. If a Truant Pokémon is brought into battle between rounds to replace a KOed teammate, its flag will be set to NotLoafing for the next round. (So it'll be set differently depending on when in the round you flip the flag in the code you're writing. If a Pokémon gains the Truant ability mid-round, their flag is immediately set to NotLoafing. So if they use Skill Swap to gain Truant, they will always loaf the following round. If they are given Truant by another Pokémon, they will always loaf on the next round. So, just to be clear, if I have an Alakazam with Truant and I Skill Swap it onto a slower Victreebel, that Victreebel still gets to move this turn, but will loaf next turn. If I have the same Alakazam, but I Skill Swap Truant onto an Aerodactyl that's already taken its turn this round, it will loaf next turn. Was that clear? The only question that I have now is, does the flag reset to NotLoafing if a Pokémon uses Skill Swap and both it and its target have Truant? EDIT: Yes, both flags reset when a Pokémon with Truant uses Skill Swap on another Pokémon with Truant. Testing: Slaking and Alakazam vs. Golduck Both Slaking and Alakazam have Truant. Round 1: Golduck uses Aqua Jet on Alakazam Alakazam loafs around Slaking uses Rock Slide on Golduck Round 2: Alakazam uses Skill Swap on Slaking Slaking uses Rock Slide on Golduck Golduck uses Blizzard and does some damage Round 3: Alakazam loafs around Slaking loafs around Golduck uses Blizzard again.