Commit Graph

252 Commits

Author SHA1 Message Date
Guangcong Luo
ba4e9870d4 Fix getChoice
It now returns a valid choice string for Team Preview choices.
2018-01-29 20:59:52 -06:00
Guangcong Luo
4c0699abc6 Implement inputLog
A battle's inputLog is now stored separately from the output log. It's
not an exact log of inputs, but rather just a collection of the inputs
that resulted in the battle: a default choice expands to the choice
that was actually used, and the starting seed is logged whether or not
it was explicitly passed into the battle stream.

Fixes #4348

Fixes #3201
2018-01-28 21:23:06 -06:00
Ricky Amparo
8e12a7ffd0 Tests: Refactor more tests to use makeChoices() (#4325) 2018-01-24 14:56:58 -06:00
Dan Huang
9c37960ab6 Use PRNG in sim/ files (#4365) 2018-01-24 12:27:07 -06:00
Guangcong Luo
72d4f73160 Improve seed-passing experience in test API
Now, seeds are passed as arrays, rather than needing to pass an entire
PRNG object. In addition, they're now passed in the options object,
instead of as a separate argument.

This is done mostly so the Miracle Eye can be rewritten with a custom
seed, which requires fewer turns and should overall be faster. Which
was in turn done because a Miracle Eye timed out on Travis CI earlier.
Overall, the speed increase is pretty negligible, so this is mostly
just about improving the test API.
2018-01-18 03:31:13 -06:00
urkerab
99d682ca26 Change lastMove from a string to a Move (#4298) 2018-01-03 11:54:35 -06:00
Kris Johnson
238ac1fdd7 Refactor old gens to for...of (#4274) 2017-12-23 21:46:04 -06:00
MacChaeger
8d571be74e Fix certain Abilities not being overwritten by most forme changes (#4245) 2017-12-14 11:45:12 -05:00
Guangcong Luo
f403a5d3ea Refactor some forEach to for...of 2017-12-12 14:50:08 -06:00
Marty-D
4d3440fedb
Tests: Fix Clangorous Soulblaze choices 2017-12-11 21:27:55 -05:00
urkerab
dc3945ff86 Protect should not affect Clangorous Soulblaze's other target (#4237)
Closes #4232
2017-12-11 09:02:24 -05:00
MacChaeger
d2a419d2be Update Stomping Tantrum's description (#4231) 2017-12-10 16:18:53 -05:00
MacChaeger
0d10cfcf03 Add test for Recharge -> Stomping Tantrum (#4223) 2017-12-07 22:58:50 -05:00
MacChaeger
801883c53a Implement Stomping Tantrum (#4175) 2017-12-07 18:36:19 -06:00
Guangcong Luo
ead4ffff64 Sky Drop only makes contact on the way down 2017-12-06 12:05:42 -06: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
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
70a5f3cf6d Fix Pursuit KO canceling a switch in Gen 3 2017-12-02 08:27:44 -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
Guangcong Luo
eb9836d4d1 Test faint order 2017-12-01 13:06:01 -06:00
Guangcong Luo
7773253c3a Test Future Sight 2017-12-01 13:05:57 -06:00
The Immortal
9a5ee1983e Make Inverse Battle test work without a format 2017-12-01 23:11:31 +08:00
Guangcong Luo
e73cd9dbc2 Update Healing Wish test summary 2017-11-30 11:00:15 -06:00
Guangcong Luo
8473c3f4fa Improve test engine
New functions:

battle.makeChoices([side 1], [side 2]);

Intended to be a replacement for the previous .choose/.commitDecisions
API.

If we can get all the test code on it, we can maybe finally actually
deprecate LEGACY_API_DO_NOT_USE.

It's now used in Healing Wish, where I think it makes a very readable
test.
2017-11-30 10:56:01 -06:00
Guangcong Luo
97d773226a Support switching to pokemon by name 2017-11-30 10:56:01 -06:00
Guangcong Luo
80c9a7c5a1 Fix Healing Wish properly
Broken in #4120
2017-11-30 10:39:21 -06:00
Guangcong Luo
901ff2bd4d Fix Gen 4 Healing Wish and Lunar Dance
...?????

Has this code ever worked in the past?
2017-11-29 21:24:36 -06:00
Guangcong Luo
eb6748048d Fix Magic Guard Mind Blown
Fixes #4172
2017-11-22 02:54:40 -06:00
MacChaeger
4d95bb2ed9 Dancer shouldn't copy moves that did nothing (#4101) 2017-11-17 17:41:34 -06:00
Guangcong Luo
e716e9edc7 Implement Ultra Burst 2017-11-17 00:01:09 -06:00
MacChaeger
06e03e3431 Parting Shot shouldn't switch if it doesn't change stats (#4105) 2017-11-13 22:23:20 -05:00
MacChaeger
6f82808c34 Fix clearing volatiles (#4120) 2017-11-12 22:09:52 -05:00
QuiteQuiet
5cf4066897 Tests: Add Sitrus Berry tests (#4073) 2017-10-21 09:29:22 -04:00
Marty-D
312f93c47c Revert "Fix confusion interaction with HP-checking items (#4045)"
This reverts commit
6651c5dadb.
2017-10-20 21:05:49 -04:00
QuiteQuiet
6651c5dadb Fix confusion interaction with HP-checking items (#4045) 2017-10-17 09:26:27 -04:00
Insist
fc59f4c628 Tests: Moltres doesn't get Intimidate (#4061)
Minor improvement
2017-10-15 19:13:30 +04:00
Guangcong Luo
ccac3add6e Make eslint rules stricter 2017-10-08 04:41:11 -05:00
Guangcong Luo
839e9d1a83 Force linebreaks at the ends of files 2017-10-08 03:05:29 -05:00
Guangcong Luo
4098383f65 Fix Gen 2 paralysis Spe 2017-10-07 23:39:56 -05:00
MacChaeger
a759b8910b Fix Reflect Type vs. Pokemon with the "???" type (#4039) 2017-10-06 15:24:04 -05:00
MacChaeger
05cdd33542 Fix Dancer activation order (#4009) 2017-09-23 20:17:00 -04:00
Guangcong Luo
0646743a6d Sim: Check Protect/etc before type immunities in gen 7
TryHit effects, like Protect, Lightningrod, Magic Bounce, etc now
activate before type immunities, rather than after.
2017-09-05 09:36:18 -04:00
Guangcong Luo
eb6fe5ce41 Improve tests 2017-07-25 03:25:25 -04:00
Guangcong Luo
3b4d8b3ff0 Split random-teams.js out of scripts.js
Random team generation scripts are no longer in scripts.js, but instead
in a new file random-teams.js.

The scripts are now also no longer run from inside battles, but in a
new team generator object. This makes it easier for external scripts
to generate random teams by running Dex.generateTeam(format).
2017-07-25 02:59:59 -04:00
HoeenHero
54f957875e [Gen 3] Random Battles (#3760) 2017-07-10 23:35:26 +04:00
Ben Davies
0e736074a9 Tests: refactor test/main.js, remove test/simulator/index.js (#3565)
- The before hook in test/main.js has no reason to be handled
asynchronously when nothing it handles is async
- test/simulator/index.js has no reason to exist when mocha.opts
already handles finding files to test
2017-06-02 01:21:47 -05:00
Guangcong Luo
cd3ac06987 Fix Hail/Sandstorm damage regression
(Also add a test for it since this isn't even the first time this
exact regression has happened.)
2017-05-18 06:29:25 -05:00
HoeenHero
36b56f5c44 Finish renaming tools to dex (#3526) 2017-05-12 17:11:30 -05:00
Guangcong Luo
6dd58b40d3 Refactor simulator into new sim/ directory
This is a surprisingly minor refactor considering how many files it
touches, but most of this is only renames.

In terms of file renames:
- `tools.js` is now `sim/dex.js`
- `battle-engine.js` is now `sim/index.js` and its three classes are
  in `sim/battle.js`, `sim/side.js`, and `sim/pokemon.js`
- `prng.js` is now `sim/prng.js`

In terms of variable renames:
- `Tools` is now `Dex`
- `BattleEngine` is now `Sim`
- `BattleEngine.Battle` is now `Sim.Battle`
- `BattleEngine.BattleSide` is now `Sim.Side`
- `BattleEngine.BattlePokemon` is now `Sim.Pokemon`
2017-05-05 16:48:38 -05:00
Guangcong Luo
fcccc2cff0 Rename Battle#on to Battle#onEvent
Battle will soon be a Node.js Stream, which has an .on() function,
which Battle#on would conflict with.

PS events aren't Node events, so naming a PS event function .on()
was kind of misleading anyway.
2017-05-05 16:48:38 -05:00