text: 'use strict';
  
  /**@type {{[k: string]: ModdedPureEffectData}} */
  let BattleStatuses = {
  	par: {
  		inherit: true,
  		onBeforeMove(pokemon) {
  			if (!pokemon.hasAbility('magicguard') && this.randomChance(1, 4)) {
  				this.add('cant', pokemon, 'par');
  				return false;
  			}
  		},
  	},
  	slp: {
  		name: 'slp',
  		id: 'slp',
  		num: 0,
  		effectType: 'Status',
  		onStart(target) {
  			this.add('-status', target, 'slp');
  			// 1-4 turns
  			this.effectData.time = this.random(2, 6);
  		},
  		onBeforeMovePriority: 10,
  		onBeforeMove(pokemon, target, move) {
  			if (pokemon.hasAbility('earlybird')) {
  				pokemon.statusData.time--;
  			}
  			pokemon.statusData.time--;
  			if (pokemon.statusData.time <= 0) {
  				pokemon.cureStatus();
  				return;
  			}
  			this.add('cant', pokemon, 'slp');
  			if (move.sleepUsable) {
  				return;
  			}
  			return false;
  		},
  	},
  	frz: {
  		inherit: true,
  		onBeforeMove(pokemon, target, move) {
  			if (this.randomChance(1, 5)) {
  				pokemon.cureStatus();
  				return;
  			}
  			if (move.flags['defrost']) return;
  			this.add('cant', pokemon, 'frz');
  			return false;
  		},
  	},
  	substitutebroken: {
  		noCopy: true,
  	},
  	trapped: {
  		inherit: true,
  		noCopy: false,
  	},
  	trapper: {
  		inherit: true,
  		noCopy: false,
  	},
  	partiallytrapped: {
  		inherit: true,
  		durationCallback(target, source) {
  			if (source.hasItem('gripclaw')) return 6;
  			return this.random(3, 7);
  		},
  	},
  	stall: {
  		// In gen 3-4, the chance of protect succeeding does not fall below 1/8.
  		// See http://upokecenter.dreamhosters.com/dex/?lang=en&move=182
  		inherit: true,
  		counterMax: 8,
  	},
  };
  
  exports.BattleStatuses = BattleStatuses;
  