Renaming to AI_ASSUME_STATUS_MOVES and making a config for universal status move guessing + disabling the custom tuning.

This commit is contained in:
surskitty
2025-07-12 18:50:08 -04:00
parent 9ccb1fbc3a
commit f6b0a15841
6 changed files with 98 additions and 103 deletions

View File

@@ -147,10 +147,12 @@ AI has full knowledge of player moves, abilities, and hold items, and can use th
## `AI_FLAG_ASSUME_STAB`
A significantly more restricted version of `AI_FLAG_OMNISCIENT`, the AI only knows the player's STAB moves, as their existence would be reasonable to assume in almost any case.
## `AI_FLAG_ASSUME_POWERFUL_STATUS`
A more restricted version of `AI_FLAG_OMNISCIENT`. The AI has a _chance_ to know if the player has certain strong status moves, plus also Fake Out and fixed percentage moves like Super Fang. The intention is so that if the AI has a counterplay implemented, it will seem to have guessed if the player's pokemon has a move, without giving the AI perfect information. For example, with Omniscient set, the AI will not put a pokemon to sleep if it has Sleep Talk; with neither Assume Powerful Status nor Omniscient set, the AI will always assume the pokemon does not have Sleep Talk.
## `AI_FLAG_ASSUME_STATUS_MOVES`
A more restricted version of `AI_FLAG_OMNISCIENT`. The AI has a _chance_ to know what status moves the player has, plus additionally Fake Out and fixed percentage moves like Super Fang. The intention is so that if the AI has a counterplay implemented, it will seem to have guessed if the player's pokemon has a move, without giving the AI perfect information. For example, with Omniscient set, the AI will not usually put a pokemon to sleep if it has Sleep Talk; with neither Assume Powerful Status nor Omniscient set, the AI will always assume the pokemon does not have Sleep Talk.
Percentages for the three groupings (high odds, medium odds, and low odds) are defined in `include/config/ai.h` under `ASSUME_POWERFUL_STATUS_HIGH_ODDS`, `ASSUME_POWERFUL_STATUS_MEDIUM_ODDS`, and `ASSUME_POWERFUL_STATUS_LOW_ODDS`. Moves are sorted in `src/battle_ai_util.c` within `ShouldRecordStatusMove()`
By default, there are three groups of higher likelihood status moves defined in `include/config/ai.h` under `ASSUME_STATUS_HIGH_ODDS`, `ASSUME_STATUS_MEDIUM_ODDS`, and `ASSUME_STATUS_LOW_ODDS`. Moves are sorted in `src/battle_ai_util.c` within `ShouldRecordStatusMove()`.
Any move that is not special cased is then potentially caught by `ASSUME_ALL_STATUS_ODDS`.
## `AI_FLAG_SMART_MON_CHOICES`
Affects what the AI chooses to send out after a switch. AI will make smarter decisions when choosing which mon to send out mid-battle and after a KO, which are handled separately. Automatically included when `AI_FLAG_SMART_SWITCHING` is enabled.