Built-in Presets
Built-in Presets
Section titled “Built-in Presets”Smart Trainers ships with a set of ready-to-use AI presets and battle bag presets. These range from completely random behavior to championship-level strategic play. You can use them directly or inherit from them to build custom trainers.
AI Presets
Section titled “AI Presets”| Preset | ID | Skill | Description |
|---|---|---|---|
| Random | smart_trainers:random | 0 | Pure random move selection. No strategy whatsoever. All scoring is bypassed. |
| Easy | smart_trainers:easy | 2 | Basic type awareness. Occasionally picks random moves (~40% of the time). Heals at 20% HP. |
| Medium | smart_trainers:medium | 3 | STAB bonus, type effectiveness, switches on bad matchups. Priority finishing moves. Picks randomly ~20% of the time. |
| Hard | smart_trainers:hard | 4 | Full damage prediction, hazard setup, ability immunities, synergy rules. Only random ~5% of the time. |
| Expert | smart_trainers:expert | 5 | Inherits from Hard. Tighter select margin, lower variance. KO prediction, overkill penalty, accuracy weighting. Includes gimmick rules for Mega Evolution, Terastallization, Dynamax, and Z-Moves. |
| Champion | smart_trainers:champion | 5 | Specialized champion-level AI with sweeper setup, Will-o-Wisp on physical attackers, strategic healing. |
| VGC Master | smart_trainers:vgc_master | 5 | Doubles-optimized. Fake Out usage, Protect timing, speed control, redirection awareness, spread move management. |
| Gen 4 Cynthia | smart_trainers:gen4_cynthia | 5 | Recreation of Champion Cynthia from Pokemon Platinum. Setup sweeps with Swords Dance, toxic stalling against walls, priority finishes. |
Preset Philosophy
Section titled “Preset Philosophy”Each preset is designed around a distinct playstyle:
Random — The baseline. Useful for testing or creating deliberately incompetent trainers. Every move is equally likely regardless of the situation.
Easy — Represents a new trainer who understands types but makes frequent mistakes. Will occasionally use a healing item when critically low, but otherwise plays without much thought.
Medium — A competent trainer. Understands STAB, type effectiveness, and knows when to switch out of bad matchups. Uses priority moves to finish weakened opponents. The default for most NPC trainers.
Hard — A skilled battler. Runs full damage calculations, sets up entry hazards, respects ability immunities (won’t use Fire moves into Flash Fire), and considers team synergy. Rarely makes random choices.
Expert — A near-perfect player. Inherits everything from Hard and adds tighter decision-making with a smaller randomness margin. Predicts KOs and avoids overkill (won’t waste a powerful move when a weaker one would finish the job). Weighs accuracy into move selection. Includes rules for activating gimmick mechanics (Mega Evolution, Terastallization, Dynamax, Z-Moves) at appropriate times.
Champion — A boss-fight caliber opponent. Identifies setup opportunities and commits to sweeps. Uses Will-o-Wisp strategically against physical attackers. Heals at calculated moments to maximize value. Designed for climactic battles.
VGC Master — Built for doubles. Understands Fake Out pressure on the first turn, knows when to Protect (and when not to), manages speed control with Tailwind and Trick Room, uses redirection (Follow Me, Rage Powder), and handles spread move targeting intelligently.
Gen 4 Cynthia — A character-specific preset recreating Champion Cynthia’s battle style from Pokemon Platinum. Aggressively sets up Swords Dance when safe, uses Toxic to wear down walls, finishes with priority moves, and plays with the calculated aggression Cynthia is known for.
Battle Bag Presets
Section titled “Battle Bag Presets”| Preset | ID | Items | Max Uses |
|---|---|---|---|
| Empty | smart_trainers:empty | None | 0 |
| Trainer Basic | smart_trainers:trainer_basic | 2x Potion, 1x Antidote | 2 |
| Trainer Advanced | smart_trainers:trainer_advanced | 2x Super Potion, 1x Full Heal | 3 |
| Gym Leader | smart_trainers:gym_leader | 2x Hyper Potion, 1x Full Heal | 2 |
| Elite | smart_trainers:elite | 4x Full Restore, 2x Max Revive | 4 |
| Champion | smart_trainers:champion | 4x Full Restore | 4 |
| VGC Master | smart_trainers:vgc_master | 2x Full Restore | 2 |
| Gen 4 Cynthia | smart_trainers:gen4_cynthia | 2x Full Restore | 2 |
Inheriting from Presets
Section titled “Inheriting from Presets”The most common workflow is to inherit from a built-in preset and customize specific behaviors. Use the parent field to inherit:
{ "parent": "smart_trainers:expert", "max_select_margin": 0.05}This creates a config that inherits everything from the expert preset but overrides the randomness margin to be tighter (5% instead of the expert default).
Inheritance Rules
Section titled “Inheritance Rules”How different field types are inherited:
- Scalar values (
move_bias,max_select_margin, etc.) — Child overrides parent. If the child omits the field, the parent’s value is used. - Object values (
skill,personality,prediction,team_synergy) — Child replaces the entire object. If the child omits it, the parent’s object is inherited. - Rule lists (
action_priorities,move_scoring_rules,switch_conditions,gimmick_rules):null(not specified) — Inherits the parent’s list entirely[](empty array) — Clears the parent’s rules and starts fresh[...rules...]— Child rules are prepended to parent rules. Child rules come first and are evaluated first.
Example: Custom Gym Leader
Section titled “Example: Custom Gym Leader”A Fire-type Gym Leader that inherits from hard and adds weather-specific behavior:
{ "parent": "smart_trainers:hard", "max_select_margin": 0.2, "personality": { "enabled": true, "base_personality": { "aggression": 0.75, "setup_preference": 0.6, "switchiness": 0.3 }, "trait_variance": 0.1 }, "action_priorities": [ { "id": "setup_sunny_day", "condition": "!q.field.has_weather('SunnyDay') && q.pokemon.current_hp_percent > 0.7", "action_type": "move", "move_filter": { "names": ["sunnyday"] }, "priority": 85, "bias_multiplier": 3.0, "score_bonus": 100.0 } ]}Because action_priorities is a non-empty array, these rules are prepended to the parent’s (hard) rules. The child’s Sunny Day rule runs first, then all of hard’s built-in rules apply.
Chained Inheritance
Section titled “Chained Inheritance”Inheritance chains work across multiple levels. A config can inherit from a parent that itself inherits from a grandparent:
mypack:fire_gym → smart_trainers:hard → smart_trainers:mediumCircular inheritance (A inherits B inherits A) is detected and throws an error on load.