Saltar al contenido principal

Sistema de botín de Extractioncraft

Extractioncraft tiene un sistema de botín por capas basado en tres conceptos: los paquetes de contenido hacen referencia a tablas de botín, las tablas hacen referencia a grupos de botín, y los grupos definen los objetos concretos que pueden obtenerse.

Vista general​

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)

Tablas de botín​

Las tablas de botín se configuran en la carpeta loot_tables/. Cada archivo define una lista de entradas de grupos de botín; cada entrada tiene una probabilidad independiente de producir un objeto.

ClaveTipoPredeterminadoDescripción
isEnabledBooleanotrueCon false, la tabla deja de producir botín. Los contenedores omiten las tablas deshabilitadas al elegir una, y las muertes de mobs las ignoran.
spawnPoolsLista de cadenas[]Nombres de grupos de aparición de BetterStructures. Cuando muere un EliteMob asociado a un grupo coincidente, se usa esta tabla para su botín. La comparación no distingue mayúsculas e ignora el sufijo .yml, por lo que kobold_miner_pool y Kobold_Miner_Pool.yml coinciden.
lootTableLista de objetos[]Cada entrada indica el nombre del archivo de un grupo de botín y una chance de 0.0 a 1.0

Formato de las entradas de una tabla​

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

Cada entrada realiza una tirada independiente. Una chance de 0.5 significa que el grupo tiene un 50% de probabilidad de producir botín. chance puede ser un número o una cadena numérica. Una entrada cuyo archivo de grupo no exista en loot_pools/, o cuya chance falte o quede fuera del rango de 0 a 1, se omite con un aviso al arrancar; las demás entradas se cargan igualmente.

Grupos de botín​

Los grupos de botín se configuran en la carpeta loot_pools/. Cada grupo define un conjunto de objetos posibles. Cuando se realiza una tirada del grupo, se elige un objeto mediante probabilidad ponderada.

ClaveTipoPredeterminadoDescripción
isEnabledBooleanotrueCon false, las entradas de las tablas de botín que hacen referencia a este grupo nunca lo tiran.
eliteMobsLootLista de objetos[]Objetos personalizados de EliteMobs que pueden obtenerse
vanillaLootLista de objetos[]Objetos normales de Minecraft que pueden obtenerse

Entrada de botín de EliteMobs​

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

filename hace referencia a la configuración de un objeto personalizado de EliteMobs. weight determina la probabilidad relativa de obtención entre todas las entradas del grupo.

Algunos objetos personalizados se excluyen de la selección antes de realizarla:

  • Un objeto con permission solo puede salir de cofres y barriles, y solo para un jugador que tenga ese permiso. El objeto obtenido pertenece a ese jugador, así que nadie más puede recogerlo. Las muertes de mobs nunca sueltan objetos bloqueados por permiso.
  • Un objeto con itemType: CLASS_LOOT solo puede salir cuando el botín de clase de EliteMobs lo permite para la dificultad y el rango del botín. El botín de clase se obtiene sin vincular.

Entrada de botín normal de Minecraft​

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

material es un nombre del enum Material de Bukkit. weight funciona igual que en las entradas de botín de élite. Todas las entradas de élite y normales de un grupo compiten en una única selección ponderada, por lo que un grupo produce como máximo un objeto por tirada. Los objetos normales siempre se generan de uno en uno. Un material no reconocido, que no sea un objeto o que sea aire se omite con un aviso al arrancar; un archivo de eliteMobsLoot que no corresponda a un objeto personalizado de EliteMobs genera un aviso al producir el botín y no entrega nada.

Los pesos pueden escribirse como decimales (0.5), enteros (2) o cadenas numéricas ("1.5"), y deben ser mayores que 0. Una entrada con el peso ausente, cero, negativo o no numérico, o sin filename ni material, se omite con un aviso al arrancar; el resto del grupo se carga igualmente.

Botín de contenedores: cofres y barriles​

Cuando la partida comienza, BetterStructures coloca un cofre o un barril en cada marcador de contenedor del mapa. Cuando un jugador de la partida hace clic derecho en un cofre o barril:

  1. El contenedor normal nunca se abre. Se cancela la interacción y se sustituye por el proceso de saqueo de Extractioncraft, que solo se ejecuta mientras la partida está en marcha y solo para los contenedores colocados por la partida.
  2. El jugador debe permanecer completamente quieto durante 3 segundos. Se muestra una cuenta atrás como subtítulo.
  3. Cualquier cambio de posición cancela la interacción ("Don't move while opening a container!"). Se permite mirar alrededor sin desplazarse. Cada jugador solo puede abrir un contenedor a la vez, y cada contenedor solo puede abrirlo un jugador a la vez.
  4. La tabla de botín se eligió de la lista ponderada chestLootTables o barrelLootTables del paquete al comenzar la interacción. Al completarla correctamente, genera el botín.
  5. El contenedor se sustituye por aire y cada entrada de la tabla elegida realiza una tirada independiente. Los objetos resultantes caen al suelo en la ubicación del contenedor.

Los contenedores muestran partículas de portal cada 10 ticks mientras están activos en una partida, para que los jugadores puedan localizarlos.

El botín de los contenedores usa el contentLevel del paquete (por defecto 10) como nivel de objeto de EliteMobs. Su dificultad de botín de clase depende de la zona en la que esté el contenedor, como se describe en botín al matar mobs, y su rango es el más bajo, trash.

Botín al matar mobs​

Cuando un EliteMob muere en el mundo de una partida de Extractioncraft en marcha, el plugin lee el dato personalizado betterstructures:spawnpool que BetterStructures añade a los jefes que genera. Los mobs sin ese dato, y las muertes fuera del mundo de una partida en marcha, nunca generan botín de Extractioncraft.

Todas las tablas habilitadas cuya lista spawnPools coincida con el grupo de aparición del mob generan botín en el lugar de la muerte. No es una selección ponderada: incluir el mismo grupo en tres tablas produce tres conjuntos independientes de tiradas. El nivel del propio mob se pasa a EliteMobs para generar objetos adecuados a ese nivel, junto con la dificultad y el rango de botín de clase del jefe.

BetterStructures genera cada jefe instanciado con el maxLevel de su grupo de aparición cuando la partida comienza. Cada uno de esos jefes recibe además la dificultad de la zona en la que aparece. Las zonas son franjas cuadradas alrededor del centro del mapa:

ZonaDistancia al centro en cualquiera de los ejesDificultad predeterminada de EliteMobs
2Menos de una sexta parte del ancho del mapaMythic
1Menos de un tercio del ancho del mapaHard
0El resto del mapaNormal

Los nombres de dificultad proceden de la correspondencia difficultyIds de los ajustes de botín de clase de EliteMobs. EliteMobs también aplica los poderes de jefe limitados por difficultyID solo en las zonas correspondientes, algo que usan los jefes de Kobold Mines. Por tanto, la contracción del borde del mundo hacia el centro empuja a los jugadores a las zonas Hard y Mythic.

Comportamiento de los objetos al salir​

  • Los jugadores que se extraen correctamente conservan todos los objetos. Extractioncraft les vincula todos los objetos no vinculados de su inventario, del cursor y de la cuadrícula de crafteo; los objetos ya vinculados conservan su propietario. La vinculación solo se produce mientras el encantamiento Soulbind de EliteMobs está habilitado.
  • Un apagado del servidor o una recarga del plugin durante una partida en marcha cuenta igual que una extracción.
  • Cualquier otra salida de una partida en marcha vacía el inventario, el cursor y la cuadrícula de crafteo cuando deleteItemsOnFailToExtract es true (el valor predeterminado). Con false, esos objetos se vinculan al jugador en su lugar.
  • Salir mientras la partida está en espera o en cuenta atrás no toca el inventario. Consulta todas las formas de salir en el desarrollo de la partida.