@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
@@ -2000,12 +2000,12 @@ export const Moves = {
2000
2000
  pp: 20,
2001
2001
  priority: 0,
2002
2002
  flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 },
2003
- onHit(target, source) {
2003
+ onHit(target, source, move) {
2004
2004
  const item = target.getItem();
2005
2005
  if (source.hp && item.isBerry && target.takeItem(source)) {
2006
2006
  this.add('-enditem', target, item.name, '[from] stealeat', '[move] Bug Bite', `[of] ${source}`);
2007
- if (this.singleEvent('Eat', item, null, source, null, null)) {
2008
- this.runEvent('EatItem', source, null, null, item);
2007
+ if (this.singleEvent('Eat', item, target.itemState, source, source, move)) {
2008
+ this.runEvent('EatItem', source, source, move, item);
2009
2009
  if (item.id === 'leppaberry')
2010
2010
  target.staleness = 'external';
2011
2011
  }
@@ -3197,10 +3197,8 @@ export const Moves = {
3197
3197
  ];
3198
3198
  let success = false;
3199
3199
  if (this.gameType === "freeforall") {
3200
- // random integer from 1-3 inclusive
3201
- const offset = this.random(3) + 1;
3202
- // the list of all sides in counterclockwise order
3203
- const sides = [this.sides[0], this.sides[2], this.sides[1], this.sides[3]];
3200
+ // the list of all sides in clockwise order
3201
+ const sides = [this.sides[0], this.sides[3], this.sides[1], this.sides[2]];
3204
3202
  const temp = { 0: {}, 1: {}, 2: {}, 3: {} };
3205
3203
  for (const side of sides) {
3206
3204
  for (const id in side.sideConditions) {
@@ -3208,21 +3206,15 @@ export const Moves = {
3208
3206
  continue;
3209
3207
  temp[side.n][id] = side.sideConditions[id];
3210
3208
  delete side.sideConditions[id];
3211
- const effectName = this.dex.conditions.get(id).name;
3212
- this.add('-sideend', side, effectName, '[silent]');
3213
3209
  success = true;
3214
3210
  }
3215
3211
  }
3216
3212
  for (let i = 0; i < 4; i++) {
3217
3213
  const sourceSideConditions = temp[sides[i].n];
3218
- const targetSide = sides[(i + offset) % 4]; // the next side in rotation
3214
+ const targetSide = sides[(i + 1) % 4]; // the next side in rotation
3219
3215
  for (const id in sourceSideConditions) {
3220
3216
  targetSide.sideConditions[id] = sourceSideConditions[id];
3221
3217
  targetSide.sideConditions[id].target = targetSide;
3222
- const effectName = this.dex.conditions.get(id).name;
3223
- let layers = sourceSideConditions[id].layers || 1;
3224
- for (; layers > 0; layers--)
3225
- this.add('-sidestart', targetSide, effectName, '[silent]');
3226
3218
  }
3227
3219
  }
3228
3220
  }
@@ -3253,10 +3245,10 @@ export const Moves = {
3253
3245
  sourceSideConditions[id] = targetTemp[id];
3254
3246
  sourceSideConditions[id].target = source.side;
3255
3247
  }
3256
- this.add('-swapsideconditions');
3257
3248
  }
3258
3249
  if (!success)
3259
3250
  return false;
3251
+ this.add('-swapsideconditions');
3260
3252
  this.add('-activate', source, 'move: Court Change');
3261
3253
  },
3262
3254
  secondary: null,
@@ -4028,9 +4020,8 @@ export const Moves = {
4028
4020
  for (const pokemon of source.alliesAndSelf()) {
4029
4021
  if (pokemon.ability === target.ability || pokemon.getAbility().flags['cantsuppress'])
4030
4022
  continue;
4031
- const oldAbility = pokemon.setAbility(target.ability);
4023
+ const oldAbility = pokemon.setAbility(target.ability, null, move);
4032
4024
  if (oldAbility) {
4033
- this.add('-ability', pokemon, target.getAbility().name, '[from] move: Doodle');
4034
4025
  success = true;
4035
4026
  }
4036
4027
  else if (!success && oldAbility === null) {
@@ -5131,14 +5122,11 @@ export const Moves = {
5131
5122
  }
5132
5123
  },
5133
5124
  onHit(target, source) {
5134
- const oldAbility = target.setAbility(source.ability);
5135
- if (oldAbility) {
5136
- this.add('-ability', target, target.getAbility().name, '[from] move: Entrainment');
5137
- if (!target.isAlly(source))
5138
- target.volatileStaleness = 'external';
5139
- return;
5140
- }
5141
- return oldAbility;
5125
+ const oldAbility = target.setAbility(source.ability, source);
5126
+ if (!oldAbility)
5127
+ return oldAbility;
5128
+ if (!target.isAlly(source))
5129
+ target.volatileStaleness = 'external';
5142
5130
  },
5143
5131
  secondary: null,
5144
5132
  target: "normal",
@@ -6048,9 +6036,12 @@ export const Moves = {
6048
6036
  move.basePower = item.fling.basePower;
6049
6037
  this.debug(`BP: ${move.basePower}`);
6050
6038
  if (item.isBerry) {
6039
+ if (source.hasAbility('cudchew')) {
6040
+ this.singleEvent('EatItem', source.getAbility(), source.abilityState, source, source, move, item);
6041
+ }
6051
6042
  move.onHit = function (foe) {
6052
- if (this.singleEvent('Eat', item, null, foe, null, null)) {
6053
- this.runEvent('EatItem', foe, null, null, item);
6043
+ if (this.singleEvent('Eat', item, source.itemState, foe, source, move)) {
6044
+ this.runEvent('EatItem', foe, source, move, item);
6054
6045
  if (item.id === 'leppaberry')
6055
6046
  foe.staleness = 'external';
6056
6047
  }
@@ -13431,6 +13422,23 @@ export const Moves = {
13431
13422
  type: "Dark",
13432
13423
  contestType: "Cool",
13433
13424
  },
13425
+ nihillight: {
13426
+ num: 920,
13427
+ accuracy: 100,
13428
+ basePower: 100,
13429
+ category: "Special",
13430
+ isNonstandard: "Future",
13431
+ name: "Nihil Light",
13432
+ pp: 10,
13433
+ priority: 0,
13434
+ flags: { protect: 1, mirror: 1, metronome: 1 },
13435
+ ignoreEvasion: true,
13436
+ ignoreDefensive: true,
13437
+ ignoreImmunity: { 'Fairy': true },
13438
+ secondary: null,
13439
+ target: "allAdjacentFoes",
13440
+ type: "Dragon",
13441
+ },
13434
13442
  nobleroar: {
13435
13443
  num: 568,
13436
13444
  accuracy: 100,
@@ -14153,12 +14161,12 @@ export const Moves = {
14153
14161
  pp: 20,
14154
14162
  priority: 0,
14155
14163
  flags: { contact: 1, protect: 1, mirror: 1, distance: 1, metronome: 1 },
14156
- onHit(target, source) {
14164
+ onHit(target, source, move) {
14157
14165
  const item = target.getItem();
14158
14166
  if (source.hp && item.isBerry && target.takeItem(source)) {
14159
14167
  this.add('-enditem', target, item.name, '[from] stealeat', '[move] Pluck', `[of] ${source}`);
14160
- if (this.singleEvent('Eat', item, null, source, null, null)) {
14161
- this.runEvent('EatItem', source, null, null, item);
14168
+ if (this.singleEvent('Eat', item, target.itemState, source, source, move)) {
14169
+ this.runEvent('EatItem', source, source, move, item);
14162
14170
  if (item.id === 'leppaberry')
14163
14171
  target.staleness = 'external';
14164
14172
  }
@@ -15613,13 +15621,13 @@ export const Moves = {
15613
15621
  pp: 10,
15614
15622
  priority: 0,
15615
15623
  flags: { snatch: 1, metronome: 1 },
15616
- onHit(pokemon) {
15624
+ onHit(pokemon, source, move) {
15617
15625
  if (pokemon.item || !pokemon.lastItem)
15618
15626
  return false;
15619
15627
  const item = pokemon.lastItem;
15620
15628
  pokemon.lastItem = '';
15621
15629
  this.add('-item', pokemon, this.dex.items.get(item), '[from] move: Recycle');
15622
- pokemon.setItem(item);
15630
+ pokemon.setItem(item, source, move);
15623
15631
  },
15624
15632
  secondary: null,
15625
15633
  target: "self",
@@ -16159,12 +16167,9 @@ export const Moves = {
16159
16167
  return false;
16160
16168
  },
16161
16169
  onHit(target, source) {
16162
- const oldAbility = source.setAbility(target.ability);
16163
- if (oldAbility) {
16164
- this.add('-ability', source, source.getAbility().name, '[from] move: Role Play', `[of] ${target}`);
16165
- return;
16166
- }
16167
- return oldAbility;
16170
+ const oldAbility = source.setAbility(target.ability, target);
16171
+ if (!oldAbility)
16172
+ return oldAbility;
16168
16173
  },
16169
16174
  secondary: null,
16170
16175
  target: "normal",
@@ -17381,13 +17386,10 @@ export const Moves = {
17381
17386
  return false;
17382
17387
  }
17383
17388
  },
17384
- onHit(pokemon) {
17385
- const oldAbility = pokemon.setAbility('simple');
17386
- if (oldAbility) {
17387
- this.add('-ability', pokemon, 'Simple', '[from] move: Simple Beam');
17388
- return;
17389
- }
17390
- return oldAbility;
17389
+ onHit(target, source) {
17390
+ const oldAbility = target.setAbility('simple');
17391
+ if (!oldAbility)
17392
+ return oldAbility;
17391
17393
  },
17392
17394
  secondary: null,
17393
17395
  target: "normal",
@@ -22262,16 +22264,12 @@ export const Moves = {
22262
22264
  return false;
22263
22265
  }
22264
22266
  },
22265
- onHit(pokemon) {
22266
- const oldAbility = pokemon.setAbility('insomnia');
22267
- if (oldAbility) {
22268
- this.add('-ability', pokemon, 'Insomnia', '[from] move: Worry Seed');
22269
- if (pokemon.status === 'slp') {
22270
- pokemon.cureStatus();
22271
- }
22272
- return;
22273
- }
22274
- return oldAbility;
22267
+ onHit(target, source) {
22268
+ const oldAbility = target.setAbility('insomnia');
22269
+ if (!oldAbility)
22270
+ return oldAbility;
22271
+ if (target.status === 'slp')
22272
+ target.cureStatus();
22275
22273
  },
22276
22274
  secondary: null,
22277
22275
  target: "normal",