Best JavaScript code snippet using cavy
statuses.js
Source:statuses.js  
...4	/*5	// Example:6	userid: {7		noCopy: true,8		onStart() {9			this.add(`c|+Username|Switch In Message`);10		},11		onSwitchOut() {12			this.add(`c|+Username|Switch Out Message`);13		},14		onFaint() {15			this.add(`c|+Username|Faint Message`);16		},17		// Innate effects go here18	},19	*/20	// Please keep statuses organized alphabetically based on staff member name!21	'2xthetap': { // No single quotes causes issues22		noCopy: true,23		onStart() {24			this.add(`c|+2xTheTap|Time for a heckin' battle.`);25		},26		onSwitchOut() {27			this.add(`c|+2xTheTap|Doin' me a heckin' concern.`);28		},29		onFaint() {30			this.add(`c|+2xTheTap|Doin' me the final bamboozle.`);31		},32	},33	'5gen': {34		noCopy: true,35		onStart(source) {36			this.add(`c|+5gen|Someone asked for extra sauce?`);37			if (source.illusion) return;38			this.field.setWeather('sunnyday', source);39		},40		onSwitchOut() {41			this.add(`c|+5gen|Need to get some from the back.`);42		},43		onFaint() {44			this.add(`c|+5gen|I'm not dead yet, just changing formes.`);45		},46	},47	aelita: {48		noCopy: true,49		onStart() {50			this.add(`c|@Aelita|Transfer, Aelita! Scanner, Aelita! Virtualization!`);51		},52		onSwitchOut() {53			this.add(`c|@Aelita|I have a tower to deactivate. See ya!`);54		},55		onFaint() {56			this.add(`c|@Aelita|CODE: LYOKO . Tower deactivated... Return to the past, now!`);57		},58	},59	aeonic: {60		noCopy: true,61		onStart() {62			this.add(`c|%Aeonic|Guys the emoji movie wasn't __that__ bad`);63		},64		onSwitchOut() {65			this.add(`c|%Aeonic|Still better than kie btw`);66		},67		onFaint() {68			this.add(`c|%Aeonic|Don't forget me`);69		},70	},71	aethernum: {72		noCopy: true,73		onStart() {74			this.add(`c|@Aethernum|I am __Eterno__, fear me! ...or not...but you should! ...or not...`);75		},76		onSwitchOut() {77			this.add(`c|@Aethernum|I'm not defeated, i'm just afk :^)`);78		},79		onFaint() {80			this.add(`c|@Aethernum| Has been fun! But i'm too lazy to keep fighting ^_^'`);81		},82	},83	akiamara: {84		noCopy: true,85		onStart() {86			this.add(`c|+Akiamara|alguem br?`);87		},88		onSwitchOut() {89			this.add(`c|+Akiamara|Pode me multar que já volto`);90		},91		onFaint() {92			this.add(`c|+Akiamara|I'm going to report you to my big fren Mitsuki`);93		},94	},95	akir: {96		noCopy: true,97		onStart() {98			this.add(`c|%Akir|hey whats up`);99		},100		onSwitchOut(pokemon) {101			this.add(`c|%Akir|sorry need to build more`);102			if (pokemon.illusion) return;103			pokemon.heal(pokemon.maxhp / 3);104		},105		onFaint() {106			this.add(`c|%Akir|too sleepy, c ya`);107		},108		onSourceModifyDamage(damage, source, target, move) {109			if (target.getMoveHitData(move) && !target.illusion) {110				this.debug('Mushroom Guard halves damage.');111				return this.chainModify(0.5);112			}113		},114	},115	alpha: {116		noCopy: true,117		onStart() {118			this.add(`c|@Alpha|MAMMA MIA! It's me, ALPHA!`);119		},120		onSwitchOut() {121			this.add(`c|@Alpha|brb gonna eat some pizza`);122		},123		onFaint() {124			this.add(`c|@Alpha|PER LA PATRIA!`);125		},126	},127	andrew: {128		noCopy: true,129		onStart() {130			this.add(`c|%Andrew|Hah! You better have BURN HEAL!`);131		},132		onSwitchOut() {133			this.add(`c|%Andrew|brb kuncing`);134		},135		onFaint() {136			this.add(`c|%Andrew|avenge me c.kilgannon!`);137		},138	},139	anubis: {140		noCopy: true,141		onStart() {142			this.add(`c|&Anubis|hi ur qt`);143			// In loving memory of the SSB programming team's sanity.144			if (this.random(300) === 272) this.add(`c|~HoeenHero|Anubis's set is OP against programmer sanity.`);145		},146		onSwitchOut() {147			this.add(`c|&Anubis|brb making coffee`);148		},149		onFaint() {150			this.add(`c|&Anubis|worthless evildoer :(`);151		},152	},153	aquagtothepast: {154		noCopy: true,155		onStart() {156			this.add(`c|+A Quag to The Past|The Goons are all here`);157		},158		onSwitchOut() {159			this.add(`c|+A Quag to The Past|um no`);160		},161		onFaint() {162			this.add(`c|+A Quag to The Past|Wait, this isn't the groupchat...`);163		},164	},165	arandomduck: {166		noCopy: true,167		onStart() {168			this.add(`c|+a random duck|SWANNA LOSE???`);169		},170		onSwitchOut() {171			this.add(`c|+a random duck|YEET`);172		},173		onFaint() {174			this.add(`c|+a random duck|I guess that was my swan song`);175		},176	},177	arcticblast: {178		noCopy: true,179		onStart() {180			this.add(`c|%Arcticblast|My trash friend can do no wrong`);181		},182		onModifyMove(move) {183			if (move.id === 'knockoff') {184				move.onAfterHit = function (target, source) {185					if (source.hp) {186						let item = target.takeItem();187						if (item) {188							this.add('-enditem', target, item.name, '[from] move: Knock Off', '[of] ' + source);189							this.add(`c|%Arcticblast|+20 ;)`);190						}191					}192				};193			}194		},195		onFaint(pokemon) {196			let activeMon = pokemon.side.foe.active[0].template.speciesid;197			if (activeMon === 'greninja') {198				this.add(`c|%Arcticblast|FRIENDS DONâT LET FRIENDS PLAY FROGS`);199			} else if (activeMon === 'pumpkaboosuper') {200				this.add(`c|%Arcticblast|WHY IS MY KAREN PRIZED`);201			} else {202				this.add(`c|%Arcticblast|FREE SKYMIN`);203			}204		},205		onSourceFaint(target) {206			if (target.template.speciesid === 'greninja') {207				this.add(`c|%Arcticblast|FRIENDS DONâT LET FRIENDS PLAY FROGS`);208			}209		},210	},211	arsenal: {212		noCopy: true,213		onStart() {214			this.add(`c|+Arsenal|Wenger In`);215		},216		onSwitchOut() {217			this.add(`c|+Arsenal|Time to watch anime`);218		},219		onFaint() {220			this.add(`c|+Arsenal|Wenger Out`);221		},222	},223	asheviere: {224		noCopy: true,225		onStart() {226			this.add(`c|~Asheviere|The Light shall bring victory!`);227		},228		onSwitchOut() {229			this.add(`c|~Asheviere|Regenerator is very fair and balanced`);230		},231		onFaint() {232			this.add(`c|~Asheviere|Who will lead my kingdom now?`);233		},234	},235	averardo: {236		noCopy: true,237		onStart() {238			this.add(`c|+Averardo|ECCOMI`);239		},240		onSwitchOut() {241			this.add(`c|+Averardo|Scillato (PA)`);242		},243		onFaint() {244			this.add(`c|+Averardo|Non mi sporcare più i MP`);245		},246	},247	beowulf: {248		noCopy: true,249		onStart() {250			this.add(`c|@Beowulf|/me BUZZES LOUDLY`);251		},252		onSwitchOut() {253			this.add(`c|@Beowulf|/me BUZZES LOUDLY`);254		},255		onFaint() {256			this.add(`c|@Beowulf|BUZZ BUZZ BUZZ BUZZ`);257		},258	},259	biggie: {260		noCopy: true,261		onStart() {262			this.add(`c|@biggie|Gamin' on ya`);263		},264		onSwitchOut() {265			this.add(`c|@biggie|Mission complete!`);266		},267		onFaint() {268			this.add(`c|@biggie|It was all a dream`);269		},270	},271	birdy: {272		noCopy: true,273		onStart() {274			this.add(`c|%Birdy~!|And I oop- uh, I mean, hi!`);275		},276		onSwitchOut() {277			this.add(`c|%Birdy~!|Be like that, then. Don't blame ME if you lose.`);278		},279		onFaint() {280			this.add(`c|%Birdy~!|My last words will always be that I don't spam.`);281		},282		// Feather Tuft Innate283		onModifyDefPriority: 6,284		onModifyDef(def, pokemon) {285			if (!pokemon.transformed && !pokemon.illusion) {286				return this.chainModify(1.5);287			}288		},289		onModifySpDPriority: 6,290		onModifySpD(spd, pokemon) {291			if (!pokemon.transformed && !pokemon.illusion) {292				return this.chainModify(1.5);293			}294		},295	},296	bobochan: {297		noCopy: true,298		onStart() {299			this.add(`c|@bobochan|Pika Pika! Just kidding, it's just a knock off clone.`);300		},301		onSwitchOut() {302			this.add(`c|@bobochan|Time to skedaddle!`);303		},304		onFaint() {305			this.add(`c|@bobochan|You cruel trainer for killing an innocent pokemon!`);306		},307	},308	brandon: {309		noCopy: true,310		onStart() {311			this.add(`c|%Brandon|Let's set some mood music: ${['https://www.youtube.com/watch?time_continue=2&v=xFrGuyw1V8s', 'https://www.youtube.com/watch?v=m3-hY-hlhBg', 'https://www.youtube.com/watch?v=IyYnnUcgeMc', 'https://www.youtube.com/watch?v=na7lIb09898', 'https://www.youtube.com/watch?v=FrLequ6dUdM'][this.random(5)]}`);312		},313		onSwitchOut() {314			this.add(`c|%Brandon|I gotta charge my phone brb`);315		},316		onFaint() {317			this.add(`c|%Brandon|I need a nap`);318		},319	},320	cake: {321		noCopy: true,322		onStart(source) {323			this.add(`c|+Cake|h`);324			if (source.illusion) return;325			this.add('-start', source, 'typeadd', 'Ghost');326		},327		onSwitchOut(source) {328			this.add(`c|+Cake|${source.side.name} is a nerd`);329		},330		onFaint() {331			this.add(`c|+Cake|According to all known laws of aviation, there is no way that Dunsparce should be able to fly. Its wings are too small to get its fat little body off the ground. Dunsparce, of course, does not learn Fly for this reason. It does learn Roost, though. Cute li'l winged snake thing.`);332		},333		// Fat Snake Innate334		onModifyDefPriority: 6,335		onModifyDef(def, pokemon) {336			if (!pokemon.transformed && !pokemon.illusion) {337				return this.chainModify(1.5);338			}339		},340		onModifySpDPriority: 6,341		onModifySpD(spd, pokemon) {342			if (!pokemon.transformed && !pokemon.illusion) {343				return this.chainModify(1.5);344			}345		},346	},347	ckilgannon: {348		noCopy: true,349		onStart() {350			this.add(`c|+c.kilgannon|Hope you're not afraid of the dark!`);351		},352		onSwitchOut() {353			this.add(`c|+c.kilgannon|/me growls`);354		},355		onFaint() {356			this.add(`c|+c.kilgannon|Your time will come.`);357		},358	},359	cantsay: {360		noCopy: true,361		onStart() {362			this.add(`c|@cant say|(´ã»Ïã»\`)`);363		},364		onSwitchOut() {365			this.add(`c|@cant say|wow CTed lol`);366		},367		onFaint() {368			this.add(`c|@cant say|bg haxor :(`);369		},370	},371	catalystic: {372		noCopy: true,373		onStart() {374			this.add(`c|+Catalystic|The Birb is here!`);375		},376		onSwitchOut() {377			this.add(`c|+Catalystic|The Birb will be back!`);378		},379		onFaint() {380			this.add(`c|+Catalystic|The Birb is never lucky.`);381		},382	},383	ceteris: {384		noCopy: true,385		onStart() {386			this.add(`c|@Ceteris|Your loss is inevitable, you best forfeit the battle if you know what's good for you. â°(â︿â)ã¤-]ââââ`);387		},388		onSwitchOut(source) {389			this.add(`c|@Ceteris|Saving the best for last, ${source.side.name}, a wise choice my friend.`);390		},391		onFaint() {392			this.add(`c|@Ceteris|IMPOSSIBLE!! THIS IS AN OUTRAGE!! I WILL EXACT MY REVENGE ON YOU ONE DAY (â£_â¢)`);393		},394	},395	chaos: {396		noCopy: true,397		// No phrases provided398	},399	chloe: {400		noCopy: true,401		onStart() {402			this.add(`c|@Chloe|hlelo`);403		},404		onSwitchOut() {405			this.add(`c|@Chloe|bubye`);406		},407		onFaint() {408			this.add(`c|@Chloe|aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa`);409		},410	},411	darth: {412		noCopy: true,413		onStart() {414			this.add(`c|+Darth|The angel of stall descends upon the battlefield.`);415		},416		onSwitchOut() {417			this.add(`c|+Darth|The angel of stall has decided upon a tactical retreat.`);418		},419		onFaint() {420			this.add(`c|+Darth|Regenerator is a perfectly balanced ability.`);421		},422	},423	dawoblefet: {424		noCopy: true,425		onStart() {426			this.add(`c|@DaWoblefet|What's going on guys? This is DaWoblefet, and welcome to Mechanics Monday.`);427		},428		onSwitchOut() {429			this.add(`c|@DaWoblefet|Until next time, have a good one.`);430		},431		onFaint() {432			this.add(`c|@DaWoblefet|mished`);433		},434	},435	decem: {436		noCopy: true,437		onStart() {438			this.add(`c|+Decem|:D`);439		},440		onSwitchOut() {441			this.add(`c|+Decem|bye`);442		},443		onFaint() {444			this.add(`c|+Decem|>:(`);445		},446	},447	deetah: {448		noCopy: true,449		onStart() {450			this.add(`c|+deetah|I can see right through you.`);451		},452		onSwitchOut() {453			this.add(`c|+deetah|Meow :3`);454		},455		onFaint() {456			this.add(`c|+deetah|I have 8 lives left, you can't get rid of me that easily.`);457		},458	},459	dragonwhale: {460		noCopy: true,461		onStart() {462			this.add(`c|@DragonWhale|i would switch to chomper here`);463		},464	},465	e4flint: {466		// Fire type when mega evolving implemented in scripts.js467		noCopy: true,468		onStart(target, source) {469			this.add(`c|@E4 Flint|How many Fire-Types do I have now`);470			if (source.template.speciesid !== 'steelixmega' || source.illusion) return;471			this.add('-start', source, 'typeadd', 'Fire');472		},473		onFaint() {474			this.add(`c|@E4 Flint|lul ok`);475		},476	},477	eien: {478		noCopy: true,479		onStart() {480			this.add(`c|&Eien|umu!`);481		},482		onFaint() {483			this.add(`c|&Eien|This game is Bad Civilization...`);484		},485	},486	elgino: {487		noCopy: true,488		onStart() {489			this.add(`c|+Elgino|I'm about to solve this puzzle.`);490		},491		onSwitchOut() {492			this.add(`c|+Elgino|uh I need some hints for this one, I'll try again later`);493		},494		onFaint() {495			this.add(`c|+Elgino|Frankly, I'm... ashamed.`);496		},497		onDamagePriority: 1,498		onDamage(damage, target, source, effect) {499			if (effect && effect.effectType === 'Move' && ['mimikyu', 'mimikyutotem'].includes(target.template.speciesid) && !target.transformed) {500				this.add('-activate', target, 'ability: Disguise');501				this.effectData.busted = true;502				return 0;503			}504		},505		onEffectiveness(typeMod, target, type, move) {506			if (!target) return;507			if (!['mimikyu', 'mimikyutotem'].includes(target.template.speciesid) || target.transformed || (target.volatiles['substitute'] && !(move.flags['authentic'] || move.infiltrates))) return;508			if (!target.runImmunity(move.type)) return;509			return 0;510		},511		onUpdate(pokemon) {512			if (['mimikyu', 'mimikyutotem'].includes(pokemon.template.speciesid) && this.effectData.busted) {513				let templateid = pokemon.template.speciesid === 'mimikyutotem' ? 'Mimikyu-Busted-Totem' : 'Mimikyu-Busted';514				pokemon.formeChange(templateid, this.effect, true);515			}516		},517	},518	eternally: {519		noCopy: true,520		onStart() {521			this.add(`c|@eternally|quack`);522		},523		onFaint() {524			this.add(`c|@eternally|quack`);525		},526		onTryHit(target, source, move) {527			if (target.illusion) return;528			if (target !== source && move.type === 'Water') {529				if (!this.heal(target.maxhp / 4)) {530					this.add('-immune', target, '[from] ability: Water Absorb');531				}532				return null;533			}534		},535	},536	explodingdaisies: {537		noCopy: true,538		onStart() {539			this.add(`c|%explodingdaisies|For today's weather: DOOOOOM!`);540		},541		onSwitchOut() {542			this.add(`c|%explodingdaisies|I WILL DESTROY YOU.......BUT LATER!`);543		},544		onFaint() {545			this.add(`c|%explodingdaisies|MY PEOPLE NEED ME!`);546		},547	},548	'false': {549		noCopy: true,550		onStart() {551			this.add(`c|&false|Ù©(â¢Ì¤Ìáµâ¢Ì¤Ìà¹)áµáµáµáµáµáµ`);552		},553		onSwitchOut() {554			this.add(`c|&false|Ù©(à¹â¢â¡-à¹)Û¶â½â¤â¼â¤`);555		},556		onFaint() {557			this.add(`c|&false|É¢âפâááµáµ Ù©ê°âÌ®*à¥ê±`);558		},559	},560	fart: {561		noCopy: true,562		onStart(target, source) {563			this.add('-start', source, 'typechange', `Fairy/Steel`);564			let activeMon = toID(source.side.foe.active[0].illusion ? source.side.foe.active[0].illusion.name : source.side.foe.active[0].name);565			let family = ['aethernum', 'ceteris', 'flare', 'ransei', 'trickster', 'gimm1ck', 'zalm', 'aelita', 'biggie', 'deetah', 'birdy', 'sundar', 'jolteonite'];566			if (activeMon === 'hoeenhero' || activeMon === 'pokemondeadchannel') {567				 this.add(`c|%fart|what song should I sing?`);568			} else if (activeMon === 'lifeisdank' || activeMon === 'nui' || activeMon === 'grimauxiliatrix') {569				this.add(`c|%fart|the gang's all here!`);570			} else if (family.includes(activeMon)) {571				this.add(`c|%fart|what's cookin', good lookin'?`);572			} else {573				this.add(`c|%fart|it's fukken raw`);574			}575		},576		onSwitchOut() {577			this.add(`c|%fart|this boy is not correct. he is **flawed.**`);578		},579		onFaint(pokemon) {580			let activeMon = toID(pokemon.side.foe.active[0].illusion ? pokemon.side.foe.active[0].illusion.name : pokemon.side.foe.active[0].name);581			if (activeMon === 'felucia') {582				this.add(`c|%fart|Felucia I'm deleting your mon`);583			} else {584				this.add(`c|%fart|the things I do for love...`);585			}586		},587	},588	felucia: {589		noCopy: true,590		onStart() {591			this.add(`c|%Felucia|Hi I'm here to participate in a totally serious conversation`);592		},593		onSwitchOut() {594			this.add(`c|%Felucia|Okay that's enough shitposting for now`);595		},596		onFaint() {597			this.add(`c|%Felucia|Fine I'll go back to work...`);598		},599	},600	flare: {601		noCopy: true,602		onStart() {603			this.add('c|@Flare|(9°^°)9');604		},605		onSwitchIn() {606			this.add('c|@Flare|á( á )á');607		},608		onFaint() {609			this.add('c|@Flare|X_X');610		},611	},612	fomg: {613		noCopy: true,614		onStart() {615			this.add(`c|@FOMG|You got this, my friend!`);616		},617		onSwitchOut() {618			this.add(`c|@FOMG|/me rolls out`);619		},620		onFaint() {621			this.add(`c|@FOMG|Rock in peace...`);622		},623	},624	gallantspear: {625		noCopy: true,626		onStart() {627			this.add(`c|+Gallant Spear|*Trombe! override intensifies*`);628		},629		onSwitchOut() {630			this.add(`c|+Gallant Spear|*neigh* *snort*`);631		},632		onFaint() {633			this.add(`c|+Gallant Spear|UNIVAAAAAAAAAAAAAAASE!!`);634		},635	},636	gimm1ck: {637		noCopy: true,638		onStart() {639			this.add(`c|+Gimm1ck|Ðавай!`);640		},641		onSwitchOut() {642			this.add(`c|+Gimm1ck|Must get more semechki`);643		},644		onFaint() {645			this.add(`c|+Gimm1ck|Ran out of vodka`);646		},647	},648	gmars: {649		noCopy: true,650		onStart(target) {651			this.add(`c|%GMars|It's ya boy GEEEEEEEEMARS`);652			if (target.illusion || !target.m.miniorColor) return;653			this.add('-formechange', target, `Minior${target.m.miniorColor}`);654		},655		onSwitchOut() {656			this.add(`c|%GMars|I like 'em crisp`);657		},658		onFaint() {659			this.add(`c|%GMars|Don't forget to check out my bandcamp`);660		},661	},662	grimauxiliatrix: {663		noCopy: true,664		onStart() {665			this.add(`c|@grimAuxiliatrix|${['A BRAWL IS SURELY BREWING!', 'GOOD DAY FOR A SWELL BATTLE!', 'THIS MATCH WILL GET RED HOT!'][this.random(3)]}`);666		},667		onFaint() {668			this.add(`c|@grimAuxiliatrix|**KNOCKOUT!**`);669		},670	},671	guishark: {672		noCopy: true,673		onStart() {674			this.add(`c|+guishark|Let's go hunt doodoodoodoodoodoo!`);675		},676		onSwitchOut() {677			this.add(`c|+guishark|Run away doodoodoodoodoodoo!`);678		},679		onFaint() {680			this.add(`c|+guishark|It's the end doodoodoodoodoodoo!`);681		},682	},683	// Cant use the exact name because its a pokemon's name684	hippopotasuser: {685		noCopy: true,686		onStart() {687			this.add(`c|@Hippopotas|Something broke. If you're seeing this message, please PM a staff member about it.`);688			this.add(`c|~HoeenHero|No, its not a bug Hippopotas, stop telling people to PM staff, its annoying.`);689		},690		onSwitchOut() {691			this.add(`c|@Hippopotas|Something broke. If you're seeing this message, please PM a staff member about it.`);692			this.add(`c|~HoeenHero|There's still no bug!`);693		},694		onFaint() {695			this.add(`c|@Hippopotas|Something broke. If you're seeing this message, please PM a staff member about it.`);696			this.add(`c|~HoeenHero|My PMs are flooded with bug reports :(`);697		},698	},699	hoeenhero: {700		noCopy: true,701		onStart() {702			this.add(`c|~HoeenHero|My scripts will lead me to victory!`);703		},704		onSwitchOut() {705			this.add(`c|~HoeenHero|I need to look something up, hold on...`);706		},707		onFaint() {708			this.add(`c|~HoeenHero|There must have been a bug in my script ;-;`);709		},710	},711	hubriz: {712		noCopy: true,713		onStart() {714			this.add(`c|%Hubriz|Just a harmless flower...`);715		},716		onSwitchOut() {717			this.add(`c|%Hubriz|I'll bloom once more soon enough!`);718		},719		onFaint() {720			this.add(`c|%Hubriz|I burn, I pine, I perish.`);721		},722	},723	inactive: {724		noCopy: true,725		onStart() {726			this.add(`c|+inactive|I just can't wait to face you.`);727		},728		onSwitchOut() {729			this.add(`c|+inactive|I'll keep an eye out for you next time...`);730		},731		onFaint() {732			this.add(`c|+inactive|/me turns to stone and crumbles`);733		},734	},735	irritated: {736		noCopy: true,737		onStart() {738			this.add(`c|+irritated|Glhf`);739		},740		onFaint() {741			this.add(`c|+irritated|wtf hax`);742		},743	},744	iyarito: {745		noCopy: true,746		onStart() {747			this.add(`c|&Iyarito|Iyarito is always right`);748		},749		onSwitchOut() {750			this.add(`c|&Iyarito|It's all Iyarito's fault`);751		},752		onFaint() {753			this.add(`c|&Iyarito|RIP Patrona`);754		},755	},756	jolteonite: {757		noCopy: true,758		onStart() {759			this.add(`c|+Jolteonite|**Time to electrify you**`);760		},761		onSwitchOut() {762			this.add(`c|+Jolteonite|__I'll be coming back for you!__`);763		},764		onFaint() {765			this.add(`c|+Jolteonite|I'm shocked that you mere mortal actually defeated __me__`);766		},767	},768	kaijubunny: {769		noCopy: true,770		onStart() {771			this.add(`c|@Kaiju Bunny|ï¿£( Ãã
Ã)ï¿£ Thump Thump Motherfucker`);772		},773		onSwitchOut() {774			this.add(`c|@Kaiju Bunny|ï¿£( >ã
>)ï¿£ Holding me back, I see how it is`);775		},776		onFaint() {777			this.add(`c|@Kaiju Bunny|ï¿£( âxã
x)ï¿£Time to take a 10 hour power nap`);778		},779		// Kaiju Rage Innate780		// onUpdate so toxic orb can activate after. Code mainly copied from Power Construct.781		onUpdate(pokemon) {782			if (pokemon.template.speciesid !== 'gligar' || pokemon.transformed || pokemon.illusion || !pokemon.hp) return;783			if (pokemon.hp > pokemon.maxhp / 2) return;784			this.add('-activate', pokemon, 'ability: Kaiju Rage');785			pokemon.formeChange('Gliscor', this.effect, true);786			let newHP = Math.floor(Math.floor(2 * pokemon.template.baseStats['hp'] + pokemon.set.ivs['hp'] + Math.floor(pokemon.set.evs['hp'] / 4) + 100) * pokemon.level / 100 + 10);787			pokemon.hp = newHP - (pokemon.maxhp - pokemon.hp);788			pokemon.maxhp = newHP;789			pokemon.heal(pokemon.maxhp / 4);790			this.add('-heal', pokemon, pokemon.getHealth);791			pokemon.takeItem();792			pokemon.setItem('toxicorb');793			this.add('-message', pokemon.name + '\'s item is now a Toxic Orb!');794			this.add('-message', pokemon.name + '\'s ability is now Poison Heal!');795			this.boost({atk: 2, spe: 1}, pokemon);796		},797	},798	kalalokki: {799		noCopy: true,800		onStart(target) {801			this.add(`c|@Kalalokki|(â¢_â¢)`);802			this.add(`c|@Kalalokki|( â¢_â¢)>ââ -â `);803			this.add(`c|@Kalalokki|(ââ _â )`);804			if (target.illusion) return;805			this.field.setWeather('raindance');806		},807		onFaint() {808			this.add(`c|@Kalalokki|(ââ _â )`);809			this.add(`c|@Kalalokki|( â¢_â¢)>ââ -â `);810			this.add(`c|@Kalalokki|(x_x)`);811		},812	},813	kaori: {814		noCopy: true,815		onStart(pokemon) {816			this.add(`c|+kaori|(~ ̄³ ̄)~`);817			if (pokemon.illusion) return;818			this.boost({spd: 2}, pokemon);819		},820		onSwitchOut() {821			this.add(`c|+kaori|ಠ_ಠ`);822		},823		onFaint() {824			this.add(`c|+kaori|(â ᥥ ââ¿)`);825		},826	},827	kay: {828		noCopy: true,829		onStart() {830			this.add(`c|+kay|Every kiss begins with Kay`);831		},832		onSwitchOut() {833			this.add(`c|+kay|ãã³:彡`);834		},835		onFaint() {836			this.add(`c|+kay|'kay bye!ãã³:彡`);837		},838		// Simple Innate839		onBoost(boost, target, source, effect) {840			if (target && target.illusion) return;841			if (effect && effect.id === 'zpower') return;842			for (let i in boost) {843				// @ts-ignore844				boost[i] *= 2;845			}846		},847	},848	kie: {849		noCopy: true,850		onStart() {851			this.add(`c|%Kie|Wherever there is hope, there is most definitely despair.`);852		},853		onSwitchOut() {854			this.add(`c|%Kie|Still better than Aeonic, btw.`);855		},856		onFaint() {857			this.add(`c|%Kie|https://www.youtube.com/watch?v=Hyw6kKMjp5A`);858		},859	},860	kingswordyt: {861		noCopy: true,862		onStart() {863			this.add(`c|@KingSwordYT|You're the master of your destiny, take destiny by the horns and have fun!`);864		},865		onSwitchOut() {866			this.add(`c|@KingSwordYT|I eat when im upset, and i gotta eat`);867		},868		onFaint() {869			this.add(`c|@KingSwordYT|BUAAAAAA IYA AYÃDAME :(`);870		},871	},872	kipkluif: {873		noCopy: true,874		onStart() {875			this.add(`c|+Kipkluif|I like bacon.`);876		},877		onSwitchOut() {878			this.add(`c|+Kipkluif|Run away da, run run away da`);879		},880		onFaint() {881			this.add(`c|+Kipkluif|Aah! Well, at least I have chicken.`);882		},883		// Footballer innate884		onBasePowerPriority: 8,885		onBasePower(basePower, pokemon, target, move) {886			if (move.name.includes('Kick') && !pokemon.transformed && !pokemon.illusion) {887				this.chainModify(1.75);888			}889		},890	},891	kris: {892		noCopy: true,893		onStart(pokemon) {894			this.add(`c|+Kris|wjat poppin ;)))))`);895			if (pokemon.illusion) return;896			for (const target of pokemon.side.foe.active) {897				if (!target || target.fainted) continue;898				for (const moveSlot of target.moveSlots) {899					const move = this.dex.getMove(moveSlot.move);900					const moveType = move.id === 'hiddenpower' ? target.hpType : move.type;901					if (move.category !== 'Status' && (this.dex.getImmunity(moveType, pokemon) && this.dex.getEffectiveness(moveType, pokemon) > 0 || move.ohko)) {902						this.add('-ability', pokemon, 'Anticipation');903						return;904					}905				}906			}907		},908		onSwitchOut() {909			this.add(`c|+Kris|vbye`);910		},911		onFaint() {912			this.add(`c|+Kris|thats weird but ok`);913		},914	},915	level51: {916		noCopy: true,917		onStart() {918			this.add(`c|%Level 51|Calculating chance of victory!`);919		},920		onSwitchOut() {921			this.add(`c|%Level 51|chance_victory < 1. Recalibrating...`);922		},923		onFaint() {924			this.add(`c|%Level 51|**IndexError**: list index out of range`);925		},926	},927	lifeisdank: {928		noCopy: true,929		onStart(target) {930			this.add(`c|+LifeisDANK|!!!á(â°ââ°á) Peent Peent.`);931			if (target.illusion) return;932			this.boost({spe: 2}, target);933		},934		onSwitchOut() {935			this.add(`c|+LifeisDANK|!(â¢â⢠) Peent Peent.`);936		},937		onFaint() {938			this.add(`c|+LifeisDANK|(â¢ââ¢. ) Peent.`);939		},940		// Mountaineer innate941		onDamage(damage, target, source, effect) {942			if (effect && effect.id === 'stealthrock') {943				return false;944			}945		},946		onTryHit(target, source, move) {947			if (move.type === 'Rock' && !target.activeTurns) {948				this.add('-immune', target, '[from] ability: Mountaineer');949				return null;950			}951		},952	},953	lostseso: {954		noCopy: true,955		onStart(pokemon) {956			this.add(`c|+Lost Seso|<3 ( ͡° ÍÊ Í¡Â°) DANCE WITH ME ( ͡° ÍÊ Í¡Â°) <3`);957			if (pokemon.illusion) return;958			this.effectData.danceMultiplier = 0;959		},960		onAfterMove(pokemon, target, move) {961			if (pokemon.illusion) return;962			if (move.flags.dance) this.effectData.danceMultiplier++;963		},964		onSwitchOut() {965			this.add(`c|+Lost Seso|Ran out of ramen, brb`);966		},967		onFaint() {968			this.add(`c|+Lost Seso|â[ â ಠâ ]â 0% Battery, feed me ramen please`);969		},970	},971	macchaeger: {972		noCopy: true,973		onStart() {974			this.add(`c|@MacChaeger|What are you gonna do with that big bat? Gonna hit me? Better make it count. Better make it hurt. Better kill me in one shot.`);975		},976		onFaint() {977			this.add(`c|@MacChaeger|im gonna pyuk`);978		},979	},980	madmonty: {981		noCopy: true,982		onStart(pokemon) {983			this.add(`c|+Mad Monty ¾°|/me puts on a coat, to protect himself from the cold.`);984			this.add(`c|+Mad Monty ¾°|Don't get eaten by llamas!`);985		},986		onSwitchOut() {987			this.add(`c|+Mad Monty ¾°|Oh, I see how it is. Ok, fine. Be that way. I'll just be over here, then.`);988		},989		onFaint() {990			this.add(`c|+Mad Monty ¾°|I take it back- I hope you DO get eaten by llamas. Toodles!`);991		},992	},993	majorbowman: {994		noCopy: true,995		onStart() {996			this.add(`c|@MajorBowman|I'm MajorBowman and I'm here to make it clear.`);997		},998		onSwitchOut() {999			this.add(`c|@MajorBowman|Witty catch phrase, you know what I mean?`);1000		},1001		onFaint() {1002			this.add(`c|@MajorBowman|THEY GOT ME, GAL`);1003		},1004	},1005	marshmallon: {1006		noCopy: true,1007		onStart() {1008			this.add(`c|@Marshmallon|What a wonderful day at the beach!`);1009		},1010		onSwitchOut() {1011			this.add(`c|@Marshmallon|__C..c...cooold >w<__`);1012		},1013		onFaint() {1014			this.add(`c|@Marshmallon|I got hit by a thunderbolt!`);1015		},1016	},1017	martha: {1018		noCopy: true,1019		onStart() {1020			this.add(`c|@martha|in to lose r1`);1021		},1022		onSwitchOut() {1023			this.add(`c|@martha|bad`);1024		},1025	},1026	marty: {1027		noCopy: true,1028		// No phrases provided1029	},1030	meicoo: {1031		noCopy: true,1032		onStart() {1033			this.add(`c|%Meicoo|/joinhunt`);1034		},1035		onSwitchOut() {1036			this.add(`c|%Meicoo|/leavehunt`);1037		},1038		onFaint() {1039			this.add(`c|%Meicoo|"That is not the answer - try again!"`);1040		},1041	},1042	megazard: {1043		noCopy: true,1044		onStart() {1045			this.add(`c|@Megazard|Almond top of the world!`);1046		},1047		onSwitchOut() {1048			this.add(`c|@Megazard|Change of plants`);1049		},1050		onFaint() {1051			this.add(`c|@Megazard|Better luck next thyme`);1052		},1053	},1054	mitsuki: {1055		noCopy: true,1056		onStart() {1057			this.add(`c|@Mitsuki|SSSSSSSSSSSSS`);1058		},1059		onSwitchOut() {1060			this.add(`c|@Mitsuki|sssssssssssss`);1061		},1062		onFaint() {1063			this.add(`c|@Mitsuki|sss`);1064		},1065	},1066	morfent: {1067		noCopy: true,1068		onStart() {1069			this.add(`c|@Morfent ( _Ì> Ì)|ââââââââââââââââââââ²`);1070			this.add(`c|@Morfent ( _Ì> Ì)|âââââââââââââââââââââ¶`);1071			this.add(`c|@Morfent ( _Ì> Ì)|ââââââââââââââââââââ`);1072			this.add(`c|@Morfent ( _Ì> Ì)|ââââââââââââââââââââââ -I`);1073			this.add(`c|@Morfent ( _Ì> Ì)|âââââââ.â¼.â¼.â¼.â¼.â¼.â¼.â¼  -cast`);1074			this.add(`c|@Morfent ( _Ì> Ì)|âââââââââ.â².â².â².â².â².â²  -magic`);1075			this.add(`c|@Morfent ( _Ì> Ì)|âââââââââââââââââââââââ-shitpost`);1076		},1077		onFaint() {1078			// Morfent returns something so im doing it this way1079			let endquote = this.random(3);1080			if (endquote === 1) {1081				this.add(`c|@Morfent ( _Ì> Ì)|Hacking claims the lives of over 2,000 registered laddering alts every day.`);1082			} else if (endquote === 2) {1083				this.add(`c|@Morfent ( _Ì> Ì)|Every 60 seconds in Africa, a minute passes. Together we can stop this. Please spread the word.`);1084			} else {1085				this.add(`c|@Morfent ( _Ì> Ì)|!dt morfent's husbando`);1086				this.add(`raw|<ul class="utilichart"><li class="result"><span class="col numcol">UU</span> <span class="col iconcol"><span class="picon" style="background: transparent url("//${Config.routes.client}/sprites/smicons-sheet.png?a4") no-repeat scroll -400px -210px"></span></span> <span class="col pokemonnamecol" style="white-space: nowrap"><a href="https://${Config.routes.dex}/pokemon/gengar" target="_blank" rel="noopener">Gengar</a></span> <span class="col typecol"><img src="https://${Config.routes.client}/sprites/types/Ghost.png" alt="Ghost" height="14" width="32"><img src="https://${Config.routes.client}/sprites/types/Poison.png" alt="Poison" height="14" width="32"></span> <span style="float: left ; min-height: 26px"><span class="col abilitycol">Cursed Body</span><span class="col abilitycol"></span></span><span style="float: left ; min-height: 26px"><span class="col statcol"><em>HP</em><br>60</span> <span class="col statcol"><em>Atk</em><br>65</span> <span class="col statcol"><em>Def</em><br>60</span> <span class="col statcol"><em>SpA</em><br>130</span> <span class="col statcol"><em>SpD</em><br>75</span> <span class="col statcol"><em>Spe</em><br>110</span> <span class="col bstcol"><em>BST<br>500</em></span> </span></li><li style="clear: both"></li></ul>`);1087				this.add(`raw|<font size="1"><font color="#686868">Dex#:</font> 94 |  <font color="#686868">Gen:</font> 1 |  <font color="#686868">Height:</font> 1.5 m |  <font color="#686868">Weight:</font> 40.5 kg <em>(60 BP)</em> |  <font color="#686868">Dex Colour:</font> Purple |  <font color="#686868">Egg Group(s):</font> Amorphous |  <font color="#686868">Does Not Evolve</font></font>`);1088			}1089		},1090	},1091	nui: {1092		noCopy: true,1093		onStart() {1094			this.add(`c|@nui|ï¼*ï¼¾3ï¼¾ï¼`);1095		},1096		onSwitchOut() {1097			this.add(`c|@nui|(´ââ¸â\`) **??+ !`);1098		},1099		onFaint() {1100			this.add(`c|@nui|(â︿ââ¿)`);1101		},1102	},1103	om: {1104		noCopy: true,1105		onStart(target, source) {1106			this.add(`c|@OM|use shift gear`);1107			if (source.illusion) return;1108			this.add('-start', source, 'typeadd', 'Fairy');1109		},1110		onSwitchOut() {1111			this.add(`c|@OM|Ok brb I'm gonna ${["ladder Mix and Mega", "roll battle some surv regs real quick", "sweep y'all in mafia let's get it"][this.random(3)]}`);1112		},1113		onFaint() {1114			this.add(`c|@OM|${["Oh god I rolled a 1", "Killed Night 1, seriously?"][this.random(2)]}`);1115		},1116	},1117	overneat: {1118		noCopy: true,1119		onStart(source) {1120			this.add(`c|+Overneat|[muffled eurobeat playing in the distance]`);1121			if (source.template.speciesid !== 'absolmega' || source.illusion) return;1122			this.add('-start', source, 'typeadd', 'Fairy');1123		},1124		onSwitchOut() {1125			this.add(`c|+Overneat|Time to take a siesta.`);1126		},1127		onFaint() {1128			this.add(`c|+Overneat|I gotta go, but friendly reminder to drink water after this battle.`);1129		},1130	},1131	pablo: {1132		noCopy: true,1133		onStart() {1134			this.add(`c|%Pablo|Let's get this party started.`);1135		},1136		onSwitchOut() {1137			this.add(`c|%Pablo|I need a break, this is getting boring.`);1138		},1139		onFaint() {1140			this.add(`c|%Pablo|It's cool, I didn't wanna battle anyway.`);1141		},1142	},1143	paradise: {1144		noCopy: true,1145		onStart() {1146			this.add(`c|@Paradise|â  â ºâ â â â â â â â â â ¥â â 
â â â â â â ½â â ¥â â â ¥â â â â â ¥â â 
â â â â â â â ½â â â â â ¥â â â â ,â â ½â â ¥â â â â â â â â â â â â â ?`);1147		},1148		onSwitchOut() {1149			this.add(`c|@Paradise|Braille is the only language you need.`);1150		},1151		onFaint() {1152			this.add(`c|@Paradise|â  â ½â â ¥ââ â â â â ¥â â 
â â â â â â â â ,â â 
â â â â .`);1153		},1154	},1155	pirateprincess: {1156		noCopy: true,1157		onStart() {1158			this.add(`c|%Pirate Princess|Ahoy!`);1159		},1160		onSwitchOut() {1161			this.add(`c|%Pirate Princess|You will always remember this as the day that you almost caught Captain Ja- Pirate Princess!`);1162		},1163		onFaint() {1164			this.add(`c|%Pirate Princess|Erm⦠Parley?`);1165		},1166	},1167	pluviometer: {1168		noCopy: true,1169		onStart() {1170			this.add(`c|@pluviometer|${["Need a GP check?", "I'm a switch-in and I'm switching in #hyphenation"][this.random(2)]}`);1171		},1172		onSwitchOut() {1173			this.add(`c|@pluviometer|${["I wish this were a better matchup #subjunctive", "GP 1/2", "GP 2/2"][this.random(3)]}`);1174		},1175		onFaint() {1176			this.add(`c|@pluviometer|${["Follow SmogonU on Facebook! https://www.facebook.com/SmogonU", "Follow SmogonU on Twitter! https://twitter.com/SmogonU"][this.random(2)]}`);1177		},1178	},1179	pokemondeadchannel: {1180		noCopy: true,1181		onStart() {1182			this.add(`c|+pokemondeadchannel|${["Lucarioâ¢1582 is cute", "Swagn check Z room"][this.random(2)]}`);1183		},1184		onSwitchOut() {1185			this.add(`c|+pokemondeadchannel|Hey Noctrine this set isnt working. I might need a new team.`);1186		},1187		onFaint() {1188			this.add(`c|+pokemondeadchannel|I ${["listen to way too much rap music", "change names way too often"][this.random(2)]} x_x`);1189		},1190	},1191	pohjis: {1192		noCopy: true,1193		onStart() {1194			this.add(`c|+Pohjis|thats pohjis`);1195		},1196		onSwitchOut() {1197			this.add(`c|+Pohjis|ÃPÃOLÃL`);1198		},1199		onFaint() {1200			this.add(`c|+Pohjis|rly enjoyed that`);1201		},1202	},1203	pre: {1204		noCopy: true,1205		onStart(source) {1206			this.add(`c|~pre|let's go, in and out, 20 minute adventure`);1207			// Easter Egg1208			let activeMon = toID(source.side.foe.active[0].illusion ? source.side.foe.active[0].illusion.name : source.side.foe.active[0].name);1209			if (activeMon === 'anubis') {1210				this.add(`c|&Anubis|ohey it's pre`);1211				this.add(`c|&Anubis|!showimage https://pokemonshowdown.com/images/ssbkitten.jpg`);1212				this.add(`raw|<img src="https://pokemonshowdown.com/images/ssbkitten.jpg" style="width: 300px; height: 400px" />`);1213				this.add(`c|~pre|<3`);1214			}1215		},1216		onSwitchOut() {1217			this.add(`c|~pre|sometimes science is more art than science`);1218		},1219		onFaint() {1220			this.add(`c|~pre|LAMBS TO THE COSMIC SLAUGHTER!!`);1221		},1222	},1223	ptoad: {1224		noCopy: true,1225		onStart() {1226			this.add(`c|%ptoadâ¬|Make it rain!`);1227		},1228		onSwitchOut() {1229			this.add(`c|%ptoadâ¬|Oh. You're switching me out. No, it's fine, I "toad"ally get it.`);1230		},1231		onFaint() {1232			this.add(`c|%ptoadâ¬|Wow. Way to rain on my parade.`);1233		},1234	},1235	psynergy: {1236		noCopy: true,1237		onStart() {1238			this.add(`c|+Psynergy|oh`);1239		},1240		onSwitchOut() {1241			this.add(`c|+Psynergy|Joe doesn't pay me enough for this`);1242		},1243		onFaint() {1244			this.add(`c|+Psynergy|I'm going to be late...`);1245		},1246	},1247	quitequiet: {1248		noCopy: true,1249		onStart() {1250			this.add(`c|@Quite Quiet|spooky :d`);1251		},1252		onFaint() {1253			this.add(`c|@Quite Quiet|:'(`);1254		},1255		onModifyDefPriority: 6,1256		onModifyDef(def, pokemon) {1257			if (pokemon.illusion) return;1258			if (!pokemon.transformed) {1259				return this.chainModify(1.5);1260			}1261		},1262		onModifySpDPriority: 6,1263		onModifySpD(spd, pokemon) {1264			if (pokemon.illusion) return;1265			if (!pokemon.transformed) {1266				return this.chainModify(1.5);1267			}1268		},1269	},1270	rach: {1271		noCopy: true,1272		onStart(target, source) {1273			this.add(`c|%Rach|BURN IT DOWN!`);1274			if (source.illusion) return;1275			this.add('-start', source, 'typeadd', 'Fighting');1276			this.boost({spe: 1}, source);1277		},1278		onSwitchOut() {1279			this.add(`c|%Rach|Tag!`);1280		},1281		onFaint() {1282			this.add(`c|%Rach|I oversold your move`);1283		},1284	},1285	rageuser: {1286		noCopy: true,1287		onStart(pokemon) {1288			this.add(`c|%Rage|I'm about to ruin this mans whole career`);1289		},1290		onSwitchOut() {1291			this.add(`c|%Rage|Ain't supposed to be like that chief, we out`);1292		},1293		onFaint() {1294			this.add(`c|%Rage|/me quits`);1295		},1296	},1297	raid: {1298		noCopy: true,1299		// No messages provided1300	},1301	ransei: {1302		noCopy: true,1303		onStart() {1304			this.add(`c|@Ransei| Sup! I have been brought from the world of Hackmons to give you a preview of our characteristics. Iâve been genetically engineered to beat you at all costs. Expect to lose this fight!`);1305		},1306		onFaint() {1307			this.add(`c|@Ransei|ripsei`);1308		},1309	},1310	rorymercury: {1311		noCopy: true,1312		onStart(pokemon) {1313			this.add(`c|+Rory Mercury|guess I'm in charge now`);1314			if (pokemon.illusion) return;1315			this.boost({atk: 1}, pokemon);1316		},1317		onSwitchOut() {1318			this.add(`c|+Rory Mercury|brb running low on battery`);1319		},1320		onFaint() {1321			this.add(`c|+Rory Mercury|pressing charges for battery`);1322		},1323	},1324	samjo: {1325		noCopy: true,1326		onStart() {1327			this.add(`c|+SamJo|Heyo/ Hope your day's been fantasthicc! Woo!`);1328		},1329		onSwitchOut() {1330			this.add(`c|+SamJo|Catch ya later, stay thicc my friends o/`);1331		},1332		onFaint() {1333			this.add(`c|+SamJo|Oof, gotta get thiccerâ¦â¦. ;(`);1334		},1335	},1336	schiavetto: {1337		noCopy: true,1338		onStart() {1339			this.add(`c|+Schiavetto|Aight, sis, guess I'm parking.`);1340		},1341		onSwitchOut() {1342			this.add(`c|+Schiavetto|Someone help me press this.`);1343		},1344		onFaint() {1345			this.add(`c|+Schiavetto|Read my ISOs when I'm dead`);1346		},1347	},1348	scotteh: {1349		noCopy: true,1350		onStart() {1351			this.add(`c|@Scotteh|ââââââââââââââ`);1352			this.add(`c|@Scotteh|âââââââââââââââââââââââ`);1353			this.add(`c|@Scotteh|âââââââ.â¼.â¼.â¼.â¼.â¼.â¼.â¼`);1354		},1355		onSwitchOut() {1356			this.add(`c|@Scotteh|âââââââââ.â².â².â².â².â².â²`);1357			this.add(`c|@Scotteh|âââââââââââââââââââââââ`);1358		},1359		onFaint() {1360			this.add(`c|@Scotteh|âââââââââ.â².â².â².â².â².â²`);1361			this.add(`c|@Scotteh|âââââââââââââââââââââââ`);1362		},1363	},1364	shiba: {1365		noCopy: true,1366		onStart() {1367			this.add(`c|%Shiba|LINDA IS INDA`);1368		},1369		onSwitchOut() {1370			this.add(`c|%Shiba|gotta buy an alt rq brb`);1371		},1372	},1373	slowbroth: {1374		noCopy: true,1375		onStart() {1376			this.add(`c|+Slowbroth|DETECTING FOREIGN SPECIES...`);1377		},1378		onSwitchOut() {1379			this.add(`c|+Slowbroth|TELEPORTING TO ALTERNATE DIMENSION...`);1380		},1381		onFaint() {1382			this.add(`c|+Slowbroth|HARDWARE DAMAGE PERMANENT...`);1383		},1384	},1385	snaquaza: {1386		noCopy: true,1387		onStart() {1388			this.add(`c|@Snaquaza|Snaq is baq... with a vengeance!`);1389		},1390		onSwitchOut(pokemon) {1391			this.add(`c|@Snaquaza|Lynch Hoeen while I'm away...`);1392			if (pokemon.m.claimHP) {1393				pokemon.hp = pokemon.m.claimHP;1394				pokemon.m.claimHP = null;1395			}1396		},1397		onFaint() {1398			this.add(`c|@Snaquaza|How did you know I was scum?`);1399		},1400		onDamage(damage, pokemon) {1401			// Hack for Snaquaza's Z move1402			if (!pokemon.m.claimHP) return;1403			// Prevent Snaquaza from fainting while using a fake claim to prevent visual bug1404			if (pokemon.hp - damage <= 0) return (pokemon.hp - 1);1405		},1406		onAfterDamage(damage, pokemon) {1407			// Hack for Snaquaza's Z move1408			if (!pokemon.m.claimHP || pokemon.hp > 1) return;1409			// Now we handle the fake claim "fainting"1410			pokemon.hp = pokemon.m.claimHP;1411			pokemon.formeChange(pokemon.baseTemplate.id);1412			pokemon.moveSlots = pokemon.moveSlots.slice(0, 4);1413			this.add('message', `${pokemon.name}'s fake claim was uncovered!`);1414			pokemon.m.claimHP = null;1415			this.add('-heal', pokemon, pokemon.getHealth, '[silent]');1416		},1417	},1418	sparksblade: {1419		noCopy: true,1420		onStart() {1421			this.add(`c|%sparksblade|this team looks marsh weak`);1422		},1423		onSwitchOut() {1424			this.add(`c|%sparksblade|we lose`);1425		},1426		onFaint() {1427			this.add(`c|%sparksblade|i don't even play this game`);1428		},1429	},1430	sundar: {1431		noCopy: true,1432		onStart() {1433			this.add(`c|+Sundar|Now, we are really going to have a bad time. >:)`);1434		},1435		onSwitchOut() {1436			this.add(`c|+Sundar|I'll spare you for now.`);1437		},1438		onFaint() {1439			this.add(`c|+Sundar|..that's it, huh? Don't say I didn't warn you.`);1440		},1441	},1442	teclis: {1443		noCopy: true,1444		onStart() {1445			this.add(`c|@Teclis|The Emperor protects.`);1446		},1447		onSwitchOut() {1448			this.add(`c|@Teclis|Only in death does duty end.`);1449		},1450		onFaint() {1451			this.add(`c|@Teclis|Success is commemorated; Failure merely remembered.`);1452		},1453	},1454	tennisace: {1455		noCopy: true,1456		onStart() {1457			this.add(`c|@tennisace|VIVA LOS TIGRES`);1458		},1459		onSwitchOut() {1460			this.add(`c|@tennisace|wtf is this shit even`);1461		},1462		onFaint() {1463			this.add(`c|@tennisace|maybe next season n_n`);1464		},1465	},1466	teremiare: {1467		noCopy: true,1468		onStart(source) {1469			this.add(`c|%Teremiare|<('o'<)`);1470			if (source.illusion) return;1471			let target = source.side.foe.active[0];1472			let removeAll = ['reflect', 'lightscreen', 'auroraveil', 'safeguard', 'mist', 'spikes', 'toxicspikes', 'stealthrock', 'stickyweb'];1473			let silentRemove = ['reflect', 'lightscreen', 'auroraveil', 'safeguard', 'mist'];1474			for (const sideCondition of removeAll) {1475				if (target.side.removeSideCondition(sideCondition)) {1476					if (!(silentRemove.includes(sideCondition))) this.add('-sideend', target.side, this.dex.getEffect(sideCondition).name, '[from] move: No Fun Zone', '[of] ' + source);1477				}1478				if (source.side.removeSideCondition(sideCondition)) {1479					if (!(silentRemove.includes(sideCondition))) this.add('-sideend', source.side, this.dex.getEffect(sideCondition).name, '[from] move: No Fun Zone', '[of] ' + source);1480				}1481			}1482			this.add('-clearallboost');1483			for (const pokemon of this.getAllActive()) {1484				pokemon.clearBoosts();1485			}1486			for (const clear in this.field.pseudoWeather) {1487				if (clear.endsWith('mod') || clear.endsWith('clause')) continue;1488				this.field.removePseudoWeather(clear);1489			}1490			this.field.clearWeather();1491			this.field.clearTerrain();1492		},1493		onFaint() {1494			this.add(`c|%Teremiare|(>'o')>`);1495		},1496	},1497	theimmortal: {1498		noCopy: true,1499		onStart() {1500			this.add(`c|~The Immortal|h-hi`);1501		},1502		onSwitchOut() {1503			this.add(`c|~The Immortal|ok`);1504		},1505		onFaint() {1506			this.add(`c|~The Immortal|zzz`);1507		},1508	},1509	theleprechaun: {1510		noCopy: true,1511		onStart() {1512			this.add(`c|+The Leprechaun|Let's get this bread`);1513		},1514		onSwitchOut() {1515			this.add(`c|+The Leprechaun|I'm out this mutherfucker`);1516		},1517		onFaint() {1518			this.add(`c|+The Leprechaun|This ain't it chief`);1519		},1520	},1521	tony: {1522		noCopy: true,1523		onStart() {1524			this.add(`c|@Tony|Greed!`);1525		},1526		onSwitchOut() {1527			this.add(`c|@Tony|Greed!`);1528		},1529		onFaint() {1530			this.add(`c|@Tony|Greed..`);1531		},1532		// Innate levitate implemented in data/mods/ssb/scripts.js#pokemon#isGrounded1533	},1534	torkool: {1535		noCopy: true,1536		onStart() {1537			this.add(`c|+torkool|:peepodetective:`);1538		},1539		onSwitchOut() {1540			this.add(`c|+torkool|i cba`);1541		},1542		onFaint() {1543			this.add(`c|+torkool|I don't deserve this...`);1544		},1545	},1546	trickster: {1547		noCopy: true,1548		onStart() {1549			this.add(`c|@Trickster|(ââ¿ââ¿)`);1550		},1551		onSwitchOut() {1552			this.add(`c|@Trickster|(â ï¹â â¿)`);1553		},1554		onFaint() {1555			this.add(`c|@Trickster|(âï¹ââ¿)`);1556		},1557	},1558	vivalospride: {1559		noCopy: true,1560		onStart() {1561			this.add(`c|%vivalospride|bet`);1562		},1563		onSwitchOut() {1564			this.add(`c|%vivalospride|tuh`);1565		},1566		onFaint() {1567			this.add(`c|%vivalospride|THERE IT IS!!`);1568		},1569	},1570	volco: {1571		noCopy: true,1572		onStart() {1573			this.add(`c|+Volco|Get Ready, I'm going to take you down!`);1574		},1575		onSwitchOut() {1576			this.add(`c|+Volco|I've decided to spare you, lucky you.`);1577		},1578		onFaint() {1579			this.add(`c|+Volco|Well, seems I was taken down instead.`);1580		},1581	},1582	xayah: {1583		noCopy: true,1584		onStart() {1585			this.add(`c|+Xayah|Let's dance!`);1586		},1587		onSwitchOut() {1588			this.add(`c|+Xayah|Fine, I'll go.`);1589		},1590		onFaint() {1591			this.add(`c|+Xayah|All out of second dances...`);1592		},1593	},1594	xfix: {1595		noCopy: true,1596		onStart() {1597			this.add(`c|&xfix|destroy the world!`);1598		},1599		onSwitchOut() {1600			this.add(`c|&xfix|brb i need to rethink my plan`);1601		},1602		onFaint() {1603			this.add(`c|&xfix|but the world refused`);1604		},1605	},1606	xjoelituh: {1607		noCopy: true,1608		onStart(source) {1609			this.add(`c|@xJoelituh|h-hi, im joel, not joe, tyvm`);1610			// Terrifying Demeanor Innate1611			if (source.illusion) return;1612			let target = source.side.foe.active[0];1613			if (target.getStat('spe', true, true) > source.getStat('spe', true, true)) this.boost({spe: -1}, target, source);1614		},1615		onSwitchOut() {1616			this.add(`c|@xJoelituh|if that's what you want, s-sure`);1617		},1618		onFaint() {1619			// Random Gibberish Generator1620			let gibberish = '';1621			for (let j = 0; j < 10; j++) gibberish += String.fromCharCode(48 + this.random(79));1622			this.add(`c|@xJoelituh|${gibberish}`);1623		},1624	},1625	xprienzo: {1626		noCopy: true,1627		onStart() {1628			this.add(`c|+XpRienzo ââ¡â|Bleh`);1629		},1630		onSwitchOut() {1631			this.add(`c|+XpRienzo ââ¡â|>.>`);1632		},1633		onFaint() {1634			this.add(`c|+XpRienzo ââ¡â|Wait what?`);1635		},1636	},1637	yuki: {1638		noCopy: true,1639		onStart() {1640			this.add(`c|%Yuki|My ice may be a little __cold__, but your plan has been put completely on __hold__!`);1641		},1642		onSwitchOut() {1643			this.add(`c|%Yuki|I-It's too hot in here!`);1644		},1645		onFaint() {1646			this.add(`c|%Yuki|I'm melting...`);1647		},1648	},1649	zalm: {1650		noCopy: true,1651		onStart() {1652			this.add(`c|+Zalm|<(:O)000>`);1653		},1654		onSwitchOut() {1655			this.add(`c|+Zalm|Woah`);1656		},1657		onFaint() {1658			this.add(`c|+Zalm|Tfw still no mega weedle`);1659		},1660	},1661	zarel: {1662		noCopy: true,1663		onStart() {1664			this.add(`c|~Zarel|Your mom`);1665		},1666		onFaint() {1667			this.add(`c|~Zarel|Your mom`);1668			// message is shown after the "Zarel Fainted!" message1669			this.add('message', 'Zarel used your mom!');1670		},1671	},1672	zyguser: {1673		noCopy: true,1674		onStart() {1675			this.add(`c|+Zyg|/me sighs`);1676		},1677		onSwitchOut() {1678			this.add(`c|+Zyg|/me sighs`);1679		},1680		onFaint() {1681			this.add(`c|+Zyg|Brexit means Brexit`);1682		},1683	},1684	// boostreplacement condition for nui's zmove1685	boostreplacement: {1686		// this is a side condition1687		name: 'boostreplacement',1688		id: 'boostreplacement',1689		onStart(side, source) {1690			this.effectData.position = source.position;1691		},1692		onSwitchInPriority: 1,1693		onSwitchIn(target) {1694			if (!target.fainted && target.position === this.effectData.position) {1695				this.boost({def: 1, spd: 1});1696				target.side.removeSideCondition('boostreplacement');1697			}1698		},1699	},1700	// Prevents glitch out from running more than once per turn per pokemon & boosts base power1701	glitchout: {1702		duration: 1,1703		onTryHit(target, source, move) {1704			if (move.basePower) {1705				move.basePower += 20;1706				this.debug('glitch out base power boost');1707			}1708		},1709	},1710	// Modified type setup for arceus1711	arceus: {1712		inherit: true,1713		onType(types, pokemon) {1714			if (pokemon.transformed) return types;1715			/** @type {string | undefined} */1716			let type = 'Normal';1717			if (pokemon.ability === 'multitype' || pokemon.ability === 'logia') {1718				type = pokemon.getItem().onPlate;1719				if (!type) {1720					type = 'Normal';1721				}1722			}1723			return [type];1724		},1725	},1726	// weight doubling volatile for trickster1727	weightdoubler: {1728		noCopy: true,1729		onStart(pokemon) {1730			this.add('-message', `${pokemon.illusion ? pokemon.illusion.name : pokemon.name}'s weight has doubled.`);1731			pokemon.weighthg *= 2;1732		},1733	},1734	// Gooey volatile for Decem's move1735	gooey: {1736		onStart(pokemon, source) {1737			this.add('-start', pokemon, 'Gooey', '[of] ' + source);1738			this.add('-message', `${pokemon.illusion ? pokemon.illusion.name : pokemon.name} was covered in corrosive goo!`);1739		},1740		onResidualOrder: 10,1741		onResidual(pokemon) {1742			this.damage(pokemon.maxhp / 6);1743			this.add('-message', `${pokemon.illusion ? pokemon.illusion.name : pokemon.name} was damaged by the corrosive goo!`);1744		},1745	},1746	// Custom Acid Rain weather for Pirate Princess1747	acidrain: {1748		name: 'Acid Rain',1749		id: 'acidrain',1750		num: 0,1751		effectType: 'Weather',1752		duration: 5,1753		onModifySpDPriority: 10,1754		onModifySpD(spd, pokemon) {1755			if (pokemon.hasType('Poison') && this.field.isWeather('acidrain')) {1756				return this.modify(spd, 1.5);1757			}1758		},1759		onStart(battle, source, effect) {1760			if (effect && effect.effectType === 'Ability') {1761				if (this.gen <= 5) this.effectData.duration = 0;1762				this.add('-weather', 'AcidRain', '[from] ability: ' + effect, '[of] ' + source);1763			} else {1764				this.add('-weather', 'AcidRain');1765			}1766			this.add('-message', 'Acid Rain began to fall.');1767		},1768		onResidualOrder: 1,1769		onResidual() {1770			this.add('-weather', 'AcidRain', '[upkeep]');1771			if (this.field.isWeather('acidrain')) this.eachEvent('Weather');1772		},1773		onWeather(target) {1774			if (target.hasType('Poison')) return;1775			this.damage(target.maxhp / 16);1776		},1777		onModifyMovePriority: -5,1778		onModifyMove(move) {1779			if (!move.ignoreImmunity) move.ignoreImmunity = {};1780			if (move.ignoreImmunity !== true) {1781				move.ignoreImmunity['Steel'] = true;1782			}1783		},1784		onEnd() {1785			this.add('-weather', 'none');1786			this.add('-message', 'The Acid Rain subsided.');1787		},1788	},1789	// Custom effect for Rage's multihit1790	enrageeeeed: {1791		onStart(pokemon, source) {1792			this.add('-message', `${pokemon.illusion ? pokemon.illusion.name : pokemon.name}'s next attack will hit multiple times!`);1793		},1794		onPrepareHit(source, target, move) {1795			// beat up relies on its multihit being the number of valid allies1796			if (move.category !== 'Status' && move.id !== 'beatup') {1797				move.multihit = [2, 5];1798				move.basePower = 25;1799				this.effectData.usedup = true;1800			}1801		},1802		onAfterMove(pokemon, source) {1803			if (this.effectData.usedup) pokemon.removeVolatile('enrageeeeed');1804		},1805	},1806	// Custom effect for Yuki1807	cutietrap: {1808		duration: 5,1809		noCopy: true,1810		onStart(pokemon, source) {1811			if (!this.runEvent('Attract', pokemon, source)) {1812				this.debug('Attract event failed');1813				return false;1814			}1815			this.add('-start', pokemon, 'Attract', '[from] move: Cutie Trap', '[of] ' + source);1816			this.add('-message', `${pokemon.illusion ? pokemon.illusion.name : pokemon.name} was trapped by love!`);1817		},1818		onBeforeMovePriority: 2,1819		onBeforeMove(pokemon) {1820			this.add('-activate', pokemon, 'move: Attract', '[of] ' + this.effectData.source);1821			if (this.randomChance(1, 2)) {1822				this.add('cant', pokemon, 'Attract');1823				return false;1824			}1825		},1826		onTrapPokemon(pokemon) {1827			pokemon.tryTrap();1828		},1829		onEnd(pokemon) {1830			this.add('-end', pokemon, 'Attract', '[silent]');1831			this.add('-message', `${pokemon.illusion ? pokemon.illusion.name : pokemon.name} is no longer trapped by love.`);1832		},1833	},1834	// Modified hail for Yuki1835	hail: {1836		inherit: true,1837		onStart(battle, source, effect) {1838			if (effect && effect.effectType === 'Ability') {1839				if (this.gen <= 5 || effect.id === 'snowstorm') this.effectData.duration = 0;1840				this.add('-weather', 'Hail', '[from] ability: ' + effect, '[of] ' + source);1841			} else {1842				this.add('-weather', 'Hail');1843			}1844		},1845	},1846	// Special volatile that is applied to pokemon using a custom move with the effects of baton pass so that boosts/volatiles are shown on client.1847	batonpasshelper: {1848		duration: 1,1849		onSwitchInPriority: 1000,1850		onSwitchIn(target) {1851			for (let boost in target.boosts) {1852				// @ts-ignore Element implictly has type any due to lack of index signature1853				if (target.boosts[boost]) this.add('-boost', target, boost, target.boosts[boost], '[silent]');1854			}1855			for (let v in target.volatiles) {1856				if (v !== toID(target.name) && v !== 'batonpasshelper') this.add('-start', target, target.volatiles[v].id);1857			}1858		},1859	},1860	// Modded hazard moves to fail when Prismatic terrain is active1861	auroraveil: {1862		duration: 5,1863		durationCallback(target, source, effect) {1864			if (source && source.hasItem('lightclay')) {1865				return 8;1866			}1867			return 5;1868		},1869		onAnyModifyDamage(damage, source, target, move) {1870			if (target !== source && target.side === this.effectData.target) {1871				if ((target.side.getSideCondition('reflect') && this.getCategory(move) === 'Physical') ||1872						(target.side.getSideCondition('lightscreen') && this.getCategory(move) === 'Special')) {1873					return;1874				}1875				if (!target.getMoveHitData(move).crit && !move.infiltrates) {1876					this.debug('Aurora Veil weaken');1877					if (target.side.active.length > 1) return this.chainModify([0xAAC, 0x1000]);1878					return this.chainModify(0.5);1879				}1880			}1881		},1882		onStart(side) {1883			if (this.field.isTerrain('prismaticterrain')) {1884				this.add('-message', `Prismatic Terrain prevented Aurora Veil from starting!`);1885				return null;1886			}1887			this.add('-sidestart', side, 'move: Aurora Veil');1888		},1889		onResidualOrder: 21,1890		onResidualSubOrder: 1,1891		onEnd(side) {1892			this.add('-sideend', side, 'move: Aurora Veil');1893		},1894	},1895	lightscreen: {1896		duration: 5,1897		durationCallback(target, source, effect) {1898			if (source && source.hasItem('lightclay')) {1899				return 8;1900			}1901			return 5;1902		},1903		onAnyModifyDamage(damage, source, target, move) {1904			if (target !== source && target.side === this.effectData.target && this.getCategory(move) === 'Special') {1905				if (!target.getMoveHitData(move).crit && !move.infiltrates) {1906					this.debug('Light Screen weaken');1907					if (target.side.active.length > 1) return this.chainModify([0xAAC, 0x1000]);1908					return this.chainModify(0.5);1909				}1910			}1911		},1912		onStart(side) {1913			if (this.field.isTerrain('prismaticterrain')) {1914				this.add('-message', `Prismatic Terrain prevented Light Screen from starting!`);1915				return null;1916			}1917			this.add('-sidestart', side, 'move: Light Screen');1918		},1919		onResidualOrder: 21,1920		onResidualSubOrder: 1,1921		onEnd(side) {1922			this.add('-sideend', side, 'move: Light Screen');1923		},1924	},1925	mist: {1926		duration: 5,1927		onBoost(boost, target, source, effect) {1928			if (effect.effectType === 'Move' && effect.infiltrates && target.side !== source.side) return;1929			if (source && target !== source) {1930				let showMsg = false;1931				for (let i in boost) {1932					// @ts-ignore1933					if (boost[i] < 0) {1934						// @ts-ignore1935						delete boost[i];1936						showMsg = true;1937					}1938				}1939				if (showMsg && !(/** @type {ActiveMove} */(effect)).secondaries) {1940					this.add('-activate', target, 'move: Mist');1941				}1942			}1943		},1944		onStart(side) {1945			if (this.field.isTerrain('prismaticterrain')) {1946				this.add('-message', `Prismatic Terrain prevented Mist from starting!`);1947				return null;1948			}1949			this.add('-sidestart', side, 'move: Mist');1950		},1951		onResidualOrder: 21,1952		onResidualSubOrder: 3,1953		onEnd(side) {1954			this.add('-sideend', side, 'Mist');1955		},1956	},1957	reflect: {1958		duration: 5,1959		durationCallback(target, source, effect) {1960			if (source && source.hasItem('lightclay')) {1961				return 8;1962			}1963			return 5;1964		},1965		onAnyModifyDamage(damage, source, target, move) {1966			if (target !== source && target.side === this.effectData.target && this.getCategory(move) === 'Physical') {1967				if (!target.getMoveHitData(move).crit && !move.infiltrates) {1968					this.debug('Reflect weaken');1969					if (target.side.active.length > 1) return this.chainModify([0xAAC, 0x1000]);1970					return this.chainModify(0.5);1971				}1972			}1973		},1974		onStart(side) {1975			if (this.field.isTerrain('prismaticterrain')) {1976				this.add('-message', `Prismatic Terrain prevented Reflect from starting!`);1977				return null;1978			}1979			this.add('-sidestart', side, 'Reflect');1980		},1981		onResidualOrder: 21,1982		onEnd(side) {1983			this.add('-sideend', side, 'Reflect');1984		},1985	},1986	safeguard: {1987		duration: 5,1988		durationCallback(target, source, effect) {1989			if (source && source.hasAbility('persistent')) {1990				this.add('-activate', source, 'ability: Persistent', effect);1991				return 7;1992			}1993			return 5;1994		},1995		onSetStatus(status, target, source, effect) {1996			if (!effect || !source) return;1997			if (effect.effectType === 'Move' && effect.infiltrates && target.side !== source.side) return;1998			if (target !== source) {1999				this.debug('interrupting setStatus');2000				if (effect.id === 'synchronize' || (effect.effectType === 'Move' && !effect.secondaries)) {2001					this.add('-activate', target, 'move: Safeguard');2002				}2003				return null;2004			}2005		},2006		onTryAddVolatile(status, target, source, effect) {2007			if (!effect || !source) return;2008			if (effect.effectType === 'Move' && effect.infiltrates && target.side !== source.side) return;2009			if ((status.id === 'confusion' || status.id === 'yawn') && target !== source) {2010				if (effect.effectType === 'Move' && !effect.secondaries) this.add('-activate', target, 'move: Safeguard');2011				return null;2012			}2013		},2014		onStart(side) {2015			if (this.field.isTerrain('prismaticterrain')) {2016				this.add('-message', `Prismatic Terrain prevented Safeguard from starting!`);2017				return null;2018			}2019			this.add('-sidestart', side, 'move: Safeguard');2020		},2021		onResidualOrder: 21,2022		onResidualSubOrder: 2,2023		onEnd(side) {2024			this.add('-sideend', side, 'Safeguard');2025		},2026	},2027	spikes: {2028		onStart(side) {2029			if (this.field.isTerrain('prismaticterrain')) {2030				this.add('-message', `Prismatic Terrain prevented Spikes from starting!`);2031				return null;2032			}2033			this.effectData.layers = 1;2034			this.add('-sidestart', side, 'move: Spikes');2035		},2036		onRestart(side) {2037			if (this.effectData.layers >= 3) return false;2038			this.add('-sidestart', side, 'Spikes');2039			this.effectData.layers++;2040		},2041		onSwitchIn(pokemon) {2042			if (!pokemon.isGrounded()) return;2043			let damageAmounts = [0, 3, 4, 6]; // 1/8, 1/6, 1/42044			this.damage(damageAmounts[this.effectData.layers] * pokemon.maxhp / 24);2045		},2046	},2047	stealthrock: {2048		onStart(side) {2049			if (this.field.isTerrain('prismaticterrain')) {2050				this.add('-message', `Prismatic Terrain prevented Stealth Rock from starting!`);2051				return null;2052			}2053			this.add('-sidestart', side, 'move: Stealth Rock');2054		},2055		onSwitchIn(pokemon) {2056			let typeMod = this.dex.clampIntRange(pokemon.runEffectiveness(this.dex.getActiveMove('stealthrock')), -6, 6);2057			this.damage(pokemon.maxhp * Math.pow(2, typeMod) / 8);2058		},2059	},2060	stickyweb: {2061		onStart(side) {2062			if (this.field.isTerrain('prismaticterrain')) {2063				this.add('-message', `Prismatic Terrain prevented Sticky Web from starting!`);2064				return null;2065			}2066			this.add('-sidestart', side, 'move: Sticky Web');2067		},2068		onSwitchIn(pokemon) {2069			if (!pokemon.isGrounded()) return;2070			this.add('-activate', pokemon, 'move: Sticky Web');2071			this.boost({spe: -1}, pokemon, pokemon.side.foe.active[0], this.dex.getActiveMove('stickyweb'));2072		},2073	},2074	toxicspikes: {2075		onStart(side) {2076			if (this.field.isTerrain('prismaticterrain')) {2077				this.add('-message', `Prismatic Terrain prevented Toxic Spikes from starting!`);2078				return null;2079			}2080			this.add('-sidestart', side, 'move: Toxic Spikes');2081			this.effectData.layers = 1;2082		},2083		onRestart(side) {2084			if (this.effectData.layers >= 2) return false;2085			this.add('-sidestart', side, 'move: Toxic Spikes');2086			this.effectData.layers++;2087		},2088		onSwitchIn(pokemon) {2089			if (!pokemon.isGrounded()) return;...VideoLessons.js
Source:VideoLessons.js  
1import React, { Component } from 'react'2import '../App.css'3import ReactPlayer from 'react-player' 4class GuitartfaVidLns extends Component {5    render () {6     return (7    <div class="col-">8<center><p><h2><br></br><b>31 VIDEOS TO BECOME PRO</b><br></br></h2></p>9        <ReactPlayer10            width = '600px'11            height= '250px'12            controls 13            url = 'https://www.youtube.com/watch?v=_bULnYSWNPE&list=PLiyMO_9U8g1BNzo7ZoXwKg2Pqt5chP6CT'14            onReady={() => console.log('onReady callback')}15            onStart={() => console.log('onStart callback')}16            onPause={() => console.log('onPause callback')}17            onEnded={() => console.log('onEnded callback')}18            onError={() => console.log('onError callback')}19        />20</center>21<center><p><h2><br></br><br></br></h2></p>22        <ReactPlayer23            width = '600px'24            height= '250px'25            controls 26            url = 'https://youtu.be/itSLKS8UBd8'27            onReady={() => console.log('onReady callback')}28            onStart={() => console.log('onStart callback')}29            onPause={() => console.log('onPause callback')}30            onEnded={() => console.log('onEnded callback')}31            onError={() => console.log('onError callback')}32        />33</center>34<center><p><h2><br></br><br></br></h2></p>35        <ReactPlayer36            width = '600px'37            height= '250px'38            controls 39            url = 'https://youtu.be/KMQE8qO9SSo'40            onReady={() => console.log('onReady callback')}41            onStart={() => console.log('onStart callback')}42            onPause={() => console.log('onPause callback')}43            onEnded={() => console.log('onEnded callback')}44            onError={() => console.log('onError callback')}45        />46</center>47<center><p><h2><br></br><br></br></h2></p>48        <ReactPlayer49            width = '600px'50            height= '250px'51            controls 52            url = 'https://youtu.be/Me2ziS9HS50'53            onReady={() => console.log('onReady callback')}54            onStart={() => console.log('onStart callback')}55            onPause={() => console.log('onPause callback')}56            onEnded={() => console.log('onEnded callback')}57            onError={() => console.log('onError callback')}58        />59</center>60<center><p><h2><br></br><br></br></h2></p>61        <ReactPlayer62            width = '600px'63            height= '250px'64            controls 65            url = 'https://youtu.be/SV25P2h9vGc'66            onReady={() => console.log('onReady callback')}67            onStart={() => console.log('onStart callback')}68            onPause={() => console.log('onPause callback')}69            onEnded={() => console.log('onEnded callback')}70            onError={() => console.log('onError callback')}71        />72</center>73<center><p><h2><br></br><br></br></h2></p>74        <ReactPlayer75            width = '600px'76            height= '250px'77            controls 78            url = 'https://youtu.be/bqPCtwibgPg'79            onReady={() => console.log('onReady callback')}80            onStart={() => console.log('onStart callback')}81            onPause={() => console.log('onPause callback')}82            onEnded={() => console.log('onEnded callback')}83            onError={() => console.log('onError callback')}84        />85</center>86<center><p><h2><br></br><br></br></h2></p>87        <ReactPlayer88            width = '600px'89            height= '250px'90            controls 91            url = 'https://youtu.be/PAF39Q8Xc2Y'92            onReady={() => console.log('onReady callback')}93            onStart={() => console.log('onStart callback')}94            onPause={() => console.log('onPause callback')}95            onEnded={() => console.log('onEnded callback')}96            onError={() => console.log('onError callback')}97        />98</center>99<center><p><h2><br></br><br></br></h2></p>100        <ReactPlayer101            width = '600px'102            height= '250px'103            controls 104            url = 'https://youtu.be/lBIgD-sg_hc'105            onReady={() => console.log('onReady callback')}106            onStart={() => console.log('onStart callback')}107            onPause={() => console.log('onPause callback')}108            onEnded={() => console.log('onEnded callback')}109            onError={() => console.log('onError callback')}110        />111</center>112<center><p><h2><br></br><br></br></h2></p>113        <ReactPlayer114            width = '600px'115            height= '250px'116            controls 117            url = 'https://youtu.be/1iTB9jN6MJc'118            onReady={() => console.log('onReady callback')}119            onStart={() => console.log('onStart callback')}120            onPause={() => console.log('onPause callback')}121            onEnded={() => console.log('onEnded callback')}122            onError={() => console.log('onError callback')}123        />124</center>125<center><p><h2><br></br><br></br></h2></p>126        <ReactPlayer127            width = '600px'128            height= '250px'129            controls 130            url = 'https://youtu.be/mVOu2DsDV40'131            onReady={() => console.log('onReady callback')}132            onStart={() => console.log('onStart callback')}133            onPause={() => console.log('onPause callback')}134            onEnded={() => console.log('onEnded callback')}135            onError={() => console.log('onError callback')}136        />137</center>138<center><p><h2><br></br><br></br></h2></p>139        <ReactPlayer140            width = '600px'141            height= '250px'142            controls 143            url = 'https://youtu.be/oq-iMoeYIjI'144            onReady={() => console.log('onReady callback')}145            onStart={() => console.log('onStart callback')}146            onPause={() => console.log('onPause callback')}147            onEnded={() => console.log('onEnded callback')}148            onError={() => console.log('onError callback')}149        />150</center>151<center><p><h2><br></br><br></br></h2></p>152        <ReactPlayer153            width = '600px'154            height= '250px'155            controls 156            url = 'https://youtu.be/z97KmPkMVEY'157            onReady={() => console.log('onReady callback')}158            onStart={() => console.log('onStart callback')}159            onPause={() => console.log('onPause callback')}160            onEnded={() => console.log('onEnded callback')}161            onError={() => console.log('onError callback')}162        />163</center>164<center><p><h2><br></br><br></br></h2></p>165        <ReactPlayer166            width = '600px'167            height= '250px'168            controls 169            url = 'https://youtu.be/kzs_8iQ9b2A'170            onReady={() => console.log('onReady callback')}171            onStart={() => console.log('onStart callback')}172            onPause={() => console.log('onPause callback')}173            onEnded={() => console.log('onEnded callback')}174            onError={() => console.log('onError callback')}175        />176</center>177<center><p><h2><br></br><br></br></h2></p>178        <ReactPlayer179            width = '600px'180            height= '250px'181            controls 182            url = 'https://youtu.be/PVNpduQXiug'183            onReady={() => console.log('onReady callback')}184            onStart={() => console.log('onStart callback')}185            onPause={() => console.log('onPause callback')}186            onEnded={() => console.log('onEnded callback')}187            onError={() => console.log('onError callback')}188        />189</center>190<center><p><h2><br></br><br></br></h2></p>191        <ReactPlayer192            width = '600px'193            height= '250px'194            controls 195            url = 'https://youtu.be/NzYaeC1ZyIA'196            onReady={() => console.log('onReady callback')}197            onStart={() => console.log('onStart callback')}198            onPause={() => console.log('onPause callback')}199            onEnded={() => console.log('onEnded callback')}200            onError={() => console.log('onError callback')}201        />202</center>203<center><p><h2><br></br><br></br></h2></p>204        <ReactPlayer205            width = '600px'206            height= '250px'207            controls 208            url = 'https://youtu.be/PDEdJ-cupPU'209            onReady={() => console.log('onReady callback')}210            onStart={() => console.log('onStart callback')}211            onPause={() => console.log('onPause callback')}212            onEnded={() => console.log('onEnded callback')}213            onError={() => console.log('onError callback')}214        />215</center>216<center><p><h2><br></br><br></br></h2></p>217        <ReactPlayer218            width = '600px'219            height= '250px'220            controls 221            url = 'https://youtu.be/LuIJUKVhoBA'222            onReady={() => console.log('onReady callback')}223            onStart={() => console.log('onStart callback')}224            onPause={() => console.log('onPause callback')}225            onEnded={() => console.log('onEnded callback')}226            onError={() => console.log('onError callback')}227        />228</center>229<center><p><h2><br></br><br></br></h2></p>230        <ReactPlayer231            width = '600px'232            height= '250px'233            controls 234            url = 'https://youtu.be/qqrYZlW4Hjg'235            onReady={() => console.log('onReady callback')}236            onStart={() => console.log('onStart callback')}237            onPause={() => console.log('onPause callback')}238            onEnded={() => console.log('onEnded callback')}239            onError={() => console.log('onError callback')}240        />241</center>242<center><p><h2><br></br><br></br></h2></p>243        <ReactPlayer244            width = '600px'245            height= '250px'246            controls 247            url = 'https://youtu.be/RjAQyX0hOFo'248            onReady={() => console.log('onReady callback')}249            onStart={() => console.log('onStart callback')}250            onPause={() => console.log('onPause callback')}251            onEnded={() => console.log('onEnded callback')}252            onError={() => console.log('onError callback')}253        />254</center>255<center><p><h2><br></br><br></br></h2></p>256        <ReactPlayer257            width = '600px'258            height= '250px'259            controls 260            url = 'https://youtu.be/r-_JZt4sCwI'261            onReady={() => console.log('onReady callback')}262            onStart={() => console.log('onStart callback')}263            onPause={() => console.log('onPause callback')}264            onEnded={() => console.log('onEnded callback')}265            onError={() => console.log('onError callback')}266        />267</center>268<center><p><h2><br></br><br></br></h2></p>269        <ReactPlayer270            width = '600px'271            height= '250px'272            controls 273            url = 'https://youtu.be/l1OUmQOjOLY'274            onReady={() => console.log('onReady callback')}275            onStart={() => console.log('onStart callback')}276            onPause={() => console.log('onPause callback')}277            onEnded={() => console.log('onEnded callback')}278            onError={() => console.log('onError callback')}279        />280</center>281<center><p><h2><br></br><br></br></h2></p>282        <ReactPlayer283            width = '600px'284            height= '250px'285            controls 286            url = 'https://youtu.be/T_dajySe03Q'287            onReady={() => console.log('onReady callback')}288            onStart={() => console.log('onStart callback')}289            onPause={() => console.log('onPause callback')}290            onEnded={() => console.log('onEnded callback')}291            onError={() => console.log('onError callback')}292        />293</center>294<center><p><h2><br></br><br></br></h2></p>295        <ReactPlayer296            width = '600px'297            height= '250px'298            controls 299            url = 'https://youtu.be/8QOrMuoxrBc'300            onReady={() => console.log('onReady callback')}301            onStart={() => console.log('onStart callback')}302            onPause={() => console.log('onPause callback')}303            onEnded={() => console.log('onEnded callback')}304            onError={() => console.log('onError callback')}305        />306</center>307<center><p><h2><br></br><br></br></h2></p>308        <ReactPlayer309            width = '600px'310            height= '250px'311            controls 312            url = 'https://youtu.be/uHaQo0cvb0k'313            onReady={() => console.log('onReady callback')}314            onStart={() => console.log('onStart callback')}315            onPause={() => console.log('onPause callback')}316            onEnded={() => console.log('onEnded callback')}317            onError={() => console.log('onError callback')}318        />319</center>320<center><p><h2><br></br><br></br></h2></p>321        <ReactPlayer322            width = '600px'323            height= '250px'324            controls 325            url = 'https://youtu.be/Yz7JjS829vQ'326            onReady={() => console.log('onReady callback')}327            onStart={() => console.log('onStart callback')}328            onPause={() => console.log('onPause callback')}329            onEnded={() => console.log('onEnded callback')}330            onError={() => console.log('onError callback')}331        />332</center>333<center><p><h2><br></br><br></br></h2></p>334        <ReactPlayer335            width = '600px'336            height= '250px'337            controls 338            url = 'https://youtu.be/2Fjd-VJjvO8'339            onReady={() => console.log('onReady callback')}340            onStart={() => console.log('onStart callback')}341            onPause={() => console.log('onPause callback')}342            onEnded={() => console.log('onEnded callback')}343            onError={() => console.log('onError callback')}344        />345</center>346<center><p><h2><br></br><br></br></h2></p>347        <ReactPlayer348            width = '600px'349            height= '250px'350            controls 351            url = 'https://youtu.be/nhvnEIUpO-M'352            onReady={() => console.log('onReady callback')}353            onStart={() => console.log('onStart callback')}354            onPause={() => console.log('onPause callback')}355            onEnded={() => console.log('onEnded callback')}356            onError={() => console.log('onError callback')}357        />358</center>359<center><p><h2><br></br><br></br></h2></p>360        <ReactPlayer361            width = '600px'362            height= '250px'363            controls 364            url = 'https://youtu.be/5Mu5YIA7OA8'365            onReady={() => console.log('onReady callback')}366            onStart={() => console.log('onStart callback')}367            onPause={() => console.log('onPause callback')}368            onEnded={() => console.log('onEnded callback')}369            onError={() => console.log('onError callback')}370        />371</center>372<center><p><h2><br></br><br></br></h2></p>373        <ReactPlayer374            width = '600px'375            height= '250px'376            controls 377            url = 'https://youtu.be/bAgJwpJ4Bq0'378            onReady={() => console.log('onReady callback')}379            onStart={() => console.log('onStart callback')}380            onPause={() => console.log('onPause callback')}381            onEnded={() => console.log('onEnded callback')}382            onError={() => console.log('onError callback')}383        />384</center>385<center><p><h2><br></br><br></br></h2></p>386        <ReactPlayer387            width = '600px'388            height= '250px'389            controls 390            url = 'https://youtu.be/GMwPJJZA8I4'391            onReady={() => console.log('onReady callback')}392            onStart={() => console.log('onStart callback')}393            onPause={() => console.log('onPause callback')}394            onEnded={() => console.log('onEnded callback')}395            onError={() => console.log('onError callback')}396        />397</center>398<center><p><h2><br></br><br></br></h2></p>399        <ReactPlayer400            width = '600px'401            height= '250px'402            controls 403            url = 'https://youtu.be/Xj8GgOGCdRo'404            onReady={() => console.log('onReady callback')}405            onStart={() => console.log('onStart callback')}406            onPause={() => console.log('onPause callback')}407            onEnded={() => console.log('onEnded callback')}408            onError={() => console.log('onError callback')}409        />410</center>411<p><center><br></br><h2>Hey You, Now You are a PRO ;)<br></br></h2></center></p>412    </div>413    )414};415}...BenchConfig.js
Source:BenchConfig.js  
1/**2 * @author [Tristan Valcke]{@link https://github.com/Itee}3 * @license [BSD-3-Clause]{@link https://opensource.org/licenses/BSD-3-Clause}4 *5 * @file Todo6 *7 * @example Todo8 *9 */10export const benchConfig = {11    Object:            {12        'onStart': function () {13            this.whatAmI = new Object()14        }15    },16    Function:          {17        'onStart': function () {18            this.whatAmI = function func () {}19        }20    },21    Boolean:           {22        'onStart': function () {23            this.whatAmI = new Boolean()24        }25    },26    Symbol:            {27        'onStart': function () {28            this.whatAmI = new Symbol()29        }30    },31    Error:             {32        'onStart': function () {33            this.whatAmI = new Error()34        }35    },36    EvalError:         {37        'onStart': function () {38            this.whatAmI = new EvalError()39        }40    },41    InternalError:     {42        'onStart': function () {43            this.whatAmI = new InternalError()44        }45    },46    RangeError:        {47        'onStart': function () {48            this.whatAmI = new RangeError()49        }50    },51    ReferenceError:    {52        'onStart': function () {53            this.whatAmI = new ReferenceError()54        }55    },56    SyntaxError:       {57        'onStart': function () {58            this.whatAmI = new SyntaxError()59        }60    },61    TypeError:         {62        'onStart': function () {63            this.whatAmI = new TypeError()64        }65    },66    URIError:          {67        'onStart': function () {68            this.whatAmI = new URIError()69        }70    },71    Number:            {72        'onStart': function () {73            this.whatAmI = new Number()74        }75    },76    BigInt:            {77        'onStart': function () {78            this.whatAmI = new BigInt()79        }80    },81    Date:              {82        'onStart': function () {83            this.whatAmI = new Date()84        }85    },86    String:            {87        'onStart': function () {88            this.whatAmI = new String()89        }90    },91    RegExp:            {92        'onStart': function () {93            this.whatAmI = new RegExp()94        }95    },96    Array:             {97        'onStart': function () {98            this.whatAmI = new Array()99        }100    },101    Int8Array:         {102        'onStart': function () {103            this.whatAmI = new Int8Array()104        }105    },106    Uint8Array:        {107        'onStart': function () {108            this.whatAmI = new Uint8Array()109        }110    },111    Uint8ClampedArray: {112        'onStart': function () {113            this.whatAmI = new Uint8ClampedArray()114        }115    },116    Int16Array:        {117        'onStart': function () {118            this.whatAmI = new Int16Array()119        }120    },121    Uint16Array:       {122        'onStart': function () {123            this.whatAmI = new Uint16Array()124        }125    },126    Int32Array:        {127        'onStart': function () {128            this.whatAmI = new Int32Array()129        }130    },131    Uint32Array:       {132        'onStart': function () {133            this.whatAmI = new Uint32Array()134        }135    },136    Float32Array:      {137        'onStart': function () {138            this.whatAmI = new Float32Array()139        }140    },141    Float64Array:      {142        'onStart': function () {143            this.whatAmI = new Float64Array()144        }145    },146    BigInt64Array:     {147        'onStart': function () {148            this.whatAmI = new BigInt64Array()149        }150    },151    BigUint64Array:    {152        'onStart': function () {153            this.whatAmI = new BigUint64Array()154        }155    },156    Map:               {157        'onStart': function () {158            this.whatAmI = new Map()159        }160    },161    Set:               {162        'onStart': function () {163            this.whatAmI = new Set()164        }165    },166    WeakMap:           {167        'onStart': function () {168            this.whatAmI = new WeakMap()169        }170    },171    WeakSet:           {172        'onStart': function () {173            this.whatAmI = new WeakSet()174        }175    },176    ArrayBuffer:       {177        'onStart': function () {178            this.whatAmI = new ArrayBuffer()179        }180    },181    SharedArrayBuffer: {182        'onStart': function () {183            this.whatAmI = new SharedArrayBuffer()184        }185    },186    Atomics:           {187        'onStart': function () {188            this.whatAmI = new Atomics()189        }190    },191    DataView:          {192        'onStart': function () {193            this.whatAmI = new DataView()194        }195    },196    JSON:              {197        'onStart': function () {198            this.whatAmI = new JSON()199        }200    },201    Promise:           {202        'onStart': function () {203            this.whatAmI = new Promise()204        }205    },206    Generator:         {207        'onStart': function () {208            this.whatAmI = new Generator()209        }210    },211    GeneratorFunction: {212        'onStart': function () {213            this.whatAmI = new GeneratorFunction()214        }215    },216    AsyncFunction:     {217        'onStart': function () {218            this.whatAmI = new AsyncFunction()219        }220    },221    Reflect:           {222        'onStart': function () {223            this.whatAmI = new Reflect()224        }225    },226    Proxy:             {227        'onStart': function () {228            this.whatAmI = new Proxy()229        }230    },231    Intl:              {232        Intl:               {233            'onStart': function () {234                this.whatAmI = new Intl()235            }236        },237        Collator:           {238            'onStart': function () {239                this.whatAmI = new Intl.Collator()240            }241        },242        DateTimeFormat:     {243            'onStart': function () {244                this.whatAmI = new Intl.DateTimeFormat()245            }246        },247        ListFormat:         {248            'onStart': function () {249                this.whatAmI = new Intl.ListFormat()250            }251        },252        NumberFormat:       {253            'onStart': function () {254                this.whatAmI = new Intl.NumberFormat()255            }256        },257        PluralRules:        {258            'onStart': function () {259                this.whatAmI = new Intl.PluralRules()260            }261        },262        RelativeTimeFormat: {263            'onStart': function () {264                this.whatAmI = new Intl.RelativeTimeFormat()265            }266        },267        Locale:             {268            'onStart': function () {269                this.whatAmI = new Intl.Locale()270            }271        }272    },273    WebAssembly:       {274        WebAssembly:  {275            'onStart': function () {276                this.whatAmI = new WebAssembly()277            }278        },279        Module:       {280            'onStart': function () {281                this.whatAmI = new WebAssembly.Module()282            }283        },284        Instance:     {285            'onStart': function () {286                this.whatAmI = new WebAssembly.Instance()287            }288        },289        Memory:       {290            'onStart': function () {291                this.whatAmI = new WebAssembly.Memory()292            }293        },294        Table:        {295            'onStart': function () {296                this.whatAmI = new WebAssembly.Table()297            }298        },299        CompileError: {300            'onStart': function () {301                this.whatAmI = new WebAssembly.CompileError()302            }303        },304        LinkError:    {305            'onStart': function () {306                this.whatAmI = new WebAssembly.LinkError()307            }308        },309        RuntimeError: {310            'onStart': function () {311                this.whatAmI = new WebAssembly.RuntimeError()312            }313        }314    }...Using AI Code Generation
1import { Tester, beforeAll } from 'cavy';2const spec = require('./spec.js');3const testHook = async () => {4  const tester = new Tester(spec);5  await tester.beforeAll();6  await tester.spec();7};8testHook();9import { Tester, afterAll } from 'cavy';10const spec = require('./spec.js');11const testHook = async () => {12  const tester = new Tester(spec);13  await tester.spec();14  await tester.afterAll();15};16testHook();17import { Tester, describe } from 'cavy';18const spec = require('./spec.js');19const testHook = async () => {20  const tester = new Tester(spec);21  await tester.beforeAll();22  await describe('My first test', async () => {23    await tester.spec();24  });25  await tester.afterAll();26};27testHook();28import { Tester, describe, it } from 'cavy';29const spec = require('./spec.js');30const testHook = async () => {31  const tester = new Tester(spec);32  await tester.beforeAll();33  await describe('My first test', async () => {Using AI Code Generation
1import { TestHookStore } from 'cavy';2class MyTestHookStore extends TestHookStore {3  onStart() {4  }5}6export default MyTestHookStore;Using AI Code Generation
1import { onStart } from 'cavy';2const spec = require('./spec');3onStart(() => {4  console.log('Starting a test!');5});6describe('My First Test', function() {7  spec(this);8});9import { onFinish } from 'cavy';10const spec = require('./spec');11onFinish(() => {12  console.log('Finished a test!');13});14describe('My First Test', function() {15  spec(this);16});17import { TestHookStore } from 'cavy';18import store from './store';19const spec = require('./spec');20describe('My First Test', function() {21  it('should pass', async function() {22    await spec(this, { store });23  });24});25import { TestHookStore } from 'cavy';26import navigation from './navigation';27const spec = require('./spec');28describe('My First Test', function() {29  it('should pass', async function() {30    await spec(this, { navigation });31  });32});Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
