Commit Graph

1186 Commits

Author SHA1 Message Date
Guangcong Luo
e3ebf2b3c1 Fix Z-caller Weather Ball interaction 2018-10-11 12:54:45 -05:00
Guangcong Luo
affcad7873 Improve documentation of isZ vs isZPowered
move.zPowered is renamed move.isZPowered. It's now documented in JSDoc
exactly how it differs from move.isZ.

This commit includes several minor refactors to Z-move mechanics,
including a bug fix: Z-boosted called Weather Ball is now correctly
typed.
2018-10-10 18:44:05 -05:00
Guangcong Luo
ecb27edb4d
Introduce ActiveMove; make some types read-only (#4902)
The types Template, Move, Ability, and Item are now read-only. This
should guard against accidental writing to types that shouldn't be
written to.

A new type, ActiveMove, has been introduced. Like it sounds, it's
used for moves that are currently actively being used. A lot of
attributes that are only relevant to active moves, such as
`hasBounced`, are now only available on ActiveMove, not on Move.
ActiveMoves are mutable, unlike Moves.

getMoveCopy has been renamed getActiveMove, to better reflect its
role. `isCopy` has been deprecated, and distinguishing Moves from
ActiveMoves is now done by `typeof move.hit === 'number'` where
necessary.

ActiveMoves now internally track which hit of a multihit move
they're on, in move.hit, so move.hit doesn't need to be manually
incremented by Triple Kick and Parental Bond anymore.

move.hasParentalBond has been replaced by a more generic
move.multihitType.
2018-10-10 16:04:35 -05:00
Quinton Lee
94016f6218 Update Typescript to 3.1 (#4879) 2018-10-05 04:02:54 -05:00
Marty-D
8e4f83778f Gen VI-VII: Update breaking protection 2018-09-24 13:56:59 -04:00
Marty-D
733ea72d4f Make a move fail if the target is the user and it's not self-target 2018-09-03 11:24:38 -04:00
urkerab
62911d3035 Make Dancer copy the called Dance move (#4807) 2018-08-12 21:15:02 -04:00
MacChaeger
82c792f82c Update to TypeScript 3.0.1 (#4710) 2018-08-07 03:27:28 +09:00
Marty-D
538ac5ca55 Fix protection interaction with Z-Powered Z-Moves 2018-06-30 16:34:35 -04:00
Marty-D
d46abff4da
Make sure AfterMove effects use the correct move 2018-06-27 15:41:30 +00:00
MacChaeger
08ba5bc831 Make formeChange handle relevant messages and ability changes (#4654) 2018-05-23 19:55:05 -04:00
MacChaeger
1be208916a Improve Stomping Tantrum interaction with Protect (#4680) 2018-05-21 22:39:30 -04:00
Marty-D
2ab375f3cc Implement Truant correctly 2018-05-17 20:31:19 -04:00
MacChaeger
3b54f1d0c1 Fix Baton Pass fail message (#4637) 2018-05-02 18:47:54 -05:00
Guangcong Luo
8636ab1840 Remove eslint no-undef-init rule 2018-04-27 22:03:00 -05:00
MacChaeger
c6806c84ff Fix Defog and Splash-likes being erroneously counted as failures (#4627) 2018-04-27 21:59:52 -05:00
MacChaeger
711a0d4ce4 Check semi-invulnerability before immunities (#4574) 2018-04-14 10:27:45 -04:00
Ivo Julca
da4a8b72ce Fix: Preserve pranksterBoosted for Status moves overriden into other moves
So if a Prankster-mon chooses in two successive turns an attacking move and an Status move,
and this Pokémon is encored into the attacking move before the Status move proceeds,
the attacking move will be used and it won't affect a Dark-type target.
2018-04-06 05:09:47 -05:00
MacChaeger
054c545c05 Fix Prankster interaction with bounced/encored moves (#4533) 2018-04-01 22:23:43 -04:00
Quinton Lee
c799393710 Typescript data/ and config/formats (#4513)
Also removes Battle Factory methods accidentally re-added in d0a4a689a7
2018-03-26 09:50:51 -05:00
KrisXV
d0a4a689a7 Refactor data/ and mafia.js to for...of (#4490) 2018-03-23 18:51:52 -07:00
Matthew Glazar
81208685d1 Refactor some code to use sample
Mechanically refactor code which uses PRNG#random to calculate a random
array index to use PRNG#sample instead.
2018-03-12 05:53:33 +09:00
urkerab
46f3683a3a Fix Z-Power behaviour while Transformed into Ultra (#4479) 2018-03-11 00:01:50 +08:00
Matthew Glazar
df5988bacf Refactor some code to use randomChance
Mechanically refactor code which uses PRNG#random for booleans to use
PRNG#randomChance instead.

Take advantage of the following properties:

    random(x) < y        is equivalent to   randomChance(y, x)
    random(x) <= y       is equivalent to   random(x) < (y + 1), i.e. randomChance(y + 1, x)
    random(x) >= y       is equivalent to   !(random(x) < y), i.e. !randomChance(y, x)
    random(x) > y        is equivalent to   random(x) >= (y + 1), i.e. !randomChance(y + 1, x)
    random(x) === 0      is equivalent to   random(x) < 1, i.e. randomChance(1, x)
    !random(x)           is equivalent to   random(x) === 0, i.e. randomChance(1, x)
    Boolean(random(x))   is equivalent to   random(x) > 0, i.e. !randomChance(1, x)

This commit should not change behaviour. In particular, PRNG#next is
called the same number of times with the same number of parameter as
before this commit, and PRNG#next's results are interpreted in the same
way as before this commit.
2018-03-08 20:11:33 +09:00
Marty-D
055666dc02 Fix recoil damage source 2018-02-16 22:02:35 -05:00
urkerab
30cd0b4125 Make Pressure work in Shared Power (#4398) 2018-02-02 23:15:05 -05:00
urkerab
ef005d3076 Fix Protective Pads interaction with Spectral Thief (#4389)
Specifically, stat boosts gained are from the user, not the target.
2018-01-30 14:46:11 -05:00
urkerab
396fda7adf Fix Z-Power interaction with called Status moves (#4291)
Latest research (http://www.smogon.com/forums/posts/7625046/) shows that although Z-Synthesis bypasses Heal Block, using Z-Copycat to copy Synthesis does not. (Z-Copycat on a damaging move does of course turn into a damaging Z-Move.)
2018-01-17 08:57:37 -05:00
Marty-D
2c9f8ba45f Fix multi-hit Mind Blown again
Went missing in
801883c53a
2017-12-19 09:51:40 -05:00
Marty-D
3ff22dcf2f
Fix Mega Evolution behaviour 2017-12-14 12:43:39 -05:00
MacChaeger
8d571be74e Fix certain Abilities not being overwritten by most forme changes (#4245) 2017-12-14 11:45:12 -05:00
MacChaeger
fae30ca078 Dancer shouldn't activate after the battle has ended (#4240) 2017-12-11 16:21:01 -05:00
urkerab
dc3945ff86 Protect should not affect Clangorous Soulblaze's other target (#4237)
Closes #4232
2017-12-11 09:02:24 -05:00
Guangcong Luo
958c5087fc Revert "Protect should not affect Clangorous Soulblaze's other target (#4230)"
This reverts commit e8a7fa98d5.
2017-12-10 02:26:29 -05:00
urkerab
e8a7fa98d5 Protect should not affect Clangorous Soulblaze's other target (#4230) 2017-12-09 21:09:11 -06:00
MacChaeger
801883c53a Implement Stomping Tantrum (#4175) 2017-12-07 18:36:19 -06:00
Guangcong Luo
53ee56ff3b Fix Mega Rayquaza mega evolution 2017-12-06 20:09:13 -06:00
Marty-D
f443d1a213
Fix Mega Evolution for Rayquaza 2017-12-06 17:57:10 -05:00
Guangcong Luo
c0da44c482 Refactor moveset -> moveSlots
pokemon.moveset is now pokemon.moveSlots, which is at least slightly
clearer about what it's doing (tracking move state, mainly PP).

Mostly, this gives a consistent naming scheme for `move` (a Move
object) vs `moveSlot` (a MoveSlot object).

This also refactors a lot of existing `moveSlot` accesses to be modern,
including using `for...of`.
2017-12-05 11:12:44 -06:00
Guangcong Luo
08d079037d Pass source effect of switches to client
We are now tracking source effects for switch actions, if they're
initiated by effects such as U-turn or Baton Pass. This will lead
to better messages client-side.
2017-12-04 19:14:13 -06:00
Guangcong Luo
f3dbfbe685 Refactor Decision -> Action
"Decision" and "Choice" were always kind of unclear, so Decision is now
Action. It should now be a lot clearer.

Actions are also now strongly typed.
2017-12-02 11:34:55 -06:00
Guangcong Luo
1ac2745c3e Refactor Pursuit hack
Pursuit no longer uses `moveThisTurn`, but rather `willMove`, which
involves significantly fewer Pursuit hacks.
2017-12-01 15:59:13 -06:00
urkerab
cebac2b5bb Dancer should activate during other two-turn moves (#4186) 2017-11-26 17:13:17 -05:00
Marty-D
f849ea0415 Fix Mind Blown again 2017-11-21 09:32:06 -05:00
Guangcong Luo
cfcbbf19b6 Battles: |-mega| before |detailschange|
This mostly makes the mega evolution message more readable, especially
in Fast replays.
2017-11-21 07:49:05 -05:00
MacChaeger
4d95bb2ed9 Dancer shouldn't copy moves that did nothing (#4101) 2017-11-17 17:41:34 -06:00
Marty-D
33be9cc5a5 Fix spread moves' self-boost behaviour 2017-11-17 18:13:19 -05:00
Marty-D
ee18392b57
Swap Ultra Burst messages 2017-11-17 13:37:50 -05:00
Marty-D
91712024ff Fix Mind Blown behaviour when multi-hit or multi-target 2017-11-17 11:00:58 -05:00
Guangcong Luo
e716e9edc7 Implement Ultra Burst 2017-11-17 00:01:09 -06:00