12 KiB
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.cppund.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 [seconds], attack , testdeath , stop . 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.