17 KiB
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_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:
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
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.
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
-j10gebaut 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_ARRIVEDund 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 15COMPANION_WALK_SAMPLE-Proben zeigtenleashed=1, ohneCOMPANION_LEASH_LOST; größte protokollierte Entfernung 3,27 Yards. Rückkehr am 27.10.2026 um 12:57:49 mitNAV_COMPLETE, danachLEISURE_COMPLETE ... legs=15undCOMPANION_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.