Skip to content

Build reusable playerbot combat targeting and tactics #54

Description

@adrunkhuman

Scope

Track reusable combat target selection and tactics. The first concrete gap is mid-fight retargeting: a bot fighting a low-priority monster should switch when a materially higher-priority threat appears, such as an orc joining a fight with three rats.

This is an umbrella and design record, not a commitment to build a generic combat framework first. Create focused child issues only where vertical slices establish reusable boundaries.

Current behavior

  • Visible-monster acquisition is mainly ordered by distance and creature ID.
  • Traversal combat keeps its target until death, disappearance, loss, or timeout.
  • Active combat does not compare the current target with newly visible candidates.

First milestone: priority retargeting

  • Reevaluate visible, legal, reachable hostile monsters during combat.
  • Score candidates from available evidence: attacks on the bot, monster threat, route impact, distance/range, and current-target state.
  • Use the normal player attack operation only when a candidate materially outranks the current target.
  • Add hysteresis or a bounded switch cooldown to prevent thrashing.
  • Preserve kill, corpse, loot, navigation, and interrupted-objective bookkeeping across a target change.
  • Emit stable telemetry for previous target, selected target, reason, relevant evidence/scores, and rejected switches.

Acceptance

  • In a deterministic three-rats-and-an-orc fixture, the bot starts on a rat and switches to the orc when it exceeds the defined retargeting threshold.
  • Equal or near-equal targets do not cause successive-cycle oscillation.
  • Unreachable, unseen, dead, invalid, or legally unattackable candidates are never selected.
  • Retargeting uses normal combat/movement APIs; it does not mutate health, position, or combat state directly.
  • After the higher-priority target dies or disengages, the bot reevaluates valid targets and resumes the valid hunt objective.
  • Telemetry records the selected switch and each rejected switch with an explicit reason, including below-threshold, cooldown, or eligibility rejection.
  • Regression coverage verifies the target-change sequence and telemetry, not only the final kill.

Later capability areas

  • Multi-attacker threat assessment and target scoring.
  • Melee/ranged position, chase, hold-ground, and disengagement policy.
  • Stickiness, overkill avoidance, and opportunistic finishing.
  • Offensive spells, runes, ammunition, and weapon selection.
  • Coordination with healing, retreat, navigation, looting, supplies, and later party behavior.

These are candidate child issues, not an ordered checklist.

Constraints

  • Use normal player combat, movement, spell, item, scheduler, and persistence APIs.
  • Keep decisions bounded and staggerable for eventual multi-bot scale.
  • Prefer authoritative loaded monster, item, spell, and combat data to permanent playerbot-only name lists.
  • Preserve explainable deterministic telemetry even if later preferences become probabilistic.
  • Keep tactical targeting separate from hunting-region selection and global survival interrupts.

Related

#8 established normal one-target rat combat and intentionally excluded tactics. #38 owns healing, survival interrupts, and retreat. #46 indexes health, mana, conditions, and recovery. #51 owns hunting-region selection. #35 owns corpse looting and inventory policy.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew or improved behaviorplayerbotServer-controlled player behavior and infrastructure

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions