190 lines
12 KiB
Markdown
190 lines
12 KiB
Markdown
# Kampf, Reaktionen und Interaktionen – vereinbarte Grundlage
|
||
|
||
Stand 27.10.2026. Neue Nutzervorgaben nach Abschluss der sieben Grundintents.
|
||
Historische Vereinbarungen und aktueller Umsetzungsstand; siehe Nachtrag unten.
|
||
Kampf, reaktives Verhalten, Bot-Spieler- und Bot-Bot-Interaktion gehören für den
|
||
Nutzer zusammen. Bestehende Intent-, Reise- und Szeneninfrastruktur erhalten;
|
||
DungeonBots bleiben unabhängig. Allgemeine Hinderniserkennung bleibt vertagt.
|
||
|
||
## Verbindliche Zielregeln
|
||
|
||
- Selbstverteidigung: die Kreatur, die zuerst tatsächlich Schaden am Bot
|
||
verursacht, wird Fokusziel. Weitere Angreifer verdrängen sie nicht. Fokus bis
|
||
zum Tod dieser Kreatur beibehalten. Ein zufälliger Zielwechsel ist unerwünscht.
|
||
- Proaktiver Angriff: nächstgelegenes gültiges und zum aktuellen Intent passendes
|
||
Ziel wählen. Die Intentregeln bestimmen zuerst die zulässige Zielmenge.
|
||
- Abenteuer: nahe feindliche Kreaturen auf dem aktuellen Weg berücksichtigen;
|
||
keine wahllose Jagd auf alles im allgemeinen Umkreis.
|
||
- Beruf/Lederjagd: ein nahes geeignetes Tier wählen. Die bestehende Freigabe des
|
||
betreffenden Hauptberufs im Lua-Profil gilt weiter. Arthoran hat derzeit nur
|
||
mining und blacksmithing; diese Absprache erteilt ihm nicht automatisch
|
||
skinning. Das tatsächliche Sammeln/Kürschnern bleibt gemäß bisheriger Regel
|
||
performativ; der neu beauftragte Kampf selbst ist real.
|
||
- Vor einem eigenständigen Angriff Eignung/Stärke prüfen, insbesondere deutlich
|
||
überlegene Gegner ausschließen. Exakte Level-, Distanz-, Gesundheits- und
|
||
Ressourcen-Grenzen sind noch nicht vom Nutzer festgelegt.
|
||
|
||
Noch auszugestalten: Verhalten, wenn ein Fokusziel despawnt, phasen-/kartenfremd
|
||
oder dauerhaft unerreichbar wird; Selbstverteidigung gegen überlegene Gegner;
|
||
weitere verbleibende Angreifer nach Tod des Erstangreifers. Nicht als bereits
|
||
vereinbarte Zielwechsel-/Fluchtregeln ausgeben.
|
||
|
||
## Vom Nutzer bestätigte Ergänzungen
|
||
|
||
- Bei Berufsarbeit einen nahen feindlichen Gegner berücksichtigen, der den
|
||
unmittelbaren Zugang zur konkret gewählten Ressource/Arbeitsstelle blockiert.
|
||
- Konservativer Erstangriffsfilter: native Angriffserlaubnis, lebendig, richtige
|
||
Phase, lokaler erreichbarer Kampfplatz, kein Weltboss; Elites zunächst meiden.
|
||
Zusätzlich Leveldifferenz, aktuelle HP/Ressourcen und nahe weitere Gegner
|
||
berücksichtigen. Grenzwerte als anpassbare Regeln führen.
|
||
- Geselligkeit, Ruhe, Freizeit, Wirtschaften und der abstrahierte Instanzaufenthalt
|
||
begründen von sich aus keine Jagd. Selbstverteidigung ist eine überlagernde
|
||
Reaktion und benötigt keinen Wechsel zum Abenteuerintent.
|
||
|
||
## Verbindlicher Todesablauf
|
||
|
||
Seele freigeben, als Geist vom Friedhof zurück zur eigenen Leiche laufen und
|
||
sich wiederbeleben, sobald native Reichweite und übrige native Bedingungen
|
||
vorliegen. Ist kein Pfad verfügbar, ist nach fünf Minuten die Wiederbelebung
|
||
am Friedhof erlaubt. Ein langsamer, aber funktionierender Leichenrücklauf ist
|
||
nicht allein wegen Überschreitens von fünf Minuten ein fehlender Pfad.
|
||
|
||
Technische Ableitung: nach erreichbaren Punkten innerhalb des erlaubten
|
||
Leichenradius suchen, nicht nur nach einem Pfad zur exakten Leichenposition.
|
||
Die fünf Minuten als absolute Frist ab Freigabe/Ankunft am Friedhof behandeln,
|
||
nicht bei Pfadversuchen oder Neustart neu beginnen. Die genaue Timerauslegung
|
||
ist eine Umsetzungsauslegung des Friedhof-Fallbacks, keine zusätzliche explizite
|
||
Antwort des Nutzers. Nach Wiederbelebung ausstehendes Verhalten sicher fortsetzen;
|
||
keinen Endzeitblock durch die Todesphase künstlich verlängern.
|
||
|
||
## Bestätigte Quellgrundlagen
|
||
|
||
- `AI/PlayerAI/PlayerAI.cpp` und `.h`: gemeinsame PlayerAI-Helfer für Rollen,
|
||
bekannte Zauberränge, native Wirkprüfung, Autoangriffe und Formen. Die große
|
||
Klassen-/Spezialisierungsauswahl liegt derzeit privat in SimpleCharmedPlayerAI.
|
||
Sie enthält situative Unterbrechungen, DoTs, Kombopunkte und Schutzfähigkeiten.
|
||
- SimpleCharmedPlayerAI ist technisch eine Charm-KI mit Charmer-Zielwahl und
|
||
Unterstützung dieses Charmers. Der Core installiert sie in Unit::UpdateCharmAI;
|
||
mehrere Bossskripte leiten davon ab. Also nicht als völlig ungenutzt behandeln.
|
||
Wiederverwendung erfordert Entkopplung dieser konkreten Charm-Steuerung;
|
||
keine Unterstellung, der Nutzer wolle sie unverändert übernehmen.
|
||
- Unit::DealDamage ruft DamageTaken/DamageDealt bei vorhandener UnitAI sowie
|
||
den UnitScript-OnDamage-Hook auf. Diese Aufrufe liegen VOR dem abschließenden
|
||
HP-Abzug, und nachfolgende Bedingungen können Schaden verhindern. Für die
|
||
Regel 'zuerst tatsächlich Schaden verursacht' genügt ein ungeprüftes
|
||
Vorab-Ereignis daher nicht. Nullschaden/Godmode/abgebrochene Treffer dürfen
|
||
keinen falschen Erstangreifer festschreiben.
|
||
- WorldSession::HandleRepopRequestOpcode führt BuildPlayerRepop und
|
||
RepopAtGraveyard aus. HandleReclaimCorpseOpcode prüft Geiststatus,
|
||
GetCorpseReclaimDelay, gleiche Karte und CORPSE_RECLAIM_RADIUS (aktuell 39 Yards),
|
||
dann native Wiederbelebung und Corpse-Bones. Keine eigene großzügigere Distanz.
|
||
- Der Nutzer lehnt den normalen Geistheiler ausdrücklich ab: beim Fallback
|
||
nach fünf Minuten keine Wiederbelebungskrankheit und kein zusätzlicher
|
||
Haltbarkeitsverlust. Nicht HandleSpiritHealerActivateOpcode/SendSpiritResurrect
|
||
verwenden. Die native ResurrectPlayer-Funktion ohne Sickness und die saubere
|
||
Corpse-Bones-/Geistzustandsbereinigung können dafür wiederverwendet werden.
|
||
Der normale Leichenrücklauf bleibt zuerst vorgesehen.
|
||
- PlayerScript bietet Chat- und gerichtete Textemote-Ereignisse. Vorhandene
|
||
AdventureSocialActions stellen bereits Begrüßung, Gespräch und Reaktionen dar.
|
||
Konkrete Regeln für Spieler-/Bot-Interaktionen sind noch weiter auszugestalten.
|
||
|
||
In dieser Vorprüfung wurden keine Kampf-/Todesabläufe implementiert oder live
|
||
getestet und keine Server-/DB-Zustände verändert.
|
||
|
||
|
||
## Nachtrag: Reparaturbesuch und Kampfausstattung
|
||
|
||
Nutzerauftrag: zusätzliche Wirtschafts-Mikroaktion bei einem echten Händler mit
|
||
Reparaturfähigkeit. Sichtbare Szene rein performativ, keine Händler-/Kauf-/
|
||
Reparaturpakete, kein Geldabzug. Nach erfolgreich abgeschlossenem Besuch repariert
|
||
Hintergrundlogik alle Ausrüstungsgegenstände auf volle Haltbarkeit. Dies ist die
|
||
explizit gewünschte Ausnahme von der bisherigen reinen Darstellung wirtschaftlicher
|
||
Besuche; keine Reparaturkosten-/Zustandsplanung nötig.
|
||
|
||
Arthoran soll Kopien von Allitesters angelegter Rüstung und Waffen erhalten,
|
||
alle stufengerechten Klassenfähigkeiten lernen, Talentpunkte sinnvoll innerhalb
|
||
der Stufe-60-Grenze verteilen und passende Angriffe vorführen. Allitesters
|
||
Originale bleiben unverändert. Beide sind Krieger; Vorprüfung ergab Zorn-Set und
|
||
Ashkandi, passend zu einem Waffen-Build. Quelle ist Stufe70, Arthoran bleibt60.
|
||
Die native Level-60-Talenttabelle erlaubt 26 Punkte, keine überhöhte Freischaltung
|
||
aller Talentbäume. Kampfübung an einer tatsächlich vorhandenen Stufe-60-Puppe;
|
||
damit wird noch keine vollständige autonome Kampf-/Reaktions-KI behauptet.
|
||
|
||
## Technischer Umsetzungsstand nach Kampfausstattung
|
||
|
||
Reparaturaktion implementiert; native IsArmorer-Prüfung, erreichbare freundliche
|
||
NPCs und bestehende Ankunfts-/Szenenprüfung. Einmal nach erfolgreichem Besuch
|
||
DurabilityRepairAll(false, 1.0f, false), ohne Kosten oder Interaktionspakete.
|
||
|
||
Arthoran erhielt neun neue Iteminstanzen aus Allitesters angelegtem Zorn-Set
|
||
und Ashkandi. Frühere Gegenstände bleiben im Inventar; Allitesters vollständiger
|
||
Inventar-/Item-/Zauber-/Talentsnapshot blieb unverändert. Native Klassen- und
|
||
Stufenprüfung, Plattenkompetenz und Haltungen sowie 26 Waffen-Talentpunkte
|
||
über LearnTalent, Baum 746. Keine fremden Spezialisierungsfähigkeiten freischalten.
|
||
|
||
Begrenzte Trainingsübung über PlayerAI-Helfer; nur tatsächliche passende
|
||
Trainingspuppen, native Sicht-/Phasen-/Angriffserlaubnis. Keine Phasenänderung.
|
||
Phase169 ist DEFAULT_PHASE; die erste Fehlposition hatte fehlende Sichtlinie.
|
||
Nach administrativer Offline-Positionierung vor der echten Puppe314147 waren
|
||
Phase, Sichtbarkeit und Sichtlinie gültig. Live wurden unter anderem Heroischer
|
||
Stoß78, Verwunden772, Tödlicher Stoß12294 und Überwältigen7384 von Spell::prepare
|
||
mit SPELL_CAST_OK(255) angenommen. Das belegt die begrenzte Übung, keine
|
||
fertige autonome Selbstverteidigungs-, Todes- oder Interaktionssteuerung.
|
||
|
||
Debug-Build erfolgreich installiert; 48 Testskripte erfolgreich.
|
||
|
||
Live-Reparatur erfolgreich: reguläre lokale MMAP-Anreise zu Marda Weller1287,
|
||
vollständige Szene und ECONOMY_REPAIR_COMPLETE. Nach saveall alle neun zuvor
|
||
halbierten Kopien wieder voll, Geld0 und Allitesters Snapshot unverändert.
|
||
|
||
## Ausbau: Training, Erstangriffe und Todesreaktion
|
||
|
||
AdventureCombatMgr überlagert den Lua-Adventure-Controller während Kampf/Tod.
|
||
Generischer ClientlessPlayerMgr übergibt ausschließlich tatsächlich nach HP-Abzug
|
||
entstandene Schäden als GUID-Ereignisse. Mutex-Queue trennt Map-Worker und
|
||
World-Thread; andere Controller bleiben bei ihrer bisherigen Standardfunktion.
|
||
Der erste tatsächliche Kreaturenangreifer wird festgehalten. Weitere Angreifer
|
||
warten in Schadensreihenfolge, bis der Fokus tot ist. Phasenverlust/Despawn bzw.
|
||
20 Sekunden unerreichbarer Fokus beenden eine nicht mehr ausführbare Verfolgung.
|
||
Spieler und von Spielern kontrollierte Kreaturen sind nicht Gegenstand dieses Ausbaus.
|
||
|
||
Automatischer Erstangriff im Abenteuer nur auf nächstgelegenen passenden Gegner
|
||
im lokalen20Yards-Umkreis und8Yards-Korridor des tatsächlichen aktiven MMAP-Wegs.
|
||
Für Kürschnerei nur bei Profilrecht und lebendem BEAST mit nativer SkinLootId;
|
||
Arthoran erhält dieses Recht weiterhin nicht. Andere Intents lösen keine Jagd aus.
|
||
Vorläufiger konservativer Filter: höchstens+2Level, mindestens60%HP und bei
|
||
Manaklassen30%Mana, keine Elites/Weltbosse, höchstens ein Gegner im12Yards-Umfeld,
|
||
kein bereits fremd bekämpfter Gegner. Native Phase/Sicht/Angriffserlaubnis und
|
||
vollständiger unverdächtiger MMAP-Anschluss bleiben Voraussetzung.
|
||
|
||
Kampf nutzt native Autoangriffe und für Krieger die stufengelernten Fähigkeiten,
|
||
Ressourcen und Abklingzeiten. Keine künstlichen Ressourcen-/Schadenswerte.
|
||
Andere Klassen erhalten hier zunächst Autoangriffe; eigene Rotationen folgen.
|
||
Training ist Freizeit-Aktion leisure_training60–180Sekunden an echter erreichbarer
|
||
Puppe im60Yards-Umkreis, begrenzt zusätzlich durch aktuelle Intentfrist.
|
||
Echte Selbstverteidigung kann Training unterbrechen. Keine Dummy-Spawns/Phasenänderungen.
|
||
|
||
Tod über native Freigabe- und Leichenaufnahmehandler. Persistierter GhostTime
|
||
bestimmt sowohl native Aufnahmefrist als auch Fünf-Minuten-Fallback; Charakter
|
||
und Leichenzeitpunkt werden nach Freigabe gespeichert. Mehrere mögliche Ziele
|
||
innerhalb39Yards werden geprüft. Gescheiterte Bewegungspunkte werden für diesen
|
||
Leichenlauf gemieden. Bei funktionierendem Pfad keine pauschale Zeitbegrenzung.
|
||
Fallback: erst nach300Sekunden ohne passenden Pfad native Friedhofsrückkehr,
|
||
danach ResurrectPlayer(.5,false) und SpawnCorpseBones, keine Geistheiler-Interaktion,
|
||
keine Wiederbelebungskrankheit oder zusätzliche Haltbarkeitsänderung. Normale
|
||
Kampfschäden bleiben erhalten. Intent-Endzeiten werden durch Reaktionen nicht verlängert.
|
||
|
||
Diagnose: clientless combat train <guid> [seconds], attack <guid> <spawn-id>,
|
||
testdeath <guid>, stop <guid>. Testdeath nutzt ausdrücklich einen nativen Testtod
|
||
für einen verwalteten Bot, ohne zusätzlichen Haltbarkeitsverlust.
|
||
51 Testskripte bestanden; Live-Ergebnisse separat ergänzen.
|
||
|
||
Live-Abschluss: Trainingsszene regulär nach60Sekunden beendet; Stufe58-Bär42336
|
||
(spawn300425) nativ besiegt und Respawn registriert. Erster Testtod: mangels
|
||
akzeptiertem MMAP-Rückweg volle300Sekunden gewartet, malusfreie Friedhofs-
|
||
wiederbelebung bestätigt. Zweiter Testtod naheFriedhof: tatsächlicher37.40Yards-
|
||
Geisterlauf und nativeLeichenaufnahme. NachLogout lebendHP4340 ohneLeiche oder
|
||
Aura15007 gespeichert. KeineUhrabkürzung, keinNormalreisebeleg durchTestpositionierung.
|
||
Belege: checkpoints/2026-10-27-combat/. Mehrfachangreifer undNeustart während
|
||
Leichenlauf produktiv mitAdaptern geprüft, nochkeine entsprechendeLiveabnahme.
|