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:
- Erstelle deinen Haupt-Custom-Boss, der deinen Custom Boss beschwören wird
- 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.
- 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.
| Key | Werte | Standard |
|---|---|---|
summonType | Speziell [1] | keiner (Pflicht) |
Beispiel
summonType: ON_HIT
Speziell [1]
| Key | Beschreibung |
|---|---|
ONCE | Versucht bei geeigneten Spielertreffern eine Gruppe, bis die Zufallsprüfung gelingt. Siehe Trefferbedingungen unten. |
ON_HIT | Versucht bei jedem geeigneten Spielertreffer eine Gruppe gemäß chance. |
ON_COMBAT_ENTER | Spawnt die Verstärkung, wenn der Boss in den Kampf eintritt (1) |
ON_COMBAT_ENTER_PLACE_CRYSTAL | Speziell: Dies dient speziell dazu, Enderkristalle für Drachenkämpfe zu platzieren, wenn der Boss in den Kampf eintritt (1) |
ON_DEATH | Spawnt die Verstärkung, wenn der Boss stirbt |
GLOBAL | Plant 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.
| Key | Werte | Standard |
|---|---|---|
filename | Dateiname | keiner |
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.
| Key | Werte | Standard |
|---|---|---|
chance | Double | 1.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.
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.
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.
| Key | Werte | Standard |
|---|---|---|
location | String | keiner |
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.
| Key | Werte | Standard |
|---|---|---|
lightningRod | Boolean | false |
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.
| Key | Werte | Standard |
|---|---|---|
inheritAggro | Boolean | false |
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.
| Key | Werte | Standard |
|---|---|---|
amount | Integer | 1 |
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.
| Key | Werte | Standard |
|---|---|---|
spawnNearby | Boolean | false |
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.
| Key | Werte | Standard |
|---|---|---|
inheritLevel | Boolean | false |
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.
| Key | Werte | Standard |
|---|---|---|
customSpawn | Dateiname | keiner |
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.
| Key | Werte | Standard |
|---|---|---|
difficultyID | String oder Liste von Strings | none |
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
spawnNearbybeschriebene 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.ymlhat 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,
summonTypeimmer an erster Stelle zu haben! - Verwende für neue Inhalte die hier gezeigten YAML-Map-Einträge statt der alten Stringformate
summon:odersummonable:. 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.