Files
Viano-Core/doc/clientless/SESSION-RESUME.md
T
Nico 04aa87fcfc
clang PCH / build (push) Waiting to run
GCC PCH / build (push) Canceled after 0s
Add profile-driven AdventureBot character generation
2026-10-28 11:30:47 +01:00

810 lines
49 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Aktuell: Automatische AdventureBot-Erzeugung abgeschlossen
Stand28.10.2026 auf feature/clientless-player-core. Nutzer beauftragte einen
Generator für neue Bots mit RP-Namen/Profilen, passenden Fähigkeiten, Berufen
und Ausrüstung; Kennzeichnung für spätere temporäre Rotation. Nutzer hat den
lokalen Commit beauftragt; kein Push. SQL-Migration2026_10_28_00_adventure_generator.sql
wegen SQL-Ignore bereits gezielt vorgemerkt; Test-Charakter-DB zweimal angewendet.
ClientlessCharacterFactory ist generische native Infrastruktur ohne Adventure-
Abhängigkeit: Player::Create, validierte zufällige Optik, Geburt auf Zielstufe
via native Initialisierung statt GiveLevel-Belohnungen, Vorbereitungscallback,
gemeinsamer Save+Profil+Homebind+Ownership-Commit; Cache/Hook erst nach Erfolg.
Neue AdventureGeneratorMgr/Policy: zehn native legale Klassen-Archetypen,
zwölf Völker, kulturelle Namensgrammatiken, Herkunft/Beruf/Personalityprofile.
Profile liegen in Character-DB und werden als generated:<guid> im vorhandenen
Lua-Sandboxparser geladen. Handgeschriebene Namensprofile haben Vorrang und ihre
Namen werden bei Erzeugung reserviert. Keine Laufzeitdateien im Profilquellbaum.
Wichtige Live-Fixes: Berufs-Lernzauber mit Effekt44 wirken vor Welteintritt
nicht zuverlässig. Native SkillRaceClass/SkillTiers + Player::SetSkill bereiten
legale volle Ränge vor; Hilfsfunktion verweigert Online-Spieler. Online-
Selbstversorgung unverändert. Rollen-Ausrüstung prüft native Equipregeln,
Werte, temporäre/reputations-/gebietsgebundene Items, Mana-/Zauber-/physische
Effekte und keine doppelten ausgerüsteten Einträge. Ersetzte Items bleiben in
Taschen. Native Trainer::CanTeachSpell lediglich read-only öffentlich gemacht.
Arms nutzt vorhandenen Talentplan, andere Klassen gültigen Tier-Basisplan.
Befehle: clientless generate create <account> <count> [level faction archetype
persistent|temporary seed]; optionale fünf Parameter nur gemeinsam. Kurzform
level60, any/any, persistent. Count1..10, level10..85, DK>=55, Account normal
und ohne Netzwerksitzung, normale Realm-Charaktergrenze. Beispiel für Tests:
clientless generate create 6 1 60 alliance warrior temporary 42.
list/profile/login/logout/equip/retire <guid>. Erzeugung offline; login explizit.
equip nur eigener online/lebender/ruhiger Bot, native Checks, alte Items behalten.
retire nur eigener offline-temporärer Bot, markiert nur Metadaten, keine Löschung.
Automatische Rotation, Löschung, Accountanlage und Populationssteuerung später.
Vollständige Doku: doc/clientless/generator.md.
Debug-j10 erfolgreich installiert,62/62 Tests bestanden. Testserver88947 läuft,
frische Ready + Port8085 verifiziert. Vier neue Stufe60-Bots online und mit
individuellen DB-Profilen nach Neustart/Relog wieder geladen:
-29 Aelion, Nachtelf-Krieger, Teldrassil/poi_guard_111.
-30 Zanzan, Troll-Krieger, Durotar/poi_tele_823.
-31 Lenara, Worgen-Magierin, Elwynn/poi_npc_280710.
-32 Aldren, Untoter-Todesritter, Silberwald/poi_npc_321922.
Native Talentbäume746/746/851/400, Talentzeilen13/13/14/12,
Zauberanzahl80/80/87/64. Alle vier Nebenberufe und vier22er-Glutseidenstofftaschen,
alle fünf Vorratsstacks20. Primär: Krieger/DK Mining450+Smith375; Magierin
Tailoring375+Enchant375. Werte stammen aus gegenwärtigen nativen Trainerdaten.
Ausrüstungsauffrischung29..32 nativ erfolgreich gespeichert, alte Items behalten.
NPC-Szenen und lokale soziale Intents laufen; keine visuelle Abnahme behauptet.
Eigene frühere Testcharaktere27 Dagri und28 Jarana sind retired/offline, mit
vollständig erhaltenen Daten. Retire26 verweigert (kein generierter Besitz),
Login27 verweigert (retired). Inventarzuordnungen/Entries für21 und26 gegenüber
vorher bytegleich (Hash im Checkpoint). Arthoran wurde für Wartung sauber
abgemeldet und bleibt OFFLINE; keine Profiloverrides, keine Teleportierung.
Bestehende Sourceprofile unverändert. Account6 enthält nun7 Charaktere, normale
Realmgrenze beachten; archivierte Charaktere belegen weiterhin Plätze.
Ein erster Start traf bekannten temporären Auth-DB-Ausfall10.0.0.1. Nicht
reagierender Fehlstart76094 perSIGTERM beendet, zweiter Versuch erfolgreich;
keine VPS-/Produktionskonfiguration geändert. Spätere Starts erfolgreich.
Für alle neuen Klassen gilt weiter: bekannte Fähigkeiten sind keine fertige
Klassen-Kampfrotation; außer Krieger bisher grundlegender Autoangriff. Rollen,
Bot-Gruppenbildung, PvP-Erstangriffe und Rotation bleiben spätere Aufgaben.
Belege: doc/clientless/checkpoints/2026-10-28-generator/. Aktuelle Logs
/tmp/vcore-generator-{build-refit,install-refit}.log; DB-Helfer
/tmp/vcore-generator-db.py audit/details/compare (keine Zugangsdaten ausgeben).
Nutzer hat alle CMake- und tmux-Befehle sowie git add/commit auf diesem Branch
ausdrücklich dauerhaft autorisiert. Keine erneuten inhaltlichen Rückfragen;
technische Sandboxregeln bleiben maßgeblich. Kein Push ohne ausdrücklichen Auftrag.
---
# Aktuell: Interaktionen und spielergeführte Gruppen umgesetzt
Stand 28.10.2026. Nutzer beauftragte Umsetzung nach gemeinsamer Planung.
Branch feature/clientless-player-core; vorher sauber. Nutzer hat den lokalen
Commit dieses Stands beauftragt; kein Push. Neuer AdventureInteractionMgr/Policy,
generische GUID-Queues für Textemotes und tatsächliche Kampfhilfe, native
Einladungsantworten, intent-/persönlichkeitsabhängige Annahme, MMAP-Folgen und
TravelGraph-Handoff, grundlegende Gruppen-Kampfunterstützung. Spieler/Pet-
Selbstverteidigung im bestehenden CombatMgr, keine eigenständigen PvP-Angriffe.
Details und Grenzen in doc/clientless/interactions.md.
Austritt nur außerhalb Kampf/Tod/Instanz/Transport/Flug. Intent-/Locationwechsel
oder manuelle Blockfrist erlaubt Entscheidung; group_loyalty beeinflusst Bleiben
(Arthoran0.35, Standard0.25). Native AFK oder beobachtete Inaktivität des
Anführers volle600s; Führungswechsel beginnt neues Zeitfenster. Chat/Emotes,
Zauber/Itemanfragen, Bewegung/Blick/Ziel, Kampf/Casts zählen als Aktivität.
Native Gruppenmitgliedschaft bleibt über Neustart; Beobachtungsfristen starten
neu. Rollenprofile, autonome Bot-Gruppen, freie Chatgespräche und eigenständige
PvP-Erstangriffe bleiben ausdrücklich spätere Arbeit.
Debug-Build-j10 erfolgreich installiert. 57 Testskripte bestanden: vollständiger
56er-Lauf plus neuer Social-Queue-Concurrencytest; der anschließend erweiterte
Combat-Test für echten Spielerfokus zusätzlich erneut erfolgreich. Native
Testserver PID59086, frische Ready-Meldung und Port8085 bestätigt. Arthoran26
online, Persönlichkeit8Werte, neue Diagnose clientless interaction26 erfolgreich:
sociability0.65/loyalty0.35, keine Gruppe. Echte Kreaturen-Selbstverteidigung
nach Neustart weiterhin beobachtet, kein Beleg für Live-PvP/Gruppenannahme.
Arthorans unveränderte initiale Profilvorgabe startete bei Login die normale
Goldhain-Reise. clientless adventure stop26 wurde angefordert, letzte Diagnose
noch Switching/waiting for safe player/transport state. Keine Teleportierung,
kein temporärer Profiloverride; normale Herkunftsdateien bleiben erhalten.
Für Live-Abnahme Position und Reise zuerst erneut prüfen. Gruppeneinladungen
werden in Flug-/Transport-/Kampfzuständen bis zur sicheren Lage zurückgestellt.
Beim sauberen Shutdown der ALTEN, vor Installation laufenden Binärdatei trat
Object.h:448 GetMap ASSERTION FAILED m_currMap auf. AlterProzess49765 endete;
keine fremden Prozesse beendet. Das ist ein beobachteter Shutdownfehler des
Ausgangsstands, Ursache hier nicht untersucht/behoben. Neuer Start erfolgreich.
Offene Gameplay-Abnahmen: echte Spielereinladungen, zwei gleichzeitige Bots,
PvP/Pet-Verteidigung, native Gruppenportale/kartenübergreifendes Folgen,
zehn echte Minuten AFK. Klassenrotationen außer Krieger und Supportrollen
weiterhin begrenzt. Belege: checkpoints/2026-10-28-interactions/.
Logs /tmp/vcore-interactions-{build-final,install}.log und zugehörige Tests.
---
# Aktuell: Selbstversorgung und gemeinsame Nebenberufe abgeschlossen
Stand 27.10.2026. Branch feature/clientless-player-core, vorheriger Commit
c0c799c4b6. Nutzer hat den lokalen Commit der Selbstversorgung beauftragt; kein Push.
Debug-Build -j10 erfolgreich installiert, alle 55 Testskripte bestanden.
Testserver PID 49765 läuft; frisches Ready und Port 8085 bestätigt.
AdventureSupplyMgr/Policy versorgt AdventureBots zu Tagesbeginn und nach
Kampfende bis zu jeweils einem nativen Stack: Verbände, Heil-/Manatränke,
Essen und Trinken. Vier Glutseidenstofftaschen54443 mit je22 Plätzen ergänzen
Arthoran. Alte Gegenstände blieben erhalten, Geld weiterhin0.
Migration world10 und characters01 angewendet und trotz SQL-Ignore gezielt
vorgemerkt. Persistierter Tagesstempel verhindert Nachschub bei jedem Login.
Nutzerregeln umgesetzt: Selbstheilung beginnt erst bei mindestens10% fehlenden
HP. Außerhalb des Kampfes zuerst ein nutzbarer Verband; bei Sperre direkt Essen,
nach Verband Essen nur bei weiter mindestens10% Mangel. Mananutzer trinken bei
passendem Mangel. Im Kampf nur native Tränke. Echte Item-Anfragen, Verbrauch,
Abklingzeiten und Verbandssperre; keine direkte HP/Mana-Zuweisung außer dem
expliziten Diagnosebefehl testrecovery. Intents behalten ihre ursprüngliche Frist.
Auf ausdrücklichen Nutzerwunsch erhalten alle AdventureBots die stufengerecht
verfügbaren Nebenberufe Erste Hilfe, Kochen, Angeln und Archäologie, innerhalb
nativer Traineranforderungen und Fertigkeitsgrenzen. Keine Hauptberufe geändert.
Arthoran gespeichert: ErsteHilfe375/375, Kochen525/525, Angeln525/525,
Archäologie375/375. Er verwendet schwere Netherstoffverbände21991.
Native Trainer erlauben Kochen/Angeln525 bei diesem Charakter.
Notwendige native Fehlerkorrektur: Player::GetPureMaxSkillValue hatte eine
invertierte Prüfung und lieferte für gelernte Fertigkeiten null. Fehlendes !
korrigiert, eigener nativer Regressionstest vorhanden. Nebenberufsausbildung
berücksichtigt sowohl Skill-Effekt118 als auch den nativen Lerneffekt44.
Live bestätigt:
- Vier22er-Taschen und alle fünf Stacks20, vorhandene Item-GUIDs erhalten.
- Markierte8%-Testverletzung: kein Verbrauch.
- Markierte80%-Testverletzung: echter Verbandverbrauch, danach4961/5249HP;
weniger als10% fehlend, daher kein Essen.
- Erneute Testverletzung bei nativer Verbandssperre: echtes Essen, volleHP.
- Gleicher Tagesstempel beim erneuten Login: Verband19/Essen19 bleiben bestehen,
kein weiterer Tagesnachschub.
- Echter Bärenkampf gegen Spawn300425 mit markiertem anfänglichem30%-Defizit:
Heiltrank22829 im Kampf verbraucht. Danach exakt je ein Verband, Heiltrank
und Essen ergänzt; alle fünf Bestände20. GespeichertHP5249, Geld0.
- Manaspezifisches Verhalten produktiv mit Adaptern geprüft, nicht mit echtem
Manacharakter. Administrative Testpositionierung ist kein Fernreisebeleg.
Arthoran bleibt angemeldet in den Verwüsteten Landen am Bären-Testplatz,
reagiert auf Gegner und versorgt sich selbst. Normales Lua-Profil bytegleich
restauriert; kein temporärer Override. Dokumentation: doc/clientless/supplies.md.
Belege: doc/clientless/checkpoints/2026-10-27-supplies/.
Logs: /tmp/vcore-supplies-build-final.log und /tmp/vcore-supplies-tests-final.log.
DB-Helfer /tmp/vcore-instance-db.py supplies_audit. Diagnose:
clientless combat supplies26, testrecovery26<fehlende-Prozent1..80>.
Die bisherigen Server-/Branchregeln und vertagte Pfadfindungsarbeit gelten weiter.
---
# Aktuell: Training, echte Gegner und Todesverhalten abgeschlossen
Stand 27.10.2026. Auf feature/clientless-player-core bleiben alle bisherigen
Änderungen erhalten. Debug-Build mit -j10 erfolgreich installiert; alle 51
Testskripte bestanden. Testserver PID 45545 läuft mit frisch geprüftem Ready
und Port 8085. Nutzer hat den lokalen Commit aller Änderungen beauftragt; kein Push.
Neue AdventureCombatMgr und AdventureCombatPolicy überlagern den Adventure-
Controller während Kampf und Tod. Tatsächlich angewandter Kreaturenschaden
wird über eine threadsichere GUID-Queue geordnet an den Controller übergeben.
Der erste Angreifer bleibt Fokus; weitere folgen nach dessen Tod. Abenteuer
berücksichtigt Gegner am aktiven MMAP-Pfad, Kürschnerei nur Tiere bei bestehendem
Profilrecht. Arthoran bleibt Bergbau/Schmied. Konservative Erstangriffsfilter:
höchstens +2 Level, mindestens 60% HP und gegebenenfalls 30% Mana, keine Elites,
Weltbosse oder Gegnergruppen. Andere Intents jagen nicht.
Migration 09 ergänzt leisure_training für 60–180 Sekunden an echten erreichbaren
Puppen im lokalen 60-Yards-Umkreis. Bereits in Test-DB angewendet und trotz
SQL-Ignore gezielt vorgemerkt. Ursprüngliche Intentfristen bleiben erhalten.
Todesablauf: native Freigabe, gespeicherter Leichenzeitpunkt, MMAP-Punkte innerhalb
39 Yards und native Aufnahmefrist. Ohne passenden Pfad nach 300 Sekunden native
Friedhofsrückkehr und Wiederbelebung ohne Geistheiler-Mali.
Live erfolgreich geprüft:
- Trainingsszene: MMAP-Anreise, native Angriffe und reguläres Ende nach 60 Sekunden.
- Echter Bär, Entry 42336 / Spawn 300425, Stufe 58: besiegt, native Respawnzeile
bestätigt. Tatsächlicher Gegentreffer löste den Selbstverteidigungsfokus aus.
- Expliziter Testtod 1: Freigabe um 1793138872, kein akzeptierter Rückweg;
volle 300 Sekunden tatsächlich abgewartet. Friedhofswiederbelebung, anschließend
lebend gespeichert, keine Leiche oder Wiederbelebungskrankheit.
- Expliziter Testtod 2 nahe Friedhof: tatsächlicher MMAP-Geisterlauf von 37,40
Yards und native Leichenaufnahme. Danach HP 4340 gespeichert, keine Leiche
oder Aura 15007. Kein natürlicher Kampftod behauptet.
- Administrative Offline-Positionierung diente nur isolierten Tests; kein Beleg
für Fernanreise. Mehrfachangreifer und Neustart während Geisterlauf bislang
durch Produktionsadapter geprüft, nicht durch entsprechende Live-Abnahme.
Arthoran ist wieder angemeldet, ohne Fernauftrag am letzten Rücklaufpunkt:
Karte 0, (-12187.9, -2603.74, 1.5777), Verwüstete Lande. Er reagiert auf Angreifer.
Normales Lua-Profil bytegleich restauriert; kein temporärer Override vorhanden.
Befehle: clientless combat train <guid> [seconds], attack <guid> <spawn-id>,
testdeath <guid>, stop <guid>. Testdeath ist ein markierter nativer Diagnosetod
für einen verwalteten Bot ohne zusätzlichen Haltbarkeitsverlust.
Belege: doc/clientless/checkpoints/2026-10-27-combat/.
Logs: /tmp/vcore-reactive-combat-build-final.log und
/tmp/vcore-reactive-tests-final.log. DB-Helfer: /tmp/vcore-instance-db.py,
Modus combat_live_state. Vorherige Ausrüstung/Reparatur-WIP bleibt erhalten.
Pfadfindungsüberarbeitung bleibt vertagt. Weitere Klassenrotationen und konkrete
Spieler-/Bot-Interaktionsregeln sind noch auszuarbeiten.
---
# Wiederaufnahme: Kampfausstattung und Reparaturtest
Stand 27.10.2026: Branch feature/clientless-player-core, bestehende Änderungen
bewahren. Debug-Build erfolgreich, installiert; Testserver PID41714 frisch ready
und Port8085 bestätigt. 48 Testskripte bestanden. Kein Push oder neuer Commit.
Arthoran26 trägt neun native Kopien von Allitester21 (Zorn und Ashkandi),
26/26 native Waffen-Talentpunkte Baum746, stufengerechte Klassenfähigkeiten.
Originalquelle unverändert, alte Ausrüstung in Taschen. Begrenzte Trainingsübung
an echter Puppe314147 erfolgreich: native angenommene Fähigkeiten protokolliert.
Phase169 ist Standard; keine Phasenänderungen. Ursprüngliches Problem war LOS.
Volle autonome Kampf-/Todes-/Interaktionssteuerung bleibt zukünftige Umsetzung.
Malusfreie Friedhofswiederbelebung nach5min ohne Pfad ist verbindliche Vorgabe.
NEU: economy_repair, Migration08 bereits Test-DB angewendet. Liveprüfung läuft:
Arthoran ausgeloggt, nur seine neun Kopien auf halbe Haltbarkeit gesetzt,
Position administrativ an poi_tele_954 (Handelsdistrikt), wieder angemeldet.
Intent economy am Anker angekommen; Mikroaktion economy_repair gestartet,
echter Händler1287/GUID1879, native MMAP-Anreise. Abschluss bestätigt: ECONOMY_REPAIR_COMPLETE; nach saveall alle neun Kopien
wieder auf voller Haltbarkeit, Geld weiterhin0, Allitester unverändert.
Ausgangswerte /tmp/vcore-repair-before.tsv.
Normales Lua-Profil bytegleich restauriert, kein temporärer Override.
Werkzeuge /tmp/vcore-instance-db.py gear_verify (prüft auch Allitester-Hash),
repair_test_prepare NICHT WIEDERHOLEN. Konsole saveall nach Reparaturabschluss,
ECONOMY_REPAIR_COMPLETE in Server.log prüfen. Gegebenenfalls Szene beobachten.
Build-/Testlogs /tmp/vcore-combat-preparation-{build,tests-final}.log.
Migration08 wird von *.sql ignoriert, gezielt force-add für Erhalt erforderlich.
Reparaturprüfung abgeschlossen; Arthoran darf den Wirtschaftsintent weiter ausführen.
---
# Neuer Arbeitsbereich: Kampf, Reaktionen und Interaktionen
Alle sieben Grundintents sind abgeschlossen und die bisherigen Änderungen
lokal committet (e18a416bf4). Der Nutzer hat die visuelle Instanzabnahme erlassen.
Jetzt Kampf, reaktives Verhalten, Bot-Spieler und Bot-Bot gemeinsam ausarbeiten.
Neue Regeln/Vorprüfung in `combat-reactions.md` dauerhaft festgehalten.
Nutzer: Selbstverteidigung fokussiert erste tatsächlich schädigende Kreatur bis
zu deren Tod; weitere Treffer wechseln den Fokus nicht. Erstangriffe wählen
nächstgelegenes gültiges intentspezifisches Ziel: Abenteuer nahe Feindkreatur auf
aktuellem Weg; Beruf/Lederjagd nahes geeignetes Tier. Stärkecheck verhindert
leichtsinnige Angriffe auf deutlich stärkere Gegner. Exakte Grenzwerte noch offen.
Tod: Leichenrücklauf als Geist, native Wiederbelebungsreichweite; ohne Pfad nach
fünf Minuten Friedhofswiederbelebung. Native Handler/39-Yards-Radius vorhanden.
Timerherkunft und weitere Randfälle als Auslegung/Vorschlag markieren.
Arthoran bleibt mining/blacksmithing; keine stillschweigende skinning-Freigabe.
Sammeln weiterhin performativ, neu gewünschter Kampf real.
PlayerAI.cpp gründlich geprüft. Viel vorhandene Klassen-/Zauberlogik, aber
Charm-Steuerung muss entkoppelt werden. Technisch nicht ungenutzt: Unit::UpdateCharmAI
und mehrere Bossskripte verwenden sie. Unit::DealDamage liefert UnitAI-Callbacks
und UnitScript-OnDamage VOR endgültigem HP-Abzug: tatsächlichen Erstschaden
sauber bestätigen, keine Nullschaden-/Godmode-Fokussierung.
Noch keine Kampfimplementierung oder Livekampftests in dieser Vorprüfung.
Nur Dokumentation neu/uncommittet; keine weiteren Commits ohne konkreten Bedarf.
Details zu Flucht, Zielverlust, verbleibenden Angreifern, Erstangriffsschwellen
und konkreten Spieler-/Bot-Reaktionen noch nicht als Nutzerentscheidungen ausgeben.
---
# Aktuell: Instanzintent implementiert und technisch live geprüft
Stand 27.10.2026, letzter Testserverprozess PID **35865**, frisches Ready beim
letzten Restart und Port 8085 geprüft. Nutzer beauftragte Umsetzung einschließlich
zufälliger Verletzung (0–50 Prozent Max-HP) nach Rückkehr. Umsetzung fertig,
Der Nutzer hat ausdrücklich auf eine weitere visuelle Abnahme verzichtet.
Alle vorhandenen Änderungen sollen gemeinsam lokal committet werden; kein Push.
Details: `instance-intent.md`.
Implementierung:
- Intent `instance`, eigener Tagesplanwert (Default .5), feste Phasen statt
zufälliger Innenraum-Mikroaktionen. Anreise verbraucht Blockzeit; zehn Sekunden
Vorbereitung; tatsächlicher nativer Eintritt; Warten direkt dahinter; Rückkehr
zu Blockende minus fünf Minuten; Nachruhe bis zum ursprünglichen Blockende.
- Neue native Außenwelt-Aliase `instance_visit_at_<Trigger-ID>` und editierbare
Ein-/Ausgangszuordnung. 108 Eingänge in Test-DB, insgesamt 2.973 Locations /
3.966 Worldpoints. Innenräume bleiben reine native Karten/Graphknoten.
- Charakterpersistenz enthält Phase, Trigger, Instanz-ID, absolute Frist,
einmal gezogenen Verletzungswert und injury_applied. Gemeinsame Transaktion
mit Player::SaveToDB über ASYNC-Worker, bestätigter Commit vor Fortschritt.
- Optionales WorldScript in viano_bot_commands.cpp meldet nur gespeicherte
Besucher beim Serverstart automatisch mit dem Adventure-Controller an.
Wiederaufnahme hat Vorrang vor normalem Lua-Initialintent.
- Getrennten Hinterausgang aus nativen Daten bevorzugen, expliziter Override
möglich. Verborgene Dungeon-Durchquerung wird innen bis zum echten Ausgang
abstrahiert, danach nativer Trigger. Fehlender Ausgang: Eingang. Keine Kämpfe,
Beute/Inventar-/Geldänderung, keine DungeonBot-Abhängigkeit.
Geprüft:
- Debug-Build -j10, installiert, **44 Testskripte im vollständigen abschließenden
Lauf bestanden** (/tmp/vcore-instance-tests-final.log).
- Beide additiven Migrationen angewendet. Tabellen-Collation unicode_ci passt
zum bestehenden Schema; Dateien wegen *.sql-Ignore gezielt mit git add -f
vorgemerkt, alle übrigen Änderungen uncommittet. Kein Push.
- Verlies-Eingang 101, Ausgang 503, Karte34/Instanz-ID1 tatsächlich betreten.
Echter Serverneustart während Phase3: automatischer Login, gleiche Instanz-ID1,
ursprüngliche absolute Frist beibehalten. Normales Lua-Profil war restauriert.
- Für schnelle Rückkehrprüfung wurde ausschließlich nach sauberem Serverstopp
die Test-Besuchsfrist verkürzt. Original in
/tmp/vcore-instance-live-original-deadline.tsv. Keine normale Codefrist geändert.
- Native Rückkehr nach Karte0 (-8766.11,845.499,87.9952), zunächst zweimal echte
0%-Würfe, nächster regulärer kurzer Testblock 17%: **2165/2609 HP**.
Charakter-DB bestätigte Phase5, loss_percent17, injury_applied1 und HP2165.
- Erneuter Logout/Login während Phase5: gleiche Frist, injuryApplied1, kein
Neuwurf/keine zweite Verletzung. Aktuell Nachruhe vor dem Verlies bis
Deadline1793128202; anschließend endet der manuelle Testauftrag. Zustand bei
Wiederaufnahme neu prüfen; keinen weiteren Test automatisch starten.
- Normales Profil in Quelle UND Installation bytegleich normal (SHA256
26b11c3108e6ecc5dbc59d1852b4103ca4e818148603a34c02a470c969dc659b).
Kein temporärer Lua-Override. Nach saveall Geld-/Inventar-SHA256 unverändert
8d40931782d05219466ba9fd077ce7acd3e02bd53eb63f6e96115042c620d26a.
Wichtig: Fernanreise NICHT live erfolgreich verifiziert. Vorhandene Graph-
Recovery-Schleifen führten erst nach Goldhain, dann durch Sturmwind. Nutzer hat
Pfadfindung/Hinderniserkennung ausdrücklich auf später verschoben. Daher wurde
für den isolierten Instanztest nur der ausgeloggte Testbot administrativ an den
realen Außeneingang gestellt; anschließender lokaler MMAP-Anschluss und Eintritt
waren regulär. Kein Instanzteleport als erfolgreicher Eintritt ausgegeben.
Todesminen-Hinterausgang und zwei unabhängig gleichzeitig betretene Kopien nur
produktive Adaptertests/Quellprüfung, noch kein entsprechender Livevergleich.
Erster Liveversuch fand meinen falschen SYNCH-Transaktionsweg; Debugserver
beendete sich vor der Anreise. Fehler korrigiert auf AsyncCommitTransaction mit
Commitresultat. Nachfolgende native Saves/Neustarts erfolgreich, Fehlerlog
/tmp/vcore-instance-first-live-DBErrors.log erhalten. Nicht als aktuelles Problem
missverstehen. Aktuell keine neuen Instanz-SQL-/Startfehler beobachtet.
Alle Schlaf-WIP-Änderungen von vorher erhalten. Bett-/Hinderniserkennung bleibt
auf Nutzerwunsch zurückgestellt. Nur feature/clientless-player-core verwenden.
---
# Aktueller Auftrag: Instanzbesuche – Nutzervorgaben konkretisiert
Wirtschaftstest vom Nutzer als ausreichend beendet; nächster Intent sind
Instanzbesuche. Details verbindlich in `instance-intent.md` festgehalten.
Rest des gewählten Location-Zeitblocks, letzte fünf Minuten Nachruhe draußen.
Beispiel 60 Minuten: 40 Anreise, 15 innen, 5 Nachruhe. Tatsächlicher Eintritt,
Warten direkt hinter dem Eingang in nativer eigener Instanzkopie, keine
Dungeon-Durchquerung/Kampf. Neustart: am Eingang innen wieder einloggen,
ursprüngliche absolute Frist weiterverwenden. Rückkehr eigener Ausgang,
sonst Eingang. Instanzinnenräume NICHT zu normalen Locations machen.
World-DB geprüft: areatrigger_teleport enthält 78 Deadmines Entrance Target,
119 Exit Front Target, 121 Rear Exit Target. Alle sechs source/target-Knoten
in vcore_clientless_travel_node vorhanden, Kommentare nur Triggernummern.
Semantik aus nativen Namen und DBC-Quell-/DB-Zielkarten ableiten.
Noch keine Implementierung/Instanzbetretung in dieser Vorprüfung. Core-Befund:
Online startet heute flüchtigen Behavior-Record/Profil neu; dauerhafte
Besuchsphase/Frist und Wiederaufnahme müssen ergänzt werden. Native Instanz-ID,
Solobindung und Instanzspeicherung für Restart berücksichtigen und testen.
Eigener Ausgang hinten erfordert Rückkehrbehandlung ohne Dungeon-Durchquerung.
Randfall Ankunft mit weniger als fünf Minuten: noch keine ausdrückliche
Nutzerentscheidung, sinnvolle Ableitung ist Eintritt auslassen/Nachruhe.
Keine Code-/DB-/Serveränderung bei dieser Vorprüfung. Vorheriger Wirtschaftsintent
kann auf dem Testserver weiterhin laufen; vor Implementierung Zustand prüfen.
Schlaf-/Hindernisthemen bleiben ausdrücklich vertagt. Vorhandenes WIP bewahren.
---
# Aktueller Nutzerauftrag: freier Wirtschaftsintent im Handelsdistrikt
Bett-/Geometriesuche ausdrücklich vom Nutzer zurückgestellt. Ebenso spätere
Überarbeitung der Pfadfindung/Hinderniserkennung (beobachtetes Durchlaufen von
Zäunen und Erhöhungen). Diese offenen Themen sollen die weitere Entwicklung
NICHT blockieren; jetzt daran nicht weiterarbeiten.
Arthoran GUID 26 hat auf Nutzerwunsch den autonomen Auftrag:
`clientless adventure intent 26 economy poi_tele_954 3600`.
`poi_tele_954` ist der vorhandene allgemeine Sturmwind-Anker im Handelsdistrikt
(-8833.07,622.778,93.9317), Kategorie landmark; keine Händler-/Bank-/AH-Rollensperre
wie bei den spezialisierten Testankern. Kein gezielter Mikroaktionszwang.
INTENT_ARRIVED economy und selbst gewählter Start `economy_vendor_visit`
gegen echten Händler Entry 277, GUID Low 1325, sind bestätigt. Szene läuft.
Kein erneuter Build/Restart oder Lua-Profilwechsel für diesen Auftrag.
Vorher `saveall`; Geld-/Inventar-SHA256 weiterhin
8d40931782d05219466ba9fd077ce7acd3e02bd53eb63f6e96115042c620d26a.
Wirtschaften bleibt rein performativ: keine echten Transaktionen.
Nutzer beobachtet nun die freie Ausführung im Spiel; keine neue visuelle
Abnahme behaupten. Schlafboden am ersten Anker war vom Nutzer bestätigt.
Alle vorherigen WIP-Änderungen erhalten, Branch feature/clientless-player-core,
kein Push. Normales Lua-Profil weiterhin unverändert. Schlaf-Testanker und
bisheriger Ausbau bleiben erhalten, siehe historische Notizen unten.
---
# Neuer Liveauftrag: Suche bei Allitesters Position
Nach dem Flächenausbau wollte der Nutzer eine erneute Suche nahe den beiden
Betten an seiner aktuellen Position. `saveall`, danach Allitester GUID 21:
Map 0, (-8877.360, 673.489, 104.950), O=0.649831. Separater aktiver manueller
Suchanker `gilded_rose_sleep_room_test` in Test-DB angelegt, Kategorie rest_sleep,
Metadata von Sturmwind; bestehende Punkte nicht verschoben.
Neustart war nötig: adventure reload erneuert NICHT den Reisepunkt-Cache,
weshalb der erste Anreiseversuch den neuen Punkt nicht fand und zurückfiel.
Server jetzt PID 32004, frisches Ready nach elf Sekunden, Port 8085 geprüft.
Einmaliges Loginprofil rest/room_test danach bytegleich restauriert, installierte
Profilkopie ebenfalls normal. Arthoran erreichte den neuen Anker regulär.
Erneute Suche dort: beds=0 raised=0 floor=46 (erster Lauf floor=34).
REST_CONFIRMED am Anker (-8877.360,673.489,104.950), O=.650, zuletzt 143 Sekunden.
Die sichtbaren Betten werden also weiterhin NICHT als Bett/erhöhte Fläche erkannt;
Ursache der konkreten geometrischen Ablehnung ist NICHT gemessen. Nicht behaupten,
dass nur der bisher zu kleine Radius schuld war.
Die gewichtete Auswahl wählte zwischenzeitlich wieder den alten Schlafanker.
Für den gezielten Versuch wurde NUR `gilded_rose_sleep_upstairs` kurz enabled=0
gesetzt, Katalog geladen, micro rest_sleep ausgeführt, dann enabled=1 restauriert
und Katalog erneut geladen. Kein Punkt blieb vorübergehend deaktiviert.
DB-Helfer /tmp/vcore-sleep-room-test.py, Positionssnapshot daneben als JSON.
Nutzer hat neuen Bodenplatz am alten Anker sichtbar bestätigt; Bettdarstellung
und tatsächliche Bettnutzung weiterhin offen. Kein neuer Code/Build in diesem
Folgeversuch. Vor weiterer Arbeit laufende Szene/Position neu prüfen.
---
# Aktuell: Schlafplatzsuche am 27.10.2026
Dieser Abschnitt hat Vorrang vor den historischen Checkpoints unten.
Der Nutzer nahm den Schlaftest wieder auf, sah Arthoran mitten im oberen Stuhl
und beauftragte eine Flächensuche: Betten/geeignete erhöhte Flächen bevorzugen,
sonst freier Gasthausboden, auch für Gasthäuser ohne Betten.
Implementiert, gebaut (`-j10`), installiert und live getestet, noch uncommittet:
`AdventureRestSpace.h`, Schlafadapter in `AdventureBehaviorMgr.cpp`, gespeichertes
Szenenziel in `.h`; zwei neue Regressionen und erweiterter Ruhetest. Insgesamt
39 Testskripte erfolgreich (38er-Lauf plus neuer nativer Adaptertest; danach
betroffene erweiterte Tests erneut erfolgreich). Details: `rest-intent.md`.
Schlafanker sind jetzt Suchbereiche, keine ungeprüften Liegepunkte. Native
Bettobjekte vor erhöhten Flächen mit abrupten Seitenkanten vor freiem Boden.
Geometrie ist keine sichere Bettsemantik; passende Tische können ähnlich sein.
Modellabhängige Liegefläche, Höhen-/Kollisionsraster, native Stuhlsperre,
Spieler/Kreaturenbelegung, Innenraum und Stockwerksgrenze. Tatsächlicher
MMAP-Endpunkt muss passen, kein Teleport/Klettern auf unerreichbare Möbel.
Erneute Prüfung vor Hinlegen und alle zwei Sekunden. Keine neue SQL-Migration.
Live: Prozess 31446, frisches Ready nach elf Sekunden, Port 8085 bestätigt.
Arthoran GUID 26 im Ruheauftrag `gilded_rose_sleep_upstairs`. Die neue Suche
fand `beds=0 raised=0 floor=18`; er ging 4,03 Yards zu
(-8868.534, 682.800, 104.949), Ausrichtung 3,740, Endpunktfehler null.
`REST_CONFIRMED` für 243 Sekunden. Die sichtbare Abnahme des neuen Bodenplatzes
ist offen, ebenso ein positiver Live-Betttest; Fixturetests decken Betten ab.
Normales Lua-Profil in Quelle UND Installation bytegleich wiederhergestellt,
mining/blacksmithing unverändert. Kein temporäres Override, kein Push.
Die zuvor bereits vorhandene Änderung an `rest-intent.md` zur ersten
Schlafvorführung wurde erhalten und ergänzt. Branch ausschließlich
`feature/clientless-player-core`. Build/Install/Testlogs: `/tmp/vcore-sleep-*.log`.
Prozess-/Szenenzustand beim Fortsetzen neu prüfen. Nicht automatisch den
abgeschlossenen Berufs-Ausbau oder die vertagte Instanzarbeit beginnen.
---
# Fortsetzung am 27.10.2026 – aktueller Stand hat Vorrang
Der unten erhaltene Sitzungswechsel-Checkpoint ist historisch. Der Berufs-Ausbau
ist jetzt vollständig gebaut (`-j10`), auf dem Testserver installiert und die
Migration `_05` ist auf der Test-World-DB angewendet. **37 Testskripte bestanden**.
Keine Änderungen wurden gepusht. Branch bleibt `feature/clientless-player-core`.
Seit dem Checkpoint behoben:
- Berufsarbeit an GOs nähert sich nach Verdrängung erneut, bevor weitere Gesten laufen.
- Native unsichtbare Arbeitsplatzmarker verwenden VMAP-Sichtprüfung zur Arbeitsfläche
(mindestens 1,5 Yards über dem Marker); Bodenmarker im Amboss blockierten zuvor die Szene.
- Location-Abfrage liest numerische native Spalten ohne COALESCE-Widening. Debug verlor
zuvor `is_area`/`faction`; Elwynn wird live jetzt korrekt als `area=1` geladen.
Zusätzliche Tests: echter Lua-5.4-Professionsparser mit Arthoran/generic und ungültigen
Profilen; native Lock-/Station-/Kadaver-/Trainerklassifikation; Szene erst nach Ankunft,
Profilentzug, Wiederannäherung; SQL-Fixtures mit erhaltenen Gewichten/Freigaben;
erreichbare Gebietsknoten; progressive Suche und Uferbedingungen; echte Debug-Fieldgetter
und VMAP-Sichtlinienadapter. Siehe `tests/clientless/test_adventure_profession_*.py`,
`test_adventure_area_node.py` und erweiterte bestehende Harnesses.
Live bestätigt:
- Frische Ready-Meldung, laufender Prozess und Port 8085 nach Installation.
- Arthoran lädt zwei Hauptberufe; Profil ist bytegleich wiederhergestellt:
`social` / `goldshire_tavern`, mining + blacksmithing. Kein temporäres Profil liegenlassen.
- Reguläre Anreise zu `poi_guard_541` über Graph, Taxi und Bodenwege.
- `smithing_show` wählt echtes Anvil-GO **201415**, Low **556**; Work-Emote **233**;
`PROFESSION_WORK_COMPLETE` und `PROFESSION_VISIT_COMPLETE` nach Abschluss.
- `profession_herbalism` live als nicht verfügbar zurückgewiesen. Die isolierte
Profilprüfung auch bei vorhandener Pflanze ist durch den produktiven Zieltest belegt.
- Nach `saveall` unveränderte Geld-/Inventar-Prüfsumme:
`8d40931782d05219466ba9fd077ce7acd3e02bd53eb63f6e96115042c620d26a`.
- Elwynn-Auftrag `profession poi_tele_338` lädt `area=1`, startet `travel_to_node`,
erreicht mit bestehendem Free-flight-Fallback den Gebietsknoten und meldet `INTENT_ARRIVED`.
Lokale `profession_search` absolvierte danach alle sechs progressiven MMAP-Wegpunkte
(ca. 104 Yards, `LEISURE_COMPLETE`, legs=6).
- Letzter geprüfter Testserverprozess: PID 28577, frische Ready-Meldung und Port 8085.
Beim Wiederaufnehmen immer den tatsächlichen Zustand neu prüfen.
Offener Befund: Der erste Intentwechsel während aktiver Goldshire-Anreise geriet in
Graph-Handover-/Recovery-Schleifen zum nächstgelegenen `portal_at_109_target`.
Für die gezielten Tests wurde deshalb nur beim Login die Startvorgabe temporär
geändert und danach bytegleich restauriert. Dieses Travel-Handover ist NICHT als
behoben zu betrachten. Navigationslog enthält die Vorgänge ab 17:43.
Dokumentation: [profession-intent.md](profession-intent.md). Visuelle Abnahme bleibt
beim Nutzer; Freizeit-Ausritt/Rundflug und Schlafdarstellung bleiben zurückgestellt.
Alle ursprünglichen Regeln und fachlichen Festlegungen unten gelten weiterhin.
---
# Gesicherter Arbeitsstand – hier fortsetzen
Stand: 27.10.2026. Der Nutzer hat die Implementierung ausdrücklich für einen
Codex-Sitzungswechsel unterbrechen lassen. Diese Notiz ist die maßgebliche
Übergabe. Nicht bei null beginnen und keine vorhandenen Änderungen verwerfen.
## Sofort beim Wiederaufnehmen
1. `AGENTS.md` und diese Datei lesen; Branch und Working Tree prüfen.
2. Ausschließlich `feature/clientless-player-core`, niemals `master`, kein Push.
3. Der unten beschriebene Berufs-Ausbau ist **unfertig und NICHT installiert**.
4. Der laufende Build wurde zur Sicherung geordnet mit SIGINT unterbrochen.
Vor erneutem Bauen trotzdem nach verbleibendem CMake/Ninja-Prozess sehen.
Keine zwei Builds gleichzeitig. Immer **`-j10`**, niemals `-j4`.
5. Neueste Compiler-/Teststände prüfen und die untenstehenden offenen Arbeiten
fortsetzen. Kein Installieren eines nur teilweise gebauten Standes.
## Aktueller Auftrag und verbindliche Nutzerentscheidungen
Wir arbeiten am Intent **Beruf (`profession`)**, nach Geselligkeit, Ruhe,
Freizeit, Wirtschaften und dem Abenteuer-Erkundungsausbau. Danach folgen
Instanzbesuche. Kampf kommt GANZ AM ENDE, gemeinsam mit reaktiver Selbstwehr
(z. B. bei Angriff während einer Reise).
- Alle Berufsaktionen bleiben **dauerhaft rein performativ**. Es wird NICHT
tatsächlich abgebaut, gesammelt, gekürschnert, produziert, gefangen oder
geheilt. Keine Beute, Quellenerschöpfung, Inventar-/Materialänderung,
Fertigkeitserhöhung oder tatsächliches Erlernen. Nicht „zunächst“ schreiben.
- Hauptberufe dürfen NUR ausgeführt werden, wenn sie im Lua-Charakterprofil
ausdrücklich eingetragen sind. Nebenberufe brauchen diese Freigabe nicht;
Vorlieben werden später weiter über gewichteten Zufall ausgestaltet.
- Der Nutzer hat die Rückfrage ausdrücklich beantwortet: **Arthoran hat
Bergbau und Schmiedekunst**. In seinem Profil stehen deshalb dauerhaft
`professions = { primary = { "mining", "blacksmithing" } }`.
KEIN Kräutersammeln bei ihm erlauben, auch nicht vor vorhandenen Pflanzen.
Das generische Profil enthält eine leere Hauptberufsliste.
- Ort und Gebiet sind gleichberechtigte Ziele. Ein Bot soll z. B. das Gebiet
Elwynn anreisen und dort lokal selbst nach passenden Ressourcen suchen.
- **Hierarchie:** Tagesplan wählt Intent, dann passender importierter Ort,
dann lokal mögliche Mikroaktion. Der Ortsbestand darf die Intentauswahl
nicht vetoieren. Die Location-/Intent-Katalogzuordnung legt die Eignung fest.
- Eine für `profession` geeignete Location (auch ein ganzes Gebiet) schaltet
NICHT alle Berufsaktionen frei. Schmieden braucht einen echten nahen Amboss,
Schmelzen eine Esse, Kräutersammeln eine tatsächliche Pflanze UND Profilrecht.
- Gebietsanreise ist bereits vorhanden: `AdventureBehaviorMgr::AreaNode`
sucht einen ERREICHBAREN Graphknoten im Zielgebiet, `Begin` reist über
`travel_to_node`; die Ankunft wird gegen das Gebiet geprüft.
- Abenteuer soll regulär draußen in passenden Weltgebieten stattfinden.
Sturmwind ist nur Testgebiet; keine zusätzlichen Stadt-Sonderregeln bauen,
sondern passende gespeicherte Locations/Intent-Gewichte verwenden.
- Ausritte, Freizeit-Rundflüge und Schlafdarstellung sind auf Nutzerwunsch
weiterhin für spätere visuelle Tests zurückgestellt. Jetzt nicht testen.
## Umgebung und Betriebszustand beim Sichern
- Source: `/home/wow_admin/wow_cata_server/source/TrinityCore`.
- Build: `/home/wow_admin/wow_cata_server/build/debug`, Ninja, Debug.
- Install: `/home/wow_admin/wow_cata_server/server/debug`.
- Testserver: tmux `vcore-worldserver`, cwd `server/debug/bin`, `./worldserver`.
- Vor dem Sichern lief **PID 19058**, letzter installierter Abenteuer-Ausbau.
Diesen nicht blind wiederverwenden: Prozesszustand beim Fortsetzen prüfen.
- Arthoran: Charakter GUID **26**, Account 6, aktuell Abenteuer am importierten
Sturmwind-Ort `poi_tele_954`. Allitester GUID 21 kann als Zuschauer online sein.
- Der BERUFS-Ausbau wurde noch nicht installiert; SQL-Migration `_05` wurde
noch NICHT eingespielt. Der laufende Server ist daher der vorherige Stand.
- Arthorans normale Startvorgabe im gespeicherten Lua-Profil ist wieder
`social` / `goldshire_tavern`. Es gibt aktuell KEIN temporäres Login-Profil.
- Der letzte Build wurde mit j10 unterbrochen, bei 749/751 Schritten (libgame.a gelinkt; letzte Linkschritte noch offen). Die nächste
inkrementelle Ausführung kann normal weiterbauen; Objektdateien erhalten.
- Erster Build hatte nur den Fehler `Creature::GetDeathState` statt
`getDeathState`. Das wurde bereits korrigiert. Der daraufhin neu gestartete
Build hatte bis zur Unterbrechung keine weiteren gemeldeten Compilerfehler.
- CMake wurde mit den bestehenden Einstellungen neu ausgeführt, um die neue
`AdventureProfessionTargets.cpp` einzusammeln (CollectSourceFiles ohne
CONFIGURE_DEPENDS). Das löste einen größeren Build aus. Nicht grundlos
erneut konfigurieren, nur mit j10 weiterbauen.
## Bereits geschriebene, noch unfertige Berufs-Implementierung
### Profil und Regeln
- `AdventureProfessionPolicy.h`: reine Regeln/Task-Spezifikationen, elf
Hauptberufe, kanonische englische Bezeichner, Nebenberufe ohne Primärfreigabe.
Hauptberufsrecht stammt aus dem Profil, NICHT aus `Player::HasSkill`.
- `ClientlessAdventureProfile::PrimaryProfessions` und Lua-Parser für
`professions.primary` als Array. Unbekannte Namen warnen und gewähren nichts.
- `arthoran.lua`: mining + blacksmithing. `generic.lua`: leeres Array.
- `Trainer.h`: nur neuer generischer, read-only Zugriff `GetSpells() const`.
Kein Lernen/Trainer-Handler wird aufgerufen.
### Echte Ressourcen und Arbeitsplätze
- Neu: `AdventureProfessionTargets.{h,cpp}`.
- Erz/Pflanzen: echte aktive CHΕST-GOs, native Lock-/Skill-Anforderungen aus
`sLockStore` / `SkillByLockType`, nicht bloß Namen oder Locationkategorie.
Nur sichtbare, phasenrichtige, bereite und erreichbare Ziele.
- Kürschnerei: vorhandener toter BEAST-Kadaver im Zustand CORPSE mit nativem
SKINNABLE-Flag. Kein Erzeugen/Töten eines Tiers. Kampf/Jagd später.
- Arbeitsplätze: neuer editierbarer Katalog `vcore_adventure_workstation`
mit GO-Templateentry, semantischer Rolle und enabled. Keine Bot-/Ort-ID-Liste.
Native Fokuskennungen geprüft: 1 Amboss, 3 Esse, 4 Kochfeuer, 663 Alchemielabor,
1589 Lexikon. 623/543 sind besondere Amboss-/Essenfokusse.
- Native unsichtbare SPELL_FOCUS-Marker repräsentieren reale Kartenarbeitsplätze
und dürfen dafür genutzt werden. Keine Aktivierung/Objektbenutzung.
- Rollen ohne reale erkennbare Arbeitsplätze bleiben nicht verfügbar; keine
beliebige Werkstatt-Location als Amboss behandeln.
- Trainer: native Tradeskill-Trainer, deren native Spell-/SkillLine-Daten zu
einem erlaubten Haupt- oder einem Nebenberuf passen. Reines Gespräch.
### Szenen und bestehende Legacy-Aktionen
- Wiederverwendete `AdventureSocialActions` mit `Cue::Work`, professionellen
Zielprüfungen, nativen Emote-Zuständen, Abschlussbetrachtung und kurzem
Wegtreten. Keine Harvest-/Craft-/Loot-/Teach-/Heal-Aufrufe.
- Profil und Ziel werden auch während der Szene erneut geprüft.
- Alte `mining_show` / `smithing_show` (Kind `work`, Requirement ore/forge)
werden in `ResolvedAction` auf dieselben neuen gesperrten Szenen umgelegt.
Es darf KEIN Legacy-Bypass der Profil- oder Arbeitsplatzprüfung verbleiben.
- Nach vollständiger Sammeldarstellung wird `work:<GUID>` in der bestehenden
Zielhistorie gespeichert. Kürzlich bearbeitete Ressourcen werden gemieden,
damit die unverändert stehen bleibende Quelle nicht endlos wiederholt wird.
Nur Erzbetrachtung (`ore_inspect`) setzt diese Bearbeitungssperre nicht.
### Gebietssuche / gemeinsame Erkundungssteuerung
- Neue Suche `profession_search`, Requirement `work_search`, Kind `outing`.
- Wiederverwendete MMAP-Routensteuerung: progressive Hinwege, an erreichten
Kontrollpunkten erneut mögliche Berufsarbeit prüfen und Suche dann beenden.
- Bei Gebietsaufträgen wird der lokale Anker nach bestätigtem Suchfortschritt
verschoben. Weiteres Durchsuchen bleibt über jeden MMAP-Punkt im Zielgebiet.
- Gebiets-Abenteuerwege sind jetzt ebenfalls progressiv; normale Freizeitwege
bleiben bestätigte Hin-/Rückwege. Keine Stadt-Sonderregel.
- Zusätzliche native Uferprüfung für performatives Berufsangeln im Gebiet,
ohne zwingenden speziellen Fishing-Location-Key. Ausgerüstete Angel bleibt
nötig. Kein wirklicher Angelzauber/Fang. Noch nicht live getestet.
### Neue Migration
`sql/custom/world/2026_10_27_05_adventure_profession.sql` (noch NICHT angewendet):
Arbeitsplatzrollen, neue Arbeits-/Such-/Nebenberufs-/Gesprächsaktionen,
Berufsgewichtung für Gebiet/Wildnis/Siedlung, neue Texte. Native Fokusdaten
haben Vorrang; Namen ergänzen nur erkennbare geeignete Props. Geänderte
Gewichte/disabled-Rollen sollen bei Wiederholung erhalten bleiben.
## Offene Arbeiten – konkret hier weiter
1. Aktuellen C++-Diff kritisch prüfen; dies ist ein WIP, keine fertige Abnahme.
Insbesondere Berufsszenen, Legacy-Auflösung, progressive Ankeraktualisierung,
Ressourcen-Wiederholungsdämpfung und Uferprüfung gegen Nutzerregeln prüfen.
2. `cmake --build /home/wow_admin/wow_cata_server/build/debug -j10` fortsetzen.
Vorher prüfen, dass kein alter Build mehr läuft. Weitere Fehler beheben.
3. Vollständige Tests erneut laufen lassen. Vor dem Berufs-Ausbau waren
**32 Tests grün**. Seitdem gab es 7 Mock-/Harness-Anpassungsfehler, deren
Fixes bereits TEILWEISE geschrieben sind. Alte Fehlerdateien sind historisch!
- Economy/Exploration/Social-fire: neues Policy-Include und Profilfelder,
Targets-Stub für zusätzlich mitkompilierte Zweige.
- Social: Map-/Position-/Origin-Stubs und native Work-Emotes ergänzt;
zuletzt nach INVALID_HEIGHT-Fix wieder grün.
- Exploration und Leisure: nach Anpassungen zuletzt wieder grün.
- Intent-state: neue Scene-Felder Progressive/Route/Step ergänzt;
letzter Fehler fehlende Player::GetExactDist(Position const&). Der
Überladungs-Fix ist bereits geschrieben, aber noch nicht erneut geprüft.
- Rest-fire: PrimaryProfessions in Mock-Profil/-Kontext ergänzt;
aktuellen Zustand durch erneuten Lauf prüfen.
4. Neue aussagekräftige Berufs-Tests fehlen noch! Geplant:
- tatsächlichen neuen Lua-Parser mit realem Lua 5.4 ausführen, inklusive
Arthoran mining/blacksmithing, leeres/ungültiges Profil sperrt Hauptberufe;
- Mining+Smithing darf vorhandene Kräuter NICHT bearbeiten, umgekehrt darf
Herbalism+Alchemy keine Erz-/Schmiedearbeit; sekundäre Aktionen ohne Liste;
- produktive native Zielklassifikation: Lock-Skills statt Namen, Amboss
versus Esse versus bloße Workshop-/Gebietszuordnung, falsche Phase,
despawnte/gelootete Quelle, Kadaverprüfung und passende Trainer;
- native Arbeitsgeste erst NACH tatsächlicher Ankunft, Profilentzug während
laufender Szene, keine Objektbenutzung/Casts/Inventaränderung, Abschluss;
- Migration auf Schemafixtures ausführen, Idempotenz und bearbeitete
Gewichte/Arbeitsplatzfreigaben erhalten;
- Gebiets-Anreise über erreichbaren Graphnode und lokale progressive Suche
innerhalb des Gebiets, Stopp bei gefundenem zulässigem Arbeitsplatz.
5. Erst dann neue Migration auf TEST-DB anwenden. Noch kein profession_apply-
Modus im gesicherten DB-Helfer! Ergänzen oder engen eigenen Helfer schreiben.
6. Erfolgreichen Build nach sauberem Serverstopp installieren, neu starten und
frische Ready-Meldung + Prozess + Port 8085 prüfen. AGENTS-Recovery beachten.
7. Live prüfen: tatsächlicher Amboss in Sturmwind (z. B. importierter
`poi_guard_541`, Schmiedebereich), dann Gebietsziel `poi_tele_338` = Elwynn,
Gebiet 12, echtes travel_to_node und lokale Ressourcen-/Arbeitsplatzsuche.
Kräuter muss Arthoran verweigern. Inventar/Geld und Ressourcen unverändert
nachweisen. Keine gefälschten Ressourcen, Spawns oder Teleports.
8. Berufs-Dokumentation schreiben, Katalog-/Standdokumente aktualisieren und
offen gebliebene Live-/visuelle Prüfungen ehrlich benennen.
## Wichtige vorherige Ergebnisse – nicht neu implementieren
- Reisegraph: optionale virtuelle Exits regelmäßig (6 s) während Weiterbewegung
prüfen, kein Abbruch nach fünf Versuchen, Kante nicht mitten darin umkehren.
Free-flight-Fallback getrennt von künstlichen Normalreise-Auswahlregeln.
- Ruhe/Feuer: gemeinsames natives Kochfeuer 818, neue Feuer nie in Gebäuden/
Städten. Schlafdarstellung weiterhin vertagt.
- Freizeit: Katze (Spell 10673, Creature 7385), Leine (Item 37460, Spell 48722),
echte native Begleiter-/Itemverwendung. Kanal beim Gehen erhalten. Owned-only
Cleanup, keine Veränderung fremder Begleiter. Nutzer hat sichtbare Katze,
Leine, zusammenhängende Routen und flüssige Bewegung ausdrücklich abgenommen.
- Native Follow-Fix: aktive Player-Splinegeschwindigkeit statt Run-Flag wählen;
SetWalk setzt die Gait-Auswahl, nicht MOVEMENTFLAG_WALKING. Das beseitigte
die ständigen Zwei-Meter-Pausen. Nicht wieder entfernen.
- Native Spline-Kurzsegment-Fix: 0,11 Yards Mindestabstand beim Splitten.
- Wirtschaften rein performativ; Händler/Bank/AH und Vergleich mit zwei GUIDs
technisch live geprüft, Geld/Inventar danach bytegleich.
- Importfehler behoben: SMALLINT maps über GetUInt16 statt GetUInt32, das in
Debug Null ergab. Gezielte, idempotente `clientless adventure repairimport`
reparierte 2.159 unveränderte abgeleitete Orte, ergänzte 217. Jetzt **2.864**
aktive semantische Locations / 3.857 Worldpoints. 16 manuelle Orte unverändert.
Vier Horde-Hauptstädte korrekt auf Karte/Fraktion zugeordnet. Nicht die
originalen world-DB-Quellen ändern. Snapshots liegen bei dieser Übergabe.
- Location-Zuordnung: kein versteckter Wirtschaften-Fallback mehr im Code;
`_04` materialisiert ausdrückliche Kategorie-/Intent-Gewichte, inklusive
begrenzter Freizeitgewichtung für Tavernen. Tagesplan-Intent unabhängig davon.
- Abenteuer `_04`: native Objektuntersuchung ohne Use, Scout/Equipment,
zusammenhängende Bodenwege. Zehn neue Aktionen, 32 Tests bestanden, technisch
live in Sturmwind: Pestle's Apothecary 197117, Weller's Arsenal 197121,
80-Yards-Erkundungsweg mit zehn bestätigten Hin-/Rückwegpunkten. Visuelle
Abnahme und gefährliche offene Welt weiterhin separat.
## Werkzeuge, Logs und reproduzierbarer Betrieb
Dauerhafte Kopien für diese Übergabe:
`doc/clientless/checkpoints/2026-10-27-profession/`.
Darin Build-/Configurelogs, historische fehlgeschlagene Testausgaben,
Ortskatalog-Snapshots und die bisherigen schmalen DB-Helfer. Diese Helfer lesen
Verbindungsdaten aus der lokalen Testserverkonfiguration; keine Passwörter
im Chat/Logs ausgeben. Sie enthalten keine fest codierten Zugangsdaten.
Die Helfer bei Bedarf wieder nach `/tmp` kopieren; Pfade gelten für diesen Host.
Wichtige Live-Logs (normal und ohne vorsorgliche Elevation lesen):
`/home/wow_admin/wow_cata_server/server/debug/bin/Server.log`,
`adventurebot-navigation.log`, `DBErrors.log`. Server.log wird beim Start neu
begonnen, Navigations-/DBErrorslogs können ältere Fehler enthalten. Bekannte
alte Script-/Spell-Warnungen nicht mit neuem Startup-Versagen verwechseln.
Buildbefehle: `cmake --build .../build/debug -j10`, bestehende Installation
mit `cmake --install .../build/debug`. Tool-Sandbox für Build/Install/tmux/DB
beachten, aber normale Logs nicht vorsorglich eskalieren. Keine laufende
Executable überschreiben. Kein Push.
Für gezielte Tests nach Restart wurde bisher nur beim Login die Startvorgabe
in arthoran.lua temporär geändert, vorher byteweise gesichert, nach
`[AdventureBot][Profile] loaded guid=26` exakt zurückgesetzt. Die jetzt dauerhaft
vereinbarten Hauptberufe dabei unbedingt erhalten. Keine temporären Profile
liegenlassen. Alternativ normalen Login abwarten und per Console Intent setzen;
auf unerwünschte automatische Goldshire-Anreise achten.
Console-Beispiele ohne führenden Punkt:
`clientless login 26`, `clientless adventure status 26`,
`clientless adventure intent 26 profession poi_guard_541 3600`,
`clientless adventure intent 26 profession poi_tele_338 3600`,
`clientless adventure micro 26 <action_key>`, `saveall`.
Der Nutzer möchte vor allem konkrete, überprüfte Ergebnisse und wenig
Bestätigungsfragen. Die Hauptberufs-Rückfrage ist bereits BEANTWORTET; nicht
noch einmal stellen. Testservermanagement und lokale Commits sind autorisiert.