Add native transport recording and execution with grid lifecycle handling, clientless teleport acknowledgements, and regression tests. Support targeted same-map portal imports and preserve disabled taxi nodes. Document live transport and portal verification and the remaining portal inventory.
3.6 KiB
Rut’theran / Darnassus: Graphkorrektur vom 26.10.2026
taxi_585 wurde auf GM-Anweisung ausschließlich im CPC-TravelGraph und dessen
Weltpunkttabelle deaktiviert. Der Punkt bei (8334.76, 1029.83, 22.79) ist kein
regulärer Spieler-Flugpunkt. Es waren keine Kanten mit diesem Node verbunden.
Native Taxi-/NPC-Definitionen bleiben erhalten. Die explizite Testmigration
steht in sql/custom/world/2026_10_26_00_clientless_disable_taxi_585.sql.
Der Taxi-Importer behält bestehende enabled=0-Flags und deren Kommentare bei,
anstatt sie bei jedem Neuimport zu aktivieren. Neue Taxi-Datensätze werden wie
bisher aktiviert angelegt. Ein SQL-Regressionstest führt die tatsächlichen
UPDATE-Anweisungen mit aktiven und deaktivierten Datensätzen aus:
python3 tests/clientless/test_taxi_import_disabled.py.
Fehlende Portale
Der frühere Portalimport übersprang gleichkartige Übergänge, und der Executor lehnte sie ausdrücklich ab. Rut’theran und Darnassus liegen beide auf Karte 1. Die allgemeine Clientless-Near-Teleport-Bestätigung ist seit der Transportintegration vorhanden und wird jetzt auch vom Portal-Executor benutzt. Portalreisen durchlaufen weiterhin den normalen AreaTrigger-Handler mit dessen Zugangsprüfungen. Vor Fortsetzung muss der Teleport abgeschlossen sein und die Position höchstens fünf Yards vom tatsächlichen Ziel entfernt liegen. Dadurch kann ein verweigerter gleichkartiger Teleport nicht als Erfolg gelten.
.clientless portal import <triggerId> erlaubt nun einen gezielten Import,
einschließlich gleichkartiger Portale. Der bisherige Bulk-Import ohne Argument
behält seinen Umfang (Kartenwechsel) bei. portal import und portal info sind
mit denselben GM-Rechten auch über die Konsole nutzbar.
Aus den installierten DBC-/DB-Daten abgeleitete Nodes, alle auf Karte 1:
| Ort | Node | X | Y | Z |
|---|---|---|---|---|
| Rut’theran, nach Darnassus | portal_at_542_source | 8393.800 | 1003.900 | 30.191 |
| Darnassus, Ankunft | portal_at_542_target | 9946.250 | 2612.970 | 1316.490 |
| Darnassus, nach Rut’theran | portal_at_527_source | 9947.480 | 2630.040 | 1318.600 |
| Rut’theran, Ankunft | portal_at_527_target | 8380.560 | 998.536 | 29.129 |
Gerichtete Portalkanten: 542_source → 542_target (ID 1747) und 527_source → 527_target (ID 1746), Kosten jeweils 1. Groundanschlüsse werden separat aufgezeichnet oder vom Planner vollständig per MMAP validiert.
Verifikation
Build, Installation und Regressionstests bestanden. Echter Live-Test mit
Arthoran: Trigger 542 um 10:26:22, Trigger 527 um 10:27:17, jeweils
EDGE_COMPLETE, arrivalError=0.00, Recovery 0. Die Rückfahrt nutzte zunächst
eine validierte MMAP-Brücke von portal_at_542_target zum 17,24 Yards entfernten
portal_at_527_source; danach wurde der reguläre AreaTrigger ausgeführt.
tests/clientless/test_portal_transfer.py prüft den tatsächlichen
Handler-/ACK-/Zielprüfungsblock mit Core-Doubles: Near und Far, abgewiesener
Same-Map-Teleport, fehlender ACK-Abschluss und falscher Sessiontyp.
Die existierenden Transport- und Lua-Reload-Regressionstests bestanden ebenfalls.
Ausgangsdaten, neu erzeugte Portalnodes und vorheriges Arthoran-Lua liegen unter
/tmp/vcore-ruttheran-fix.yxm90j91. Ein laufender GM-Aufnahmebuffer wurde vor
dem Neustart ausdrücklich als gespeichert bestätigt und im Log nachgewiesen.
Die abschließend installierte Build-ID ist
f2873b12546ada19e68aa3b6b0d8e7823fe816e5 (einschließlich korrigierter
portal info-Anzeige). Ready-Meldung, laufender Prozess 42675 und Port 8085
wurden nach dem finalen Start geprüft. Arthoran wurde nach beiden Tests sauber
ausgeloggt; das vorherige Lua-Skript ist wiederhergestellt.