Pular para o conteúdo

Tabelas de Drop

Visão Geral

As tabelas de drop definem quais itens são produzidos quando um contêiner é aberto, um NPC é eliminado ou um nó de recurso é coletado. O sistema usa uma estrutura recursiva de Container que suporta três modos de seleção: Single (sempre produz um item), Choice (escolhe aleatoriamente um filho por peso) e Multiple (avalia todos os filhos). Aninhar esses tipos permite criar tabelas de loot ponderadas complexas com drops garantidos e opcionais.

Como as Tabelas de Drop Funcionam

flowchart TD;
A[NPC Dies / Block Breaks] --> B[Lookup Drop Table];
B --> C{Container Type?};
C -->|"Multiple"| D[Evaluate ALL Children];
C -->|"Choice"| E[Pick ONE by Weight];
C -->|"Single"| F[Always Drop This Item];
D --> G["Child 1: Guaranteed<br>Single → 3x Bone"];
D --> H["Child 2: Random Loot<br>Choice → Weighted Pool"];
H --> I{Roll Weights};
I -->|"Weight: 60"| J["Common:<br>5x Stone"];
I -->|"Weight: 30"| K["Uncommon:<br>1x Iron"];
I -->|"Weight: 10"| L["Rare:<br>1x Diamond"];
G --> M[Final Drops];
J --> M;
K --> M;
L --> M;
style A fill:darkred,color:white;
style M fill:darkgreen,color:white;
style L fill:darkgoldenrod,color:white;

Exemplo de Aninhamento de Contêineres

flowchart TD;
A[Root: Multiple] --> B["Single<br>1x XP Orb<br>Guaranteed"];
A --> C["Choice<br>Weighted random"];
A --> D["Choice<br>Weighted random"];
C -->|"70%"| E[Nothing];
C -->|"30%"| F[1x Feather];
D -->|"90%"| G[Nothing];
D -->|"10%"| H[1x Rare Egg];
style B fill:darkgreen,color:white;
style F fill:steelblue,color:white;
style H fill:darkgoldenrod,color:white;

Localização dos Arquivos

Assets/Server/Drops/
Items/ (contêineres do mundo: barris, potes, caixões)
NPCs/
Beast/
Boss/
Critter/
Elemental/
Flying_Beast/
Flying_Critter/
Flying_Wildlife/
Intelligent/
Inventory/
Objectives/
Plant/
Rock/
Wood/

Schema

Nível superior

FieldTypeRequiredDefaultDescription
ContainerContainerSimNó contêiner raiz que define a lógica de loot.

Container

FieldTypeRequiredDefaultDescription
Type"Single" | "Multiple" | "Choice" | "Empty"SimModo de seleção para este nó contêiner.
ItemItemEntryNãoO item a ser produzido. Válido apenas quando Type é "Single".
ContainersContainer[]NãoContêineres filhos. Usado pelos tipos Multiple e Choice.
WeightnumberNãoPeso de probabilidade relativa. Usado por contêineres pai Choice ao selecionar entre irmãos.

Tipos de Container

TypeComportamento
SingleSempre produz exatamente o item definido em Item.
MultipleAvalia cada contêiner filho independentemente e combina todos os resultados.
ChoiceSeleciona aleatoriamente um contêiner filho ponderado pelo campo Weight de cada filho.
EmptyNão produz nada. Usado como opção ponderada de “sem drop” dentro de nós Choice.

ItemEntry

FieldTypeRequiredDefaultDescription
ItemIdstringSimID do item a ser produzido.
QuantityMinnumberSimTamanho mínimo da pilha produzida.
QuantityMaxnumberSimTamanho máximo da pilha produzida. A quantidade real é escolhida uniformemente entre min e max.

Exemplos

Contêiner do mundo com drops de escolha ponderada (Assets/Server/Drops/Items/Barrels.json):

{
"Container": {
"Type": "Choice",
"Containers": [
{
"Type": "Choice",
"Weight": 100,
"Containers": [
{
"Type": "Single",
"Item": {
"ItemId": "Plant_Fruit_Apple",
"QuantityMin": 1,
"QuantityMax": 1
}
}
]
},
{
"Type": "Choice",
"Weight": 25,
"Containers": [
{
"Type": "Single",
"Item": {
"ItemId": "Weapon_Arrow_Crude",
"QuantityMin": 1,
"QuantityMax": 5
}
}
]
},
{
"Type": "Empty",
"Weight": 800
}
]
}
}

Drop de NPC com múltiplos drops garantidos (Assets/Server/Drops/NPCs/Beast/Drop_Bear_Grizzly.json):

{
"Container": {
"Type": "Multiple",
"Containers": [
{
"Type": "Choice",
"Weight": 100,
"Containers": [
{
"Type": "Single",
"Item": {
"ItemId": "Ingredient_Hide_Heavy",
"QuantityMin": 1,
"QuantityMax": 2
}
}
]
},
{
"Type": "Choice",
"Weight": 100,
"Containers": [
{
"Type": "Single",
"Item": {
"ItemId": "Food_Wildmeat_Raw",
"QuantityMin": 2,
"QuantityMax": 3
}
}
]
}
]
}
}

O Multiple raiz garante que o urso sempre dropa tanto couro quanto carne. Cada filho usa um Choice com peso 100 (a única opção não vazia), tornando cada drop individual garantido.

Páginas Relacionadas