Changelog

v0.0.46 - 2025-09-30

Features

  • Competitive and defiant - (f2390c6)

  • Moves that always thaw the user - (48dd7e2)

  • Grassyterrain heals grounded pkmn end of turn - (aea6f92)

  • Whiteherb - (43d1048)

  • Wip mega evolving - (52afd77)

  • Accuracy drops affect hit chance - (49caad5)

Bug Fixes

  • Substitute blocks painsplit - (2e86b98)

  • Blunderpolicy bug with boost amounts - (419f780)

  • Roost does not apply volatile at maxhp - (7a8b551)

Refactor

  • If applicable: lum/chesto activate immediately on status apply - (d3b69ec)

  • Refactor python bindings - (4916ce2)

v0.0.45 - 2025-08-13

Features

Bug Fixes

  • Avalanche only boosts if damage was taken - (2f7211b)

  • Compile on newer rust - (f066e52)

v0.0.44 - 2025-08-08

Features

Bug Fixes

  • Being flinched on your first turn sets last used move as none. - (6a7bf43)

  • Moves targetting yourself like protect do not fail in psychicterrain - (31dd0b7)

  • Change i64 to u32 in mcts nodes - (b000f27)

  • Python bindings use u32 as well - (a8d8423)

  • Electroshot does not charge in rain - (7e07546)

Miscellaneous Tasks

  • Add test for partingshot into substitute - (96ce827)

Refactor

  • Refactor end_of_turn_triggered - (9cddbe7)

  • Use usize to index into SidePokemon - (7d185c7)

  • Use u8 instead of usize in Node for s1_choice and s2_choice - (c3a7ff0)

  • Lazily Expand Nodes - (582bb02)

  • Use option instead of raw pointer for s1/s2 options - (186fdf9)

v0.0.43 - 2025-07-16

Features

  • Noretreat prevents switch - (de157e7)

Bug Fixes

  • Protect side condition shouldn’t cause all moves to fail with 1/3 chance next turn - (3ffb8f3)

  • Rest does not work in electricterrain - (500b1ec)

Misc

Refactor

  • Try to remove a volatile instead of check+removing it - (466d603)

v0.0.42 - 2025-04-21

Features

  • Gen1/gen2 have minimum score for pkmn - (5a8d784)

  • Gen3 spikes scaling in eval - (30846bc)

  • Chestoberry - (f31dd11)

  • Taunt durations - (c5cccd9)

Bug Fixes

  • Remove duplicated logic - (48bd679)

  • Only create empty moves while < 4 - (95d744a)

  • Gulpmissile only reverts you to cramorant if gulpmissile is your base ability - (f7cf660)

  • Gen3 pinch berries only activate at end of turn - (288008a)

  • Gen3 move cannot be used without a target - (ecc051c)

  • Gen3 abilities default to none if not present - (b6cf5c4)

  • Pprint stats in debug output - (ad59bc0)

Miscellaneous Tasks

  • Additional gen3 tests - (e1de524)

Misc

  • Test for gen3 intimidate vs clearbody - (a39758e)

Refactor

  • Pretty-print functions go in the state file - (ffc2a0d)

  • Remove MoveTera enum variant from gen1/gen2 - (9d2c18c)

  • Remove can_tera function from gen1/gen2 - (2ebabea)

  • Reduce Instruction enum from 8 to 6 bytes - (0f3294d)

  • Change vector starting capacities - (149fb32)

  • Generation specific things are always in a sub module - (3917131)

  • Split out gen3 into its own module - (ee74388)

  • Move state structs and common functions to top level - (663aa18)

  • Move more out of state.rs into common - (89eb7c6)

v0.0.41 - 2025-04-11

Bug Fixes

  • Gen1 and gen2 also return crit damages - (18e2370)

  • Add some more information to text debugger - (12d72d3)

v0.0.40 - 2025-04-06

Features

v0.0.39 - 2025-04-05

Features

  • Poison and toxic are conditional in evaluation fn - (ca7dd56)

Bug Fixes

  • Protosynthesis and Quarkdrive dissipate when weather/field ends - (9e95564)

  • Undo paralysis evaluation being based on speed - (1b0a889)

Refactor

  • [breaking] Yawn uses VolatileStatusDurations - (fc79e9f)

v0.0.38 - 2025-04-01

Features

Bug Fixes

  • Charge moves are forced when charging - (56b8725)

Refactor

  • Damage calc returns crit damage as well - (1f7fa6d)

v0.0.37 - 2025-03-30

Features

  • Solarblade does not charge in sun - (10f6dc3)

Bug Fixes

  • Toxic count is removed when toxic is removed - (283ec60)

v0.0.36 - 2025-03-20

Bug Fixes

  • Terastallized defender always takes 2x from stellar move - (877b1fc)

  • Terablast stellar reduces offensive stats - (a59857f)

  • Decouple terastallization from gen9 - (ae35600)

v0.0.35 - 2025-03-11

Features

  • Encore durations tracking - (e24af0a)

Bug Fixes

  • Dont evaluate volatiles/boosts if active is dead. put base_ability in gen1/gen2 - (56475d5)

  • Abilities that cancel opponent actions only work if move targets the opponent - (62cba0d)

  • Airballoon only pops when hit by non-status move targetting the holder - (97753d3)

Miscellaneous Tasks

  • Remove unrevealed pkmn logic - (ba5a3d5)

v0.0.34 - 2025-03-08

Features

  • [breaking] Volatile Status Durations - (d388e17)

Bug Fixes

  • Custap berry instruction generation moved to before the turn - (660ff7c)

Miscellaneous Tasks

  • Fix comments to reflect reality - (9dda607)

v0.0.33 - 2025-03-07

Features

  • Proper Side Condition Durations Tracking - (cf792b5)

  • Corrosion - (5cc1ba2)

  • Photongeyser, sunsteelstrike, and moongeistbeam ignore some abilities - (9f974e3)

Bug Fixes

  • Firstimpression in damage calc always assumes it is your first turn on the field - (2a92280)

  • Transformation items cannot be removed - (7438a68)

  • Rustedsword and rustedshield are permanent items - (ccc18d3)

  • Adaptability and STAB with tera - (4b324a9)

  • Check for moldbreaker before doing unaware negation in damage calc - (cdaa6eb)

  • Goodasgold only blocks moves that target the other side - (5fba9d6)

v0.0.32 - 2025-02-27

Features

  • Strengthsap interaction with liquidooze - (0d69c04)

  • Consecutive protect - (fb42c50)

Bug Fixes

  • LeechSeed never affects grass types - (23de644)

  • AssaultVest prevents status moves - (9cbcb06)

  • Toxicspikes and stickyweb are not blocked by magicguard - (92f5b96)

Miscellaneous Tasks

  • Add test to make sure lifeorb into protect does not recoil - (73221a2)

  • Test for whirlwind into goodasgold - (29f7efb)

Misc

  • Add tests to ensure suckerpunch/thunderclap functionality - (28995dc)

v0.0.31 - 2025-02-01

Bug Fixes

  • Magicbounce reflects reflectable volatiles - (6d4bb79)

Miscellaneous Tasks

v0.0.29 - 2025-02-01

Features

  • [breaking] Typechange revert on switchout if types != base_types - (f21af63)

Bug Fixes

  • PartiallyTrapped is removed if the opposing side switches out - (53bfe17)

v0.0.28 - 2025-01-26

Features

  • HealBlock volatile prevents healing moves - (9bec851)

  • Gen1 paralysis cannot be applied from secondary if one of the defender’s types is the same as the move’s type - (74f5ce0)

  • Triplearrows multi secondaries - (5d324d7)

  • Firstimpression - (2730a0b)

  • Cramorant’s GulpMissile - (a276f97)

  • Doubleshock and burnup - (4058439)

  • Endure - (bdf7cf7)

  • Grassyglide - (4f26234)

  • Speed Ties - (d8c7970)

Bug Fixes

  • Iceface lets secondary effects happen - (b2d38b2)

  • Pressure only decrements PP when the move targets the pkmn with pressure - (ee27e7e)

  • Defog fails vs good as gold - (6f62087)

  • Tripleaxel does 40 damage per hit - (e9aa044)

v0.0.27 - 2025-01-12

Features

  • Triple-axel is treated as triple-hit move - (c26f0ab)

  • Implement miracleseed and spelltag - (1672f71)

  • Loadeddice giving 4 hits - (db90a52)

Bug Fixes

  • Dont switch to 0hp pokemon in team preview - (7e9bfab)

  • Re-implement DestinyBond Correctly - (5ed81fc)

  • Gen9 activates tera - (c80439d)

  • Gen7+ hit self in confusion is 1/3 instead of 1/2 - (11fa285)

  • Adaptability and terastallization boost is 2.25 - (3720436)

  • Assaultvest does not lower damage if special move targets defense - (7a1825d)

  • Mycelium might ability ignoring only applies when using status moves - (15b23f1)

  • Clearing all effects of a move gets rid of all flags - (6c46a55)

  • Revelationdance uses tera type if terastallized - (e7cdb76)

  • Terastallization base power floor happens before anything else - (a1e2e47)

  • Tera penalty 50 -> 75 - (5eab0ec)

  • StrengthSap fails at -6 attack on defender - (5f7d149)

Revert

  • Gen1 status eval increases - (f203757)

v0.0.26 - 2025-01-05

Features

  • Gen1 stat modification glitches - (bf08c28)

Bug Fixes

  • Gen4 lifeorb does not do recoil when hitting a substitute - (fc240f6)

  • Thunderclap is increased priority - (32c040a)

v0.0.25 - 2024-12-31

Features

  • Morpeko / MorpekoHangry forme changes - (263260e)

  • Wishiwashi forme change - (4295ef8)

  • Palafin-hero formechange on switchout - (518b96e)

  • Eiscue iceface formechange when getting hit and when switching into snow/hail - (03fdb03)

Bug Fixes

  • Refactor forme change instructions to use PokemonName rather than a formechange enum - (f1f2f0a)

  • Mimikyu busting is conditional on pkmn id being equal to mimikyu - (3c13510)

v0.0.24 - 2024-12-29

Features

  • [breaking] ChangeStat Instructions, Natures & EVs, Minior/MiniorMeteor FormeChange - (6330453)

Bug Fixes

  • Less-than-or-equal for activating berries based on HP - (8f36e81)

  • Formatting - (5c13f9c)

v0.0.23 - 2024-12-28

Features

  • Consider critical strikes - (4cc71a1)

  • Guaranteed Crit moves and BattleArmor / ShellArmor abilities - (942d812)

Bug Fixes

  • Check para/sleep/confusion before “before_move()” - (c1de340)

  • SleepTalk works when a pokemon is asleep without rest - (c041f23)

Revert

  • “fix: Check para/sleep/confusion before “before_move()”” - (7eecfa9)

v0.0.22 - 2024-12-17

Bug Fixes

  • Ghost are immune to counter, not fighting - (168934c)

  • Gen2 counter/mirrorcoat interactions with hiddenpower - (b068ebe)

  • Truant should allow you to use whatever move you want, but not execute that move - (5385c04)

Miscellaneous Tasks

  • Some groundwork for instruction generation on the python side - (446faa2)

v0.0.21 - 2024-12-14

Performance

  • Gen1 evaluation tuning - (d0e6b34)

Miscellaneous Tasks

  • Remove gen2 unused eval values - (ce96591)

v0.0.20 - 2024-12-12

Features

  • Truant and its interaction with recharge moves - (d285b48)

  • Implement damage roll branching for mcts depths 0 and 1 - (7dcdad8)

  • Asoneglastrier / asonespectrier have the effects of chillingneigh / grimneigh - (44145d2)

  • Battlebond gen9 - (05f838d)

Bug Fixes

  • Orbs/globes affect all formes - (f263a05)

Miscellaneous Tasks

  • Remove crate::* usages that my editor liked to insert - (d2aafb3)

v0.0.19 - 2024-12-08

Features

  • Branch if damage is a range to kill - (11e8f32)

  • Force repr for enums defined by define_enum_with_from_str. Implement into() and from() - (84933a6)

  • Gen2 berries: Mint & Miracle - (c3ecd64)

  • Freeze clause gen1/2 - (7406b37)

Bug Fixes

  • Don’t combine duplicate instructions in run_move - (e9a6858)

  • Confusion stopped by substitute - (7df6916)

  • Refactor belly drum to actually work - (a84f3b2)

  • Growth doesnt boost attack in earlier gens - (3df5146)

  • Bellydrum damage instruction should do half HP - (9219ae0)

  • Refactor wish instruction to use 2 bytes less - (5b1573d)

  • Refactor substitute instruction to use 2 bytes less - (a7036d8)

  • Stellar is typeless for dmg calc - (4986805)

Miscellaneous Tasks

  • Readme serialize -> state - (5d3b71d)

  • Add test to make sure pp not decremented when asleep - (4a08839)

v0.0.18 - 2024-12-01

Features

v0.0.17 - 2024-11-28

Features

  • Ogerpon masks cant be removed - (ac16f27)

  • GriseousCore as GriseousOrb clone - (036e011)

  • Allow ‘switch’ to signify switching in damage calc - (db7c22a)

  • Add LUSTROUSGLOBE - (7095f90)

  • Charge 2x electric move - (9743ea0)

  • Implement ADAMANTCRYSTAL - (848de22)

  • Implement aurawheel type switch - (dde8bb2)

  • Implement forme_change instruction - (9ed3888)

  • Implement gen3 stuff - (6c51891)

  • Gen2 support - (27c48cd)

  • Implement thief - (61de20e)

  • Safeguard protects from status if they are coming from the opponent’s move - (b4908ac)

  • Gen2 splitting of code - (83af057)

Bug Fixes

  • Has_type checks tera-type if terastallized - (80dde9b)

  • Hp based ability boosts are less than or equal, not less-than - (b633045)

  • Type_effectiveness_modifier checks tera-type - (def932d)

  • Knockoff damage boost is based on item being permanent - (3b5b578)

  • Supreme overlord should count fainted pkmn - (e64ff95)

  • Some mechanics bugfixes: - (baf31f6)

  • Sheerforce boosted by certain volatiles - (71d3d4d)

  • Imports behind feature - (f940363)

  • Allow switch move when calculating damage through python bindings - (3143d1a)

  • AlluringVoice is a special move (howd that happen lol) - (2586dd5)

  • Lusterpurge bp boost in gen9 - (f66d135)

  • Mistball bp boost gen9 - (0042e7e)

  • Psychic Terrain makes priority moves have no effect - (c9ef19f)

  • Sleep clause shouldn’t count fainted pkmn - (528745c)

  • Change logic to align with the meaning of item_is_permanent - (5d06959)

  • Hardrock -> hardstone - (900edce)

Miscellaneous Tasks

  • Remove remove_low_chance_instructions - (64828d9)

  • Delete 3000 lines of serialization code - (07bd935)

Refactor

  • Create enum for PokemonName - (5e05e6a)

  • Combine before_move and modify_move - (589af92)

v0.0.16 - 2024-11-10

Features

  • [breaking] Implement FutureSight - (37beed5)

  • Implement triattack - (b8bf4e7)

  • Implement population bomb (approximation) and widelens - (ec996e6)

Bug Fixes

  • Using a move that is your tera-type while terastallized makes minimum BP=60 - (20779c2)

v0.0.15 - 2024-11-10

Features

  • Terablast physical/special check and typechange - (fb0de03)

  • Implement magnet - (0cc5594)

  • Implement waterbubble - (a5d4e02)

  • Implement * of ruin abilities - (3ff639e)

  • Implement Protosynthesis / Quarkdrive - (9609f2f)

  • Implement Thermal Exchange - (8ef6572)

  • Implement Toxic Chain - (8235837)

  • Implement WellBakedBody - (86b7999)

  • Add remaining gen9 ignorable abilities - (2eac648)

  • Implement Good as Gold - (2f54eec)

  • Implement Dark immunity to prankster gen7 onward - (a35d909)

Bug Fixes

  • Lightball boosts all pikachu formes - (f93a8bb)

v0.0.14 - 2024-11-09

Features

  • Add remaining gen9 moves - (bf46836)

  • Implement burning bulwark - (05df708)

  • Implement GigatonHammer and Bloodmoon - (955ccc9)

  • Implement electrodrift - (0497bdf)

  • Comeuppance as metalburst clone - (6329438)

  • Implement meteorbeam and electroshot - (526b839)

  • Implement hardpress - (e5bd684)

  • Implement icespinner - (344c1f4)

  • Implement last respects - (476d9b5)

  • Implement mortalspin - (754212a)

  • Implement ragingbull - (e9e80f9)

  • Thunderclap as suckerpunch clone - (4ac9137)

  • Implement tidyup hazard/sub removal - (91f5ba1)

  • Implement upperhand - (c107790)

  • Implement ogerpon masks & ivycudgel - (483bffd)

  • Embody aspect abilities on switchin - (b30099b)

  • [breaking] Terastallization (wip) - (cb3fc51)

Bug Fixes

  • Dont zero-out naturesmadness/ruination if target is immune to normal - thats only for superfang - (8803a7d)

Miscellaneous Tasks

  • Remove unused flags - (272cd0d)

  • Add slicing/wind flags - (8df9a0b)

  • Implement wind rider & sharpness - (e23a473)

  • Check for physical before negative guts burn bp reduction - (86418ad)

v0.0.13 - 2024-10-25

Features

Bug Fixes

  • Fix explosion related moves - (b6a39f6)

Performance

  • Refactor SetDamageDealt instruction - (4974dd6)

Miscellaneous Tasks

  • Add test for ceaselessedge - (e72e45c)

  • Some damage_calc refactoring - (3131bdc)

  • Update pyo3 - (ae4d0d0)

Refactor

  • Add an amount to DecrementPP instruction - (ad972b8)

  • Remove last_used_move & damage_dealt features - (54b48fa)

v0.0.12 - 2024-10-13

Features

  • Implement ArmorTail - (dadad97)

  • Implement ChillingNeigh & GrimNeigh - (64f6848)

  • Implement AuraBreak - (19235b2)

  • Implement Gorilla Tactics - (f4c8c76)

  • Implement GuardDog - (c154be4)

  • Implement Hadron Engine - (f1441cc)

  • Implement Innards Out - (ea2e7ba)

  • Implement Minds Eye - (8931219)

  • Implement Mycelium Might - (b907b89)

  • Implement Neutralizing Gas - (d6cdfc3)

  • Implement PerishBody - (efedf6a)

  • Implement Orichalcum Pulse - (3a29fff)

  • Implement Sand Spit - (ab7fdbe)

  • Implment SteelySpirit - (0e2d72b)

  • Implement toxicdebris - (595420f)

  • Implement Adrenaline Orb - (1987f88)

  • Implement Silvally Memories - (3436ce6)

Performance

  • MCTS Performance Improvements - (efd9b00)

Miscellaneous Tasks

  • Test for eartheater - (bb16559)

  • Implement Seed Sower - (00ec032)

  • Refactor some logic around LastUsedMove - (f4076b1)

v0.0.11 - 2024-09-30

Features

  • [breaking] Proper Sleep Turn Tracking - (2281f7d)

Bug Fixes

  • Fix some interactions around pivot moves - (6fedefa)

Miscellaneous Tasks

  • Fix some compilation warnings around unused variables - (40f3480)

v0.0.10 - 2024-09-29

Features

  • [breaking] Track turns remaining for weather/terrain/trickroom. - (13e9373)

  • Implement ironball - (d834548)

Performance

  • Modify mcts rollout parameter to be the change in evaluation rather than the absolute evaluation - (3fd0072)

Miscellaneous Tasks

  • Add exit-early to release script if git working tree is not clean - (ceb85a1)

v0.0.9 - 2024-09-18

Miscellaneous Tasks

  • Remove from auto publish trigger - (8b1e34b)

  • Refactor release script process - (1250555)

Repo

v0.0.8 - 2024-09-15

Miscellaneous Tasks

  • Some Makefile/Changelog fixes - (3b3f31b)

  • Add release script - (ec2a5b5)

v0.0.7 - 2024-09-15

Features

  • Implement Pickpocket, Magician, and StickyHold Abilities - (d729469)

Miscellaneous Tasks

  • Remove unnecessary return statements - (9c3315b)

0.0.6 - 2024-09-14

Features

  • Implement Yawn - (698a2e6)

  • Implement Haze - (585f25e)

  • Implement ClearSmog statboost-clearing effect - (f95129a)