export const Moves = {
    allyswitch: {
        inherit: true,
        // Prevents setting the volatile used to check for Ally Switch failure
        onPrepareHit() { },
    },
    anchorshot: {
        inherit: true,
        isNonstandard: null,
    },
    aromatherapy: {
        inherit: true,
        isNonstandard: null,
    },
    assist: {
        inherit: true,
        flags: { failencore: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1 },
    },
    auroraveil: {
        inherit: true,
        onTry() {
            return this.field.isWeather('hail');
        },
    },
    autotomize: {
        inherit: true,
        isNonstandard: null,
    },
    beakblast: {
        inherit: true,
        isNonstandard: "Past",
    },
    belch: {
        inherit: true,
        flags: { protect: 1, failmefirst: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1 },
    },
    blizzard: {
        inherit: true,
        onModifyMove(move) {
            if (this.field.isWeather('hail'))
                move.accuracy = true;
        },
    },
    boltbeak: {
        inherit: true,
        isNonstandard: null,
    },
    bonemerang: {
        inherit: true,
        isNonstandard: null,
    },
    burnup: {
        inherit: true,
        isNonstandard: null,
    },
    celebrate: {
        inherit: true,
        flags: { nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1 },
    },
    charge: {
        inherit: true,
        condition: {
            onStart(pokemon, source, effect) {
                this.add('-start', pokemon, 'Charge');
            },
            onRestart(pokemon, source, effect) {
                this.add('-start', pokemon, 'Charge');
            },
            onBasePowerPriority: 9,
            onBasePower(basePower, attacker, defender, move) {
                if (move.type === 'Electric') {
                    this.debug('charge boost');
                    return this.chainModify(2);
                }
            },
            onMoveAborted(pokemon, target, move) {
                if (move.id !== 'charge') {
                    pokemon.removeVolatile('charge');
                }
            },
            onAfterMove(pokemon, target, move) {
                if (move.id !== 'charge') {
                    pokemon.removeVolatile('charge');
                }
            },
            onEnd(pokemon) {
                this.add('-end', pokemon, 'Charge', '[silent]');
            },
        },
    },
    chatter: {
        inherit: true,
        flags: {
            protect: 1, mirror: 1, sound: 1, distance: 1, bypasssub: 1,
            noassist: 1, failcopycat: 1, failinstruct: 1, failmefirst: 1, nosleeptalk: 1, failmimic: 1, nosketch: 1,
        },
    },
    copycat: {
        inherit: true,
        flags: { failencore: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1 },
    },
    coreenforcer: {
        inherit: true,
        isNonstandard: null,
    },
    corrosivegas: {
        inherit: true,
        isNonstandard: null,
    },
    craftyshield: {
        inherit: true,
        isNonstandard: null,
    },
    curse: {
        inherit: true,
        onModifyMove(move, source, target) {
            if (!source.hasType('Ghost')) {
                move.target = move.nonGhostTarget;
            }
        },
        target: "randomNormal",
    },
    cut: {
        inherit: true,
        isNonstandard: null,
    },
    darkvoid: {
        inherit: true,
        isNonstandard: "Past",
        flags: { protect: 1, reflectable: 1, mirror: 1, metronome: 1 },
    },
    doubleironbash: {
        inherit: true,
        isNonstandard: null,
    },
    dragonhammer: {
        inherit: true,
        flags: { contact: 1, protect: 1, mirror: 1 },
    },
    dualchop: {
        inherit: true,
        isNonstandard: null,
    },
    electrify: {
        inherit: true,
        isNonstandard: null,
    },
    eternabeam: {
        inherit: true,
        flags: { recharge: 1, protect: 1, mirror: 1, failinstruct: 1 },
        isNonstandard: null,
    },
    fishiousrend: {
        inherit: true,
        isNonstandard: null,
    },
    flowershield: {
        inherit: true,
        isNonstandard: null,
    },
    fly: {
        inherit: true,
        onTryMove(attacker, defender, move) {
            if (attacker.removeVolatile(move.id)) {
                return;
            }
            this.add('-prepare', attacker, move.name);
            if (!this.runEvent('ChargeMove', attacker, defender, move)) {
                return;
            }
            // In SwSh, Fly's animation leaks the initial target through a camera focus
            // The animation leak target itself isn't "accurate"; the target it reveals is as if Fly weren't a charge movee
            // (Fly, like all other charge moves, will actually target slots on its charging turn, relevant for things like Follow Me)
            // We use a generic single-target move to represent this
            if (this.sides.length > 2) {
                const animatedTarget = attacker.getMoveTargets(this.dex.getActiveMove('aerialace'), defender).targets[0];
                if (animatedTarget) {
                    this.hint(`${move.name}'s animation targeted ${animatedTarget.name}`);
                }
            }
            attacker.addVolatile('twoturnmove', defender);
            return null;
        },
    },
    futuresight: {
        inherit: true,
        flags: { metronome: 1, futuremove: 1 },
    },
    geargrind: {
        inherit: true,
        isNonstandard: null,
    },
    gearup: {
        inherit: true,
        isNonstandard: null,
    },
    geomancy: {
        inherit: true,
        isNonstandard: null,
    },
    glaciallance: {
        inherit: true,
        basePower: 130,
    },
    grassyglide: {
        inherit: true,
        basePower: 70,
    },
    grudge: {
        inherit: true,
        isNonstandard: null,
    },
    hail: {
        inherit: true,
        isNonstandard: null,
    },
    headcharge: {
        inherit: true,
        isNonstandard: null,
    },
    heartswap: {
        inherit: true,
        isNonstandard: "Past",
    },
    holdback: {
        inherit: true,
        isNonstandard: null,
    },
    holdhands: {
        inherit: true,
        isNonstandard: null,
        flags: { bypasssub: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1 },
    },
    hyperspacefury: {
        inherit: true,
        isNonstandard: "Past",
        flags: { mirror: 1, bypasssub: 1 },
    },
    hyperspacehole: {
        inherit: true,
        isNonstandard: "Past",
    },
    icehammer: {
        inherit: true,
        isNonstandard: "Past",
    },
    judgment: {
        inherit: true,
        isNonstandard: "Past",
    },
    kinesis: {
        inherit: true,
        isNonstandard: null,
    },
    kingsshield: {
        inherit: true,
        isNonstandard: null,
    },
    landswrath: {
        inherit: true,
        isNonstandard: null,
    },
    laserfocus: {
        inherit: true,
        isNonstandard: null,
    },
    leaftornado: {
        inherit: true,
        isNonstandard: null,
    },
    lovelykiss: {
        inherit: true,
        isNonstandard: null,
    },
    lusterpurge: {
        inherit: true,
        basePower: 70,
    },
    magiccoat: {
        inherit: true,
        isNonstandard: null,
    },
    matblock: {
        inherit: true,
        isNonstandard: null,
    },
    maxairstream: {
        inherit: true,
        isNonstandard: null,
    },
    maxdarkness: {
        inherit: true,
        isNonstandard: null,
    },
    maxflare: {
        inherit: true,
        isNonstandard: null,
    },
    maxflutterby: {
        inherit: true,
        isNonstandard: null,
    },
    maxgeyser: {
        inherit: true,
        isNonstandard: null,
    },
    maxguard: {
        inherit: true,
        isNonstandard: null,
    },
    maxhailstorm: {
        inherit: true,
        isNonstandard: null,
    },
    maxknuckle: {
        inherit: true,
        isNonstandard: null,
    },
    maxlightning: {
        inherit: true,
        isNonstandard: null,
    },
    maxmindstorm: {
        inherit: true,
        isNonstandard: null,
    },
    maxooze: {
        inherit: true,
        isNonstandard: null,
    },
    maxovergrowth: {
        inherit: true,
        isNonstandard: null,
    },
    maxphantasm: {
        inherit: true,
        isNonstandard: null,
    },
    maxquake: {
        inherit: true,
        isNonstandard: null,
    },
    maxrockfall: {
        inherit: true,
        isNonstandard: null,
    },
    maxstarfall: {
        inherit: true,
        isNonstandard: null,
    },
    maxsteelspike: {
        inherit: true,
        isNonstandard: null,
    },
    maxstrike: {
        inherit: true,
        isNonstandard: null,
    },
    maxwyrmwind: {
        inherit: true,
        isNonstandard: null,
    },
    mefirst: {
        inherit: true,
        flags: {
            protect: 1, bypasssub: 1, failencore: 1, failmefirst: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1,
        },
    },
    meteorassault: {
        inherit: true,
        isNonstandard: null,
    },
    metronome: {
        inherit: true,
        flags: { failencore: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1 },
    },
    milkdrink: {
        inherit: true,
        pp: 10,
    },
    mindblown: {
        inherit: true,
        isNonstandard: null,
    },
    mindreader: {
        inherit: true,
        isNonstandard: null,
    },
    mirrorcoat: {
        inherit: true,
        flags: { protect: 1, failmefirst: 1, noassist: 1, failcopycat: 1 },
    },
    mirrormove: {
        inherit: true,
        flags: { failencore: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1 },
    },
    mistball: {
        inherit: true,
        basePower: 70,
    },
    multiattack: {
        inherit: true,
        isNonstandard: null,
    },
    naturepower: {
        inherit: true,
        isNonstandard: null,
        flags: { failencore: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1 },
    },
    naturesmadness: {
        inherit: true,
        isNonstandard: null,
    },
    oblivionwing: {
        inherit: true,
        isNonstandard: null,
    },
    obstruct: {
        inherit: true,
        isNonstandard: null,
    },
    octazooka: {
        inherit: true,
        isNonstandard: null,
    },
    octolock: {
        inherit: true,
        isNonstandard: null,
    },
    plasmafists: {
        inherit: true,
        isNonstandard: null,
    },
    poweruppunch: {
        inherit: true,
        isNonstandard: null,
    },
    psychoboost: {
        inherit: true,
        isNonstandard: "Past",
    },
    psychoshift: {
        inherit: true,
        isNonstandard: null,
    },
    purify: {
        inherit: true,
        isNonstandard: null,
    },
    recover: {
        inherit: true,
        pp: 10,
    },
    relicsong: {
        inherit: true,
        isNonstandard: "Past",
    },
    rest: {
        inherit: true,
        pp: 10,
    },
    revelationdance: {
        inherit: true,
        isNonstandard: "Past",
    },
    revenge: {
        inherit: true,
        isNonstandard: null,
    },
    roost: {
        inherit: true,
        pp: 10,
    },
    searingshot: {
        inherit: true,
        isNonstandard: null,
    },
    secretsword: {
        inherit: true,
        isNonstandard: null,
    },
    seedflare: {
        inherit: true,
        isNonstandard: "Past",
    },
    shadowbone: {
        inherit: true,
        isNonstandard: null,
    },
    shelltrap: {
        inherit: true,
        isNonstandard: null,
    },
    shoreup: {
        inherit: true,
        pp: 10,
    },
    sketch: {
        inherit: true,
        isNonstandard: "Past",
    },
    skullbash: {
        inherit: true,
        isNonstandard: null,
    },
    slackoff: {
        inherit: true,
        pp: 10,
    },
    sleeptalk: {
        inherit: true,
        flags: { failencore: 1, nosleeptalk: 1, noassist: 1, failcopycat: 1, failinstruct: 1 },
    },
    snaptrap: {
        inherit: true,
        isNonstandard: null,
    },
    softboiled: {
        inherit: true,
        pp: 10,
    },
    spectralthief: {
        inherit: true,
        isNonstandard: null,
    },
    stickyweb: {
        inherit: true,
        condition: {
            onSideStart(side) {
                this.add('-sidestart', side, 'move: Sticky Web');
            },
            onEntryHazard(pokemon) {
                if (!pokemon.isGrounded() || pokemon.hasItem('heavydutyboots'))
                    return;
                this.add('-activate', pokemon, 'move: Sticky Web');
                this.boost({ spe: -1 }, pokemon, this.effectState.source, this.dex.getActiveMove('stickyweb'));
            },
        },
    },
    stormthrow: {
        inherit: true,
        isNonstandard: null,
    },
    submission: {
        inherit: true,
        isNonstandard: null,
    },
    tailglow: {
        inherit: true,
        isNonstandard: "Past",
    },
    technoblast: {
        inherit: true,
        isNonstandard: null,
    },
    thousandarrows: {
        inherit: true,
        isNonstandard: null,
    },
    thousandwaves: {
        inherit: true,
        isNonstandard: null,
    },
    toxicthread: {
        inherit: true,
        isNonstandard: "Past",
    },
    trickortreat: {
        inherit: true,
        isNonstandard: null,
    },
    vcreate: {
        inherit: true,
        isNonstandard: null,
    },
    venomdrench: {
        inherit: true,
        isNonstandard: null,
    },
    vitalthrow: {
        inherit: true,
        isNonstandard: null,
    },
    wickedblow: {
        inherit: true,
        basePower: 80,
    },
};
//# sourceMappingURL=moves.mjs.map