* SwitchAI makes much smarter mon choices
* Add HasHadOdds check to ShouldSwitch decision
* Remove early return
* Rework Baton Pass check as per discussion with Alex
* Forgot to adjust a comment
* Don't program before breakfast lol (if / else if fix)
* Switch AI_CalcDamage for AI_DATA->simulatedDmg in HasBadOdds
Thanks Alex! :D
* Typo in a hitToKO comparison
* Remove and replace AI_CalcPartyMonBestMoveDamage and IsAiPartyMonOHKOBy from https://github.com/rh-hideout/pokeemerald-expansion/pull/3146
See https://discord.com/channels/419213663107416084/1144447521960251472 for details
* Major refactor, new struct, switchin considers damage / healing from hazards / status / held item / weather
* Forgot Snow exists and heals Ice Body, haven't played Switch games lol
* (766a1a27a7) Compatibility, use new struct field instead of function call
* Fixing oversight from previous upstream merge
* Improve TSpikes handling to make GetSwitchinHazardDamage more applicable
Small fixes:
- EFFECT_EXPLOSION typo (!= to ==)
- Order of if statements near bestResistEffective
- Spacing of terms in big HasBadOdds if statements
* Forgot to uncomment blocks disabled for debugging what turned out to be vanilla behaviour lol
* Remove another holdover from debugging, sorry :/
* Lastly, undoing my debug trainer
* Type matchup based on species type rather than current type
Suggested by BLourenco on Discord, the idea is that a mon that's had its type affected by a move like Soak will still have moves as though it was its regular typing, and so prioritizing the temporary typing wouldn't be ideal.
https://discord.com/channels/419213663107416084/1144447521960251472/1146644578141736970
* gActiveBattler upcoming merge fixes
* Egg changes part 1
* Egg changes part 2, just need to address EWRAM still
* Move SwitchinCandidate struct to AiLogicData
* Consider Steel type when checking TSpikes
* Comment about CanBePoisoned compatibility
* Changes for Egg's 2nd review
* Put period back in comment, whoops lol
* Latest upcoming merge fixes
* Missed a few u32 updates
* Combine GetBestMonIntegrate functions / flags, some modularization
* Fix merge error
* Make modern fixes
* Two tests done, two to go
* Accidentally pushed reference test, removing it
* Type matchup switching tests
* Tests for defensive vs offense switches
---------
Co-authored-by: DizzyEggg <jajkodizzy@wp.pl>
* Added option for generating incrementing pokemon in pc boxes
# Conflicts:
# src/debug.c
* added submenu arrows, increased menu high to full screen
# Conflicts:
# src/debug.c
* combined flags and vars into one submenu
# Conflicts:
# src/debug.c
* added new window to flags/vars showing the current state and added submenu indicator
# Conflicts:
# src/debug.c
* added alligned arrows for debug submenus
# Conflicts:
# src/debug.c
* used {CLEAR_TO X} instead of manual spaces
# Conflicts:
# src/debug.c
* renamed gDebugText to proper sDebugText
# Conflicts:
# src/debug.c
* added Fill submenu, added fill function for PC items and all bag pockets @LOuroboros
# Conflicts:
# src/debug.c
* put cheat start into utility
# Conflicts:
# src/debug.c
* put fill submenu into main menu
# Conflicts:
# src/debug.c
* tiny fix
* renaming and reordering
# Conflicts:
# src/debug.c
* Added reset pokedex flags for @AsparagusEduardo
* made flag toggle list dynamic
# Conflicts:
# src/debug.c
* initial battle debug menu WIP
# Conflicts:
# src/debug.c
# src/wild_encounter.c
* fix visual bug
* added battle start
# Conflicts:
# include/debug.h
# src/battle_ai_script_commands.c
* Added faster way to add initial movesets to mon
* Added waiting music for the slow box filling
* Simplified the call to scripts
* Simplified debug scripts
* Disabled Battle Test for now
* Fixed personality on fast PC fill being always 0
* Removed BATTLE_ENGINE instances + added AI_FLAG_COUNT
* Added missing return TRUE
* Sets nickname
* Changed how GetSpeciesName to how it's used upstream
---------
Co-authored-by: TheXaman <48356183+TheXaman@users.noreply.github.com>
Added additional comments.
Reordered switching ladder in ShouldSwitch() function.
Functions that can specify a specific party mon to switch into need to come first.
When this flag is set, the trainer will have an "Ace" pokemon that will
always be sent out last.
If this flag is set, the last Pokemon in the party will be considered the
"Ace" Pokemon.
This is similar to the gym leader functionality found in Sword & Shield.