Files
Viano-Core/doc/clientless/bot-groups.md
T
Nico d6fea6ee68
clang PCH / build (push) Canceled after 0s
GCC PCH / build (push) Canceled after 0s
Add AdventureBot groups, raid preparation and shared travel
Implement native bot recruitment and player admission, leader-owned destinations, intent-specific capacities, preparation scheduling and shared graph and flight travel. Support native group instance visits and separate raid entrances.

Include pending personality-driven faction PvP and solo fleeing, preserving the absolute group fleeing exclusion. Add regression fixtures, migration, documentation and test-server evidence.
2026-10-28 15:00:41 +01:00

7.4 KiB
Raw Blame History

Autonomous AdventureBot groups

Bot groups use native invitations, party membership, leadership, raid conversion, instance bindings and persistence. The first inviter becomes leader. Human-led groups retain the existing interaction/follow behavior. A human invitation to an already grouped bot acts as a join request: a bounded GUID-only CPC notification lets the bot leader offer a reverse native invitation, subject to personality, faction and capacity. Once the player joins, native leadership is transferred to the human and bots switch to the existing player-led behavior. This does not parse player chat or forcibly remove any member. Role assignment, healer or tank AI, and replacement of absent players remain separate work.

Recruitment and preparation

Adventure, compatible professions, social, instance and raid intents recruit. Local encounters require phase, visibility, LOS and25-yard proximity. A lone bot may request admission to an existing matching group; its leader sends the native invitation. A leader may recruit individual bots. Recruitment and acceptance are personality dependent, with20–40 seconds between searches,2–4 seconds for native invite responses (provisional native leaders never answer their own invite) and a10-minute pair cooldown. Dead/combat/fleeing/transit bots do not recruit. Same faction and an inclusive five-level spread are required. Profession groups need a common primary profession.

groupformation prepares the next hour's intent in a capital. During this phase, matching NEXT intents are required, not matching original destinations. The leader's existing formation location becomes the meeting point; members inherit it and subsequently inherit the leader's activity target and deadline. Their own stored day plans remain intact and are restored on departure. Departure decisions track the personal plan, so inheriting a different group destination is not misinterpreted as an intent change. Unexpired manual activities are restored too; expired manual activities end. New day generation inserts preparation before instance/raid blocks, and probabilistically before other eligible blocks; backwards processing prevents preparations preparing another preparation. Existing stored days are preserved.

The faction-separated native custom channel sucheNachGruppe carries bounded recruitment and response messages across capitals. The manager pairs structured bot plans; it never interprets player chat. Opposite-faction channel traffic is not used. Capital zones include racial capitals, Shattrath and Dalaran. Announcements currently use German RP text.

Recruitment capacity includes the leader and pending invitations: instance5, raid20, social10, adventure/profession3. Groups larger than five use native raid membership. Full groups stop searching. These are intent-specific recruitment limits; when the leader chooses a smaller activity, excess bot members depart at a safe point before recruitment continues. Native map admission limits and existing/permanent lockouts remain in force. Raid preparation requests the native25-player normal difficulty; the catalog uses native downscaling and requires capacity for at least20 members, excluding ten-player-only raid maps. Legacy20/40-player raids remain possible. No role guarantees are implied.

Preparation never waits for a full group or for members to arrive. The leader's next intent starts on its ordinary deadline. Late members catch up. Formation suppresses the AFK/inactivity departure timer and refreshes its baseline; the planned formation-to-activity transition is exempt from intent-change departure. Later changes retain the existing loyalty-based departure behavior, deferred in combat/instances/transit. Native removal handles leadership and party dissolution.

Shared travel and instances

Followers run their AdventureBehavior controller with the leader's effective intent/location/deadline, keeping their personal daily schedule. After arrival, non-instance followers use native checked local following instead of independently performing unrelated micro-actions. Leaders continue their own activities.

Generic CPC travel actions accept route_source=<native-group-leader-guid>. The executor copies the leader's route edges and final local destination, keeping execution/transport state separate. Late arrivals plan a native approach to the shared route's previous reached node and replay the remaining edges. A bounded 15-second wait handles follower actions processed before the leader plans. If no matching macro snapshot exists (including a local-only leader leg), the ordinary native catch-up planner runs; this is not a synthetic transfer or an absolute formation guarantee. Individual permissions/path failures still use native travel recovery. TRAVEL_SHARED_ROUTE provides evidence of actual copying.

Free-flight members with the same target consume the leader's published flight segments. Each member mounts normally and rechecks its own collision corridor. A shared trail survives leader arrival/new planning through shared ownership. Waiting for additional published points holds flight position; an aborted or blocked trail uses existing checked breadcrumb return. No position, speed or flight-license cheat is introduced. FLIGHT_SHARED_TRAIL marks attachment.

raid selects only native raid-map entrances; instance excludes them. These are verified from native map data through the existing entrance catalog rather than name matching. Both use the existing remainder-of-block visit and final five-minute outside rest, individual0–50% maximum-health loss, save/restart and native portal return. Native group binding supplies the shared instance copy; unrelated shared solo bindings remain rejected. Members do not use separate synthetic private copies.

Only the group leader initiates personality/intent-driven PvP. Other bots assist through the existing damage executor. All group members retain the absolute rule against tactical fleeing, regardless of health or level.

Operations and verification

Apply sql/custom/world/2026_10_28_01_adventure_groups.sql; it is idempotent and preserves edited weights/current day plans. No character migration is needed. clientless adventure reload reloads catalog data.

Diagnostics: clientless interaction <guid> leave performs a safe native departure/cancels a pending invite for test cleanup. clientless interaction <guid> includes next intent, formation, capacity, bot leadership and own plan location. clientless adventure plan <guid> shows stored day slots. clientless adventure prepare <guid> <next-intent> <capital-location> [seconds] stages a manual preparation, with a chosen normal next destination, lasting30–3600 seconds and followed by a one-hour activity. It uses normal navigation, invitations and execution, and can start incomplete. Manual preparations are runtime test state, not restart-persisted day plans.

Automated fixtures execute production recruitment, provisional-leader invite handling, full world-tick behavior clocks in bot groups, player admission and leadership, inheritance, instance lifecycle, map-type filtering, route adoption and flight-trail geometry. They cover different original destinations, singleton admission, native inviter leadership, caps/pending reservations, raid conversion, protected transition, unchanged personal plans, preparation deadlines, shared edges/free flight, collision and abort behavior. Full native live group trips,20-member raids, real AFK duration and visual gameplay remain acceptance tests for the user.