@robsonbittencourt/calc 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (144) hide show
  1. package/.eslintignore +2 -0
  2. package/.eslintrc +12 -0
  3. package/bundle +107 -0
  4. package/dist/adaptable.d.ts +6 -0
  5. package/dist/adaptable.js +28 -0
  6. package/dist/adaptable.js.map +1 -0
  7. package/dist/calc.d.ts +6 -0
  8. package/dist/calc.js +26 -0
  9. package/dist/calc.js.map +1 -0
  10. package/dist/data/abilities.d.ts +15 -0
  11. package/dist/data/abilities.js +448 -0
  12. package/dist/data/abilities.js.map +1 -0
  13. package/dist/data/index.d.ts +2 -0
  14. package/dist/data/index.js +30 -0
  15. package/dist/data/index.js.map +1 -0
  16. package/dist/data/interface.d.ts +150 -0
  17. package/dist/data/interface.js +3 -0
  18. package/dist/data/interface.js.map +1 -0
  19. package/dist/data/items.d.ts +24 -0
  20. package/dist/data/items.js +708 -0
  21. package/dist/data/items.js.map +1 -0
  22. package/dist/data/moves.d.ts +86 -0
  23. package/dist/data/moves.js +5014 -0
  24. package/dist/data/moves.js.map +1 -0
  25. package/dist/data/natures.d.ts +17 -0
  26. package/dist/data/natures.js +127 -0
  27. package/dist/data/natures.js.map +1 -0
  28. package/dist/data/production.min.js +1 -0
  29. package/dist/data/species.d.ts +48 -0
  30. package/dist/data/species.js +10126 -0
  31. package/dist/data/species.js.map +1 -0
  32. package/dist/data/types.d.ts +23 -0
  33. package/dist/data/types.js +538 -0
  34. package/dist/data/types.js.map +1 -0
  35. package/dist/desc.d.ts +65 -0
  36. package/dist/desc.js +866 -0
  37. package/dist/desc.js.map +1 -0
  38. package/dist/field.d.ts +49 -0
  39. package/dist/field.js +111 -0
  40. package/dist/field.js.map +1 -0
  41. package/dist/index.d.ts +44 -0
  42. package/dist/index.js +99 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/items.d.ts +13 -0
  45. package/dist/items.js +434 -0
  46. package/dist/items.js.map +1 -0
  47. package/dist/mechanics/gen12.d.ts +6 -0
  48. package/dist/mechanics/gen12.js +271 -0
  49. package/dist/mechanics/gen12.js.map +1 -0
  50. package/dist/mechanics/gen3.d.ts +11 -0
  51. package/dist/mechanics/gen3.js +371 -0
  52. package/dist/mechanics/gen3.js.map +1 -0
  53. package/dist/mechanics/gen4.d.ts +11 -0
  54. package/dist/mechanics/gen4.js +596 -0
  55. package/dist/mechanics/gen4.js.map +1 -0
  56. package/dist/mechanics/gen56.d.ts +13 -0
  57. package/dist/mechanics/gen56.js +836 -0
  58. package/dist/mechanics/gen56.js.map +1 -0
  59. package/dist/mechanics/gen789.d.ts +14 -0
  60. package/dist/mechanics/gen789.js +1325 -0
  61. package/dist/mechanics/gen789.js.map +1 -0
  62. package/dist/mechanics/util.d.ts +39 -0
  63. package/dist/mechanics/util.js +675 -0
  64. package/dist/mechanics/util.js.map +1 -0
  65. package/dist/move.d.ts +50 -0
  66. package/dist/move.js +324 -0
  67. package/dist/move.js.map +1 -0
  68. package/dist/pokemon.d.ts +55 -0
  69. package/dist/pokemon.js +240 -0
  70. package/dist/pokemon.js.map +1 -0
  71. package/dist/production.min.js +1 -0
  72. package/dist/result.d.ts +34 -0
  73. package/dist/result.js +94 -0
  74. package/dist/result.js.map +1 -0
  75. package/dist/state.d.ts +77 -0
  76. package/dist/state.js +3 -0
  77. package/dist/state.js.map +1 -0
  78. package/dist/stats.d.ts +26 -0
  79. package/dist/stats.js +183 -0
  80. package/dist/stats.js.map +1 -0
  81. package/dist/test/calc.test.d.ts +1 -0
  82. package/dist/test/calc.test.js +1297 -0
  83. package/dist/test/calc.test.js.map +1 -0
  84. package/dist/test/data.test.d.ts +1 -0
  85. package/dist/test/data.test.js +368 -0
  86. package/dist/test/data.test.js.map +1 -0
  87. package/dist/test/gen.d.ts +135 -0
  88. package/dist/test/gen.js +636 -0
  89. package/dist/test/gen.js.map +1 -0
  90. package/dist/test/helper.d.ts +55 -0
  91. package/dist/test/helper.js +174 -0
  92. package/dist/test/helper.js.map +1 -0
  93. package/dist/test/move.test.d.ts +1 -0
  94. package/dist/test/move.test.js +14 -0
  95. package/dist/test/move.test.js.map +1 -0
  96. package/dist/test/pokemon.test.d.ts +1 -0
  97. package/dist/test/pokemon.test.js +102 -0
  98. package/dist/test/pokemon.test.js.map +1 -0
  99. package/dist/test/stats.test.d.ts +1 -0
  100. package/dist/test/stats.test.js +64 -0
  101. package/dist/test/stats.test.js.map +1 -0
  102. package/dist/test/utils.test.d.ts +1 -0
  103. package/dist/test/utils.test.js +19 -0
  104. package/dist/test/utils.test.js.map +1 -0
  105. package/dist/util.d.ts +17 -0
  106. package/dist/util.js +115 -0
  107. package/dist/util.js.map +1 -0
  108. package/jest.config.js +11 -0
  109. package/package.json +40 -0
  110. package/src/adaptable.ts +12 -0
  111. package/src/calc.ts +40 -0
  112. package/src/data/abilities.ts +383 -0
  113. package/src/data/index.ts +36 -0
  114. package/src/data/interface.ts +176 -0
  115. package/src/data/items.ts +632 -0
  116. package/src/data/moves.ts +5028 -0
  117. package/src/data/natures.ts +65 -0
  118. package/src/data/species.ts +10098 -0
  119. package/src/data/types.ts +478 -0
  120. package/src/desc.ts +1063 -0
  121. package/src/field.ts +124 -0
  122. package/src/index.ts +156 -0
  123. package/src/items.ts +423 -0
  124. package/src/mechanics/gen12.ts +297 -0
  125. package/src/mechanics/gen3.ts +444 -0
  126. package/src/mechanics/gen4.ts +702 -0
  127. package/src/mechanics/gen56.ts +1134 -0
  128. package/src/mechanics/gen789.ts +1788 -0
  129. package/src/mechanics/util.ts +676 -0
  130. package/src/move.ts +337 -0
  131. package/src/pokemon.ts +244 -0
  132. package/src/result.ts +106 -0
  133. package/src/state.ts +81 -0
  134. package/src/stats.ts +213 -0
  135. package/src/test/calc.test.ts +1588 -0
  136. package/src/test/data.test.ts +129 -0
  137. package/src/test/gen.ts +514 -0
  138. package/src/test/helper.ts +185 -0
  139. package/src/test/move.test.ts +13 -0
  140. package/src/test/pokemon.test.ts +121 -0
  141. package/src/test/stats.test.ts +84 -0
  142. package/src/test/utils.test.ts +18 -0
  143. package/src/util.ts +153 -0
  144. package/tsconfig.json +10 -0
@@ -0,0 +1 @@
1
+ var _this=this;!function(){"use strict";var e={};e.toID=function(e){return(""+e).toLowerCase().replace(/[^a-z0-9]+/g,"")},e.error=function(e,a){if(e)throw new Error(a);console.log(a)},e.assignWithout=function(e,a,t){for(var i in a)Object.prototype.hasOwnProperty.call(a,i)&&!t.has(i)&&(e[i]=a[i])};var a={"[object Boolean]":"boolean","[object Number]":"number","[object String]":"string","[object Function]":"function","[object Array]":"array","[object Date]":"date","[object RegExp]":"regexp","[object Object]":"object","[object Error]":"error"},t=a.toString,i=a.hasOwnProperty;function r(e){return null==e?String(e):"object"==typeof e||"function"==typeof e?a[t.call(e)]||"object":typeof e}function s(e){if("object"!==r(e)||e.nodeType||function(e){return null!=e&&e===e.window}(e))return!1;try{if(e.constructor&&!i.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(e){return!1}return!0}e.extend=function e(){for(var a,t,i,o,n,l,h=[],c=0;c<arguments.length;c++)h[c]=arguments[c];var d=h[0]||{},u=1,y=!1,m=h.length;for("boolean"==typeof d&&(y=d,d=h[1]||{},u=2),"object"!=typeof d&&"function"!==r(d)&&(d={}),m===u&&(d=this,--u);u<m;u++)if(null!=(a=h[u]))for(t in a)i=d[t],d!==(o=a[t])&&(y&&o&&(s(o)||(n=Array.isArray(o)))?(n?(n=!1,l=i&&Array.isArray(i)?i:[]):l=i&&s(i)?i:{},d[t]=e(y,l,o)):void 0!==o&&(d[t]=o));return d};var o=e,n=["hp","atk","def","spa","spd","spe"],l=n,h=n,c=n,d=n,u=n,y=n,m=n;e.STATS=[[],["hp","atk","def","spc","spe"],n,l,h,c,d,u,y,m];var p=["Fighting","Flying","Poison","Ground","Rock","Bug","Ghost","Steel","Fire","Water","Grass","Electric","Psychic","Ice","Dragon","Dark"],f={Bug:{ivs:{atk:30,def:30,spd:30},dvs:{atk:13,def:13}},Dark:{ivs:{},dvs:{}},Dragon:{ivs:{atk:30},dvs:{def:14}},Electric:{ivs:{spa:30},dvs:{atk:14}},Fighting:{ivs:{def:30,spa:30,spd:30,spe:30},dvs:{atk:12,def:12}},Fire:{ivs:{atk:30,spa:30,spe:30},dvs:{atk:14,def:12}},Flying:{ivs:{hp:30,atk:30,def:30,spa:30,spd:30},dvs:{atk:12,def:13}},Ghost:{ivs:{def:30,spd:30},dvs:{atk:13,def:14}},Grass:{ivs:{atk:30,spa:30},dvs:{atk:14,def:14}},Ground:{ivs:{spa:30,spd:30},dvs:{atk:12}},Ice:{ivs:{atk:30,def:30},dvs:{def:13}},Poison:{ivs:{def:30,spa:30,spd:30},dvs:{atk:12,def:14}},Psychic:{ivs:{atk:30,spe:30},dvs:{def:12}},Rock:{ivs:{def:30,spd:30,spe:30},dvs:{atk:13,def:12}},Steel:{ivs:{spd:30},dvs:{atk:13}},Water:{ivs:{atk:30,def:30,spa:30},dvs:{atk:14,def:13}}};e.Stats=new(function(){function a(){}return a.prototype.displayStat=function(e){switch(e){case"hp":return"HP";case"atk":return"Atk";case"def":return"Def";case"spa":return"SpA";case"spd":return"SpD";case"spe":return"Spe";case"spc":return"Spc";default:throw new Error("unknown stat ".concat(e))}},a.prototype.shortForm=function(e){switch(e){case"hp":return"hp";case"atk":return"at";case"def":return"df";case"spa":return"sa";case"spd":return"sd";case"spe":return"sp";case"spc":return"sl"}},a.prototype.getHPDV=function(e){return this.IVToDV(e.atk)%2*8+this.IVToDV(e.def)%2*4+this.IVToDV(e.spe)%2*2+this.IVToDV(e.spc)%2},a.prototype.IVToDV=function(e){return Math.floor(e/2)},a.prototype.DVToIV=function(e){return 2*e},a.prototype.DVsToIVs=function(a){var t,i={};for(t in a)i[t]=e.Stats.DVToIV(a[t]);return i},a.prototype.calcStat=function(e,a,t,i,r,s,o){if(e.num<1||e.num>9)throw new Error("Invalid generation ".concat(e.num));return e.num<3?this.calcStatRBY(a,t,i,s):this.calcStatADV(e.natures,a,t,i,r,s,o)},a.prototype.calcStatADV=function(e,a,t,i,r,s,n){if("hp"===a)return 1===t?t:Math.floor((2*t+i+Math.floor(r/4))*s/100)+s+10;var l=[void 0,void 0];if(n){var h=e.get((0,o.toID)(n));l=[null==h?void 0:h.plus,null==h?void 0:h.minus]}var c=l[0]===a&&l[1]===a?1:l[0]===a?1.1:l[1]===a?.9:1;return Math.floor((Math.floor((2*t+i+Math.floor(r/4))*s/100)+5)*c)},a.prototype.calcStatRBY=function(e,a,t,i){return this.calcStatRBYFromDV(e,a,this.IVToDV(t),i)},a.prototype.calcStatRBYFromDV=function(e,a,t,i){return"hp"===e?Math.floor((2*(a+t)+63)*i/100)+i+10:Math.floor((2*(a+t)+63)*i/100)+5},a.prototype.getHiddenPowerIVs=function(a,t){var i=f[t];if(i)return 2===a.num?e.Stats.DVsToIVs(i.dvs):i.ivs},a.prototype.getHiddenPower=function(e,a){var t=function(e,a){return void 0===a&&(a=0),a?(e>>>0)%Math.pow(2,a):e>>>0};if(e.num<=2){var i=t(a.atk/2),r=t(a.def/2),s=t(a.spe/2),o=t(a.spa/2);return{type:p[i%4*4+r%4],power:t((5*((o>>3)+2*(s>>3)+4*(r>>3)+8*(i>>3))+o%4)/2+31)}}var n=0,l=0,h=1;for(var c in{hp:31,atk:31,def:31,spe:31,spa:31,spd:31})n+=h*(a[c]%2),l+=h*(t(a[c]/2)%2),h*=2;return{type:p[t(15*n/63)],power:e.num&&e.num<6?t(40*l/63)+30:60}},a}());var b=e,S=_this&&_this.__assign||function(){return S=Object.assign||function(e){for(var a,t=1,i=arguments.length;t<i;t++)for(var r in a=arguments[t])Object.prototype.hasOwnProperty.call(a,r)&&(e[r]=a[r]);return e},S.apply(this,arguments)},g=_this&&_this.__values||function(e){var a="function"==typeof Symbol&&Symbol.iterator,t=a&&e[a],i=0;if(t)return t.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&i>=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(a?"Object is not iterable.":"Symbol.iterator is not defined.")},v=["hp","atk","def","spa","spd","spe"],k=new Set(["spc"]),A=function(){function e(a,t,i){var r,s,n;void 0===i&&(i={}),this.species=(0,o.extend)(!0,{},a.species.get((0,o.toID)(t)),i.overrides),this.gen=a,this.name=i.name||t,this.types=this.species.types,this.weightkg=this.species.weightkg,this.level=i.level||100,this.gender=i.gender||this.species.gender||"M",this.ability=i.ability||(null===(n=this.species.abilities)||void 0===n?void 0:n[0])||void 0,this.abilityOn=!!i.abilityOn,this.isDynamaxed=!!i.isDynamaxed,this.dynamaxLevel=this.isDynamaxed?void 0===i.dynamaxLevel?10:i.dynamaxLevel:void 0,this.isSaltCure=!!i.isSaltCure,this.alliesFainted=i.alliesFainted,this.boostedStat=i.boostedStat,this.teraType=i.teraType,this.item=i.item,this.nature=i.nature||"Serious",this.ivs=e.withDefault(a,i.ivs,31),this.evs=e.withDefault(a,i.evs,a.num>=3?0:252),this.boosts=e.withDefault(a,i.boosts,0,!1),0===this.weightkg&&!this.isDynamaxed&&this.species.baseSpecies&&(this.weightkg=a.species.get((0,o.toID)(this.species.baseSpecies)).weightkg),a.num<3&&(this.ivs.hp=b.Stats.DVToIV(b.Stats.getHPDV({atk:this.ivs.atk,def:this.ivs.def,spe:this.ivs.spe,spc:this.ivs.spa}))),this.rawStats={},this.stats={};try{for(var l=g(v),h=l.next();!h.done;h=l.next()){var c=h.value,d=this.calcStat(a,c);this.rawStats[c]=d,this.stats[c]=d}}catch(e){r={error:e}}finally{try{h&&!h.done&&(s=l.return)&&s.call(l)}finally{if(r)throw r.error}}var u=i.curHP||i.originalCurHP;this.originalCurHP=u&&u<=this.rawStats.hp?u:this.rawStats.hp,this.status=i.status||"",this.toxicCounter=i.toxicCounter||0,this.moves=i.moves||[]}return e.prototype.maxHP=function(e){return void 0===e&&(e=!1),!e&&this.isDynamaxed&&1!==this.species.baseStats.hp?Math.floor(this.rawStats.hp*(150+5*this.dynamaxLevel)/100):this.rawStats.hp},e.prototype.curHP=function(e){return void 0===e&&(e=!1),!e&&this.isDynamaxed&&1!==this.species.baseStats.hp?Math.ceil(this.originalCurHP*(150+5*this.dynamaxLevel)/100):this.originalCurHP},e.prototype.hasAbility=function(){for(var e=[],a=0;a<arguments.length;a++)e[a]=arguments[a];return!(!this.ability||!e.includes(this.ability))},e.prototype.hasItem=function(){for(var e=[],a=0;a<arguments.length;a++)e[a]=arguments[a];return!(!this.item||!e.includes(this.item))},e.prototype.hasStatus=function(){for(var e=[],a=0;a<arguments.length;a++)e[a]=arguments[a];return!(!this.status||!e.includes(this.status))},e.prototype.hasType=function(){for(var e,a,t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];try{for(var r=g(t),s=r.next();!s.done;s=r.next()){var o=s.value;if(this.teraType?this.teraType===o:this.types.includes(o))return!0}}catch(a){e={error:a}}finally{try{s&&!s.done&&(a=r.return)&&a.call(r)}finally{if(e)throw e.error}}return!1},e.prototype.hasOriginalType=function(){for(var e,a,t=[],i=0;i<arguments.length;i++)t[i]=arguments[i];try{for(var r=g(t),s=r.next();!s.done;s=r.next()){var o=s.value;if(this.types.includes(o))return!0}}catch(a){e={error:a}}finally{try{s&&!s.done&&(a=r.return)&&a.call(r)}finally{if(e)throw e.error}}return!1},e.prototype.named=function(){for(var e=[],a=0;a<arguments.length;a++)e[a]=arguments[a];return e.includes(this.name)},e.prototype.clone=function(){return new e(this.gen,this.name,{level:this.level,ability:this.ability,abilityOn:this.abilityOn,isDynamaxed:this.isDynamaxed,dynamaxLevel:this.dynamaxLevel,isSaltCure:this.isSaltCure,alliesFainted:this.alliesFainted,boostedStat:this.boostedStat,item:this.item,gender:this.gender,nature:this.nature,ivs:(0,o.extend)(!0,{},this.ivs),evs:(0,o.extend)(!0,{},this.evs),boosts:(0,o.extend)(!0,{},this.boosts),originalCurHP:this.originalCurHP,status:this.status,teraType:this.teraType,toxicCounter:this.toxicCounter,moves:this.moves.slice(),overrides:this.species})},e.prototype.calcStat=function(e,a){return b.Stats.calcStat(e,a,this.species.baseStats[a],this.ivs[a],this.evs[a],this.level,this.nature)},e.getForme=function(e,a,t,i){var r=e.species.get((0,o.toID)(a));if(!(null==r?void 0:r.otherFormes))return a;var s=0;return t&&(t.includes("ite")&&!t.includes("ite Y")||"Groudon"===a&&"Red Orb"===t||"Kyogre"===a&&"Blue Orb"===t)||i&&"Meloetta"===a&&"Relic Song"===i||"Rayquaza"===a&&"Dragon Ascent"===i?s=1:(null==t?void 0:t.includes("ite Y"))&&(s=2),s?r.otherFormes[s-1]:r.name},e.withDefault=function(e,a,t,i){void 0===i&&(i=!0);var r={};if(a&&((0,o.assignWithout)(r,a,k),a.spc&&(r.spa=a.spc,r.spd=a.spc),i&&e.num<=2&&a.spa!==a.spd))throw new Error("Special Attack and Special Defense must match before Gen 3");return S({hp:t,atk:t,def:t,spa:t,spd:t,spe:t},r)},e}();e.Pokemon=A;var P=_this&&_this.__read||function(e,a){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var i,r,s=t.call(e),o=[];try{for(;(void 0===a||a-- >0)&&!(i=s.next()).done;)o.push(i.value)}catch(e){r={error:e}}finally{try{i&&!i.done&&(t=s.return)&&t.call(s)}finally{if(r)throw r.error}}return o},M=function(){function e(e){void 0===e&&(e={}),this.gameType=e.gameType||"Singles",this.terrain=e.terrain,this.weather=e.weather,this.isMagicRoom=!!e.isMagicRoom,this.isWonderRoom=!!e.isWonderRoom,this.isGravity=!!e.isGravity,this.isAuraBreak=e.isAuraBreak||!1,this.isFairyAura=e.isFairyAura||!1,this.isDarkAura=e.isDarkAura||!1,this.isBeadsOfRuin=e.isBeadsOfRuin||!1,this.isSwordOfRuin=e.isSwordOfRuin||!1,this.isTabletsOfRuin=e.isTabletsOfRuin||!1,this.isVesselOfRuin=e.isVesselOfRuin||!1,this.attackerSide=new T(e.attackerSide||{}),this.defenderSide=new T(e.defenderSide||{})}return e.prototype.hasWeather=function(){for(var e=[],a=0;a<arguments.length;a++)e[a]=arguments[a];return!(!this.weather||!e.includes(this.weather))},e.prototype.hasTerrain=function(){for(var e=[],a=0;a<arguments.length;a++)e[a]=arguments[a];return!(!this.terrain||!e.includes(this.terrain))},e.prototype.swap=function(){var e;return e=P([this.defenderSide,this.attackerSide],2),this.attackerSide=e[0],this.defenderSide=e[1],this},e.prototype.clone=function(){return new e({gameType:this.gameType,weather:this.weather,terrain:this.terrain,isMagicRoom:this.isMagicRoom,isWonderRoom:this.isWonderRoom,isGravity:this.isGravity,attackerSide:this.attackerSide,defenderSide:this.defenderSide,isAuraBreak:this.isAuraBreak,isDarkAura:this.isDarkAura,isFairyAura:this.isFairyAura,isBeadsOfRuin:this.isBeadsOfRuin,isSwordOfRuin:this.isSwordOfRuin,isTabletsOfRuin:this.isTabletsOfRuin,isVesselOfRuin:this.isVesselOfRuin})},e}();e.Field=M;var T=function(){function e(e){void 0===e&&(e={}),this.spikes=e.spikes||0,this.steelsurge=!!e.steelsurge,this.vinelash=!!e.vinelash,this.wildfire=!!e.wildfire,this.cannonade=!!e.cannonade,this.volcalith=!!e.volcalith,this.isSR=!!e.isSR,this.isReflect=!!e.isReflect,this.isLightScreen=!!e.isLightScreen,this.isProtected=!!e.isProtected,this.isSeeded=!!e.isSeeded,this.isForesight=!!e.isForesight,this.isTailwind=!!e.isTailwind,this.isHelpingHand=!!e.isHelpingHand,this.isFlowerGift=!!e.isFlowerGift,this.isFriendGuard=!!e.isFriendGuard,this.isAuroraVeil=!!e.isAuroraVeil,this.isBattery=!!e.isBattery,this.isPowerSpot=!!e.isPowerSpot,this.isSteelySpirit=!!e.isSteelySpirit,this.isSwitching=e.isSwitching}return e.prototype.clone=function(){return new e(this)},e}();e.Side=T;var w=["Fire","Water","Grass","Electric","Ice","Psychic","Dark","Dragon"],B=function(){function e(e,a,t){var i,r;void 0===t&&(t={}),a=t.name||a,this.originalName=a;var s=(0,o.extend)(!0,{name:a},e.moves.get((0,o.toID)(a)),t.overrides);if(this.hits=1,t.useMax&&s.maxMove){var n=x(s.type,s.name,t.species,!("Status"!==s.category),t.ability),l=e.moves.get((0,o.toID)(n));s=(0,o.extend)(!0,{},l,{name:n,basePower:["G-Max Drum Solo","G-Max Fire Ball","G-Max Hydrosnipe"].includes(n)?160:10===l.basePower||"Max Flare"===n?s.maxMove.basePower:l.basePower,category:s.category})}if(t.useZ&&(null===(i=s.zMove)||void 0===i?void 0:i.basePower)){var h=F(s.name,s.type,t.item),c=e.moves.get((0,o.toID)(h));s=(0,o.extend)(!0,{},c,{name:h,basePower:1===c.basePower?s.zMove.basePower:c.basePower,category:s.category})}else s.multihit&&(s.multiaccuracy&&"number"==typeof s.multihit?this.hits=t.hits||s.multihit:"number"==typeof s.multihit?this.hits=s.multihit:t.hits?this.hits=t.hits:this.hits="Skill Link"===t.ability?s.multihit[1]:s.multihit[0]+1),this.timesUsedWithMetronome=t.timesUsedWithMetronome;this.gen=e,this.name=s.name,this.ability=t.ability,this.item=t.item,this.useZ=t.useZ,this.useMax=t.useMax,this.overrides=t.overrides,this.species=t.species,this.bp=s.basePower;var d=e.num>=2&&"struggle"===s.id||e.num<=4&&["futuresight","doomdesire"].includes(s.id);this.type=d?"???":s.type,this.category=s.category||(e.num<4?w.includes(s.type)?"Special":"Physical":"Status");var u="Special"===this.category?"spa":"atk";(null===(r=s.self)||void 0===r?void 0:r.boosts)&&s.self.boosts[u]&&s.self.boosts[u]<0&&(this.dropsStats=Math.abs(s.self.boosts[u])),this.timesUsed=this.dropsStats&&t.timesUsed||1,this.secondaries=s.secondaries,this.target=s.target||"any",this.recoil=s.recoil,this.hasCrashDamage=!!s.hasCrashDamage,this.mindBlownRecoil=!!s.mindBlownRecoil,this.struggleRecoil=!!s.struggleRecoil,this.isCrit=!!t.isCrit||!!s.willCrit||1===e.num&&["crabhammer","razorleaf","slash","karate chop"].includes(s.id),this.isStellarFirstUse=!!t.isStellarFirstUse,this.drain=s.drain,this.flags=s.flags,this.priority=s.priority||0,this.ignoreDefensive=!!s.ignoreDefensive,this.overrideOffensiveStat=s.overrideOffensiveStat,this.overrideDefensiveStat=s.overrideDefensiveStat,this.overrideOffensivePokemon=s.overrideOffensivePokemon,this.overrideDefensivePokemon=s.overrideDefensivePokemon,this.breaksProtect=!!s.breaksProtect,this.isZ=!!s.isZ,this.isMax=!!s.isMax,this.multiaccuracy=!!s.multiaccuracy,this.bp||["return","frustration","pikapapow","veeveevolley"].includes(s.id)&&(this.bp=102)}return e.prototype.named=function(){for(var e=[],a=0;a<arguments.length;a++)e[a]=arguments[a];return e.includes(this.name)},e.prototype.hasType=function(){for(var e=[],a=0;a<arguments.length;a++)e[a]=arguments[a];return e.includes(this.type)},e.prototype.clone=function(){return new e(this.gen,this.originalName,{ability:this.ability,item:this.item,species:this.species,useZ:this.useZ,useMax:this.useMax,isCrit:this.isCrit,isStellarFirstUse:this.isStellarFirstUse,hits:this.hits,timesUsed:this.timesUsed,timesUsedWithMetronome:this.timesUsedWithMetronome,overrides:this.overrides})},e}();function F(e,a,t){if(t=t||"",e.includes("Hidden Power"))return"Breakneck Blitz";if("Clanging Scales"===e&&"Kommonium Z"===t)return"Clangorous Soulblaze";if("Darkest Lariat"===e&&"Incinium Z"===t)return"Malicious Moonsault";if("Giga Impact"===e&&"Snorlium Z"===t)return"Pulverizing Pancake";if("Moongeist Beam"===e&&"Lunalium Z"===t)return"Menacing Moonraze Maelstrom";if("Photon Geyser"===e&&"Ultranecrozium Z"===t)return"Light That Burns the Sky";if("Play Rough"===e&&"Mimikium Z"===t)return"Let's Snuggle Forever";if("Psychic"===e&&"Mewnium Z"===t)return"Genesis Supernova";if("Sparkling Aria"===e&&"Primarium Z"===t)return"Oceanic Operetta";if("Spectral Thief"===e&&"Marshadium Z"===t)return"Soul-Stealing 7-Star Strike";if("Spirit Shackle"===e&&"Decidium Z"===t)return"Sinister Arrow Raid";if("Stone Edge"===e&&"Lycanium Z"===t)return"Splintered Stormshards";if("Sunsteel Strike"===e&&"Solganium Z"===t)return"Searing Sunraze Smash";if("Volt Tackle"===e&&"Pikanium Z"===t)return"Catastropika";if("Nature's Madness"===e&&"Tapunium Z"===t)return"Guardian of Alola";if("Thunderbolt"===e){if("Aloraichium Z"===t)return"Stoked Sparksurfer";if("Pikashunium Z"===t)return"10,000,000 Volt Thunderbolt"}return R[a]}e.Move=B,e.getZMoveName=F;var R={Bug:"Savage Spin-Out",Dark:"Black Hole Eclipse",Dragon:"Devastating Drake",Electric:"Gigavolt Havoc",Fairy:"Twinkle Tackle",Fighting:"All-Out Pummeling",Fire:"Inferno Overdrive",Flying:"Supersonic Skystrike",Ghost:"Never-Ending Nightmare",Grass:"Bloom Doom",Ground:"Tectonic Rage",Ice:"Subzero Slammer",Normal:"Breakneck Blitz",Poison:"Acid Downpour",Psychic:"Shattered Psyche",Rock:"Continental Crush",Steel:"Corkscrew Crash",Water:"Hydro Vortex"};function x(e,a,t,i,r){if(i)return"Max Guard";if("Normalize"===r)return"Max Strike";if("Fire"===e){if("Charizard-Gmax"===t)return"G-Max Wildfire";if("Centiskorch-Gmax"===t)return"G-Max Centiferno";if("Cinderace-Gmax"===t)return"G-Max Fire Ball"}if("Normal"===e){if("Eevee-Gmax"===t)return"G-Max Cuddle";if("Meowth-Gmax"===t)return"G-Max Gold Rush";if("Snorlax-Gmax"===t)return"G-Max Replenish";if("Weather Ball"!==a&&"Terrain Pulse"!==a){if("Pixilate"===r)return"Max Starfall";if("Aerilate"===r)return"Max Airstream";if("Refrigerate"===r)return"Max Hailstorm";if("Galvanize"===r)return"Max Lightning"}}if("Fairy"===e){if("Alcremie-Gmax"===t)return"G-Max Finale";if("Hatterene-Gmax"===t)return"G-Max Smite"}if("Steel"===e){if("Copperajah-Gmax"===t)return"G-Max Steelsurge";if("Melmetal-Gmax"===t)return"G-Max Meltdown"}if("Electric"===e){if("Pikachu-Gmax"===t)return"G-Max Volt Crash";if((null==t?void 0:t.startsWith("Toxtricity"))&&(null==t?void 0:t.endsWith("Gmax")))return"G-Max Stun Shock"}if("Grass"===e){if("Appletun-Gmax"===t)return"G-Max Sweetness";if("Flapple-Gmax"===t)return"G-Max Tartness";if("Rillaboom-Gmax"===t)return"G-Max Drum Solo";if("Venusaur-Gmax"===t)return"G-Max Vine Lash"}if("Water"===e){if("Blastoise-Gmax"===t)return"G-Max Cannonade";if("Drednaw-Gmax"===t)return"G-Max Stonesurge";if("Inteleon-Gmax"===t)return"G-Max Hydrosnipe";if("Kingler-Gmax"===t)return"G-Max Foam Burst";if("Urshifu-Rapid-Strike-Gmax"===t)return"G-Max Rapid Flow"}if("Dark"===e){if("Grimmsnarl-Gmax"===t)return"G-Max Snooze";if("Urshifu-Gmax"===t)return"G-Max One Blow"}return"Poison"===e&&"Garbodor-Gmax"===t?"G-Max Malodor":"Fighting"===e&&"Machamp-Gmax"===t?"G-Max Chi Strike":"Ghost"===e&&"Gengar-Gmax"===t?"G-Max Terror":"Ice"===e&&"Lapras-Gmax"===t?"G-Max Resonance":"Flying"===e&&"Corviknight-Gmax"===t?"G-Max Wind Rage":"Dragon"===e&&"Duraludon-Gmax"===t?"G-Max Depletion":"Psychic"===e&&"Orbeetle-Gmax"===t?"G-Max Gravitas":"Rock"===e&&"Coalossal-Gmax"===t?"G-Max Volcalith":"Ground"===e&&"Sandaconda-Gmax"===t?"G-Max Sandblast":"Dark"===e&&"Grimmsnarl-Gmax"===t?"G-Max Snooze":"Max "+G[e]}e.getMaxMoveName=x;var G={Bug:"Flutterby",Dark:"Darkness",Dragon:"Wyrmwind",Electric:"Lightning",Fairy:"Starfall",Fighting:"Knuckle",Fire:"Flare",Flying:"Airstream",Ghost:"Phantasm",Grass:"Overgrowth",Ground:"Quake",Ice:"Hailstorm",Normal:"Strike",Poison:"Ooze",Psychic:"Mindstorm",Rock:"Rockfall",Steel:"Steelspike",Water:"Geyser"};e.SEED_BOOSTED_STAT={"Electric Seed":"def","Grassy Seed":"def","Misty Seed":"spd","Psychic Seed":"spd"},e.getItemBoostType=function(e){switch(e){case"Draco Plate":case"Dragon Fang":return"Dragon";case"Dread Plate":case"Black Glasses":return"Dark";case"Earth Plate":case"Soft Sand":return"Ground";case"Fist Plate":case"Black Belt":return"Fighting";case"Flame Plate":case"Charcoal":return"Fire";case"Icicle Plate":case"Never-Melt Ice":return"Ice";case"Insect Plate":case"Silver Powder":return"Bug";case"Iron Plate":case"Metal Coat":return"Steel";case"Meadow Plate":case"Rose Incense":case"Miracle Seed":return"Grass";case"Mind Plate":case"Odd Incense":case"Twisted Spoon":return"Psychic";case"Fairy Feather":case"Pixie Plate":return"Fairy";case"Sky Plate":case"Sharp Beak":return"Flying";case"Splash Plate":case"Sea Incense":case"Wave Incense":case"Mystic Water":return"Water";case"Spooky Plate":case"Spell Tag":return"Ghost";case"Stone Plate":case"Rock Incense":case"Hard Stone":return"Rock";case"Toxic Plate":case"Poison Barb":return"Poison";case"Zap Plate":case"Magnet":return"Electric";case"Silk Scarf":case"Pink Bow":case"Polkadot Bow":return"Normal";default:return}},e.getBerryResistType=function(e){switch(e){case"Chilan Berry":return"Normal";case"Occa Berry":return"Fire";case"Passho Berry":return"Water";case"Wacan Berry":return"Electric";case"Rindo Berry":return"Grass";case"Yache Berry":return"Ice";case"Chople Berry":return"Fighting";case"Kebia Berry":return"Poison";case"Shuca Berry":return"Ground";case"Coba Berry":return"Flying";case"Payapa Berry":return"Psychic";case"Tanga Berry":return"Bug";case"Charti Berry":return"Rock";case"Kasib Berry":return"Ghost";case"Haban Berry":return"Dragon";case"Colbur Berry":return"Dark";case"Babiri Berry":return"Steel";case"Roseli Berry":return"Fairy";default:return}};var I=new Set(["TR24","TR28","TR34","TR39","TR53","TR55","TR64","TR66","TR72","TR73"]),D=new Set(["Hard Stone","Room Service","Claw Fossil","Dome Fossil","Helix Fossil","Old Amber","Root Fossil","Armor Fossil","Old Amber","Fossilized Bird","Fossilized Dino","Fossilized Drake","Fossilized Fish","Plume Fossil","Jaw Fossil","Cover Fossil","Sail Fossil","Rare Bone","Skull Fossil","TR10","TR31","TR75"]),H=new Set(["Deep Sea Tooth","Thick Club","TR02","TR04","TR05","TR08","TR11","TR22","TR35","TR42","TR45","TR50","TR61","TR65","TR67","TR86","TR90","TR96"]),W=new Set(["TR01","TR41","TR62","TR93","TR97","TR98"]),C=new Set(["Assault Vest","Blunder Policy","Chipped Pot","Cracked Pot","Heavy-Duty Boots","Weakness Policy","Quick Claw","Dawn Stone","Dusk Stone","Electirizer","Magmarizer","Oval Stone","Protector","Sachet","Whipped Dream","Razor Claw","Shiny Stone","TR16","TR18","TR19","TR25","TR32","TR33","TR47","TR56","TR57","TR58","TR59","TR60","TR63","TR69","TR70","TR74","TR84","TR87","TR92","TR95","TR99"]),O=new Set(["Poison Barb","Dragon Fang","Power Anklet","Power Band","Power Belt","Power Bracer","Power Lens","Power Weight"]),E=new Set(["Adamant Orb","Damp Rock","Heat Rock","Leek","Lustrous Orb","Macho Brace","Rocky Helmet","Stick","Utility Umbrella","Terrain Extender"]),L=new Set(["Absorb Bulb","Black Belt","Black Sludge","Black Glasses","Cell Battery","Charcoal","Deep Sea Scale","Flame Orb","King's Rock","Life Orb","Light Ball","Light Clay","Magnet","Metal Coat","Miracle Seed","Mystic Water","Never-Melt Ice","Razor Fang","Scope Lens","Soul Dew","Spell Tag","Sweet Apple","Tart Apple","Throat Spray","Toxic Orb","Twisted Spoon","Dragon Scale","Energy Powder","Fire Stone","Leaf Stone","Moon Stone","Sun Stone","Thunder Stone","Up-Grade","Water Stone","Berry Juice","Black Sludge","Prism Scale","Ice Stone","Gold Bottle Cap","Luminous Moss","Eject Button","Snowball","Bottle Cap"]),V=new Set(["Air Balloon","Berry Sweet","Choice Band","Choice Scarf","Choice Specs","Clover Sweet","Destiny Knot","Electric Seed","Expert Belt","Flower Sweet","Focus Band","Focus Sash","Full Incense","Grassy Seed","Lagging Tail","Lax Incense","Leftovers","Love Sweet","Mental Herb","Metal Powder","Mint Berry","Miracle Berry","Misty Seed","Muscle Band","Power Herb","Psychic Seed","Odd Incense","Quick Powder","Reaper Cloth","Red Card","Ribbon Sweet","Ring Target","Rock Incense","Rose Incense","Sea Incense","Shed Shell","Silk Scarf","Silver Powder","Smooth Rock","Soft Sand","Soothe Bell","Star Sweet","Strawberry Sweet","Wave Incense","White Herb","Wide Lens","Wise Glasses","Zoom Lens","Silver Powder","Power Herb","TR00","TR07","TR12","TR13","TR14","TR17","TR20","TR21","TR23","TR26","TR27","TR29","TR30","TR37","TR38","TR40","TR44","TR46","TR48","TR49","TR51","TR52","TR54","TR68","TR76","TR77","TR79","TR80","TR83","TR85","TR88","TR91"]);e.getFlingPower=function(e){return e?["Big Nugget","Iron Ball","TR43","TR71"].includes(e)?130:I.has(e)?85:["TR03","TR06","TR09","TR15","TR89"].includes(e)?110:D.has(e)?100:["TR36","TR78","TR81","TR94"].includes(e)?95:e.includes("Plate")||H.has(e)?90:W.has(e)?85:C.has(e)?80:O.has(e)?70:E.has(e)?60:["Eject Pack","Sharp Beak","Dubious Disc"].includes(e)?50:["Icy Rock","Eviolite","Lucky Punch"].includes(e)?40:L.has(e)?30:"TR82"===e?20:e.includes("Berry")||V.has(e)?10:0:0},e.getNaturalGift=function(e,a){var t,i=null===(t=e.items.get((0,o.toID)(a)))||void 0===t?void 0:t.naturalGift;return i?{t:i.type,p:i.basePower}:{t:"Normal",p:1}},e.getTechnoBlast=function(e){switch(e){case"Burn Drive":return"Fire";case"Chill Drive":return"Ice";case"Douse Drive":return"Water";case"Shock Drive":return"Electric";default:return}},e.getMultiAttack=function(e){if(e.includes("Memory"))return e.substring(0,e.indexOf(" "))};var N=_this&&_this.__spreadArray||function(e,a,t){if(t||2===arguments.length)for(var i,r=0,s=a.length;r<s;r++)!i&&r in a||(i||(i=Array.prototype.slice.call(a,0,r)),i[r]=a[r]);return e.concat(i||Array.prototype.slice.call(a))},U=["Macho Brace","Power Anklet","Power Band","Power Belt","Power Bracer","Power Lens","Power Weight"];function z(e,a,t){if(t&&t.num<3){if(a>=0){e=Math.floor(e*[1,1.5,2,2.5,3,3.5,4][a])}else{e=Math.floor(e*[100,66,50,40,33,28,25][-a]/100)}return Math.min(999,Math.max(1,e))}var i=[[2,8],[2,7],[2,6],[2,5],[2,4],[2,3],[2,2],[3,2],[4,2],[5,2],[6,2],[7,2],[8,2]];return e=Y(e*i[6+a][0]),e=Math.floor(e/i[6+a][1])}function K(e,a,t,i){var r=t.weather||"",s=t.terrain,o=z(a.rawStats.spe,a.boosts.spe,e),n=[];return i.isTailwind&&n.push(8192),a.hasAbility("Unburden")&&a.abilityOn||a.hasAbility("Chlorophyll")&&r.includes("Sun")||a.hasAbility("Sand Rush")&&"Sand"===r||a.hasAbility("Swift Swim")&&r.includes("Rain")||a.hasAbility("Slush Rush")&&["Hail","Snow"].includes(r)||a.hasAbility("Surge Surfer")&&"Electric"===s?n.push(8192):a.hasAbility("Quick Feet")&&a.status?n.push(6144):a.hasAbility("Slow Start")&&a.abilityOn?n.push(2048):_(a,t)&&"spe"===j(a,e)&&n.push(6144),a.hasItem("Choice Scarf")?n.push(6144):a.hasItem.apply(a,N(["Iron Ball"],P(U),!1))?n.push(2048):a.hasItem("Quick Powder")&&a.named("Ditto")&&n.push(8192),o=J(Q(o*Z(n,410,131172)/4096)),a.hasStatus("par")&&!a.hasAbility("Quick Feet")&&(o=Math.floor(J(o*(e.num<7?25:50))/100)),o=Math.min(e.num<=2?999:1e4,o),Math.max(0,o)}function Z(e,a,t){var i,r,s=4096;try{for(var o=g(e),n=o.next();!n.done;n=o.next()){var l=n.value;4096!==l&&(s=s*l+2048>>12)}}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return Math.max(Math.min(s,t),a)}function j(e,a){var t,i;if(e.boostedStat&&"auto"!==e.boostedStat)return e.boostedStat;var r="atk";try{for(var s=g(["def","spa","spd","spe"]),o=s.next();!o.done;o=s.next()){var n=o.value;z(e.rawStats[n],e.boosts[n],a)>z(e.rawStats[r],e.boosts[r],a)&&(r=n)}}catch(e){t={error:e}}finally{try{o&&!o.done&&(i=s.return)&&i.call(s)}finally{if(t)throw t.error}}return r}function _(e,a){if(!e.boostedStat)return!1;var t=a.weather||"",i=a.terrain;return e.hasAbility("Protosynthesis")&&(t.includes("Sun")||e.hasItem("Booster Energy"))||e.hasAbility("Quark Drive")&&("Electric"===i||e.hasItem("Booster Energy"))||"auto"!==e.boostedStat}function Q(e){return e%1>.5?Math.ceil(e):Math.floor(e)}function Y(e){return e>65535?e%65536:e}function J(e){return e>4294967295?e%4294967296:e}e.isGrounded=function(e,a){return a.isGravity||e.hasItem("Iron Ball")||!e.hasType("Flying")&&!e.hasAbility("Levitate")&&!e.hasItem("Air Balloon")},e.getModifiedStat=z,e.computeFinalStats=function(e,a,t,i){for(var r,s,o,n,l=[],h=4;h<arguments.length;h++)l[h-4]=arguments[h];var c=[[a,i.attackerSide],[t,i.defenderSide]];try{for(var d=g(c),u=d.next();!u.done;u=d.next()){var y=P(u.value,2),m=y[0],p=y[1];try{for(var f=(o=void 0,g(l)),b=f.next();!b.done;b=f.next()){var S=b.value;"spe"===S?m.stats.spe=K(e,m,i,p):m.stats[S]=z(m.rawStats[S],m.boosts[S],e)}}catch(e){o={error:e}}finally{try{b&&!b.done&&(n=f.return)&&n.call(f)}finally{if(o)throw o.error}}}}catch(e){r={error:e}}finally{try{u&&!u.done&&(s=d.return)&&s.call(d)}finally{if(r)throw r.error}}},e.getFinalSpeed=K,e.getMoveEffectiveness=function(e,a,t,i,r,s){if(i&&"Ghost"===t&&a.hasType("Normal","Fighting"))return 1;if(r&&"Flying"===t&&a.hasType("Ground"))return 1;if(a.named("Freeze-Dry")&&"Water"===t)return 2;var n=e.types.get((0,o.toID)(a.type)).effectiveness[t];return 0===n&&s&&(n=1),a.named("Flying Press")&&(n*=e.types.get("flying").effectiveness[t]),n},e.checkAirLock=function(e,a){e.hasAbility("Air Lock","Cloud Nine")&&(a.weather=void 0)},e.checkTeraformZero=function(e,a){e.hasAbility("Teraform Zero")&&e.abilityOn&&(a.weather=void 0,a.terrain=void 0)},e.checkForecast=function(e,a){if(e.hasAbility("Forecast")&&e.named("Castform"))switch(a){case"Sun":case"Harsh Sunshine":e.types=["Fire"];break;case"Rain":case"Heavy Rain":e.types=["Water"];break;case"Hail":case"Snow":e.types=["Ice"];break;default:e.types=["Normal"]}},e.checkItem=function(e,a){4===e.gen.num&&e.hasItem("Iron Ball")||(e.hasAbility("Klutz")&&!U.includes(e.item)||a)&&(e.disabledItem=e.item,e.item="")},e.checkWonderRoom=function(e,a){var t;a&&(t=P([e.rawStats.spd,e.rawStats.def],2),e.rawStats.def=t[0],e.rawStats.spd=t[1])},e.checkIntimidate=function(e,a,t){var i=t.hasAbility("Clear Body","White Smoke","Hyper Cutter","Full Metal Body")||e.num>=8&&t.hasAbility("Inner Focus","Own Tempo","Oblivious","Scrappy")||t.hasItem("Clear Amulet");a.hasAbility("Intimidate")&&a.abilityOn&&!i&&(t.hasAbility("Contrary","Defiant","Guard Dog")?t.boosts.atk=Math.min(6,t.boosts.atk+1):t.hasAbility("Simple")?t.boosts.atk=Math.max(-6,t.boosts.atk-2):t.boosts.atk=Math.max(-6,t.boosts.atk-1),t.hasAbility("Competitive")&&(t.boosts.spa=Math.min(6,t.boosts.spa+2)))},e.checkDownload=function(e,a,t){var i;if(e.hasAbility("Download")){var r=a.stats.def,s=a.stats.spd;t&&(r=(i=P([s,r],2))[0],s=i[1]),s<=r?e.boosts.spa=Math.min(6,e.boosts.spa+1):e.boosts.atk=Math.min(6,e.boosts.atk+1)}},e.checkIntrepidSword=function(e,a){e.hasAbility("Intrepid Sword")&&a.num>7&&(e.boosts.atk=Math.min(6,e.boosts.atk+1))},e.checkDauntlessShield=function(e,a){e.hasAbility("Dauntless Shield")&&a.num>7&&(e.boosts.def=Math.min(6,e.boosts.def+1))},e.checkWindRider=function(e,a){e.hasAbility("Wind Rider")&&a.isTailwind&&(e.boosts.atk=Math.min(6,e.boosts.atk+1))},e.checkEmbody=function(e,a){if(!(a.num<9))switch(e.ability){case"Embody Aspect (Cornerstone)":e.boosts.def=Math.min(6,e.boosts.def+1);break;case"Embody Aspect (Hearthflame)":e.boosts.atk=Math.min(6,e.boosts.atk+1);break;case"Embody Aspect (Teal)":e.boosts.spe=Math.min(6,e.boosts.spe+1);break;case"Embody Aspect (Wellspring)":e.boosts.spd=Math.min(6,e.boosts.spd+1)}},e.checkInfiltrator=function(e,a){e.hasAbility("Infiltrator")&&(a.isReflect=!1,a.isLightScreen=!1,a.isAuroraVeil=!1)},e.checkSeedBoost=function(e,a){if(e.item&&a.terrain&&e.item.includes("Seed")){var t=e.item.substring(0,e.item.indexOf(" "));a.hasTerrain(t)&&("Grassy"===t||"Electric"===t?e.boosts.def=e.hasAbility("Contrary")?Math.max(-6,e.boosts.def-1):Math.min(6,e.boosts.def+1):e.boosts.spd=e.hasAbility("Contrary")?Math.max(-6,e.boosts.spd-1):Math.min(6,e.boosts.spd+1),e.item="")}},e.checkMultihitBoost=function(e,a,t,i,r,s,o,n){void 0===o&&(o=!1),void 0===n&&(n=!1),i.named("Gyro Ball","Electro Ball")&&t.hasAbility("Gooey","Tangling Hair")?a.hasItem("White Herb")&&!o?(s.attackerItem=a.item,o=!0):(a.boosts.spe=Math.max(a.boosts.spe-1,-6),a.stats.spe=K(e,a,r,r.attackerSide),s.defenderAbility=t.ability):i.named("Power-Up Punch")&&(a.boosts.atk=Math.min(a.boosts.atk+1,6),a.stats.atk=z(a.rawStats.atk,a.boosts.atk,e));var l=a.hasAbility("Simple")?2:1,h=t.hasAbility("Simple")?2:1;if(!n&&t.hasItem("Luminous Moss")&&i.hasType("Water")||t.hasItem("Maranga Berry")&&"Special"===i.category||t.hasItem("Kee Berry")&&"Physical"===i.category){var c=t.hasItem("Kee Berry")?"def":"spd";a.hasAbility("Unaware")?s.attackerAbility=a.ability:(t.hasAbility("Contrary")?(s.defenderAbility=t.ability,t.hasItem("White Herb")&&!n?(s.defenderItem=t.item,n=!0):t.boosts[c]=Math.max(-6,t.boosts[c]-h)):t.boosts[c]=Math.min(6,t.boosts[c]+h),2===h&&(s.defenderAbility=t.ability),t.stats[c]=z(t.rawStats[c],t.boosts[c],e),s.defenderItem=t.item,n=!0)}if(t.hasAbility("Seed Sower")&&(r.terrain="Grassy"),t.hasAbility("Sand Spit")&&(r.weather="Sand"),t.hasAbility("Stamina")?a.hasAbility("Unaware")?s.attackerAbility=a.ability:(t.boosts.def=Math.min(t.boosts.def+1,6),t.stats.def=z(t.rawStats.def,t.boosts.def,e),s.defenderAbility=t.ability):t.hasAbility("Water Compaction")&&i.hasType("Water")?a.hasAbility("Unaware")?s.attackerAbility=a.ability:(t.boosts.def=Math.min(t.boosts.def+2,6),t.stats.def=z(t.rawStats.def,t.boosts.def,e),s.defenderAbility=t.ability):t.hasAbility("Weak Armor")&&(a.hasAbility("Unaware")?s.attackerAbility=a.ability:(t.hasItem("White Herb")&&!n&&0===t.boosts.def?(s.defenderItem=t.item,n=!0):(t.boosts.def=Math.max(t.boosts.def-1,-6),t.stats.def=z(t.rawStats.def,t.boosts.def,e)),s.defenderAbility=t.ability),t.boosts.spe=Math.min(t.boosts.spe+2,6),t.stats.spe=K(e,t,r,r.defenderSide)),i.dropsStats)if(a.hasAbility("Unaware"))s.attackerAbility=a.ability;else{var d="Special"===i.category?"spa":"atk",u=a.boosts[d];a.hasAbility("Contrary")?(u=Math.min(6,u+i.dropsStats),s.attackerAbility=a.ability):u=Math.max(-6,u-i.dropsStats*l),2===l&&(s.attackerAbility=a.ability),a.hasItem("White Herb")&&a.boosts[d]<0&&!o&&(u+=i.dropsStats*l,s.attackerItem=a.item,o=!0),a.boosts[d]=u,a.stats[d]=z(a.rawStats[d],t.boosts[d],e)}if(t.hasAbility("Mummy","Wandering Spirit","Lingering Aroma")&&i.flags.contact){var y=a.ability;a.ability=t.ability,s.attackerAbility&&(s.defenderAbility=t.ability),t.hasAbility("Wandering Spirit")&&(t.ability=y)}return[o,n]},e.chainMods=Z,e.getBaseDamage=function(e,a,t,i){return Math.floor(J(Math.floor(J(J(Math.floor(2*e/5+2)*a)*t)/i)/50+2))},e.getQPBoostedStat=j,e.isQPActive=_,e.getFinalDamage=function(e,a,t,i,r,s,o){var n=Math.floor(J(e*(85+a))/100);return 4096!==r&&(n=J(n*r)/4096),n=Math.floor(J(Q(n)*t)),i&&(n=Math.floor(n/2)),o&&(n=Q(J(1024*n)/4096)),Y(Q(Math.max(1,J(n*s)/4096)))},e.getShellSideArmCategory=function(e,a){return e.stats.atk/a.stats.def>e.stats.spa/a.stats.spd?"Physical":"Special"},e.getWeight=function(e,a,t){var i=10*e.weightkg,r=e.hasAbility("Heavy Metal")?2:e.hasAbility("Light Metal")?.5:1;return 1!==r&&(i=Math.max(Math.trunc(i*r),1),a["".concat(t,"Ability")]=e.ability),e.hasItem("Float Stone")&&(i=Math.max(Math.trunc(.5*i),1),a["".concat(t,"Item")]=e.item),i/10},e.getStabMod=function(e,a,t){var i=4096;e.hasOriginalType(a.type)?i+=2048:e.hasAbility("Protean","Libero")&&!e.teraType&&(i+=2048,t.attackerAbility=e.ability);var r=e.teraType;return r===a.type&&"Stellar"!==r&&(i+=2048,t.attackerTera=r),e.hasAbility("Adaptability")&&e.hasType(a.type)&&(i+=r&&e.hasOriginalType(r)?1024:2048,t.attackerAbility=e.ability),i},e.getStellarStabMod=function(e,a,t,i){return void 0===t&&(t=1),void 0===i&&(i=0),"Stellar"===e.teraType&&(a.isStellarFirstUse&&0===i||e.named("Terapagos-Stellar"))&&(e.hasOriginalType(a.type)?t+=2048:t=4915),t},e.countBoosts=function(e,a){var t,i,r=0,s=1===e.num?["atk","def","spa","spe"]:["atk","def","spa","spd","spe"];try{for(var o=g(s),n=o.next();!n.done;n=o.next()){var l=a[n.value];l&&l>0&&(r+=l)}}catch(e){t={error:e}}finally{try{n&&!n.done&&(i=o.return)&&i.call(o)}finally{if(t)throw t.error}}return r},e.getStatDescriptionText=function(e,a,t,i){var r=e.natures.get((0,o.toID)(i)),s=a.evs[t]+("hp"===t||r.plus===r.minus?"":r.plus===t?"+":r.minus===t?"-":"")+" "+b.Stats.displayStat(t),n=a.ivs[t];return 31!==n&&(s+=" ".concat(n," IVs")),s},e.handleFixedDamageMoves=function(e,a){return a.named("Seismic Toss","Night Shade")?e.level:a.named("Dragon Rage")?40:a.named("Sonic Boom")?20:0},e.pokeRound=Q,e.OF16=Y,e.OF32=J;var X=function(){function e(e,a,t,i,r,s,o){this.gen=e,this.attacker=a,this.defender=t,this.move=i,this.field=r,this.damage=s,this.rawDesc=o}return e.prototype.desc=function(){return this.fullDesc()},e.prototype.range=function(){var e=q(this.damage);if("number"==typeof e[0])return e;var a=e;return[a[0][0]+a[0][1],a[1][0]+a[1][1]]},e.prototype.fullDesc=function(e,a){return void 0===e&&(e="%"),void 0===a&&(a=!0),(0,ce.display)(this.gen,this.attacker,this.defender,this.move,this.field,this.damage,this.rawDesc,e,a)},e.prototype.moveDesc=function(e){return void 0===e&&(e="%"),(0,ce.displayMove)(this.gen,this.attacker,this.defender,this.move,this.damage,e)},e.prototype.recovery=function(e){return void 0===e&&(e="%"),(0,ce.getRecovery)(this.gen,this.attacker,this.defender,this.move,this.damage,e)},e.prototype.recoil=function(e){return void 0===e&&(e="%"),(0,ce.getRecoil)(this.gen,this.attacker,this.defender,this.move,this.damage,e)},e.prototype.kochance=function(e){return void 0===e&&(e=!0),(0,ce.getKOChance)(this.gen,this.attacker,this.defender,this.move,this.field,this.damage,e)},e}();function q(e){if("number"==typeof e)return[e,e];if(e.length>2){var a=e;return a[0]>a[a.length-1]?[Math.min.apply(Math,N([],P(a),!1)),Math.max.apply(Math,N([],P(a),!1))]:[a[0],a[a.length-1]]}if("number"==typeof e[0]&&"number"==typeof e[1])return[[e[0],e[1]],[e[0],e[1]]];var t=e;return t[0][0]>t[0][t[0].length-1]&&(t[0]=t[0].slice().sort()),t[1][0]>t[1][t[1].length-1]&&(t[1]=t[1].slice().sort()),[[t[0][0],t[1][0]],[t[0][t[0].length-1],t[1][t[1].length-1]]]}e.Result=X,e.damageRange=q;var $=e,ee=e;function ae(e,a,t,i,r,s){void 0===s&&(s="%");var o=P((0,$.damageRange)(r),2),n=o[0],l=o[1],h="number"==typeof n?[n]:n,c="number"==typeof l?[l]:l,d=[0,0],u="",y=3===e.num&&i.named("Doom Desire","Future Sight");if(a.hasItem("Shell Bell")&&!y)for(var m=Math.round(t.maxHP()/8),p=0;p<h.length;p++)d[0]+=Math.min(Math.round(h[p]*i.hits/8),m),d[1]+=Math.min(Math.round(c[p]*i.hits/8),m);if(i.named("G-Max Finale")&&(d[0]=d[1]=Math.round(a.maxHP()/6)),i.named("Pain Split")){var f=Math.floor((a.curHP()+t.curHP())/2);d[0]=d[1]=f-a.curHP()}if(i.drain){var b=i.drain[0]/i.drain[1];for(m=Math.round(t.maxHP()*b),p=0;p<h.length;p++){var S=[h[p],c[p]];for(var g in d){var v=Math.round(S[g]*b);a.hasItem("Big Root")&&(v=Math.trunc(5324*v/4096)),d[g]+=Math.min(v*i.hits,m)}}}if(0===d[1])return{recovery:d,text:u};var k=he(s,d[0],a.maxHP()),A=he(s,d[1],a.maxHP()),M=d[0]>0?"recovered":"lost";return{recovery:d,text:u="".concat(k," - ").concat(A).concat(s," ").concat(M)}}function te(e,a,t,i,r,s){void 0===s&&(s="%");var o=P((0,$.damageRange)(r),2),n=o[0],l=o[1],h=("number"==typeof n?n:n[0]+n[1])*i.hits,c=("number"==typeof l?l:l[0]+l[1])*i.hits,d=[0,0],u="",y=n>t.curHP()||l>t.curHP();if(i.recoil){var m=i.recoil[0]/i.recoil[1]*100,p=void 0,f=void 0;y?(p=he(s,t.curHP()*m,a.maxHP(),100),f=he(s,t.curHP()*m,a.maxHP(),100)):(p=he(s,Math.min(h,t.curHP())*m,a.maxHP(),100),f=he(s,Math.min(c,t.curHP())*m,a.maxHP(),100)),a.hasAbility("Rock Head")||(d=[p,f],u="".concat(p," - ").concat(f).concat(s," recoil damage"))}else if(i.hasCrashDamage){var b=2===e.num?12.5:e.num>=3?50:1;p=void 0,f=void 0;switch(y&&2!==e.num?(p=he(s,t.curHP()*b,a.maxHP(),100),f=he(s,t.curHP()*b,a.maxHP(),100)):(p=he(s,Math.min(h,t.maxHP())*b,a.maxHP(),100),f=he(s,Math.min(c,t.maxHP())*b,a.maxHP(),100)),d=[p,f],e.num){case 1:d=he(s,1,a.maxHP()),u="1hp damage on miss";break;case 2:case 3:case 4:if(t.hasType("Ghost"))if(4===e.num){var S=Math.floor(.5*t.maxHP()/a.maxHP()*100);d="%"===s?S:Math.floor(S/100*48),u="".concat(S,"% crash damage")}else d=0,u="no crash damage on Ghost types";else u="".concat(p," - ").concat(f).concat(s," crash damage on miss");break;default:d="%"===s?24:50,u="50% crash damage"}}else i.struggleRecoil?(d="%"===s?12:25,u="25% struggle damage",4===e.num&&(u+=" (rounded down)")):i.mindBlownRecoil&&(d="%"===s?24:50,u="50% recoil damage");return{recoil:d,text:u}}function ie(e,a,t,i,r,s,n){if(void 0===n&&(n=!0),s=function(e){if("number"==typeof e)return[e];if(e.length>2)return e[0]>e[e.length-1]&&(e=e.slice().sort()),e;if("number"==typeof e[0]&&"number"==typeof e[1])return[e[0]+e[1]];for(var a=e,t=[],i=0;i<a[0].length;i++)for(var r=0;r<a[1].length;r++)t.push(a[0][i]+a[1][r]);return t.sort()}(s),isNaN(s[0]))return(0,o.error)(n,"damage[0] must be a number."),{chance:0,n:0,text:""};if(0===s[s.length-1])return(0,o.error)(n,"damage[damage.length - 1] === 0."),{chance:0,n:0,text:""};if(void 0===i.timesUsed&&(i.timesUsed=1),void 0===i.timesUsedWithMetronome&&(i.timesUsedWithMetronome=1),s[0]>=t.maxHP()&&1===i.timesUsed&&1===i.timesUsedWithMetronome)return{chance:1,n:1,text:"guaranteed OHKO"};var l=function(e,a,t){var i=0,r=[];if(a.hasItem("Heavy-Duty Boots"))return{damage:i,texts:r};if(t.isSR&&!a.hasAbility("Magic Guard","Mountaineer")){var s=e.types.get("rock"),o=s.effectiveness[a.types[0]]*(a.types[1]?s.effectiveness[a.types[1]]:1);i+=Math.floor(o*a.maxHP()/8),r.push("Stealth Rock")}if(t.steelsurge&&!a.hasAbility("Magic Guard","Mountaineer")){var n=e.types.get("steel");o=n.effectiveness[a.types[0]]*(a.types[1]?n.effectiveness[a.types[1]]:1);i+=Math.floor(o*a.maxHP()/8),r.push("Steelsurge")}a.hasType("Flying")||a.hasAbility("Magic Guard","Levitate")||a.hasItem("Air Balloon")||(1===t.spikes?(i+=Math.floor(a.maxHP()/8),2===e.num?r.push("Spikes"):r.push("1 layer of Spikes")):2===t.spikes?(i+=Math.floor(a.maxHP()/6),r.push("2 layers of Spikes")):3===t.spikes&&(i+=Math.floor(a.maxHP()/4),r.push("3 layers of Spikes")));isNaN(i)&&(i=0);return{damage:i,texts:r}}(e,t,r.defenderSide),h=function(e,a,t,i,r){var s=0,o=[];r.hasWeather("Sun","Harsh Sunshine")?t.hasAbility("Dry Skin","Solar Power")&&(s-=Math.floor(t.maxHP()/8),o.push(t.ability+" damage")):r.hasWeather("Rain","Heavy Rain")?t.hasAbility("Dry Skin")?(s+=Math.floor(t.maxHP()/8),o.push("Dry Skin recovery")):t.hasAbility("Rain Dish")&&(s+=Math.floor(t.maxHP()/16),o.push("Rain Dish recovery")):r.hasWeather("Sand")?t.hasType("Rock","Ground","Steel")||t.hasAbility("Magic Guard","Overcoat","Sand Force","Sand Rush","Sand Veil")||t.hasItem("Safety Goggles")||(s-=Math.floor(t.maxHP()/(2===e.num?8:16)),o.push("sandstorm damage")):r.hasWeather("Hail","Snow")&&(t.hasAbility("Ice Body")?(s+=Math.floor(t.maxHP()/16),o.push("Ice Body recovery")):t.hasType("Ice")||t.hasAbility("Magic Guard","Overcoat","Snow Cloak")||t.hasItem("Safety Goggles")||!r.hasWeather("Hail")||(s-=Math.floor(t.maxHP()/16),o.push("hail damage")));var n=i.named("Knock Off")&&!t.hasAbility("Sticky Hold");t.hasItem("Leftovers")&&!n?(s+=Math.floor(t.maxHP()/16),o.push("Leftovers recovery")):t.hasItem("Black Sludge")&&!n?t.hasType("Poison")?(s+=Math.floor(t.maxHP()/16),o.push("Black Sludge recovery")):t.hasAbility("Magic Guard","Klutz")||(s-=Math.floor(t.maxHP()/8),o.push("Black Sludge damage")):t.hasItem("Sticky Barb")&&(s-=Math.floor(t.maxHP()/8),o.push("Sticky Barb damage"));r.defenderSide.isSeeded&&(t.hasAbility("Magic Guard")||(s-=Math.floor(t.maxHP()/(e.num>=2?8:16)),o.push("Leech Seed damage")));if(r.attackerSide.isSeeded&&!a.hasAbility("Magic Guard")){var l=Math.floor(a.maxHP()/(e.num>=2?8:16));t.hasItem("Big Root")&&(l=Math.trunc(5324*l/4096)),a.hasAbility("Liquid Ooze")?(s-=l,o.push("Liquid Ooze damage")):(s+=l,o.push("Leech Seed recovery"))}r.hasTerrain("Grassy")&&(0,ee.isGrounded)(t,r)&&(s+=Math.floor(t.maxHP()/16),o.push("Grassy Terrain recovery"));t.hasStatus("psn")?t.hasAbility("Poison Heal")?(s+=Math.floor(t.maxHP()/8),o.push("Poison Heal")):t.hasAbility("Magic Guard")||(s-=Math.floor(t.maxHP()/(1===e.num?16:8)),o.push("poison damage")):t.hasStatus("tox")?t.hasAbility("Poison Heal")?(s+=Math.floor(t.maxHP()/8),o.push("Poison Heal")):t.hasAbility("Magic Guard")||o.push("toxic damage"):t.hasStatus("brn")?t.hasAbility("Heatproof")?(s-=Math.floor(t.maxHP()/(e.num>6?32:16)),o.push("reduced burn damage")):t.hasAbility("Magic Guard")||(s-=Math.floor(t.maxHP()/(1===e.num||e.num>6?16:8)),o.push("burn damage")):(t.hasStatus("slp")||t.hasAbility("Comatose"))&&a.hasAbility("isBadDreams")&&!t.hasAbility("Magic Guard")&&(s-=Math.floor(t.maxHP()/8),o.push("Bad Dreams"));!t.hasAbility("Magic Guard")&&re.includes(i.name)&&(a.hasItem("Binding Band")?(s-=e.num>5?Math.floor(t.maxHP()/6):Math.floor(t.maxHP()/8),o.push("trapping damage")):(s-=e.num>5?Math.floor(t.maxHP()/8):Math.floor(t.maxHP()/16),o.push("trapping damage")));if(t.isSaltCure&&!t.hasAbility("Magic Guard")){var h=t.hasType("Water","Steel")||t.teraType&&["Water","Steel"].includes(t.teraType);s-=Math.floor(t.maxHP()/(h?4:8)),o.push("Salt Cure")}t.hasType("Fire")||t.hasAbility("Magic Guard")||!i.named("Fire Pledge (Grass Pledge Boosted)","Grass Pledge (Fire Pledge Boosted)")||(s-=Math.floor(t.maxHP()/8),o.push("Sea of Fire damage"));t.hasAbility("Magic Guard")||t.hasType("Grass")||!r.defenderSide.vinelash&&!i.named("G-Max Vine Lash")||(s-=Math.floor(t.maxHP()/6),o.push("Vine Lash damage"));t.hasAbility("Magic Guard")||t.hasType("Fire")||!r.defenderSide.wildfire&&!i.named("G-Max Wildfire")||(s-=Math.floor(t.maxHP()/6),o.push("Wildfire damage"));t.hasAbility("Magic Guard")||t.hasType("Water")||!r.defenderSide.cannonade&&!i.named("G-Max Cannonade")||(s-=Math.floor(t.maxHP()/6),o.push("Cannonade damage"));t.hasAbility("Magic Guard")||t.hasType("Rock")||!r.defenderSide.volcalith&&!i.named("G-Max Volcalith")||(s-=Math.floor(t.maxHP()/6),o.push("Volcalith damage"));return{damage:s,texts:o}}(e,a,t,i,r),c=t.hasStatus("tox")&&!t.hasAbility("Magic Guard","Poison Heal")?t.toxicCounter:0,d=i.hits>1?"approx. ":"",u=l.texts.length>0?" after "+ne(l.texts):"",y=l.texts.length>0||h.texts.length>0?" after "+ne(l.texts.concat(h.texts)):"",m=h.texts.length>0?" after "+ne(h.texts):"";function p(e){return Math.max(Math.min(Math.round(1e3*e),999),1)/10}function f(e,a,t,i){void 0===i&&(i=!1);var r=1===t?"OHKO":i?"KO in ".concat(t," turns"):"".concat(t,"HKO"),s=d,o=void 0;return void 0===e||void 0===a?s+="possible ".concat(r):e+a===0?(o=0,s+="not a KO"):1===e?(o=e,""===d&&(s+="guaranteed "),s+="OHKO".concat(u)):e>0?(o=a,1===a?s+="".concat(p(e),"% chance to ").concat(r).concat(u," ")+"(guaranteed ".concat(r).concat(m,")"):a>e?s+="".concat(p(e),"% chance to ").concat(r).concat(u," ")+"(".concat(d).concat(p(a),"% chance to ")+"".concat(r).concat(m,")"):e>0&&(s+="".concat(p(e),"% chance to ").concat(r).concat(u))):0===e&&(o=a,1===a?(""===d&&(s+="guaranteed "),s+="".concat(r).concat(y)):a>0&&(s+="".concat(p(a),"% chance to ").concat(r).concat(y))),{chance:o,n:t,text:s}}if(!(1===i.timesUsed&&1===i.timesUsedWithMetronome||i.isZ))return(b=se(s,t.maxHP()-l.damage,h.damage,i.hits||1,i.timesUsed||1,t.maxHP(),c))>0?f(0,b,i.timesUsed,1===b):oe(s[0],h.damage,1,i.timesUsed,c,t.maxHP())>=t.curHP()-l.damage?f(0,1,i.timesUsed,!0):oe(s[s.length-1],h.damage,1,i.timesUsed,c,t.maxHP())>=t.curHP()-l.damage?f(void 0,void 0,i.timesUsed,!0):f(0,0,i.timesUsed);var b=se(s,t.curHP()-l.damage,0,1,1,t.maxHP(),0),S=se(s,t.curHP()-l.damage,h.damage,1,1,t.maxHP(),c);if(b+S>0)return f(b,S,1);256===s.length&&(d="approx. ");for(var g=2;g<=4;g++){var v=se(s,t.curHP()-l.damage,h.damage,g,1,t.maxHP(),c);if(v>0)return f(0,v,g)}for(g=5;g<=9;g++){if(oe(s[0],h.damage,g,1,c,t.maxHP())>=t.curHP()-l.damage)return f(0,1,g);if(oe(s[s.length-1],h.damage,g,1,c,t.maxHP())>=t.curHP()-l.damage)return f(void 0,void 0,g)}return{chance:0,n:0,text:""}}e.display=function(e,a,t,i,r,s,o,n,l){void 0===n&&(n="%"),void 0===l&&(l=!0);var h=P((0,$.damageRange)(s),2),c=h[0],d=h[1],u="number"==typeof c?c:c[0]+c[1],y="number"==typeof d?d:d[0]+d[1],m=he(n,u,t.maxHP()),p=he(n,y,t.maxHP()),f=function(e,a,t){var i=P(function(e,a){if(e.level!==a.level)return[100===e.level?"":"Lvl ".concat(e.level),100===a.level?"":"Lvl ".concat(a.level)];var t=[100,50,5].includes(e.level),i=t?"":"Lvl ".concat(e.level);return[i,i]}(a,t),2),r=i[0],s=i[1],o="";e.attackBoost&&(e.attackBoost>0&&(o+="+"),o+=e.attackBoost+" ");o=le(o,r),o=le(o,e.attackEVs),o=le(o,e.attackerItem),o=le(o,e.attackerAbility),o=le(o,e.rivalry),e.isBurned&&(o+="burned ");e.alliesFainted&&(o+=Math.min(5,e.alliesFainted)+" ".concat(1===e.alliesFainted?"ally":"allies"," fainted "));e.attackerTera&&(o+="Tera ".concat(e.attackerTera," "));e.isStellarFirstUse&&(o+="(First Use) ");e.isBeadsOfRuin&&(o+="Beads of Ruin ");e.isSwordOfRuin&&(o+="Sword of Ruin ");o+=e.attackerName+" ",e.isHelpingHand&&(o+="Helping Hand ");e.isFlowerGiftAttacker&&(o+="with an ally's Flower Gift ");e.isSteelySpiritAttacker&&(o+="with an ally's Steely Spirit ");e.isBattery&&(o+="Battery boosted ");e.isPowerSpot&&(o+="Power Spot boosted ");e.isSwitching&&(o+="switching boosted ");o+=e.moveName+" ",e.moveBP&&e.moveType?o+="("+e.moveBP+" BP "+e.moveType+") ":e.moveBP?o+="("+e.moveBP+" BP) ":e.moveType&&(o+="("+e.moveType+") ");e.hits&&(o+="("+e.hits+" hits) ");o=le(o,e.moveTurns),o+="vs. ",e.defenseBoost&&(e.defenseBoost>0&&(o+="+"),o+=e.defenseBoost+" ");o=le(o,s),o=le(o,e.HPEVs),e.defenseEVs&&(o+="/ "+e.defenseEVs+" ");o=le(o,e.defenderItem),o=le(o,e.defenderAbility),e.isTabletsOfRuin&&(o+="Tablets of Ruin ");e.isVesselOfRuin&&(o+="Vessel of Ruin ");e.isProtected&&(o+="protected ");e.isDefenderDynamaxed&&(o+="Dynamax ");e.defenderTera&&(o+="Tera ".concat(e.defenderTera," "));o+=e.defenderName,e.weather&&e.terrain||(e.weather?o+=" in "+e.weather:e.terrain&&(o+=" in "+e.terrain+" Terrain"));e.isReflect?o+=" through Reflect":e.isLightScreen&&(o+=" through Light Screen");e.isFlowerGiftDefender&&(o+=" with an ally's Flower Gift");e.isFriendGuard&&(o+=" with an ally's Friend Guard");e.isAuroraVeil&&(o+=" with an ally's Aurora Veil");e.isCritical&&(o+=" on a critical hit");e.isWonderRoom&&(o+=" in Wonder Room");return o}(o,a,t),b="".concat(u,"-").concat(y," (").concat(m," - ").concat(p).concat(n,")");if("Status"===i.category&&!i.named("Nature Power"))return"".concat(f,": ").concat(b);var S=ie(e,a,t,i,r,s,l).text;return S?"".concat(f,": ").concat(b," -- ").concat(S):"".concat(f,": ").concat(b)},e.displayMove=function(e,a,t,i,r,s){void 0===s&&(s="%");var o=P((0,$.damageRange)(r),2),n=o[0],l=o[1],h="number"==typeof n?n:n[0]+n[1],c="number"==typeof l?l:l[0]+l[1],d=he(s,h,t.maxHP()),u=he(s,c,t.maxHP()),y=ae(e,a,t,i,r,s).text,m=te(e,a,t,i,r,s).text;return"".concat(d," - ").concat(u).concat(s).concat(y&&" (".concat(y,")")).concat(m&&" (".concat(m,")"))},e.getRecovery=ae,e.getRecoil=te,e.getKOChance=ie;var re=["Bind","Clamp","Fire Spin","Infestation","Magma Storm","Sand Tomb","Thunder Cage","Whirlpool","Wrap","G-Max Sandblast","G-Max Centiferno"];function se(e,a,t,i,r,s,o){var n=0;o>0&&(n=Math.floor(o*s/16),o++);var l=e.length;if(1===i){t-n>0&&(t=0,n=0);for(var h=0;h<l;h++){if(e[l-1]-t+n<a)return 0;if(e[h]-t+n>=a)return(l-h)/l}}var c=0,d=0;for(h=0;h<l;h++){var u=void 0;if(1===(u=0===h||e[h]!==e[h-1]?se(e,a-e[h]+t-n,t,i-1,r,s,o):d)){c+=l-h;break}c+=u,d=u}return c/l}function oe(e,a,t,i,r,s){var o=0,n=a;if(r>0){for(var l=0;l<t-1;l++)o+=Math.floor((r+l)*s/16);n-=Math.floor((r+(t-1))*s/16)}var h=0;return h=t>1&&1===i?e*t-a*(t-1)+o:e-a*(t-1)+o,n<0&&(h-=n),h}function ne(e){if(0===e.length)return"";if(1===e.length)return e[0];if(2===e.length)return e[0]+" and "+e[1];for(var a="",t=0;t<e.length-1;t++)a+=e[t]+", ";return a+"and "+e[e.length-1]}function le(e,a){return a?"".concat(e).concat(a," "):e}function he(e,a,t,i){return void 0===i&&(i=1),"%"===e?Math.floor(a*(1e3/i)/t)/10:Math.floor(a*(48/i)/t)}var ce=e,de=e;function ue(e,a,t,i,r,s,o,n){var l;void 0===n&&(n=1);var h,c=a.stats.spe>t.stats.spe?"first":"last";switch(i.name){case"Payback":h=i.bp*("last"===c?2:1),o.moveBP=h;break;case"Bolt Beak":case"Fishious Rend":h=i.bp*("last"!==c?2:1),o.moveBP=h;break;case"Pursuit":var d="out"===r.defenderSide.isSwitching;h=i.bp*(d?2:1),d&&(o.isSwitching="out"),o.moveBP=h;break;case"Electro Ball":var u=Math.floor(a.stats.spe/t.stats.spe);h=u>=4?150:u>=3?120:u>=2?80:u>=1?60:40,0===t.stats.spe&&(h=40),o.moveBP=h;break;case"Gyro Ball":h=Math.min(150,Math.floor(25*t.stats.spe/a.stats.spe)+1),0===a.stats.spe&&(h=1),o.moveBP=h;break;case"Punishment":h=Math.min(200,60+20*(0,ee.countBoosts)(e,t.boosts)),o.moveBP=h;break;case"Low Kick":case"Grass Knot":var y=(0,ee.getWeight)(t,o,"defender");h=y>=200?120:y>=100?100:y>=50?80:y>=25?60:y>=10?40:20,o.moveBP=h;break;case"Hex":case"Infernal Parade":h=i.bp*(t.status||t.hasAbility("Comatose")?2:1),o.moveBP=h;break;case"Barb Barrage":h=i.bp*(t.hasStatus("psn","tox")?2:1),o.moveBP=h;break;case"Heavy Slam":case"Heat Crash":var m=(0,ee.getWeight)(a,o,"attacker")/(0,ee.getWeight)(t,o,"defender");h=m>=5?120:m>=4?100:m>=3?80:m>=2?60:40,o.moveBP=h;break;case"Stored Power":case"Power Trip":h=20+20*(0,ee.countBoosts)(e,a.boosts),o.moveBP=h;break;case"Acrobatics":h=i.bp*(a.hasItem("Flying Gem")||!a.item||(0,ee.isQPActive)(a,r)?2:1),o.moveBP=h;break;case"Assurance":h=i.bp*(t.hasAbility("Parental Bond (Child)")?2:1);break;case"Wake-Up Slap":h=i.bp*(t.hasStatus("slp")||t.hasAbility("Comatose")?2:1),o.moveBP=h;break;case"Smelling Salts":h=i.bp*(t.hasStatus("par")?2:1),o.moveBP=h;break;case"Weather Ball":h=i.bp*(r.weather&&!r.hasWeather("Strong Winds")?2:1),r.hasWeather("Sun","Harsh Sunshine","Rain","Heavy Rain")&&a.hasItem("Utility Umbrella")&&(h=i.bp),o.moveBP=h;break;case"Terrain Pulse":h=i.bp*((0,ee.isGrounded)(a,r)&&r.terrain?2:1),o.moveBP=h;break;case"Rising Voltage":h=i.bp*((0,ee.isGrounded)(t,r)&&r.hasTerrain("Electric")?2:1),o.moveBP=h;break;case"Psyblade":h=i.bp*(r.hasTerrain("Electric")?1.5:1),r.hasTerrain("Electric")&&(o.moveBP=h,o.terrain=r.terrain);break;case"Fling":h=(0,de.getFlingPower)(a.item),o.moveBP=h,o.attackerItem=a.item;break;case"Dragon Energy":case"Eruption":case"Water Spout":h=Math.max(1,Math.floor(150*a.curHP()/a.maxHP())),o.moveBP=h;break;case"Flail":case"Reversal":var p=Math.floor(48*a.curHP()/a.maxHP());h=p<=1?200:p<=4?150:p<=9?100:p<=16?80:p<=32?40:20,o.moveBP=h;break;case"Natural Gift":if(null===(l=a.item)||void 0===l?void 0:l.endsWith("Berry"))h=(0,de.getNaturalGift)(e,a.item).p,o.attackerItem=a.item,o.moveBP=i.bp;else h=i.bp;break;case"Nature Power":if(i.category="Special",i.secondaries=!0,a.hasAbility("Prankster")&&t.types.includes("Dark")){h=0,o.moveName="Nature Power",o.attackerAbility="Prankster";break}switch(r.terrain){case"Electric":h=90,o.moveName="Thunderbolt";break;case"Grassy":h=90,o.moveName="Energy Ball";break;case"Misty":h=95,o.moveName="Moonblast";break;case"Psychic":a.hasAbility("Prankster")&&(0,ee.isGrounded)(t,r)?(h=0,o.attackerAbility="Prankster"):(h=90,o.moveName="Psychic");break;default:h=80,o.moveName="Tri Attack"}break;case"Water Shuriken":h=a.named("Greninja-Ash")&&a.hasAbility("Battle Bond")?20:15,o.moveBP=h;break;case"Triple Axel":h=20*n,o.moveBP=2===i.hits?60:3===i.hits?120:20;break;case"Triple Kick":h=10*n,o.moveBP=2===i.hits?30:3===i.hits?60:10;break;case"Crush Grip":case"Wring Out":h=100*Math.floor(4096*t.curHP()/t.maxHP()),h=Math.floor(Math.floor((120*h+2048-1)/4096)/100)||1,o.moveBP=h;break;case"Hard Press":h=100*Math.floor(4096*t.curHP()/t.maxHP()),h=Math.floor(Math.floor((100*h+2048-1)/4096)/100)||1,o.moveBP=h;break;case"Tera Blast":h="Stellar"===a.teraType?100:80,o.moveBP=h;break;default:h=i.bp}if(0===h)return 0;(i.named("Breakneck Blitz","Bloom Doom","Inferno Overdrive","Hydro Vortex","Gigavolt Havoc","Subzero Slammer","Supersonic Skystrike","Savage Spin-Out","Acid Downpour","Tectonic Rage","Continental Crush","All-Out Pummeling","Shattered Psyche","Never-Ending Nightmare","Devastating Drake","Black Hole Eclipse","Corkscrew Crash","Twinkle Tackle")||i.isMax)&&(o.moveBP=i.bp);var f=ye(e,a,t,i,r,o,h,s,c);return h=(0,ee.OF16)(Math.max(1,(0,ee.pokeRound)(h*(0,ee.chainMods)(f,41,2097152)/4096))),a.teraType&&i.type===a.teraType&&a.hasType(a.teraType)&&1===i.hits&&!i.multiaccuracy&&i.priority<=0&&i.bp>0&&!i.named("Dragon Energy","Eruption","Water Spout")&&h<60&&e.num>=9&&(h=60,o.moveBP=60),h}function ye(e,a,t,i,r,s,n,l,h){var c=[],d=t.item&&""!==t.item?t.item:t.disabledItem,u=!d||(0,ee.isQPActive)(t,r)||t.named("Dialga-Origin")&&"Adamant Crystal"===d||t.named("Palkia-Origin")&&"Lustrous Globe"===d||t.name.includes("Giratina-Origin")&&d.includes("Griseous")||t.name.includes("Arceus")&&d.includes("Plate")||t.name.includes("Genesect")&&d.includes("Drive")||t.named("Groudon","Groudon-Primal")&&"Red Orb"===d||t.named("Kyogre","Kyogre-Primal")&&"Blue Orb"===d||t.name.includes("Silvally")&&d.includes("Memory")||d.includes(" Z")||t.named("Zacian")&&"Rusted Sword"===d||t.named("Zamazenta")&&"Rusted Shield"===d||t.name.includes("Ogerpon-Cornerstone")&&"Cornerstone Mask"===d||t.name.includes("Ogerpon-Hearthflame")&&"Hearthflame Mask"===d||t.name.includes("Ogerpon-Wellspring")&&"Wellspring Mask"===d||t.named("Venomicon-Epilogue")&&"Vile Vial"===d;if(!u&&d){var y=e.items.get((0,o.toID)(d));u=!!y.megaEvolves&&t.name.includes(y.megaEvolves)}if(i.named("Facade")&&a.hasStatus("brn","par","psn","tox")||i.named("Brine")&&t.curHP()<=t.maxHP()/2||i.named("Venoshock")&&t.hasStatus("psn","tox")||i.named("Lash Out")&&(0,ee.countBoosts)(e,a.boosts)<0)c.push(8192),s.moveBP=2*n;else if(i.named("Expanding Force")&&(0,ee.isGrounded)(a,r)&&r.hasTerrain("Psychic"))i.target="allAdjacentFoes",c.push(6144),s.moveBP=1.5*n;else if(i.named("Knock Off")&&!u||i.named("Misty Explosion")&&(0,ee.isGrounded)(a,r)&&r.hasTerrain("Misty")||i.named("Grav Apple")&&r.isGravity)c.push(6144),s.moveBP=1.5*n;else if(i.named("Solar Beam","Solar Blade")&&r.hasWeather("Rain","Heavy Rain","Sand","Hail","Snow"))c.push(2048),s.moveBP=n/2,s.weather=r.weather;else if(i.named("Collision Course","Electro Drift")){var m=a.hasAbility("Scrappy")||a.hasAbility("Mind's Eye")||r.defenderSide.isForesight,p=t.hasItem("Ring Target")&&!t.hasAbility("Klutz"),f=t.teraType&&"Stellar"!==t.teraType?[t.teraType]:t.types;(0,ee.getMoveEffectiveness)(e,i,f[0],m,r.isGravity,p)*(f[1]?(0,ee.getMoveEffectiveness)(e,i,f[1],m,r.isGravity,p):1)>=2&&(c.push(5461),s.moveBP=n*(5461/4096))}r.attackerSide.isHelpingHand&&(c.push(6144),s.isHelpingHand=!0);var b=e.num>7?5325:6144;(0,ee.isGrounded)(a,r)&&(r.hasTerrain("Electric")&&i.hasType("Electric")||r.hasTerrain("Grassy")&&i.hasType("Grass")||r.hasTerrain("Psychic")&&i.hasType("Psychic"))&&(c.push(b),s.terrain=r.terrain),(0,ee.isGrounded)(t,r)&&(r.hasTerrain("Misty")&&i.hasType("Dragon")||r.hasTerrain("Grassy")&&i.named("Bulldoze","Earthquake"))&&(c.push(2048),s.terrain=r.terrain),(a.hasAbility("Technician")&&n<=60||a.hasAbility("Flare Boost")&&a.hasStatus("brn")&&"Special"===i.category||a.hasAbility("Toxic Boost")&&a.hasStatus("psn","tox")&&"Physical"===i.category||a.hasAbility("Mega Launcher")&&i.flags.pulse||a.hasAbility("Strong Jaw")&&i.flags.bite||a.hasAbility("Steely Spirit")&&i.hasType("Steel")||a.hasAbility("Sharpness")&&i.flags.slicing)&&(c.push(6144),s.attackerAbility=a.ability);var S="".concat(i.type," Aura"),g=a.hasAbility(S),v=t.hasAbility(S),k=a.hasAbility("Aura Break")||t.hasAbility("Aura Break"),A=r.isAuraBreak,P=r.isFairyAura&&"Fairy"===i.type,M=r.isDarkAura&&"Dark"===i.type;if((g||v||P||M)&&(A||k?(c.push(3072),s.attackerAbility=a.ability,s.defenderAbility=t.ability):(c.push(5448),g&&(s.attackerAbility=a.ability),v&&(s.defenderAbility=t.ability))),(a.hasAbility("Sheer Force")&&(i.secondaries||i.named("Order Up"))&&!i.isMax||a.hasAbility("Sand Force")&&r.hasWeather("Sand")&&i.hasType("Rock","Ground","Steel")||a.hasAbility("Analytic")&&("first"!==h||"out"===r.defenderSide.isSwitching)||a.hasAbility("Tough Claws")&&i.flags.contact||a.hasAbility("Punk Rock")&&i.flags.sound)&&(c.push(5325),s.attackerAbility=a.ability),r.attackerSide.isBattery&&"Special"===i.category&&(c.push(5325),s.isBattery=!0),r.attackerSide.isPowerSpot&&(c.push(5325),s.isPowerSpot=!0),a.hasAbility("Rivalry")&&![a.gender,t.gender].includes("N")&&(a.gender===t.gender?(c.push(5120),s.rivalry="buffed"):(c.push(3072),s.rivalry="nerfed"),s.attackerAbility=a.ability),!i.isMax&&l&&c.push(4915),(a.hasAbility("Reckless")&&(i.recoil||i.hasCrashDamage)||a.hasAbility("Iron Fist")&&i.flags.punch)&&(c.push(4915),s.attackerAbility=a.ability),e.num<=8&&t.hasAbility("Heatproof")&&i.hasType("Fire")?(c.push(2048),s.defenderAbility=t.ability):t.hasAbility("Dry Skin")&&i.hasType("Fire")&&(c.push(5120),s.defenderAbility=t.ability),a.hasAbility("Supreme Overlord")&&a.alliesFainted){c.push([4096,4506,4915,5325,5734,6144][Math.min(5,a.alliesFainted)]),s.attackerAbility=a.ability,s.alliesFainted=a.alliesFainted}return a.hasItem("".concat(i.type," Gem"))?(c.push(5325),s.attackerItem=a.item):(a.hasItem("Adamant Crystal")&&a.named("Dialga-Origin")||a.hasItem("Adamant Orb")&&a.named("Dialga"))&&i.hasType("Steel","Dragon")||(a.hasItem("Lustrous Orb")&&a.named("Palkia")||a.hasItem("Lustrous Globe")&&a.named("Palkia-Origin"))&&i.hasType("Water","Dragon")||(a.hasItem("Griseous Orb")||a.hasItem("Griseous Core"))&&(a.named("Giratina-Origin")||a.named("Giratina"))&&i.hasType("Ghost","Dragon")||a.hasItem("Vile Vial")&&a.named("Venomicon-Epilogue")&&i.hasType("Poison","Flying")||a.hasItem("Soul Dew")&&a.named("Latios","Latias","Latios-Mega","Latias-Mega")&&i.hasType("Psychic","Dragon")||a.item&&i.hasType((0,de.getItemBoostType)(a.item))||a.name.includes("Ogerpon-Cornerstone")&&a.hasItem("Cornerstone Mask")||a.name.includes("Ogerpon-Hearthflame")&&a.hasItem("Hearthflame Mask")||a.name.includes("Ogerpon-Wellspring")&&a.hasItem("Wellspring Mask")?(c.push(4915),s.attackerItem=a.item):a.hasItem("Muscle Band")&&"Physical"===i.category||a.hasItem("Wise Glasses")&&"Special"===i.category?(c.push(4505),s.attackerItem=a.item):a.hasItem("Punching Glove")&&i.flags.punch&&c.push(4506),c}function me(e,a,t,i,r,s,o){var n;void 0===o&&(o=!1);var l=i.named("Shell Side Arm")&&"Physical"===(0,ee.getShellSideArmCategory)(a,t)?"atk":i.named("Body Press")?"def":"Special"===i.category?"spa":"atk";s.attackEVs=i.named("Foul Play")?(0,ee.getStatDescriptionText)(e,t,l,t.nature):(0,ee.getStatDescriptionText)(e,a,l,a.nature);var h=i.named("Foul Play")?t:a;0===h.boosts[l]||o&&h.boosts[l]<0?n=h.rawStats[l]:t.hasAbility("Unaware")?(n=h.rawStats[l],s.defenderAbility=t.ability):(n=(0,ee.getModifiedStat)(h.rawStats[l],h.boosts[l]),s.attackBoost=h.boosts[l]),a.hasAbility("Hustle")&&"Physical"===i.category&&(n=(0,ee.pokeRound)(3*n/2),s.attackerAbility=a.ability);var c=pe(e,a,t,i,r,s);return n=(0,ee.OF16)(Math.max(1,(0,ee.pokeRound)(n*(0,ee.chainMods)(c,410,131072)/4096)))}function pe(e,a,t,i,r,s){var o=[];a.hasAbility("Slow Start")&&a.abilityOn&&("Physical"===i.category||"Special"===i.category&&i.isZ)||a.hasAbility("Defeatist")&&a.curHP()<=a.maxHP()/2?(o.push(2048),s.attackerAbility=a.ability):a.hasAbility("Solar Power")&&r.hasWeather("Sun","Harsh Sunshine")&&"Special"===i.category||a.named("Cherrim")&&a.hasAbility("Flower Gift")&&r.hasWeather("Sun","Harsh Sunshine")&&"Physical"===i.category?(o.push(6144),s.attackerAbility=a.ability,s.weather=r.weather):a.hasAbility("Gorilla Tactics")&&"Physical"===i.category&&!a.isDynamaxed||a.hasAbility("Guts")&&a.status&&"Physical"===i.category||a.curHP()<=a.maxHP()/3&&(a.hasAbility("Overgrow")&&i.hasType("Grass")||a.hasAbility("Blaze")&&i.hasType("Fire")||a.hasAbility("Torrent")&&i.hasType("Water")||a.hasAbility("Swarm")&&i.hasType("Bug"))||"Special"===i.category&&a.abilityOn&&a.hasAbility("Plus","Minus")?(o.push(6144),s.attackerAbility=a.ability):a.hasAbility("Flash Fire")&&a.abilityOn&&i.hasType("Fire")?(o.push(6144),s.attackerAbility="Flash Fire"):a.hasAbility("Steelworker")&&i.hasType("Steel")||a.hasAbility("Dragon's Maw")&&i.hasType("Dragon")||a.hasAbility("Rocky Payload")&&i.hasType("Rock")?(o.push(6144),s.attackerAbility=a.ability):a.hasAbility("Transistor")&&i.hasType("Electric")?(o.push(e.num>=9?5325:6144),s.attackerAbility=a.ability):(a.hasAbility("Stakeout")&&a.abilityOn||a.hasAbility("Water Bubble")&&i.hasType("Water")||a.hasAbility("Huge Power","Pure Power")&&"Physical"===i.category)&&(o.push(8192),s.attackerAbility=a.ability),r.attackerSide.isFlowerGift&&!a.hasAbility("Flower Gift")&&r.hasWeather("Sun","Harsh Sunshine")&&"Physical"===i.category&&(o.push(6144),s.weather=r.weather,s.isFlowerGiftAttacker=!0),r.attackerSide.isSteelySpirit&&i.hasType("Steel")&&(o.push(6144),s.isSteelySpiritAttacker=!0),(t.hasAbility("Thick Fat")&&i.hasType("Fire","Ice")||t.hasAbility("Water Bubble")&&i.hasType("Fire")||t.hasAbility("Purifying Salt")&&i.hasType("Ghost"))&&(o.push(2048),s.defenderAbility=t.ability),e.num>=9&&t.hasAbility("Heatproof")&&i.hasType("Fire")&&(o.push(2048),s.defenderAbility=t.ability);var n=(t.hasAbility("Tablets of Ruin")||r.isTabletsOfRuin)&&!a.hasAbility("Tablets of Ruin"),l=(t.hasAbility("Vessel of Ruin")||r.isVesselOfRuin)&&!a.hasAbility("Vessel of Ruin");return(n&&"Physical"===i.category||l&&"Special"===i.category)&&(t.hasAbility("Tablets of Ruin")||t.hasAbility("Vessel of Ruin")?s.defenderAbility=t.ability:s["Special"===i.category?"isVesselOfRuin":"isTabletsOfRuin"]=!0,o.push(3072)),(0,ee.isQPActive)(a,r)&&("Physical"===i.category&&"atk"===(0,ee.getQPBoostedStat)(a)||"Special"===i.category&&"spa"===(0,ee.getQPBoostedStat)(a))&&(o.push(5325),s.attackerAbility=a.ability),(a.hasAbility("Hadron Engine")&&"Special"===i.category&&r.hasTerrain("Electric")||a.hasAbility("Orichalcum Pulse")&&"Physical"===i.category&&r.hasWeather("Sun","Harsh Sunshine")&&!a.hasItem("Utility Umbrella"))&&(o.push(5461),s.attackerAbility=a.ability),a.hasItem("Thick Club")&&a.named("Cubone","Marowak","Marowak-Alola","Marowak-Alola-Totem")&&"Physical"===i.category||a.hasItem("Deep Sea Tooth")&&a.named("Clamperl")&&"Special"===i.category||a.hasItem("Light Ball")&&a.name.includes("Pikachu")&&!i.isZ?(o.push(8192),s.attackerItem=a.item):i.isZ||i.isMax||!(a.hasItem("Choice Band")&&"Physical"===i.category||a.hasItem("Choice Specs")&&"Special"===i.category)||(o.push(6144),s.attackerItem=a.item),o}function fe(e,a,t,i,r,s,o){var n;void 0===o&&(o=!1);var l="def"===i.overrideDefensiveStat||"Physical"===i.category||i.named("Shell Side Arm")&&"Physical"===(0,ee.getShellSideArmCategory)(a,t),h=l?"def":"spd";s.defenseEVs=(0,ee.getStatDescriptionText)(e,t,h,t.nature),0===t.boosts[h]||o&&t.boosts[h]>0||i.ignoreDefensive?n=t.rawStats[h]:a.hasAbility("Unaware")?(n=t.rawStats[h],s.attackerAbility=a.ability):(n=(0,ee.getModifiedStat)(t.rawStats[h],t.boosts[h]),s.defenseBoost=t.boosts[h]),r.hasWeather("Sand")&&t.hasType("Rock")&&!l&&(n=(0,ee.pokeRound)(3*n/2),s.weather=r.weather),r.hasWeather("Snow")&&t.hasType("Ice")&&l&&(n=(0,ee.pokeRound)(3*n/2),s.weather=r.weather);var c=be(e,a,t,i,r,s,o,l);return(0,ee.OF16)(Math.max(1,(0,ee.pokeRound)(n*(0,ee.chainMods)(c,410,131072)/4096)))}function be(e,a,t,i,r,s,n,l){var h;void 0===n&&(n=!1),void 0===l&&(l=!1);var c=[];t.hasAbility("Marvel Scale")&&t.status&&l?(c.push(6144),s.defenderAbility=t.ability):t.named("Cherrim")&&t.hasAbility("Flower Gift")&&r.hasWeather("Sun","Harsh Sunshine")&&!l?(c.push(6144),s.defenderAbility=t.ability,s.weather=r.weather):r.defenderSide.isFlowerGift&&r.hasWeather("Sun","Harsh Sunshine")&&!l?(c.push(6144),s.weather=r.weather,s.isFlowerGiftDefender=!0):t.hasAbility("Grass Pelt")&&r.hasTerrain("Grassy")&&l?(c.push(6144),s.defenderAbility=t.ability):t.hasAbility("Fur Coat")&&l&&(c.push(8192),s.defenderAbility=t.ability);var d=(a.hasAbility("Sword of Ruin")||r.isSwordOfRuin)&&!t.hasAbility("Sword of Ruin"),u=(a.hasAbility("Beads of Ruin")||r.isBeadsOfRuin)&&!t.hasAbility("Beads of Ruin");return(d&&l||u&&!l)&&(a.hasAbility("Sword of Ruin")||a.hasAbility("Beads of Ruin")?s.attackerAbility=a.ability:s[l?"isSwordOfRuin":"isBeadsOfRuin"]=!0,c.push(3072)),(0,ee.isQPActive)(t,r)&&(l&&"def"===(0,ee.getQPBoostedStat)(t)||!l&&"spd"===(0,ee.getQPBoostedStat)(t))&&(s.defenderAbility=t.ability,c.push(5324)),t.hasItem("Eviolite")&&("Dipplin"===t.name||(null===(h=e.species.get((0,o.toID)(t.name)))||void 0===h?void 0:h.nfe))||!l&&t.hasItem("Assault Vest")?(c.push(6144),s.defenderItem=t.item):(t.hasItem("Metal Powder")&&t.named("Ditto")&&l||t.hasItem("Deep Sea Scale")&&t.named("Clamperl")&&!l)&&(c.push(8192),s.defenderItem=t.item),c}function Se(e,a,t,i,r,s,o,n,l,h){void 0===h&&(h=!1);var c=(0,ee.getBaseDamage)(a.level,i,r,s);return"Singles"!==n.gameType&&["allAdjacent","allAdjacentFoes"].includes(o.target)&&(c=(0,ee.pokeRound)((0,ee.OF32)(3072*c)/4096)),a.hasAbility("Parental Bond (Child)")&&(c=(0,ee.pokeRound)((0,ee.OF32)(1024*c)/4096)),n.hasWeather("Sun")&&o.named("Hydro Steam")&&!a.hasItem("Utility Umbrella")?(c=(0,ee.pokeRound)((0,ee.OF32)(6144*c)/4096),l.weather=n.weather):t.hasItem("Utility Umbrella")||(n.hasWeather("Sun","Harsh Sunshine")&&o.hasType("Fire")||n.hasWeather("Rain","Heavy Rain")&&o.hasType("Water")?(c=(0,ee.pokeRound)((0,ee.OF32)(6144*c)/4096),l.weather=n.weather):(n.hasWeather("Sun")&&o.hasType("Water")||n.hasWeather("Rain")&&o.hasType("Fire"))&&(c=(0,ee.pokeRound)((0,ee.OF32)(2048*c)/4096),l.weather=n.weather)),h&&(c=Math.floor((0,ee.OF32)(1.5*c)),l.isCritical=h),c}function ge(e,a,t,i,r,s,o,n,l){void 0===o&&(o=!1),void 0===l&&(l=0);var h=[];if(!r.defenderSide.isReflect||"Physical"!==i.category||o||r.defenderSide.isAuroraVeil?!r.defenderSide.isLightScreen||"Special"!==i.category||o||r.defenderSide.isAuroraVeil||(h.push("Singles"!==r.gameType?2732:2048),s.isLightScreen=!0):(h.push("Singles"!==r.gameType?2732:2048),s.isReflect=!0),r.defenderSide.isAuroraVeil&&!o&&(h.push("Singles"!==r.gameType?2732:2048),s.isAuroraVeil=!0),a.hasAbility("Neuroforce")&&n>1?(h.push(5120),s.attackerAbility=a.ability):a.hasAbility("Sniper")&&o?(h.push(6144),s.attackerAbility=a.ability):a.hasAbility("Tinted Lens")&&n<1&&(h.push(8192),s.attackerAbility=a.ability),t.isDynamaxed&&i.named("Dynamax Cannon","Behemoth Blade","Behemoth Bash")&&h.push(8192),!t.hasAbility("Multiscale","Shadow Shield")||t.curHP()!==t.maxHP()||0!==l||(r.defenderSide.isSR||r.defenderSide.spikes&&!t.hasType("Flying"))&&!t.hasItem("Heavy-Duty Boots")||a.hasAbility("Parental Bond (Child)")||(h.push(2048),s.defenderAbility=t.ability),(t.hasAbility("Fluffy")&&i.flags.contact&&!a.hasAbility("Long Reach")||t.hasAbility("Punk Rock")&&i.flags.sound||t.hasAbility("Ice Scales")&&"Special"===i.category)&&(h.push(2048),s.defenderAbility=t.ability),t.hasAbility("Solid Rock","Filter","Prism Armor")&&n>1&&(h.push(3072),s.defenderAbility=t.ability),r.defenderSide.isFriendGuard&&(h.push(3072),s.isFriendGuard=!0),t.hasAbility("Fluffy")&&i.hasType("Fire")&&(h.push(8192),s.defenderAbility=t.ability),a.hasItem("Expert Belt")&&n>1&&!i.isZ)h.push(4915),s.attackerItem=a.item;else if(a.hasItem("Life Orb"))h.push(5324),s.attackerItem=a.item;else if(a.hasItem("Metronome")&&i.timesUsedWithMetronome>=1){var c=Math.floor(i.timesUsedWithMetronome);c<=4?h.push(4096+819*c):h.push(8192),s.attackerItem=a.item}return i.hasType((0,de.getBerryResistType)(t.item))&&(n>1||i.hasType("Normal"))&&0===l&&!a.hasAbility("Unnerve","As One (Glastrier)","As One (Spectrier)")&&(t.hasAbility("Ripen")?h.push(1024):h.push(2048),s.defenderItem=t.item),h}function ve(e,a,t,i,r,s,o,n){var l;void 0===n&&(n=1);var h=a.stats.spe>t.stats.spe?"first":"last";switch(i.name){case"Payback":l=i.bp*("last"===h?2:1),o.moveBP=l;break;case"Pursuit":var c="out"===r.defenderSide.isSwitching;l=i.bp*(c?2:1),c&&(o.isSwitching="out"),o.moveBP=l;break;case"Electro Ball":0===t.stats.spe&&(t.stats.spe=1);var d=Math.floor(a.stats.spe/t.stats.spe);l=d>=4?150:d>=3?120:d>=2?80:d>=1?60:40,o.moveBP=l;break;case"Gyro Ball":0===a.stats.spe&&(a.stats.spe=1),l=Math.min(150,Math.floor(25*t.stats.spe/a.stats.spe)+1),o.moveBP=l;break;case"Punishment":l=Math.min(200,60+20*(0,ee.countBoosts)(e,t.boosts)),o.moveBP=l;break;case"Low Kick":case"Grass Knot":var u=(0,ee.getWeight)(t,o,"defender");l=u>=200?120:u>=100?100:u>=50?80:u>=25?60:u>=10?40:20,o.moveBP=l;break;case"Hex":l=i.bp*(t.status?2:1),o.moveBP=l;break;case"Heavy Slam":case"Heat Crash":var y=(0,ee.getWeight)(a,o,"attacker")/(0,ee.getWeight)(t,o,"defender");l=y>=5?120:y>=4?100:y>=3?80:y>=2?60:40,o.moveBP=l;break;case"Stored Power":case"Power Trip":l=20+20*(0,ee.countBoosts)(e,a.boosts),o.moveBP=l;break;case"Acrobatics":l=i.bp*(a.hasItem("Flying Gem")||!a.item?2:1),o.moveBP=l;break;case"Assurance":l=i.bp*(t.hasAbility("Parental Bond (Child)")?2:1);break;case"Wake-Up Slap":l=i.bp*(t.hasStatus("slp")?2:1),o.moveBP=l;break;case"Smelling Salts":l=i.bp*(t.hasStatus("par")?2:1),o.moveBP=l;break;case"Weather Ball":l=i.bp*(r.weather&&!r.hasWeather("Strong Winds")?2:1),o.moveBP=l;break;case"Fling":l=(0,de.getFlingPower)(a.item),o.moveBP=l,o.attackerItem=a.item;break;case"Eruption":case"Water Spout":l=Math.max(1,Math.floor(150*a.curHP()/a.maxHP())),o.moveBP=l;break;case"Flail":case"Reversal":var m=Math.floor(48*a.curHP()/a.maxHP());l=m<=1?200:m<=4?150:m<=9?100:m<=16?80:m<=32?40:20,o.moveBP=l;break;case"Nature Power":if(5===e.num)i.category="Physical",i.target="allAdjacent",l=100,o.moveName="Earthquake";else switch(i.category="Special",i.secondaries=!0,r.terrain){case"Electric":l=90,o.moveName="Thunderbolt";break;case"Grassy":l=90,o.moveName="Energy Ball";break;case"Misty":l=95,o.moveName="Moonblast";break;default:l=80,o.moveName="Tri Attack"}break;case"Triple Kick":l=10*n,o.moveBP=2===i.hits?30:3===i.hits?60:10;break;case"Crush Grip":case"Wring Out":l=100*Math.floor(4096*t.curHP()/t.maxHP()),l=Math.floor(Math.floor((120*l+2048-1)/4096)/100)||1,o.moveBP=l;break;default:l=i.bp}if(0===l)return 0;var p=ke(e,a,t,i,r,o,l,s,h);return l=(0,ee.OF16)(Math.max(1,(0,ee.pokeRound)(l*(0,ee.chainMods)(p,41,2097152)/4096)))}function ke(e,a,t,i,r,s,n,l,h){var c=[],d=t.item&&""!==t.item?t.item:t.disabledItem,u=!d||t.named("Giratina-Origin")&&"Griseous Orb"===d||t.name.includes("Arceus")&&d.includes("Plate")||t.name.includes("Genesect")&&d.includes("Drive")||t.named("Groudon","Groudon-Primal")&&"Red Orb"===d||t.named("Kyogre","Kyogre-Primal")&&"Blue Orb"===d;if(!u&&d){var y=e.items.get((0,o.toID)(d));u=!(!y.megaEvolves||!t.name.includes(y.megaEvolves))}a.hasAbility("Technician")&&n<=60||a.hasAbility("Flare Boost")&&a.hasStatus("brn")&&"Special"===i.category||a.hasAbility("Toxic Boost")&&a.hasStatus("psn","tox")&&"Physical"===i.category?(c.push(6144),s.attackerAbility=a.ability):a.hasAbility("Analytic")&&"first"!==h?(c.push(5325),s.attackerAbility=a.ability):a.hasAbility("Sand Force")&&r.hasWeather("Sand")&&i.hasType("Rock","Ground","Steel")?(c.push(5325),s.attackerAbility=a.ability,s.weather=r.weather):(a.hasAbility("Reckless")&&(i.recoil||i.hasCrashDamage)||a.hasAbility("Iron Fist")&&i.flags.punch)&&(c.push(4915),s.attackerAbility=a.ability),t.hasAbility("Heatproof")&&i.hasType("Fire")?(c.push(2048),s.defenderAbility=t.ability):t.hasAbility("Dry Skin")&&i.hasType("Fire")&&(c.push(5120),s.defenderAbility=t.ability),a.hasAbility("Sheer Force")&&i.secondaries&&(c.push(5325),s.attackerAbility=a.ability),a.hasAbility("Rivalry")&&![a.gender,t.gender].includes("N")&&(a.gender===t.gender?(c.push(5120),s.rivalry="buffed"):(c.push(3072),s.rivalry="nerfed"),s.attackerAbility=a.ability),a.item&&(0,de.getItemBoostType)(a.item)===i.type?(c.push(4915),s.attackerItem=a.item):a.hasItem("Muscle Band")&&"Physical"===i.category||a.hasItem("Wise Glasses")&&"Special"===i.category?(c.push(4505),s.attackerItem=a.item):a.hasItem("Adamant Orb")&&a.named("Dialga")&&i.hasType("Steel","Dragon")||a.hasItem("Lustrous Orb")&&a.named("Palkia")&&i.hasType("Water","Dragon")||a.hasItem("Griseous Orb")&&a.named("Giratina-Origin")&&i.hasType("Ghost","Dragon")?(c.push(4915),s.attackerItem=a.item):a.hasItem("".concat(i.type," Gem"))&&(c.push(e.num>5?5325:6144),s.attackerItem=a.item),i.named("Facade")&&a.hasStatus("brn","par","psn","tox")||i.named("Brine")&&t.curHP()<=t.maxHP()/2||i.named("Venoshock")&&t.hasStatus("psn","tox")?(c.push(8192),s.moveBP=2*n):e.num>5&&i.named("Knock Off")&&!u?(c.push(6144),s.moveBP=1.5*n):i.named("Solar Beam")&&r.hasWeather("Rain","Heavy Rain","Sand","Hail")&&(c.push(2048),s.moveBP=n/2,s.weather=r.weather),r.attackerSide.isHelpingHand&&(c.push(6144),s.isHelpingHand=!0),l?(c.push(5325),s.attackerAbility=a.ability):a.hasAbility("Mega Launcher")&&i.flags.pulse||a.hasAbility("Strong Jaw")&&i.flags.bite?(c.push(6144),s.attackerAbility=a.ability):a.hasAbility("Tough Claws")&&i.flags.contact&&(c.push(5325),s.attackerAbility=a.ability);var m="".concat(i.type," Aura"),p=a.hasAbility(m),f=t.hasAbility(m),b=a.hasAbility("Aura Break")||t.hasAbility("Aura Break"),S=r.isAuraBreak,g=r.isFairyAura&&"Fairy"===i.type,v=r.isDarkAura&&"Dark"===i.type;return(p||f||g||v)&&(S||b?(c.push(3072),s.attackerAbility=a.ability,s.defenderAbility=t.ability):(c.push(5448),p&&(s.attackerAbility=a.ability),f&&(s.defenderAbility=t.ability))),(0,ee.isGrounded)(a,r)&&(r.hasTerrain("Electric")&&i.hasType("Electric")||r.hasTerrain("Grassy")&&i.hasType("Grass"))&&(c.push(6144),s.terrain=r.terrain),(0,ee.isGrounded)(t,r)&&(r.hasTerrain("Misty")&&i.hasType("Dragon")||r.hasTerrain("Grassy")&&i.named("Bulldoze","Earthquake"))&&(c.push(2048),s.terrain=r.terrain),c}function Ae(e,a,t,i,r,s,o){var n;void 0===o&&(o=!1);var l=i.named("Foul Play")?t:a,h="Special"===i.category?"spa":"atk";s.attackEVs=i.named("Foul Play")?(0,ee.getStatDescriptionText)(e,t,h,t.nature):(0,ee.getStatDescriptionText)(e,a,h,a.nature),0===l.boosts[h]||o&&l.boosts[h]<0?n=l.rawStats[h]:t.hasAbility("Unaware")?(n=l.rawStats[h],s.defenderAbility=t.ability):(n=(0,ee.getModifiedStat)(l.rawStats[h],l.boosts[h]),s.attackBoost=l.boosts[h]),a.hasAbility("Hustle")&&"Physical"===i.category&&(n=(0,ee.pokeRound)(3*n/2),s.attackerAbility=a.ability);var c=Pe(a,t,i,r,s);return n=(0,ee.OF16)(Math.max(1,(0,ee.pokeRound)(n*(0,ee.chainMods)(c,410,131072)/4096)))}function Pe(e,a,t,i,r){var s=[];return a.hasAbility("Thick Fat")&&t.hasType("Fire","Ice")&&(s.push(2048),r.defenderAbility=a.ability),e.hasAbility("Guts")&&e.status&&"Physical"===t.category||e.curHP()<=e.maxHP()/3&&(e.hasAbility("Overgrow")&&t.hasType("Grass")||e.hasAbility("Blaze")&&t.hasType("Fire")||e.hasAbility("Torrent")&&t.hasType("Water")||e.hasAbility("Swarm")&&t.hasType("Bug"))||"Special"===t.category&&e.abilityOn&&e.hasAbility("Plus","Minus")?(s.push(6144),r.attackerAbility=e.ability):e.hasAbility("Flash Fire")&&e.abilityOn&&t.hasType("Fire")?(s.push(6144),r.attackerAbility="Flash Fire"):e.hasAbility("Solar Power")&&i.hasWeather("Sun","Harsh Sunshine")&&"Special"===t.category||e.named("Cherrim")&&e.hasAbility("Flower Gift")&&i.hasWeather("Sun","Harsh Sunshine")&&"Physical"===t.category?(s.push(6144),r.attackerAbility=e.ability,r.weather=i.weather):e.hasAbility("Defeatist")&&e.curHP()<=e.maxHP()/2||e.hasAbility("Slow Start")&&e.abilityOn&&"Physical"===t.category?(s.push(2048),r.attackerAbility=e.ability):e.hasAbility("Huge Power","Pure Power")&&"Physical"===t.category&&(s.push(8192),r.attackerAbility=e.ability),i.attackerSide.isFlowerGift&&!e.hasAbility("Flower Gift")&&i.hasWeather("Sun","Harsh Sunshine")&&"Physical"===t.category&&(s.push(6144),r.weather=i.weather,r.isFlowerGiftAttacker=!0),e.hasItem("Thick Club")&&e.named("Cubone","Marowak","Marowak-Alola")&&"Physical"===t.category||e.hasItem("Deep Sea Tooth")&&e.named("Clamperl")&&"Special"===t.category||e.hasItem("Light Ball")&&e.name.startsWith("Pikachu")&&!t.isZ?(s.push(8192),r.attackerItem=e.item):(e.hasItem("Soul Dew")&&e.named("Latios","Latias","Latios-Mega","Latias-Mega")&&"Special"===t.category||e.hasItem("Choice Band")&&"Physical"===t.category||e.hasItem("Choice Specs")&&"Special"===t.category)&&(s.push(6144),r.attackerItem=e.item),s}function Me(e,a,t,i,r,s,o){var n;void 0===o&&(o=!1);var l=i.overrideDefensiveStat||"Physical"===i.category?"def":"spd",h="def"===l;s.defenseEVs=(0,ee.getStatDescriptionText)(e,t,l,t.nature),0===t.boosts[l]||o&&t.boosts[l]>0||i.ignoreDefensive?n=t.rawStats[l]:a.hasAbility("Unaware")?(n=t.rawStats[l],s.attackerAbility=a.ability):(n=(0,ee.getModifiedStat)(t.rawStats[l],t.boosts[l]),s.defenseBoost=t.boosts[l]),r.hasWeather("Sand")&&t.hasType("Rock")&&!h&&(n=(0,ee.pokeRound)(3*n/2),s.weather=r.weather);var c=Te(e,t,r,s,h);return n=(0,ee.OF16)(Math.max(1,(0,ee.pokeRound)(n*(0,ee.chainMods)(c,410,131072)/4096)))}function Te(e,a,t,i,r){var s;void 0===r&&(r=!1);var n=[];return a.hasAbility("Marvel Scale")&&a.status&&r?(n.push(6144),i.defenderAbility=a.ability):a.named("Cherrim")&&a.hasAbility("Flower Gift")&&t.hasWeather("Sun","Harsh Sunshine")&&!r?(n.push(6144),i.defenderAbility=a.ability,i.weather=t.weather):t.defenderSide.isFlowerGift&&t.hasWeather("Sun","Harsh Sunshine")&&!r&&(n.push(6144),i.weather=t.weather,i.isFlowerGiftDefender=!0),t.hasTerrain("Grassy")&&a.hasAbility("Grass Pelt")&&r&&(n.push(6144),i.defenderAbility=a.ability),(!r&&a.hasItem("Soul Dew")&&a.named("Latios","Latias","Latios-Mega","Latias-Mega")||a.hasItem("Eviolite")&&(null===(s=e.species.get((0,o.toID)(a.name)))||void 0===s?void 0:s.nfe)||!r&&a.hasItem("Assault Vest"))&&(n.push(6144),i.defenderItem=a.item),(a.hasItem("Metal Powder")&&a.named("Ditto")&&r||a.hasItem("Deep Sea Scale")&&a.named("Clamperl")&&!r)&&(n.push(8192),i.defenderItem=a.item),a.hasAbility("Fur Coat")&&r&&(n.push(8192),i.defenderAbility=a.ability),n}function we(e,a,t,i,r,s,o,n,l){void 0===o&&(o=!1),void 0===l&&(l=0);var h=[];if(r.defenderSide.isReflect&&"Physical"===i.category&&!o?(h.push("Singles"!==r.gameType?e.num>5?2732:2703:2048),s.isReflect=!0):r.defenderSide.isLightScreen&&"Special"===i.category&&!o&&(h.push("Singles"!==r.gameType?e.num>5?2732:2703:2048),s.isLightScreen=!0),!t.hasAbility("Multiscale")||t.curHP()!==t.maxHP()||0!==l||r.defenderSide.isSR||r.defenderSide.spikes&&!t.hasType("Flying")||a.hasAbility("Parental Bond (Child)")||(h.push(2048),s.defenderAbility=t.ability),a.hasAbility("Tinted Lens")&&n<1&&(h.push(8192),s.attackerAbility=a.ability),r.defenderSide.isFriendGuard&&(h.push(3072),s.isFriendGuard=!0),a.hasAbility("Sniper")&&o&&(h.push(6144),s.attackerAbility=a.ability),t.hasAbility("Solid Rock","Filter")&&n>1&&(h.push(3072),s.defenderAbility=t.ability),a.hasItem("Metronome")&&i.timesUsedWithMetronome>=1){var c=Math.floor(i.timesUsedWithMetronome);c<=4?h.push(4096+819*c):h.push(8192),s.attackerItem=a.item}return a.hasItem("Expert Belt")&&n>1&&!i.isZ?(h.push(4915),s.attackerItem=a.item):a.hasItem("Life Orb")&&(h.push(5324),s.attackerItem=a.item),i.hasType((0,de.getBerryResistType)(t.item))&&(n>1||i.hasType("Normal"))&&0===l&&!a.hasAbility("Unnerve")&&(h.push(2048),s.defenderItem=t.item),h}function Be(e,a,t,i,r,s,n){void 0===n&&(n=1);var l=i.bp,h=a.stats.spe>t.stats.spe?"first":"last";switch(i.name){case"Brine":t.curHP()<=t.maxHP()/2&&(l*=2,s.moveBP=l);break;case"Eruption":case"Water Spout":l=Math.max(1,Math.floor(l*a.curHP()/a.maxHP())),s.moveBP=l;break;case"Facade":a.hasStatus("par","psn","tox","brn")&&(l=2*i.bp,s.moveBP=l);break;case"Flail":case"Reversal":var c=Math.floor(64*a.curHP()/a.maxHP());l=c<=1?200:c<=5?150:c<=12?100:c<=21?80:c<=42?40:20,s.moveBP=l;break;case"Fling":l=(0,de.getFlingPower)(a.item),s.moveBP=l,s.attackerItem=a.item;break;case"Grass Knot":case"Low Kick":var d=t.weightkg;l=d>=200?120:d>=100?100:d>=50?80:d>=25?60:d>=10?40:20,s.moveBP=l;break;case"Gyro Ball":l=Math.min(150,Math.floor(25*t.stats.spe/a.stats.spe)),s.moveBP=l;break;case"Payback":"first"!==h&&(l*=2,s.moveBP=l);break;case"Punishment":l=Math.min(200,60+20*(0,o.countBoosts)(e,t.boosts)),s.moveBP=l;break;case"Wake-Up Slap":t.hasStatus("slp")&&(l*=2,s.moveBP=l);break;case"Nature Power":i.category="Special",i.secondaries=!0,l=80,s.moveName="Tri Attack";break;case"Crush Grip":case"Wring Out":l=Math.floor(120*t.curHP()/t.maxHP())+1,s.moveBP=l;break;case"Triple Kick":l=10*n,s.moveBP=2===i.hits?30:3===i.hits?60:10;break;case"Weather Ball":l=i.bp*(r.weather?2:1),s.moveBP=l;break;default:l=i.bp}return l}function Fe(e,a,t,i,r,s){i.attackerSide.isHelpingHand&&(s=Math.floor(1.5*s),r.isHelpingHand=!0);var o="Physical"===t.category;return e.hasItem("Muscle Band")&&o||e.hasItem("Wise Glasses")&&!o?(s=Math.floor(1.1*s),r.attackerItem=e.item):(t.hasType((0,de.getItemBoostType)(e.item))||e.hasItem("Adamant Orb")&&e.named("Dialga")&&t.hasType("Steel","Dragon")||e.hasItem("Lustrous Orb")&&e.named("Palkia")&&t.hasType("Water","Dragon")||e.hasItem("Griseous Orb")&&e.named("Giratina-Origin")&&t.hasType("Ghost","Dragon"))&&(s=Math.floor(1.2*s),r.attackerItem=e.item),e.hasAbility("Reckless")&&(t.recoil||t.hasCrashDamage)||e.hasAbility("Iron Fist")&&t.flags.punch?(s=Math.floor(1.2*s),r.attackerAbility=e.ability):(e.curHP()<=e.maxHP()/3&&(e.hasAbility("Overgrow")&&t.hasType("Grass")||e.hasAbility("Blaze")&&t.hasType("Fire")||e.hasAbility("Torrent")&&t.hasType("Water")||e.hasAbility("Swarm")&&t.hasType("Bug"))||e.hasAbility("Technician")&&s<=60)&&(s=Math.floor(1.5*s),r.attackerAbility=e.ability),a.hasAbility("Heatproof")&&t.hasType("Fire")||a.hasAbility("Thick Fat")&&t.hasType("Fire","Ice")?(s=Math.floor(.5*s),r.defenderAbility=a.ability):a.hasAbility("Dry Skin")&&t.hasType("Fire")&&(s=Math.floor(1.25*s),r.defenderAbility=a.ability),s}function Re(e,a,t,i,r,s,n){void 0===n&&(n=!1);var l,h="Physical"===i.category,c=h?"atk":"spa";s.attackEVs=(0,o.getStatDescriptionText)(e,a,c,a.nature);var d=a.boosts[c],u=a.rawStats[c];return 0===d||n&&d<0?l=u:t.hasAbility("Unaware")?(l=u,s.defenderAbility=t.ability):a.hasAbility("Simple")?(l=Ie(u,d),s.attackerAbility=a.ability,s.attackBoost=d):(l=(0,o.getModifiedStat)(u,d),s.attackBoost=d),h&&a.hasAbility("Pure Power","Huge Power")?(l*=2,s.attackerAbility=a.ability):r.hasWeather("Sun")&&a.hasAbility(h?"Flower Gift":"Solar Power")?(l=Math.floor(1.5*l),s.attackerAbility=a.ability,s.weather=r.weather):h&&(a.hasAbility("Hustle")||a.hasAbility("Guts")&&a.status)||!h&&a.abilityOn&&a.hasAbility("Plus","Minus")?(l=Math.floor(1.5*l),s.attackerAbility=a.ability):h&&a.hasAbility("Slow Start")&&a.abilityOn&&(l=Math.floor(l/2),s.attackerAbility=a.ability),r.attackerSide.isFlowerGift&&!a.hasAbility("Flower Gift")&&r.hasWeather("Sun")&&h&&(l=Math.floor(1.5*l),s.weather=r.weather,s.isFlowerGiftAttacker=!0),(h?a.hasItem("Choice Band"):a.hasItem("Choice Specs"))||!h&&a.hasItem("Soul Dew")&&a.named("Latios","Latias")?(l=Math.floor(1.5*l),s.attackerItem=a.item):(a.hasItem("Light Ball")&&a.named("Pikachu")||a.hasItem("Thick Club")&&a.named("Cubone","Marowak")&&h||a.hasItem("Deep Sea Tooth")&&a.named("Clamperl")&&!h)&&(l*=2,s.attackerItem=a.item),l}function xe(e,a,t,i,r,s,n){void 0===n&&(n=!1);var l,h="Physical"===i.category,c=h?"def":"spd";s.defenseEVs=(0,o.getStatDescriptionText)(e,t,c,t.nature);var d=t.boosts[c],u=t.rawStats[c];return 0===d||n&&d>0?l=u:a.hasAbility("Unaware")?(l=u,s.attackerAbility=a.ability):t.hasAbility("Simple")?(l=Ie(u,d),s.defenderAbility=t.ability,s.defenseBoost=d):(l=(0,o.getModifiedStat)(u,d),s.defenseBoost=d),t.hasAbility("Marvel Scale")&&t.status&&h?(l=Math.floor(1.5*l),s.defenderAbility=t.ability):t.hasAbility("Flower Gift")&&r.hasWeather("Sun")&&!h?(l=Math.floor(1.5*l),s.defenderAbility=t.ability,s.weather=r.weather):r.defenderSide.isFlowerGift&&r.hasWeather("Sun")&&!h&&(l=Math.floor(1.5*l),s.weather=r.weather,s.isFlowerGiftDefender=!0),t.hasItem("Soul Dew")&&t.named("Latios","Latias")&&!h?(l=Math.floor(1.5*l),s.defenderItem=t.item):(t.hasItem("Deep Sea Scale")&&t.named("Clamperl")&&!h||t.hasItem("Metal Powder")&&t.named("Ditto")&&h)&&(l*=2,s.defenderItem=t.item),r.hasWeather("Sand")&&t.hasType("Rock")&&!h&&(l=Math.floor(1.5*l),s.weather=r.weather),(i.named("Explosion")||i.named("Self-Destruct"))&&(l=Math.floor(.5*l)),l<1&&(l=1),l}function Ge(e,a,t,i,r,s){void 0===s&&(s=!1);var o="Physical"===t.category;if(!s){var n="Singles"!==i.gameType?2/3:.5;o&&i.defenderSide.isReflect?(e=Math.floor(e*n),r.isReflect=!0):!o&&i.defenderSide.isLightScreen&&(e=Math.floor(e*n),r.isLightScreen=!0)}return"Singles"!==i.gameType&&["allAdjacent","allAdjacentFoes"].includes(t.target)&&(e=Math.floor(3*e/4)),i.hasWeather("Sun")&&t.hasType("Fire")||i.hasWeather("Rain")&&t.hasType("Water")?(e=Math.floor(1.5*e),r.weather=i.weather):(i.hasWeather("Sun")&&t.hasType("Water")||i.hasWeather("Rain")&&t.hasType("Fire")||t.named("Solar Beam")&&i.hasWeather("Rain","Sand","Hail"))&&(e=Math.floor(.5*e),r.weather=i.weather),a.hasAbility("Flash Fire")&&a.abilityOn&&t.hasType("Fire")&&(e=Math.floor(1.5*e),r.attackerAbility="Flash Fire"),e+=2,s&&(a.hasAbility("Sniper")?(e*=3,r.attackerAbility=a.ability):e*=2,r.isCritical=s),a.hasItem("Life Orb")&&(e=Math.floor(1.3*e),r.attackerItem=a.item),t.named("Pursuit")&&"out"===i.defenderSide.isSwitching&&(a.hasAbility("Technician")?e=Math.floor(1*e):(e=Math.floor(2*e),r.isSwitching="out")),e}function Ie(e,a){var t=Math.min(6,Math.max(-6,2*a));return t>0?Math.floor(e*(2+t)/2):t<0?Math.floor(2*e/(2-t)):e}function De(e,a,t,i,r){void 0===r&&(r=1);var s=t.bp;switch(t.name){case"Flail":case"Reversal":var o=Math.floor(48*e.curHP()/e.maxHP());s=o<=1?200:o<=4?150:o<=9?100:o<=16?80:o<=32?40:20,i.moveBP=s;break;case"Eruption":case"Water Spout":s=Math.max(1,Math.floor(150*e.curHP()/e.maxHP())),i.moveBP=s;break;case"Low Kick":var n=a.weightkg;s=n>=200?120:n>=100?100:n>=50?80:n>=25?60:n>=10?40:20,i.moveBP=s;break;case"Facade":e.hasStatus("par","psn","tox","brn")&&(s=2*t.bp,i.moveBP=s);break;case"Nature Power":t.category="Physical",s=60,i.moveName="Swift";break;case"Triple Kick":s=10*r,i.moveBP=2===t.hits?30:3===t.hits?60:10;break;default:s=t.bp}return s}function He(e,a,t,i){return e.curHP()<=e.maxHP()/3&&(e.hasAbility("Overgrow")&&a.hasType("Grass")||e.hasAbility("Blaze")&&a.hasType("Fire")||e.hasAbility("Torrent")&&a.hasType("Water")||e.hasAbility("Swarm")&&a.hasType("Bug"))&&(i=Math.floor(1.5*i),t.attackerAbility=e.ability),i}function We(e,a,t,i,r,s){void 0===s&&(s=!1);var o="Physical"===i.category,n=o?"atk":"spa";r.attackEVs=(0,ee.getStatDescriptionText)(e,a,n,a.nature);var l=a.rawStats[n];o&&a.hasAbility("Huge Power","Pure Power")&&(l*=2,r.attackerAbility=a.ability),!a.hasItem("Sea Incense")&&i.hasType((0,de.getItemBoostType)(a.item))?(l=Math.floor(1.1*l),r.attackerItem=a.item):a.hasItem("Sea Incense")&&i.hasType("Water")?(l=Math.floor(1.05*l),r.attackerItem=a.item):o&&a.hasItem("Choice Band")||!o&&a.hasItem("Soul Dew")&&a.named("Latios","Latias")?(l=Math.floor(1.5*l),r.attackerItem=a.item):(!o&&a.hasItem("Deep Sea Tooth")&&a.named("Clamperl")||!o&&a.hasItem("Light Ball")&&a.named("Pikachu")||o&&a.hasItem("Thick Club")&&a.named("Cubone","Marowak"))&&(l*=2,r.attackerItem=a.item),t.hasAbility("Thick Fat")&&i.hasType("Fire","Ice")&&(l=Math.floor(l/2),r.defenderAbility=t.ability),(o&&(a.hasAbility("Hustle")||a.hasAbility("Guts")&&a.status)||!o&&a.abilityOn&&a.hasAbility("Plus","Minus"))&&(l=Math.floor(1.5*l),r.attackerAbility=a.ability);var h=a.boosts[n];return(h>0||!s&&h<0)&&(l=(0,ee.getModifiedStat)(l,h),r.attackBoost=h),l}function Ce(e,a,t,i,r){void 0===r&&(r=!1);var s="Physical"===t.category,o=s?"def":"spd";i.defenseEVs=(0,ee.getStatDescriptionText)(e,a,o,a.nature);var n=a.rawStats[o];!s&&a.hasItem("Soul Dew")&&a.named("Latios","Latias")?(n=Math.floor(1.5*n),i.defenderItem=a.item):(!s&&a.hasItem("Deep Sea Scale")&&a.named("Clamperl")||s&&a.hasItem("Metal Powder")&&a.named("Ditto"))&&(n*=2,i.defenderItem=a.item),s&&a.hasAbility("Marvel Scale")&&a.status&&(n=Math.floor(1.5*n),i.defenderAbility=a.ability),t.named("Explosion","Self-Destruct")&&(n=Math.floor(n/2));var l=a.boosts[o];return(l<0||!r&&l>0)&&(n=(0,ee.getModifiedStat)(n,l),i.defenseBoost=l),n}function Oe(e,a,t,i,r,s){void 0===s&&(s=!1);var o="Physical"===t.category;if(a.hasStatus("brn")&&o&&!a.hasAbility("Guts")&&(e=Math.floor(e/2),r.isBurned=!0),!s){var n="Singles"!==i.gameType?2/3:.5;o&&i.defenderSide.isReflect?(e=Math.floor(e*n),r.isReflect=!0):!o&&i.defenderSide.isLightScreen&&(e=Math.floor(e*n),r.isLightScreen=!0)}return t.named("Pursuit")&&"out"===i.defenderSide.isSwitching&&(e=Math.floor(2*e),r.isSwitching="out"),"Singles"!==i.gameType&&"allAdjacentFoes"===t.target&&(e=Math.floor(e/2)),i.hasWeather("Sun")&&t.hasType("Fire")||i.hasWeather("Rain")&&t.hasType("Water")?(e=Math.floor(1.5*e),r.weather=i.weather):(i.hasWeather("Sun")&&t.hasType("Water")||i.hasWeather("Rain")&&t.hasType("Fire")||t.named("Solar Beam")&&i.hasWeather("Rain","Sand","Hail"))&&(e=Math.floor(e/2),r.weather=i.weather),a.hasAbility("Flash Fire")&&a.abilityOn&&t.hasType("Fire")&&(e=Math.floor(1.5*e),r.attackerAbility="Flash Fire"),e=("Physical"===t.category?Math.max(1,e):e)+2,s&&(e*=2,r.isCritical=!0),t.named("Weather Ball")&&i.weather&&(e*=2,r.moveBP=2*t.bp),i.attackerSide.isHelpingHand&&(e=Math.floor(1.5*e),r.isHelpingHand=!0),t.hasType.apply(t,N([],P(a.types),!1))&&(e=Math.floor(1.5*e)),e}e.calculateSMSSSV=function e(a,t,i,r,s){var n;(0,ee.checkAirLock)(t,s),(0,ee.checkAirLock)(i,s),(0,ee.checkTeraformZero)(t,s),(0,ee.checkTeraformZero)(i,s),(0,ee.checkForecast)(t,s.weather),(0,ee.checkForecast)(i,s.weather),(0,ee.checkItem)(t,s.isMagicRoom),(0,ee.checkItem)(i,s.isMagicRoom),(0,ee.checkWonderRoom)(t,s.isWonderRoom),(0,ee.checkWonderRoom)(i,s.isWonderRoom),(0,ee.checkSeedBoost)(t,s),(0,ee.checkSeedBoost)(i,s),(0,ee.checkDauntlessShield)(t,a),(0,ee.checkDauntlessShield)(i,a),(0,ee.checkEmbody)(t,a),(0,ee.checkEmbody)(i,a),(0,ee.computeFinalStats)(a,t,i,s,"def","spd","spe"),(0,ee.checkIntimidate)(a,t,i),(0,ee.checkIntimidate)(a,i,t),(0,ee.checkDownload)(t,i,s.isWonderRoom),(0,ee.checkDownload)(i,t,s.isWonderRoom),(0,ee.checkIntrepidSword)(t,a),(0,ee.checkIntrepidSword)(i,a),(0,ee.checkWindRider)(t,s.attackerSide),(0,ee.checkWindRider)(i,s.defenderSide),r.named("Meteor Beam","Electro Shot")&&(t.boosts.spa+=t.hasAbility("Simple")?2:t.hasAbility("Contrary")?-1:1,t.boosts.spa=Math.min(6,Math.max(-6,t.boosts.spa))),(0,ee.computeFinalStats)(a,t,i,s,"atk","spa"),(0,ee.checkInfiltrator)(t,s.defenderSide),(0,ee.checkInfiltrator)(i,s.attackerSide);var l={attackerName:t.name,moveName:r.name,defenderName:i.name,isDefenderDynamaxed:i.isDynamaxed,isWonderRoom:s.isWonderRoom};("Stellar"!==t.teraType||"Tera Blast"===r.name||r.isStellarFirstUse)&&(l.isStellarFirstUse="Terapagos-Stellar"!==t.name&&"Tera Blast"===r.name&&"Stellar"===t.teraType&&r.isStellarFirstUse,l.attackerTera=t.teraType),"Stellar"!==i.teraType&&(l.defenderTera=i.teraType),(r.named("Photon Geyser","Light That Burns the Sky")||r.named("Tera Blast")&&t.teraType)&&(r.category=t.stats.atk>t.stats.spa?"Physical":"Special");var h=new $.Result(a,t,i,r,s,0,l);if("Status"===r.category&&!r.named("Nature Power"))return h;r.flags.punch&&t.hasItem("Punching Glove")&&(l.attackerItem=t.item,r.flags.contact=0),r.named("Shell Side Arm")&&"Physical"===(0,ee.getShellSideArmCategory)(t,i)&&(r.flags.contact=1);var c=r.breaksProtect||r.isZ||t.isDynamaxed||t.hasAbility("Unseen Fist")&&r.flags.contact;if(s.defenderSide.isProtected&&!c)return l.isProtected=!0,h;if("Pain Split"===r.name){var d=Math.floor((t.curHP()+i.curHP())/2),u=Math.max(0,i.curHP()-d);return h.damage=u,h}var y=i.hasAbility("Armor Tail","Aroma Veil","Aura Break","Battle Armor","Big Pecks","Bulletproof","Clear Body","Contrary","Damp","Dazzling","Disguise","Dry Skin","Earth Eater","Filter","Flash Fire","Flower Gift","Flower Veil","Fluffy","Friend Guard","Fur Coat","Good as Gold","Grass Pelt","Guard Dog","Heatproof","Heavy Metal","Hyper Cutter","Ice Face","Ice Scales","Illuminate","Immunity","Inner Focus","Insomnia","Keen Eye","Leaf Guard","Levitate","Light Metal","Lightning Rod","Limber","Magic Bounce","Magma Armor","Marvel Scale","Mind's Eye","Mirror Armor","Motor Drive","Multiscale","Oblivious","Overcoat","Own Tempo","Pastel Veil","Punk Rock","Purifying Salt","Queenly Majesty","Sand Veil","Sap Sipper","Shell Armor","Shield Dust","Simple","Snow Cloak","Solid Rock","Soundproof","Sticky Hold","Storm Drain","Sturdy","Suction Cups","Sweet Veil","Tangled Feet","Telepathy","Tera Shell","Thermal Exchange","Thick Fat","Unaware","Vital Spirit","Volt Absorb","Water Absorb","Water Bubble","Water Veil","Well-Baked Body","White Smoke","Wind Rider","Wonder Guard","Wonder Skin"),m=t.hasAbility("Mold Breaker","Teravolt","Turboblaze"),p=r.named("G-Max Drum Solo","G-Max Fire Ball","G-Max Hydrosnipe","Light That Burns the Sky","Menacing Moonraze Maelstrom","Moongeist Beam","Photon Geyser","Searing Sunraze Smash","Sunsteel Strike");y&&(m||p)&&(m&&(l.attackerAbility=t.ability),i.hasItem("Ability Shield")?l.defenderItem=i.item:i.ability="");var f=["As One (Glastrier)","As One (Spectrier)","Battle Bond","Comatose","Disguise","Gulp Missile","Ice Face","Multitype","Neutralizing Gas","Power Construct","RKS System","Schooling","Shields Down","Stance Change","Tera Shift","Zen Mode","Zero to Hero"];t.hasAbility("Neutralizing Gas")&&!f.includes(i.ability||"")&&(l.attackerAbility=t.ability,i.hasItem("Ability Shield")?l.defenderItem=i.item:i.ability=""),i.hasAbility("Neutralizing Gas")&&!f.includes(t.ability||"")&&(l.defenderAbility=i.ability,t.hasItem("Ability Shield")?l.attackerItem=t.item:t.ability="");var b=!i.hasAbility("Battle Armor","Shell Armor")&&(r.isCrit||t.hasAbility("Merciless")&&i.hasStatus("psn","tox"))&&1===r.timesUsed,S=r.type;if("Weather Ball"===r.originalName){var g=t.hasItem("Utility Umbrella");S=s.hasWeather("Sun","Harsh Sunshine")&&!g?"Fire":s.hasWeather("Rain","Heavy Rain")&&!g?"Water":s.hasWeather("Sand")?"Rock":s.hasWeather("Hail","Snow")?"Ice":"Normal",l.weather=s.weather,l.moveType=S}else if(r.named("Judgment")&&t.item&&t.item.includes("Plate"))S=(0,de.getItemBoostType)(t.item);else if("Techno Blast"===r.originalName&&t.item&&t.item.includes("Drive"))S=(0,de.getTechnoBlast)(t.item),l.moveType=S;else if("Multi-Attack"===r.originalName&&t.item&&t.item.includes("Memory"))S=(0,de.getMultiAttack)(t.item),l.moveType=S;else if(r.named("Natural Gift")&&(null===(n=t.item)||void 0===n?void 0:n.endsWith("Berry"))){S=(0,de.getNaturalGift)(a,t.item).t,l.moveType=S,l.attackerItem=t.item}else r.named("Nature Power")||"Terrain Pulse"===r.originalName&&(0,ee.isGrounded)(t,s)?(S=s.hasTerrain("Electric")?"Electric":s.hasTerrain("Grassy")?"Grass":s.hasTerrain("Misty")?"Fairy":s.hasTerrain("Psychic")?"Psychic":"Normal",l.terrain=s.terrain,r.isMax&&(l.moveType=S),r.named("Nature Power")&&t.hasAbility("Prankster")||!(i.types.includes("Dark")||s.hasTerrain("Psychic")&&(0,ee.isGrounded)(i,s))||(l.moveType=S)):"Revelation Dance"===r.originalName?S=t.teraType?t.teraType:t.types[0]:r.named("Aura Wheel")?t.named("Morpeko")?S="Electric":t.named("Morpeko-Hangry")&&(S="Dark"):r.named("Raging Bull")?(t.named("Tauros-Paldea-Combat")?S="Fighting":t.named("Tauros-Paldea-Blaze")?S="Fire":t.named("Tauros-Paldea-Aqua")&&(S="Water"),s.defenderSide.isReflect=!1,s.defenderSide.isLightScreen=!1,s.defenderSide.isAuroraVeil=!1):r.named("Ivy Cudgel")?t.name.includes("Ogerpon-Cornerstone")?S="Rock":t.name.includes("Ogerpon-Hearthflame")?S="Fire":t.name.includes("Ogerpon-Wellspring")&&(S="Water"):r.named("Tera Starstorm")&&"Terapagos-Stellar"===t.name?(r.target="allAdjacentFoes",S="Stellar"):r.named("Brick Break","Psychic Fangs")&&(s.defenderSide.isReflect=!1,s.defenderSide.isLightScreen=!1,s.defenderSide.isAuroraVeil=!1);var v=!1,k=!1,A=!1,P=!1,M=!1,T=!1,w=!1,B=r.named("Revelation Dance","Judgment","Nature Power","Techno Blast","Multi-Attack","Natural Gift","Weather Ball","Terrain Pulse","Struggle")||r.named("Tera Blast")&&t.teraType;if(!r.isZ&&!B){var F="Normal"===S;(k=t.hasAbility("Aerilate")&&F)?S="Flying":(M=t.hasAbility("Galvanize")&&F)?S="Electric":(T=t.hasAbility("Liquid Voice")&&!!r.flags.sound)?S="Water":(A=t.hasAbility("Pixilate")&&F)?S="Fairy":(P=t.hasAbility("Refrigerate")&&F)?S="Ice":(w=t.hasAbility("Normalize"))&&(S="Normal"),M||A||P||k||w?(l.attackerAbility=t.ability,v=!0):T&&(l.attackerAbility=t.ability)}r.named("Tera Blast")&&t.teraType&&(S=t.teraType),r.type=S,(t.hasAbility("Triage")&&r.drain||t.hasAbility("Gale Wings")&&r.hasType("Flying")&&t.curHP()===t.maxHP())&&(r.priority=1,l.attackerAbility=t.ability);var R=t.hasAbility("Scrappy")||t.hasAbility("Mind's Eye")||s.defenderSide.isForesight,x=i.hasItem("Ring Target")&&!i.hasAbility("Klutz"),G=(0,ee.getMoveEffectiveness)(a,r,i.types[0],R,s.isGravity,x)*(i.types[1]?(0,ee.getMoveEffectiveness)(a,r,i.types[1],R,s.isGravity,x):1);if(i.teraType&&"Stellar"!==i.teraType&&(G=(0,ee.getMoveEffectiveness)(a,r,i.teraType,R,s.isGravity,x)),0===G&&r.hasType("Ground")&&i.hasItem("Iron Ball")&&!i.hasAbility("Klutz")&&(G=1),0===G&&r.named("Thousand Arrows")&&(G=1),0===G)return h;if(r.named("Sky Drop")&&(i.hasType("Flying")||i.weightkg>=200||s.isGravity)||r.named("Synchronoise")&&!i.hasType(t.types[0])&&(!t.types[1]||!i.hasType(t.types[1]))||r.named("Dream Eater")&&!i.hasStatus("slp")&&!i.hasAbility("Comatose")||r.named("Steel Roller")&&!s.terrain||r.named("Poltergeist")&&(!i.item||(0,ee.isQPActive)(i,s)))return h;if(s.hasWeather("Harsh Sunshine")&&r.hasType("Water")||s.hasWeather("Heavy Rain")&&r.hasType("Fire"))return l.weather=s.weather,h;s.hasWeather("Strong Winds")&&i.hasType("Flying")&&a.types.get((0,o.toID)(r.type)).effectiveness.Flying>1&&(G/=2,l.weather=s.weather),"Stellar"===r.type&&(l.defenderTera=i.teraType,G=i.teraType?2:1);var I=G;if(!i.hasAbility("Tera Shell")||i.curHP()!==i.maxHP()||(s.defenderSide.isSR||s.defenderSide.spikes&&!i.hasType("Flying"))&&!i.hasItem("Heavy-Duty Boots")||(G=.5,l.defenderAbility=i.ability),i.hasAbility("Wonder Guard")&&G<=1||r.hasType("Grass")&&i.hasAbility("Sap Sipper")||r.hasType("Fire")&&i.hasAbility("Flash Fire","Well-Baked Body")||r.hasType("Water")&&i.hasAbility("Dry Skin","Storm Drain","Water Absorb")||r.hasType("Electric")&&i.hasAbility("Lightning Rod","Motor Drive","Volt Absorb")||r.hasType("Ground")&&!s.isGravity&&!r.named("Thousand Arrows")&&!i.hasItem("Iron Ball")&&i.hasAbility("Levitate")||r.flags.bullet&&i.hasAbility("Bulletproof")||r.flags.sound&&!r.named("Clangorous Soul")&&i.hasAbility("Soundproof")||r.priority>0&&i.hasAbility("Queenly Majesty","Dazzling","Armor Tail")||r.hasType("Ground")&&i.hasAbility("Earth Eater")||r.flags.wind&&i.hasAbility("Wind Rider"))return l.defenderAbility=i.ability,h;if(r.hasType("Ground")&&!r.named("Thousand Arrows")&&!s.isGravity&&i.hasItem("Air Balloon"))return l.defenderItem=i.item,h;if(r.priority>0&&s.hasTerrain("Psychic")&&(0,ee.isGrounded)(i,s))return l.terrain=s.terrain,h;var D=r.named("Heat Crash","Heavy Slam","Low Kick","Grass Knot");if(i.isDynamaxed&&D)return h;l.HPEVs=(0,ee.getStatDescriptionText)(a,i,"hp");var H=(0,ee.handleFixedDamageMoves)(t,r);if(H)return t.hasAbility("Parental Bond")?(h.damage=[H,H],l.attackerAbility=t.ability):h.damage=H,h;if(r.named("Final Gambit"))return h.damage=t.curHP(),h;if(r.named("Guardian of Alola")){var W=Math.floor(3*i.curHP()/4);return s.defenderSide.isProtected&&t.item&&t.item.includes(" Z")&&(W=Math.ceil(W/4-.5)),h.damage=W,h}if(r.named("Nature's Madness")){var C=s.defenderSide.isProtected?0:Math.floor(i.curHP()/2);return h.damage=C,h}if(r.named("Spectral Thief")){var O=void 0;for(O in i.boosts)i.boosts[O]>0&&(t.boosts[O]+=t.hasAbility("Contrary")?-i.boosts[O]:i.boosts[O],t.boosts[O]>6&&(t.boosts[O]=6),t.boosts[O]<-6&&(t.boosts[O]=-6),t.stats[O]=(0,ee.getModifiedStat)(t.rawStats[O],t.boosts[O]),i.boosts[O]=0,i.stats[O]=i.rawStats[O])}r.hits>1&&(l.hits=r.hits),t.stats.spe,i.stats.spe;var E=ue(a,t,i,r,s,v,l);if(0===E)return h;var L=me(a,t,i,r,s,l,b),V=r.named("Shell Side Arm")&&"Physical"===(0,ee.getShellSideArmCategory)(t,i)?"atk":r.named("Body Press")?"def":"Special"===r.category?"spa":"atk",N=fe(a,t,i,r,s,l,b),U="def"===r.overrideDefensiveStat||"Physical"===r.category||r.named("Shell Side Arm")&&"Physical"===(0,ee.getShellSideArmCategory)(t,i)?"def":"spd",z=Se(a,t,i,E,L,N,r,s,l,b);i.hasItem("Electric Seed","Misty Seed","Grassy Seed","Psychic Seed")&&s.hasTerrain(i.item.substring(0,i.item.indexOf(" ")))&&de.SEED_BOOSTED_STAT[i.item]===U&&(l.defenderItem=i.item);var K=(0,ee.getStabMod)(t,r,l),Z=(0,ee.getStellarStabMod)(t,r,K),j=t.hasStatus("brn")&&"Physical"===r.category&&!t.hasAbility("Guts")&&!r.named("Facade");l.isBurned=j;var _=ge(a,t,i,r,s,l,b,G),Q=!1;s.defenderSide.isProtected&&(t.isDynamaxed||r.isZ&&t.item&&t.item.includes(" Z"))&&(Q=!0,l.isProtected=!0);var Y,J=(0,ee.chainMods)(_,41,131072),X="Singles"!==s.gameType&&["allAdjacent","allAdjacentFoes"].includes(r.target);if(t.hasAbility("Parental Bond")&&1===r.hits&&!X){var q=t.clone();q.ability="Parental Bond (Child)",(0,ee.checkMultihitBoost)(a,q,i,r,s,l),Y=e(a,q,i,r,s).damage,l.attackerAbility=t.ability}for(var ae=[],te=0;te<16;te++)ae[te]=(0,ee.getFinalDamage)(z,te,G,j,Z,J,Q);if(l.attackBoost=r.named("Foul Play")?i.boosts[V]:t.boosts[V],r.dropsStats&&r.timesUsed>1||r.hits>1){var ie=l.defenseBoost,re=l.attackBoost,se=1;r.dropsStats&&r.timesUsed>1?(l.moveTurns="over ".concat(r.timesUsed," turns"),se=r.timesUsed):se=r.hits;for(var oe=[!1,!1],ne=function(e){oe=(0,ee.checkMultihitBoost)(a,t,i,r,s,l,oe[0],oe[1]);var o=me(a,t,i,r,s,l,b),n=fe(a,t,i,r,s,l,b);v=v&&t.hasAbility("Aerilate","Galvanize","Pixilate","Refrigerate","Normalize"),r.dropsStats&&r.timesUsed>1&&(K=(0,ee.getStabMod)(t,r,l),G=I,Z=(0,ee.getStellarStabMod)(t,r,K,e));var h=ue(a,t,i,r,s,v,l,e+1),c=Se(a,t,i,h,o,n,r,s,l,b),d=ge(a,t,i,r,s,l,b,G,e),u=(0,ee.chainMods)(d,41,131072),y=0;ae=ae.map((function(e){var a=(0,ee.getFinalDamage)(c,y,G,j,Z,u,Q);return y++,e+a}))},le=1;le<se;le++)ne(le);l.defenseBoost=ie,l.attackBoost=re}return h.damage=Y?[ae,Y]:ae,h},e.calculateBasePowerSMSSSV=ue,e.calculateBPModsSMSSSV=ye,e.calculateAttackSMSSSV=me,e.calculateAtModsSMSSSV=pe,e.calculateDefenseSMSSSV=fe,e.calculateDfModsSMSSSV=be,e.calculateFinalModsSMSSSV=ge,e.calculateBWXY=function e(a,t,i,r,s){var n;(0,ee.checkAirLock)(t,s),(0,ee.checkAirLock)(i,s),(0,ee.checkForecast)(t,s.weather),(0,ee.checkForecast)(i,s.weather),(0,ee.checkItem)(t,s.isMagicRoom),(0,ee.checkItem)(i,s.isMagicRoom),(0,ee.checkWonderRoom)(t,s.isWonderRoom),(0,ee.checkWonderRoom)(i,s.isWonderRoom),(0,ee.checkSeedBoost)(t,s),(0,ee.checkSeedBoost)(i,s),(0,ee.computeFinalStats)(a,t,i,s,"def","spd","spe"),(0,ee.checkIntimidate)(a,t,i),(0,ee.checkIntimidate)(a,i,t),(0,ee.checkDownload)(t,i,s.isWonderRoom),(0,ee.checkDownload)(i,t,s.isWonderRoom),(0,ee.computeFinalStats)(a,t,i,s,"atk","spa"),(0,ee.checkInfiltrator)(t,s.defenderSide),(0,ee.checkInfiltrator)(i,s.attackerSide);var l={attackerName:t.name,moveName:r.name,defenderName:i.name,isWonderRoom:s.isWonderRoom},h=new $.Result(a,t,i,r,s,0,l);if("Status"===r.category&&!r.named("Nature Power"))return h;if(s.defenderSide.isProtected&&!r.breaksProtect)return l.isProtected=!0,h;if("Pain Split"===r.name){var c=Math.floor((t.curHP()+i.curHP())/2),d=Math.max(0,i.curHP()-c);return h.damage=d,h}var u=i.hasAbility("Aroma Veil","Aura Break","Battle Armor","Big Pecks","Bulletproof","Clear Body","Contrary","Damp","Dark Aura","Dry Skin","Fairy Aura","Filter","Flash Fire","Flower Gift","Flower Veil","Friend Guard","Fur Coat","Grass Pelt","Heatproof","Heavy Metal","Hyper Cutter","Immunity","Inner Focus","Insomnia","Keen Eye","Leaf Guard","Levitate","Light Metal","Lightning Rod","Limber","Magic Bounce","Magma Armor","Marvel Scale","Motor Drive","Multiscale","Oblivious","Overcoat","Own Tempo","Sand Veil","Sap Sipper","Shell Armor","Shield Dust","Simple","Snow Cloak","Solid Rock","Soundproof","Sticky Hold","Storm Drain","Sturdy","Suction Cups","Sweet Veil","Tangled Feet","Telepathy","Thick Fat","Unaware","Vital Spirit","Volt Absorb","Water Absorb","Water Veil","White Smoke","Wonder Guard","Wonder Skin");t.hasAbility("Mold Breaker","Teravolt","Turboblaze")&&u&&(i.ability="",l.attackerAbility=t.ability);var y=r.isCrit&&!i.hasAbility("Battle Armor","Shell Armor")&&1===r.timesUsed;if(r.named("Weather Ball"))r.type=s.hasWeather("Sun","Harsh Sunshine")?"Fire":s.hasWeather("Rain","Heavy Rain")?"Water":s.hasWeather("Sand")?"Rock":s.hasWeather("Hail")?"Ice":"Normal",l.weather=s.weather,l.moveType=r.type;else if(r.named("Judgment")&&t.item&&t.item.includes("Plate"))r.type=(0,de.getItemBoostType)(t.item);else if(r.named("Techno Blast")&&t.item&&t.item.includes("Drive"))r.type=(0,de.getTechnoBlast)(t.item);else if(r.named("Natural Gift")&&(null===(n=t.item)||void 0===n?void 0:n.endsWith("Berry"))){var m=(0,de.getNaturalGift)(a,t.item);r.type=m.t,r.bp=m.p,l.attackerItem=t.item,l.moveBP=r.bp,l.moveType=r.type}else r.named("Nature Power")?5===a.num?r.type="Ground":r.type=s.hasTerrain("Electric")?"Electric":s.hasTerrain("Grassy")?"Grass":s.hasTerrain("Misty")?"Fairy":"Normal":r.named("Brick Break")&&(s.defenderSide.isReflect=!1,s.defenderSide.isLightScreen=!1);var p=!1,f=!1,b=!1,S=!1,g=!1,v=r.named("Judgment","Nature Power","Techo Blast","Natural Gift","Weather Ball","Struggle");if(!r.isZ&&!v){var k=r.hasType("Normal");(f=t.hasAbility("Aerilate")&&k)?r.type="Flying":(b=t.hasAbility("Pixilate")&&k)?r.type="Fairy":(S=t.hasAbility("Refrigerate")&&k)?r.type="Ice":(g=t.hasAbility("Normalize"))&&(r.type="Normal"),(b||S||f||g)&&(l.attackerAbility=t.ability),(b||S||f)&&(p=!0)}t.hasAbility("Gale Wings")&&r.hasType("Flying")&&(r.priority=1,l.attackerAbility=t.ability);var A=t.hasAbility("Scrappy")||s.defenderSide.isForesight,P=i.hasItem("Ring Target")&&!i.hasAbility("Klutz"),M=(0,ee.getMoveEffectiveness)(a,r,i.types[0],A,s.isGravity,P)*(i.types[1]?(0,ee.getMoveEffectiveness)(a,r,i.types[1],A,s.isGravity,P):1);if((0===M&&r.named("Thousand Arrows")||0===M&&r.hasType("Ground")&&i.hasItem("Iron Ball")&&!i.hasAbility("Klutz"))&&(M=1),0===M)return h;if(r.named("Sky Drop")&&(i.hasType("Flying")||i.weightkg>=200||s.isGravity)||r.named("Synchronoise")&&!i.hasType(t.types[0])&&(!t.types[1]||!i.hasType(t.types[1]))||r.named("Dream Eater")&&!i.hasStatus("slp"))return h;if(s.hasWeather("Harsh Sunshine")&&r.hasType("Water")||s.hasWeather("Heavy Rain")&&r.hasType("Fire"))return l.weather=s.weather,h;if(s.hasWeather("Strong Winds")&&i.hasType("Flying")&&a.types.get((0,o.toID)(r.type)).effectiveness.Flying>1&&(M/=2,l.weather=s.weather),i.hasAbility("Wonder Guard")&&M<=1||r.hasType("Grass")&&i.hasAbility("Sap Sipper")||r.hasType("Fire")&&i.hasAbility("Flash Fire")||r.hasType("Water")&&i.hasAbility("Dry Skin","Storm Drain","Water Absorb")||r.hasType("Electric")&&i.hasAbility("Lightning Rod","Motor Drive","Volt Absorb")||r.hasType("Ground")&&!s.isGravity&&!r.named("Thousand Arrows")&&!i.hasItem("Iron Ball")&&i.hasAbility("Levitate")||r.flags.bullet&&i.hasAbility("Bulletproof")||r.flags.sound&&i.hasAbility("Soundproof"))return l.defenderAbility=i.ability,h;if(r.hasType("Ground")&&!r.named("Thousand Arrows")&&!s.isGravity&&i.hasItem("Air Balloon"))return l.defenderItem=i.item,h;if(r.priority>0&&s.hasTerrain("Psychic")&&(0,ee.isGrounded)(i,s))return l.terrain=s.terrain,h;l.HPEVs=(0,ee.getStatDescriptionText)(a,i,"hp");var T=(0,ee.handleFixedDamageMoves)(t,r);if(T)return t.hasAbility("Parental Bond")?(h.damage=[T,T],l.attackerAbility=t.ability):h.damage=T,h;if(r.named("Final Gambit"))return h.damage=t.curHP(),h;r.hits>1&&(l.hits=r.hits);var w=ve(a,t,i,r,s,p,l);if(0===w)return h;var B=Ae(a,t,i,r,s,l,y),F="Special"===r.category?"spa":"atk",R=Me(a,t,i,r,s,l,y),x=function(e,a,t,i,r,s,o,n,l){void 0===l&&(l=!1);var h=(0,ee.getBaseDamage)(a.level,t,i,r),c="Singles"!==o.gameType&&["allAdjacent","allAdjacentFoes"].includes(s.target);c&&(h=(0,ee.pokeRound)((0,ee.OF32)(3072*h)/4096));a.hasAbility("Parental Bond (Child)")&&(h=(0,ee.pokeRound)((0,ee.OF32)(2048*h)/4096));o.hasWeather("Sun","Harsh Sunshine")&&s.hasType("Fire")||o.hasWeather("Rain","Heavy Rain")&&s.hasType("Water")?(h=(0,ee.pokeRound)((0,ee.OF32)(6144*h)/4096),n.weather=o.weather):(o.hasWeather("Sun")&&s.hasType("Water")||o.hasWeather("Rain")&&s.hasType("Fire"))&&(h=(0,ee.pokeRound)((0,ee.OF32)(2048*h)/4096),n.weather=o.weather);l&&(h=Math.floor((0,ee.OF32)(h*(e.num>5?1.5:2))),n.isCritical=l);return h}(a,t,w,B,R,r,s,l,y),G=(0,ee.getStabMod)(t,r,l),I=t.hasStatus("brn")&&"Physical"===r.category&&!t.hasAbility("Guts")&&!(r.named("Facade")&&6===a.num);l.isBurned=I;var D,H=we(a,t,i,r,s,l,y,M),W=(0,ee.chainMods)(H,41,131072),C="Singles"!==s.gameType&&["allAdjacent","allAdjacentFoes"].includes(r.target);if(t.hasAbility("Parental Bond")&&1===r.hits&&!C){var O=t.clone();O.ability="Parental Bond (Child)",(0,ee.checkMultihitBoost)(a,O,i,r,s,l),D=e(a,O,i,r,s).damage,l.attackerAbility=t.ability}for(var E=[],L=0;L<16;L++)E[L]=(0,ee.getFinalDamage)(x,L,M,I,G,W);if(l.attackBoost=r.named("Foul Play")?i.boosts[F]:t.boosts[F],r.dropsStats&&r.timesUsed>1||r.hits>1){var V=l.defenseBoost,N=l.attackBoost,U=1;r.dropsStats&&r.timesUsed>1?(l.moveTurns="over ".concat(r.timesUsed," turns"),U=r.timesUsed):U=r.hits;for(var z=[!1,!1],K=function(e){z=(0,ee.checkMultihitBoost)(a,t,i,r,s,l,z[0],z[1]);var o=Ae(a,t,i,r,s,l,y),n=Me(a,t,i,r,s,l,y);p=p&&t.hasAbility("Aerilate","Galvanize","Pixilate","Refrigerate"),r.dropsStats&&r.timesUsed>1&&(G=(0,ee.getStabMod)(t,r,l));var h=ve(a,t,i,r,s,p,l),c=(0,ee.getBaseDamage)(t.level,h,o,n),d=we(a,t,i,r,s,l,y,M,e),u=(0,ee.chainMods)(d,41,131072),m=0;E=E.map((function(e){var a=(0,ee.getFinalDamage)(c,m,M,I,G,u);return m++,e+a}))},Z=1;Z<U;Z++)K(Z);l.defenseBoost=V,l.attackBoost=N}return h.damage=D?[E,D]:E,h},e.calculateBasePowerBWXY=ve,e.calculateBPModsBWXY=ke,e.calculateAttackBWXY=Ae,e.calculateAtModsBWXY=Pe,e.calculateDefenseBWXY=Me,e.calculateDfModsBWXY=Te,e.calculateDPP=function(e,a,t,i,r){var s,n;(0,o.checkAirLock)(a,r),(0,o.checkAirLock)(t,r),(0,o.checkForecast)(a,r.weather),(0,o.checkForecast)(t,r.weather),(0,o.checkItem)(a),(0,o.checkItem)(t),(0,o.checkIntimidate)(e,a,t),(0,o.checkIntimidate)(e,t,a),(0,o.checkDownload)(a,t),(0,o.checkDownload)(t,a),a.stats.spe=(0,o.getFinalSpeed)(e,a,r,r.attackerSide),t.stats.spe=(0,o.getFinalSpeed)(e,t,r,r.defenderSide);var l={attackerName:a.name,moveName:i.name,defenderName:t.name},h=new $.Result(e,a,t,i,r,0,l);if("Status"===i.category&&!i.named("Nature Power"))return h;if(r.defenderSide.isProtected&&!i.breaksProtect)return l.isProtected=!0,h;if("Pain Split"===i.name){var c=Math.floor((a.curHP()+t.curHP())/2),d=Math.max(0,t.curHP()-c);return h.damage=d,h}var u=t.hasAbility("Battle Armor","Clear Body","Damp","Dry Skin","Filter","Flash Fire","Flower Gift","Heatproof","Hyper Cutter","Immunity","Inner Focus","Insomnia","Keen Eye","Leaf Guard","Levitate","Lightning Rod","Limber","Magma Armor","Marvel Scale","Motor Drive","Oblivious","Own Tempo","Sand Veil","Shell Armor","Shield Dust","Simple","Snow Cloak","Solid Rock","Soundproof","Sticky Hold","Storm Drain","Sturdy","Suction Cups","Tangled Feet","Thick Fat","Unaware","Vital Spirit","Volt Absorb","Water Absorb","Water Veil","White Smoke","Wonder Guard");a.hasAbility("Mold Breaker")&&u&&(t.ability="",l.attackerAbility=a.ability);var y=i.isCrit&&!t.hasAbility("Battle Armor","Shell Armor");if(i.named("Weather Ball"))i.type=r.hasWeather("Sun")?"Fire":r.hasWeather("Rain")?"Water":r.hasWeather("Sand")?"Rock":r.hasWeather("Hail")?"Ice":"Normal",l.weather=r.weather,l.moveType=i.type;else if(i.named("Judgment")&&a.item&&a.item.includes("Plate"))i.type=(0,de.getItemBoostType)(a.item);else if(i.named("Natural Gift")&&(null===(n=a.item)||void 0===n?void 0:n.endsWith("Berry"))){var m=(0,de.getNaturalGift)(e,a.item);i.type=m.t,i.bp=m.p,l.attackerItem=a.item,l.moveBP=i.bp,l.moveType=i.type}else i.named("Brick Break")&&(r.defenderSide.isReflect=!1,r.defenderSide.isLightScreen=!1);a.hasAbility("Normalize")&&!i.named("Struggle")&&(i.type="Normal",l.attackerAbility=a.ability);var p=a.hasAbility("Scrappy")||r.defenderSide.isForesight,f=["Normal","Fire","Water","Electric","Grass","Ice","Fighting","Poison","Ground","Flying","Psychic","Bug","Rock","Ghost","Dragon","Dark","Steel"],b=t.types[0],S=t.types[1];S&&b!==S&&f.indexOf(b)>f.indexOf(S)&&(b=(s=P([S,b],2))[0],S=s[1]);var g=(0,o.getMoveEffectiveness)(e,i,b,p,r.isGravity),v=S?(0,o.getMoveEffectiveness)(e,i,S,p,r.isGravity):1,k=g*v;if(0===k&&i.hasType("Ground")&&t.hasItem("Iron Ball")&&!t.hasAbility("Klutz")&&(0===g?g=1:t.types[1]&&0===v&&(v=1),k=g*v),0===k)return h;if(!(i.hasType("???")||i.named("Fire Fang"))&&t.hasAbility("Wonder Guard")&&k<=1||i.hasType("Fire")&&t.hasAbility("Flash Fire")||i.hasType("Water")&&t.hasAbility("Dry Skin","Water Absorb")||i.hasType("Electric")&&t.hasAbility("Motor Drive","Volt Absorb")||i.hasType("Ground")&&!r.isGravity&&!t.hasItem("Iron Ball")&&t.hasAbility("Levitate")||i.flags.sound&&t.hasAbility("Soundproof"))return l.defenderAbility=t.ability,h;l.HPEVs=(0,o.getStatDescriptionText)(e,t,"hp");var A=(0,o.handleFixedDamageMoves)(a,i);if(A)return h.damage=A,h;i.hits>1&&(l.hits=i.hits);var M="Physical"===i.category,T=Be(e,a,t,i,r,l);if(0===T)return h;T=Fe(a,t,i,r,l,T);var w=Re(e,a,t,i,r,l,y),B=xe(e,a,t,i,r,l,y),F=Math.floor(Math.floor(Math.floor(2*a.level/5+2)*T*w/50)/B);a.hasStatus("brn")&&M&&!a.hasAbility("Guts")&&(F=Math.floor(.5*F),l.isBurned=!0),F=Ge(F,a,i,r,l,y);var R=1;i.hasType.apply(i,N([],P(a.types),!1))&&(a.hasAbility("Adaptability")?(R=2,l.attackerAbility=a.ability):R=1.5);var x=1;t.hasAbility("Filter","Solid Rock")&&k>1&&(x=.75,l.defenderAbility=t.ability);var G=1;a.hasItem("Expert Belt")&&k>1&&(G=1.2,l.attackerItem=a.item);var I=1;a.hasAbility("Tinted Lens")&&k<1&&(I=2,l.attackerAbility=a.ability);var D=1;i.hasType((0,de.getBerryResistType)(t.item))&&(k>1||i.hasType("Normal"))&&(D=.5,l.defenderItem=t.item);for(var H=[],W=0;W<16;W++)H[W]=Math.floor(F*(85+W)/100),H[W]=Math.floor(H[W]*R),H[W]=Math.floor(H[W]*g),H[W]=Math.floor(H[W]*v),H[W]=Math.floor(H[W]*x),H[W]=Math.floor(H[W]*G),H[W]=Math.floor(H[W]*I),H[W]=Math.floor(H[W]*D),H[W]=Math.max(1,H[W]);if(h.damage=H,i.dropsStats&&i.timesUsed>1||i.hits>1){var C=l.defenseBoost,O=l.attackBoost,E=1;i.dropsStats&&i.timesUsed>1?(l.moveTurns="over ".concat(i.timesUsed," turns"),E=i.timesUsed):E=i.hits;for(var L=[!1,!1],V=function(s){L=(0,o.checkMultihitBoost)(e,a,t,i,r,l,L[0],L[1]);var n=Be(e,a,t,i,r,l);n=Fe(a,t,i,r,l,n);var c=Re(e,a,t,i,r,l,y),d=Math.floor(Math.floor(Math.floor(2*a.level/5+2)*n*c/50)/B);a.hasStatus("brn")&&M&&!a.hasAbility("Guts")&&(d=Math.floor(.5*d),l.isBurned=!0),d=Ge(d,a,i,r,l,y);var u=0;h.damage=h.damage.map((function(e){var a=0;return a=Math.floor(d*(85+u)/100),a=Math.floor(a*R),a=Math.floor(a*g),a=Math.floor(a*v),a=Math.floor(a*x),a=Math.floor(a*G),a=Math.floor(a*I),a=Math.max(1,a),u++,e+a}))},U=1;U<E;U++)V();l.defenseBoost=C,l.attackBoost=O}return h},e.calculateBasePowerDPP=Be,e.calculateBPModsDPP=Fe,e.calculateAttackDPP=Re,e.calculateDefenseDPP=xe,e.calculateADV=function(e,a,t,i,r){var s;(0,ee.checkAirLock)(a,r),(0,ee.checkAirLock)(t,r),(0,ee.checkForecast)(a,r.weather),(0,ee.checkForecast)(t,r.weather),(0,ee.checkIntimidate)(e,a,t),(0,ee.checkIntimidate)(e,t,a),a.stats.spe=(0,ee.getFinalSpeed)(e,a,r,r.attackerSide),t.stats.spe=(0,ee.getFinalSpeed)(e,t,r,r.defenderSide);var o={attackerName:a.name,moveName:i.name,defenderName:t.name},n=new $.Result(e,a,t,i,r,0,o);if("Status"===i.category&&!i.named("Nature Power"))return n;if(r.defenderSide.isProtected)return o.isProtected=!0,n;if("Pain Split"===i.name){var l=Math.floor((a.curHP()+t.curHP())/2),h=Math.max(0,t.curHP()-l);return n.damage=h,n}i.named("Weather Ball")?(i.type=r.hasWeather("Sun")?"Fire":r.hasWeather("Rain")?"Water":r.hasWeather("Sand")?"Rock":r.hasWeather("Hail")?"Ice":"Normal",i.category="Rock"===i.type?"Physical":"Special",o.weather=r.weather,o.moveType=i.type,o.moveBP=i.bp):i.named("Brick Break")&&(r.defenderSide.isReflect=!1,r.defenderSide.isLightScreen=!1);var c=["Normal","Fire","Water","Electric","Grass","Ice","Fighting","Poison","Ground","Flying","Psychic","Bug","Rock","Ghost","Dragon","Dark","Steel"],d=t.types[0],u=t.types[1];u&&d!==u&&c.indexOf(d)>c.indexOf(u)&&(d=(s=P([u,d],2))[0],u=s[1]);var y=(0,ee.getMoveEffectiveness)(e,i,d,r.defenderSide.isForesight)*(u?(0,ee.getMoveEffectiveness)(e,i,u,r.defenderSide.isForesight):1);if(0===y)return n;if(t.hasAbility("Flash Fire")&&i.hasType("Fire")||t.hasAbility("Levitate")&&i.hasType("Ground")||t.hasAbility("Volt Absorb")&&i.hasType("Electric")||t.hasAbility("Water Absorb")&&i.hasType("Water")||t.hasAbility("Wonder Guard")&&!i.hasType("???")&&y<=1||t.hasAbility("Soundproof")&&i.flags.sound)return o.defenderAbility=t.ability,n;o.HPEVs=(0,ee.getStatDescriptionText)(e,t,"hp");var m=(0,ee.handleFixedDamageMoves)(a,i);if(m)return n.damage=m,n;i.hits>1&&(o.hits=i.hits);var p=De(a,t,i,o);if(0===p)return n;p=He(a,i,o,p);var f=i.isCrit&&!t.hasAbility("Battle Armor","Shell Armor"),b=We(e,a,t,i,o,f),S=Ce(e,t,i,o,f),g=a.level,v=Math.floor(Math.floor(Math.floor(2*g/5+2)*b*p/S)/50);v=Oe(v,a,i,r,o,f),v=Math.floor(v*y),n.damage=[];for(var k=85;k<=100;k++)n.damage[k-85]=Math.max(1,Math.floor(v*k/100));if(i.dropsStats&&i.timesUsed>1||i.hits>1){var A=o.defenseBoost,M=o.attackBoost,T=1;i.dropsStats&&i.timesUsed>1?(o.moveTurns="over ".concat(i.timesUsed," turns"),T=i.timesUsed):T=i.hits;for(var w=[!1,!1],B=function(s){w=(0,ee.checkMultihitBoost)(e,a,t,i,r,o,w[0],w[1]);var l=We(e,a,t,i,o,f),h=De(a,t,i,o);h=He(a,i,o,h);var c=Math.floor(Math.floor(Math.floor(2*g/5+2)*l*h/S)/50);c=Oe(c,a,i,r,o,f),c=Math.floor(c*y);var d=85;n.damage=n.damage.map((function(e){var a=Math.max(1,Math.floor(c*d/100));return d++,e+a}))},F=1;F<T;F++)B();o.defenseBoost=A,o.attackBoost=M}return n},e.calculateBasePowerADV=De,e.calculateBPModsADV=He,e.calculateAttackADV=We,e.calculateDefenseADV=Ce,e.calculateRBYGSC=function(e,a,t,i,r){var s;(0,ee.computeFinalStats)(e,a,t,r,"atk","def","spa","spd","spe");var o={attackerName:a.name,moveName:i.name,defenderName:t.name},n=new $.Result(e,a,t,i,r,0,o);if("Status"===i.category)return n;if(r.defenderSide.isProtected)return o.isProtected=!0,n;if("Pain Split"===i.name){var l=Math.floor((a.curHP()+t.curHP())/2),h=Math.max(0,t.curHP()-l);return n.damage=h,n}if(1===e.num&&(y=(0,ee.handleFixedDamageMoves)(a,i)))return n.damage=y,n;var c=["Normal","Fire","Water","Electric","Grass","Ice","Fighting","Poison","Ground","Flying","Psychic","Bug","Rock","Ghost","Dragon","Dark","Steel"],d=t.types[0],u=t.types[1];u&&d!==u&&2===e.num&&c.indexOf(d)>c.indexOf(u)&&(d=(s=P([u,d],2))[0],u=s[1]);var y,m=(0,ee.getMoveEffectiveness)(e,i,d,r.defenderSide.isForesight),p=u?(0,ee.getMoveEffectiveness)(e,i,u,r.defenderSide.isForesight):1,f=m*p;if(0===f)return n;if(2===e.num&&(y=(0,ee.handleFixedDamageMoves)(a,i)))return n.damage=y,n;if(i.hits>1&&(o.hits=i.hits),"Triple Kick"===i.name&&(i.bp=2===i.hits?15:3===i.hits?20:10,o.moveBP=i.bp),i.named("Flail","Reversal")){i.isCrit=!1;var b=Math.floor(48*a.curHP()/a.maxHP());i.bp=b<=1?200:b<=4?150:b<=9?100:b<=16?80:b<=32?40:20,o.moveBP=i.bp}else i.named("Present")&&!i.bp&&(i.bp=40);if(0===i.bp)return n;var S="Physical"===i.category,g=S?"atk":"spa",v=S?"def":"spd",k=a.stats[g],A=t.stats[v],M=i.isCrit&&(1===e.num||2===e.num&&a.boosts[g]<=t.boosts[v]),T=a.level;if(M?(k=a.rawStats[g],A=t.rawStats[v],1===e.num&&(T*=2,o.isCritical=!0)):(0!==a.boosts[g]&&(o.attackBoost=a.boosts[g]),0!==t.boosts[v]&&(o.defenseBoost=t.boosts[v]),S&&a.hasStatus("brn")&&(k=Math.floor(k/2),o.isBurned=!0)),i.named("Explosion","Self-Destruct")&&(A=Math.floor(A/2)),M||(S&&r.defenderSide.isReflect?(A*=2,o.isReflect=!0):!S&&r.defenderSide.isLightScreen&&(A*=2,o.isLightScreen=!0)),(a.named("Pikachu")&&a.hasItem("Light Ball")&&!S||a.named("Cubone","Marowak")&&a.hasItem("Thick Club")&&S)&&(k*=2,o.attackerItem=a.item),(k>255||A>255)&&(k=Math.floor(k/4)%256,A=Math.floor(A/4)%256),i.named("Present")){var w={Normal:0,Fighting:1,Flying:2,Poison:3,Ground:4,Rock:5,Bug:7,Ghost:8,Steel:9,"???":19,Fire:20,Water:21,Grass:22,Electric:23,Psychic:24,Ice:25,Dragon:26,Dark:27};k=10,A=Math.max(w[a.types[1]?a.types[1]:a.types[0]],1),T=Math.max(w[t.types[1]?t.types[1]:t.types[0]],1)}t.named("Ditto")&&t.hasItem("Metal Powder")&&(A=Math.floor(1.5*A),o.defenderItem=t.item);var B=Math.floor(Math.floor(Math.floor(2*T/5+2)*Math.max(1,k)*i.bp/Math.max(1,A))/50);2===e.num&&i.isCrit&&(B*=2,o.isCritical=!0),i.named("Pursuit")&&"out"===r.defenderSide.isSwitching&&(B=Math.floor(2*B),o.isSwitching="out");var F=a.hasItem("Dragon Fang")?void 0:(0,de.getItemBoostType)(a.hasItem("Dragon Scale")?"Dragon Fang":a.item);if(i.hasType(F)&&(B=Math.floor(1.1*B),o.attackerItem=a.item),B=Math.min(997,B)+2,r.hasWeather("Sun")&&i.hasType("Fire")||r.hasWeather("Rain")&&i.hasType("Water")?(B=Math.floor(1.5*B),o.weather=r.weather):(r.hasWeather("Sun")&&i.hasType("Water")||r.hasWeather("Rain")&&(i.hasType("Fire")||i.named("Solar Beam")))&&(B=Math.floor(B/2),o.weather=r.weather),i.hasType.apply(i,N([],P(a.types),!1))&&(B=Math.floor(1.5*B)),1===e.num?(B=Math.floor(B*m),B=Math.floor(B*p)):B=Math.floor(B*f),i.named("Flail","Reversal"))return n.damage=B,n;n.damage=[];for(var R=217;R<=255;R++)2===e.num?n.damage[R-217]=Math.max(1,Math.floor(B*R/255)):n.damage[R-217]=1===B?1:Math.floor(B*R/255);if(i.hits>1)for(var x=function(a){var t=217;n.damage=n.damage.map((function(i){if(a){var r=0;return r=2===e.num?Math.max(1,Math.floor(B*t/255)):1===B?1:Math.floor(B*t/255),t++,i+r}return i}))},G=0;G<i.hits;G++)x(G);return n};var Ee=e,Le=e,Ve=e,Ne=e,Ue=e,ze=e,Ke=[function(){},Le.calculateRBYGSC,Le.calculateRBYGSC,Ve.calculateADV,Ne.calculateDPP,Ue.calculateBWXY,Ue.calculateBWXY,ze.calculateSMSSSV,ze.calculateSMSSSV,ze.calculateSMSSSV];e.calculate=function(e,a,t,i,r){return Ke[e.num](e,a.clone(),t.clone(),i.clone(),r?r.clone():new Ee.Field)},window.calc=Object.assign(window.calc||{},{Field:e.Field,Side:e.Side,Pokemon:e.Pokemon,Move:e.Move,calculate:e.calculate,Result:e.Result,toID:e.toID,STATS:e.STATS,Stats:e.Stats})}();
@@ -0,0 +1,34 @@
1
+ import { type RawDesc } from './desc';
2
+ import type { Generation } from './data/interface';
3
+ import type { Field } from './field';
4
+ import type { Move } from './move';
5
+ import type { Pokemon } from './pokemon';
6
+ export type Damage = number | number[] | [number, number] | [number[], number[]];
7
+ export declare class Result {
8
+ gen: Generation;
9
+ attacker: Pokemon;
10
+ defender: Pokemon;
11
+ move: Move;
12
+ field: Field;
13
+ damage: number | number[] | [number[], number[]];
14
+ rawDesc: RawDesc;
15
+ constructor(gen: Generation, attacker: Pokemon, defender: Pokemon, move: Move, field: Field, damage: Damage, rawDesc: RawDesc);
16
+ desc(): string;
17
+ range(): [number, number];
18
+ fullDesc(notation?: string, err?: boolean): string;
19
+ moveDesc(notation?: string): string;
20
+ recovery(notation?: string): {
21
+ recovery: [number, number];
22
+ text: string;
23
+ };
24
+ recoil(notation?: string): {
25
+ recoil: number | [number, number];
26
+ text: string;
27
+ };
28
+ kochance(err?: boolean): {
29
+ chance: number | undefined;
30
+ n: number;
31
+ text: string;
32
+ };
33
+ }
34
+ export declare function damageRange(damage: Damage): [number, number] | [[number, number], [number, number]];
package/dist/result.js ADDED
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
+ if (ar || !(i in from)) {
21
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
+ ar[i] = from[i];
23
+ }
24
+ }
25
+ return to.concat(ar || Array.prototype.slice.call(from));
26
+ };
27
+ exports.__esModule = true;
28
+ exports.damageRange = exports.Result = void 0;
29
+ var desc_1 = require("./desc");
30
+ var Result = (function () {
31
+ function Result(gen, attacker, defender, move, field, damage, rawDesc) {
32
+ this.gen = gen;
33
+ this.attacker = attacker;
34
+ this.defender = defender;
35
+ this.move = move;
36
+ this.field = field;
37
+ this.damage = damage;
38
+ this.rawDesc = rawDesc;
39
+ }
40
+ Result.prototype.desc = function () {
41
+ return this.fullDesc();
42
+ };
43
+ Result.prototype.range = function () {
44
+ var range = damageRange(this.damage);
45
+ if (typeof range[0] === 'number')
46
+ return range;
47
+ var d = range;
48
+ return [d[0][0] + d[0][1], d[1][0] + d[1][1]];
49
+ };
50
+ Result.prototype.fullDesc = function (notation, err) {
51
+ if (notation === void 0) { notation = '%'; }
52
+ if (err === void 0) { err = true; }
53
+ return (0, desc_1.display)(this.gen, this.attacker, this.defender, this.move, this.field, this.damage, this.rawDesc, notation, err);
54
+ };
55
+ Result.prototype.moveDesc = function (notation) {
56
+ if (notation === void 0) { notation = '%'; }
57
+ return (0, desc_1.displayMove)(this.gen, this.attacker, this.defender, this.move, this.damage, notation);
58
+ };
59
+ Result.prototype.recovery = function (notation) {
60
+ if (notation === void 0) { notation = '%'; }
61
+ return (0, desc_1.getRecovery)(this.gen, this.attacker, this.defender, this.move, this.damage, notation);
62
+ };
63
+ Result.prototype.recoil = function (notation) {
64
+ if (notation === void 0) { notation = '%'; }
65
+ return (0, desc_1.getRecoil)(this.gen, this.attacker, this.defender, this.move, this.damage, notation);
66
+ };
67
+ Result.prototype.kochance = function (err) {
68
+ if (err === void 0) { err = true; }
69
+ return (0, desc_1.getKOChance)(this.gen, this.attacker, this.defender, this.move, this.field, this.damage, err);
70
+ };
71
+ return Result;
72
+ }());
73
+ exports.Result = Result;
74
+ function damageRange(damage) {
75
+ if (typeof damage === 'number')
76
+ return [damage, damage];
77
+ if (damage.length > 2) {
78
+ var d_1 = damage;
79
+ if (d_1[0] > d_1[d_1.length - 1])
80
+ return [Math.min.apply(Math, __spreadArray([], __read(d_1), false)), Math.max.apply(Math, __spreadArray([], __read(d_1), false))];
81
+ return [d_1[0], d_1[d_1.length - 1]];
82
+ }
83
+ if (typeof damage[0] === 'number' && typeof damage[1] === 'number') {
84
+ return [[damage[0], damage[1]], [damage[0], damage[1]]];
85
+ }
86
+ var d = damage;
87
+ if (d[0][0] > d[0][d[0].length - 1])
88
+ d[0] = d[0].slice().sort();
89
+ if (d[1][0] > d[1][d[1].length - 1])
90
+ d[1] = d[1].slice().sort();
91
+ return [[d[0][0], d[1][0]], [d[0][d[0].length - 1], d[1][d[1].length - 1]]];
92
+ }
93
+ exports.damageRange = damageRange;
94
+ //# sourceMappingURL=result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAA+F;AAQ/F;IASE,gBACE,GAAe,EACf,QAAiB,EACjB,QAAiB,EACjB,IAAU,EACV,KAAY,EACZ,MAAc,EACd,OAAgB;QAEhB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAES,qBAAI,GAAJ;QACR,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;IACzB,CAAC;IAED,sBAAK,GAAL;QACE,IAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ;YAAE,OAAO,KAAyB,CAAC;QACnE,IAAM,CAAC,GAAG,KAA6B,CAAC;QACxC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,yBAAQ,GAAR,UAAS,QAAc,EAAE,GAAU;QAA1B,yBAAA,EAAA,cAAc;QAAE,oBAAA,EAAA,UAAU;QACjC,OAAO,IAAA,cAAO,EACZ,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,OAAO,EACZ,QAAQ,EACR,GAAG,CACJ,CAAC;IACJ,CAAC;IAED,yBAAQ,GAAR,UAAS,QAAc;QAAd,yBAAA,EAAA,cAAc;QACrB,OAAO,IAAA,kBAAW,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/F,CAAC;IAED,yBAAQ,GAAR,UAAS,QAAc;QAAd,yBAAA,EAAA,cAAc;QACrB,OAAO,IAAA,kBAAW,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/F,CAAC;IAED,uBAAM,GAAN,UAAO,QAAc;QAAd,yBAAA,EAAA,cAAc;QACnB,OAAO,IAAA,gBAAS,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7F,CAAC;IAED,yBAAQ,GAAR,UAAS,GAAU;QAAV,oBAAA,EAAA,UAAU;QACjB,OAAO,IAAA,kBAAW,EAChB,IAAI,CAAC,GAAG,EACR,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,MAAM,EACX,GAAG,CACJ,CAAC;IACJ,CAAC;IACH,aAAC;AAAD,CAAC,AA3ED,IA2EC;AA3EY,wBAAM;AA6EnB,SAAgB,WAAW,CACzB,MAAc;IAGd,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAExD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACrB,IAAM,GAAC,GAAG,MAAkB,CAAC;QAC7B,IAAI,GAAC,CAAC,CAAC,CAAC,GAAG,GAAC,CAAC,GAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,OAAR,IAAI,2BAAQ,GAAC,YAAG,IAAI,CAAC,GAAG,OAAR,IAAI,2BAAQ,GAAC,WAAE,CAAC;QACpE,OAAO,CAAC,GAAC,CAAC,CAAC,CAAC,EAAE,GAAC,CAAC,GAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;KAChC;IAED,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;QAClE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACzD;IAED,IAAM,CAAC,GAAG,MAA8B,CAAC;IACzC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;IAChE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;IAChE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC;AApBD,kCAoBC"}
@@ -0,0 +1,77 @@
1
+ import type * as I from './data/interface';
2
+ export declare namespace State {
3
+ interface Pokemon {
4
+ name: I.SpeciesName;
5
+ level?: number;
6
+ ability?: I.AbilityName;
7
+ abilityOn?: boolean;
8
+ isDynamaxed?: boolean;
9
+ dynamaxLevel?: number;
10
+ isSaltCure?: boolean;
11
+ alliesFainted?: number;
12
+ boostedStat?: I.StatIDExceptHP | 'auto';
13
+ item?: I.ItemName;
14
+ gender?: I.GenderName;
15
+ nature?: I.NatureName;
16
+ ivs?: Partial<I.StatsTable>;
17
+ evs?: Partial<I.StatsTable>;
18
+ boosts?: Partial<I.StatsTable>;
19
+ originalCurHP?: number;
20
+ status?: I.StatusName | '';
21
+ teraType?: I.TypeName;
22
+ toxicCounter?: number;
23
+ moves?: I.MoveName[];
24
+ overrides?: Partial<I.Specie>;
25
+ }
26
+ interface Move {
27
+ name: I.MoveName;
28
+ useZ?: boolean;
29
+ useMax?: boolean;
30
+ isCrit?: boolean;
31
+ isStellarFirstUse?: boolean;
32
+ hits?: number;
33
+ timesUsed?: number;
34
+ timesUsedWithMetronome?: number;
35
+ overrides?: Partial<I.Move>;
36
+ }
37
+ interface Field {
38
+ gameType: I.GameType;
39
+ weather?: I.Weather;
40
+ terrain?: I.Terrain;
41
+ isMagicRoom?: boolean;
42
+ isWonderRoom?: boolean;
43
+ isGravity?: boolean;
44
+ isAuraBreak?: boolean;
45
+ isFairyAura?: boolean;
46
+ isDarkAura?: boolean;
47
+ isBeadsOfRuin?: boolean;
48
+ isSwordOfRuin?: boolean;
49
+ isTabletsOfRuin?: boolean;
50
+ isVesselOfRuin?: boolean;
51
+ attackerSide: Side;
52
+ defenderSide: Side;
53
+ }
54
+ interface Side {
55
+ spikes?: number;
56
+ steelsurge?: boolean;
57
+ vinelash?: boolean;
58
+ wildfire?: boolean;
59
+ cannonade?: boolean;
60
+ volcalith?: boolean;
61
+ isSR?: boolean;
62
+ isReflect?: boolean;
63
+ isLightScreen?: boolean;
64
+ isProtected?: boolean;
65
+ isSeeded?: boolean;
66
+ isForesight?: boolean;
67
+ isTailwind?: boolean;
68
+ isHelpingHand?: boolean;
69
+ isFlowerGift?: boolean;
70
+ isFriendGuard?: boolean;
71
+ isAuroraVeil?: boolean;
72
+ isBattery?: boolean;
73
+ isPowerSpot?: boolean;
74
+ isSteelySpirit?: boolean;
75
+ isSwitching?: 'out' | 'in';
76
+ }
77
+ }
package/dist/state.js ADDED
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":""}