Créer des Renforts Personnalisés
Utilisez des entrées de renfort dans la liste powers d'un boss pour invoquer d'autres boss personnalisés pendant le combat.
Étapes pour créer un boss personnalisé :
- Créez votre boss personnalisé principal qui invoquera votre boss personnalisé
- Créez un boss personnalisé pour les renforts. Gardez à l'esprit que les boss personnalisés peuvent être plus forts que les mobs vanilla, mais ils peuvent aussi être plus faibles.
- Ajoutez la bonne ligne de renfort au fichier de configuration
Créer la ligne de renfort
Supposons que vous ayez un boss personnalisé avec ce format :
isEnabled: true
entityType: ENDER_DRAGON
name: $eventBossLevel &eBinder of Worlds
level: 200
powers:
- ender_dragon_arrow_bombardment.lua
Et que vous vouliez y ajouter des renforts. Voici à quoi pourrait ressembler un tel renfort :
- summonType: ON_COMBAT_ENTER
filename: binder_of_worlds_phase_1_parkour_reinforcement.yml
Et pour le rendre valide, ajoutez-le à la liste des powers :
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
Le renfort est maintenant ajouté à l'entité boss. Cependant, comme vous pouvez le voir, il y a plusieurs options ici que vous pouvez personnaliser. Couvrons-les.
Toutes les options de Renfort Personnalisé
Astuce : Vous pouvez aussi utiliser EliteScript pour invoquer des renforts, plus d'informations à ce sujet ici.
summonType
C'est un champ obligatoire. Il définit le moment où le renfort doit apparaître.
| Clé | Valeurs | Défaut |
|---|---|---|
summonType | Spécial [1] | aucun (obligatoire) |
Exemple
summonType: ON_HIT
Spécial [1]
| Clé | Description |
|---|---|
ONCE | Tente un lot à chaque coup de joueur admissible jusqu'à la réussite du tirage. Voir les conditions ci-dessous. |
ON_HIT | Tente un lot à chaque coup de joueur admissible, selon chance. |
ON_COMBAT_ENTER | Fait apparaître le renfort lorsque le boss entre en combat (1) |
ON_COMBAT_ENTER_PLACE_CRYSTAL | Spécial : ceci sert spécifiquement à placer des cristaux de l'End pour les combats de dragon lorsque le boss entre en combat (1) |
ON_DEATH | Fait apparaître le renfort lorsque le boss meurt |
GLOBAL | Programme amount renforts immédiatement puis toutes les 10 secondes tant que le cycle d'apparition du boss reste actif ; le combat n'est pas requis. Chaque renfort utilise customSpawn pour choisir un joueur et un lieu dans le monde du boss. Chaque invocation d'un lot est ignorée dès que le nombre global suivi atteint 30 fois le nombre de joueurs de ce monde : le total ne dépasse donc pas ce plafond. Nécessite customSpawn. |
(1) L'entrée en combat peut venir de dégâts reçus d'un joueur, de dégâts infligés à un joueur ou de l'acquisition d'un joueur comme cible. Ces renforts peuvent repartir après une sortie puis une nouvelle entrée en combat ; ce ne sont pas des entrées ONCE.
ONCE suit l'entrée actuellement analysée, pas toute la rencontre à plusieurs phases. Une transition qui réanalyse les pouvoirs crée de nouvelles entrées. Quand le lot atteint une tentative de spawn, un spawn bloqué peut tout de même consommer ONCE ; cela ne garantit pas l'apparition d'un renfort vivant.
filename
C'est un champ obligatoire car il définit quel renfort doit apparaître. La seule exception à l'obligation de ce champ est lors de l'utilisation du paramètre summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL, car les cristaux de l'End ne sont pas des élites.
| Clé | Valeurs | Défaut |
|---|---|---|
filename | Filename | aucun |
Exemple
filename: test_boss.yml
Important : filename doit désigner un fichier de boss existant dans custombosses. Une référence invalide empêche l’apparition du renfort et produit un avertissement dans la console. Une entrée sans filename (hors entrée de cristal), avec une chance qui n'est pas un nombre fini, ou avec une location qui n'est pas composée de trois nombres finis est écartée à chaque création du boss, avec un avertissement Invalid reinforcement nommant le fichier du boss.
Viabilité Minimale
summonType: SUMMON_TYPE et filename: filename.yml suffisent à eux seuls pour créer un Renfort Personnalisé. L'exemple suivant le démontre.
Note : Les clés ne sont pas sensibles à la casse : summonType et SUMMONTYPE fonctionnent. Les valeurs énumérées comme ON_HIT exigent l'orthographe exacte en majuscules indiquée plus haut. Les noms de fichiers doivent correspondre aux définitions référencées.
Exemple
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
Cependant, si vous voulez ou avez besoin de quelque chose de plus complexe, continuez la lecture ci-dessous pour voir ce que vous pouvez faire d'autre avec ces options.
chance
Ce champ facultatif définit un tirage pour tout le lot. Il s'applique à ONCE, ON_HIT, ON_COMBAT_ENTER et ON_DEATH, mais pas à GLOBAL ni à ON_COMBAT_ENTER_PLACE_CRYSTAL. Pour ONCE, un tirage raté laisse l'entrée disponible pour un autre coup admissible.
| Clé | Valeurs | Défaut |
|---|---|---|
chance | Double | 1.0 |
Exemple
chance: 0.5
Représente une chance de 50 % de faire apparaître un Renfort Personnalisé.
Utilisez un chance fini entre 0.0 et 1.0. Pour ON_HIT et une entrée ONCE inutilisée, l'événement de dégâts du joueur doit être non annulé, le boss doit avoir une entité vivante avec IA active, ses pouvoirs ne doivent pas être supprimés et les dégâts de l'événement doivent être au moins 3. Chaque coup admissible effectue un tirage indépendant pour tout le lot.
ON_HIT et ONCE ignorent les temps de recharge du pouvoir et du boss, y compris ceux démarrés par Cooldowns.global d'EliteScript ou cooldowns.set_global(...) de Lua. Les conditions de coup ci-dessus restent applicables. Réglez les invocations répétées avec chance et amount.
Activez /em debug et frappez le boss. Les messages [CustomSummon] montrent les coups rejetés, les tirages ratés, les lieux calculés et si un spawn normal a produit une entité vivante. Un renfort régional est programmé pour une initialisation ultérieure. La suppression des pouvoirs produit actuellement le message de rejet générique, sans explication spécifique. Ces messages sont désactivés lorsque le débogage est coupé.
location
location: x,y,z est un champ de configuration optionnel qui permet aux administrateurs de décaler l'emplacement du renfort d'un certain nombre de blocs. Voici les concepts clés que vous devez connaître sur cette option :
L'emplacement de décalage est relatif. Cela signifie que location: 0,10,0 fera apparaître un boss exactement 10 blocs au-dessus du boss, et non aux coordonnées mondiales 0,10,0.
L'emplacement relatif est différent pour les boss régionaux. Les boss régionaux utiliseront toujours leur point d'apparition comme origine de l'emplacement relatif, ce qui signifie que si vous savez où se trouve le point d'apparition du boss et que vous comptez les blocs, vous pouvez faire apparaître les boss de renfort à des emplacements spécifiques. Le repaire du Binder of Worlds repose là-dessus pour faire apparaître les boss de la tour de défi à des positions de blocs extrêmement précises, peu importe où se trouve le boss dragon.
Les boss apparaîtront à l'intérieur des blocs si vous vous trompez dans le calcul des distances.
| Clé | Valeurs | Défaut |
|---|---|---|
location | String | aucun |
Exemple
location: 0,10,0
Pour un Boss Personnalisé non régional, fera apparaître le renfort exactement 10 blocs au-dessus du boss, peu importe où il se trouve.
Pour un Boss Personnalisé régional, fera apparaître le renfort exactement 10 blocs au-dessus du point d'apparition du boss régional, peu importe où se trouve le boss.
Note importante : c'est un champ obligatoire spécifiquement pour summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL !
lightningRod
Uniquement avec summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL. Tant que le boss et le cristal sont valides, une attaque démarre immédiatement puis toutes les cinq secondes. Chaque attaque affiche des particules d'avertissement pendant environ trois secondes, puis crée un éclair et une boule de feu explosive descendante. La cible utilise des décalages X/Z de -15 à 14 à la hauteur du cristal, sans projection au sol. Le cristal est marqué comme élite et suivi comme renfort ; il n'hérite pas d'une cible de combat de mob.
Il ne peut pas être utilisé avec les autres Renforts Personnalisés, car ceux-ci doivent s'appuyer sur des powers pour ce genre de capacités.
| Clé | Valeurs | Défaut |
|---|---|---|
lightningRod | Boolean | false |
Exemple
lightningRod: false
inheritAggro
C'est un champ de configuration optionnel qui fait hériter aux Renforts Personnalisés les niveaux de menace du boss.
Copie la table de menace de l'invocateur, afin que les renforts puissent choisir sa cible la plus menaçante. La menace tient aussi compte des soins et provocations ; ce n'est pas un simple classement des dégâts. Les dégâts et la contribution aux récompenses ne sont pas copiés.
| Clé | Valeurs | Défaut |
|---|---|---|
inheritAggro | Boolean | false |
Exemple
inheritAggro: false
amount
Définit le nombre de boss personnalisés d'un lot réussi. Utilisez un entier positif. Le type cristal place toujours un cristal par entrée et ignore amount.
| Clé | Valeurs | Défaut |
|---|---|---|
amount | Integer | 1 |
Exemple
amount: 1
spawnNearby
C'est un champ de configuration optionnel qui définit si le Renfort Personnalisé doit apparaître à proximité plutôt que sur le boss ou à un emplacement relatif spécifique.
Essaie jusqu'à 30 lieux avec des décalages entiers X/Z de -15 à 14 autour du lieu calculé, décalage location compris. Chaque essai cherche vers le haut depuis ce Y, en s'arrêtant deux blocs sous la limite de construction du monde, deux blocs d'air sur un bloc non traversable. Si tous échouent, le lieu calculé initial est utilisé. Cette recherche n'applique pas les filtres de distance aux joueurs, de lumière ou de monde de Custom Spawn ; les protections normales du spawn du boss restent applicables.
| Clé | Valeurs | Défaut |
|---|---|---|
spawnNearby | Boolean | false |
Exemple
spawnNearby: false
inheritLevel
C'est un champ de configuration optionnel qui définit si le Renfort Personnalisé doit hériter du niveau du Boss Personnalisé qu'il renforce.
| Clé | Valeurs | Défaut |
|---|---|---|
inheritLevel | Boolean | false |
Exemple
inheritLevel: false
customSpawn
C'est un champ de configuration qui n'est utilisé que pour les renforts globaux. Il utilise les paramètres de spawn personnalisé pour définir où les renforts pourront apparaître.
Utilisez les contrôles de surface, de lumière, de hauteur et de lieu des Spawns Personnalisés, y compris leur filtre de biomes et le comportement d'attente horaire qui y est décrit. Les renforts globaux choisissent directement parmi tous les joueurs du monde d'apparition de l'invocateur. Ils ignorent les contrôles normaux de données chargées, de ValidWorlds.yml, de validWorlds, de validWorldEnvironments, d'instance et de règle d'apparition des mobs. La voie globale utilise filename, amount et customSpawn, sans appliquer chance, location, spawnNearby, inheritAggro ni inheritLevel.
| Clé | Valeurs | Défaut |
|---|---|---|
customSpawn | Filename | aucun |
Exemple
customSpawn: normal_surface_spawn.yml
difficultyID
Restreint le renfort à des difficultés de donjon instancié. Accepte un nom, un ID numérique ou une liste des deux ; voir la correspondance des difficultés.
| Clé | Valeurs | Défaut |
|---|---|---|
difficultyID | String ou liste de chaînes | aucun |
Si le boss possède un donjon instancié avec une difficulté active et que le filtre ne correspond pas, toute l'entrée est écartée avant analyse. Un filtre explicitement vide ou invalide ne correspond à aucune difficulté. Omettez la clé pour ne pas restreindre l'entrée. Hors d'une instance associée à un donjon, ce filtre est sans effet.
Exemple
- summonType: ON_COMBAT_ENTER
filename: elite_add.yml
difficultyID:
- hard
- mythic
Assembler un grand renfort
Créons un exemple de renfort en utilisant la plupart des champs précédents :
- summonType: ON_COMBAT_ENTER
filename: test_boss.yml
spawnNearby: true
inheritAggro: true
inheritLevel: true
Cela fait ce qui suit :
- Crée un Renfort Personnalisé
- Le Renfort Personnalisé apparaîtra lorsque le Boss Personnalisé entre en combat (
summonType: ON_COMBAT_ENTER) - Le Renfort Personnalisé invoqué sera celui de
test_boss.yml(filename: test_boss.yml) - Le renfort utilise la recherche de sol décrite sous
spawnNearby, centrée sur le boss dans cet exemple (spawnNearby: true). - Le renfort copie la table de menace de l'invocateur pour choisir sa cible (
inheritAggro: true). - Quel que soit le paramètre dans
test_boss.yml, le Renfort Personnalisé aura le même niveau que le Boss Personnalisé qu'il renforce (inheritLevel: true)
- summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL
location: -80,10,0
lightningRod: true
Cela fait ce qui suit :
- Crée un Renfort Personnalisé
- Le Renfort Personnalisé sera un Cristal de l'End qui est placé lorsque le combat commence (
summonType: ON_COMBAT_ENTER_PLACE_CRYSTAL) - Le cristal crée régulièrement des attaques retardées d'éclairs et de boules de feu à des décalages X/Z proches (
lightningRod: true).
# Example: Boss that spawns revenge minions on death
- summonType: ON_DEATH
filename: revenge_minion.yml
amount: 3
spawnNearby: true
Cela fait ce qui suit :
- Crée un Renfort Personnalisé
- Le Renfort Personnalisé apparaîtra lorsque le boss meurt (
summonType: ON_DEATH) - Le Renfort Personnalisé invoqué sera celui de
revenge_minion.yml(filename: revenge_minion.yml) - Trois renforts apparaîtront (
amount: 3) - Les renforts utilisent la recherche de sol autour du lieu de mort (
spawnNearby: true).
Maintenant, pour appliquer cela au Boss Personnalisé :
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
Et c'est terminé ! Voici quelques conseils supplémentaires :
- Les champs peuvent être définis dans n'importe quel ordre, bien qu'il soit recommandé de toujours avoir
summonTypeen premier ! - Pour les nouveaux contenus, utilisez les entrées de mapping YAML montrées ici au lieu des anciens formats de chaîne
summon:ousummonable:. Ces chaînes se chargent toujours : EliteMobs les convertit en mémoire et laisse le fichier du boss tel qu'il est écrit. Une ancienne chaîne dont des champs sont absents, vides ou répétés est écartée avec un avertissement.