Zum Hauptinhalt springen

Boss-Phasen erstellen

Boss-Phasen ermöglichen es einem benutzerdefinierten Boss, seine Konfiguration während einer Begegnung zu ändern.

Wie funktionieren Boss-Phasen?​

Boss-Phasen können jedem benutzerdefinierten Boss in EliteMobs mit folgendem Konfigurationsformat hinzugefügt werden:

phases:
- phase_2_boss.yml:0.X
- phase_3_boss.yml:0.Y

Hinweis: Der Boss, den du ursprünglich spawnst (der den phases:-Eintrag mit allen anderen Phasen enthält), ist der Phase-1-Boss. Die Phase-1-Boss-Datei sollte sich NICHT selbst in ihrem eigenen phases:-Eintrag auflisten.

Jeder Eintrag hat das Format filename:healthFraction. Der Anteil muss mindestens 0 und kleiner als 1 sein, etwa 0.60 oder 0.30, und die referenzierte Boss-Datei muss geladen und aktiviert sein. EliteMobs prüft die Liste jedes Mal, wenn der Boss erstellt wird: Ein ungültiger Eintrag verhindert das Spawnen dieses Bosses, und die Konsolenmeldung nennt den betroffenen Eintrag.

Jede Phase verweist auf eine andere Boss-Datei. Dadurch lassen sich Fähigkeiten, Schadens- und Gesundheitsmultiplikatoren, Entitätstyp, Verkleidung und Ausrüstung ändern. Der Begegnungszustand und die unten aufgeführten regionalen Einstellungen bleiben gemeinsam erhalten.

EliteMobs ersetzt den Körper des Bosses durch die nächste Phase und behält seinen Begegnungszustand bei. Wenn ein Schadensereignis die Schwelle zur nächsten Phase unterschreiten würde, wird es abgebrochen und die nächste Phase beginnt mit ihrem konfigurierten Gesundheitsprozentsatz. Überschüssiger Schaden wird nicht über den Übergang hinweg übernommen. Danach erhält der Boss eine Kampfschonfrist von 20 Ticks.

Kann der Ziel-Chunk noch keine Entitäten ticken, lädt EliteMobs ihn und wartet bis zu 100 Ticks (5 Sekunden), bevor der Körper ersetzt wird. Solange gewartet wird, wird Schaden am Boss abgebrochen. Ist die Welt des Ziels nicht geladen oder wird der Chunk nicht rechtzeitig bereit, wird der Übergang verweigert: Der Boss behält seine aktuelle Phase, und die Konsole gibt eine Warnung aus.

Beispiel​

Nimm diesen Beispiel-Phasen-Boss:

Datei: phase_1_boss.yml

isEnabled: true
level: 50
healthMultiplier: 10
entityType: STRAY
powers:
- attack_gravity.lua
phases:
- phase_2_boss.yml:0.60
- phase_3_boss.yml:0.30

Datei: phase_2_boss.yml

isEnabled: true
level: 50
healthMultiplier: 10
entityType: SKELETON
powers:
- attack_gravity.lua
- arrow_fireworks.lua

Datei: phase_3_boss.yml

isEnabled: true
level: 50
healthMultiplier: 10
entityType: WITHER_SKELETON
powers:
- arrow_rain.lua

Dies stellt einen gültigen Phasen-Boss dar. Wenn du phase_1_boss.yml spawnst, spawnt er einen Stray mit den oben aufgeführten Attributen. Nachdem er auf 60 % seiner Gesundheit heruntergeschädigt wurde, wird er sofort am selben Ort durch den benutzerdefinierten Boss ersetzt, wie er in phase_2_boss.yml geformt ist, da die Konfigurationsdatei - phase_2_boss.yml:0.60 angibt (phase_2_boss.yml ist der Dateiname für diesen benutzerdefinierten Boss, 0.60 sind 60 % Gesundheit). Beachte, dass der Phase-2-Boss mit 60 % seiner Gesundheit spawnt, da er zu diesem Zeitpunkt in diese Phase wechselt. Der Boss wird die in der Datei phase_2_boss.yml aufgeführten Kräfte haben. Sobald der Phase-2-Boss auf 30 % seiner Gesundheit heruntergeschädigt wird, spawnt er den für Phase 3 festgelegten Boss. Beachte, dass die Kräfte für Phase 3 nichts mit den vorherigen zu tun haben - du kannst die Kräfte zwischen den Phasen vollständig ändern, genau wie fast alle anderen Attribute.

Erweitert​

Vererbte Mechaniken​

Hier ist eine Liste von Dingen, die sich von Phase zu Phase nicht ändern:

  • Der erste Phasen-Boss in der Kette bestimmt, welche Phasen der Boss durchläuft, was bedeutet, dass du für die anderen Bosse in der Phase keinen phases-Eintrag setzen solltest.

  • Die Bedrohungstabelle / Schadenstabelle bleibt gleich, was bedeutet, dass die Loot-Verteilung und das erweiterte Aggro-System von einem Phasenwechsel unberührt bleiben

  • Beim Phasenwechsel gilt der konfigurierte Gesundheitsprozentsatz der nächsten Phase. Beginnt Phase 2 bei 50 %, erhält sie 50 % ihrer eigenen maximalen Gesundheit, auch wenn der auslösende Treffer die vorherige Phase unter diese Schwelle gebracht hätte. Jede Phase kann eine andere maximale Gesundheit haben.

Phasen an der Gesundheitsobergrenze haben dieselbe Gesundheit

Die Boss-Gesundheit wird durch settings.attribute.maxHealth.max des Servers begrenzt (standardmäßig 2048). Sind level und healthMultiplier mehrerer Phasen hoch genug, um diese Grenze zu erreichen, haben sie alle genau 2048 HP. Die beabsichtigten Gesundheitsunterschiede zwischen den Phasen gehen damit verloren. Die Beispiele auf dieser Seite (level: 50, healthMultiplier: 10) liegen in diesem Bereich. Unter healthMultiplier steht, ab welchem Level der jeweilige Multiplikator die Grenze erreicht.

  • Geeignete Phasen-Bosse außerhalb von Instanzen kehren zu Phase 1 zurück, wenn die Regeneration außerhalb des Kampfes fullHeal() aufruft. Dafür muss regenerateCustomBossHealthOnCombatEnd aktiviert sein; dieser Ereignispfad schließt Phantome aus. Instanzbosse überspringen fullHeal(). Gewöhnliche Heilung bis zur maximalen Gesundheit löst allein keinen Phasenreset aus.

  • Regionale Phasen-Bosse behalten den Leinenradius und den Respawn-Cooldown aus Phase 1 bei und erscheinen nach diesem Cooldown wieder als Phase 1. Ein Phasenwechsel verwendet stilles Spawnen und startet keinen neuen Fluchttimer. Konfiguriere den timeout der Begegnung in Phase 1.

  • Phase 1 bestimmt außerdem normalizedCombat für die gesamte Kette. Eine Phase mit level: -1 behält das bereits bestimmte Begegnungslevel bei, einschließlich des gewählten Instanzlevels. Ein ausdrücklich angegebenes Level in der neuen Phase ersetzt es.

Phasenspezifische Spawn-Orte​

Standardmäßig bleiben Bosse beim Übergang zwischen den Phasen an ihrem aktuellen Ort. Du kannst jedoch dafür sorgen, dass ein Boss beim Eintritt in eine Phase zu einem bestimmten Ort teleportiert wird, indem du die Einstellung phaseSpawnLocation verwendest:

Datei: phase_2_boss.yml

isEnabled: true
level: 50
healthMultiplier: 10
entityType: SKELETON
powers:
- attack_gravity.lua
- arrow_fireworks.lua
phaseSpawnLocation: world_name,100,64,100,0,0

Du kannst den Boss auch teleportieren, während er in derselben Welt bleibt:

phaseSpawnLocation: same_as_boss,100,64,100,0,0

Dies ist nützlich, um dramatische Phasenübergänge zu erstellen, bei denen sich der Boss zu einer anderen Arena oder einem anderen Ort teleportiert.

Warnungen​

Hier ist eine Liste von Mechaniken, die auf eine Weise funktionieren, die anfangs möglicherweise nicht intuitiv ist:

  • Gewöhnlicher EliteMobs-Schaden kann eine gültige nächste Phase nicht durch einen einzelnen tödlichen Treffer überspringen: Das Erreichen ihrer Schwelle bricht den Treffer ab und wechselt um eine Phase weiter. Die Beute stammt aus der Konfiguration, die beim tatsächlichen Tod des Bosses aktiv ist. Konfiguriere die Belohnungen der letzten Phase. Wird ein Übergang verweigert, etwa weil phaseSpawnLocation eine nicht geladene Welt angibt, bleibt der Treffer, der die Schwelle überschreitet, trotzdem abgebrochen. Gewöhnlicher Schaden kann den Boss dann nicht unter diese Schwelle bringen, bis das Problem behoben ist.

  • Jede Phase führt ihre Spawn-Routine aus, einschließlich zutreffender onSpawnCommands. Phasenwechsel und Zurücksetzen bei voller Gesundheit verwenden stilles Spawnen und unterdrücken daher die gewöhnliche Spawn-Ankündigung. Regionale Respawns nach dem Cooldown können wieder angekündigt werden. Ein Phasenwechsel ist kein Tod und führt keine Todesbefehle aus.

  • Regionale Phasen-Bosse wenden vor dem Wechsel die transitiven Blöcke mit ON_REMOVE der ausgehenden Phase an. Anschließend wendet die neue Phase ihre Spawn-Blöcke an. Der tatsächliche Tod oder der Kill-Befehl räumt die Entfernungsblöcke der letzten Phase auf. Gewöhnliches Entladen von Chunks und Zurücksetzen bei voller Gesundheit zählen für diese Bereinigung nicht als Niederlage.

  • Phasenwechsel entfernen das verfolgte Reittier der ausgehenden Phase; anschließend erzeugt die neue Phase ihr konfiguriertes Reittier. Ein Zurücksetzen bei voller Gesundheit entfernt ebenfalls das aktuelle Reittier und verwendet die Reittierkonfiguration von Phase 1.

  • Jede Phase lädt ihre Fähigkeiten neu. Der ONCE-Zustand für Verstärkungen der Fähigkeit custom_summon wird daher bei Phasenwechseln und beim Zurücksetzen auf Phase 1 zurückgesetzt. Er begrenzt die Beschwörung nicht auf einmal pro Begegnung.

Tipps & Tricks​

  • Du kannst die Tatsache nutzen, dass Ausrüstung und Entitätstypen während des Kampfes geändert werden können, um den Boss im Laufe des Kampfes immer (mehr oder weniger) gefährlicher aussehen zu lassen

  • Auch wenn es möglich ist, ist es, sofern kein bestimmtes Designziel verfolgt wird, wahrscheinlich am besten, dass sich die Kräfte des Phasen-Bosses zwischen den Phasen nicht zu drastisch ändern, da Spieler eher eine Progression genießen, die sich während des Kampfes natürlich anfühlt.

  • Du kannst onSpawn-Befehle verwenden, um Befehle zwischen den Phasen auszuführen

  • Setze song in jeder Phase, die die Musik ändern soll. Ein anderer Wert ersetzt das Musikstück, derselbe Wert setzt es fort. Wenn song in einer späteren Phase fehlt, wird das vorherige Musikstück nicht gestoppt.

  • Phasen können verwendet werden, um den Boss vom Nahkampf- in den Fernkampf-Modus und umgekehrt umzuschalten

  • Phasen-Bosse wurden als zähe Bosse mit viel HP konzipiert. Sie eignen sich in der Regel am besten als finale Boss-Begegnung für Dungeons oder als große Welt-Bosse.

  • Verstärkungen können zwischen den Phasen am Leben bleiben. cullReinforcements in der ausgehenden Phase steuert ihre Entfernung; ein Zurücksetzen auf Phase 1 fordert ebenfalls die Entfernung von Verstärkungen an.

  • Bosse können beliebig viele Phasen haben, aber je mehr Phasen sie haben, desto mehr Gesundheit benötigen sie, damit jede Phase ins Gewicht fällt.

API-Integration​

Für Plugin-Entwickler: EliteMobs löst ein ElitePhaseSwitchEvent aus, wenn ein Boss zwischen Phasen wechselt. Dieses Event kann verwendet werden, um benutzerdefinierte Verhaltensweisen oder Effekte während Phasenübergängen zu erstellen:

Das Ereignis wird auch beim Zurücksetzen auf Phase 1 ausgelöst. Es wird ausgelöst, sobald der Körper der neuen Phase gespawnt ist, nachdem ihr Gesundheitsanteil und die Kampfschonfrist von 20 Ticks angewendet wurden. Bei einem Übergang, der auf seinen Ziel-Chunk wartet, wird das Ereignis erst ausgelöst, wenn der Körper erscheint.

@EventHandler
public void onPhaseSwitch(ElitePhaseSwitchEvent event) {
CustomBossEntity boss = event.getCustomBossEntity();
PhaseBossEntity phaseBoss = event.getPhaseBossEntity();
// Your custom logic here
}