Files
my-botty/docs/auto_build_plan.md

4.2 KiB

Auto Skill + Attribute Allocation Plan

Goal

Add an optional system that automatically assigns:

  • skill points
  • attribute points

based on:

  • active character profile (blizz_sorc, fohdin, hammerdin, etc.)
  • current character level

without breaking existing manual setups.

Scope

  • Planning and architecture for Botty repo.
  • No forced behavior changes: feature must be opt-in.

Requirements

  1. Determine current level reliably at runtime.
  2. Select a build template by character profile.
  3. Apply points safely only when unspent points exist.
  4. Record every allocation in logs/events for audit/replay.
  5. Abort safely on uncertainty (wrong UI state, OCR mismatch, missing templates).

Current Level Detection Strategy

Primary path

Use player_bar.get_experience() (already used in game_stats.log_exp) to derive level from XP table.

Secondary fallback

Open character panel (C) and OCR level/name line directly from upper-left panel region.

Tertiary fallback

If OCR fails repeatedly:

  • keep previous known good level for session,
  • do not allocate points until confidence is restored.

Confidence rules

  • Require two consistent reads before first allocation in a session.
  • Reject impossible jumps (e.g., +5 levels at once).
  • Persist last_known_level in session stats snapshot.

Build Template Model

Add config-backed build templates, e.g.:

  • config/auto_builds/blizz_sorc.ini
  • config/auto_builds/hammerdin.ini
  • config/auto_builds/fohdin.ini

Each template defines per-level targets:

  • desired skill totals by level milestone
  • desired attribute distribution (str/dex/vit/ene)

Example concept:

  • Level 1-17: early progression targets
  • Level 18-29: mid-game unlock path
  • Level 30+: core skill maxing order

Runtime Flow

  1. Enter town and open character/skill UI.
  2. Detect level and unspent points.
  3. Load template for Config().char["type"].
  4. Compute delta between current allocation and target-at-level.
  5. Apply points stepwise:
    • attributes first (optional toggle),
    • skills second.
  6. Verify post-apply state.
  7. Log allocation summary and persist snapshot.

Safety Guards

  • Only run in town.
  • Require stash/vendor windows closed.
  • Hard cap per cycle (e.g., max 10 clicks per stat/skill group).
  • On mismatch/timeout:
    • stop allocation immediately,
    • screenshot + structured error event,
    • continue bot without crashing.

Config Additions (Planned)

In [char] or new [auto_build] section:

  • auto_assign_skills=0/1
  • auto_assign_attributes=0/1
  • auto_build_profile= (defaults to char.type)
  • auto_build_check_every_x_games=
  • auto_build_safe_mode=1 (extra verification)

Logging / Telemetry

Add structured events:

  • auto_build_check_started
  • auto_build_level_detected
  • auto_build_points_detected
  • auto_build_applied
  • auto_build_skipped
  • auto_build_error

Include:

  • profile
  • level
  • points spent
  • before/after snapshots

UI / Input Dependencies

Need stable template references for:

  • character panel level region
  • unspent attribute points indicator
  • unspent skill points indicator
  • individual plus-buttons for stats/skills

Test Plan

  1. Unit tests:
    • level-to-target mapping
    • delta computation
    • guard conditions
  2. Integration dry-run mode:
    • compute and log planned actions without clicking.
  3. Live smoke tests per profile:
    • blizz_sorc, hammerdin, fohdin
  4. Regression:
    • ensure normal runs unaffected with feature disabled.

Inputs Needed From You

  1. Screenshots for each supported class at:
    • character panel open,
    • skill tree open,
    • visible unspent points.
  2. Preferred leveling templates:
    • exact skill priority order by level range.
    • attribute rules (e.g., str to gear breakpoint, then vit).
  3. Whether respec-aware logic is needed in v1.

Rollout Phases

  1. Phase 1: Level detection + dry-run planner only.
  2. Phase 2: Attribute auto-assign (safer, fewer UI branches).
  3. Phase 3: Skill auto-assign with full verification.
  4. Phase 4: Expanded profile templates + docs.

Definition of Done

  • Feature is opt-in and stable for blizz_sorc, hammerdin, fohdin.
  • Level detection is reliable with fallback behavior.
  • No crash on detection/allocation failure.
  • Full logs available for every auto-allocation decision.