{
    onStart(pokemon) {
        pokemon.removeVolatile("truant");
        if (pokemon.activeTurns && (pokemon.moveThisTurnResult !== void 0 || !this.queue.willMove(pokemon))) {
            pokemon.addVolatile("truant");
        }
    },
    onBeforeMovePriority: 9,
    onBeforeMove(pokemon, target, move) {
        if (move && move.category === 'Status' && move.flags['heal']) {
            return;
        }
        if (pokemon.removeVolatile("truant")) {
            this.add("cant", pokemon, "ability: Truant");
            return false;
        }
        pokemon.addVolatile("truant");
    },
    onUpdate(pokemon) {
        if (pokemon.volatiles["attract"]) {
            this.add("-activate", pokemon, "ability: Truant");
            pokemon.removeVolatile("attract");
            this.add("-end", pokemon, "move: Attract", "[from] ability: Truant");
        }
        if (pokemon.volatiles["taunt"]) {
            this.add("-activate", pokemon, "ability: Truant");
            pokemon.removeVolatile("taunt");
        }
    },
    onImmunity(type, pokemon) {
        if (type === "attract")
            return false;
    },
    onTryHit(pokemon, target, move) {
        if (move.id === "attract" || move.id === "captivate" || move.id === "taunt" || move.id === "partingshot") {
            this.add("-immune", pokemon, "[from] ability: Truant");
            return null;
        }
    },
    onTryBoost(boost, target, source, effect) {
        if (effect.name === "Intimidate" && boost.atk) {
            delete boost.atk;
            this.add("-fail", target, "unboost", "Attack", "[from] ability: Truant", "[of] " + target);
        }
    },
    condition: {},
    flags: {},
    name: "Truant",
    rating: -1,
    num: 54
}
