Files
Viano-Core/doc/clientless/ruttheran-portals.md
T
Nico 1164a72ea3 Implement clientless transports, Lua reload and same-map portals
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.
2026-10-26 11:27:56 +01:00

3.6 KiB
Raw Blame History

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.