@pkmn/sim 0.9.37 → 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 (243) 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 +164 -64
  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 +12 -1
  14. package/build/cjs/data/mods/gen1/conditions.js.map +1 -1
  15. package/build/cjs/data/mods/gen1/scripts.js +14 -28
  16. package/build/cjs/data/mods/gen1/scripts.js.map +1 -1
  17. package/build/cjs/data/mods/gen2/formats-data.js +2 -2
  18. package/build/cjs/data/mods/gen2/formats-data.js.map +1 -1
  19. package/build/cjs/data/mods/gen3/abilities.js +1 -3
  20. package/build/cjs/data/mods/gen3/abilities.js.map +1 -1
  21. package/build/cjs/data/mods/gen3/formats-data.js +5 -11
  22. package/build/cjs/data/mods/gen3/formats-data.js.map +1 -1
  23. package/build/cjs/data/mods/gen3/moves.js +24 -0
  24. package/build/cjs/data/mods/gen3/moves.js.map +1 -1
  25. package/build/cjs/data/mods/gen4/abilities.js +2 -14
  26. package/build/cjs/data/mods/gen4/abilities.js.map +1 -1
  27. package/build/cjs/data/mods/gen4/formats-data.js.map +1 -1
  28. package/build/cjs/data/mods/gen4/moves.js +37 -6
  29. package/build/cjs/data/mods/gen4/moves.js.map +1 -1
  30. package/build/cjs/data/mods/gen5/abilities.js +4 -0
  31. package/build/cjs/data/mods/gen5/abilities.js.map +1 -1
  32. package/build/cjs/data/mods/gen5/formats-data.js.map +1 -1
  33. package/build/cjs/data/mods/gen6/pokedex.js +104 -0
  34. package/build/cjs/data/mods/gen6/pokedex.js.map +1 -1
  35. package/build/cjs/data/mods/gen7/abilities.js +11 -26
  36. package/build/cjs/data/mods/gen7/abilities.js.map +1 -1
  37. package/build/cjs/data/mods/gen7/formats-data.js +1 -1
  38. package/build/cjs/data/mods/gen7/formats-data.js.map +1 -1
  39. package/build/cjs/data/mods/gen7/pokedex.js +96 -0
  40. package/build/cjs/data/mods/gen7/pokedex.js.map +1 -1
  41. package/build/cjs/data/mods/gen8/abilities.js +0 -3
  42. package/build/cjs/data/mods/gen8/abilities.js.map +1 -1
  43. package/build/cjs/data/mods/gen8bdsp/abilities.d.ts +1 -0
  44. package/build/cjs/data/mods/gen8bdsp/abilities.js +42 -0
  45. package/build/cjs/data/mods/gen8bdsp/abilities.js.map +1 -0
  46. package/build/cjs/data/mods/gen8bdsp/formats-data.d.ts +1 -0
  47. package/build/cjs/data/mods/gen8bdsp/formats-data.js +1837 -0
  48. package/build/cjs/data/mods/gen8bdsp/formats-data.js.map +1 -0
  49. package/build/cjs/data/mods/gen8bdsp/index.d.ts +6 -0
  50. package/build/cjs/data/mods/gen8bdsp/index.js +16 -0
  51. package/build/cjs/data/mods/gen8bdsp/index.js.map +1 -0
  52. package/build/cjs/data/mods/gen8bdsp/items.d.ts +1 -0
  53. package/build/cjs/data/mods/gen8bdsp/items.js +831 -0
  54. package/build/cjs/data/mods/gen8bdsp/items.js.map +1 -0
  55. package/build/cjs/data/mods/gen8bdsp/learnsets.d.ts +3 -0
  56. package/build/cjs/data/mods/gen8bdsp/learnsets.js +25784 -0
  57. package/build/cjs/data/mods/gen8bdsp/learnsets.js.map +1 -0
  58. package/build/cjs/data/mods/gen8bdsp/legality.d.ts +3 -0
  59. package/build/cjs/data/mods/gen8bdsp/legality.js +242 -0
  60. package/build/cjs/data/mods/gen8bdsp/legality.js.map +1 -0
  61. package/build/cjs/data/mods/gen8bdsp/moves.d.ts +1 -0
  62. package/build/cjs/data/mods/gen8bdsp/moves.js +919 -0
  63. package/build/cjs/data/mods/gen8bdsp/moves.js.map +1 -0
  64. package/build/cjs/data/mods/gen8bdsp/pokedex.d.ts +1 -0
  65. package/build/cjs/data/mods/gen8bdsp/pokedex.js +99 -0
  66. package/build/cjs/data/mods/gen8bdsp/pokedex.js.map +1 -0
  67. package/build/cjs/data/mods/gen8bdsp/scripts.d.ts +1 -0
  68. package/build/cjs/data/mods/gen8bdsp/scripts.js +15 -0
  69. package/build/cjs/data/mods/gen8bdsp/scripts.js.map +1 -0
  70. package/build/cjs/data/mods/gen8legends/formats-data.d.ts +1 -0
  71. package/build/cjs/data/mods/gen8legends/formats-data.js +2775 -0
  72. package/build/cjs/data/mods/gen8legends/formats-data.js.map +1 -0
  73. package/build/cjs/data/mods/gen8legends/index.d.ts +2 -0
  74. package/build/cjs/data/mods/gen8legends/index.js +8 -0
  75. package/build/cjs/data/mods/gen8legends/index.js.map +1 -0
  76. package/build/cjs/data/mods/gen8legends/learnsets.d.ts +3 -0
  77. package/build/cjs/data/mods/gen8legends/learnsets.js +5553 -0
  78. package/build/cjs/data/mods/gen8legends/learnsets.js.map +1 -0
  79. package/build/cjs/data/mods/gen8legends/legality.d.ts +3 -0
  80. package/build/cjs/data/mods/gen8legends/legality.js +149 -0
  81. package/build/cjs/data/mods/gen8legends/legality.js.map +1 -0
  82. package/build/cjs/data/mods/gen8legends/scripts.d.ts +1 -0
  83. package/build/cjs/data/mods/gen8legends/scripts.js +8 -0
  84. package/build/cjs/data/mods/gen8legends/scripts.js.map +1 -0
  85. package/build/cjs/data/moves.js +53 -55
  86. package/build/cjs/data/moves.js.map +1 -1
  87. package/build/cjs/data/pokedex.js +735 -10
  88. package/build/cjs/data/pokedex.js.map +1 -1
  89. package/build/cjs/data/rulesets.js +78 -0
  90. package/build/cjs/data/rulesets.js.map +1 -1
  91. package/build/cjs/data/text/items.js +108 -0
  92. package/build/cjs/data/text/items.js.map +1 -1
  93. package/build/cjs/data/text/moves.js +6 -2
  94. package/build/cjs/data/text/moves.js.map +1 -1
  95. package/build/cjs/sim/battle-actions.js +17 -7
  96. package/build/cjs/sim/battle-actions.js.map +1 -1
  97. package/build/cjs/sim/battle-queue.d.ts +11 -6
  98. package/build/cjs/sim/battle-queue.js.map +1 -1
  99. package/build/cjs/sim/battle.d.ts +2 -2
  100. package/build/cjs/sim/battle.js +23 -28
  101. package/build/cjs/sim/battle.js.map +1 -1
  102. package/build/cjs/sim/dex-conditions.d.ts +2 -1
  103. package/build/cjs/sim/dex-conditions.js.map +1 -1
  104. package/build/cjs/sim/dex-formats.d.ts +2 -0
  105. package/build/cjs/sim/dex-formats.js +12 -1
  106. package/build/cjs/sim/dex-formats.js.map +1 -1
  107. package/build/cjs/sim/dex-species.d.ts +13 -2
  108. package/build/cjs/sim/dex-species.js +40 -19
  109. package/build/cjs/sim/dex-species.js.map +1 -1
  110. package/build/cjs/sim/dex.js +11 -0
  111. package/build/cjs/sim/dex.js.map +1 -1
  112. package/build/cjs/sim/exported-global-types.d.ts +5 -4
  113. package/build/cjs/sim/global-types.d.ts +5 -4
  114. package/build/cjs/sim/pokemon.d.ts +6 -4
  115. package/build/cjs/sim/pokemon.js +31 -24
  116. package/build/cjs/sim/pokemon.js.map +1 -1
  117. package/build/cjs/sim/side.js +11 -41
  118. package/build/cjs/sim/side.js.map +1 -1
  119. package/build/cjs/sim/team-validator.d.ts +1 -0
  120. package/build/cjs/sim/team-validator.js +50 -18
  121. package/build/cjs/sim/team-validator.js.map +1 -1
  122. package/build/esm/config/formats.mjs +185 -173
  123. package/build/esm/config/formats.mjs.map +1 -1
  124. package/build/esm/data/abilities.mjs +62 -72
  125. package/build/esm/data/abilities.mjs.map +1 -1
  126. package/build/esm/data/aliases.mjs +11 -4
  127. package/build/esm/data/aliases.mjs.map +1 -1
  128. package/build/esm/data/formats-data.mjs +164 -64
  129. package/build/esm/data/formats-data.mjs.map +1 -1
  130. package/build/esm/data/items.mjs +406 -2
  131. package/build/esm/data/items.mjs.map +1 -1
  132. package/build/esm/data/legality.mjs +548 -113
  133. package/build/esm/data/legality.mjs.map +1 -1
  134. package/build/esm/data/mods/gen1/conditions.mjs +12 -1
  135. package/build/esm/data/mods/gen1/conditions.mjs.map +1 -1
  136. package/build/esm/data/mods/gen1/scripts.mjs +14 -28
  137. package/build/esm/data/mods/gen1/scripts.mjs.map +1 -1
  138. package/build/esm/data/mods/gen2/formats-data.mjs +2 -2
  139. package/build/esm/data/mods/gen2/formats-data.mjs.map +1 -1
  140. package/build/esm/data/mods/gen3/abilities.mjs +1 -3
  141. package/build/esm/data/mods/gen3/abilities.mjs.map +1 -1
  142. package/build/esm/data/mods/gen3/formats-data.mjs +5 -11
  143. package/build/esm/data/mods/gen3/formats-data.mjs.map +1 -1
  144. package/build/esm/data/mods/gen3/moves.mjs +24 -0
  145. package/build/esm/data/mods/gen3/moves.mjs.map +1 -1
  146. package/build/esm/data/mods/gen4/abilities.mjs +2 -14
  147. package/build/esm/data/mods/gen4/abilities.mjs.map +1 -1
  148. package/build/esm/data/mods/gen4/formats-data.mjs.map +1 -1
  149. package/build/esm/data/mods/gen4/moves.mjs +37 -6
  150. package/build/esm/data/mods/gen4/moves.mjs.map +1 -1
  151. package/build/esm/data/mods/gen5/abilities.mjs +4 -0
  152. package/build/esm/data/mods/gen5/abilities.mjs.map +1 -1
  153. package/build/esm/data/mods/gen5/formats-data.mjs.map +1 -1
  154. package/build/esm/data/mods/gen6/pokedex.mjs +104 -0
  155. package/build/esm/data/mods/gen6/pokedex.mjs.map +1 -1
  156. package/build/esm/data/mods/gen7/abilities.mjs +11 -26
  157. package/build/esm/data/mods/gen7/abilities.mjs.map +1 -1
  158. package/build/esm/data/mods/gen7/formats-data.mjs +1 -1
  159. package/build/esm/data/mods/gen7/formats-data.mjs.map +1 -1
  160. package/build/esm/data/mods/gen7/pokedex.mjs +96 -0
  161. package/build/esm/data/mods/gen7/pokedex.mjs.map +1 -1
  162. package/build/esm/data/mods/gen8/abilities.mjs +0 -3
  163. package/build/esm/data/mods/gen8/abilities.mjs.map +1 -1
  164. package/build/esm/data/mods/gen8bdsp/abilities.d.mts +1 -0
  165. package/build/esm/data/mods/gen8bdsp/abilities.mjs +39 -0
  166. package/build/esm/data/mods/gen8bdsp/abilities.mjs.map +1 -0
  167. package/build/esm/data/mods/gen8bdsp/formats-data.d.mts +1 -0
  168. package/build/esm/data/mods/gen8bdsp/formats-data.mjs +1834 -0
  169. package/build/esm/data/mods/gen8bdsp/formats-data.mjs.map +1 -0
  170. package/build/esm/data/mods/gen8bdsp/index.d.mts +6 -0
  171. package/build/esm/data/mods/gen8bdsp/index.mjs +7 -0
  172. package/build/esm/data/mods/gen8bdsp/index.mjs.map +1 -0
  173. package/build/esm/data/mods/gen8bdsp/items.d.mts +1 -0
  174. package/build/esm/data/mods/gen8bdsp/items.mjs +828 -0
  175. package/build/esm/data/mods/gen8bdsp/items.mjs.map +1 -0
  176. package/build/esm/data/mods/gen8bdsp/learnsets.d.mts +3 -0
  177. package/build/esm/data/mods/gen8bdsp/learnsets.mjs +25781 -0
  178. package/build/esm/data/mods/gen8bdsp/learnsets.mjs.map +1 -0
  179. package/build/esm/data/mods/gen8bdsp/legality.d.mts +3 -0
  180. package/build/esm/data/mods/gen8bdsp/legality.mjs +239 -0
  181. package/build/esm/data/mods/gen8bdsp/legality.mjs.map +1 -0
  182. package/build/esm/data/mods/gen8bdsp/moves.d.mts +1 -0
  183. package/build/esm/data/mods/gen8bdsp/moves.mjs +916 -0
  184. package/build/esm/data/mods/gen8bdsp/moves.mjs.map +1 -0
  185. package/build/esm/data/mods/gen8bdsp/pokedex.d.mts +1 -0
  186. package/build/esm/data/mods/gen8bdsp/pokedex.mjs +96 -0
  187. package/build/esm/data/mods/gen8bdsp/pokedex.mjs.map +1 -0
  188. package/build/esm/data/mods/gen8bdsp/scripts.d.mts +1 -0
  189. package/build/esm/data/mods/gen8bdsp/scripts.mjs +12 -0
  190. package/build/esm/data/mods/gen8bdsp/scripts.mjs.map +1 -0
  191. package/build/esm/data/mods/gen8legends/formats-data.d.mts +1 -0
  192. package/build/esm/data/mods/gen8legends/formats-data.mjs +2772 -0
  193. package/build/esm/data/mods/gen8legends/formats-data.mjs.map +1 -0
  194. package/build/esm/data/mods/gen8legends/index.d.mts +2 -0
  195. package/build/esm/data/mods/gen8legends/index.mjs +3 -0
  196. package/build/esm/data/mods/gen8legends/index.mjs.map +1 -0
  197. package/build/esm/data/mods/gen8legends/learnsets.d.mts +3 -0
  198. package/build/esm/data/mods/gen8legends/learnsets.mjs +5550 -0
  199. package/build/esm/data/mods/gen8legends/learnsets.mjs.map +1 -0
  200. package/build/esm/data/mods/gen8legends/legality.d.mts +3 -0
  201. package/build/esm/data/mods/gen8legends/legality.mjs +146 -0
  202. package/build/esm/data/mods/gen8legends/legality.mjs.map +1 -0
  203. package/build/esm/data/mods/gen8legends/scripts.d.mts +1 -0
  204. package/build/esm/data/mods/gen8legends/scripts.mjs +5 -0
  205. package/build/esm/data/mods/gen8legends/scripts.mjs.map +1 -0
  206. package/build/esm/data/moves.mjs +53 -55
  207. package/build/esm/data/moves.mjs.map +1 -1
  208. package/build/esm/data/pokedex.mjs +735 -10
  209. package/build/esm/data/pokedex.mjs.map +1 -1
  210. package/build/esm/data/rulesets.mjs +78 -0
  211. package/build/esm/data/rulesets.mjs.map +1 -1
  212. package/build/esm/data/text/items.mjs +108 -0
  213. package/build/esm/data/text/items.mjs.map +1 -1
  214. package/build/esm/data/text/moves.mjs +6 -2
  215. package/build/esm/data/text/moves.mjs.map +1 -1
  216. package/build/esm/sim/battle-actions.mjs +17 -7
  217. package/build/esm/sim/battle-actions.mjs.map +1 -1
  218. package/build/esm/sim/battle-queue.d.mts +11 -6
  219. package/build/esm/sim/battle-queue.mjs.map +1 -1
  220. package/build/esm/sim/battle.d.mts +2 -2
  221. package/build/esm/sim/battle.mjs +23 -28
  222. package/build/esm/sim/battle.mjs.map +1 -1
  223. package/build/esm/sim/dex-conditions.d.mts +2 -1
  224. package/build/esm/sim/dex-conditions.mjs.map +1 -1
  225. package/build/esm/sim/dex-formats.d.mts +2 -0
  226. package/build/esm/sim/dex-formats.mjs +12 -1
  227. package/build/esm/sim/dex-formats.mjs.map +1 -1
  228. package/build/esm/sim/dex-species.d.mts +13 -2
  229. package/build/esm/sim/dex-species.mjs +40 -19
  230. package/build/esm/sim/dex-species.mjs.map +1 -1
  231. package/build/esm/sim/dex.mjs +11 -0
  232. package/build/esm/sim/dex.mjs.map +1 -1
  233. package/build/esm/sim/exported-global-types.d.mts +5 -4
  234. package/build/esm/sim/global-types.d.mts +5 -4
  235. package/build/esm/sim/pokemon.d.mts +6 -4
  236. package/build/esm/sim/pokemon.mjs +31 -24
  237. package/build/esm/sim/pokemon.mjs.map +1 -1
  238. package/build/esm/sim/side.mjs +11 -41
  239. package/build/esm/sim/side.mjs.map +1 -1
  240. package/build/esm/sim/team-validator.d.mts +1 -0
  241. package/build/esm/sim/team-validator.mjs +50 -18
  242. package/build/esm/sim/team-validator.mjs.map +1 -1
  243. package/package.json +2 -2
@@ -2003,12 +2003,12 @@ exports.Moves = {
2003
2003
  pp: 20,
2004
2004
  priority: 0,
2005
2005
  flags: { contact: 1, protect: 1, mirror: 1, metronome: 1 },
2006
- onHit(target, source) {
2006
+ onHit(target, source, move) {
2007
2007
  const item = target.getItem();
2008
2008
  if (source.hp && item.isBerry && target.takeItem(source)) {
2009
2009
  this.add('-enditem', target, item.name, '[from] stealeat', '[move] Bug Bite', `[of] ${source}`);
2010
- if (this.singleEvent('Eat', item, null, source, null, null)) {
2011
- this.runEvent('EatItem', source, null, null, item);
2010
+ if (this.singleEvent('Eat', item, target.itemState, source, source, move)) {
2011
+ this.runEvent('EatItem', source, source, move, item);
2012
2012
  if (item.id === 'leppaberry')
2013
2013
  target.staleness = 'external';
2014
2014
  }
@@ -3200,10 +3200,8 @@ exports.Moves = {
3200
3200
  ];
3201
3201
  let success = false;
3202
3202
  if (this.gameType === "freeforall") {
3203
- // random integer from 1-3 inclusive
3204
- const offset = this.random(3) + 1;
3205
- // the list of all sides in counterclockwise order
3206
- const sides = [this.sides[0], this.sides[2], this.sides[1], this.sides[3]];
3203
+ // the list of all sides in clockwise order
3204
+ const sides = [this.sides[0], this.sides[3], this.sides[1], this.sides[2]];
3207
3205
  const temp = { 0: {}, 1: {}, 2: {}, 3: {} };
3208
3206
  for (const side of sides) {
3209
3207
  for (const id in side.sideConditions) {
@@ -3211,21 +3209,15 @@ exports.Moves = {
3211
3209
  continue;
3212
3210
  temp[side.n][id] = side.sideConditions[id];
3213
3211
  delete side.sideConditions[id];
3214
- const effectName = this.dex.conditions.get(id).name;
3215
- this.add('-sideend', side, effectName, '[silent]');
3216
3212
  success = true;
3217
3213
  }
3218
3214
  }
3219
3215
  for (let i = 0; i < 4; i++) {
3220
3216
  const sourceSideConditions = temp[sides[i].n];
3221
- const targetSide = sides[(i + offset) % 4]; // the next side in rotation
3217
+ const targetSide = sides[(i + 1) % 4]; // the next side in rotation
3222
3218
  for (const id in sourceSideConditions) {
3223
3219
  targetSide.sideConditions[id] = sourceSideConditions[id];
3224
3220
  targetSide.sideConditions[id].target = targetSide;
3225
- const effectName = this.dex.conditions.get(id).name;
3226
- let layers = sourceSideConditions[id].layers || 1;
3227
- for (; layers > 0; layers--)
3228
- this.add('-sidestart', targetSide, effectName, '[silent]');
3229
3221
  }
3230
3222
  }
3231
3223
  }
@@ -3256,10 +3248,10 @@ exports.Moves = {
3256
3248
  sourceSideConditions[id] = targetTemp[id];
3257
3249
  sourceSideConditions[id].target = source.side;
3258
3250
  }
3259
- this.add('-swapsideconditions');
3260
3251
  }
3261
3252
  if (!success)
3262
3253
  return false;
3254
+ this.add('-swapsideconditions');
3263
3255
  this.add('-activate', source, 'move: Court Change');
3264
3256
  },
3265
3257
  secondary: null,
@@ -4031,9 +4023,8 @@ exports.Moves = {
4031
4023
  for (const pokemon of source.alliesAndSelf()) {
4032
4024
  if (pokemon.ability === target.ability || pokemon.getAbility().flags['cantsuppress'])
4033
4025
  continue;
4034
- const oldAbility = pokemon.setAbility(target.ability);
4026
+ const oldAbility = pokemon.setAbility(target.ability, null, move);
4035
4027
  if (oldAbility) {
4036
- this.add('-ability', pokemon, target.getAbility().name, '[from] move: Doodle');
4037
4028
  success = true;
4038
4029
  }
4039
4030
  else if (!success && oldAbility === null) {
@@ -5134,14 +5125,11 @@ exports.Moves = {
5134
5125
  }
5135
5126
  },
5136
5127
  onHit(target, source) {
5137
- const oldAbility = target.setAbility(source.ability);
5138
- if (oldAbility) {
5139
- this.add('-ability', target, target.getAbility().name, '[from] move: Entrainment');
5140
- if (!target.isAlly(source))
5141
- target.volatileStaleness = 'external';
5142
- return;
5143
- }
5144
- return oldAbility;
5128
+ const oldAbility = target.setAbility(source.ability, source);
5129
+ if (!oldAbility)
5130
+ return oldAbility;
5131
+ if (!target.isAlly(source))
5132
+ target.volatileStaleness = 'external';
5145
5133
  },
5146
5134
  secondary: null,
5147
5135
  target: "normal",
@@ -6051,9 +6039,12 @@ exports.Moves = {
6051
6039
  move.basePower = item.fling.basePower;
6052
6040
  this.debug(`BP: ${move.basePower}`);
6053
6041
  if (item.isBerry) {
6042
+ if (source.hasAbility('cudchew')) {
6043
+ this.singleEvent('EatItem', source.getAbility(), source.abilityState, source, source, move, item);
6044
+ }
6054
6045
  move.onHit = function (foe) {
6055
- if (this.singleEvent('Eat', item, null, foe, null, null)) {
6056
- this.runEvent('EatItem', foe, null, null, item);
6046
+ if (this.singleEvent('Eat', item, source.itemState, foe, source, move)) {
6047
+ this.runEvent('EatItem', foe, source, move, item);
6057
6048
  if (item.id === 'leppaberry')
6058
6049
  foe.staleness = 'external';
6059
6050
  }
@@ -13434,6 +13425,23 @@ exports.Moves = {
13434
13425
  type: "Dark",
13435
13426
  contestType: "Cool",
13436
13427
  },
13428
+ nihillight: {
13429
+ num: 920,
13430
+ accuracy: 100,
13431
+ basePower: 100,
13432
+ category: "Special",
13433
+ isNonstandard: "Future",
13434
+ name: "Nihil Light",
13435
+ pp: 10,
13436
+ priority: 0,
13437
+ flags: { protect: 1, mirror: 1, metronome: 1 },
13438
+ ignoreEvasion: true,
13439
+ ignoreDefensive: true,
13440
+ ignoreImmunity: { 'Fairy': true },
13441
+ secondary: null,
13442
+ target: "allAdjacentFoes",
13443
+ type: "Dragon",
13444
+ },
13437
13445
  nobleroar: {
13438
13446
  num: 568,
13439
13447
  accuracy: 100,
@@ -14156,12 +14164,12 @@ exports.Moves = {
14156
14164
  pp: 20,
14157
14165
  priority: 0,
14158
14166
  flags: { contact: 1, protect: 1, mirror: 1, distance: 1, metronome: 1 },
14159
- onHit(target, source) {
14167
+ onHit(target, source, move) {
14160
14168
  const item = target.getItem();
14161
14169
  if (source.hp && item.isBerry && target.takeItem(source)) {
14162
14170
  this.add('-enditem', target, item.name, '[from] stealeat', '[move] Pluck', `[of] ${source}`);
14163
- if (this.singleEvent('Eat', item, null, source, null, null)) {
14164
- this.runEvent('EatItem', source, null, null, item);
14171
+ if (this.singleEvent('Eat', item, target.itemState, source, source, move)) {
14172
+ this.runEvent('EatItem', source, source, move, item);
14165
14173
  if (item.id === 'leppaberry')
14166
14174
  target.staleness = 'external';
14167
14175
  }
@@ -15616,13 +15624,13 @@ exports.Moves = {
15616
15624
  pp: 10,
15617
15625
  priority: 0,
15618
15626
  flags: { snatch: 1, metronome: 1 },
15619
- onHit(pokemon) {
15627
+ onHit(pokemon, source, move) {
15620
15628
  if (pokemon.item || !pokemon.lastItem)
15621
15629
  return false;
15622
15630
  const item = pokemon.lastItem;
15623
15631
  pokemon.lastItem = '';
15624
15632
  this.add('-item', pokemon, this.dex.items.get(item), '[from] move: Recycle');
15625
- pokemon.setItem(item);
15633
+ pokemon.setItem(item, source, move);
15626
15634
  },
15627
15635
  secondary: null,
15628
15636
  target: "self",
@@ -16162,12 +16170,9 @@ exports.Moves = {
16162
16170
  return false;
16163
16171
  },
16164
16172
  onHit(target, source) {
16165
- const oldAbility = source.setAbility(target.ability);
16166
- if (oldAbility) {
16167
- this.add('-ability', source, source.getAbility().name, '[from] move: Role Play', `[of] ${target}`);
16168
- return;
16169
- }
16170
- return oldAbility;
16173
+ const oldAbility = source.setAbility(target.ability, target);
16174
+ if (!oldAbility)
16175
+ return oldAbility;
16171
16176
  },
16172
16177
  secondary: null,
16173
16178
  target: "normal",
@@ -17384,13 +17389,10 @@ exports.Moves = {
17384
17389
  return false;
17385
17390
  }
17386
17391
  },
17387
- onHit(pokemon) {
17388
- const oldAbility = pokemon.setAbility('simple');
17389
- if (oldAbility) {
17390
- this.add('-ability', pokemon, 'Simple', '[from] move: Simple Beam');
17391
- return;
17392
- }
17393
- return oldAbility;
17392
+ onHit(target, source) {
17393
+ const oldAbility = target.setAbility('simple');
17394
+ if (!oldAbility)
17395
+ return oldAbility;
17394
17396
  },
17395
17397
  secondary: null,
17396
17398
  target: "normal",
@@ -22265,16 +22267,12 @@ exports.Moves = {
22265
22267
  return false;
22266
22268
  }
22267
22269
  },
22268
- onHit(pokemon) {
22269
- const oldAbility = pokemon.setAbility('insomnia');
22270
- if (oldAbility) {
22271
- this.add('-ability', pokemon, 'Insomnia', '[from] move: Worry Seed');
22272
- if (pokemon.status === 'slp') {
22273
- pokemon.cureStatus();
22274
- }
22275
- return;
22276
- }
22277
- return oldAbility;
22270
+ onHit(target, source) {
22271
+ const oldAbility = target.setAbility('insomnia');
22272
+ if (!oldAbility)
22273
+ return oldAbility;
22274
+ if (target.status === 'slp')
22275
+ target.cureStatus();
22278
22276
  },
22279
22277
  secondary: null,
22280
22278
  target: "normal",