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!!