# Freizeit-Intent Technischer Name: `leisure`. Freizeit ist ein Aufenthalt mit Spaziergängen, Pausen und freiwilligen Ausflügen, keine Folge endloser Fernreiseaufträge. Migration: `sql/custom/world/2026_10_27_02_adventure_leisure.sql` nach den Geselligkeits- und Ruhe-Migrationen. Definitionen und bearbeitete Gewichte bleiben erhalten. Neue Tagespläne können Freizeit anhand `activity_affinity.leisure` auswählen (Standard 0,5); vorhandene gespeicherte Tagespläne bleiben bestehen. ## Mikroaktionen | Schlüssel | Ablauf | |---|---| | `leisure_training` | Eine echte sichtbare und erreichbare Trainingspuppe im lokalen Umkreis aufsuchen und 60–180 Sekunden mit nativen Angriffen trainieren. | | `leisure_walk` | Zusammenhängender MMAP-Hinweg zu einem entfernten Außenpunkt, danach dieselben Wegpunkte zurück; Gehmodus und kurze Pause am Wendepunkt. | | `leisure_roam` | Eine lokale Spazierstrecke auswählen, vollständig verfolgen und auf demselben Weg zurückkehren. | | `leisure_pet_walk` | Eigenen Begleiter beschwören, gegebenenfalls anleinen, eine zusammenhängende Strecke entspannt hin und zurück gehen, zurückkehren und eigene Begleiterressourcen aufräumen. | | `leisure_ride` | Kurzer Rundritt mit Profil-Bodenmount; nur Außenwege, danach zurückkehren und absteigen. | | `leisure_flight` | Kurzer Rundflug mit nativen Start-, Kollisions- und Landeprüfungen; sichere Landung und Rückkehr vor Intentwechsel. | | `leisure_fish` | An einem markierten `leisure_fishing`-Platz mit ausgerüsteter Angel und geprüftem Wasser native Angelhaltung darstellen. Kein Fischfang, Beuteobjekt oder Inventarzugang. | | `leisure_view`, `leisure_linger` | Aussicht betrachten beziehungsweise ruhig verweilen. | Gemeinsame Szenen ergänzen NPC-/Bot-Gespräche, Zuhören, native Sitzplätze, Essen, Trinken und Feuerrast. Tanz wird bei Freizeit nur an einer als `festival` klassifizierten Location angeboten. Neue Feuer bleiben in Gebäuden und Städten verboten. Freizeit verwendet vorhandene Fähigkeiten statt eigener Sitz-, Gesprächs- oder Feuerimplementierungen. Geplante Fußspaziergänge bleiben höchstens 250 Yards vom Aufenthaltsanker entfernt; andere lokale Ausflüge höchstens 120 Yards. Stadtlocations mit `zone_id` und Gebietsaufträge behalten ihre native Gebietsgrenze; Bodenwege werden einschließlich Zwischenpunkten über MMAP geprüft. Reitwege müssen entlang der gesamten berechneten Bodenroute im Außenbereich bleiben. Bodenrunden wählen nahe Bodenhöhen mit höchstens drei Yards Abweichung zum Ausgangspunkt; erhöhte Dachpunkte werden nicht als Spaziergangziele verwendet. Nach einer Sitz-/Esspause im Gebäude bleiben Fußspaziergänge, Umherlaufen und Haustierausführen wählbar: Die normalen lokalen Wege führen wieder zu den geprüften Außenpunkten. Rückkehrort ist dann der äußere Freizeitanker statt des Innenraum-Sitzplatzes. Ausritte und Rundflüge benötigen weiterhin einen Außenstart; die Feuerverbote in Gebäuden und Städten bleiben bestehen. Kein unerreichter Wegpunkt zählt als Ankunft. Normale Ausflüge kehren zum Ausgangspunkt zurück; Zeitlimits, verlorene Begleiter oder Navigationsfehler beenden einen nicht mehr sicher ausführbaren Ablauf, ohne eine Rückkehr vorzutäuschen. Fußspaziergänge (`walk`, `roam`, `pet_walk`) wählen vor dem Losgehen genau **eine** vollständige native Bodenroute mit mindestens 65 Yards Abstand zum Ausgangspunkt. Das Hinweg-Budget beträgt abhängig von der Mikroaktionsdauer 100–220 Yards. Unvollständige Pfade, Shortcuts, übermäßige Umwege, fremde Gebiete und Innenraumstrecken werden verworfen. Etwa alle 20 Yards werden echte MMAP-Punkte als Kontrollpunkte gespeichert; lokale Navigation verbindet sie. Der Wendepunkt kommt nur einmal vor, danach folgen die Kontrollpunkte rückwärts bis zum Start. Es gibt keine regelmäßigen Pausen zwischen Kontrollpunkten; am Wendepunkt sind vier Sekunden vorgesehen. Die Begleiter-Abstandsprüfung bleibt unabhängig davon aktiv. Bei Zeitende oder einem gescheiterten Hinweg wird entlang tatsächlich erreichter Kontrollpunkte zurückgegangen, statt einen neuen geraden Rückweg oder weitere Zufallsziele zu wählen. Ein nicht möglicher Rückweg wird als Fehler beendet und niemals als Rückkehr ausgegeben. `stormwind_leisure_trade` verwendet die vorhandene Bodenposition von `game_tele.TradeDistrict` als Freizeitanker. Dorthin wird regulär gereist, nicht teleportiert. Weitere Orte beziehungsweise Angelplätze müssen passend markiert und räumlich geprüft werden. Eine fehlende Angel oder ein fehlender geeigneter Angelplatz verhindert ausschließlich die Angelaktion. ## Katze und Haustierleine Arthoran verwendet im `movement`-Profil: ```lua companion_spell = 10673, -- Bombay Cat, Kreatur 7385 companion_leash_item = 37460, -- Rope Pet Leash, Gegenstandszauber 48722 ``` Diese IDs wurden in den geladenen nativen Spell-/SpellEffect-/Item-sparse-Daten und der Test-Weltdatenbank bestätigt. Der Controller stellt die im Profil gewählte nicht kämpfende Begleiterfähigkeit und die Leine einmalig als Bot-Ausstattung bereit. Bestehende Ausstattung wird wiederverwendet; ein volles Inventar verhindert keine unangeleinte Variante. `ClientlessCompanionMgr` ist eine generische Clientless-Core-Fähigkeit ohne Abhängigkeit vom AdventureBot-Manager. Die Beschwörung ist ein normaler, nicht ausgelöster Spielerzauber. Erst ein tatsächlich vorhandener eigener Begleiter mit passendem Beschwörungszauber bestätigt die Beschwörung. Die Katze folgt mit dem nativen Folgegenerator. Für die eigens beschworene Katze wird ein Abstand von 1,5 Yards mit nativem Aufholen gewählt; ein bereits vorhandener Begleiter behält seine Bewegungskonfiguration. Es gibt keine Spielerteleports, künstliche Katzen-Spawns oder eine ersetzt implementierte Tier-KI. Die Leine wird über den normalen Gegenstandszauber-Auftrag des Besitzers benutzt, mit tatsächlicher Gegenstands-GUID, Inventarposition und eigenem Minipet als Ziel. Dadurch bleiben native Gegenstands-, Zauber-, Ziel-, Abklingzeit- und Scriptprüfungen erhalten. Die Wirkung wird am tatsächlichen Begleiter bestätigt. Die native Leine ist ein beweglicher Kanalzauber. Der Clientless-Reisemanager erhält solche Kanäle beim Starten lokaler Bewegungen; nur bewegungsblockierende Zauber werden abgebrochen. Unbewegliche Kanäle werden nicht als Gehleine verwendet; eine nicht anwendbare Leine blockiert den Spaziergang nicht. Der Besitzer beginnt erst nach bestätigter Beschwörung und abgeschlossener Leinenprüfung zu gehen. Bei aktiver Leine reagiert die Steuerung in jedem Weltupdate vor Erreichen der nativen Fünf-Yards-Reichweite: Ab vier Yards wartet Arthoran, bis die Katze wieder höchstens 3,25 Yards entfernt ist. Ohne Leine gilt eine Grenze von 15 Yards. Eine Wartephase dauert höchstens 20 Sekunden. Eine verlorene eigene Leinenwirkung kann höchstens zweimal über dieselbe normale Gegenstandsbenutzung neu angelegt werden. Beim Abschluss oder Abbruch werden nur die durch diese Szene aufgebrachte Leinenwirkung und eine von ihr beschworene Katze entfernt. Ein passender bereits vorhandener Begleiter kann benutzt werden und bleibt danach bestehen. Fremde Begleiter und Kampf-Pets werden nicht ersetzt. ## Diagnose und Tests ```text clientless adventure intent 26 leisure stormwind_leisure_trade 3600 clientless adventure status 26 clientless adventure micro 26 leisure_pet_walk clientless adventure micro 26 leisure_walk clientless adventure micro 26 leisure_ride clientless adventure micro 26 leisure_flight ``` Gezielte Mikroaktionen benötigen den passenden laufenden Intent am Zielort und durchlaufen dieselben Voraussetzungen wie die automatische Auswahl. Logereignisse: `LEISURE_START`, `LEISURE_WAYPOINT`, `LEISURE_COMPLETE`, `COMPANION_START`, `COMPANION_CONFIRMED`, `COMPANION_LEASH_REQUEST`, `COMPANION_LEASH_CONFIRMED`, `COMPANION_LEASH_UNAVAILABLE`, `COMPANION_WALK_SAMPLE` und `COMPANION_END`. ```bash python3 tests/clientless/test_adventure_leisure.py python3 tests/clientless/test_adventure_leisure_catalog.py python3 tests/clientless/test_clientless_companion.py ``` Die Tests führen produktive Methoden mit kontrollierten Core-Adaptern aus: Rundwege, tatsächliche Ankunft, Gebietsgrenzen, Begleiterbereitschaft, Folgeabstand/Zeitlimit, Reitmodus, Fluglandung vor Intentwechsel, Angelvoraussetzungen, Besitzprüfung, native Gegenstandsziele, Leinenbestätigung, Wiederverwendung und Bereinigung. Die Migration wird auf wiederholbare Ergänzung, vorhandene gemeinsame Aktionen und Erhalt manueller Gewichte geprüft. Sichtprüfung von Katze, Leine, Spaziergängen, Ausritten, Flügen und Angelhaltung bleibt eine separate Ingame-Abnahme. ## Testserverstand am 27.10.2026 - Additive Freizeit-Migration angewendet: 2.644 aktive Adventure-Locations, 42 Aktionen und 56 Dialogzeilen. Vorhandene Definitionen wurden erhalten. - Bestehende Debug-Konfiguration nur für die neue Quelldatei neu eingelesen, mit `-j10` gebaut und in den gestoppten Testserver installiert. Alle 25 Clientless-Regressionsskripte bestanden am abschließenden Stand. - Frischer Worldserver-Start mit `ready...`, fortlaufendem Prozess und Listener auf Port 8085 bestätigt. Keine Produktion und kein Push. - Arthoran reiste regulär von der Gilded Rose zum Freizeitanker im Handelsdistrikt. `INTENT_ARRIVED` und automatische Spaziergang-/Umherlauf-/Sitzszenen wurden beobachtet. Ein erster Ausritt erreichte einen Wegpunkt und wurde für den Katzentest unterbrochen; ein vollständiger Live-Rundritt ist damit nicht belegt. - Der erste Katzentest bestätigte die native Bombay-Katze und ihr Folgen. Er zeigte außerdem, dass die Leine ein beweglicher Kanalzauber ist. Der generische Reisemanager erhält diesen Kanal nun statt jeden Zauber pauschal abzubrechen. Nicht passende optionale Wegpunkte werden übersprungen; die tatsächliche Rückkehr bleibt verpflichtend. Hohe Dachpunkte sind für Bodenrunden ausgeschlossen. - Die native Leine hat fünf Yards Reichweite. Für die selbst beschworene Katze wird deshalb derselbe native Folgegenerator mit engerem Abstand verwendet; Abstandskontrolle läuft in jedem Weltupdate. Bestehende Begleiter behalten ihre eigene Bewegungskonfiguration. - Abschließender Live-Test: native Beschwörung von Kreatur 7385, normale Gegenstandsbenutzung von 37460 mit Zauber 48722 und `COMPANION_LEASH_CONFIRMED`. Zwei Bodenrunden mit 15 bestätigten Wegpunkten einschließlich Rückkehr. Alle 15 `COMPANION_WALK_SAMPLE`-Proben zeigten `leashed=1`, ohne `COMPANION_LEASH_LOST`; größte protokollierte Entfernung 3,27 Yards. Rückkehr am 27.10.2026 um 12:57:49 mit `NAV_COMPLETE`, danach `LEISURE_COMPLETE ... legs=15` und `COMPANION_END`. - Nach dem Rundgang blieb Arthoran im Freizeit-Intent und wechselte zum ruhigen Verweilen. Sein Startprofil war nur für den Testlogin temporär auf Freizeit/Sturmwind gesetzt und ist wieder auf den bisherigen Sozialstart zurückgesetzt; Katze, Leine und Freizeit-Affinität bleiben im Profil konfiguriert. Das ist eine serverseitige Bestätigung, keine visuelle Abnahme. Offen bleiben insbesondere das Aussehen der Katze an der Leine, vollständige Ausritte und Freizeit-Rundflüge sowie markierte Angelplätze und die Angelhaltung. Der zuvor verschobene visuelle Schlaftest bleibt davon unabhängig offen. ### Allgemeine lokale Spline-Segmentierung Beim anschließenden freien Umherlaufen trat der zuvor auch bei anderen Reisen beobachtete Fehler `_checkPathLengths()` für Arthoran auf. Ursache: Der Clientless-Reisemanager entfernte nur Abschnitte bis 0,05 Yards, während native Splines mindestens 0,1 Yards zwischen internen Punkten verlangen. Zusätzlich konnte das Kürzen bei 45 Yards einen zu kurzen letzten Rest erzeugen. Die Segmentbildung verwendet jetzt 0,11 Yards Mindestlänge als Rundungsmarge und endet bei zu kurzem Rest am letzten wirklichen Pfadpunkt. Danach folgt die nächste reguläre lokale Teilstrecke. Die native Prüfung bleibt unverändert. `test_local_spline_segments.py` führt die produktive Segmentbildung gegen die produktive native Längenprüfung aus, einschließlich des gefundenen Restfalls und 1.000 gesampelter Pfade. Der ergänzte Stand besteht alle 26 Clientless-Tests und wurde mit `-j10` erfolgreich gebaut. Nach Installation der Spline-Korrektur erreichte der Testserver erneut `ready...`; Prozess und Port 8085 wurden bestätigt. Der längere Live-Test `leisure_roam` durchlief acht bestätigte Wegpunkte einschließlich Rückkehr und endete am 27.10.2026 um 13:08:02 mit `NAV_COMPLETE` und `LEISURE_COMPLETE ... kind='roam' legs=8`. Dabei wurde auch eine native 45-Yards-Teilstrecke erfolgreich abgeschlossen und regulär fortgesetzt. Im frischen Serverlog trat für GUID 26 kein `_checkPathLengths()` mehr auf. Das temporär geänderte Test-Startziel ist zurückgesetzt. Der anschließende Katzenspaziergang wird für die Sichtprüfung wieder über den normalen Mikroaktionsbefehl gestartet. ## Korrektur: Freizeit nach einer Innenraumpause Der Nutzer beobachtete Arthoran wiederholt beim Sitzen statt beim Spazieren. Der laufende Auftrag war `leisure`, die letzten Szenen bestanden aber aus Sitzen, Essen und Trinken auf Sitzplätzen bei `(-8827,648,98)` beziehungsweise `(-8829,647,98)`. Die Auswahl sperrte bisher sämtliche Bewegungsaktionen im Innenbereich. Damit konnten Fußausflüge nach einer Innenraumpause nicht mehr angeboten werden. Die Außenstart-Voraussetzung gilt jetzt nur noch für Ausritte und Rundflüge. Spazieren, Umherlaufen und Haustierausführen dürfen im Innenbereich beginnen; sie verwenden weiterhin geprüfte Außenwegpunkte und vollständige MMAP-Wege. Ihr Rückkehrort ist in diesem Fall der Außenanker statt des Innenraum-Sitzplatzes. Feuerverbote und übrige Umgebungsprüfungen bleiben bestehen. Die Produktionsmethoden-Regression prüft ausdrücklich einen Innenraumstart, freigegebene Fuß-/Haustierausflüge, weiterhin gesperrtes Reiten/Fliegen und die Rückkehr zum Außenanker. Alle 26 Tests und der Build mit `-j10` bestanden. Die Korrektur ist installiert; der frische Testserver-Start erreichte `ready...`, Prozess und Port 8085 wurden bestätigt. Das nur für den Login geänderte Startprofil wurde zurückgesetzt. Im laufenden Server wurden danach ein automatisch ausgewählter Katzenspaziergang mit 15 bestätigten Wegpunkten und durchgehend aktiver Leine sowie ein anschließend automatisch ausgewählter Spaziergang beobachtet. Gezielte Sitzszenen waren an den jeweiligen momentanen Rundwegpositionen nicht verfügbar; eine Live-Abnahme des exakten Innenraum-Sitzplatz-zu-Außenweg-Übergangs ist damit noch nicht belegt. Zur direkten Sichtprüfung wurde der Katzenspaziergang erneut gezielt gestartet. ## Zusammenhängende Fußrouten (27.10.2026) Die oben dokumentierten früheren Live-Tests mit kleinen Kreisrouten sind historische Ergebnisse. Die neue Hin-/Rückwegplanung ersetzt diese Fußrouten. Der ausführbare C++-Regressionstest prüft Mindestreichweite, spiegelbildliche Rückwegpunkte, tatsächliche Ankunft, Rückkehr nach Zeitende und verweigerte MMAP-Verbindungen. Die sichtbare Natürlichkeit bleibt der Ingame-Abnahme vorbehalten. Live-Test des neuen Stands: Arthoran ging mit Katze und bestätigter Leine von `(-8818.91, 614.20, 95.18)` zum 131,60 Yards entfernten Ziel `(-8891.75, 504.59, 94.09)`. Alle neun Hinweg- und neun Rückwegankünfte wurden bestätigt; die rückwärts besuchten Kontrollpunkte stimmten innerhalb eines Yards mit dem Hinweg überein. Die tatsächliche Rückkehr lag unter 0,1 Yard vom Start entfernt. Alle 18 Begleiterproben bestätigten die aktive Leine. Danach wurde automatisch ein weiterer normaler Spaziergang geplant. Build mit `-j10`, Installation, Neustart, Ready-Meldung und Port 8085 waren erfolgreich; alle 26 Clientless-Testskripte bestanden. Das ist eine technische Live-Prüfung, keine abschließende visuelle Abnahme. ## Gleichmäßiges Tempo beim Haustierausführen Die häufigen kurzen Stopps nach wenigen Yards wurden durch das native Folgen ausgelöst: `MoveSplineInit::SetWalk` bestimmt das Splinetempo, setzt aber nicht das Spielerflag `MOVEMENTFLAG_WALKING`. Der Folgegenerator las für Spieler bisher nur dieses Flag und sagte deshalb Laufbewegung voraus, obwohl Arthoran ging. Die Katze eilte voraus und die berechtigte Leinen-Abstandskontrolle unterbrach daraufhin den Besitzer. Der generische native Folgegenerator verwendet jetzt bei einer aktiven Server-Spline deren tatsächliche Geschwindigkeit auch für Spieler. Ohne aktive Spline bleibt die Auswahl anhand der normalen Spielerbewegungsflags erhalten. Die Abstandsprüfung und der native Leinenzauber bleiben bestehen. Ein separater ausführbarer Regressionstest deckt servergesteuertes Gehen, explizite Tempi, Laufen, Kreaturen und normale Clientbewegung ab. Live-Prüfung der Tempokorrektur: Die Katze begleitete Arthoran über acht jeweils etwa 20 Yards lange Wegstücke (80 Yards hinaus und zurück). Für alle acht gab es genau einen `NAV_START` und einen `NAV_COMPLETE`, keine Unterbrechungen mit erneutem Start derselben Strecke. Alle acht Begleiterproben bestätigten die aktive Leine; der Abstand lag bei etwa 2,3–2,5 Yards. Die Pause am Wendepunkt blieb erhalten. Build mit `-j10`, Installation, Testserver-Neustart und alle 27 Clientless-Testskripte erfolgreich. Die abschließende visuelle Beurteilung erfolgt im Spiel. Der Nutzer hat anschließend sowohl die zusammenhängenden Fußspaziergänge als auch das flüssige Haustierausführen nach der Tempokorrektur visuell bestätigt. Schlafdarstellung, Ausritte, Freizeitflüge und Angeln sind dadurch nicht abgenommen. Training ergänzt Migration `2026_10_27_09_adventure_training.sql`. Es nutzt die Kampfreaktion, sucht höchstens 60 Yards lokal und respektiert das Ende des aktuellen Zeitblocks. Echte Angreifer unterbrechen das Training zugunsten der Selbstverteidigung. Kein Dummy-Spawn, Phasenwechsel oder künstlicher Schaden.