exports.BattleText = {
	default: {
		startBattle: "Battle started between [TRAINER] and [TRAINER]!",
		winBattle: "**[TRAINER]** won the battle!",
		tieBattle: "Tie between [TRAINER] and [TRAINER]!",

		pokemon: "[NICKNAME]",
		opposingPokemon: "the opposing [NICKNAME]",
		team: "your team",
		opposingTeam: "the opposing team",

		turn: "== Turn [NUMBER] ==",
		switchIn: "[TRAINER] sent out [FULLNAME]!",
		switchInOwn: "Go! [FULLNAME]!",
		switchOut: "[TRAINER] withdrew [NICKNAME]!",
		switchOutOwn: "[NICKNAME], come back!",
		drag: "[FULLNAME] was dragged out!",
		faint: "[POKEMON] fainted!",
		swap: "[POKEMON] and [TARGET] switched places!",
		swapCenter: "[POKEMON] moved to the center!",

		zEffect: "  [POKEMON] unleases its full-force Z-Move!",
		move: "[POKEMON] used **[MOVE]**!",
		abilityActivation: "  [[POKEMON]'s [ABILITY]]",

		mega: "  [POKEMON]'s [ITEM] is reacting to the Key Stone!",
		megaNoItem: "  [POKEMON] is reacting to [TRAINER]'s Key Stone!",
		megaGen6: "  [POKEMON]'s [ITEM] is reacting to [TRAINER]'s Mega Bracelet!",
		transformMega: "[POKEMON] has Mega Evolved into Mega [SPECIES]!",
		primal: "[POKEMON]'s Primal Reversion! It reverted to its primal state!",
		zPower: "  [POKEMON] surrounded itself with its Z-Power!",
		zBroken: "  [POKEMON] couldn't fully protect itself and got hurt!",

		// in case the different default messages didn't make it obvious, the difference
		// is that the `cant` message REPLACES "Pokemon used Move!", while the `fail`
		// message happens AFTER "Pokemon used Move!"
		cant: "[POKEMON] can't use [MOVE]!",
		cantNoMove: "[POKEMON] can't move!",
		fail: "  But it failed!",

		// n.b. this is the default message for in-battle forme changes
		// for the move Transform and ability Imposter, see the entry for the move Transform
		transform: "[POKEMON] transformed!",
		typeChange: "  [POKEMON] transformed into the [TYPE] type!",
		typeChangeFromEffect: "  [POKEMON]'s [EFFECT] made it the [TYPE] type!",
		typeAdd: "  [TYPE] type was added to [POKEMON]!",

		start: "  ([EFFECT] started on [POKEMON]!)",
		end: "  [POKEMON] was freed from [EFFECT]!",
		activate: "  ([EFFECT] activated!)",
		startTeamEffect: "  ([EFFECT] started on [TEAM]!)",
		endTeamEffect: "  ([EFFECT] ended on [TEAM]!)",
		startFieldEffect: "  ([EFFECT] started!)",
		endFieldEffect: "  ([EFFECT] ended!)",

		changeAbility: "  [POKEMON] acquired [ABILITY]!",
		addItem: "  [POKEMON] obtained one [ITEM].", // Trick, Switcheroo
		takeItem: "  [POKEMON] stole [SOURCE]'s [ITEM]!", // Thief, Covet, Magician, Pickpocket
		eatItem: "  [POKEMON] ate its [ITEM]!",
		useGem: "  The [ITEM] strengthened [POKEMON]'s power!",
		eatItemWeaken: "  The [ITEM] weakened damage to [POKEMON]!",
		removeItem: "  [POKEMON] lost its [ITEM]!",
		activateItem: "  ([POKEMON] used its [ITEM]!)",
		activateWeaken: "  The [ITEM] weakened the damage to [POKEMON]!",

		damage: "  ([POKEMON] was hurt!)",
		damagePercentage: "  ([POKEMON] lost [PERCENTAGE] of its health!)",
		damageFromPokemon: "  [POKEMON] is hurt by [SOURCE]'s [ITEM]!", // Jaboca/Rowap Berry
		damageFromItem: "  [POKEMON] is hurt by its [ITEM]!", // Sticky Barb
		damageFromPartialTrapping: "  [POKEMON] is hurt by [MOVE]!",
		heal: "  [POKEMON] restored its HP.",
		healFromZEffect: "  [POKEMON] restored its HP using its Z-Power!",
		healFromEffect: "  [POKEMON] restored HP using its [EFFECT]!",

		boost: "  [POKEMON]'s [STAT] rose!",
		boost2: "  [POKEMON]'s [STAT] rose sharply!",
		boost3: "  [POKEMON]'s [STAT] rose drastically!",
		boost0: "  [POKEMON]'s [STAT] won't go any higher!",
		boostFromItem: "  The [ITEM] raised [POKEMON]'s [STAT]!",
		boost2FromItem: "  The [ITEM] sharply raised [POKEMON]'s [STAT]!",
		boost3FromItem: "  The [ITEM] drastically raised [POKEMON]'s [STAT]!",
		boostFromZEffect: "  [POKEMON] boosted its [STAT] using its Z-Power!",
		boost2FromZEffect: "  [POKEMON] boosted its [STAT] sharply using its Z-Power!",
		boost3FromZEffect: "  [POKEMON] boosted its [STAT] drastically using its Z-Power!",
		boostMultipleFromZEffect: "  [POKEMON] boosted its stats using its Z-Power!",

		unboost: "  [POKEMON]'s [STAT] fell!",
		unboost2: "  [POKEMON]'s [STAT] fell harshly!",
		unboost3: "  [POKEMON]'s [STAT] fell severely!",
		unboost0: "  [POKEMON]'s [STAT] won't go any lower!",
		unboostFromItem: "  The [ITEM] lowered [POKEMON]'s [STAT]!",
		unboost2FromItem: "  The [ITEM] harshly lowered [POKEMON]'s [STAT]!",
		unboost3FromItem: "  The [ITEM] drastically lowered [POKEMON]'s [STAT]!",

		swapBoost: "  [POKEMON] switched stat changes with its target!",
		swapOffensiveBoost: "  [POKEMON] switched all changes to its Attack and Sp. Atk with its target!",
		swapDefensiveBoost: "  [POKEMON] switched all changes to its Defense and Sp. Def with its target!",
		copyBoost: "  [POKEMON] copied [TARGET]'s stat changes!",
		clearBoost: "  [POKEMON]'s stat changes were removed!",
		clearBoostFromZEffect: "  [POKEMON] returned its decreased stats to normal using its Z-Power!",
		invertBoost: "  [POKEMON]'s stat changes were inverted!",
		clearAllBoost: "  All stat changes were eliminated!",

		superEffective: "  It's super effective!",
		superEffectiveSpread: "  It's super effective on [POKEMON]!",
		resisted: "  It's not very effective...",
		resistedSpread: "  It's not very effective on [POKEMON].",
		crit: "  A critical hit!",
		critSpread: "  A critical hit on [POKEMON]!",
		immune: "  It doesn't affect [POKEMON]...",
		immuneNoPokemon: "  It had no effect!", // old gens
		immuneOHKO: "  [POKEMON] is unaffected!",
		miss: "  [POKEMON] avoided the attack!",
		missNoPokemon: "  [SOURCE]'s attack missed!", // old gens

		center: "  Automatic center!",
		noTarget: "  But there was no target...", // gen 5 and earlier
		ohko: "  It's a one-hit KO!",
		combine: "  The two moves have become one! It's a combined move!",
		hitCount: "  Hit [NUMBER] times!",
		hitCountSingular: "  Hit 1 time!",
	},

	// stats
	hp: {
		statName: "HP",
		statShortName: "HP",
	},
	atk: {
		statName: "Attack",
		statShortName: "Atk",
	},
	def: {
		statName: "Defense",
		statShortName: "Def",
	},
	spa: {
		statName: "Special Attack",
		statShortName: "SpA",
	},
	spd: {
		statName: "Special Defense",
		statShortName: "SpD",
	},
	spe: {
		statName: "Speed",
		statShortName: "Spe",
	},
	accuracy: {
		statName: "accuracy",
	},
	evasion: {
		statName: "evasiveness",
	},
	spc: {
		statName: "Special",
		statShortName: "Spc",
	},
	stats: {
		statName: "stats",
	},

	// statuses
	brn: {
		start: "  [POKEMON] was burned!",
		startFromItem: "  [POKEMON] was burned by the [ITEM]!",
		alreadyStarted: "  [POKEMON] already has a burn.",
		end: "  [POKEMON]'s burn was healed.",
		endFromItem: "  [POKEMON]'s [ITEM] healed its burn!",
		damage: "  [POKEMON] was hurt by its burn!",
	},
	frz: {
		start: "  [POKEMON] was frozen solid!",
		alreadyStarted: "  [POKEMON] is already frozen solid!",
		end: "  [POKEMON] thawed out!",
		endFromItem: "  [POKEMON]'s [ITEM] defrosted it!",
		endFromMove: "  [POKEMON]'s [MOVE] melted the ice!",
		cant: "[POKEMON] is frozen solid!",
	},
	par: {
		start: "  [POKEMON] is paralyzed! It may be unable to move!",
		alreadyStarted: "  [POKEMON] is already paralyzed.",
		end: "  [POKEMON] was cured of paralysis.",
		endFromItem: "  [POKEMON]'s [ITEM] cured its paralysis!",
		cant: "[POKEMON] is paralyzed! It can't move!",
	},
	psn: {
		start: "  [POKEMON] was poisoned!",
		alreadyStarted: "  [POKEMON] is already poisoned.",
		end: "  [POKEMON] was cured of its poisoning.",
		endFromItem: "  [POKEMON]'s [ITEM] cured its poison!",
		damage: "  [POKEMON] was hurt by poison!",
	},
	tox: {
		start: "  [POKEMON] was badly poisoned!",
		startFromItem: "  [POKEMON] was badly poisoned by the [ITEM]!",
		end: "#psn",
		endFromItem: "#psn",
		alreadyStarted: "#psn",
		damage: "#psn",
	},
	slp: {
		start: "  [POKEMON] fell asleep!",
		startFromRest: "  [POKEMON] slept and became healthy!",
		alreadyStarted: "  [POKEMON] is already asleep!",
		end: "  [POKEMON] woke up!",
		endFromItem: "  [POKEMON]'s [ITEM] woke it up!",
		cant: "[POKEMON] is fast asleep.",
	},

	// misc effects
	confusion: {
		start: "  [POKEMON] became confused!",
		startFromFatigue: "  [POKEMON] became confused due to fatigue!",
		end: "  [POKEMON] snapped out of its confusion!",
		endFromItem: "  [POKEMON]'s [ITEM] snapped it out of its confusion!",
		alreadyStarted: "  [POKEMON] is already confused!",
		activate: "  [POKEMON] is confused!",
		damage: "It hurt itself in its confusion!",
	},
	drain: {
		heal: "  [SOURCE] had its energy drained!",
	},
	flinch: {
		cant: "[POKEMON] flinched and couldn't move!",
	},
	healreplacement: {
		activate: "  [POKEMON] will restore its replacement's HP using its Z-Power!",
	},
	nopp: {
		cant: "[POKEMON] used [MOVE]!\n  But there was no PP left for the move!",
	},
	recharge: {
		cant: "[POKEMON] must recharge!",
	},
	recoil: {
		damage: "  [POKEMON] is damaged by the recoil!",
	},
	unboost: {
		fail: "  [POKEMON]'s stats were not lowered!",
		failSingular: "  [POKEMON]'s [STAT] was not lowered!",
	},
	struggle: {
		activate: "  [POKEMON] has no moves left!",
	},
	trapped: {
		start: "  [POKEMON] can no longer escape!",
	},

	// weather
	sandstorm: {
		weatherName: "Sandstorm",
		start: "  A sandstorm kicked up!",
		end: "  The sandstorm subsided.",
		upkeep: "  The sandstorm is raging.",
		damage: "  [POKEMON] is buffeted by the sandstorm!",
	},
	sunnyday: {
		weatherName: "Sun",
		start: "  The sunlight turned harsh!",
		end: "  The sunlight faded.",
		upkeep: "  (The sunlight is strong!)",
	},
	raindance: {
		weatherName: "Rain",
		start: "  It started to rain!",
		end: "  The rain stopped.",
		upkeep: "  (Rain continues to fall!)",
	},
	hail: {
		weatherName: "Hail",
		start: "  It started to hail!",
		end: "  The hail stopped.",
		upkeep: "  The hail is crashing down.",
		damage: "  [POKEMON] is buffeted by the hail!",
	},
	desolateland: {
		weatherName: "Intense Sun",
		start: "  The sunlight turned extremely harsh!",
		end: "  The extremely harsh sunlight faded.",
		block: "  The extremely harsh sunlight was not lessened at all!",
		blockMove: "  The Water-type attack evaporated in the harsh sunlight!",
	},
	primordialsea: {
		weatherName: "Heavy Rain",
		start: "  A heavy rain began to fall!",
		end: "  The heavy rain has lifted!",
		block: "  There is no relief from this heavy rain!",
		blockMove: "  The Fire-type attack fizzled out in the heavy rain!",
	},
	deltastream: {
		weatherName: "Strong Winds",
		start: "  Mysterious strong winds are protecting Flying-type Pok\u00E9mon!",
		end: "  The mysterious strong winds have dissipated!",
		activate: "  The mysterious strong winds weakened the attack!",
		block: "  The mysterious strong winds blow on regardless!",
	},

	// terrain
	electricterrain: {
		start: "  An electric current runs across the battlefield!",
		end: "  The electricity disappeared from the battlefield.",
		block: "  [POKEMON] surrounds itself with electrified terrain!",
	},
	grassyterrain: {
		start: "  Grass grew to cover the battlefield!",
		end: "  The grass disappeared from the battlefield.",
	},
	mistyterrain: {
		start: "  Mist swirls around the battlefield!",
		end: "  The mist disappeared from the battlefield.",
		block: "  [POKEMON] surrounds itself with a protective mist!",
	},
	psychicterrain: {
		start: "  The battlefield got weird!",
		end: "  The weirdness disappeared from the battlefield!",
		block: "  [POKEMON] surrounds itself with psychic terrain!",
	},

	// field effects
	gravity: {
		start: "  Gravity intensified!",
		end: "  Gravity returned to normal!",
		cant: "[POKEMON] can't use [MOVE] because of gravity!",
		activate: "[POKEMON] couldn't stay airborne because of gravity!",
	},
	magicroom: {
		start: "  It created a bizarre area in which Pok\u00E9mon's held items lose their effects!",
		end: "  Magic Room wore off, and held items' effects returned to normal!",
	},
	mudsport: {
		start: "  Electricity's power was weakened!",
		end: "  The effects of Mud Sport have faded.",
	},
	trickroom: {
		start: "  [POKEMON] twisted the dimensions!",
		end: "  The twisted dimensions returned to normal!",
	},
	watersport: {
		start: "  Fire's power was weakened!",
		end: "  The effects of Water Sport have faded.",
	},
	wonderroom: {
		start: "  It created a bizarre area in which Defense and Sp. Def stats are swapped!",
		end: "  Wonder Room wore off, and Defense and Sp. Def stats returned to normal!",
	},

	// moves
	afteryou: {
		activate: "  [TARGET] took the kind offer!",
	},
	aquaring: {
		start: "  [POKEMON] surrounded itself with a veil of water!",
		heal: "  A veil of water restored [POKEMON]'s HP!",
	},
	aromatherapy: {
		activate: "  A soothing aroma wafted through the area!",
	},
	attract: {
		start: "  [POKEMON] fell in love!",
		startFromItem: "  [POKEMON] fell in love from the [ITEM]!",
		end: "  [POKEMON] got over its infatuation!",
		endFromItem: "  [POKEMON] cured its infatuation using its [ITEM]!",
		activate: "  [POKEMON] is in love with [TARGET]!",
		cant: "[POKEMON] is immobilized by love!",
	},
	auroraveil: {
		start: "  Aurora Veil made [TEAM] stronger against physical and special moves!",
		end: "  [TEAM]'s Aurora Veil wore off!",
	},
	autotomize: {
		start: "  [POKEMON] became nimble!",
	},
	beakblast: {
		start: "  [POKEMON] started heating up its beak!",
	},
	beatup: {
		activate: "  [TARGET]'s attack!", // past gen only
	},
	bestow: {
		takeItem: "  [POKEMON] received [ITEM] from [SOURCE]!",
	},
	bide: {
		start: "  [POKEMON] is storing energy!",
		end: "  [POKEMON] unleashed its energy!",
		activate: "  [POKEMON] is storing energy!",
	},
	bind: {
		start: "  [POKEMON] was squeezed by [SOURCE]!",
		move: "#wrap", // gen 1 only
	},
	brickbreak: {
		activate: "  [POKEMON] shattered [TEAM]'s protections!",
	},
	bellydrum: {
		boost: "  [POKEMON] cut its own HP and maximized its Attack!"
	},
	bounce: {
		prepare: "[POKEMON] sprang up!",
	},
	bugbite: {
		removeItem: "  [SOURCE] stole and ate its target's [ITEM]!",
	},
	burnup: {
		typeChange: "  [POKEMON] burned itself out!",
	},
	celebrate: {
		activate: "  Congratulations, [TRAINER]!",
	},
	charge: {
		start: "  [POKEMON] began charging power!",
	},
	clamp: {
		start: "  [SOURCE] clamped down on [POKEMON]!",
		move: "#wrap", // gen 1 only
	},
	craftyshield: {
		start: "  Crafty Shield protected [TEAM]!",
		block: "  Crafty Shield protected [POKEMON]!",
	},
	crash: {
		damage: "  [POKEMON] kept going and crashed!",
	},
	curse: {
		start: "  [SOURCE] cut its own HP and put a curse on [POKEMON]!",
		damage: "  [POKEMON] is afflicted by the curse!",
	},
	darkvoid: {
		fail: "But [POKEMON] can't use the move!",
		failWrongForme: "But [POKEMON] can't use it the way it is now!",
	},
	destinybond: {
		start: "[POKEMON] is hoping to take its attacker down with it!",
		activate: "  [POKEMON] took its attacker down with it!",
	},
	dig: {
		prepare: "[POKEMON] burrowed its way under the ground!",
	},
	disable: {
		start: "  [POKEMON]'s [MOVE] was disabled!",
		end: "  [POKEMON]'s move is no longer disabled!",
	},
	dive: {
		prepare: "[POKEMON] hid underwater!",
	},
	doomdesire: {
		start: "  [POKEMON] chose Doom Desire as its destiny!",
		activate: "  [TARGET] took the Doom Desire attack!",
	},
	dragonascent: {
		megaNoItem: "  [TRAINER]'s fervent wish has reached [POKEMON]!",
	},
	electrify: {
		start: "  [POKEMON]'s moves have been electrified!",
	},
	embargo: {
		start: "  [POKEMON] can't use items anymore!",
		end: "  [POKEMON] can use items again!",
	},
	encore: {
		start: "  [POKEMON] received an encore!",
		end: "  [POKEMON]'s encore ended!",
	},
	endure: {
		start: "  [POKEMON] braced itself!",
		activate: "  [POKEMON] endured the hit!",
	},
	fairylock: {
		activate: "  No one will be able to run away during the next turn!",
	},
	feint: {
		activate: "  [TARGET] fell for the feint!",
	},
	firepledge: {
		activate: "#waterpledge",
		start: "  A sea of fire enveloped [TEAM]!",
		end: "  The sea of fire around [TEAM] disappeared!",
		damage: "  [POKEMON] is hurt by the sea of fire!",
	},
	firespin: {
		start: "  [POKEMON] became trapped in the fiery vortex!",
		move: "#wrap", // gen 1 only
	},
	flameburst: {
		damage: "  The bursting flame hit [POKEMON]!",
	},
	fling: {
		removeItem: "  [POKEMON] flung its [ITEM]!",
	},
	fly: {
		prepare: "[POKEMON] flew up high!",
	},
	focusenergy: {
		start: "  [POKEMON] is getting pumped!",
		startFromItem: "  [POKEMON] used the [ITEM] to get pumped!",
		startFromZEffect: "  [POKEMON] boosted its critical-hit ratio using its Z-Power!",
	},
	focuspunch: {
		start: "  [POKEMON] is tightening its focus!",
		cant: "[POKEMON] lost its focus and couldn't move!",
	},
	followme: {
		start: "  [POKEMON] became the center of attention!",
		startFromZEffect: "  [POKEMON] became the center of attention!",
	},
	foresight: {
		start: "  [POKEMON] was identified!",
	},
	freezeshock: {
		prepare: "  [POKEMON] became cloaked in a freezing light!",
	},
	futuresight: {
		start: "  [POKEMON] foresaw an attack!",
		activate: "  [TARGET] took the Future Sight attack!",
	},
	gastroacid: {
		start: "  [POKEMON]'s Ability was suppressed!",
	},
	geomancy: {
		prepare: "[POKEMON] is absorbing power!",
	},
	grasspledge: {
		activate: "#waterpledge",
		start: "  A swamp enveloped [TEAM]!",
		end: "  The swamp around [TEAM] disappeared!",
	},
	grudge: {
		activate: "  [POKEMON]'s [MOVE] lost all of its PP due to the grudge!",
		start: "[POKEMON] wants its target to bear a grudge!",
	},
	guardsplit: {
		activate: "  [POKEMON] shared its guard with the target!",
	},
	happyhour: {
		activate: "  Everyone is caught up in the happy atmosphere!",
	},
	healbell: {
		activate: "  A bell chimed!",
	},
	healblock: {
		start: "  [POKEMON] was prevented from healing!",
		end: "  [POKEMON]'s Heal Block wore off!",
		cant: "[POKEMON] can't use [MOVE] because of Heal Block!",
	},
	healingwish: {
		heal: "  The healing wish came true for [POKEMON]!",
	},
	helpinghand: {
		start: "  [SOURCE] is ready to help [POKEMON]!",
	},
	highjumpkick: {
		damage: "#crash",
	},
	hyperspacefury: {
		activate: "#shadowforce",
		fail: "#darkvoid",
	},
	hyperspacehole: {
		activate: "#shadowforce",
	},
	iceburn: {
		prepare: "  [POKEMON] became cloaked in freezing air!",
	},
	imprison: {
		start: "  [POKEMON] sealed any moves its target shares with it!",
		cant: "[POKEMON] can't use its sealed [MOVE]!",
	},
	incinerate: {
		removeItem: "  [POKEMON]'s [ITEM] was burned up!",
	},
	infestation: {
		start: "  [POKEMON] has been afflicted with an infestation by [SOURCE]!",
	},
	ingrain: {
		start: "  [POKEMON] planted its roots!",
		block: "  [POKEMON] anchored itself with its roots!",
		heal: "  [POKEMON] absorbed nutrients with its roots!",
	},
	instruct: {
		activate: "  [TARGET] used the move instructed by [POKEMON]!",
	},
	iondeluge: {
		activate: "  A deluge of ions showers the battlefield!",
	},
	jumpkick: {
		damage: "#crash",
	},
	knockoff: {
		removeItem: "  [SOURCE] knocked off [POKEMON]'s [ITEM]!",
	},
	laserfocus: {
		start: "  [POKEMON] concentrated intensely!",
	},
	leechseed: {
		start: "  [POKEMON] was seeded!",
		end: "  [POKEMON] was freed from Leech Seed!",
		damage: "  [POKEMON]'s health is sapped by Leech Seed!",
	},
	lightscreen: {
		start: "  Light Screen made [TEAM] stronger against special moves!",
		end: "  [TEAM]'s Light Screen wore off!",
		// gen 1
		startGen1: "  [POKEMON]'s protected against special attacks!",
	},
	lockon: {
		start: "  [SOURCE] took aim at [POKEMON]!",
	},
	luckychant: {
		start: "  Lucky Chant shielded [TEAM] from critical hits!",
		end: "  [TEAM]'s Lucky Chant wore off!",
	},
	lunardance: {
		heal: "  [POKEMON] became cloaked in mystical moonlight!",
	},
	magiccoat: {
		start: "  [POKEMON] shrouded itself with Magic Coat!",
		move: "[POKEMON] bounced the [MOVE] back!",
	},
	magikarpsrevenge: {
		fail: "#darkvoid",
	},
	magmastorm: {
		start: "  [POKEMON] became trapped by swirling magma!",
	},
	magnitude: {
		activate: "  Magnitude [NUMBER]!",
	},
	matblock: {
		start: "  [POKEMON] intends to flip up a mat and block incoming attacks!",
		block: "  [MOVE] was blocked by the kicked-up mat!",
	},
	magnetrise: {
		start: "  [POKEMON] levitated with electromagnetism!",
		end: "  [POKEMON]'s electromagnetism wore off!",
		// "The electromagnetism of [POKEMON] wore off!" // PO artifact?
	},
	memento: {
		heal: "  [POKEMON]'s HP was restored by the Z-Power!",
	},
	metronome: {
		move: "Waggling a finger let it use [MOVE]!",
	},
	mimic: {
		start: "  [POKEMON] learned [MOVE]!",
	},
	mindreader: {
		start: "#lockon",
	},
	miracleeye: {
		start: "#foresight",
	},
	mist: {
		start: "  [TEAM] became shrouded in mist!",
		end: "  [TEAM] is no longer protected by mist!",
		block: "  [POKEMON] is protected by the mist!",
	},
	naturepower: {
		move: "Nature Power turned into [MOVE]!",
	},
	nightmare: {
		start: "  [POKEMON] began having a nightmare!",
		damage: "  [POKEMON] is locked in a nightmare!",
	},
	painsplit: {
		activate: "  The battlers shared their pain!",
	},
	partingshot: {
		heal: "#memento",
	},
	payday: {
		activate: "  Coins were scattered everywhere!",
	},
	perishsong: {
		start: "  All Pok\u00E9mon that heard the song will faint in three turns!",
		activate: "  [POKEMON]'s perish count fell to [NUMBER].",
	},
	phantomforce: {
		prepare: "#shadowforce",
		activate: "#shadowforce",
	},
	pluck: {
		removeItem: '#bugbite',
	},
	powder: {
		start: "  [POKEMON] is covered in powder!",
		activate: "  When the flame touched the powder on the Pok\u00E9mon, it exploded!",
	},
	powersplit: {
		activate: "  [POKEMON] shared its power with the target!",
	},
	powertrick: {
		start: "  [POKEMON] switched its Attack and Defense!",
		end: '#.start',
	},
	protect: {
		start: "  [POKEMON] protected itself!",
		block: "  [POKEMON] protected itself!",
	},
	pursuit: {
		activate: "  ([TARGET] is being withdrawn...)",
	},
	quash: {
		activate: "  [TARGET]'s move was postponed!",
	},
	quickguard: {
		start: "  Quick Guard protected [TEAM]!",
		block: "  Quick Guard protected [POKEMON]!",
	},
	ragepowder: {
		start: '#followme',
		startFromZEffect: '#followme',
	},
	razorwind: {
		prepare: "  [POKEMON] whipped up a whirlwind!",
	},
	recycle: {
		addItem: "  [POKEMON] found one [ITEM]!",
	},
	reflect: {
		start: "  Reflect made [TEAM] stronger against physical moves!",
		end: "  [TEAM]'s Reflect wore off!",
		// gen 1
		startGen1: "  [POKEMON] gained armor!",
	},
	reflecttype: {
		typeChange: "  [POKEMON]'s type became the same as [SOURCE]'s type!",
	},
	roleplay: {
		changeAbility: "  [POKEMON] copied [SOURCE]'s [ABILITY] Ability!",
	},
	roost: {
		start: "  ([POKEMON] loses Flying type this turn.)",
	},
	safeguard: {
		start: "  [TEAM] cloaked itself in a mystical veil!",
		end: "  [TEAM] is no longer protected by Safeguard!",
		block: "  [POKEMON] is protected by Safeguard!",
	},
	sandtomb: {
		start: "  [POKEMON] became trapped by the quicksand!",
	},
	shadowforce: {
		activate: "  It broke through [TARGET]'s protection!",
		prepare: "[POKEMON] vanished instantly!",
	},
	shelltrap: {
		start: "  [POKEMON] set a shell trap!",
		prepare: "  [POKEMON] set a shell trap!",
		cant: "[POKEMON]'s shell trap didn't work!",
	},
	sketch: {
		activate: "  [POKEMON] sketched [MOVE]!",
	},
	skillswap: {
		activate: "  [POKEMON] swapped Abilities with its target!",
	},
	skullbash: {
		prepare: "[POKEMON] tucked in its head!",
	},
	skyattack: {
		prepare: "[POKEMON] became cloaked in a harsh light!",
	},
	skydrop: {
		prepare: "[POKEMON] took [TARGET] into the sky!",
		end: "  [POKEMON] was freed from the Sky Drop!",
		failSelect: "Sky Drop won't let [POKEMON] go!",
		failTooHeavy: "  [POKEMON] is too heavy to be lifted!",
	},
	smackdown: {
		start: "  [POKEMON] fell straight down!",
	},
	snatch: {
		start: "  [POKEMON] waits for a target to make a move!",
		activate: "  [POKEMON] snatched [TARGET]'s move!",
	},
	solarbeam: {
		prepare: "  [POKEMON] absorbed light!",
	},
	solarblade: {
		prepare: "#solarbeam",
	},
	spectralthief: {
		clearBoost: "  [SOURCE] stole the target's boosted stats!",
	},
	speedswap: {
		activate: "  [POKEMON] switched Speed with its target!",
	},
	spikes: {
		start: "  Spikes were scattered on the ground all around [TEAM]!",
		end: "  The spikes disappeared from the ground around [TEAM]!",
		damage: "  [POKEMON] is hurt by the spikes!",
	},
	spikyshield: {
		damage: "#roughskin",
	},
	spite: {
		activate: "  It reduced the PP of [TARGET]'s [MOVE] by [NUMBER]!",
	},
	splash: {
		activate: "  But nothing happened!",
	},
	spotlight: {
		start: "#followme",
		startFromZEffect: "#followme",
	},
	stealthrock: {
		start: "  Pointed stones float in the air around [TEAM]!",
		end: "  The pointed stones disappeared from around [TEAM]!",
		damage: "  Pointed stones dug into [POKEMON]!",
	},
	stickyweb: {
		start: "  A sticky web spreads out on the ground around [TEAM]!",
		end: "  The sticky web has disappeared from the ground around [TEAM]!",
		activate: "  [POKEMON] was caught in a sticky web!",
	},
	stockpile: {
		start: "  [POKEMON] stockpiled [NUMBER]!",
		end: "  [POKEMON]'s stockpiled effect wore off!",
	},
	substitute: {
		start: "  [POKEMON] put in a substitute!",
		alreadyStarted: "  [POKEMON] already has a substitute!",
		end: "  [POKEMON]'s substitute faded!",
		fail: "  But it does not have enough HP left to make a substitute!",
		activate: "  The substitute took damage for [POKEMON]!",
	},
	switcheroo: {
		activate: "#trick",
	},
	tailwind: {
		start: "  The Tailwind blew from behind [TEAM]!",
		end: "  [TEAM]'s Tailwind petered out!",
	},
	taunt: {
		start: "  [POKEMON] fell for the taunt!",
		end: "  [POKEMON]'s taunt wore off!",
		cant: "[POKEMON] can't use [MOVE] after the taunt!",
	},
	telekinesis: {
		start: "  [POKEMON] was hurled into the air!",
		end: "  [POKEMON] was freed from the telekinesis!",
	},
	throatchop: {
		cant: "The effects of Throat Chop prevent [POKEMON] from using certain moves!",
	},
	torment: {
		start: "  [POKEMON] was subjected to torment!",
		end: "  [POKEMON]'s torment wore off!",
	},
	toxicspikes: {
		start: "  Poison spikes were scattered on the ground all around [TEAM]!",
		end: "  The poison spikes disappeared from the ground around [TEAM]!",
	},
	transform: {
		transform: "[POKEMON] transformed into [SPECIES]!",
	},
	trick: {
		activate: "  [POKEMON] switched items with its target!",
	},
	uproar: {
		start: "  [POKEMON] caused an uproar!",
		end: "  [POKEMON] calmed down.",
		upkeep: "  [POKEMON] is making an uproar!",
		block: "  But the uproar kept [POKEMON] awake!",
		blockSelf: "  [POKEMON] can't sleep in an uproar!",
	},
	uturn: {
		switchOut: "[POKEMON] went back to [TRAINER]!",
	},
	voltswitch: {
		switchOut: '#uturn',
	},
	waterpledge: {
		activate: "  [POKEMON] is waiting for [TARGET]'s move...",
		start: "  A rainbow appeared in the sky on [TEAM]'s side!",
		end: "  The rainbow on [TEAM]'s side disappeared!",
	},
	weatherball: {
		move: "Breakneck Blitz turned into [MOVE] due to the weather!",
	},
	whirlpool: {
		start: "  [POKEMON] became trapped in the vortex!",
	},
	wideguard: {
		start: "  Wide Guard protected [TEAM]!",
		block: "  Wide Guard protected [POKEMON]!",
	},
	wish: {
		heal: "  [NICKNAME]'s wish came true!",
	},
	wrap: {
		start: "  [POKEMON] was wrapped by [SOURCE]!",
		move: "[POKEMON]'s attack continues!", // gen 1 only
	},
	yawn: {
		start: "  [POKEMON] grew drowsy!",
	},

	// abilities
	aftermath: {
		damage: "  [POKEMON] is hurt!",
	},
	airlock: {
		start: "  The effects of the weather disappeared.",
	},
	angerpoint: {
		boost: "  [POKEMON] maxed its Attack!",
	},
	anticipation: {
		activate: "  [POKEMON] shuddered!",
	},
	aromaveil: {
		block: "  [POKEMON] is protected by an aromatic veil!",
	},
	aurabreak: {
		start: "  [POKEMON] reversed all other Pok\u00E9mon's auras!",
	},
	baddreams: {
		damage: "  [POKEMON] is tormented!",
	},
	battlebond: {
		activate: "  [POKEMON] became fully charged due to its bond with its Trainer!",
		transform: "[POKEMON] became Ash-Greninja!",
	},
	blacksludge: {
		heal: "  [POKEMON] restored a little HP using its Black Sludge!",
	},
	cloudnine: {
		start: "#airlock",
	},
	comatose: {
		start: "  [POKEMON] is drowsing!",
	},
	damp: {
		block: "  [SOURCE] cannot use [MOVE]!",
	},
	darkaura: {
		start: "  [POKEMON] is radiating a dark aura!",
	},
	dazzling: {
		block: "#damp",
	},
	disguise: {
		block: "  Its disguise served it as a decoy!",
		transform: "[POKEMON]'s disguise was busted!",
	},
	dryskin: {
		damage: "  ([POKEMON] was hurt by its Dry Skin.)",
	},
	fairyaura: {
		start: "  [POKEMON] is radiating a fairy aura!",
	},
	flashfire: {
		start: "  The power of [POKEMON]'s Fire-type moves rose!",
	},
	flowerveil: {
		block: "  [POKEMON] surrounded itself with a veil of petals!",
	},
	forewarn: {
		activate: "  It was alerted to [TARGET]'s [MOVE]!",
		activateNoTarget: "  [POKEMON]'s Forewarn alerted it to [MOVE]!",
	},
	frisk: {
		activate: "  [POKEMON] frisked [TARGET] and found its [ITEM]!",
		activateNoTarget: "  [POKEMON] frisked its target and found one [ITEM]!",
	},
	harvest: {
		addItem: "  [POKEMON] harvested one [ITEM]!",
	},
	illusion: {
		end: "  [POKEMON]'s illusion wore off!",
	},
	innardsout: {
		damage: "#aftermath",
	},
	ironbarbs: {
		damage: "#roughskin",
	},
	leftovers: {
		heal: "  [POKEMON] restored a little HP using its Leftovers!",
	},
	lightningrod: {
		activate: "  [POKEMON] took the attack!",
	},
	liquidooze: {
		damage: "  [POKEMON] sucked up the liquid ooze!",
	},
	magicbounce: {
		move: '#magiccoat',
	},
	mindblown: {
		damage: "  ([POKEMON] cut its own HP to power up its move!)",
	},
	moldbreaker: {
		start: "  [POKEMON] breaks the mold!",
	},
	mummy: {
		changeAbility: "  [TARGET]'s Ability became Mummy!",
	},
	naturalcure: {
		activate: "  ([POKEMON] is cured by its Natural Cure!)",
	},
	owntempo: {
		block: "  [POKEMON] doesn't become confused!",
	},
	persistent: {
		activate: "  [POKEMON] extends [MOVE] by 2 turns!",
	},
	pickup: {
		addItem: '#recycle',
	},
	powerconstruct: {
		activate: "  You sense the presence of many!",
		transform: "[POKEMON] transformed into its Complete Forme!",
	},
	powerofalchemy: {
		changeAbility: "#receiver",
	},
	pressure: {
		start: "  [POKEMON] is exerting its pressure!",
	},
	rebound: {
		move: '#magiccoat',
	},
	receiver: {
		changeAbility: "  [SOURCE]'s [ABILITY] was taken over!",
	},
	rockyhelmet: {
		damage: "  [POKEMON] was hurt by the Rocky Helmet!",
	},
	roughskin: {
		damage: "  [POKEMON] was hurt!",
	},
	schooling: {
		transform: "[POKEMON] formed a school!",
		transformEnd: "[POKEMON] stopped schooling!",
	},
	shellbell: {
		heal: "  [POKEMON] restored a little HP using its Shell Bell!",
	},
	shieldsdown: {
		// n.b. this isn't a bug, the game actually says "Shields Down deactivated" on first transformation
		// https://www.youtube.com/watch?v=SThjYBz4SEA
		transform: "Shields Down deactivated!\n([POKEMON] shielded itself.)",
		transformEnd: "Shields Down activated!\n([POKEMON] stopped shielding itself.)",
	},
	slowstart: {
		start: "  [POKEMON] can't get it going!",
		end: "  [POKEMON] finally got its act together!",
	},
	solarpower: {
		damage: "  ([POKEMON] was hurt by its Solar Power.)",
	},
	stancechange: {
		transform: "Changed to Blade Forme!",
		transformEnd: "Changed to Shield Forme!",
	},
	stickyhold: {
		block: "  [POKEMON]'s item cannot be removed!",
	},
	stormdrain: {
		activate: "#lightningrod",
	},
	sturdy: {
		activate: "  [POKEMON] endured the hit!",
	},
	suctioncups: {
		block: "  [POKEMON] anchors itself!",
	},
	sweetveil: {
		block: "  [POKEMON] surrounded itself with a veil of sweetness!",
	},
	symbiosis: {
		activate: "  [POKEMON] shared its [ITEM] with [TARGET]!",
	},
	telepathy: {
		block: "  [POKEMON] avoids attacks by its ally Pok\u00E9mon!",
	},
	teravolt: {
		start: "  [POKEMON] is radiating a bursting aura!",
	},
	trace: {
		changeAbility: "  [POKEMON] traced [SOURCE]'s [ABILITY]!",
	},
	truant: {
		cant: "[POKEMON] is loafing around!",
	},
	turboblaze: {
		start: "  [POKEMON] is radiating a blazing aura!",
	},
	unnerve: {
		start: "  [TEAM] is too nervous to eat Berries!",
	},
	zenmode: {
		transform: 'Zen Mode triggered!',
		transformEnd: 'Zen Mode ended!',
	},

	// items
	airballoon: {
		start: "  [POKEMON] floats in the air with its Air Balloon!",
		end: "  [POKEMON]'s Air Balloon popped!",
	},
	custapberry: {
		activate: "  [POKEMON]'s Custap Berry let it move first!",
	},
	ejectbutton: {
		end: "  [POKEMON] is switched out with the Eject Button!",
	},
	focusband: {
		activate: "  [POKEMON] hung on using its Focus Band!",
	},
	focussash: {
		end: "  [POKEMON] hung on using its Focus Sash!",
	},
	leppaberry: {
		activate: "  [POKEMON] restored PP to its [MOVE] move using Leppa Berry!",
	},
	lifeorb: {
		damage: "  [POKEMON] lost some of its HP!",
	},
	mysteryberry: {
		activate: "  [POKEMON] restored PP to its [MOVE] move using Mystery Berry!",
	},
	powerherb: {
		end: "  [POKEMON] became fully charged due to its Power Herb!",
	},
	protectivepads: {
		block: "  [POKEMON] protected itself with the Protective Pads!",
	},
	quickclaw: {
		activate: "  [POKEMON]'s Quick Claw let it move first!",
	},
	redcard: {
		end: "  [POKEMON] held up its Red Card against [TARGET]!",
	},
	safetygoggles: {
		block: "  [POKEMON] is not affected by [MOVE] thanks to its Safety Goggles!",
	},
	ultranecroziumz: {
		transform: "  Bright light is about to burst out of [POKEMON]!",
		activate: "[POKEMON] regained its true power through Ultra Burst!",
	},
	whiteherb: {
		end: "  [POKEMON] returned its status to normal using its White Herb!",
	},
};
