# Ruhe-Intent Stand: 27.10.2026. Technischer Intentname: `rest`. Ruhe ist ein eigenes Vorhaben mit anschließender Auswahl passender Mikroaktionen. Tavernen werden bei der Ortswahl stärker gewichtet als Siedlungen. Native Stühle und Bänke dürfen auch außerhalb von Tavernen benutzt werden, beispielsweise in Sturmwind. Ein Ort ohne passende Ruhemöglichkeit löst die Suche nach einer Ersatzlocation aus. ## Mikroaktionen | Schlüssel | Ausführung | |---|---| | `rest_seat` | Erreichbaren nativen Stuhl oder eine Bank aufsuchen, regulär benutzen und 60–100 Sekunden sitzen. | | `rest_sleep` | Einen geprüften Schlafplatz nahe dem Schlafanker oder im Gasthaus aufsuchen und 120–300 Sekunden mit nativer Schlafhaltung ruhen. | | `rest_ground` | Einen ausdrücklich markierten Bodenrastplatz aufsuchen und 60–120 Sekunden sitzen. | | `rest_drink` | Eine vorhandene native Sitzgelegenheit benutzen und Trinken darstellen. | | `rest_eat` | Eine vorhandene native Sitzgelegenheit benutzen und Essen darstellen. | | `rest_look` | Kurzes ruhiges Umsehen zwischen den Ruhephasen. | | `rest_fire` | Vorhandenes geeignetes Feuer nutzen oder an einem markierten Bodenrastplatz ein natives Kochfeuer entzünden, hingehen, sitzen, trinken und ruhen (45–75 Sekunden Szenenbasis). | Sitz-, Ess-, Trink- und Feuerabläufe verwenden dieselben Fähigkeiten wie Geselligkeit. `2026_10_27_01_adventure_rest_fire.sql` ergänzt `rest_fire` mit Auswahlgewicht 3, ohne vorhandene Szenen oder manuell geänderte Gewichte zu überschreiben. Für vorhandene Feuer gelten die bisherigen Ortsgrenzen, Phasen-, Sicht- und Navigationsprüfungen. Ein eigenes Feuer wird bei `rest` nur an einer Location mit Kategorie `rest_ground` erlaubt, zusätzlich zu den bestehenden Prüfungen auf Außenbereich, ebenen freien Boden, Wasser, Fallen und Zauberabklingzeit. Zusätzlich verbietet die gemeinsame Feuerfähigkeit das Entzünden innerhalb von Städten für sämtliche Intents. Dafür werden Stadt-/Handelskanal-Kennzeichen der nativen AreaTable am aktuellen Standort, in übergeordneten Gebieten und der Zone geprüft. Fehlende oder zyklische Gebietsdaten erlauben kein neues Feuer. Die Prüfung erfolgt auch unmittelbar vor dem Zaubern. Vorhandene geeignete Feuer bleiben in Städten und Gebäuden nutzbar. Ein fehlendes Feuer an einer Stadtbank oder in einer Taverne berechtigt nicht zum Entzünden. Der native Zauber 818 benötigt keine Kochkunst; erst das bestätigte Feuerobjekt erlaubt die anschließende Feuerrast. Verschwindet es, endet die Szene. Aufstehen und Aufräumen erfolgen über denselben Szenenabschluss wie bei den anderen Ruheaktionen. Gespräche, Bestellungen und Tanz gehören nicht zum anfänglichen Ruhe-Katalog. Die Zeit der Schlaf- und Bodenrastphase beginnt nach bestätigter Ankunft; die lokale Anreise verwendet den Gehmodus und kein Bodenmount. ## Geeignete Orte Die additive Migration ist `sql/custom/world/2026_10_27_00_adventure_rest.sql` (nach den bisherigen Verhaltens- und Geselligkeitsmigrationen anwenden). Die vorhandene Weltpunkt-Tabelle bleibt der Ortskatalog. Zusätzliche Kategorien: - `rest_seat`: Anlaufpunkt bei einer geeigneten nativen Sitzgelegenheit. - `rest_sleep`: ausdrücklich festgelegter Schlafplatz mit Position und Ausrichtung. - `rest_ground`: ausdrücklich festgelegter Bodenrastplatz. Ein Schlafanker ist keine automatische Bettinteraktion. Der Bot sucht heute eine freie Liegefläche in seiner Nähe, läuft regulär dorthin und nimmt die native Schlafhaltung ein (Details und Grenzen im Abschnitt zur Flächensuche unten). Dekorative Betten werden weder als benutzbar vorausgesetzt noch durch Teleports betreten. Neue Schlafplätze benötigen weiterhin eine visuelle Abnahme. Die Migration ergänzt einen Ruheplatz im Obergeschoss der Goldhainer Taverne (`goldshire_sleep_upstairs`) und einen Anlaufpunkt bei einer vorhandenen Sturmwinder Steinbank (`stormwind_rest_bench`, Spawn 219847, Entry 203946). Die Bankdefinition wird nur angelegt, wenn der passende native Spawn vorhanden ist. Bestehende Definitionen und manuell bearbeitete Gewichte bleiben erhalten. Beim Schlafen oder Bodenrasten muss der Punkt zur Fraktion und Karte passen und höchstens 30 Yards vom Aufenthaltsanker entfernt sein; maximal 12 Yards Höhenunterschied erlauben einen Schlafplatz im Obergeschoss. Der lokale Weg muss vollständig und unverdächtig sein und darf maximal 120 Yards lang sein. Anlauf und Ankunft prüfen auf andere Spieler am Platz. Die Ankunft muss innerhalb von 60 Sekunden und mit höchstens einem Yard Positionsabweichung bestätigt werden. Wasser, Fallen, Kartenwechsel, entfernte Ortsdefinitionen, veränderte Ruhehaltung und Kampf beenden beziehungsweise verhindern die Szene. Beim Abbruch oder Intentwechsel wird die Haltung zurückgesetzt. Fernreisen behalten die vorhandene sichere Übergabe an regulären Graphnodes. ## Bedienung Serverkonsole (im Spiel mit führendem Punkt): ```text clientless adventure intent 26 rest goldshire_tavern 3600 clientless adventure status 26 clientless adventure micro 26 rest_sleep clientless adventure intent 26 rest stormwind_rest_bench 3600 clientless adventure micro 26 rest_seat clientless adventure stop 26 ``` `micro` ist ein gezielter Test während eines laufenden passenden Intents am Zielort. Es umgeht weder Ortsbedingungen noch Navigation oder native Sitzbestätigung. Der Tagesplaner kann `rest` anhand von `activity_affinity.rest` auswählen (Standardgewicht 0,5); vorhandene gespeicherte Tagespläne werden nicht nachträglich umgeschrieben. Arthorans Tagesplan bleibt für die gezielte Sichtprüfung ausgeschaltet. ## Prüfungen ```bash python3 tests/clientless/test_adventure_rest.py python3 tests/clientless/test_adventure_rest_fire.py python3 tests/clientless/test_adventure_social_fire.py python3 tests/clientless/test_adventure_micro_reset.py python3 tests/clientless/test_adventure_intent_state.py python3 tests/clientless/test_adventure_social.py python3 tests/clientless/test_adventure_walk.py ``` Die neue Regression führt die produktiven Auswahl- und Aktualisierungsfunktionen mit kontrollierten Navigationsadaptern aus: geeignete Kategorien, Karte, Fraktion, Abstand und Höhe, bestätigte Ankunft, belegte Plätze, vollständige Ruhedauer nach Anreise, Navigationsfehler, Zeitlimit, Katalogänderung und unterbrochene Haltung. Bestehende Prüfungen decken Sitzbestätigung, Gehmodus, Aufräumen und Intentübergabe ab. Build und technische Tests ersetzen die visuelle Abnahme der neuen Ruheabläufe nicht. ## Testserverstand am 27.10.2026 - Debug-Build mit `-j10` erfolgreich, installiert. Alle neun ausgeführten Adventure-/Beobachter-Regressionsskripte erfolgreich. - Frische Worldserver-Sitzung mit `(worldserver-daemon) ready...`, fortlaufendem Prozess und geöffnetem Port 8085 bestätigt. - Goldhain: `INTENT_ARRIVED`, `REST_APPROACH` und `REST_CONFIRMED` für `goldshire_sleep_upstairs` bestätigt. Der lokale Weg führte über die Treppe und zwei Splineabschnitte mit `walk=1`; die tatsächliche Ankunft lag bei `(-9457.200, 32.800, 63.820)`. Angeforderte Schlafdauer: 131 Sekunden. Der nachfolgende Intentwechsel beendete diese Schlafphase vorzeitig. - Sturmwind: `INTENT_ARRIVED` und `rest_seat` bestätigt. Native Steinbank Entry 203936, Slotposition `(-8473.900, 847.299, 105.786)`, Slotfehler `0.000`, Sitzhaltung `5`, Bewegungs-GUID `26`. Der lokale Anlauf lief mit `walk=1`. Die Auswahl darf andere passende Bänke in der Nähe des Anlaufpunkts verwenden. - Der Banktest begann nach administrativer Positionierung am Kathedralenplatz; die anschließende Navigation zum Ruheort und die Sitzplatzbenutzung waren regulär. Die Fernreise von Goldhain zu dieser Bank ist nicht als erfolgreich geprüft einzustufen: der bestehende Graph plante einen weiten Umweg über Eisenschmiede (16 Schritte zum Hafenanker); der Versuch wurde beendet. Bei einer zwischenzeitlichen Rückreise traten außerdem vorhandene Navigationsfehler mit `_checkPathLengths()` auf. Diese Reiseprobleme wurden im Rahmen der Ruhe-Erweiterung nicht verändert. - Für den isolierten Banktest wurde der Startauftrag im Profil kurzzeitig angepasst und nach bestätigtem Login wieder vollständig zurückgesetzt. Arthoran bleibt zur Sichtprüfung im laufenden Ruhe-Intent in Sturmwind; sein Tagesplan ist aus. Das unveränderte Profil startet nach erneutem Login weiterhin den bisherigen Sozialauftrag in Goldhain. Offen bleiben die visuelle Abnahme der neuen Schlafdarstellung und des Ruheablaufs sowie eine reguläre Fernreise bis zum Stadtbank-Ruheort. Bodenrast ist automatisiert geprüft, hat aber noch keinen eigenen Live-Testpunkt. Weitere Ruheorte können über den bestehenden Ortskatalog ergänzt werden. Fortschreibung: Der Nutzer hat den lokalen Anlauf zur Stadtbank, Absteigen und Hinsetzen visuell bestätigt. Für die anschließende Schlafvorführung in Sturmwind wurde `gilded_rose_sleep_upstairs` im Obergeschoss der Taverne `the_gilded_rose` ergänzt. Die markierte Bodenposition verwendet die native Schlafhaltung; automatische Bettbenutzung ist weiterhin nicht implementiert. ## Feuerrast-Ergänzung am 27.10.2026 `rest_fire` ist im Testkatalog aktiv (34 Aktionen insgesamt). Die additive Migration wurde angewendet; vorhandene Feueraktionen für Geselligkeit und Abenteuer blieben unverändert. Alle 22 Clientless-Regressionsskripte und der Debug-Build mit `-j10` bestanden. Die Binärdateien sind installiert; der frische Start erreichte `ready...`, Prozess und Port 8085 wurden bestätigt. Arthoran wurde mit seinem Ruheauftrag in der Gilded Rose wieder eingeloggt. Sein Profil wurde nur für diesen Login temporär angepasst und anschließend bytegenau zurückgesetzt. `INTENT_ARRIVED` und natives Sitzen sind erneut bestätigt. Der gezielte Aufruf `micro 26 rest_fire` wurde dort mangels eines geeigneten erkannten Feuers abgelehnt; die laufende Sitzszene blieb erhalten. Damit ist die Laufzeitsperre an diesem Innenraum geprüft, nicht eine erfolgreiche Feuerrast. Feuererzeugung und vorhandene Feuer sind mit kontrollierten Adaptern getestet; eine positive Sichtprüfung der Feuerrast und der verschobene visuelle Schlaftest bleiben offen. Im aktuellen Testkatalog gibt es noch keine aktivierten `rest_ground`-Locations; neue Plätze müssen vor Freigabe räumlich geprüft werden. Die ergänzte Gebäudesperre/Stadtsperre ist ebenfalls gebaut (`-j10`) und installiert. Die drei betroffenen Feuer-/Szenen-Regressionsskripte bestanden, einschließlich unmarkierter Stadtviertel mit Stadt-Parent, getrennter Zone, Handelskanal-Kennzeichen, fehlender Gebietsdaten und weiterhin nutzbarer vorhandener Feuer. Die geladenen enUS-AreaTable-Daten bestätigen die Stadtkennzeichen unter anderem für Sturmwind und deren Vererbung an das selbst unmarkierte Untergebiet 1617. Der Testserver erreichte erneut `ready...`; Prozess und Port 8085 wurden geprüft. Arthoran ist wieder im Ruhe-Intent in der Gilded Rose, sein temporär angepasstes Startprofil ist zurückgesetzt. ## Schlafvorführung am 27.10.2026 Auf ausdrücklichen Nutzerwunsch wurde die Schlafprüfung wieder aufgenommen. Arthoran reiste regulär von Elwynn zur Gilded Rose. Der alte Schlafmarker lag 1,72 Yards vom nativen MMAP-Endpunkt entfernt und wurde deshalb von der strengen lokalen Ankunftsprüfung zurückgewiesen. Die native Navigation erreichte über die Treppe (-8865.066, 684.800, 105.517); der Marker wurde gezielt dorthin korrigiert (Migration `_06`, auf Test-DB bereits ausgeführt). Keine Lockerung der Ankunftsprüfung, kein Teleport. Der kurz verwendete Lua-Testoverride wurde bytegleich wiederhergestellt. `REST_CONFIRMED guid=26 point='gilded_rose_sleep_upstairs' posture='sleep' durationMs=168000` bestätigt die gestartete native Schlafhaltung. Die sichtbare Abnahme durch den Nutzer steht noch aus. Der Ruheauftrag gilt für diesen Testlauf; das normale Lua-Profil blieb unverändert. ## Flächensuche statt ungeprüfter Schlafposition Die Sichtprüfung vom 27.10.2026 zeigte Arthoran mitten im oberen Stuhl. `REST_CONFIRMED` belegte zuvor nur Navigation und Haltung, keine freie Liegefläche. Die Migration `_06` wird deshalb nicht weiter als räumlich abgenommener Platz betrachtet. Ihr Punkt dient jetzt als Suchanker; vorhandene Koordinaten bleiben erhalten. Schlaf sucht bis acht Yards um einen geeigneten `rest_sleep`-Anker; ohne nutzbaren Schlafanker dürfen freigegebene Tavernen als Suchanker dienen. Explizite Schlafanker haben Vorrang. Die Suche bleibt innerhalb von 1,5 Yards zur Ankerhöhe und im Innenraum. Sie ersetzt keine Anreise und teleportiert nicht. Reihenfolge innerhalb der Suche: 1. Phasenrichtige, gespawnte native Bettobjekte, deren Name ein vollständiges Bett-/Bedroll-/Bunk-/Cot-Wort enthält. Ein eigener nativer Betttyp existiert nicht; auch Betten vom Typ Chair werden nicht als Stuhl benutzt. 2. Geometrisch mögliche erhöhte Liegeflächen mit abrupten Kanten auf beiden Seiten (mindestens 0,35 Yards Abfall auf 0,15 Yards Strecke, höchstens ein Yard Höhendifferenz). Das ist eine Heuristik, keine sichere Bettklassifikation; ein passender Tisch kann geometrisch gleich aussehen. 3. Ein freier ebener Bodenplatz, auch in Gasthäusern ohne Bett. Für jede Ausrichtung wird eine modellgrößenabhängige Körperfläche geprüft: mindestens 3,2 × 1,3 Yards, größere Charaktermodelle entsprechend größer. 45 Stützstellen müssen eine gemeinsame ebene, trockene Fläche ergeben (maximal 0,18 Yards Abweichung). Native VMAP-/dynamische Sichtlinien auf mehreren Körperhöhen und senkrechte Abfragen prüfen Möbel, Wände und niedrige Überbauten. Native Stühle werden zusätzlich mit Sicherheitsabstand ausgeschlossen, auch wenn ihr Modell keine nutzbare Kollision besitzt. Andere Spieler und Kreaturen dürfen die Körperfläche nicht belegen. Dekoration ohne Kollisionsdaten und ohne eigene erkennbare Objektkennung bleibt technisch nicht sicher erfassbar. Der gewählte Platz und seine Ausrichtung werden getrennt vom Suchanker in der Szene gespeichert. MMAP muss ihn vollständig und unverdächtig erreichen; maximale Endpunktabweichung 0,3 Yards, tatsächliche Ankunft höchstens 0,35 Yards. Ein Pfad auf dem Boden unter einer Bettfläche gilt damit nicht als Bettankunft. Die Flächenprüfung wiederholt sich unmittelbar vor der Schlafhaltung und alle zwei Sekunden während des Schlafens. Änderungen beenden die Szene über das vorhandene Aufräumen. Bodenrast (`rest_ground`) behält ihr bisheriges Verhalten. Neue Regressionen: `test_adventure_rest_space.py` (produktive Flächen-/Kantenregeln), `test_adventure_rest_targets.py` (produktive native Objektauswahl und Suchadapter). `test_adventure_rest.py` prüft zusätzlich den vom Anker abweichenden Zielpunkt, die erneute Flächenprüfung und den Abbruch bei nachträglicher Belegung. Liveprüfung des Flächenausbaus am 27.10.2026: - Debug-Build (`-j10`) erfolgreich, sauber gestoppt, installiert und neu gestartet. Frische Ready-Meldung nach elf Sekunden, Prozess 31446 und Port 8085 bestätigt. - Alle 38 zunächst vorhandenen/ergänzten Testskripte bestanden; der danach ergänzte native Zieladaptertest ebenfalls, insgesamt 39. Die anschließend erweiterten Ruhe-, Flächen- und Zieladaptertests erneut erfolgreich. - Arthoran erreichte den oberen Suchanker regulär. Suche: `beds=0 raised=0 floor=18`. Gewählt wurde `(-8868.534, 682.800, 104.949)`, Ausrichtung 3,740. Native Geh-Anreise über 4,03 Yards, Endpunktfehler 0,00, danach `REST_CONFIRMED` mit 243 Sekunden Schlafdauer. Kein Teleport/Objektbenutzen. - Source- und installierte Profilkopie entsprechen wieder dem unveränderten Normalprofil (SHA256 `26b11c3108e6ecc5dbc59d1852b4103ca4e818148603a34c02a470c969dc659b`). - Bett-/erhöhte-Flächen-Präferenz ist durch produktive Adapterfixtures geprüft, noch nicht positiv live an einem realen Bett. Sichtprüfung des neuen Bodenplatzes durch den Nutzer bleibt offen. Keine neue DB-Migration nötig. Erneute Suche auf Nutzerwunsch bei Allitester: separater Testanker `gilded_rose_sleep_room_test`, (-8877.360, 673.489, 104.950), O=0,649831. Arthoran erreichte den Punkt nach frischem Laden des Reisepunkt-Caches regulär. Auch hier `beds=0 raised=0`, zuletzt `floor=46`; Schlafhaltung am Boden bestätigt (143 Sekunden). Die sichtbaren Zimmerbetten sind damit weiterhin nicht erkannt; der genaue geometrische Ablehnungsgrund wurde noch nicht instrumentiert. Der ältere Anker wurde für die gezielte Auswahl kurz ausgeblendet und danach vollständig wieder aktiviert. Normalprofil unverändert wiederhergestellt.