Minecraft Wiki
Sem resumo de edição
Sem resumo de edição
(Uma revisão intermediária pelo mesmo usuário não está sendo mostrada)
Linha 42: Linha 42:
 
["pão"] = { "item", plural="Pães", male=true },
 
["pão"] = { "item", plural="Pães", male=true },
 
["balde"] = { "item", male=true },
 
["balde"] = { "item", male=true },
["peitoral-de-cota-de-malha"] = { "item", link="Armadura", cannot_stack=true },
+
["peitoral-de-cota-de-malha"] = { "item", link="Armadura", plural="Peitorais de Cota de Malha", cannot_stack=true },
 
["carvão"] = { "item", plural="Carvões", male=true },
 
["carvão"] = { "item", plural="Carvões", male=true },
 
["bússola"] = { "item" },
 
["bússola"] = { "item" },
 
["trilho-detector"] = { "block", plural="Trilhos Detectores", male=true },
 
["trilho-detector"] = { "block", plural="Trilhos Detectores", male=true },
 
["diamante"] = { "item", male=true },
 
["diamante"] = { "item", male=true },
["peitoral-de-diamante"] = { "item", id="peitoral-de-diamante", link="Peitoral de Diamante", cannot_stack=true },
+
["peitoral-de-diamante"] = { "item", id="peitoral-de-diamante", link="Peitoral de Diamante", plural="Peitorais de Diamante", cannot_stack=true },
["enxada-de-diamante"] = { "item", id="enxada-de-diamante", link="Enxada de Diamante", cannot_stack=true },
+
["enxada-de-diamante"] = { "item", id="enxada-de-diamante", link="Enxada de Diamante", plural="Enxadas de Diamante", cannot_stack=true },
 
["disco-13"] = { "item", title="Disco de Música (13)", link="Disco de Música", cannot_stack=true, plural="Discos de Música", male=true },
 
["disco-13"] = { "item", title="Disco de Música (13)", link="Disco de Música", cannot_stack=true, plural="Discos de Música", male=true },
 
["disco-cat"] = { "item", title="Disco de Música (Cat)", link="Disco de Música", cannot_stack=true, plural="Discos de Música", male=true },
 
["disco-cat"] = { "item", title="Disco de Música (Cat)", link="Disco de Música", cannot_stack=true, plural="Discos de Música", male=true },
 
["esmeralda"] = { "item" },
 
["esmeralda"] = { "item" },
["mapa-em-branco"] = { "item", link="Mapa", title="Mapa em Branco", male=true },
+
["mapa-em-branco"] = { "item", link="Mapa", title="Mapa em Branco", plural="Mapas em Branco", male=true },
 
["livro-encantado"] = { "item", link="Livro Encantado", cannot_stack=true, note="level-book", plural="Livros Encantados", male=true },
 
["livro-encantado"] = { "item", link="Livro Encantado", cannot_stack=true, note="level-book", plural="Livros Encantados", male=true },
 
["livro-encantado-rnd"] = { "item", id='livro-encantado', title="Livro Encantado", link="Livro Encantado", cannot_stack=true, note="random-book", plural="Livros Encantados", male=true },
 
["livro-encantado-rnd"] = { "item", id='livro-encantado', title="Livro Encantado", link="Livro Encantado", cannot_stack=true, note="random-book", plural="Livros Encantados", male=true },
Linha 58: Linha 58:
 
["isqueiro"] = { "item", cannot_stack=true, male=true },
 
["isqueiro"] = { "item", cannot_stack=true, male=true },
 
["maçã-dourada"] = { "item", title="Maçã Dourada (Normal)", plural="Maçãs Douradas (Normais)" },
 
["maçã-dourada"] = { "item", title="Maçã Dourada (Normal)", plural="Maçãs Douradas (Normais)" },
["peitoral-de-ouro"] = { "item", link="Armadura", cannot_stack=true, male=true },
+
["peitoral-de-ouro"] = { "item", link="Armadura", plural="Peitorais de Ouro", cannot_stack=true, male=true },
["espada-de-ouro"] = { "item", link="Espada", cannot_stack=true },
+
["espada-de-ouro"] = { "item", link="Espada", plural="Espadas de Ouro", cannot_stack=true },
 
["barra-de-ouro"] = { "item", plural="Barras de Ouro" },
 
["barra-de-ouro"] = { "item", plural="Barras de Ouro" },
 
["pepita-de-ouro"] = { "item", plural="Pepitas de Ouro" },
 
["pepita-de-ouro"] = { "item", plural="Pepitas de Ouro" },
Linha 93: Linha 93:
 
["olho-de-aranha"] = { "item", plural="Olhos de Aranha", male=true },
 
["olho-de-aranha"] = { "item", plural="Olhos de Aranha", male=true },
 
["graveto"] = { "item", male=true },
 
["graveto"] = { "item", male=true },
["machado-de-pedra"] = { "item", link="Machado", cannot_stack=true, male=true },
+
["machado-de-pedra"] = { "item", plural="Machados de Pedra", link="Machado", cannot_stack=true, male=true },
["picareta-de-pedra"] = { "item", link="Picareta", cannot_stack=true },
+
["picareta-de-pedra"] = { "item", link="Picareta", plural="Picaretas de Pedra", cannot_stack=true },
 
["linha"] = { "item" },
 
["linha"] = { "item" },
 
["tocha"] = { "block" },
 
["tocha"] = { "block" },
 
["trigo"] = { "item", male=true },
 
["trigo"] = { "item", male=true },
 
["tábuas"] = { "block", plural=false },
 
["tábuas"] = { "block", plural=false },
["machado-de-madeira"] = { "item", link="Machado", cannot_stack=true, male=true },
+
["machado-de-madeira"] = { "item", plural="Machados de Madeira", link="Machado", cannot_stack=true, male=true },
["picareta-de-madeira"] = { "item", link="Picareta", cannot_stack=true },
+
["picareta-de-madeira"] = { "item", link="Picareta", plural="Picaretas de Madeira", cannot_stack=true },
   
 
["botas-de-diamante-encantadas"] = { "item", id="botas-de-diamante", link="Botas de Diamante", note="end-ench-equipment", cannot_stack=true, plural=false },
 
["botas-de-diamante-encantadas"] = { "item", id="botas-de-diamante", link="Botas de Diamante", note="end-ench-equipment", cannot_stack=true, plural=false },
Linha 618: Linha 618:
 
["weight"] = 'o peso deste item em relação a outros itens no baú.',
 
["weight"] = 'o peso deste item em relação a outros itens no baú.',
 
["items"] = 'o número de itens esperados por baú, calculado em média em um grande número de baús.',
 
["items"] = 'o número de itens esperados por baú, calculado em média em um grande número de baús.',
["chance"] = 'as probabilidades de obter qualquer um destes item em um único baú.',
+
["chance"] = 'as probabilidades de obter qualquer um destes itens em um único baú.',
 
["chests"] = 'o número de baús que se espera pesquisar, para encontrar qualquer um deste item.'
 
["chests"] = 'o número de baús que se espera pesquisar, para encontrar qualquer um deste item.'
 
},
 
},
Linha 771: Linha 771:
 
 
 
table.insert( html, item_display_name )
 
table.insert( html, item_display_name )
table.insert( html, ' podem ser encontrados ' )
+
table.insert( html, ' podem ser encontrados(as) ' )
   
 
local html_stacks = {}
 
local html_stacks = {}
Linha 1 215: Linha 1 215:
 
if q.tablelength(columns) == 1 then
 
if q.tablelength(columns) == 1 then
 
for column_name, v in pairs(columns) do
 
for column_name, v in pairs(columns) do
table.insert( html, "Values represent " )
+
table.insert( html, "Os valores representam " )
 
table.insert( html, p.columns[column_name] )
 
table.insert( html, p.columns[column_name] )
 
table.insert( html, "\n" )
 
table.insert( html, "\n" )

Edição das 20h38min de 19 de março de 2017

Veja também: Saque de baú

Manutenção


Os dados para versões lançadas da Java estão atualizados a partir da 1.19. (precisa ser verificado/atualizado para 1.20.1). 14:30, 23 de abril de 2023 (UTC -3)
Os dados para snapshots Java estão atualizados a partir da 22w18a. (a wiki está atrás; só está atualizado para 1.20.2 Release Candidate 2). 14:30, 23 de abril de 2023 (UTC -3)
Os dados para versões lançadas da Bedrock estão atualizados a partir da 1.19.0. (precisa ser verificado/atualizado para 1.20.30). 14:30, 23 de abril de 2023 (UTC -3)
Os dados para versões Bedrock beta estão atualizados a partir da beta 1.19.80.22. (precisa ser verificado/atualizado para beta 1.20.40.21). 14:30, 23 de abril de 2023 (UTC -3)

Considerações iniciais

Para o funcionamento deste módulo deve ser utilizada a tradução oficial da Edição Java em português do Brasil, por questões internas de configuração. Sabemos que existem traduções oficiais diferentes entre edições (o que não deveria acontecer) e também localizações, porém atualmente o módulo só suporta um idioma, e como a wiki iniciou em português do Brasil, e como a Edição Java veio primeiro, esse idioma/localização/edição é a base para a configuração do módulo.

Uso .base (Predefinição:Saque de baú)

Gera uma tabela do conteúdo dos baús designados, com colunas correspondentes a várias estatísticas sobre a disponibilidade desses itens.

Invocando

Ela recebe qualquer número de parâmetros de baú, e qualquer número de parâmetros de coluna, em nenhuma ordem particular.

Se nenhum parâmetro de baú estiver listado, ele exibe todos eles; da mesma forma para parâmetros de coluna.

{{#invoke:LootChest|base
 [ |<paramDeBaú1> ... |<paramDeBaúN> ]
 [ |<paramDeColunaEscondido1> ... |<paramDeColunaEscondidoN> ]
}}

Parâmetros de baú

altar-da-fortaleza ( altar ),
biblioteca-da-fortaleza ( biblioteca, library ),
bônus,
calabouço,
cidade-do-end,
despensa-da-fortaleza ( despensa, storeroom ),
ejetor-do-templo-da-selva,
ferreiro-da-vila ( vila, blacksmith, village ),
fortaleza-do-nether ( nether, fortress, fortaleza ),
iglu,
mansão-das-florestas ( mansion, mansão ),
mina-abandonada,
templo-da-selva ( jungle, selva ),
templo-do-deserto ( desert, deserto )

Parâmetros da coluna

chance: as probabilidades de obter qualquer um destes itens em um único baú.,
chests: o número de baús que se espera pesquisar, para encontrar qualquer um deste item.,
items: o número de itens esperados por baú, calculado em média em um grande número de baús.,
stacksize: o tamanho das pilhas (ou para itens não empilháveis, número) deste item encontrado neste baú.,
weight: o peso deste item em relação a outros itens no baú.

Exêmplo

{{#invoke:LootChest|base}} → todos os baús e todas as colunas

{{#invoke:LootChest|base|ferreiro|selva|bônus|chance|stacksize}} → apenas baús de ferreiro e selva, e apenas as colunas 'stacksize' e 'chance'

Uso .base2 (linha Predefinição:Item de saque de baú)

Imprime um resumo da disponibilidade deste item nos vários baús da geração do mundo.

Invocando

Leva exatamente um nome de item como um parâmetro.

{{#invoke:LootChest|base2|<paramDeitem>}}

Parâmetros de item

areia, armadura-de-diamante-para-cavalo, armadura-de-ferro-para-cavalo, armadura-de-ouro-para-cavalo, balde, barra-de-ferro, barra-de-ouro, botas-de-diamante-encantadas, botas-de-ferro, botas-de-ferro-encantadas, bússola, calças-de-diamante-encantadas, calças-de-ferro, calças-de-ferro-encantadas, carne-podre, carvão, diamante, disco-13, disco-cat, elmo-de-diamante-encantado, elmo-de-ferro, elmo-de-ferro-encantado, enxada-de-diamante, esmeralda, espada-de-diamante-encantada, espada-de-ferro, espada-de-ferro-encantada, espada-de-ouro, etiqueta, flecha, fungo-do-nether, graveto, isqueiro, linha, livro, livro-encantado, livro-encantado-rnd, lápis-lazúli, machado-de-madeira, machado-de-pedra, madeira-de-acácia, madeira-de-carvalho, mapa-em-branco, maçã, maçã-do-notch, maçã-dourada, muda-de-carvalho, obsidiana, olho-de-aranha, osso, papel, peitoral-de-cota-de-malha, peitoral-de-diamante, peitoral-de-diamante-encantado, peitoral-de-ferro, peitoral-de-ferro-encantado, peitoral-de-ouro, pepita-de-ouro, picareta-de-diamante-encantada, picareta-de-ferro, picareta-de-ferro-encantada, picareta-de-madeira, picareta-de-pedra, pá-de-diamante-encantada, pá-de-ferro-encantada, pão, pérola-do-end, pólvora, redstone, salmão-cru, sela, sementes-de-abóbora, sementes-de-beterraba, sementes-de-melancia, somente-madeira-de-acácia, somente-madeira-de-carvalho, tocha, trigo, trilho, trilho-ativador, trilho-detector, trilho-elétrico, tábuas, vazio

Exemplo

{{#invoke:LootChest|base2|barra-de-ferro}} → Barras de ferro podem ser encontrados(as) em 18.8% de baús de mansões das florestas e 18.8% de baús de calabouço em pilhas de 1–4; em 46.1% de baús de ferreiro da vila, 35.6% de baús de despensa da fortaleza, 44.5% de baús de templo da selva, 23.4% de baús de altar da fortaleza, 32.0% de carrinhos com baú em minas abandonadas, 19.2% de baús de fortaleza do Nether, e 18.2% de baús de templo do deserto, tudo em pilhas de 1–5; e em 39.4% de baús de Cidade do End em pilhas de 4–8.

{{#invoke:LootChest|base2|esmeralda}} → Esmeraldas podem ser encontrados(as) em 7.7% de baús de iglu em pilhas de 1, em 9.1% de baús de Cidade do End em pilhas de 2–6, e em 10.5% de baús de templo da selva e 18.2% de baús de templo do deserto em pilhas de 1–3.

Uso .base3 (tabela Predefinição:Item de saque de baú)

Imprime um resumo da disponibilidade deste item nos vários baús gerados no mundo na forma de uma tabela.

Invocando

Leva exatamente um nome de item como parâmetro.

{{#invoke:LootChest|base3|<paramDeitem>}}

Parâmetros do item

Igual a acima

Exemplo

{{#invoke:LootChest|base3|esmeralda}}Erro de script: A função "base3" não existe.

Fonte

  • Os dados são configurados dentro do p para que possa ser puxado diretamente dos (ou comparado diretamente aos) arquivos de tabela de saque do minecraft.
  • tamanho da pilha dado aqui (e dado em código) pode ser maior que o tamanho empilhável do item, principalmente no caso de livros encantados. No entanto, este fato não afeta os valores calculados. Isso ocorre porque o jogo coloca o número certo de itens, mas não empilhados, em vez de empilhados.

Estrutura de dados

  • p.items
'<item-id>' = {
Essa chave deve corresponder a um nome de sprite para os itens/blocos definidos em Módulo:BlockSprite ou Módulo:ItemSprite, a menos que id esteja incluído na definição do item.
'<sprite-type>'
Ou item ou block.
[, id='<sprite-id>']
Use isto para especificar um sprite definido em Módulo:BlockSprite ou Módulo:ItemSprite. Caso contrário, usará o sprite com o nome dado por item-id.
[, link='<item-link>']
Um link para uma página que é diferente do nome do sprite-id. Usado em Pedefinição:Saque de baú.
[, title='<item-text>']
Um nome para um item que é diferente do nome do sprite-id.
[, cannot_stack=false]
Use isso para indicar que o item vem em grupos e não em pilhas. Usado em Pedefinição:Item de saque de baú.
[, plural=(false|'<custom-plural-word>')]
Use false quando uma palavra não tem plural ou já está no plural. Use uma palavra plural personalizada quando você não pode simplesmente acrescentar um 's' para a palavra base para torná-lo plural. Usado em Pedefinição:Item de saque de baú.
[, preserve_case=false]
Use false quando um nome de item deve seguir a capitalização exatamente especificada em title, e não segue o caso de sentença.
[, male=true]
Use true quando um nome de item/bloco tiver gênero masculino. Pequena adição em relação ao módulo original na wiki em inglês, para que o módulo possa identificar o gênero correto a se usar durante a criação do texto. Usado em Pedefinição:Item de saque de baú.
[, note='<nome-da-nota>']
Indica que uma nota aparecerá ao lado deste item na tabela. (notas são definidas diretamente abaixo da lista de itens)
}
  • p.notes
'<nome-da-nota>' = '<texto-da-nota>'
  • p.chests[n].pools[n]
  • p.chests[n].poolsJava[n]
  • p.chests[n].poolsJavaUpcoming[n]
  • p.chests[n].poolsBedrock[n]
  • p.chests[n].poolsBedrockUpcoming[n]
    • rolls
{ <número-mín-de-pilhas>, <número-máx-de-pilhas> }
  • p.chests[n].poolsJava[n].items
  • p.chests[n].poolsJavaUpcoming[n].items
  • p.chests[n].poolsBedrock[n].items
  • p.chests[n].poolsBedrockUpcoming[n].items
'<item-id>' = { <tam-mín-de-pilha>, <tam-máx-de-pilha>, <peso-do-item> }
  • p.synonyms
'<sinônimo-do-nome-do-baú>' = '<nome-original-do-baú-válido>'
Permite que os nomes adicionais do baú sejam utilizados como parâmetros, além dos definidos em p.chests.
  • p.display_names
'<nome-do-baú-dado-via-parâmetro>' = '<nome-exibido-na-tabela-do-baú-único>'
Se um parâmetro de baú único for usado, isso define o nome no qual é chamado no texto de resumo acima da tabela.
  • p.columns
'<nome-da-coluna>' = '<descrição-da-coluna>'
As descrições das colunas, encontradas na dica de ferramenta no cabeçalho da coluna ou no texto de resumo acima da tabela.

Funções

As seguintes funções são disponibilizadas na parte superior do arquivo, para facilitar a inspeção.

  • calc_average_amount_this_item_per_chest
número médio de um determinado item (não é o número de pilhas), por baú (não por estrutura).
  • calc_chance_any_of_this_item_per_chest
chance que pelo menos um de um determinado item será encontrado, por baú (não por estrutura).

Testes de itens

{{#invoke:LootChest|base2_test}}




Areias podem ser encontrados(as) em 59.0% de baús de templo do deserto em pilhas de 1–8.

Armaduras de diamante para cavalo podem ser encontrados(as) em 5.7% de baús de ferreiro da vila, 4.6% de baús de Cidade do End, 5.4% de baús de templo da selva, 2.5% de baús de altar da fortaleza, 11.8% de baús de fortaleza do Nether, 6.3% de baús de templo do deserto, e 7.7% de baús de calabouço, tudo em grupos de 1.

Armaduras de ferro para cavalo podem ser encontrados(as) em 5.7% de baús de ferreiro da vila, 4.6% de baús de Cidade do End, 5.4% de baús de templo da selva, 2.5% de baús de altar da fortaleza, 19.2% de baús de fortaleza do Nether, 18.2% de baús de templo do deserto, e 22.2% de baús de calabouço, tudo em grupos de 1.

Armaduras de ouro para cavalo podem ser encontrados(as) em 5.7% de baús de ferreiro da vila, 4.6% de baús de Cidade do End, 5.4% de baús de templo da selva, 2.5% de baús de altar da fortaleza, 29.4% de baús de fortaleza do Nether, 12.4% de baús de templo do deserto, e 15.1% de baús de calabouço, tudo em grupos de 1.

Baldes podem ser encontrados(as) em 18.8% de baús de mansões das florestas e 18.8% de baús de calabouço em pilhas de 1.

Barras de ferro podem ser encontrados(as) em 18.8% de baús de mansões das florestas e 18.8% de baús de calabouço em pilhas de 1–4; em 46.1% de baús de ferreiro da vila, 35.6% de baús de despensa da fortaleza, 44.5% de baús de templo da selva, 23.4% de baús de altar da fortaleza, 32.0% de carrinhos com baú em minas abandonadas, 19.2% de baús de fortaleza do Nether, e 18.2% de baús de templo do deserto, tudo em pilhas de 1–5; e em 39.4% de baús de Cidade do End em pilhas de 4–8.

Barras de ouro podem ser encontrados(as) em 26.0% de baús de ferreiro da vila, 19.0% de baús de despensa da fortaleza, 12.2% de baús de altar da fortaleza, 17.0% de carrinhos com baú em minas abandonadas, e 49.8% de baús de fortaleza do Nether, tudo em pilhas de 1–3; em 54.0% de baús de Cidade do End, 60.2% de baús de templo da selva, e 18.2% de baús de templo do deserto, tudo em pilhas de 2–7; e em 9.7% de baús de mansões das florestas e 9.7% de baús de calabouço em pilhas de 1–4.

Botas de diamante encantadas podem ser encontrados(as) em 13.4% de baús de Cidade do End em grupos de 1.

Botas de ferro encantadas podem ser encontrados(as) em 13.4% de baús de Cidade do End em grupos de 1.

Botas de ferro podem ser encontrados(as) em 26.0% de baús de ferreiro da vila e 12.2% de baús de altar da fortaleza em grupos de 1.

Bússolas podem ser encontrados(as) em 11.0% de baús de biblioteca da fortaleza em pilhas de 1.

Calças de diamante encantadas podem ser encontrados(as) em 13.4% de baús de Cidade do End em grupos de 1.

Calças de ferro encantadas podem ser encontrados(as) em 13.4% de baús de Cidade do End em grupos de 1.

Calças de ferro podem ser encontrados(as) em 26.0% de baús de ferreiro da vila e 12.2% de baús de altar da fortaleza em grupos de 1.

Carnes podres podem ser encontrados(as) em 57.9% de baús de iglu em pilhas de 1; em 57.8% de baús de mansões das florestas, 59.0% de baús de templo do deserto, e 57.8% de baús de calabouço, tudo em pilhas de 1–8; e em 62.8% de baús de templo da selva e 29.0% de baús de templo do deserto em pilhas de 3–7.

Carvões podem ser encontrados(as) em 74.3% de baús de iglu, 27.4% de baús de mansões das florestas, e 27.4% de baús de calabouço, tudo em pilhas de 1–4; e em 35.6% de baús de despensa da fortaleza e 32.0% de carrinhos com baú em minas abandonadas em pilhas de 3–8.

Diamantes podem ser encontrados(as) em 16.3% de baús de ferreiro da vila, 15.5% de baús de templo da selva, 7.4% de baús de altar da fortaleza, 19.2% de baús de fortaleza do Nether, e 6.3% de baús de templo do deserto, tudo em pilhas de 1–3; em 10.5% de carrinhos com baú em minas abandonadas em pilhas de 1–2; e em 21.5% de baús de Cidade do End em pilhas de 2–7.

Discos de música podem ser encontrados(as) em 22.2% de baús de mansões das florestas e 22.2% de baús de calabouço em grupos de 1.

Discos de música podem ser encontrados(as) em 22.2% de baús de mansões das florestas e 22.2% de baús de calabouço em grupos de 1.

Elmos de diamante encantados podem ser encontrados(as) em 13.4% de baús de Cidade do End em grupos de 1.

Elmos de ferro encantados podem ser encontrados(as) em 13.4% de baús de Cidade do End em grupos de 1.

Elmos de ferro podem ser encontrados(as) em 26.0% de baús de ferreiro da vila e 12.2% de baús de altar da fortaleza em grupos de 1.

Enxadas de diamante podem ser encontrados(as) em 22.2% de baús de mansões das florestas em grupos de 1.

Esmeraldas podem ser encontrados(as) em 7.7% de baús de iglu em pilhas de 1, em 9.1% de baús de Cidade do End em pilhas de 2–6, e em 10.5% de baús de templo da selva e 18.2% de baús de templo do deserto em pilhas de 1–3.

Espadas de diamantes encantadas podem ser encontrados(as) em 13.4% de baús de Cidade do End em grupos de 1.

Espadas de ferro encantadas podem ser encontrados(as) em 13.4% de baús de Cidade do End em grupos de 1.

Espadas de ferro podem ser encontrados(as) em 26.0% de baús de ferreiro da vila e 12.2% de baús de altar da fortaleza em grupos de 1.

Espadas de ouro podem ser encontrados(as) em 19.2% de baús de fortaleza do Nether em grupos de 1.

Etiquetas podem ser encontrados(as) em 29.0% de baús de mansões das florestas, 42.3% de carrinhos com baú em minas abandonadas, e 29.0% de baús de calabouço, tudo em pilhas de 1.

Flechas podem ser encontrados(as) em tudo ejetores em templo da selva em pilhas de 2–7.

Fungos do nether podem ser encontrados(as) em 19.2% de baús de fortaleza do Nether em pilhas de 3–7.

Gravetos podem ser encontrados(as) em 68.4% de baús de bônus em pilhas de 1–12.

Linhas podem ser encontrados(as) em 57.8% de baús de mansões das florestas, 59.0% de baús de templo do deserto, e 57.8% de baús de calabouço, tudo em pilhas de 1–8.

Livros encantados podem ser encontrados(as) em 15.1% de baús de mansões das florestas, 14.1% de carrinhos com baú em minas abandonadas, 23.7% de baús de templo do deserto, e 15.1% de baús de calabouço, tudo em grupos de 1.

Livros encantados podem ser encontrados(as) em 4.0% de baús de despensa da fortaleza, 72.2% de baús de biblioteca da fortaleza, 5.4% de baús de templo da selva, e 2.5% de baús de altar da fortaleza, tudo em grupos de 1.

Livros podem ser encontrados(as) em 94.6% de baús de biblioteca da fortaleza em pilhas de 1–3.

Lápis-lazúlis podem ser encontrados(as) em 17.0% de carrinhos com baú em minas abandonadas em pilhas de 4–9.

Machados de madeira podem ser encontrados(as) em 75.0% de baús de bônus em grupos de 1.

Machados de pedra podem ser encontrados(as) em 14.9% de baús de iglu e 25.0% de baús de bônus em grupos de 1.

Madeiras de acácia ou carvalho escuro podem ser encontrados(as) em 68.4% de baús de bônus em pilhas de 1–3.

Madeiras de carvalho, pinheiro, eucalipto ou da selva podem ser encontrados(as) em 68.4% de baús de bônus em pilhas de 1–3.

Mapas em branco podem ser encontrados(as) em 11.0% de baús de biblioteca da fortaleza em pilhas de 1.

Maçãs douradas (encantada) podem ser encontrados(as) em 3.1% de baús de mansões das florestas, 1.4% de carrinhos com baú em minas abandonadas, 2.6% de baús de templo do deserto, e 3.1% de baús de calabouço, tudo em pilhas de 1.

Maçãs douradas (normais) podem ser encontrados(as) em tudo baús de iglu, 2.5% de baús de altar da fortaleza, 22.2% de baús de mansões das florestas, 28.2% de carrinhos com baú em minas abandonadas, 23.7% de baús de templo do deserto, e 22.2% de baús de calabouço, tudo em pilhas de 1.

Maçãs podem ser encontrados(as) em 61.6% de baús de ferreiro da vila, 50.0% de baús de despensa da fortaleza, 74.3% de baús de iglu, e 33.7% de baús de altar da fortaleza, tudo em pilhas de 1–3; e em 83.8% de baús de bônus em pilhas de 1–2.

Mudas de carvalho podem ser encontrados(as) em 26.0% de baús de ferreiro da vila em pilhas de 3–7.

Nada podem ser encontrados(as) em 7.0% de carrinhos com baú em minas abandonadas e 18.2% de baús de templo do deserto em pilhas de 1.

Obsidianas podem ser encontrados(as) em 8.0% de baús de fortaleza do Nether em pilhas de 2–4, e em 26.0% de baús de ferreiro da vila em pilhas de 3–7.

Olhos de aranha podem ser encontrados(as) em 29.0% de baús de templo do deserto em pilhas de 1–3.

Ossos podem ser encontrados(as) em 72.2% de baús de templo da selva e 29.0% de baús de templo do deserto em pilhas de 4–6, e em 57.8% de baús de mansões das florestas, 59.0% de baús de templo do deserto, e 57.8% de baús de calabouço, tudo em pilhas de 1–8.

Papéis podem ser encontrados(as) em 94.6% de baús de biblioteca da fortaleza em pilhas de 2–7.

Peitorais de cota de malha podem ser encontrados(as) em 15.1% de baús de mansões das florestas em grupos de 1.

Peitorais de diamante encantados podem ser encontrados(as) em 13.4% de baús de Cidade do End em grupos de 1.

Peitorais de diamante podem ser encontrados(as) em 7.7% de baús de mansões das florestas em grupos de 1.

Peitorais de ferro encantados podem ser encontrados(as) em 13.4% de baús de Cidade do End em grupos de 1.

Peitorais de ferro podem ser encontrados(as) em 26.0% de baús de ferreiro da vila e 12.2% de baús de altar da fortaleza em grupos de 1.

Peitorais de ouro podem ser encontrados(as) em 19.2% de baús de fortaleza do Nether em grupos de 1.

Pepitas de ouro podem ser encontrados(as) em 57.9% de baús de iglu em pilhas de 1–3.

Picaretas de diamante encantadas podem ser encontrados(as) em 13.4% de baús de Cidade do End em grupos de 1.

Picaretas de ferro encantadas podem ser encontrados(as) em 13.4% de baús de Cidade do End em grupos de 1.

Picaretas de ferro podem ser encontrados(as) em 26.0% de baús de ferreiro da vila, 4.0% de baús de despensa da fortaleza, 12.2% de baús de altar da fortaleza, e 7.0% de carrinhos com baú em minas abandonadas, tudo em grupos de 1.

Picaretas de madeira podem ser encontrados(as) em 75.0% de baús de bônus em grupos de 1.

Picaretas de pedra podem ser encontrados(as) em 25.0% de baús de bônus em grupos de 1.

Pás de diamante encantadas podem ser encontrados(as) em 13.4% de baús de Cidade do End em grupos de 1.

Pás de ferro encantadas podem ser encontrados(as) em 13.4% de baús de Cidade do End em grupos de 1.

Pães podem ser encontrados(as) em 35.3% de baús de mansões das florestas e 35.3% de baús de calabouço em pilhas de 1; em 61.6% de baús de ferreiro da vila, 50.0% de baús de despensa da fortaleza, 33.7% de baús de altar da fortaleza, e 45.0% de carrinhos com baú em minas abandonadas, tudo em pilhas de 1–3; e em 61.5% de baús de bônus em pilhas de 1–2.

Pérolas do fim podem ser encontrados(as) em 23.4% de baús de altar da fortaleza em pilhas de 1.

Pólvoras podem ser encontrados(as) em 57.8% de baús de mansões das florestas, 59.0% de baús de templo do deserto, e 57.8% de baús de calabouço, tudo em pilhas de 1–8.

Redstones podem ser encontrados(as) em 27.4% de baús de mansões das florestas e 27.4% de baús de calabouço em pilhas de 1–4, e em 19.0% de baús de despensa da fortaleza, 12.2% de baús de altar da fortaleza, e 17.0% de carrinhos com baú em minas abandonadas, tudo em pilhas de 4–9.

Salmões crus podem ser encontrados(as) em 61.5% de baús de bônus em pilhas de 1–2.

Selas podem ser encontrados(as) em 16.3% de baús de ferreiro da vila, 13.4% de baús de Cidade do End, 15.5% de baús de templo da selva, 2.5% de baús de altar da fortaleza, 35.7% de baús de fortaleza do Nether, 23.7% de baús de templo do deserto, e 29.0% de baús de calabouço, tudo em grupos de 1.

Sementes de abóbora podem ser encontrados(as) em 18.8% de baús de mansões das florestas, 32.0% de carrinhos com baú em minas abandonadas, e 18.8% de baús de calabouço, tudo em pilhas de 2–4.

Sementes de beterraba podem ser encontrados(as) em 18.8% de baús de mansões das florestas, 32.0% de carrinhos com baú em minas abandonadas, e 18.8% de baús de calabouço, tudo em pilhas de 2–4; e em 21.5% de baús de Cidade do End em pilhas de 1–10.

Sementes de melancia podem ser encontrados(as) em 18.8% de baús de mansões das florestas, 32.0% de carrinhos com baú em minas abandonadas, e 18.8% de baús de calabouço, tudo em pilhas de 2–4.

Tochas podem ser encontrados(as) em 65.7% de carrinhos com baú em minas abandonadas em pilhas de 1–16.

Trigos podem ser encontrados(as) em 35.3% de baús de mansões das florestas e 35.3% de baús de calabouço em pilhas de 1–4, e em 57.9% de baús de iglu em pilhas de 2–3.

Trilhos ativadores podem ser encontrados(as) em 27.1% de carrinhos com baú em minas abandonadas em pilhas de 1–4.

Trilhos detectores podem ser encontrados(as) em 27.1% de carrinhos com baú em minas abandonadas em pilhas de 1–4.

Trilhos elétricos podem ser encontrados(as) em 27.1% de carrinhos com baú em minas abandonadas em pilhas de 1–4.

Trilhos podem ser encontrados(as) em 78.4% de carrinhos com baú em minas abandonadas em pilhas de 4–8.

Tábuas podem ser encontrados(as) em 68.4% de baús de bônus em pilhas de 1–12.


Notas

[ver | editar | histórico | purgar]A documentação acima é transcluída de Módulo:LootChest/doc.
local p = {

	calc_average_amount_this_item_per_pool = function( 
			min_stacksize, max_stacksize,
			min_pool_rolls, max_pool_rolls, 
			item_weight, pool_total_item_weight )

		local avg_stacksize = ( min_stacksize + max_stacksize ) / 2
		local avg_rolls = ( min_pool_rolls + max_pool_rolls ) / 2
		
		return avg_stacksize * avg_rolls * item_weight / pool_total_item_weight
		
	end,
	
	calc_chance_any_of_this_item_per_pool = function( 
			min_pool_rolls, max_pool_rolls,
			item_weight, pool_total_item_weight )

		local avg_rolls = ( min_pool_rolls + max_pool_rolls ) / 2
		local relativeweight = item_weight / pool_total_item_weight
		
		return 1 - math.pow( 1 - relativeweight, avg_rolls )
		
	end,
	
	dev = 'Na [[1.11]] ',
	
	-- Estes definem qual sprite, rótulo e link usar, na tabela,
	-- e 'cannot_stack' e 'plural' ditam como exibir o resumo de um único item
	
	-- NOTA: ordem nesta lista não importa.

	items = {
		["madeira-de-acácia"]         = { "block", link="Madeira", title="Madeira de Acácia ou Carvalho Escuro", plural="Madeiras de Acácia ou Carvalho Escuro" },
		["somente-madeira-de-acácia"]    = { "block", id='madeira-de-acácia', link="Madeira", title="Madeira de Acácia", plural="Madeiras de Acácia" },
		["trilho-ativador"]      = { "block", plural="Trilhos Ativadores", male=true },
		["maçã"]               = { "item" },
		["flecha"]               = { "item" },
		["sementes-de-beterraba"]      = { "item", link="Sementes de Beterraba", plural=false },
		["osso"]                = { "item", male=true },
		["livro"]                = { "item", male=true },
		["pão"]               = { "item", plural="Pães", male=true },
		["balde"]              = { "item", male=true },
		["peitoral-de-cota-de-malha"] = { "item", link="Armadura", plural="Peitorais de Cota de Malha", cannot_stack=true },
		["carvão"]                = { "item", plural="Carvões", male=true },
		["bússola"]             = { "item" },
		["trilho-detector"]       = { "block", plural="Trilhos Detectores", male=true },
		["diamante"]             = { "item", male=true },
		["peitoral-de-diamante"]  = { "item", id="peitoral-de-diamante", link="Peitoral de Diamante", plural="Peitorais de Diamante", cannot_stack=true },
		["enxada-de-diamante"]         = { "item", id="enxada-de-diamante", link="Enxada de Diamante", plural="Enxadas de Diamante", cannot_stack=true },
		["disco-13"]             = { "item", title="Disco de Música (13)", link="Disco de Música", cannot_stack=true, plural="Discos de Música", male=true },
		["disco-cat"]            = { "item", title="Disco de Música (Cat)", link="Disco de Música", cannot_stack=true, plural="Discos de Música", male=true },
		["esmeralda"]             = { "item" },
		["mapa-em-branco"]           = { "item", link="Mapa", title="Mapa em Branco", plural="Mapas em Branco", male=true },
		["livro-encantado"]      = { "item", link="Livro Encantado", cannot_stack=true, note="level-book", plural="Livros Encantados", male=true },
		["livro-encantado-rnd"]  = { "item", id='livro-encantado', title="Livro Encantado", link="Livro Encantado", cannot_stack=true, note="random-book", plural="Livros Encantados", male=true },
		["pérola-do-end"]         = { "item", plural="Pérolas do Fim" },
		["isqueiro"]     = { "item", cannot_stack=true, male=true },
		["maçã-dourada"]        = { "item", title="Maçã Dourada (Normal)", plural="Maçãs Douradas (Normais)" },
		["peitoral-de-ouro"]   = { "item", link="Armadura", plural="Peitorais de Ouro", cannot_stack=true, male=true },
		["espada-de-ouro"]        = { "item", link="Espada", plural="Espadas de Ouro", cannot_stack=true },
		["barra-de-ouro"]          = { "item", plural="Barras de Ouro" },
		["pepita-de-ouro"]         = { "item", plural="Pepitas de Ouro" },
		["pólvora"]           = { "item" },
		["armadura-de-diamante-para-cavalo"] = { "item", title="Armadura de Diamante para Cavalo", link="Armadura para Cavalo", cannot_stack=true, plural="Armaduras de Diamante para Cavalo" },
		["armadura-de-ouro-para-cavalo"]    = { "item", title="Armadura de Ouro para Cavalo", link="Armadura para Cavalo", cannot_stack=true, plural="Armaduras de Ouro para Cavalo" },
		["armadura-de-ferro-para-cavalo"]    = { "item", title="Armadura de Ferro para Cavalo", link="Armadura para Cavalo", cannot_stack=true, plural="Armaduras de Ferro para Cavalo" },
		["botas-de-ferro"]          = { "item", link="Armadura", cannot_stack=true, plural=false },
		["peitoral-de-ferro"]     = { "item", link="Armadura", cannot_stack=true, plural="Peitorais de Ferro", male=true },
		["elmo-de-ferro"]         = { "item", link="Armadura", cannot_stack=true, plural="Elmos de Ferro", male=true },
		["barra-de-ferro"]          = { "item", plural="Barras de Ferro" },
		["calças-de-ferro"]       = { "item", link="Armadura", cannot_stack=true, plural=false },
		["picareta-de-ferro"]        = { "item", link="Picareta", cannot_stack=true, plural="Picaretas de Ferro" },
		["espada-de-ferro"]          = { "item", link="Espada", cannot_stack=true, plural="Espadas de Ferro" },
		["lápis-lazúli"]        = { "item", plural="Lápis-Lazúlis", male=true },
		["sementes-de-melancia"]         = { "item", plural=false },
		["etiqueta"]            = { "item" },
		["maçã-do-notch"]         = { "item", id='maçã-dourada', link="Maçã Dourada", title="Maçã Dourada (Encantada)", plural="Maçãs Douradas (Encantada)" },
		["fungo-do-nether"]         = { "item", plural="Fungos do Nether", male=true },
		["muda-de-carvalho"]         = { "block", link="Muda", plural="Mudas de Carvalho" },
		["madeira-de-carvalho"]            = { "block", link="Madeira", title="Madeira de Carvalho, Pinheiro, Eucalipto ou da Selva", plural="Madeiras de Carvalho, Pinheiro, Eucalipto ou da Selva" },
		["somente-madeira-de-carvalho"]       = { "block", id='madeira-de-carvalho', link="Madeira", title="Madeira de Carvalho", plural="Madeiras de Carvalho" },
		["obsidiana"]            = { "block" },
		["papel"]               = { "item", plural="Papéis", male=true },
		["trilho-elétrico"]        = { "block", plural="Trilhos Elétricos", male=true },
		["sementes-de-abóbora"]       = { "item", plural=false },
		["trilho"]                = { "block", male=true },
		["redstone"]            = { "item" },
		["carne-podre"]        = { "item", plural="Carnes Podres" },
		["areia"]                = { "block" },
		["sela"]              = { "item", cannot_stack=true },
		["salmão-cru"]          = { "item", plural="Salmões Crus", male=true },
		["olho-de-aranha"]          = { "item", plural="Olhos de Aranha", male=true },
		["graveto"]               = { "item", male=true },
		["machado-de-pedra"]           = { "item", plural="Machados de Pedra", link="Machado", cannot_stack=true, male=true },
		["picareta-de-pedra"]       = { "item", link="Picareta", plural="Picaretas de Pedra", cannot_stack=true },
		["linha"]              = { "item" },
		["tocha"]               = { "block" },
		["trigo"]               = { "item", male=true },
		["tábuas"]         = { "block", plural=false },
		["machado-de-madeira"]          = { "item", plural="Machados de Madeira", link="Machado", cannot_stack=true, male=true },
		["picareta-de-madeira"]      = { "item", link="Picareta", plural="Picaretas de Madeira", cannot_stack=true },

		["botas-de-diamante-encantadas"]      = { "item", id="botas-de-diamante", link="Botas de Diamante", note="end-ench-equipment", cannot_stack=true, plural=false },
		["peitoral-de-diamante-encantado"] = { "item", id="peitoral-de-diamante", link="Peitoral de Diamante", note="end-ench-equipment", cannot_stack=true, plural="Peitorais de Diamante Encantados", male=true },
		["elmo-de-diamante-encantado"]     = { "item", id="elmo-de-diamante", link="Elmo de Diamante", note="end-ench-equipment", cannot_stack=true, plural="Elmos de Diamante Encantados", male=true },
		["calças-de-diamante-encantadas"]   = { "item", id="calças-de-diamante", link="Calças de Diamante", note="end-ench-equipment", cannot_stack=true, plural=false },
		["picareta-de-diamante-encantada"]    = { "item", id="picareta-de-diamante", link="Picareta de Diamante", note="end-ench-equipment", cannot_stack=true, plural="Picaretas de Diamante Encantadas" },
		["pá-de-diamante-encantada"]     = { "item", id="pá-de-diamante", link="Pá de Diamante", note="end-ench-equipment", cannot_stack=true, plural="Pás de Diamante Encantadas" },
		["espada-de-diamante-encantada"]      = { "item", id="espada-de-diamante", link="Espada de Diamante", note="end-ench-equipment", cannot_stack=true, plural="Espadas de Diamantes Encantadas" },
		["botas-de-ferro-encantadas"]         = { "item", id="botas-de-ferro", link="Botas de Ferro", note="end-ench-equipment", cannot_stack=true, plural=false },
		["peitoral-de-ferro-encantado"]    = { "item", id="peitoral-de-ferro", link="Peitoral de Ferro", note="end-ench-equipment", cannot_stack=true, plural="Peitorais de Ferro Encantados", male=true },
		["elmo-de-ferro-encantado"]        = { "item", id="elmo-de-ferro", link="Elmo de Ferro", note="end-ench-equipment", cannot_stack=true, plural="Elmos de Ferro Encantados", male=true },
		["calças-de-ferro-encantadas"]      = { "item", id="calças-de-ferro", link="Calças de Ferro", note="end-ench-equipment", cannot_stack=true, plural=false },
		["picareta-de-ferro-encantada"]       = { "item", id="picareta-de-ferro", link="Picareta de Ferro", note="end-ench-equipment", cannot_stack=true, plural="Picaretas de Ferro Encantadas" },
		["pá-de-ferro-encantada"]        = { "item", id="pá-de-ferro", link="Pá de Ferro", note="end-ench-equipment", cannot_stack=true, plural="Pás de Ferro Encantadas" },
		["espada-de-ferro-encantada"]         = { "item", id="espada-de-ferro", link="Espada de Ferro", note="end-ench-equipment", cannot_stack=true, plural="Espadas de Ferro Encantadas" },

		["vazio"]                        = { "block", id="ar", link='', title='Nada', plural=false, note="nada" },
	},

	notes = {
		["level-book"] = "<ref group='nota' name='level-book'>As probabilidades de encantamento são as mesmas que as de um encantamento de nível 30 em uma [[mesa de encantementos]], mas a chance de vários encantamentos não é reduzida.</ref>",
		["end-ench-equipment"] = "<ref group='nota' name='end-city-enchantment'>As probabilidades de encantamento são as mesmas que as de um [[Mecânicas de encantamento|encantamento]] de nível 20 a nível 39 em uma [[mesa de encantamentos]] que não tenha nível 30 como o máximo e que possa aplicar encantamentos de tesouro.</ref>",
		["random-book"] = "<ref group='nota' name='random-book'>Todos os encantamentos são igualmente possíveis, e qualquer nível de encantamento é também igualmente possível.</ref>",
		["nada"] = "<ref group='nota' name='nada'>'Nada' não se refere a chance de um baú vazio. Em vez disso, refere-se à chance de um gerador de pilhagem aleatória não adicionar qualquer item de pilhagem ''de primeira''.</ref>",
	},
	
	-- NOTA: ordem aqui não importa.  
	--		 * Na tabela, os baús serão classificadas em ordem alfabética
	--       * na tabela, os itens serão ordenados por acaso, depois por avg#, em ordem alfabética.
	--       * Se poolsDev for omitido, pools serão usados. Para omitir um pool inteiramente na versão dev, configure poolsDev = {}.
	
	chests = {
		["ferreiro-da-vila"] = { -- village_blacksmith.json
			header = "[[Vila]]",
			link   = "ferreiro da [[vila]]",
			pools = {
				{
					rolls = {3,8},
					items = {
						["diamante"]             = {1,3,3},
						["barra-de-ferro"]          = {1,5,10},
						["barra-de-ouro"]          = {1,3,5},
						["pão"]               = {1,3,15},
						["maçã"]               = {1,3,15},
						["picareta-de-ferro"]        = {1,1,5},
						["espada-de-ferro"]          = {1,1,5},
						["peitoral-de-ferro"]     = {1,1,5},
						["elmo-de-ferro"]         = {1,1,5},
						["calças-de-ferro"]       = {1,1,5},
						["botas-de-ferro"]          = {1,1,5},
						["obsidiana"]            = {3,7,5},
						["muda-de-carvalho"]         = {3,7,5},
						["armadura-de-ferro-para-cavalo"]    = {1,1,1},
						["armadura-de-ouro-para-cavalo"]    = {1,1,1},
						["armadura-de-diamante-para-cavalo"] = {1,1,1},
						["sela"]              = {1,1,3}
					}
				},
			},
			poolsDev = {}
		},
		["altar-da-fortaleza"] = { -- stronghold_corridor.json
			header      = "Altar",
			superheader = "[[Fortaleza]]",
			link        = "altar da [[fortaleza]]",
			pools = {
				{
					rolls = {2,3},
					items = {
						["pérola-do-end"]         = {1,1,10},
						["diamante"]             = {1,3,3},
						["barra-de-ferro"]          = {1,5,10},
						["barra-de-ouro"]          = {1,3,5},
						["redstone"]            = {4,9,5},
						["pão"]               = {1,3,15},
						["maçã"]               = {1,3,15},
						["picareta-de-ferro"]        = {1,1,5},
						["espada-de-ferro"]          = {1,1,5},
						["peitoral-de-ferro"]     = {1,1,5},
						["elmo-de-ferro"]         = {1,1,5},
						["calças-de-ferro"]       = {1,1,5},
						["botas-de-ferro"]          = {1,1,5},
						["maçã-dourada"]        = {1,1,1},
						["sela"]              = {1,1,1},
						["armadura-de-ferro-para-cavalo"]    = {1,1,1},
						["armadura-de-ouro-para-cavalo"]    = {1,1,1},
						["armadura-de-diamante-para-cavalo"] = {1,1,1},
						["livro-encantado"]      = {1,1,1},
					}
				},
			},
			poolsDev = {}
		},
		["biblioteca-da-fortaleza"] = { -- stronghold_library.json
			header      = "Biblioteca",
			superheader = "[[Fortaleza]]",
			link        = "biblioteca da [[fortaleza]]",
			pools = {
				{
					rolls = {2,10},
					items = {
						["livro"]                = {1,3,20},
						["papel"]               = {2,7,20},
						["mapa-em-branco"]           = {1,1,1},
						["bússola"]             = {1,1,1},
						["livro-encantado"]      = {1,1,10},
					}
				},
			},
			poolsDev = {}
		},
		["despensa-da-fortaleza"] = { -- stronghold_crossing.json
			header      = "Despensa",
			superheader = "[[Fortaleza]]",
			link        = "despensa da [[fortaleza]]",
			pools = {
				{
					rolls = {1,4},
					items = {
						["barra-de-ferro"]          = {1,5,10},
						["barra-de-ouro"]          = {1,3,5},
						["redstone"]            = {4,9,5},
						["carvão"]                = {3,8,10},
						["pão"]               = {1,3,15},
						["maçã"]               = {1,3,15},
						["picareta-de-ferro"]        = {1,1,1},
						["livro-encantado"]      = {1,1,1},
					}
				},
			},
			poolsDev = {}
		},
		["bônus"] = { -- spawn_bonus_chest.json
			header = "[[Baú#Baú bônus|Bônus]]",
			link   = "[[Baú#Baú bônus|bônus]]",
			pools = {
				{
					rolls = {1,1},
					items = {
						["machado-de-pedra"]           = {1,1,1},
						["machado-de-madeira"]          = {1,1,3},
					}
				},
				{
					rolls = {1,1},
					items = {
						["picareta-de-pedra"]       = {1,1,1},
						["picareta-de-madeira"]      = {1,1,3}
					}
				},
				{
					rolls = {3,3},
					items = {
						["maçã"]               = {1,2,5},
						["pão"]               = {1,2,3},
						["salmão-cru"]          = {1,2,3},
					}
				},
				{
					rolls = {4,4},
					items = {
						["graveto"]               = {1,12,10},
						["tábuas"]         = {1,12,10},
						["madeira-de-carvalho"]            = {1,3,10},
						["madeira-de-acácia"]         = {1,3,10},
					}
				},
			},
			poolsDev = {}
		},
		["calabouço"] = { -- simple_dungeon.json
			header = "[[Calabouço]]",
			link   = "[[calabouço]]",
			pools = {
				{
					rolls = {1,3},
					items = {
						["sela"]              = {1,1,20},
						["maçã-dourada"]        = {1,1,15},
						["maçã-do-notch"]         = {1,1,2},
						["disco-13"]             = {1,1,15},
						["disco-cat"]            = {1,1,15},
						["etiqueta"]            = {1,1,20},
						["armadura-de-ouro-para-cavalo"]    = {1,1,10},
						["armadura-de-ferro-para-cavalo"]    = {1,1,15},
						["armadura-de-diamante-para-cavalo"] = {1,1,5},
						["livro-encantado-rnd"]  = {1,1,10},
					}
				},
				{
					rolls = {1,4},
					items = {
						["barra-de-ferro"]          = {1,4,10},
						["barra-de-ouro"]          = {1,4,5},
						["pão"]               = {1,1,20},
						["trigo"]               = {1,4,20},
						["balde"]              = {1,1,10},
						["redstone"]            = {1,4,15},
						["carvão"]                = {1,4,15},
						["sementes-de-melancia"]         = {2,4,10},
						["sementes-de-abóbora"]       = {2,4,10},
						["sementes-de-beterraba"]      = {2,4,10},
					}
				},
				{
					rolls = {3,3},
					items = {
						["osso"]                = {1,8,10},
						["pólvora"]           = {1,8,10},
						["carne-podre"]        = {1,8,10},
						["linha"]              = {1,8,10},
					}
				},
			},
			poolsDev = {}
		},
		["mina-abandonada"] = { -- abandoned_mineshaft.json
			chest_type = "carrinho com baú",
			header = "[[Mina abandonada]]",
			link   = "[[minas abandonadas]]",
			pools = {
				{
					rolls = {1,1},
					items = {
						["maçã-dourada"]        = {1,1,20},
						["maçã-do-notch"]         = {1,1,1},
						["etiqueta"]            = {1,1,30},
						["livro-encantado-rnd"]  = {1,1,10},
						["picareta-de-ferro"]        = {1,1,5},
						["vazio"]				= {1,1,5},
					}
				},
				{
					rolls = {2,4},
					items = {
						["barra-de-ferro"]          = {1,5,10},
						["barra-de-ouro"]          = {1,3,5},
						["redstone"]            = {4,9,5},
						["lápis-lazúli"]        = {4,9,5},
						["diamante"]             = {1,2,3},
						["carvão"]                = {3,8,10},
						["pão"]               = {1,3,15},
						["sementes-de-melancia"]         = {2,4,10},
						["sementes-de-abóbora"]       = {2,4,10},
						["sementes-de-beterraba"]      = {2,4,10},
					}
				},
				{
					rolls = {3,3},
					items = {
						["trilho"]                = {4,8,20},
						["trilho-elétrico"]        = {1,4,5},
						["trilho-detector"]       = {1,4,5},
						["trilho-ativador"]      = {1,4,5},
						["tocha"]               = {1,16,15},
					}
				},
			},
			poolsDev = {}
		},
		["fortaleza-do-nether"] = { -- nether_bridge.json
			header = "[[Fortaleza do Nether|Fortaleza]]<br>[[Fortaleza do Nether|do Nether]]",
			link   = "[[fortaleza do Nether]]",
			pools = {
				{
					rolls = {2,4},
					items = {
						["diamante"]             = {1,3,5},
						["barra-de-ferro"]          = {1,5,5},
						["barra-de-ouro"]          = {1,3,15},
						["espada-de-ouro"]        = {1,1,5},
						["peitoral-de-ouro"]   = {1,1,5},
						["pederneira"]     = {1,1,5},
						["fungo-do-nether"]         = {3,7,5},
						["sela"]              = {1,1,10},
						["armadura-de-ouro-para-cavalo"]    = {1,1,8},
						["armadura-de-ferro-para-cavalo"]    = {1,1,5},
						["armadura-de-diamante-para-cavalo"] = {1,1,3},
						["obsidiana"]            = {2,4,2},
					}
				},
			},
			poolsDev = {}
		},
		["templo-do-deserto"] = { -- desert_pyramid.json
			header = "[[Templo do deserto]]",
			link   = "[[templo do deserto]]",
			pools = {
				{
					rolls = {2,4},
					items = {
						["diamante"]             = {1,3,5},
						["barra-de-ferro"]          = {1,5,15},
						["barra-de-ouro"]          = {2,7,15},
						["esmeralda"]             = {1,3,15},
						["osso"]                = {4,6,25},
						["olho-de-aranha"]          = {1,3,25},
						["carne-podre"]        = {3,7,25},
						["sela"]              = {1,1,20},
						["armadura-de-ferro-para-cavalo"]    = {1,1,15},
						["armadura-de-ouro-para-cavalo"]    = {1,1,10},
						["armadura-de-diamante-para-cavalo"] = {1,1,5},
						["livro-encantado-rnd"]  = {1,1,20},
						["maçã-dourada"]        = {1,1,20},
						["maçã-do-notch"]         = {1,1,2},
						["vazio"]               = {1,1,15},
					}
				},
				{
					rolls = {4,4},
					items = {
						["osso"]                = {1,8,10},
						["pólvora"]           = {1,8,10},
						["carne-podre"]        = {1,8,10},
						["linha"]              = {1,8,10},
						["areia"]                = {1,8,10},
					}
				},
			},
			poolsDev = {}
		},
		["templo-da-selva"] = { -- jungle_temple.json
			header = "[[Templo da selva]]",
			link   = "[[templo da selva]]",
			pools = {
				{
					rolls = {2,6},
					items = {
						["diamante"]             = {1,3,3},
						["barra-de-ferro"]          = {1,5,10},
						["barra-de-ouro"]          = {2,7,15},
						["esmeralda"]             = {1,3,2},
						["armadura-de-ferro-para-cavalo"]    = {1,1,1},
						["armadura-de-ouro-para-cavalo"]    = {1,1,1},
						["armadura-de-diamante-para-cavalo"] = {1,1,1},
						["sela"]              = {1,1,3},
						["livro-encantado"]      = {1,1,1},
						["osso"]                = {4,6,20},
						["carne-podre"]        = {3,7,16}
					}
				},
			},
			poolsDev = {}
		},
		["ejetor-do-templo-da-selva"] = { -- jungle_temple_dispenser.json
			chest_type = "ejetor",
			link   = "[[templo da selva]]",
			pools = {
				{
					rolls = {1,2},
					items = {
						["flecha"] = {2,7,30}
					}
				},
			},
			poolsDev = {}
		},
		["cidade-do-end"] = { -- end_city_treasure.json
			header = "[[Cidade do End]]",
			link   = "[[Cidade do End]]",
			pools = {
				{
					rolls = {2,6},
					items = {
						["diamante"]             = {2,7,5},
						["barra-de-ferro"]          = {4,8,10},
						["barra-de-ouro"]          = {2,7,15},
						["esmeralda"]             = {2,6,2},
						["sementes-de-beterraba"]      = {1,10,5},
						["sela"]              = {1,1,3},
						["armadura-de-ferro-para-cavalo"]    = {1,1,1},
						["armadura-de-ouro-para-cavalo"]    = {1,1,1},
						["armadura-de-diamante-para-cavalo"] = {1,1,1},
						["espada-de-diamante-encantada"]      = {1,1,3},
						["botas-de-diamante-encantadas"]      = {1,1,3},
						["peitoral-de-diamante-encantado"] = {1,1,3},
						["calças-de-diamante-encantadas"]   = {1,1,3},
						["elmo-de-diamante-encantado"]     = {1,1,3},
						["picareta-de-diamante-encantada"]    = {1,1,3},
						["pá-de-diamante-encantada"]     = {1,1,3},
						["espada-de-ferro-encantada"]         = {1,1,3},
						["botas-de-ferro-encantadas"]         = {1,1,3},
						["peitoral-de-ferro-encantado"]    = {1,1,3},
						["calças-de-ferro-encantadas"]      = {1,1,3},
						["elmo-de-ferro-encantado"]        = {1,1,3},
						["picareta-de-ferro-encantada"]       = {1,1,3},
						["pá-de-ferro-encantada"]        = {1,1,3},
					}
				},
			},
			poolsDev = {}
		},
		["iglu"] = {
			header = "[[Iglu]]",
			link   = "[[iglu]]",
			pools = {
				{
					rolls = {2,8},
					items = {
						["maçã"]               = {1,3,15},
						["carvão"]                = {1,4,15},
						["pepita-de-ouro"]         = {1,3,10},
						["machado-de-pedra"]           = {1,1,2},
						["carne-podre"]        = {1,1,10},
						["esmeralda"]             = {1,1,1},
						["trigo"]               = {2,3,10}
					}
				},
				{
					rolls = {1,1},
					items = {
						["maçã-dourada"]        = {1,1,1},
					}
				},
			},
			poolsDev = {}
		},
		["mansão-das-florestas"] = { -- woodland_mansion.json
			header = "[[Mansões das Florestas]]",
			link   = "[[mansões das florestas]]",
			pools = {
				{
					rolls = {1,3},
					items = {
						["laço"]                  = {1,1,20},
						["maçã-dourada"]          = {1,1,15},
						["maçã-do-notch"]           = {1,1,2},
						["disco-13"]               = {1,1,15},
						["disco-cat"]              = {1,1,15},
						["etiqueta"]              = {1,1,20},
						["peitoral-de-cota-de-malha"]  = {1,1,10},
						["enxada-de-diamante"]           = {1,1,15},
						["peitoral-de-diamante"]    = {1,1,5},
						["livro-encantado-rnd"]    = {1,1,10},
					}
				},
				{
					rolls = {1,4},
					items = {
						["barra-de-ferro"]            = {1,4,10},
						["barra-de-ouro"]            = {1,4,5},
						["pão"]                 = {1,1,20},
						["trigo"]                 = {1,4,20},
						["balde"]                = {1,1,10},
						["redstone"]              = {1,4,15},
						["carvão"]                  = {1,4,15},
						["sementes-de-melancia"]           = {2,4,10},
						["sementes-de-abóbora"]         = {2,4,10},
						["sementes-de-beterraba"]        = {2,4,10},
					}
				},
				{
					rolls = {3,3},
					items = {
						["osso"]                  = {1,8,10},
						["pólvora"]             = {1,8,10},
						["carne-podre"]          = {1,8,10},
						["linha"]                = {1,8,10},
					}
				},
			},
			poolsDev = {},
		},
	},

	-- these values are used:
	-- * in place of the keys, when the key is used as a parameter
	
	-- chest-param -> internally-valid-chest-param
	
	synonyms = {
		["deserto"] = "templo-do-deserto",
		["desert"] = "templo-do-deserto",
		["selva"] = "templo-da-selva",
		["jungle"] = "templo-da-selva",
		["nether"] = "fortaleza-do-nether",
		["fortaleza"] = "fortaleza-do-nether",
		["fortress"] = "fortaleza-do-nether",
		["vila"] = "ferreiro-da-vila",
		["village"] = "ferreiro-da-vila",
		["ferreiro"] = "ferreiro-d-vila",
		["blacksmith"] = "ferreiro-da-vila",
		["altar"] = "altar-da-fortaleza",
		["despensa"] = "despensa-da-fortaleza",
		["storeroom"] = "despensa-da-fortaleza",
		["biblioteca"] = "biblioteca-da-fortaleza",
		["library"] = "biblioteca-da-fortaleza",
		["mansão"] = "mansão-das-florestas",
		["mansion"] = "mansão-das-florestas"
	},

	-- these values are used:
	-- * in the header-description of a table showing only a single chest
	-- * if the key is not here, but it is a valid chest parameter,
	--   that header-description will default to use the key string from p.chests,
	--   e.g. "nether-fortress"
	
	-- chest-param -> description-string
	
	display_names = {
		["fortaleza-do-nether"] = "fortaleza do Nether",
		["nether"] = "fortaleza do Nether",
		["fortress"] = "fortaleza do Nether",
		["desert"] = "templo do deserto",
		["jungle"] = "templo da selva",
		["templo-do-deserto"] = "templo do deserto",
		["templo-da-selva"] = "templo da selva"
	},
	
	-- these descriptions are used:
	-- * in column <abbr> titles,
	-- * and above the table when only a single column-type is chosen
	
	columns = {
		["stacksize"] = 'o tamanho das pilhas (ou para itens não empilháveis, número) deste item encontrado neste baú.',
		["weight"] = 'o peso deste item em relação a outros itens no baú.',
		["items"] = 'o número de itens esperados por baú, calculado em média em um grande número de baús.',
		["chance"] = 'as probabilidades de obter qualquer um destes itens em um único baú.',
		["chests"] = 'o número de baús que se espera pesquisar, para encontrar qualquer um deste item.'
	},
	
	current_frame = nil
}

p.base = function( ... )

	p.current_frame = mw.getCurrentFrame()

	local args = { ... }
	if args[1] == p.current_frame then 
		args = require( 'Módulo:ProcessArgs' ).merge( true )
	else
		args = args[1]
	end
	
	-- transform args into usable list
	
	local chests, columns = q.massage_args( args )
	
	if #chests == 0 then
		return "<span style='font-style:italic; color:red;'>Módulo:LootChest: sem argumentos válidos</span>"
	end

	q.fill_in_chest_derivative_data( chests )
	
	-- construct an ordered list dictating the order of the rows
	
	local ordered_item_rows, ordered_item_rows_dev

	local ret = {}
	if args.dev and args.dev ~= '0' then
		local ordered_item_rows = q.construct_ordered_item_rows( chests, 'Dev' )
		if q.tablelength( ordered_item_rows ) > 0 then
			table.insert( ret, q.print_table( chests, columns, ordered_item_rows, 'Dev' ) )
		end
	else
		local ordered_item_rows = q.construct_ordered_item_rows( chests, '' )
		local ordered_item_rows_dev = q.construct_ordered_item_rows( chests, 'Dev' )

		if q.tablelength( ordered_item_rows ) > 0 then
			table.insert( ret, q.print_table( chests, columns, ordered_item_rows, '' ) )
		end
		if q.tablelength( ordered_item_rows_dev ) > 0 and q.compare_tables( ordered_item_rows, ordered_item_rows_dev ) then
			table.insert( ret, p.current_frame:preprocess( p.dev ) .. q.lcfirst( q.print_table( chests, columns, ordered_item_rows_dev, 'Dev' ) ) )
		end
	end

	return table.concat( ret, '\n\n' )
end

p.doc = function()

	local valid_args = {}
	for chest_name, val in pairs(p.chests) do
		local synonyms = {}
		for syn, orig in pairs(p.synonyms) do
			if orig == chest_name then
				table.insert( synonyms, syn )
			end
		end
		if #synonyms > 0 then
			chest_name = chest_name .. " ( " .. table.concat( synonyms, ", " ) .. " )"
		end
		table.insert( valid_args, chest_name )
	end
	table.sort( valid_args )
	return table.concat( valid_args, ",\n<br>" )

end

p.doc2 = function()

	local valid_args = {}
	for column_name, val in pairs(p.columns) do
		table.insert( valid_args, column_name .. ": " .. val )
	end
	table.sort( valid_args )
	return table.concat( valid_args, ",\n<br>" )

end

p.doc3 = function()

	local valid_args = {}
	for item_name, val in pairs(p.items) do
		table.insert( valid_args, item_name )
	end
	table.sort( valid_args )
	return table.concat( valid_args, ", " )

end

p.base2 = function( ... )

	p.current_frame = mw.getCurrentFrame()

	local args = { ... }
	if args[1] == p.current_frame then 
		args = require( 'Módulo:ProcessArgs' ).merge( true )
	else
		args = args[1]
	end
	
	local itemname = args[1]
	
	if p.items[itemname] == nil then
		return '<span style="color:red;">item desconhecido "' .. itemname .. '"</span>'
	end
	
	local chances, devChances
	if args.dev and args.dev ~= '0' then
		chances = q.single_item_find_values( itemname, 'poolsDev' )
		devChances = {}
	else
		chances = q.single_item_find_values( itemname, 'pools' )
		devChances = q.single_item_find_values( itemname, 'poolsDev' )
	end
	
	local html = {}

	if q.tablelength( chances ) > 0 then
		table.insert( html, p.base2_sub( itemname, chances ) )
	end
	if q.tablelength( devChances ) > 0 and q.compare_tables( chances, devChances ) then
		table.insert( html, p.current_frame:preprocess( p.dev ) .. q.lcfirst( p.base2_sub( itemname, devChances ) ) )
	end

	return table.concat( html, ' ' )
end

p.base2_sub = function( itemname, chances )
	local html = {}
	local item_display_name = ''
	
	if p.items[itemname].plural ~= nil and p.items[itemname].plural ~= false then
		item_display_name = p.items[itemname].plural
	else
		if p.items[itemname].title ~= nil then
			item_display_name = p.items[itemname].title
		else
			item_display_name = string.gsub( itemname, '-', ' ' )
		end
		if p.items[itemname].plural == nil or p.items[itemname].plural ~= false then
			item_display_name = q.single_item_plural( item_display_name )
		end
	end
	
	item_display_name = q.capitalize( item_display_name )
	
	table.insert( html, item_display_name )
	table.insert( html, ' podem ser encontrados(as) ' )

	local html_stacks = {}
	local stack_sep = ', '
	local ns = q.tablelength( chances )
	local s = 0

	for stacksize, chest_details in pairs( chances ) do
		s = s + 1
	
		local html_per_stack = { 'em ' }
		local c = 0
		local nc = q.tablelength( chest_details )
		local sep = q.tern( nc > 2, ', ', ' ' )
		if nc > 2 and s ~= ns then
			stack_sep = '; '
		end
		for k, chest in pairs( chest_details ) do
			c = c + 1
			if c == nc and nc > 1 then
				table.insert( html_per_stack, 'e ' )
			end
			if chest.chance == 1 then
				table.insert( html_per_stack, " tudo " )
			else
				table.insert( html_per_stack, string.format("%.1f", chest.chance*100) )
				table.insert( html_per_stack, "% de " )
			end
			if chest.chest_type == 'carrinho com baú' then
				table.insert( html_per_stack, ' [[Carrinho com Baú|carrinhos com baú]] em ' )
				table.insert( html_per_stack, p.chests[chest.chest_name].link )
			elseif chest.chest_type == 'ejetor' then
				table.insert( html_per_stack, ' [[ejetor]]es em ' )
				table.insert( html_per_stack, p.chests[chest.chest_name].link )
			else
				table.insert( html_per_stack, ' baús de ' )
				table.insert( html_per_stack, p.chests[chest.chest_name].link )
			end
			table.insert( html_per_stack, sep )
		end
		if nc > 2 then
			table.insert( html_per_stack, 'tudo ' )
		end
		table.insert( html_per_stack, 'em ' )
		if p.items[itemname].cannot_stack ~= nil then
			table.insert( html_per_stack, 'grupos de ' )
		else
			table.insert( html_per_stack, 'pilhas de ' )
		end
		table.insert( html_per_stack, stacksize )
	
		table.insert( html_stacks, table.concat( html_per_stack ) )
	end
	
	local stackwise_summaries = ''
	if #html_stacks == 1 then
		table.insert( html, html_stacks[1] )
	else
		for i = 1, #html_stacks - 1 do
			table.insert( html, html_stacks[ i ] )
			table.insert( html, stack_sep ) 
		end
		table.insert( html, 'e ' )
		table.insert( html, html_stacks[#html_stacks] )
	end
	
	table.insert( html, '.' )
	
	return table.concat( html )
	
end

p.base2_test = function()

	items = {}
	for item_name, v in pairs( p.items ) do
		table.insert( items, p.base2{ item_name } .. '\n\n' )
	end

	table.sort( items )
	
	return table.concat(items)
end

q = {

	tablelength = function(T)
		local count = 0
		for _ in pairs(T) do count = count + 1 end
		return count
	end,
	
	single_item_find_values = function( itemname, key )
	
		local chances = {}

		for chest_name, chest in pairs( p.chests ) do
			local poolchances = {}
			for k, pool in pairs( chest[key] or chest.pools or {} ) do
				local poolitem = pool.items[itemname]
				if poolitem ~= nil then
				
					local stacksize = poolitem[1]
					if poolitem[1] ~= poolitem[2] then
						stacksize = stacksize .. "–" .. poolitem[2]
					end
					
					local itemweight = poolitem[3]
					
					local pool_total_item_weight = 0
					for itemname, item in pairs(pool.items) do
						pool_total_item_weight = pool_total_item_weight + item[3]
					end
				
					local chance = p.calc_chance_any_of_this_item_per_pool( 
						pool.rolls[1], pool.rolls[2],
						itemweight, pool_total_item_weight )

					if poolchances[stacksize] == nil then
						poolchances[stacksize] = chance
					else
						poolchances[stacksize] = poolchances[stacksize] + (1 - poolchances[stacksize]) * chance
					end
				end
			end
			for stacksize, chance in pairs( poolchances ) do
				if chances[stacksize] == nil then
					chances[stacksize] = {}
				end
				table.insert( chances[stacksize], { ["chance"]=chance, ["chest_name"]=chest_name, ["chest_type"]=( chest.chest_type or "baú" ) } )
			end
		end

		return chances
		
	end,
	
	single_item_plural = function( itemname )
	
		if string.sub( itemname, -2 ) == 'ss' 
			or string.sub( itemname, -2 ) == 'ch' 
			or string.sub( itemname, -2 ) == 'sh' 
			or string.sub( itemname, -1 ) == 's' then 
				return itemname .. 'es' 
		end
		
		return itemname .. 's'
	
	end,
	
	massage_args = function( args )

		-- find what columns to put
		
		local columns = {}
		
		for k, _arg in pairs(args) do
			if p.columns[_arg] ~= nil then
				columns[_arg] = true
			end
		end
		
		if q.tablelength(columns) == 0 then
			for column_name, v in pairs(p.columns) do
				columns[column_name] = true
			end
		end
		
		-- find what chests to show

		local chests = {}
		
		for k, _arg in pairs(args) do
			if p.chests[_arg] ~= nil then
				table.insert( chests, _arg )
			elseif p.synonyms[_arg] ~= nil then 
				table.insert( chests, p.synonyms[_arg] )
			end
			if p.display_names[_arg] ~= nil then
				local chestname = _arg
				if p.chests[chestname] == nil then 
					chestname = p.synonyms[_arg]
				end
				p.chests[chestname].display_name = p.display_names[_arg]
			end
		end
		
		if #chests == 0 then
			for chest_name, chest in pairs(p.chests) do
				local chest_type = ( chest.chest_type or "baú" )
				if chest_type == "baú" or chest_type == "carrinho com baú" then
					table.insert( chests, chest_name )
				end
			end
		end
		
		table.sort( chests )
		
		return chests, columns
		
	end,

	sort_items = function( e1, e2 )
		
		if e1.chanceany ~= e2.chanceany then return ( e1.chanceany > e2.chanceany ) end
		if e1.avgamount ~= e2.avgamount then return ( e1.avgamount > e2.avgamount ) end
		
		if e1.material == nil then
			
			e1.material = 0
			if string.find( e1.itemname, "couro" ) ~= nil then e1.material = 1 end
			if string.find( e1.itemname, "ferro" ) ~= nil then e1.material = 2 end
			if string.find( e1.itemname, "ouro" ) ~= nil then e1.material = 3 end
			if string.find( e1.itemname, "diamante" ) ~= nil then e1.material = 4 end
			e1.armor = 0
			if string.find( e1.itemname, "elmo" ) ~= nil or string.find( e1.itemname, "capuz" ) ~= nil then e1.armor = 1 end
			if string.find( e1.itemname, "peitoral" ) ~= nil or string.find( e1.itemname, "túnica" ) ~= nil then e1.armor = 2 end
			if string.find( e1.itemname, "calças" ) ~= nil or string.find( e1.itemname, "calça" ) ~= nil then e1.armor = 3 end
			if string.find( e1.itemname, "botas" ) ~= nil then e1.armor = 4 end
			
		end
		
		if e2.material == nil then
			
			e2.material = 0
			if string.find( e2.itemname, "couro" ) ~= nil then e2.material = 1 end
			if string.find( e2.itemname, "ferro" ) ~= nil then e2.material = 2 end
			if string.find( e2.itemname, "ouro" ) ~= nil then e2.material = 3 end
			if string.find( e2.itemname, "diamante" ) ~= nil then e2.material = 4 end
			e2.armor = 0
			if string.find( e2.itemname, "elmo" ) ~= nil or string.find( e2.itemname, "capuz" ) ~= nil then e2.armor = 1 end
			if string.find( e2.itemname, "peitoral" ) ~= nil or string.find( e2.itemname, "túnica" ) ~= nil then e2.armor = 2 end
			if string.find( e2.itemname, "calças" ) ~= nil or string.find( e2.itemname, "calça" ) ~= nil then e2.armor = 3 end
			if string.find( e2.itemname, "botas" ) ~= nil then e2.armor = 4 end
		
		end
		
		if e1.material ~= e2.material then return ( e1.material < e2.material ) end
		if e1.armor ~= e2.armor then return ( e1.armor < e2.armor ) end
		
		return ( e1.itemname < e2.itemname )
		
	end,
	
	fill_in_chest_derivative_data = function( chest_names )

		for k, chest_name in pairs(chest_names) do
			local chest = p.chests[chest_name]
			if chest == nil then break end

			chest.allRolls = {}
			chest.itemData = {}
			for k, pool in pairs( chest.pools or {} ) do
				table.insert( chest.allRolls, q.tern( pool.rolls[1] == pool.rolls[2], pool.rolls[1], pool.rolls[1]..'–'..pool.rolls[2] ) )

				local total_weight = 0
				for itemname, item in pairs(pool.items) do
					total_weight = total_weight + item[3]
				end
				pool.totalweight = total_weight

				q.fill_in_chest_item_details( chest.itemData, pool, #chest.allRolls )
			end

			chest.allRollsDev = {}
			chest.itemDataDev = {}
			for k, pool in pairs( chest.poolsDev or chest.pools or {} ) do
				table.insert( chest.allRollsDev, q.tern( pool.rolls[1] == pool.rolls[2], pool.rolls[1], pool.rolls[1]..'–'..pool.rolls[2] ) )

				local total_weight = 0
				for itemname, item in pairs(pool.items) do
					total_weight = total_weight + item[3]
				end
				pool.totalweight = total_weight

				q.fill_in_chest_item_details( chest.itemDataDev, pool, #chest.allRollsDev )
			end
		end
	end,

	fill_in_chest_item_details = function( data, pool, ct )
		for item_name, item in pairs(pool.items) do
			if p.items[item_name] then
				local min_stacksize = item[1]
				local max_stacksize = item[2]
				local min_pool_rolls = pool.rolls[1]
				local max_pool_rolls = pool.rolls[2]
				local item_weight = item[3]
			
				if data[item_name] == nil then
					data[item_name] = {
						avgamount = 0,
						chanceany = 0,
						itemname = item_name,
						sortsize = {},
						sortweight = {},
						sizes = {},
						weights = {},
					}
					for i = 1, ct-1 do
						data[item_name].sortsize[i] = 0
						data[item_name].sortweight[i] = 0
						data[item_name].sizes[i] = '—'
						data[item_name].weights[i] = '—'
					end
				end

				data[item_name].avgamount = data[item_name].avgamount + p.calc_average_amount_this_item_per_pool( 
					min_stacksize, max_stacksize, 
					min_pool_rolls, max_pool_rolls, 
					item_weight, pool.totalweight )
					
				data[item_name].chanceany = data[item_name].chanceany + (1 - data[item_name].chanceany) * p.calc_chance_any_of_this_item_per_pool(
					min_pool_rolls, max_pool_rolls, 
					item_weight, pool.totalweight )

				data[item_name].sortsize[ct] = ( min_stacksize + max_stacksize ) / 2
				data[item_name].sortweight[ct] = item_weight;
				data[item_name].sizes[ct] = q.tern( min_stacksize == max_stacksize, min_stacksize, min_stacksize .. '–' .. max_stacksize )
				data[item_name].weights[ct] = p.current_frame:expandTemplate{ title = 'frac', args = { item_weight, pool.totalweight } }
			end
		end

		for item_name, d in pairs(data) do
			if not d.sizes[ct] then
				d.sortsize[ct] = 0
				d.sortweight[ct] = 0
				d.sizes[ct] = '—'
				d.weights[ct] = '—'
			end
		end
	end,

	construct_ordered_items_from_first_chest = function( chest_names, suffix )
		local items_from_first_table = {}
		local item_chests = {}
		local item_names_ordered = {}
		for item_name, item in pairs( p.chests[chest_names[1]]['itemData'..suffix] ) do
			table.insert( items_from_first_table, item )
		end
		
		table.sort( items_from_first_table, q.sort_items )
		
		for k, item in pairs( items_from_first_table ) do
			table.insert( item_names_ordered, item.itemname )
			item_chests[item.itemname] = true
		end
		
		return item_names_ordered, item_chests
	end,

	get_ordered_items_from_other_chests = function( chest_names, item_chests, suffix )
		local items_not_from_first_table = {}
		
		for chest_idx = 2, #chest_names do
			for item_name, item in pairs( p.chests[chest_names[chest_idx]]['itemData'..suffix] ) do
				if item_chests[item_name] == nil then
					p.items[item_name].itemname = item_name
					table.insert( items_not_from_first_table, p.chests[chest_names[chest_idx]]['itemData'..suffix][item_name] )
					item_chests[item_name] = true
				end
			end
		end

		table.sort( items_not_from_first_table, q.sort_items )
		
		return items_not_from_first_table
	end,

	add_other_items_to_first_list = function( chest_names, item_names_ordered, item_chests, items_not_from_first_table )
		for k, item in pairs( items_not_from_first_table ) do
			table.insert( item_names_ordered, item.itemname )
		end
		
		return item_names_ordered
	end,

	set_up_ordered_item_rows = function( chest_names, item_names_ordered, suffix )
		for k, itemname in pairs(item_names_ordered) do
			item_names_ordered[k] = {itemname}
			for chest_idx = 1, #chest_names do
				if suffix == 'Dev' or p.chests[chest_names[chest_idx]]['pools'..suffix] ~= nil then
					local item_data = p.chests[chest_names[chest_idx]]['itemData'..suffix][itemname]
					if item_data == nil then
						table.insert( item_names_ordered[k], false )
					else
						table.insert( item_names_ordered[k], item_data )
					end				
				end
			end
		end

		return item_names_ordered
	end,

	construct_ordered_item_rows = function( chest_names, suffix )
		-- for the first chest, sort its by chance desc, then by avg amount desc, then alphabetically asc
		local item_names_ordered, item_chests = q.construct_ordered_items_from_first_chest( chest_names, suffix )
		
		if #chest_names > 1 then
			-- after that, sort all the remaining items in list order
			local items_not_from_first_table = q.get_ordered_items_from_other_chests( chest_names, item_chests, suffix )
			item_names_ordered = q.add_other_items_to_first_list( chest_names, item_names_ordered, item_chests, items_not_from_first_table )
		end

		-- set up item_names_ordered so that each is a row, representing chest values
		item_names_ordered = q.set_up_ordered_item_rows( chest_names, item_names_ordered, suffix )
		
		return item_names_ordered
	end,

	print_table = function( chest_names, columns, ordered_item_rows, suffix )

		local html = {}
		
		local use_roll_row = false
		local use_superheader = false
		local superheader_sizes = {}
		for i = 1, #chest_names do
			sh = p.chests[chest_names[i]].superheader
			if sh ~= nil then
				if superheader_sizes[sh] == nil then
					superheader_sizes[sh] = 0
				end
				superheader_sizes[sh] = superheader_sizes[sh] + 1
				use_superheader = true
			end
			local allRolls = p.chests[chest_names[i]]['allRolls'..suffix]
			if #allRolls > 1 then
				use_roll_row = true
			end
		end
		if columns['stacksize'] == nil and columns['weight'] == nil then
			use_roll_row = false
		end
		
		local rowspan = ( 1 + q.tern( #chest_names > 1, 1, 0 ) + q.tern( use_superheader, 1, 0 ) )
		local hide_col_description = rowspan > 1 and q.tablelength(columns) == 1
		if use_roll_row then
			rowspan = rowspan + 1
		end
		
		if q.tablelength(columns) == 1 then
			for column_name, v in pairs(columns) do
				table.insert( html, "Os valores representam " )
				table.insert( html, p.columns[column_name] )
				table.insert( html, "\n" )
			end
		end

		if #chest_names == 1 then
		
			if q.tablelength(columns) == 1 then
				table.insert( html, "<br>" )
			end
		
			local chest_name = chest_names[1]
			local allRolls = p.chests[chest_name]['allRolls'..suffix]
			local chest_type = p.chests[chest_name].chest_type or "baú"

			local display_name = p.chests[chest_name].display_name

			chest_name = chest_name:gsub( "-", " " )
			
			table.insert( html, "Cada " )
			if chest_type ~= 'baú' and chest_type ~= 'carrinho com baú' then
				table.insert( html, "" )
			else
				table.insert( html, " baú de " )
			end
			table.insert( html, display_name or chest_name )
			table.insert( html, " contém " )
			if #allRolls == 1 then
				table.insert( html, allRolls[1] )
			else
				table.insert( html, #allRolls )
				table.insert( html, ' grupos de ' )
				local s = q.tern( #allRolls > 2, ', ', ' ' )
				for i = 1, #allRolls-1 do
					table.insert( html, allRolls[i] )
					table.insert( html, s )
				end
				table.insert( html, 'e ' )
				table.insert( html, allRolls[#allRolls] )
			end
			table.insert( html, " pilhas de itens, com a seguinte distribuição: \n" )
		end
		
		table.insert( html, '<div style="overflow:auto">\n' )
		table.insert( html, "<table class='wikitable sortable jquery-tablesorter'>\n" )
		table.insert( html, "<tr>\n" )
		table.insert( html, "<th rowspan=" )
		table.insert( html, ( rowspan - q.tern( hide_col_description, 1, 0 ) ) )
		table.insert( html, "></th>\n" )
		
		local superheader_cols_used = {}
		
		if #chest_names > 1 then
			local row1, row2 = {}, {}

			for i = 1, #chest_names do
			
				if suffix == 'Dev' or p.chests[chest_names[i]]['pools'..suffix] ~= nil then
					local allRolls = p.chests[chest_names[i]]['allRolls'..suffix]
					local colspan = q.tablelength(columns)
					local allRollsSpan = #allRolls == 0 and 1 or #allRolls
					if columns['stacksize'] ~= nil then
						colspan = colspan - 1 + allRollsSpan
					end
					if columns['weight'] ~= nil then
						colspan = colspan - 1 + allRollsSpan
					end
					local row = row1
					
					rowspan = 1
					if use_superheader then
						sh = p.chests[chest_names[i]].superheader
						if sh ~= nil then
							if superheader_cols_used[sh] == nil then
								table.insert( row, "<th colspan=" )
								table.insert( row, ( colspan * superheader_sizes[sh] ) )
								table.insert( row, ">" )
								table.insert( row, sh )
								table.insert( row, "</th>\n" )
								superheader_cols_used[sh] = 0
							end
							row = row2
						else
							rowspan = rowspan + 1
						end
					end
					if use_roll_row and hide_col_description and #allRolls < 2 then
						rowspan = rowspan + 1
					end

					table.insert( row, "<th colspan=" )
					table.insert( row, colspan )
					if rowspan > 1 then
						table.insert( row, " rowspan=" )
						table.insert( row, rowspan )
					end
					table.insert( row, ">" )
					table.insert( row, p.chests[ chest_names[i] ].header )
					if #allRolls > 0 then
						table.insert( row, ' <br><span style="font-weight:normal; font-style:italic; font-size:11px;">(' )
						if #allRolls == 1 then
							table.insert( row, allRolls[1] )
						else
							local s = q.tern( #allRolls > 2, ', ', ' ' )
							for i = 1, #allRolls-1 do
								table.insert( row, allRolls[i] )
								table.insert( row, s )
							end
							table.insert( row, 'e ' )
							table.insert( row, allRolls[#allRolls] )
						end
						table.insert( row, ' pilhas)</span>' )
					end
					table.insert( row, "</th>\n" )
				end
			end
			
			table.insert( html, table.concat( row1 ) )
			table.insert( html, "</tr><tr>\n" )
			if #row2 then
				table.insert( html, table.concat( row2 ) )
				table.insert( html, "</tr><tr>\n" )
			end
		end

		if not hide_col_description then
			local headersort_th_open
			if use_roll_row then
				headersort_th_open = "<th rowspan='2' class='headersort' role='columnheader button' data-sort-type='number'> <abbr title='"
			else
				headersort_th_open = "<th class='headersort' role='columnheader button' data-sort-type='number'> <abbr title='"
			end
			for i = 1, #chest_names do
				if suffix == 'Dev' or p.chests[chest_names[i]]['pools'..suffix] ~= nil then
					local allRolls = p.chests[chest_names[i]]['allRolls'..suffix]
					local allRollsSpan = #allRolls == 0 and 1 or #allRolls
					local headersort_th_colspan_open
					if #allRolls > 1 then
						headersort_th_colspan_open = "<th colspan='" .. allRollsSpan .. "' role='columnheader'> <abbr title='"
					else
						headersort_th_colspan_open = headersort_th_open
					end

					if columns['stacksize'] ~= nil then
						table.insert( html, headersort_th_colspan_open )
						table.insert( html, p.columns['stacksize'] )
						table.insert( html, "'> Tamanho da Pilha </abbr></th>\n" )
					end
					if columns['weight'] ~= nil then
						table.insert( html, headersort_th_colspan_open )
						table.insert( html, p.columns['weight'] )
						table.insert( html, "'> Peso" )
						table.insert( html, "</abbr></th>\n" )
					end
					if columns['items'] ~= nil then
						table.insert( html, headersort_th_open )
						table.insert( html, p.columns['items'] )
						table.insert( html, "'> # Itens </abbr></th>\n" )
					end
					if columns['chance'] ~= nil then
						table.insert( html, headersort_th_open )
						table.insert( html, p.columns['chance'] )
						table.insert( html, "'> Chance </abbr></th>\n" )
					end
					if columns['chests'] ~= nil then
						table.insert( html, headersort_th_open )
						table.insert( html, p.columns['chests'] )
						table.insert( html, "'> # Baús </abbr></th>\n" )
					end
				end
			end
			table.insert( html, "</tr><tr>\n" )
		end
		
		if use_roll_row then
			local rowcols = ( columns['stacksize'] ~= nil and 1 or 0 ) + ( columns['weight'] ~= nil and 1 or 0 )
			for i = 1, #chest_names do
				local allRolls = p.chests[chest_names[i]]['allRolls'..suffix]
				if #allRolls > 1 then
					for j = 1, rowcols do
						for k = 1, #allRolls do
							table.insert( html, "<th class='headersort' role='columnheader button' data-sort-type='number' style='font-weight:normal'>" )
							table.insert( html, allRolls[k] )
							table.insert( html, "×</th>\n" )
						end
					end
				end
			end
			table.insert( html, "</tr><tr>\n" )
		end

		for i = 1, #ordered_item_rows do
			if type( ordered_item_rows[i] ) == "table" then
				for j = 1, #ordered_item_rows[i] do

					local chest_item = ordered_item_rows[i][j]
					
					if type( chest_item ) == "table" then
					
						local avg_amount = string.format("%.3f", chest_item.avgamount)
						local chance_any = string.format("%.1f", chest_item.chanceany*100) .. "%"
						local num_chests = string.format("%.1f", 1/chest_item.chanceany)
						
						table.insert( html, "\n" )
						if columns['stacksize'] ~= nil then
							for k = 1, #chest_item.sizes do
								table.insert( html, "<td style='text-align:center;' data-sort-value='" )
								table.insert( html, chest_item.sortsize[k] )
								table.insert( html, "'>" )
								table.insert( html, chest_item.sizes[k] )
								table.insert( html, "</td>" )
							end
						end
						if columns['weight'] ~= nil then
							for k = 1, #chest_item.sizes do
								table.insert( html, "<td style='text-align:center;' data-sort-value='" )
								table.insert( html, chest_item.sortweight[k] )
								table.insert( html, "'>" )
								table.insert( html, chest_item.weights[k] )
								table.insert( html, "</td>" )
							end
						end
						if columns['items'] ~= nil then
							table.insert( html, "<td style='text-align:center;'>" )
							table.insert( html, avg_amount )
							table.insert( html, "</td>" )
						end
						if columns['chance'] ~= nil then
							table.insert( html, "<td style='text-align:right;'>" )
							table.insert( html, chance_any )
							table.insert( html, "</td>" )
						end
						if columns['chests'] ~= nil then
							table.insert( html, "<td style='text-align:right;'>" )
							table.insert( html, num_chests )
							table.insert( html, "</td>" )
						end
							
					elseif type( chest_item ) == "boolean" then
						local allRolls = p.chests[chest_names[j-1]]['allRolls'..suffix]
						local allRollsSpan = #allRolls == 0 and 1 or #allRolls

						table.insert( html, "\n" )
						if columns['stacksize'] ~= nil then
							for k = 1, allRollsSpan do
								table.insert( html, "<td data-sort-value='0' style='text-align:center;'>—</td>" )
							end
						end
						if columns['weight'] ~= nil then
							for k = 1, allRollsSpan do
								table.insert( html, "<td data-sort-value='0' style='text-align:center;'>—</td>" )
							end
						end
						if columns['items'] ~= nil then
							table.insert( html, "<td data-sort-value='0' style='text-align:center;'>—</td>" )
						end
						if columns['chance'] ~= nil then
							table.insert( html, "<td data-sort-value='0' style='text-align:right;'>—</td>" )
						end
						if columns['chests'] ~= nil then
							table.insert( html, "<td data-sort-value='9e99' style='text-align:right;'>—</td>" )
						end
					else
						if i > 1 then
							table.insert( html, "</tr><tr>" )
						end
						
						local item = p.items[chest_item]
						
						local s = require( 'Module:Sprite' )
						table.insert( html, "\n<td>" )
						local image, spriteCat = s.link{ 
							id=item.id or chest_item, 
							link=item.link or string.gsub(chest_item,'-',' '), 
							text=item.title or q.titlecase(string.gsub(chest_item,'-',' ')), 
							settings= q.tern( item[1] == 'item', 'ItemSprite', 'BlockSprite' )
						}
						table.insert( html, image )
						table.insert( html, spriteCat )
						if item.note and p.notes[item.note] then
							table.insert( html, p.current_frame:preprocess( p.notes[item.note] ) )
						end
						table.insert( html, "</td>" )
					end
					
					if j == #ordered_item_rows[i] then
						table.insert( html, "</tr>" )
					end
					
				end
				table.insert( html, "\n" )
			end
		end
		
		table.insert( html, "</table></div>" )
		
		return table.concat( html )
		
	end,
	
	titlecase = function( str )
		local buf = {}
		for word in string.gfind(str, "%S+") do
			if word == "and" then
				table.insert( buf, word )
			else
				local first, rest = string.sub( word, 1, 1 ), string.sub( word, 2 )
				table.insert( buf, string.upper(first) .. string.lower(rest) )
			end
		end    
		return table.concat( buf, " " )
	end,
	
	capitalize = function( str )
		return ( string.lower(str):gsub( "^%l", string.upper ) )
	end,

	lcfirst = function( str )
		return ( string.gsub( str, "^%u", string.lower ) )
	end,
	
	tern = function( cond , T , F )
		if cond then return T else return F end
	end,

	compare_tables = function( a, b )
		local seen = {}
		for k, v in pairs( a ) do
			if type( v ) ~= type( b[k] ) then
				return true
			end
			if v ~= b[k] then
				return true
			end
			if type( v ) == 'table' and q.compare_tables( v, b[k] ) then
				return true
			end
			seen[k] = true
		end
		for k, v in pairs( b ) do
			if not seen[k] then
				return true
			end
		end
		return false
	end,
}

string.lpad = function(str, len, char)
	if char == nil then char = ' ' end
	return string.rep(char, len - #(''..str)) .. str
end

return p