3.3 KiB
Navigation recovery and eligibility
Implemented on feature/clientless-player-core, 2026-10-29.
Free flight can connect the current position to a graph departure node with normal travel costs, as well as bridge nodes. Recovery can reach an intermediate node on the current map when the final destination is on another map. Missing child terrain tiles use the native parent terrain fallback; existing child tiles with missing collision remain blocked. No phase or collision checks are disabled.
Navigation rescue requires at least ten minutes without substantial progress and five failures. Taxi/transport/hover waiting receives thirty minutes of grace. Unrelated activity gaps reset the watch. Rescue plays ten seconds of the native hearthstone precast animation, then teleports to Stormwind or Orgrimmar. Movement, combat or death interrupts preparation. The real hearthstone spell is not cast, because its personal homebind destination would be incorrect. Cooldown is thirty minutes. Recovery history is runtime state and resets on logout.
Five consecutive deaths within sixty seconds of resurrection arm the NEXT death for the existing graveyard resurrection fallback, without sickness or an added repair penalty. Native resurrection notifications also capture rapid redeaths between controller ticks. Existing group wipe/revival handling is retained.
Dungeon and raid destinations use native LFG/access minimum levels, including normal difficulty downscaling. Unknown minima are rejected. Outgoing invitations require levels within five and the destination minimum, including adventure areas. Incoming player invitations always reject bots more than five levels above the player, with no lower bot-level cutoff. Personality decisions remain in force. The final hourly groupformation slot becomes rest and is persisted.
Dock waiting uses safe nearby local paths and returns along the actual recorded walk to the original node before boarding. Group formations wait until complete arrival. Onboard distribution is deferred: recorded transport transitions do not provide validated local vehicle navigation. NPC/activity spacing prefers free positions but permits overlap when safe space is unavailable.
Riding provisioning teaches native riding spells and reconciles the skill. The native Player::SetSkill empty-slot sentinel now correctly accepts slot zero. Read-only flight status reports riding and flight eligibility.
Lunna's Rut'theran oscillation was not reproduced in the bounded log inspection; further investigation is deferred as requested. In-game acceptance remains necessary for visual hearth effects, spacing and transport behaviour.
Startup validation exposed an existing instance-ID storage bug: MAX(id) retains the INT field type, so GetUInt64 returned zero in debug builds and registration of saved instance 2 asserted. The aggregate now explicitly casts to UNSIGNED (BIGINT), preserving the existing 64-bit allocation arithmetic and saved data.
Live checks also exposed recursive rewarded-spell skill activation: an initialized zero-rank placeholder could become CHANGED before its first INSERT. SetSkill now marks persistence state before learning rewarded spells; the regression exercises actual recursive activation. Failed flight-departure roots now honor the existing executor blacklist when replanning.