"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Conditions = void 0;
exports.Conditions = {
    slp: {
        inherit: true,
        onSwitchIn(target) {
            this.effectState.time = this.effectState.startTime;
        },
    },
    partiallytrapped: {
        inherit: true,
        onStart(pokemon, source) {
            this.add('-activate', pokemon, 'move: ' + this.effectState.sourceEffect, `[of] ${source}`);
            this.effectState.boundDivisor = source.hasItem('bindingband') ? 8 : 16;
        },
        onResidual(pokemon) {
            const trapper = this.effectState.source;
            if (trapper && (!trapper.isActive || trapper.hp <= 0 || !trapper.activeTurns)) {
                delete pokemon.volatiles['partiallytrapped'];
                return;
            }
            this.damage(pokemon.baseMaxhp / this.effectState.boundDivisor);
        },
    },
    stall: {
        // Protect, Detect, Endure counter
        duration: 2,
        counterMax: 256,
        onStart() {
            this.effectState.counter = 2;
        },
        onStallMove() {
            // this.effectState.counter should never be undefined here.
            // However, just in case, use 1 if it is undefined.
            const counter = this.effectState.counter || 1;
            if (counter >= 256) {
                return this.randomChance(1, 2 ** 32);
            }
            this.debug(`Success chance: ${Math.round(100 / counter)}%`);
            return this.randomChance(1, counter);
        },
        onRestart() {
            if (this.effectState.counter < this.effect.counterMax) {
                this.effectState.counter *= 2;
            }
            this.effectState.duration = 2;
        },
    },
    gem: {
        duration: 1,
        affectsFainted: true,
        onBasePower(basePower, user, target, move) {
            this.debug('Gem Boost');
            return this.chainModify(1.5);
        },
    },
};
//# sourceMappingURL=conditions.js.map