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.
7.4 KiB
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.