@pkmn/sim 0.9.30 → 0.9.31

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 +58 -43
  2. package/build/cjs/config/formats.js.map +1 -1
  3. package/build/cjs/data/abilities.js +41 -41
  4. package/build/cjs/data/abilities.js.map +1 -1
  5. package/build/cjs/data/aliases.js +2 -2
  6. package/build/cjs/data/aliases.js.map +1 -1
  7. package/build/cjs/data/conditions.js +20 -20
  8. package/build/cjs/data/conditions.js.map +1 -1
  9. package/build/cjs/data/formats-data.js +1 -1
  10. package/build/cjs/data/items.js +5 -5
  11. package/build/cjs/data/items.js.map +1 -1
  12. package/build/cjs/data/mods/gen1/conditions.js +1 -2
  13. package/build/cjs/data/mods/gen1/conditions.js.map +1 -1
  14. package/build/cjs/data/mods/gen1/moves.js +2 -2
  15. package/build/cjs/data/mods/gen1/moves.js.map +1 -1
  16. package/build/cjs/data/mods/gen1/pokedex.js.map +1 -1
  17. package/build/cjs/data/mods/gen1/scripts.js +6 -6
  18. package/build/cjs/data/mods/gen1/scripts.js.map +1 -1
  19. package/build/cjs/data/mods/gen2/conditions.js +2 -2
  20. package/build/cjs/data/mods/gen2/conditions.js.map +1 -1
  21. package/build/cjs/data/mods/gen2/moves.js +3 -3
  22. package/build/cjs/data/mods/gen2/moves.js.map +1 -1
  23. package/build/cjs/data/mods/gen2/rulesets.js.map +1 -1
  24. package/build/cjs/data/mods/gen2/scripts.js +2 -2
  25. package/build/cjs/data/mods/gen2/scripts.js.map +1 -1
  26. package/build/cjs/data/mods/gen3/abilities.js +1 -1
  27. package/build/cjs/data/mods/gen3/abilities.js.map +1 -1
  28. package/build/cjs/data/mods/gen3/conditions.js +1 -1
  29. package/build/cjs/data/mods/gen3/conditions.js.map +1 -1
  30. package/build/cjs/data/mods/gen3/moves.js +5 -5
  31. package/build/cjs/data/mods/gen3/moves.js.map +1 -1
  32. package/build/cjs/data/mods/gen3/scripts.js +2 -2
  33. package/build/cjs/data/mods/gen3/scripts.js.map +1 -1
  34. package/build/cjs/data/mods/gen4/abilities.js +4 -4
  35. package/build/cjs/data/mods/gen4/abilities.js.map +1 -1
  36. package/build/cjs/data/mods/gen4/conditions.js +1 -1
  37. package/build/cjs/data/mods/gen4/conditions.js.map +1 -1
  38. package/build/cjs/data/mods/gen4/items.js +2 -2
  39. package/build/cjs/data/mods/gen4/items.js.map +1 -1
  40. package/build/cjs/data/mods/gen4/moves.js +22 -22
  41. package/build/cjs/data/mods/gen4/moves.js.map +1 -1
  42. package/build/cjs/data/mods/gen4/scripts.js +1 -1
  43. package/build/cjs/data/mods/gen4/scripts.js.map +1 -1
  44. package/build/cjs/data/mods/gen5/abilities.js +1 -1
  45. package/build/cjs/data/mods/gen5/abilities.js.map +1 -1
  46. package/build/cjs/data/mods/gen5/conditions.js +2 -2
  47. package/build/cjs/data/mods/gen5/conditions.js.map +1 -1
  48. package/build/cjs/data/mods/gen5/moves.js +6 -6
  49. package/build/cjs/data/mods/gen5/moves.js.map +1 -1
  50. package/build/cjs/data/mods/gen5/pokedex.js.map +1 -1
  51. package/build/cjs/data/mods/gen6/abilities.js +2 -2
  52. package/build/cjs/data/mods/gen6/abilities.js.map +1 -1
  53. package/build/cjs/data/mods/gen6/moves.js +1 -1
  54. package/build/cjs/data/mods/gen6/moves.js.map +1 -1
  55. package/build/cjs/data/mods/gen6/pokedex.js.map +1 -1
  56. package/build/cjs/data/mods/gen7/abilities.js.map +1 -1
  57. package/build/cjs/data/mods/gen7/moves.js +8 -8
  58. package/build/cjs/data/mods/gen7/moves.js.map +1 -1
  59. package/build/cjs/data/mods/gen7/pokedex.js.map +1 -1
  60. package/build/cjs/data/mods/gen8/abilities.js.map +1 -1
  61. package/build/cjs/data/mods/gen8/moves.js.map +1 -1
  62. package/build/cjs/data/mods/gen8/pokedex.js.map +1 -1
  63. package/build/cjs/data/moves.js +105 -103
  64. package/build/cjs/data/moves.js.map +1 -1
  65. package/build/cjs/data/pokedex.js.map +1 -1
  66. package/build/cjs/data/pokemongo.js.map +1 -1
  67. package/build/cjs/data/rulesets.js +0 -1
  68. package/build/cjs/data/rulesets.js.map +1 -1
  69. package/build/cjs/data/tags.js.map +1 -1
  70. package/build/cjs/data/text/abilities.js.map +1 -1
  71. package/build/cjs/data/text/default.js.map +1 -1
  72. package/build/cjs/data/text/items.js.map +1 -1
  73. package/build/cjs/data/text/moves.js.map +1 -1
  74. package/build/cjs/data/typechart.js.map +1 -1
  75. package/build/cjs/lib/utils.d.ts +5 -5
  76. package/build/cjs/lib/utils.js +21 -11
  77. package/build/cjs/lib/utils.js.map +1 -1
  78. package/build/cjs/sim/battle-actions.js +8 -8
  79. package/build/cjs/sim/battle-actions.js.map +1 -1
  80. package/build/cjs/sim/battle-queue.js +0 -1
  81. package/build/cjs/sim/battle-queue.js.map +1 -1
  82. package/build/cjs/sim/battle-stream.d.ts +3 -2
  83. package/build/cjs/sim/battle-stream.js +1 -1
  84. package/build/cjs/sim/battle-stream.js.map +1 -1
  85. package/build/cjs/sim/battle.d.ts +8 -8
  86. package/build/cjs/sim/battle.js +41 -44
  87. package/build/cjs/sim/battle.js.map +1 -1
  88. package/build/cjs/sim/dex-abilities.js.map +1 -1
  89. package/build/cjs/sim/dex-conditions.js +2 -2
  90. package/build/cjs/sim/dex-conditions.js.map +1 -1
  91. package/build/cjs/sim/dex-data.js +1 -1
  92. package/build/cjs/sim/dex-data.js.map +1 -1
  93. package/build/cjs/sim/dex-formats.d.ts +1 -0
  94. package/build/cjs/sim/dex-formats.js +95 -37
  95. package/build/cjs/sim/dex-formats.js.map +1 -1
  96. package/build/cjs/sim/dex-items.js.map +1 -1
  97. package/build/cjs/sim/dex-moves.js +2 -3
  98. package/build/cjs/sim/dex-moves.js.map +1 -1
  99. package/build/cjs/sim/exported-global-types.d.ts +1 -9
  100. package/build/cjs/sim/field.d.ts +1 -1
  101. package/build/cjs/sim/field.js +3 -3
  102. package/build/cjs/sim/field.js.map +1 -1
  103. package/build/cjs/sim/global-types.d.ts +1 -9
  104. package/build/cjs/sim/pokemon.d.ts +14 -25
  105. package/build/cjs/sim/pokemon.js +21 -22
  106. package/build/cjs/sim/pokemon.js.map +1 -1
  107. package/build/cjs/sim/side.d.ts +105 -11
  108. package/build/cjs/sim/side.js +6 -6
  109. package/build/cjs/sim/side.js.map +1 -1
  110. package/build/cjs/sim/state.d.ts +1 -1
  111. package/build/cjs/sim/state.js +3 -3
  112. package/build/cjs/sim/state.js.map +1 -1
  113. package/build/cjs/sim/team-validator.d.ts +2 -1
  114. package/build/cjs/sim/team-validator.js +37 -27
  115. package/build/cjs/sim/team-validator.js.map +1 -1
  116. package/build/cjs/sim/tools/random-player-ai.d.ts +4 -3
  117. package/build/cjs/sim/tools/random-player-ai.js +6 -7
  118. package/build/cjs/sim/tools/random-player-ai.js.map +1 -1
  119. package/build/cjs/sim/tools/runner.d.ts +2 -2
  120. package/build/cjs/sim/tools/runner.js +1 -1
  121. package/build/cjs/sim/tools/runner.js.map +1 -1
  122. package/build/esm/config/formats.mjs +58 -43
  123. package/build/esm/config/formats.mjs.map +1 -1
  124. package/build/esm/data/abilities.mjs +41 -41
  125. package/build/esm/data/abilities.mjs.map +1 -1
  126. package/build/esm/data/aliases.mjs +2 -2
  127. package/build/esm/data/aliases.mjs.map +1 -1
  128. package/build/esm/data/conditions.mjs +20 -20
  129. package/build/esm/data/conditions.mjs.map +1 -1
  130. package/build/esm/data/formats-data.mjs +1 -1
  131. package/build/esm/data/items.mjs +5 -5
  132. package/build/esm/data/items.mjs.map +1 -1
  133. package/build/esm/data/mods/gen1/conditions.mjs +1 -2
  134. package/build/esm/data/mods/gen1/conditions.mjs.map +1 -1
  135. package/build/esm/data/mods/gen1/moves.mjs +2 -2
  136. package/build/esm/data/mods/gen1/moves.mjs.map +1 -1
  137. package/build/esm/data/mods/gen1/pokedex.mjs.map +1 -1
  138. package/build/esm/data/mods/gen1/scripts.mjs +6 -6
  139. package/build/esm/data/mods/gen1/scripts.mjs.map +1 -1
  140. package/build/esm/data/mods/gen2/conditions.mjs +2 -2
  141. package/build/esm/data/mods/gen2/conditions.mjs.map +1 -1
  142. package/build/esm/data/mods/gen2/moves.mjs +3 -3
  143. package/build/esm/data/mods/gen2/moves.mjs.map +1 -1
  144. package/build/esm/data/mods/gen2/rulesets.mjs.map +1 -1
  145. package/build/esm/data/mods/gen2/scripts.mjs +2 -2
  146. package/build/esm/data/mods/gen2/scripts.mjs.map +1 -1
  147. package/build/esm/data/mods/gen3/abilities.mjs +1 -1
  148. package/build/esm/data/mods/gen3/abilities.mjs.map +1 -1
  149. package/build/esm/data/mods/gen3/conditions.mjs +1 -1
  150. package/build/esm/data/mods/gen3/conditions.mjs.map +1 -1
  151. package/build/esm/data/mods/gen3/moves.mjs +5 -5
  152. package/build/esm/data/mods/gen3/moves.mjs.map +1 -1
  153. package/build/esm/data/mods/gen3/scripts.mjs +2 -2
  154. package/build/esm/data/mods/gen3/scripts.mjs.map +1 -1
  155. package/build/esm/data/mods/gen4/abilities.mjs +4 -4
  156. package/build/esm/data/mods/gen4/abilities.mjs.map +1 -1
  157. package/build/esm/data/mods/gen4/conditions.mjs +1 -1
  158. package/build/esm/data/mods/gen4/conditions.mjs.map +1 -1
  159. package/build/esm/data/mods/gen4/items.mjs +2 -2
  160. package/build/esm/data/mods/gen4/items.mjs.map +1 -1
  161. package/build/esm/data/mods/gen4/moves.mjs +22 -22
  162. package/build/esm/data/mods/gen4/moves.mjs.map +1 -1
  163. package/build/esm/data/mods/gen4/scripts.mjs +1 -1
  164. package/build/esm/data/mods/gen4/scripts.mjs.map +1 -1
  165. package/build/esm/data/mods/gen5/abilities.mjs +1 -1
  166. package/build/esm/data/mods/gen5/abilities.mjs.map +1 -1
  167. package/build/esm/data/mods/gen5/conditions.mjs +2 -2
  168. package/build/esm/data/mods/gen5/conditions.mjs.map +1 -1
  169. package/build/esm/data/mods/gen5/moves.mjs +6 -6
  170. package/build/esm/data/mods/gen5/moves.mjs.map +1 -1
  171. package/build/esm/data/mods/gen5/pokedex.mjs.map +1 -1
  172. package/build/esm/data/mods/gen6/abilities.mjs +2 -2
  173. package/build/esm/data/mods/gen6/abilities.mjs.map +1 -1
  174. package/build/esm/data/mods/gen6/moves.mjs +1 -1
  175. package/build/esm/data/mods/gen6/moves.mjs.map +1 -1
  176. package/build/esm/data/mods/gen6/pokedex.mjs.map +1 -1
  177. package/build/esm/data/mods/gen7/abilities.mjs.map +1 -1
  178. package/build/esm/data/mods/gen7/moves.mjs +8 -8
  179. package/build/esm/data/mods/gen7/moves.mjs.map +1 -1
  180. package/build/esm/data/mods/gen7/pokedex.mjs.map +1 -1
  181. package/build/esm/data/mods/gen8/abilities.mjs.map +1 -1
  182. package/build/esm/data/mods/gen8/moves.mjs.map +1 -1
  183. package/build/esm/data/mods/gen8/pokedex.mjs.map +1 -1
  184. package/build/esm/data/moves.mjs +105 -103
  185. package/build/esm/data/moves.mjs.map +1 -1
  186. package/build/esm/data/pokedex.mjs.map +1 -1
  187. package/build/esm/data/pokemongo.mjs.map +1 -1
  188. package/build/esm/data/rulesets.mjs +0 -1
  189. package/build/esm/data/rulesets.mjs.map +1 -1
  190. package/build/esm/data/tags.mjs.map +1 -1
  191. package/build/esm/data/text/abilities.mjs.map +1 -1
  192. package/build/esm/data/text/default.mjs.map +1 -1
  193. package/build/esm/data/text/items.mjs.map +1 -1
  194. package/build/esm/data/text/moves.mjs.map +1 -1
  195. package/build/esm/data/typechart.mjs.map +1 -1
  196. package/build/esm/lib/utils.d.mts +5 -5
  197. package/build/esm/lib/utils.mjs +21 -11
  198. package/build/esm/lib/utils.mjs.map +1 -1
  199. package/build/esm/sim/battle-actions.mjs +8 -8
  200. package/build/esm/sim/battle-actions.mjs.map +1 -1
  201. package/build/esm/sim/battle-queue.mjs +0 -1
  202. package/build/esm/sim/battle-queue.mjs.map +1 -1
  203. package/build/esm/sim/battle-stream.d.mts +3 -2
  204. package/build/esm/sim/battle-stream.mjs +1 -1
  205. package/build/esm/sim/battle-stream.mjs.map +1 -1
  206. package/build/esm/sim/battle.d.mts +8 -8
  207. package/build/esm/sim/battle.mjs +41 -44
  208. package/build/esm/sim/battle.mjs.map +1 -1
  209. package/build/esm/sim/dex-abilities.mjs.map +1 -1
  210. package/build/esm/sim/dex-conditions.mjs +2 -2
  211. package/build/esm/sim/dex-conditions.mjs.map +1 -1
  212. package/build/esm/sim/dex-data.mjs +1 -1
  213. package/build/esm/sim/dex-data.mjs.map +1 -1
  214. package/build/esm/sim/dex-formats.d.mts +1 -0
  215. package/build/esm/sim/dex-formats.mjs +95 -37
  216. package/build/esm/sim/dex-formats.mjs.map +1 -1
  217. package/build/esm/sim/dex-items.mjs.map +1 -1
  218. package/build/esm/sim/dex-moves.mjs +2 -3
  219. package/build/esm/sim/dex-moves.mjs.map +1 -1
  220. package/build/esm/sim/exported-global-types.d.mts +1 -9
  221. package/build/esm/sim/field.d.mts +1 -1
  222. package/build/esm/sim/field.mjs +3 -3
  223. package/build/esm/sim/field.mjs.map +1 -1
  224. package/build/esm/sim/global-types.d.mts +1 -9
  225. package/build/esm/sim/pokemon.d.mts +14 -25
  226. package/build/esm/sim/pokemon.mjs +21 -22
  227. package/build/esm/sim/pokemon.mjs.map +1 -1
  228. package/build/esm/sim/side.d.mts +105 -11
  229. package/build/esm/sim/side.mjs +6 -6
  230. package/build/esm/sim/side.mjs.map +1 -1
  231. package/build/esm/sim/state.d.mts +1 -1
  232. package/build/esm/sim/state.mjs +3 -3
  233. package/build/esm/sim/state.mjs.map +1 -1
  234. package/build/esm/sim/team-validator.d.mts +2 -1
  235. package/build/esm/sim/team-validator.mjs +37 -27
  236. package/build/esm/sim/team-validator.mjs.map +1 -1
  237. package/build/esm/sim/tools/random-player-ai.d.mts +4 -3
  238. package/build/esm/sim/tools/random-player-ai.mjs +6 -7
  239. package/build/esm/sim/tools/random-player-ai.mjs.map +1 -1
  240. package/build/esm/sim/tools/runner.d.mts +2 -2
  241. package/build/esm/sim/tools/runner.mjs +1 -1
  242. package/build/esm/sim/tools/runner.mjs.map +1 -1
  243. package/package.json +1 -1
@@ -26,7 +26,7 @@ export class Field {
26
26
  status = this.battle.dex.conditions.get(status);
27
27
  if (!sourceEffect && this.battle.effect)
28
28
  sourceEffect = this.battle.effect;
29
- if (!source && this.battle.event && this.battle.event.target)
29
+ if (!source && this.battle.event?.target)
30
30
  source = this.battle.event.target;
31
31
  if (source === 'debug')
32
32
  source = this.battle.sides[0].active[0];
@@ -118,7 +118,7 @@ export class Field {
118
118
  status = this.battle.dex.conditions.get(status);
119
119
  if (!sourceEffect && this.battle.effect)
120
120
  sourceEffect = this.battle.effect;
121
- if (!source && this.battle.event && this.battle.event.target)
121
+ if (!source && this.battle.event?.target)
122
122
  source = this.battle.event.target;
123
123
  if (source === 'debug')
124
124
  source = this.battle.sides[0].active[0];
@@ -172,7 +172,7 @@ export class Field {
172
172
  return this.battle.dex.conditions.getByID(this.terrain);
173
173
  }
174
174
  addPseudoWeather(status, source = null, sourceEffect = null) {
175
- if (!source && this.battle.event && this.battle.event.target)
175
+ if (!source && this.battle.event?.target)
176
176
  source = this.battle.event.target;
177
177
  if (source === 'debug')
178
178
  source = this.battle.sides[0].active[0];
@@ -1 +1 @@
1
- {"version":3,"file":"field.js","sourceRoot":"","sources":["../../../sim/field.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"field.js","sourceRoot":"","sources":["../../../sim/field.ts"],"names":[],"mappings":"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"}
@@ -124,14 +124,6 @@ type ZMoveOptions = ({
124
124
  move: string;
125
125
  target: MoveTarget;
126
126
  } | null)[];
127
- interface DynamaxOptions {
128
- maxMoves: ({
129
- move: string;
130
- target: MoveTarget;
131
- disabled?: boolean;
132
- })[];
133
- gigantamax?: string;
134
- }
135
127
  interface BattleScriptsData {
136
128
  gen: number;
137
129
  }
@@ -145,7 +137,7 @@ interface ModdedBattleActions {
145
137
  canTerastallize?: (this: BattleActions, pokemon: Pokemon) => string | null;
146
138
  canUltraBurst?: (this: BattleActions, pokemon: Pokemon) => string | null;
147
139
  canZMove?: (this: BattleActions, pokemon: Pokemon) => ZMoveOptions | void;
148
- canDynamax?: (this: BattleActions, pokemon: Pokemon, skipChecks?: boolean) => DynamaxOptions | void;
140
+ canDynamax?: (this: BattleActions, pokemon: Pokemon, skipChecks?: boolean) => import('./side').DynamaxOptions | void;
149
141
  forceSwitch?: (this: BattleActions, damage: SpreadMoveDamage, targets: SpreadMoveTargets, source: Pokemon, move: ActiveMove, moveData: ActiveMove, isSecondary?: boolean, isSelf?: boolean) => SpreadMoveDamage;
150
142
  getActiveMaxMove?: (this: BattleActions, move: Move, pokemon: Pokemon) => ActiveMove;
151
143
  getActiveZMove?: (this: BattleActions, move: Move, pokemon: Pokemon) => ActiveMove;
@@ -1,4 +1,5 @@
1
- import { Ability, ActiveMove, AnyObject, Battle, BoostsTable, Condition, DynamaxOptions, Effect, GenderName, ID, Item, Move, PokemonSet, PokemonSlot, Side, SideID, SparseBoostsTable, Species, StatIDExceptHP, StatsExceptHPTable, StatsTable } from './exported-global-types';
1
+ import { Ability, ActiveMove, AnyObject, Battle, BoostsTable, Condition, Effect, GenderName, ID, Item, Move, PokemonSet, PokemonSlot, Side, SideID, SparseBoostsTable, Species, StatIDExceptHP, StatsExceptHPTable, StatsTable } from './exported-global-types';
2
+ import type { DynamaxOptions, PokemonMoveRequestData, PokemonSwitchRequestData } from './side';
2
3
  /** A Pokemon's move slot. */
3
4
  interface MoveSlot {
4
5
  id: ID;
@@ -31,11 +32,12 @@ export declare class Pokemon {
31
32
  readonly battle: Battle;
32
33
  readonly set: PokemonSet;
33
34
  readonly name: string;
35
+ /** `` `${sideid}: ${name}` `` - used to refer to pokemon in the protocol */
34
36
  readonly fullname: string;
35
37
  readonly level: number;
36
38
  readonly gender: GenderName;
37
39
  readonly happiness: number;
38
- readonly pokeball: string;
40
+ readonly pokeball: ID;
39
41
  readonly dynamaxLevel: number;
40
42
  readonly gigantamax: boolean;
41
43
  /** Transform keeps the original pre-transformed Hidden Power in Gen 2-4. */
@@ -51,6 +53,11 @@ export declare class Pokemon {
51
53
  * its field position in multi battles - use `getSlot()` for that.
52
54
  */
53
55
  position: number;
56
+ /**
57
+ * Information about this pokemon visible to opponents when in battle
58
+ * (species, gender, level, shininess, tera state).
59
+ * @see https://github.com/smogon/pokemon-showdown/blob/master/sim/SIM-PROTOCOL.md#identifying-pok%C3%A9mon
60
+ */
54
61
  details: string;
55
62
  baseSpecies: Species;
56
63
  species: Species;
@@ -308,10 +315,10 @@ export declare class Pokemon {
308
315
  * Sky Drop, which remove all choice (no dynamax, switching, etc).
309
316
  * Don't use it for "soft locks" like Choice Band.
310
317
  */
311
- getLockedMove(): string | null;
312
- getMoves(lockedMove?: string | null, restrictData?: boolean): {
318
+ getLockedMove(): ID | null;
319
+ getMoves(lockedMove?: ID | null, restrictData?: boolean): {
313
320
  move: string;
314
- id: string;
321
+ id: ID;
315
322
  disabled?: string | boolean;
316
323
  disabledSource?: string;
317
324
  target?: string;
@@ -321,26 +328,8 @@ export declare class Pokemon {
321
328
  /** This should be passed the base move and not the corresponding max move so we can check how much PP is left. */
322
329
  maxMoveDisabled(baseMove: Move | string): boolean;
323
330
  getDynamaxRequest(skipChecks?: boolean): DynamaxOptions | undefined;
324
- getMoveRequestData(): {
325
- moves: {
326
- move: string;
327
- id: string;
328
- target?: string;
329
- disabled?: string | boolean;
330
- }[];
331
- maybeDisabled?: boolean;
332
- trapped?: boolean;
333
- maybeTrapped?: boolean;
334
- canMegaEvo?: boolean;
335
- canMegaEvoX?: boolean;
336
- canMegaEvoY?: boolean;
337
- canUltraBurst?: boolean;
338
- canZMove?: AnyObject | null;
339
- canDynamax?: boolean;
340
- maxMoves?: DynamaxOptions;
341
- canTerastallize?: string;
342
- };
343
- getSwitchRequestData(forAlly?: boolean): AnyObject;
331
+ getMoveRequestData(): PokemonMoveRequestData;
332
+ getSwitchRequestData(forAlly?: boolean): PokemonSwitchRequestData;
344
333
  isLastActive(): boolean;
345
334
  positiveBoosts(): number;
346
335
  getCappedBoost(boosts: SparseBoostsTable): Partial<BoostsTable>;
@@ -76,7 +76,7 @@ export class Pokemon {
76
76
  }
77
77
  this.speciesState = this.battle.initEffectState({ id: this.species.id });
78
78
  this.name = set.name.substr(0, 20);
79
- this.fullname = this.side.id + ': ' + this.name;
79
+ this.fullname = `${this.side.id}: ${this.name}`;
80
80
  set.level = this.battle.clampIntRange(set.adjustLevel || set.level || 100, 1, 9999);
81
81
  this.level = set.level;
82
82
  const genders = { M: 'M', F: 'F', N: 'N' };
@@ -84,7 +84,7 @@ export class Pokemon {
84
84
  if (this.gender === 'N')
85
85
  this.gender = '';
86
86
  this.happiness = typeof set.happiness === 'number' ? this.battle.clampIntRange(set.happiness, 0, 255) : 255;
87
- this.pokeball = this.set.pokeball || 'pokeball';
87
+ this.pokeball = toID(this.set.pokeball) || 'pokeball';
88
88
  this.dynamaxLevel = typeof set.dynamaxLevel === 'number' ? this.battle.clampIntRange(set.dynamaxLevel, 0, 10) : 10;
89
89
  this.gigantamax = this.set.gigantamax || false;
90
90
  this.baseMoveSlots = [];
@@ -101,7 +101,7 @@ export class Pokemon {
101
101
  set.hpType = move.type;
102
102
  move = this.battle.dex.moves.get('hiddenpower');
103
103
  }
104
- let basepp = (move.noPPBoosts || move.isZ) ? move.pp : move.pp * 8 / 5;
104
+ let basepp = move.noPPBoosts ? move.pp : move.pp * 8 / 5;
105
105
  if (this.battle.gen < 3)
106
106
  basepp = Math.min(61, basepp);
107
107
  this.baseMoveSlots.push({
@@ -252,15 +252,15 @@ export class Pokemon {
252
252
  name = this.species.baseSpecies;
253
253
  if (!level)
254
254
  level = this.level;
255
- return name + (level === 100 ? '' : ', L' + level) +
256
- (this.gender === '' ? '' : ', ' + this.gender) + (this.set.shiny ? ', shiny' : '');
255
+ return name + (level === 100 ? '' : `, L${level}`) +
256
+ (this.gender === '' ? '' : `, ${this.gender}`) + (this.set.shiny ? ', shiny' : '');
257
257
  }
258
258
  updateSpeed() {
259
259
  this.speed = this.getActionSpeed();
260
260
  }
261
261
  calculateStat(statName, boost, modifier, statUser) {
262
262
  statName = toID(statName);
263
- // @ts-ignore - type checking prevents 'hp' from being passed, but we're paranoid
263
+ // @ts-expect-error type checking prevents 'hp' from being passed, but we're paranoid
264
264
  if (statName === 'hp')
265
265
  throw new Error("Please read `maxhp` directly");
266
266
  // base stat
@@ -296,7 +296,7 @@ export class Pokemon {
296
296
  }
297
297
  getStat(statName, unboosted, unmodified) {
298
298
  statName = toID(statName);
299
- // @ts-ignore - type checking prevents 'hp' from being passed, but we're paranoid
299
+ // @ts-expect-error type checking prevents 'hp' from being passed, but we're paranoid
300
300
  if (statName === 'hp')
301
301
  throw new Error("Please read `maxhp` directly");
302
302
  // base stat
@@ -653,13 +653,13 @@ export class Pokemon {
653
653
  for (const moveSlot of this.moveSlots) {
654
654
  let moveName = moveSlot.move;
655
655
  if (moveSlot.id === 'hiddenpower') {
656
- moveName = 'Hidden Power ' + this.hpType;
656
+ moveName = `Hidden Power ${this.hpType}`;
657
657
  if (this.battle.gen < 6)
658
- moveName += ' ' + this.hpPower;
658
+ moveName += ` ${this.hpPower}`;
659
659
  }
660
660
  else if (moveSlot.id === 'return' || moveSlot.id === 'frustration') {
661
661
  const basePowerCallback = this.battle.dex.moves.get(moveSlot.id).basePowerCallback;
662
- moveName += ' ' + basePowerCallback(this);
662
+ moveName += ` ${basePowerCallback(this)}`;
663
663
  }
664
664
  let target = moveSlot.target;
665
665
  switch (moveSlot.id) {
@@ -815,11 +815,11 @@ export class Pokemon {
815
815
  },
816
816
  moves: this[forAlly ? 'baseMoves' : 'moves'].map(move => {
817
817
  if (move === 'hiddenpower') {
818
- return move + toID(this.hpType) + (this.battle.gen < 6 ? '' : this.hpPower);
818
+ return `${move}${toID(this.hpType)}${this.battle.gen < 6 ? '' : this.hpPower}`;
819
819
  }
820
820
  if (move === 'frustration' || move === 'return') {
821
821
  const basePowerCallback = this.battle.dex.moves.get(move).basePowerCallback;
822
- return move + basePowerCallback(this);
822
+ return `${move}${basePowerCallback(this)}`;
823
823
  }
824
824
  return move;
825
825
  }),
@@ -921,8 +921,9 @@ export class Pokemon {
921
921
  const species = pokemon.species;
922
922
  if (pokemon.fainted || this.illusion || pokemon.illusion || (pokemon.volatiles['substitute'] && this.battle.gen >= 5) ||
923
923
  (pokemon.transformed && this.battle.gen >= 2) || (this.transformed && this.battle.gen >= 5) ||
924
- species.name === 'Eternatus-Eternamax' || (['Ogerpon', 'Terapagos'].includes(species.baseSpecies) &&
925
- (this.terastallized || pokemon.terastallized)) || this.terastallized === 'Stellar') {
924
+ species.name === 'Eternatus-Eternamax' ||
925
+ (['Ogerpon', 'Terapagos'].includes(species.baseSpecies) && (this.terastallized || pokemon.terastallized)) ||
926
+ this.terastallized === 'Stellar') {
926
927
  return false;
927
928
  }
928
929
  if (this.battle.dex.currentMod === 'gen1stadium' && (species.name === 'Ditto' ||
@@ -1300,7 +1301,7 @@ export class Pokemon {
1300
1301
  return;
1301
1302
  if (d < 1)
1302
1303
  d = 1;
1303
- d = d - this.hp;
1304
+ d -= this.hp;
1304
1305
  this.hp += d;
1305
1306
  if (this.hp > this.maxhp) {
1306
1307
  d -= this.hp - this.maxhp;
@@ -1344,8 +1345,7 @@ export class Pokemon {
1344
1345
  }
1345
1346
  return false;
1346
1347
  }
1347
- if (!ignoreImmunities && status.id &&
1348
- !(source?.hasAbility('corrosion') && ['tox', 'psn'].includes(status.id))) {
1348
+ if (!ignoreImmunities && status.id && !(source?.hasAbility('corrosion') && ['tox', 'psn'].includes(status.id))) {
1349
1349
  // the game currently never ignores immunities
1350
1350
  if (!this.runStatusImmunity(status.id === 'tox' ? 'psn' : status.id)) {
1351
1351
  this.battle.debug('immune to status');
@@ -1407,7 +1407,7 @@ export class Pokemon {
1407
1407
  return false;
1408
1408
  if (!sourceEffect && this.battle.effect)
1409
1409
  sourceEffect = this.battle.effect;
1410
- if (!source && this.battle.event && this.battle.event.target)
1410
+ if (!source && this.battle.event?.target)
1411
1411
  source = this.battle.event.target;
1412
1412
  const item = this.getItem();
1413
1413
  if (sourceEffect?.effectType === 'Item' && this.item !== sourceEffect.id && source === this) {
@@ -1448,7 +1448,7 @@ export class Pokemon {
1448
1448
  return false;
1449
1449
  if (!sourceEffect && this.battle.effect)
1450
1450
  sourceEffect = this.battle.effect;
1451
- if (!source && this.battle.event && this.battle.event.target)
1451
+ if (!source && this.battle.event?.target)
1452
1452
  source = this.battle.event.target;
1453
1453
  const item = this.getItem();
1454
1454
  if (sourceEffect?.effectType === 'Item' && this.item !== sourceEffect.id && source === this) {
@@ -1458,7 +1458,7 @@ export class Pokemon {
1458
1458
  if (this.battle.runEvent('UseItem', this, null, null, item)) {
1459
1459
  switch (item.id) {
1460
1460
  case 'redcard':
1461
- this.battle.add('-enditem', this, item, '[of] ' + source);
1461
+ this.battle.add('-enditem', this, item, `[of] ${source}`);
1462
1462
  break;
1463
1463
  default:
1464
1464
  if (item.isGem) {
@@ -1568,8 +1568,7 @@ export class Pokemon {
1568
1568
  }
1569
1569
  this.battle.singleEvent('End', this.battle.dex.abilities.get(oldAbility), this.abilityState, this, source);
1570
1570
  if (this.battle.effect && this.battle.effect.effectType === 'Move' && !isFromFormeChange) {
1571
- this.battle.add('-endability', this, this.battle.dex.abilities.get(oldAbility), '[from] move: ' +
1572
- this.battle.dex.moves.get(this.battle.effect.id));
1571
+ this.battle.add('-endability', this, this.battle.dex.abilities.get(oldAbility), `[from] move: ${this.battle.dex.moves.get(this.battle.effect.id)}`);
1573
1572
  }
1574
1573
  this.ability = ability.id;
1575
1574
  this.abilityState = this.battle.initEffectState({ id: ability.id, target: this });