OneHitKO isn't breaking a substitute, so working my through the different Move traits adapting them to the new MR/MRB and to substitutes
Update SelfStatChange for new MRB
Update EnemyStatChange for new MRB
Update OneHitKO to get substitute-break test passing, then update SingleStrikeLoseHPOnMiss... all traits good to go
Nice introduction to the Move architecture, basic formatting stuff in LearnsetData
Continue shoveling Moves from moves_cut into ActualMoves and transfering listings from moves.txt to moves_implemented.txt
Lots of SpecialMove implementations; take more traits into account
Makes lines shorter, and move the bug/glitch Booleans into standalone object Glitch
Change the FocusEnergy crithit to use Glitch object instead of Battle object
Change CONFUSION to Confused, since there's a move called Confusion that I implemented and it was complaining/warning about conflicting names
Lots of documentation, make things use MRB.processTakeDamageResult, and implement a couple more traits that serve a couple moves each
Add processTakeDamageResult to replace a few lines of code that were popping up in most Move traits
Change trait Psychic to PsychicT to avoid namespace conflict with Move Psychic; clarify testing TODOs