Aller au contenu principal

Système de butin d'Extractioncraft

Le système de butin d'Extractioncraft comporte trois niveaux : les packs de contenu référencent des tables de butin, qui référencent des pools de butin, lesquels définissent les objets pouvant être obtenus.

Vue d'ensemble​

Content Package
-> chestLootTables / barrelLootTables (weighted selection)
-> Loot Table
-> lootTable entries (each has a chance to roll)
-> Loot Pool
-> eliteMobsLoot / vanillaLoot (weighted selection of one item)

Tables de butin​

Les configurations des tables de butin se trouvent dans loot_tables/. Chaque fichier définit des entrées de pools de butin, chacune ayant une probabilité indépendante de produire un objet.

CléTypeValeur par défautDescription
isEnabledBooleantrueDéfinissez false pour que la table ne produise plus aucun butin. Les conteneurs ignorent une table désactivée lors de leur choix, et les mobs tués ne l'utilisent pas.
spawnPoolsListe de chaînes[]Noms des pools d'apparition BetterStructures. La mort d'un EliteMob associé à un pool correspondant utilise cette table pour son butin. La comparaison ignore la casse et le suffixe .yml : kobold_miner_pool et Kobold_Miner_Pool.yml correspondent donc au même pool.
lootTableListe d'objets[]Chaque entrée référence un fichier de pool de butin et une chance entre 0.0 et 1.0

Format d'une entrée de table​

lootTable:
- filename: my_loot_pool.yml
chance: 0.5
- filename: another_pool.yml
chance: 0.2

Chaque entrée fait l'objet d'un tirage indépendant. Une chance de 0.5 donne 50 % de probabilité que ce pool produise un objet. chance peut être un nombre ou une chaîne numérique. Une entrée dont le fichier de pool n'existe pas dans loot_pools/, ou dont la chance est absente ou hors de l'intervalle 0 à 1, est ignorée avec un avertissement au démarrage ; les autres entrées sont tout de même chargées.

Pools de butin​

Les configurations des pools se trouvent dans loot_pools/. Chaque pool définit un ensemble d'objets possibles. Lors d'un tirage, un objet est choisi selon leurs poids relatifs.

CléTypeValeur par défautDescription
isEnabledBooleantrueAvec false, les entrées de tables de butin qui référencent ce pool ne le tirent jamais.
eliteMobsLootListe d'objets[]Objets personnalisés EliteMobs pouvant être obtenus
vanillaLootListe d'objets[]Objets Minecraft vanilla pouvant être obtenus

Entrée de butin EliteMobs​

eliteMobsLoot:
- filename: my_elite_item.yml
weight: 1.0
- filename: another_item.yml
weight: 0.5

filename désigne une configuration d'objet personnalisé EliteMobs. weight détermine sa probabilité relative parmi toutes les entrées du pool.

Certains objets personnalisés sont exclus de la sélection avant le tirage :

  • Un objet doté d'une permission ne peut provenir que des coffres et tonneaux, et uniquement pour un joueur possédant cette permission. L'objet obtenu appartient à ce joueur : personne d'autre ne peut le ramasser. Les mobs tués ne donnent jamais d'objets verrouillés par permission.
  • Un objet avec itemType: CLASS_LOOT n'est éligible que si le butin de classe d'EliteMobs l'autorise pour la difficulté et le rang du butin. Le butin de classe est obtenu non lié.

Entrée de butin vanilla​

vanillaLoot:
- material: DIAMOND
weight: 1.0
- material: GOLD_INGOT
weight: 2.0

material est un nom de l'énumération Bukkit Material. weight fonctionne comme pour les entrées élites. Toutes les entrées élites et vanilla participent à un même tirage pondéré : un pool produit donc au maximum un objet par tirage. Les objets vanilla sont toujours fournis à l'unité. Un material inconnu, qui n'est pas un objet ou qui correspond à de l'air est ignoré avec un avertissement au démarrage. Un fichier eliteMobsLoot sans objet personnalisé EliteMobs correspondant produit un avertissement au moment du tirage et ne donne aucun objet.

Les poids acceptent les décimaux (0.5), les entiers (2) et les chaînes numériques ("1.5"), et doivent être supérieurs à 0. Une entrée dont le poids est absent, nul, négatif ou non numérique, ou qui n'a ni filename ni material, est ignorée avec un avertissement au démarrage ; le reste du pool est tout de même chargé.

Butin des conteneurs : coffres et tonneaux​

Lorsque la partie est lancée, BetterStructures place un coffre ou un tonneau sur chaque marqueur de conteneur de la carte. Lorsqu'un joueur de la partie fait un clic droit sur un coffre ou un tonneau :

  1. Le conteneur vanilla ne s'ouvre pas. L'interaction est annulée et remplacée par la procédure de pillage d'Extractioncraft, qui ne fonctionne que pendant la partie active et uniquement pour les conteneurs placés par la partie.
  2. Le joueur doit rester parfaitement immobile pendant 3 secondes. Un compte à rebours apparaît en sous-titre.
  3. Tout changement de position annule l'interaction avec le message « Don't move while opening a container! ». Regarder autour de soi sans se déplacer est autorisé. Un joueur ne peut ouvrir qu'un seul conteneur à la fois, et un conteneur ne peut être ouvert que par un seul joueur à la fois.
  4. La table de butin a été choisie dans la liste pondérée chestLootTables ou barrelLootTables du pack au début de l'interaction. En cas de réussite, elle génère les objets.
  5. Le conteneur est remplacé par de l'air, et chaque entrée de la table choisie fait l'objet d'un tirage indépendant. Les objets obtenus tombent au sol à la position du conteneur.

Les conteneurs actifs dans une partie émettent des particules de portail tous les 10 ticks pour être facilement repérables.

Le butin des conteneurs utilise le contentLevel du pack (par défaut 10) comme niveau d'objet EliteMobs. Sa difficulté de butin de classe dépend de la zone où se trouve le conteneur, comme décrit dans Butin des mobs tués, et son rang est le plus bas, trash.

Butin des mobs tués​

Lorsqu'un EliteMob meurt dans le monde d'une partie Extractioncraft active, le plugin lit la donnée personnalisée betterstructures:spawnpool que BetterStructures attache aux boss qu'il fait apparaître. Les mobs sans cette donnée, ainsi que les morts survenues hors du monde d'une partie active, ne produisent jamais de butin Extractioncraft.

Chaque table activée dont spawnPools correspond au pool d'apparition du mob génère son butin à l'endroit de la mort. Il ne s'agit pas d'un choix pondéré : référencer le même pool d'apparition dans trois tables produit trois séries indépendantes de tirages. Le niveau du mob est transmis à EliteMobs pour générer des objets de niveau approprié, avec la difficulté et le rang de butin de classe du boss.

BetterStructures fait apparaître chaque boss instancié au maxLevel de son pool d'apparition lorsque la partie est lancée. Chacun de ces boss reçoit aussi la difficulté de la zone où il est apparu. Les zones sont des bandes carrées autour du centre de la carte :

ZoneDistance au centre sur l'un ou l'autre axeDifficulté EliteMobs par défaut
2Moins d'un sixième de la largeur de la carteMythic
1Moins d'un tiers de la largeur de la carteHard
0Le reste de la carteNormal

Les noms de difficulté proviennent de la correspondance difficultyIds des réglages de butin de classe d'EliteMobs. EliteMobs n'applique par ailleurs les pouvoirs de boss limités par difficultyID que dans les zones correspondantes, ce qu'utilisent les boss de Kobold Mines. Le resserrement de la bordure vers le centre pousse donc les joueurs vers les zones Hard et Mythic.

Objets à la sortie​

  • Les joueurs qui réussissent leur extraction gardent tous leurs objets. Extractioncraft leur lie à l'âme chaque objet non lié de leur inventaire, de leur curseur et de leur grille de fabrication ; les objets déjà liés à l'âme conservent leur propriétaire. La liaison n'a lieu que si l'enchantement Soulbind d'EliteMobs est activé.
  • Un arrêt du serveur ou un rechargement du plugin pendant une partie active compte comme une extraction.
  • Toute autre sortie d'une partie active vide l'inventaire, le curseur et la grille de fabrication lorsque deleteItemsOnFailToExtract vaut true (valeur par défaut). Avec false, ces objets sont liés à l'âme à la place.
  • Partir pendant l'attente ou le compte à rebours laisse l'inventaire intact. La page Déroulement des parties décrit chaque façon de quitter une partie.