@pkmn/sim 0.9.38 → 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 (237) hide show
  1. package/build/cjs/config/formats.js +185 -173
  2. package/build/cjs/config/formats.js.map +1 -1
  3. package/build/cjs/data/abilities.js +62 -72
  4. package/build/cjs/data/abilities.js.map +1 -1
  5. package/build/cjs/data/aliases.js +11 -4
  6. package/build/cjs/data/aliases.js.map +1 -1
  7. package/build/cjs/data/formats-data.js +163 -63
  8. package/build/cjs/data/formats-data.js.map +1 -1
  9. package/build/cjs/data/items.js +406 -2
  10. package/build/cjs/data/items.js.map +1 -1
  11. package/build/cjs/data/legality.js +548 -113
  12. package/build/cjs/data/legality.js.map +1 -1
  13. package/build/cjs/data/mods/gen1/conditions.js +1 -1
  14. package/build/cjs/data/mods/gen2/formats-data.js +2 -2
  15. package/build/cjs/data/mods/gen2/formats-data.js.map +1 -1
  16. package/build/cjs/data/mods/gen3/abilities.js +1 -3
  17. package/build/cjs/data/mods/gen3/abilities.js.map +1 -1
  18. package/build/cjs/data/mods/gen3/formats-data.js +5 -11
  19. package/build/cjs/data/mods/gen3/formats-data.js.map +1 -1
  20. package/build/cjs/data/mods/gen3/moves.js +24 -0
  21. package/build/cjs/data/mods/gen3/moves.js.map +1 -1
  22. package/build/cjs/data/mods/gen4/abilities.js +2 -14
  23. package/build/cjs/data/mods/gen4/abilities.js.map +1 -1
  24. package/build/cjs/data/mods/gen4/formats-data.js.map +1 -1
  25. package/build/cjs/data/mods/gen4/moves.js +37 -6
  26. package/build/cjs/data/mods/gen4/moves.js.map +1 -1
  27. package/build/cjs/data/mods/gen5/abilities.js +4 -0
  28. package/build/cjs/data/mods/gen5/abilities.js.map +1 -1
  29. package/build/cjs/data/mods/gen5/formats-data.js.map +1 -1
  30. package/build/cjs/data/mods/gen6/pokedex.js +104 -0
  31. package/build/cjs/data/mods/gen6/pokedex.js.map +1 -1
  32. package/build/cjs/data/mods/gen7/abilities.js +11 -26
  33. package/build/cjs/data/mods/gen7/abilities.js.map +1 -1
  34. package/build/cjs/data/mods/gen7/formats-data.js +1 -1
  35. package/build/cjs/data/mods/gen7/formats-data.js.map +1 -1
  36. package/build/cjs/data/mods/gen7/pokedex.js +96 -0
  37. package/build/cjs/data/mods/gen7/pokedex.js.map +1 -1
  38. package/build/cjs/data/mods/gen8/abilities.js +0 -3
  39. package/build/cjs/data/mods/gen8/abilities.js.map +1 -1
  40. package/build/cjs/data/mods/gen8bdsp/abilities.d.ts +1 -0
  41. package/build/cjs/data/mods/gen8bdsp/abilities.js +42 -0
  42. package/build/cjs/data/mods/gen8bdsp/abilities.js.map +1 -0
  43. package/build/cjs/data/mods/gen8bdsp/formats-data.d.ts +1 -0
  44. package/build/cjs/data/mods/gen8bdsp/formats-data.js +1837 -0
  45. package/build/cjs/data/mods/gen8bdsp/formats-data.js.map +1 -0
  46. package/build/cjs/data/mods/gen8bdsp/index.d.ts +6 -0
  47. package/build/cjs/data/mods/gen8bdsp/index.js +16 -0
  48. package/build/cjs/data/mods/gen8bdsp/index.js.map +1 -0
  49. package/build/cjs/data/mods/gen8bdsp/items.d.ts +1 -0
  50. package/build/cjs/data/mods/gen8bdsp/items.js +831 -0
  51. package/build/cjs/data/mods/gen8bdsp/items.js.map +1 -0
  52. package/build/cjs/data/mods/gen8bdsp/learnsets.d.ts +3 -0
  53. package/build/cjs/data/mods/gen8bdsp/learnsets.js +25784 -0
  54. package/build/cjs/data/mods/gen8bdsp/learnsets.js.map +1 -0
  55. package/build/cjs/data/mods/gen8bdsp/legality.d.ts +3 -0
  56. package/build/cjs/data/mods/gen8bdsp/legality.js +242 -0
  57. package/build/cjs/data/mods/gen8bdsp/legality.js.map +1 -0
  58. package/build/cjs/data/mods/gen8bdsp/moves.d.ts +1 -0
  59. package/build/cjs/data/mods/gen8bdsp/moves.js +919 -0
  60. package/build/cjs/data/mods/gen8bdsp/moves.js.map +1 -0
  61. package/build/cjs/data/mods/gen8bdsp/pokedex.d.ts +1 -0
  62. package/build/cjs/data/mods/gen8bdsp/pokedex.js +99 -0
  63. package/build/cjs/data/mods/gen8bdsp/pokedex.js.map +1 -0
  64. package/build/cjs/data/mods/gen8bdsp/scripts.d.ts +1 -0
  65. package/build/cjs/data/mods/gen8bdsp/scripts.js +15 -0
  66. package/build/cjs/data/mods/gen8bdsp/scripts.js.map +1 -0
  67. package/build/cjs/data/mods/gen8legends/formats-data.d.ts +1 -0
  68. package/build/cjs/data/mods/gen8legends/formats-data.js +2775 -0
  69. package/build/cjs/data/mods/gen8legends/formats-data.js.map +1 -0
  70. package/build/cjs/data/mods/gen8legends/index.d.ts +2 -0
  71. package/build/cjs/data/mods/gen8legends/index.js +8 -0
  72. package/build/cjs/data/mods/gen8legends/index.js.map +1 -0
  73. package/build/cjs/data/mods/gen8legends/learnsets.d.ts +3 -0
  74. package/build/cjs/data/mods/gen8legends/learnsets.js +5553 -0
  75. package/build/cjs/data/mods/gen8legends/learnsets.js.map +1 -0
  76. package/build/cjs/data/mods/gen8legends/legality.d.ts +3 -0
  77. package/build/cjs/data/mods/gen8legends/legality.js +149 -0
  78. package/build/cjs/data/mods/gen8legends/legality.js.map +1 -0
  79. package/build/cjs/data/mods/gen8legends/scripts.d.ts +1 -0
  80. package/build/cjs/data/mods/gen8legends/scripts.js +8 -0
  81. package/build/cjs/data/mods/gen8legends/scripts.js.map +1 -0
  82. package/build/cjs/data/moves.js +53 -55
  83. package/build/cjs/data/moves.js.map +1 -1
  84. package/build/cjs/data/pokedex.js +735 -10
  85. package/build/cjs/data/pokedex.js.map +1 -1
  86. package/build/cjs/data/rulesets.js +78 -0
  87. package/build/cjs/data/rulesets.js.map +1 -1
  88. package/build/cjs/data/text/items.js +108 -0
  89. package/build/cjs/data/text/items.js.map +1 -1
  90. package/build/cjs/data/text/moves.js +6 -2
  91. package/build/cjs/data/text/moves.js.map +1 -1
  92. package/build/cjs/sim/battle-actions.js +17 -7
  93. package/build/cjs/sim/battle-actions.js.map +1 -1
  94. package/build/cjs/sim/battle-queue.d.ts +11 -6
  95. package/build/cjs/sim/battle-queue.js.map +1 -1
  96. package/build/cjs/sim/battle.d.ts +2 -2
  97. package/build/cjs/sim/battle.js +23 -28
  98. package/build/cjs/sim/battle.js.map +1 -1
  99. package/build/cjs/sim/dex-conditions.d.ts +2 -1
  100. package/build/cjs/sim/dex-conditions.js.map +1 -1
  101. package/build/cjs/sim/dex-formats.d.ts +2 -0
  102. package/build/cjs/sim/dex-formats.js +12 -1
  103. package/build/cjs/sim/dex-formats.js.map +1 -1
  104. package/build/cjs/sim/dex-species.d.ts +13 -2
  105. package/build/cjs/sim/dex-species.js +40 -19
  106. package/build/cjs/sim/dex-species.js.map +1 -1
  107. package/build/cjs/sim/dex.js +11 -0
  108. package/build/cjs/sim/dex.js.map +1 -1
  109. package/build/cjs/sim/exported-global-types.d.ts +5 -4
  110. package/build/cjs/sim/global-types.d.ts +5 -4
  111. package/build/cjs/sim/pokemon.d.ts +6 -4
  112. package/build/cjs/sim/pokemon.js +31 -24
  113. package/build/cjs/sim/pokemon.js.map +1 -1
  114. package/build/cjs/sim/side.js +11 -41
  115. package/build/cjs/sim/side.js.map +1 -1
  116. package/build/cjs/sim/team-validator.d.ts +1 -0
  117. package/build/cjs/sim/team-validator.js +50 -18
  118. package/build/cjs/sim/team-validator.js.map +1 -1
  119. package/build/esm/config/formats.mjs +185 -173
  120. package/build/esm/config/formats.mjs.map +1 -1
  121. package/build/esm/data/abilities.mjs +62 -72
  122. package/build/esm/data/abilities.mjs.map +1 -1
  123. package/build/esm/data/aliases.mjs +11 -4
  124. package/build/esm/data/aliases.mjs.map +1 -1
  125. package/build/esm/data/formats-data.mjs +163 -63
  126. package/build/esm/data/formats-data.mjs.map +1 -1
  127. package/build/esm/data/items.mjs +406 -2
  128. package/build/esm/data/items.mjs.map +1 -1
  129. package/build/esm/data/legality.mjs +548 -113
  130. package/build/esm/data/legality.mjs.map +1 -1
  131. package/build/esm/data/mods/gen1/conditions.mjs +1 -1
  132. package/build/esm/data/mods/gen2/formats-data.mjs +2 -2
  133. package/build/esm/data/mods/gen2/formats-data.mjs.map +1 -1
  134. package/build/esm/data/mods/gen3/abilities.mjs +1 -3
  135. package/build/esm/data/mods/gen3/abilities.mjs.map +1 -1
  136. package/build/esm/data/mods/gen3/formats-data.mjs +5 -11
  137. package/build/esm/data/mods/gen3/formats-data.mjs.map +1 -1
  138. package/build/esm/data/mods/gen3/moves.mjs +24 -0
  139. package/build/esm/data/mods/gen3/moves.mjs.map +1 -1
  140. package/build/esm/data/mods/gen4/abilities.mjs +2 -14
  141. package/build/esm/data/mods/gen4/abilities.mjs.map +1 -1
  142. package/build/esm/data/mods/gen4/formats-data.mjs.map +1 -1
  143. package/build/esm/data/mods/gen4/moves.mjs +37 -6
  144. package/build/esm/data/mods/gen4/moves.mjs.map +1 -1
  145. package/build/esm/data/mods/gen5/abilities.mjs +4 -0
  146. package/build/esm/data/mods/gen5/abilities.mjs.map +1 -1
  147. package/build/esm/data/mods/gen5/formats-data.mjs.map +1 -1
  148. package/build/esm/data/mods/gen6/pokedex.mjs +104 -0
  149. package/build/esm/data/mods/gen6/pokedex.mjs.map +1 -1
  150. package/build/esm/data/mods/gen7/abilities.mjs +11 -26
  151. package/build/esm/data/mods/gen7/abilities.mjs.map +1 -1
  152. package/build/esm/data/mods/gen7/formats-data.mjs +1 -1
  153. package/build/esm/data/mods/gen7/formats-data.mjs.map +1 -1
  154. package/build/esm/data/mods/gen7/pokedex.mjs +96 -0
  155. package/build/esm/data/mods/gen7/pokedex.mjs.map +1 -1
  156. package/build/esm/data/mods/gen8/abilities.mjs +0 -3
  157. package/build/esm/data/mods/gen8/abilities.mjs.map +1 -1
  158. package/build/esm/data/mods/gen8bdsp/abilities.d.mts +1 -0
  159. package/build/esm/data/mods/gen8bdsp/abilities.mjs +39 -0
  160. package/build/esm/data/mods/gen8bdsp/abilities.mjs.map +1 -0
  161. package/build/esm/data/mods/gen8bdsp/formats-data.d.mts +1 -0
  162. package/build/esm/data/mods/gen8bdsp/formats-data.mjs +1834 -0
  163. package/build/esm/data/mods/gen8bdsp/formats-data.mjs.map +1 -0
  164. package/build/esm/data/mods/gen8bdsp/index.d.mts +6 -0
  165. package/build/esm/data/mods/gen8bdsp/index.mjs +7 -0
  166. package/build/esm/data/mods/gen8bdsp/index.mjs.map +1 -0
  167. package/build/esm/data/mods/gen8bdsp/items.d.mts +1 -0
  168. package/build/esm/data/mods/gen8bdsp/items.mjs +828 -0
  169. package/build/esm/data/mods/gen8bdsp/items.mjs.map +1 -0
  170. package/build/esm/data/mods/gen8bdsp/learnsets.d.mts +3 -0
  171. package/build/esm/data/mods/gen8bdsp/learnsets.mjs +25781 -0
  172. package/build/esm/data/mods/gen8bdsp/learnsets.mjs.map +1 -0
  173. package/build/esm/data/mods/gen8bdsp/legality.d.mts +3 -0
  174. package/build/esm/data/mods/gen8bdsp/legality.mjs +239 -0
  175. package/build/esm/data/mods/gen8bdsp/legality.mjs.map +1 -0
  176. package/build/esm/data/mods/gen8bdsp/moves.d.mts +1 -0
  177. package/build/esm/data/mods/gen8bdsp/moves.mjs +916 -0
  178. package/build/esm/data/mods/gen8bdsp/moves.mjs.map +1 -0
  179. package/build/esm/data/mods/gen8bdsp/pokedex.d.mts +1 -0
  180. package/build/esm/data/mods/gen8bdsp/pokedex.mjs +96 -0
  181. package/build/esm/data/mods/gen8bdsp/pokedex.mjs.map +1 -0
  182. package/build/esm/data/mods/gen8bdsp/scripts.d.mts +1 -0
  183. package/build/esm/data/mods/gen8bdsp/scripts.mjs +12 -0
  184. package/build/esm/data/mods/gen8bdsp/scripts.mjs.map +1 -0
  185. package/build/esm/data/mods/gen8legends/formats-data.d.mts +1 -0
  186. package/build/esm/data/mods/gen8legends/formats-data.mjs +2772 -0
  187. package/build/esm/data/mods/gen8legends/formats-data.mjs.map +1 -0
  188. package/build/esm/data/mods/gen8legends/index.d.mts +2 -0
  189. package/build/esm/data/mods/gen8legends/index.mjs +3 -0
  190. package/build/esm/data/mods/gen8legends/index.mjs.map +1 -0
  191. package/build/esm/data/mods/gen8legends/learnsets.d.mts +3 -0
  192. package/build/esm/data/mods/gen8legends/learnsets.mjs +5550 -0
  193. package/build/esm/data/mods/gen8legends/learnsets.mjs.map +1 -0
  194. package/build/esm/data/mods/gen8legends/legality.d.mts +3 -0
  195. package/build/esm/data/mods/gen8legends/legality.mjs +146 -0
  196. package/build/esm/data/mods/gen8legends/legality.mjs.map +1 -0
  197. package/build/esm/data/mods/gen8legends/scripts.d.mts +1 -0
  198. package/build/esm/data/mods/gen8legends/scripts.mjs +5 -0
  199. package/build/esm/data/mods/gen8legends/scripts.mjs.map +1 -0
  200. package/build/esm/data/moves.mjs +53 -55
  201. package/build/esm/data/moves.mjs.map +1 -1
  202. package/build/esm/data/pokedex.mjs +735 -10
  203. package/build/esm/data/pokedex.mjs.map +1 -1
  204. package/build/esm/data/rulesets.mjs +78 -0
  205. package/build/esm/data/rulesets.mjs.map +1 -1
  206. package/build/esm/data/text/items.mjs +108 -0
  207. package/build/esm/data/text/items.mjs.map +1 -1
  208. package/build/esm/data/text/moves.mjs +6 -2
  209. package/build/esm/data/text/moves.mjs.map +1 -1
  210. package/build/esm/sim/battle-actions.mjs +17 -7
  211. package/build/esm/sim/battle-actions.mjs.map +1 -1
  212. package/build/esm/sim/battle-queue.d.mts +11 -6
  213. package/build/esm/sim/battle-queue.mjs.map +1 -1
  214. package/build/esm/sim/battle.d.mts +2 -2
  215. package/build/esm/sim/battle.mjs +23 -28
  216. package/build/esm/sim/battle.mjs.map +1 -1
  217. package/build/esm/sim/dex-conditions.d.mts +2 -1
  218. package/build/esm/sim/dex-conditions.mjs.map +1 -1
  219. package/build/esm/sim/dex-formats.d.mts +2 -0
  220. package/build/esm/sim/dex-formats.mjs +12 -1
  221. package/build/esm/sim/dex-formats.mjs.map +1 -1
  222. package/build/esm/sim/dex-species.d.mts +13 -2
  223. package/build/esm/sim/dex-species.mjs +40 -19
  224. package/build/esm/sim/dex-species.mjs.map +1 -1
  225. package/build/esm/sim/dex.mjs +11 -0
  226. package/build/esm/sim/dex.mjs.map +1 -1
  227. package/build/esm/sim/exported-global-types.d.mts +5 -4
  228. package/build/esm/sim/global-types.d.mts +5 -4
  229. package/build/esm/sim/pokemon.d.mts +6 -4
  230. package/build/esm/sim/pokemon.mjs +31 -24
  231. package/build/esm/sim/pokemon.mjs.map +1 -1
  232. package/build/esm/sim/side.mjs +11 -41
  233. package/build/esm/sim/side.mjs.map +1 -1
  234. package/build/esm/sim/team-validator.d.mts +1 -0
  235. package/build/esm/sim/team-validator.mjs +50 -18
  236. package/build/esm/sim/team-validator.mjs.map +1 -1
  237. package/package.json +2 -2
@@ -1877,7 +1877,7 @@ export class Battle {
1877
1877
  const name = effect.fullname === 'tox' ? 'psn' : effect.fullname;
1878
1878
  switch (effect.id) {
1879
1879
  case 'partiallytrapped':
1880
- this.add('-damage', target, target.getHealth, '[from] ' + this.effectState.sourceEffect.fullname, '[partiallytrapped]');
1880
+ this.add('-damage', target, target.getHealth, '[from] ' + target.volatiles['partiallytrapped'].sourceEffect.fullname, '[partiallytrapped]');
1881
1881
  break;
1882
1882
  case 'powder':
1883
1883
  this.add('-damage', target, target.getHealth, '[silent]');
@@ -2098,36 +2098,31 @@ export class Battle {
2098
2098
  }
2099
2099
  /** Given a table of base stats and a pokemon set, return the actual stats. */
2100
2100
  spreadModify(baseStats, set) {
2101
- const modStats = { atk: 10, def: 10, spa: 10, spd: 10, spe: 10 };
2102
- const tr = this.trunc;
2103
- let statName;
2104
- for (statName in modStats) {
2105
- const stat = baseStats[statName];
2106
- modStats[statName] = tr(tr(2 * stat + set.ivs[statName] + tr(set.evs[statName] / 4)) * set.level / 100 + 5);
2107
- }
2108
- if ('hp' in baseStats) {
2109
- const stat = baseStats['hp'];
2110
- modStats['hp'] = tr(tr(2 * stat + set.ivs['hp'] + tr(set.evs['hp'] / 4) + 100) * set.level / 100 + 10);
2101
+ const modStats = { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 };
2102
+ for (const statName in baseStats) {
2103
+ modStats[statName] = this.statModify(baseStats, set, statName);
2111
2104
  }
2112
- return this.natureModify(modStats, set);
2105
+ return modStats;
2113
2106
  }
2114
- natureModify(stats, set) {
2115
- // Natures are calculated with 16-bit truncation.
2116
- // This only affects Eternatus-Eternamax in Pure Hackmons.
2107
+ statModify(baseStats, set, statName) {
2117
2108
  const tr = this.trunc;
2109
+ let stat = baseStats[statName];
2110
+ if (statName === 'hp') {
2111
+ return tr(tr(2 * stat + set.ivs[statName] + tr(set.evs[statName] / 4) + 100) * set.level / 100 + 10);
2112
+ }
2113
+ stat = tr(tr(2 * stat + set.ivs[statName] + tr(set.evs[statName] / 4)) * set.level / 100 + 5);
2118
2114
  const nature = this.dex.natures.get(set.nature);
2119
- let s;
2120
- if (nature.plus) {
2121
- s = nature.plus;
2122
- const stat = this.ruleTable.has('overflowstatmod') ? Math.min(stats[s], 595) : stats[s];
2123
- stats[s] = tr(tr(stat * 110, 16) / 100);
2115
+ // Natures are calculated with 16-bit truncation.
2116
+ // This only affects Eternatus-Eternamax in Pure Hackmons.
2117
+ if (nature.plus === statName) {
2118
+ stat = this.ruleTable.has('overflowstatmod') ? Math.min(stat, 595) : stat;
2119
+ stat = tr(tr(stat * 110, 16) / 100);
2124
2120
  }
2125
- if (nature.minus) {
2126
- s = nature.minus;
2127
- const stat = this.ruleTable.has('overflowstatmod') ? Math.min(stats[s], 728) : stats[s];
2128
- stats[s] = tr(tr(stat * 90, 16) / 100);
2121
+ else if (nature.minus === statName) {
2122
+ stat = this.ruleTable.has('overflowstatmod') ? Math.min(stat, 728) : stat;
2123
+ stat = tr(tr(stat * 90, 16) / 100);
2129
2124
  }
2130
- return stats;
2125
+ return stat;
2131
2126
  }
2132
2127
  finalModify(relayVar) {
2133
2128
  relayVar = this.modify(relayVar, this.event.modifier);
@@ -2432,7 +2427,7 @@ export class Battle {
2432
2427
  continue;
2433
2428
  pokemon.baseSpecies = rawSpecies;
2434
2429
  pokemon.details = pokemon.getUpdatedDetails();
2435
- pokemon.setAbility(species.abilities['0'], null, true);
2430
+ pokemon.setAbility(species.abilities['0'], null, null, true);
2436
2431
  pokemon.baseAbility = pokemon.ability;
2437
2432
  const behemothMove = {
2438
2433
  'Zacian-Crowned': 'behemothblade', 'Zamazenta-Crowned': 'behemothbash',
@@ -2838,7 +2833,7 @@ export class Battle {
2838
2833
  return totalActions >= this.sides.length;
2839
2834
  }
2840
2835
  hint(hint, once, side) {
2841
- if (this.hints.has(hint))
2836
+ if (this.hints.has(side ? `${side.id}|${hint}` : hint))
2842
2837
  return;
2843
2838
  if (side) {
2844
2839
  this.addSplit(side.id, ['-hint', hint]);
@@ -2847,7 +2842,7 @@ export class Battle {
2847
2842
  this.add('-hint', hint);
2848
2843
  }
2849
2844
  if (once)
2850
- this.hints.add(hint);
2845
+ this.hints.add(side ? `${side.id}|${hint}` : hint);
2851
2846
  }
2852
2847
  addSplit(side, secret, shared) {
2853
2848
  this.log.push(`|split|${side}`);