# AdventureBot interactions and player-led groups Implemented 2026-10-28 on feature/clientless-player-core. No autonomous bot-to-bot party formation, role assignment, healer/tank AI or proactive PvP aggression. PlayerAI.cpp supplies spell/attack foundations and charmed-player follow logic; it does not implement invitation decisions. AdventureBots keep independent controllers and use the native party invitation response handler. ## Encounters Directed native text emotes greet/hello/wave/bow/salute/smile/thank and rude/threaten/roar generate GUID-only notices in ClientlessPlayerMgr. Map workers never call AdventureBot policy directly. Queues are bounded and delivered on the world thread. Participants must be alive, mutually visible, in the same map, instance and phase, within 25 yards and in line of sight. Replies wait 1–3 seconds, briefly interrupt the current activity, face the other player and use native animation emotes. Friendly encounters wave/bow; hostility or hostile emotes produce a negative gesture. There is no automatic attack just because another player is hostile. Original intent deadlines are retained. The global reply cooldown is 15 seconds, the same partner has 120 seconds. Direct chat/free conversation parsing is not implemented. Bots in social/leisure/rest can occasionally initiate a five-second encounter with another available AdventureBot within 12 yards. The lower character GUID initiates and reserves both participants. The peer must also have a compatible intent. Sociability weights initiation. Pair cooldown is five minutes; native animation replies never feed back into incoming text-emote events. Occasional localized 'Safe travels' accompanies greetings. This is a short greeting, not a multi-line conversation or synchronized shared activity. Real positive damage by another player or their pet against the bot's active combat target can queue a thank-you. Damage attribution is captured after damage rejection/duel clamping and before lethal cleanup; no threat-only inference. The thank-you is deferred until combat and the existing self-care finish, and requires the helper still to be nearby and friendly. Dummy training is excluded. ## Invitations and group behavior An actual native invitation is answered after 2–4 seconds in a safe state. Acceptance probability clamps sociability plus an intent adjustment to [0,1]: rest −0.50, profession/economy −0.25, adventure/instance +0.20, other +0.10. Inviter must be alive and friendly. Bots do not accept invitations from other unreserved clientless players. Reserved native bot invitations, autonomous groups, raid/preparation intents and human admission to bot groups are described in [bot-groups.md](bot-groups.md). Invitations are declined inside dungeons. Normal faction/group restrictions run before the invitation reaches the bot; none are bypassed. Membership suspends autonomous intent execution, clears its queued actions and retains its deadline. Native membership survives server restart. Bots follow the current leader with checked local MMAP paths, aiming about three yards behind and stopping within five yards. Longer/cross-map routes use existing travel_to_node actions toward a nearby TravelGraph node at the leader's location; no new teleport shortcut is introduced. Coverage of the graph and native portal rules determines whether these routes work. An active graph trip is allowed to finish before local follow resumes. Transport/flight states are not interrupted. Unreachable destinations are retried conservatively; an active leader does not cause a timeout merely because the route is missing. Nearby (40 yards) group members' actual combat targets or attackers can be supported with the existing damage executor. Self-defense retains priority and the first actual damager focus. Assist requires native attack permission, valid visibility/phase, a verified path, at least 30% HP, and excludes world bosses and creatures more than two levels above the bot. Other classes currently retain basic autoattacks; class-specific support roles remain future work. ## Leaving Never voluntarily leave while dead, fighting, in a dungeon/raid, on a transport, or in flight. Pending conditions are reevaluated when safe: - A changed scheduled intent/location permits leaving. Personality `group_loyalty` is the chance of staying for that new block (default 0.25, Arthoran 0.35). The choice is made once per observed change, not each tick. A new date generates/loads the native daily plan even while grouped. For manual intents, expiry of the original deadline also changes this token. - The leader being explicitly AFK for ten minutes, or ten minutes of observed inactivity, permits leaving. Position/orientation, selection, combat, casting, native chat, text emotes, spell and item requests count as activity. Sampling cannot detect every conceivable stationary action. Native AFK takes precedence while set. A new leader starts a fresh observation window; returning from AFK ends the explicit AFK window. Observation clocks restart after a server restart, so a restart does not immediately evict a bot. Before voluntarily leaving, a localized farewell is sent to the native party chat. Native RemoveMember performs removal. Removal/disbanding by other players also resumes autonomous scheduling at the current time, retaining deadlines. ## Diagnostics and verification `clientless interaction 26` reports membership, leader, partner, intent, schedule observation, idle/AFK seconds, sociability and loyalty. No state changes. `tests/clientless/test_adventure_interactions.py` compiles and executes production manager code with deterministic native-world adapters: invitation acceptance and rejection, group following/path rejection, leader changes, 599/600-second boundaries, activity, deferred exits, directed group emotes, hostile replies, pair reservation, cooldowns, graph handoff and deferred thanks. `test_adventure_combat_reactions.py` also covers player target permission and player damage notices while preserving corpse recovery regression checks. These tests do not replace live client acceptance. Multi-client player invites, real PvP/pet defense, cross-map/instance group following, ten real minutes of AFK, and two simultaneously online AdventureBots require separate gameplay checks.