Zum Hauptinhalt springen

Benutzerdefinierte Verstärkungen erstellen

Verwende Verstärkungseinträge in der powers-Liste eines Bosses, um während des Kampfes weitere benutzerdefinierte Bosse zu beschwören.

Schritte, um einen Custom Boss zu erstellen:​

  1. Erstelle deinen Haupt-Custom-Boss, der deinen Custom Boss beschwören wird
  2. Erstelle einen Custom Boss für Verstärkungen. Bedenke, dass Custom Bosses stärker als gewöhnliche Mobs sein können, aber auch schwächer sein können.
  3. Füge die richtige Verstärkungszeile zur Konfigurationsdatei hinzu

Die Verstärkungszeile erstellen​

Nehmen wir an, du hast einen Custom Boss mit diesem Format:

isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua

Und du möchtest ihm Verstärkungen hinzufügen. So könnte eine solche Verstärkung aussehen:

- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml

Und um sie gültig zu machen, füge sie der powers-Liste hinzu:

isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml

Die Verstärkung ist nun der Boss-Entität hinzugefügt. Wie du jedoch sehen kannst, gibt es hier mehrere Optionen, die du anpassen kannst. Gehen wir sie durch.

Alle Optionen für benutzerdefinierte Verstärkungen​

Tipp: Du kannst auch EliteScript verwenden, um Verstärkungen zu beschwören, mehr dazu hier.

summonType​

Dies ist ein Pflichtfeld. Es legt fest, wann die Verstärkung spawnen soll.

KeyWerteStandard
summonTypeSpeziell [1]keiner (Pflicht)
Beispiel
summonType: ON_HIT

Speziell [1]​

KeyBeschreibung
ONCEVersucht bei geeigneten Spielertreffern eine Gruppe, bis die Zufallsprüfung gelingt. Siehe Trefferbedingungen unten.
ON_HITVersucht bei jedem geeigneten Spielertreffer eine Gruppe gemäß chance.
ON_COMBAT_ENTERSpawnt die Verstärkung, wenn der Boss in den Kampf eintritt (1)
ON_COMBAT_ENTER_PLACE_CRYSTALSpeziell: Dies dient speziell dazu, Enderkristalle für Drachenkämpfe zu platzieren, wenn der Boss in den Kampf eintritt (1)
ON_DEATHSpawnt die Verstärkung, wenn der Boss stirbt
GLOBALPlant sofort und alle 10 Sekunden amount Verstärkungen, solange der Spawn-Lebenszyklus des Bosses aktiv ist; Kampf ist nicht erforderlich. Jede Verstärkung sucht über customSpawn einen Spieler und Ort in der Bosswelt. Jede Beschwörung einer Gruppe entfällt, sobald die erfasste globale Anzahl das 30-Fache der Spielerzahl dieser Welt erreicht; die Anzahl überschreitet diese Obergrenze daher nicht. Erfordert customSpawn.

(1) Der Kampfeintritt kann durch erlittenen Spielerschaden, Schaden an einem Spieler oder das Erfassen eines Spielers als Ziel entstehen. Diese Verstärkungen können nach Verlassen und erneutem Betreten des Kampfes wieder auslösen; sie sind keine ONCE-Einträge.

ONCE gilt für den aktuell geparsten Eintrag, nicht für den gesamten Kampf mit mehreren Phasen. Ein Phasenwechsel mit erneutem Parsen der Kräfte erzeugt neue Einträge. Erreicht die Gruppe einen Spawn-Versuch, kann auch ein blockierter Spawn ONCE verbrauchen. Das garantiert keine lebende Verstärkung.


filename​

Dies ist ein Pflichtfeld, da es festlegt, welche Verstärkung spawnen soll. Die einzige Ausnahme, die dieses Feld nicht zur Pflicht macht, ist die Verwendung der Einstellung summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL, da Enderkristalle keine Elites sind.

KeyWerteStandard
filenameDateinamekeiner
Beispiel
filename: test_boss.yml

Wichtig: filename muss auf eine vorhandene Boss-Datei in custombosses verweisen. Ein ungültiger Verweis verhindert das Spawnen der Verstärkung und erzeugt eine Konsolenwarnung. Ein Eintrag ohne filename (außer bei Kristall-Einträgen), mit einem chance-Wert, der keine endliche Zahl ist, oder mit einer location, die nicht aus drei endlichen Zahlen besteht, wird bei jeder Erstellung des Bosses verworfen, mit einer Invalid reinforcement-Warnung, die die Boss-Datei nennt.


Mindestanforderung

summonType: SUMMON_TYPE und filename: filename.yml reichen für sich allein aus, um eine benutzerdefinierte Verstärkung zu erstellen. Das folgende Beispiel veranschaulicht dies.

Hinweis: Bei Schlüsseln spielt Groß-/Kleinschreibung keine Rolle: summonType und SUMMONTYPE funktionieren. Enum-Werte wie ON_HIT verlangen die oben gezeigte exakte Großschreibung. Dateinamen müssen zu den referenzierten Definitionen passen.

Beispiel
isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml

Wenn du jedoch etwas Komplexeres möchtest oder benötigst, lies unten weiter, um zu sehen, was du sonst noch mit diesen Optionen anstellen kannst.


chance​

Dieses optionale Feld legt eine Zufallsprüfung für die gesamte Gruppe fest. Es gilt für ONCE, ON_HIT, ON_COMBAT_ENTER und ON_DEATH, nicht für GLOBAL oder ON_COMBAT_ENTER_PLACE_CRYSTAL. Bei ONCE erlaubt eine fehlgeschlagene Prüfung einen erneuten Versuch beim nächsten geeigneten Treffer.

KeyWerteStandard
chanceDouble1.0
Beispiel
chance: 0.5

Stellt eine Chance von 50 % dar, eine benutzerdefinierte Verstärkung zu spawnen.


Verwende einen endlichen chance-Wert zwischen 0.0 und 1.0. Für ON_HIT und einen unverbrauchten ONCE-Eintrag darf das Spielerschadensereignis nicht abgebrochen sein. Der Boss muss eine lebende Entität mit aktiver KI haben, seine Kräfte dürfen nicht unterdrückt sein und der Ereignisschaden muss mindestens 3 betragen. Jeder geeignete Treffer erhält eine unabhängige Zufallsprüfung für die ganze Gruppe.

Trefferverstärkungen und Abklingzeiten

ON_HIT und ONCE umgehen Abklingzeiten der Kraft und des Bosses, einschließlich EliteScript Cooldowns.global und Lua cooldowns.set_global(...). Die obigen Trefferbedingungen gelten weiterhin. Passe wiederholte Beschwörungen über chance und amount an.

Eine ausbleibende Verstärkung untersuchen

Aktiviere /em debug und triff den Boss. Meldungen mit [CustomSummon] zeigen abgelehnte Treffer, fehlgeschlagene Zufallsprüfungen, berechnete Orte und ob ein normaler Spawn eine lebende Entität erzeugt hat. Regionale Verstärkungen werden zur späteren Initialisierung eingeplant. Unterdrückte Kräfte erzeugen derzeit die allgemeine Ablehnungsmeldung ohne eigene Erklärung. Bei ausgeschaltetem Debug sind diese Meldungen deaktiviert.


location​

location: x,y,z ist ein optionales Konfigurationsfeld, das es Admins ermöglicht, den Standort der Verstärkung um eine bestimmte Anzahl von Blöcken zu versetzen. Hier sind die wichtigsten Konzepte, die du zu dieser Option kennen musst:

Der versetzte Standort ist relativ. Das bedeutet, dass location: 0,10,0 einen Boss genau 10 Blöcke über dem Boss spawnt und nicht auf den Weltkoordinaten 0,10,0.

Der relative Standort ist für regionale Bosse anders. Regionale Bosse verwenden immer ihren Spawnpunkt als Ursprung für den relativen Standort. Das bedeutet, wenn du weißt, wo sich der Spawnpunkt des Bosses befindet, und die Blöcke abzählst, kannst du Verstärkungs-Bosse an bestimmten Standorten spawnen lassen. Das Versteck des Binder of Worlds nutzt dies, um die Bosse des Herausforderungsturms an extrem genauen Blockpositionen zu spawnen, unabhängig davon, wo sich der Drachen-Boss befindet.

Bosse spawnen innerhalb von Blöcken, wenn du dich beim Abmessen der Entfernungen vertust.

KeyWerteStandard
locationStringkeiner
Beispiel
location: 0,10,0

Spawnt für einen nicht-regionalen Custom Boss die Verstärkung genau 10 Blöcke über dem Boss, unabhängig davon, wo er sich befindet.

Spawnt für einen regionalen Custom Boss die Verstärkung genau 10 Blöcke über dem Spawnpunkt des regionalen Bosses, unabhängig davon, wo sich der Boss befindet.

Wichtiger Hinweis: Dies ist speziell für summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL ein Pflichtfeld!


lightningRod​

Nur für summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL. Solange Boss und Kristall gültig sind, beginnt sofort und alle fünf Sekunden ein Angriff. Jeder Angriff zeigt etwa drei Sekunden Warnpartikel und erzeugt dann einen Blitz und einen abwärts fliegenden explosiven Feuerball. Das Ziel liegt mit X/Z-Versätzen von -15 bis 14 auf Kristallhöhe und wird nicht auf den Boden projiziert. Der Kristall wird als Elite-Kristall markiert und als Verstärkung erfasst; er übernimmt kein Mob-Kampfziel.

Sie kann nicht mit den anderen benutzerdefinierten Verstärkungen verwendet werden, da diese für solche Fähigkeiten auf Powers zurückgreifen sollten.

KeyWerteStandard
lightningRodBooleanfalse
Beispiel
lightningRod: false

inheritAggro​

Ist ein optionales Konfigurationsfeld, das benutzerdefinierte Verstärkungen die Bedrohungsstufen des Bosses übernehmen lässt.

Kopiert die Bedrohungstabelle des Beschwörers, damit Verstärkungen sein Ziel mit der höchsten Bedrohung wählen können. Bedrohung berücksichtigt auch Heilung und Provokationen, nicht nur Schaden. Schaden und Belohnungsbeiträge werden nicht kopiert.

KeyWerteStandard
inheritAggroBooleanfalse
Beispiel
inheritAggro: false

amount​

Legt die Anzahl benutzerdefinierter Bosse einer erfolgreichen Gruppe fest. Verwende eine positive Ganzzahl. Der Kristalltyp setzt immer einen Kristall je Eintrag und ignoriert amount.

KeyWerteStandard
amountInteger1
Beispiel
amount: 1

spawnNearby​

Ist ein optionales Konfigurationsfeld, das festlegt, ob die benutzerdefinierte Verstärkung in der Nähe spawnen soll, anstatt direkt auf dem Boss oder an einem bestimmten relativen Standort.

Prüft bis zu 30 Orte mit ganzzahligen X/Z-Versätzen von -15 bis 14 um die berechnete Position einschließlich location-Versatz. Jeder Versuch sucht ab dieser Y-Höhe aufwärts bis zwei Blöcke unter der Bauhöhengrenze der Welt nach zwei Luftblöcken über einem nicht passierbaren Block. Scheitern alle Versuche, bleibt die ursprüngliche berechnete Position. Diese Suche verwendet nicht die Spielerabstands-, Licht- oder Weltfilter von Custom Spawn; normale Schutzprüfungen beim Boss-Spawn gelten weiterhin.

KeyWerteStandard
spawnNearbyBooleanfalse
Beispiel
spawnNearby: false

inheritLevel​

Ist ein optionales Konfigurationsfeld, das festlegt, ob die benutzerdefinierte Verstärkung das Level des Custom Bosses übernehmen soll, den sie verstärkt.

KeyWerteStandard
inheritLevelBooleanfalse
Beispiel
inheritLevel: false

customSpawn​

Ist ein Konfigurationsfeld, das nur für globale Verstärkungen verwendet wird. Es nutzt die benutzerdefinierten Spawn-Einstellungen, um festzulegen, wo die Verstärkungen spawnen können.

Verwende die Oberflächen-, Licht-, Höhen- und Ortsprüfungen unter Benutzerdefinierte Spawns, einschließlich des dortigen Biomfilters und des dort beschriebenen Wartens auf die passende Zeit. Globale Verstärkungen wählen direkt aus allen Spielern in der Spawn-Welt des Beschwörers. Sie umgehen die gewöhnlichen Prüfungen auf geladene Spielerdaten, ValidWorlds.yml, validWorlds, validWorldEnvironments, Instanzen und die Mob-Spawning-Spielregel. Der globale Ablauf verwendet filename, amount und customSpawn, aber nicht chance, location, spawnNearby, inheritAggro oder inheritLevel.

KeyWerteStandard
customSpawnDateinamekeiner
Beispiel
customSpawn: normal_surface_spawn.yml

difficultyID​

Beschränkt den Eintrag auf Schwierigkeitsgrade instanzierter Dungeons. Akzeptiert einen Namen, eine numerische ID oder eine Liste daraus; siehe Schwierigkeitsabgleich.

KeyWerteStandard
difficultyIDString oder Liste von Stringsnone

Hat der Boss einen instanzierten Dungeon mit aktivem Schwierigkeitsgrad und passt der Filter nicht, wird der gesamte Eintrag vor dem Parsen verworfen. Ein ausdrücklich leerer oder ungültiger Filter passt zu keiner Schwierigkeit. Lass den Schlüssel für einen unbeschränkten Eintrag weg. Außerhalb einer Dungeon-gebundenen Instanz hat der Filter keine Wirkung.

Beispiel
- summonType: ON_COMBAT_ENTER
filename: elite_add.yml
difficultyID:
- hard
- mythic

Eine große Verstärkung zusammenstellen​

Erstellen wir eine Beispiel-Verstärkung unter Verwendung der meisten der vorherigen Felder:

- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
spawnNearby: true
inheritAggro: true
inheritLevel: true

Dies bewirkt Folgendes:

  • Erstellt eine benutzerdefinierte Verstärkung
  • Die benutzerdefinierte Verstärkung spawnt, wenn der Custom Boss in den Kampf eintritt (summonType: ON_COMBAT_ENTER)
  • Die beschworene benutzerdefinierte Verstärkung ist die aus test_boss.yml (filename: test_boss.yml)
  • Die Verstärkung nutzt die unter spawnNearby beschriebene Bodensuche, in diesem Beispiel um den Boss (spawnNearby: true).
  • Die Verstärkung kopiert die Bedrohungstabelle des Beschwörers zur Zielwahl (inheritAggro: true).
  • Unabhängig von der Einstellung in test_boss.yml hat die benutzerdefinierte Verstärkung dasselbe Level wie der Custom Boss, den sie verstärkt (inheritLevel: true)
- summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL
location: -80,10,0
lightningRod: true

Dies bewirkt Folgendes:

  • Erstellt eine benutzerdefinierte Verstärkung
  • Die benutzerdefinierte Verstärkung ist ein Enderkristall, der platziert wird, wenn der Kampf beginnt (summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL)
  • Der Kristall erzeugt wiederholt verzögerte Blitz- und Feuerballangriffe mit nahen X/Z-Versätzen (lightningRod: true).
# Example: Boss that spawns revenge minions on death
- summonType: ON_DEATH
filename: revenge_minion.yml
amount: 3
spawnNearby: true

Dies bewirkt Folgendes:

  • Erstellt eine benutzerdefinierte Verstärkung
  • Die benutzerdefinierte Verstärkung spawnt, wenn der Boss stirbt (summonType: ON_DEATH)
  • Die beschworene benutzerdefinierte Verstärkung ist die aus revenge_minion.yml (filename: revenge_minion.yml)
  • Drei Verstärkungen spawnen (amount: 3)
  • Die Verstärkungen nutzen die Bodensuche um den Todesort (spawnNearby: true).

Nun wenden wir dies auf den Custom Boss an:

isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
spawnNearby: true
inheritAggro: true
inheritLevel: true
- summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL
location: -80,10,0
lightningRod: true

Und fertig! Hier sind noch ein paar Tipps:

  • Die Felder können in beliebiger Reihenfolge gesetzt werden, es wird jedoch empfohlen, summonType immer an erster Stelle zu haben!
  • Verwende für neue Inhalte die hier gezeigten YAML-Map-Einträge statt der alten Stringformate summon: oder summonable:. Diese Strings werden weiterhin geladen: EliteMobs wandelt sie im Speicher um und lässt die Boss-Datei unverändert. Ein alter String mit fehlenden, leeren oder doppelten Feldern wird mit einer Warnung verworfen.