Next Run · Mods
Guia de mods de Next Run
Visão detalhada de como os mods de Next Run funcionam, da estrutura de arquivos e dos componentes do jogo. Salve este link para obter respostas rápidas ao criar e publicar seus próprios mods.
1. Geral
Este documento descreve o sistema de mods do Next Run: como instalá-los, criar seus próprios mods e compartilhá-los com outros jogadores.
- Leia a seção 2 pelo menos uma vez para entender como os mods são criados e como funcionam.
- Use as seções 3 e 4 como referência.
- Use os exemplos do jogo para ver como isso funciona na prática no Steam Workshop: https://steamcommunity.com/app/1295870/workshop/.
- Os arquivos do jogo da versão 1.1.0 podem ser encontrados aqui: https://clarusvictoria.com/files/next_run_files_examples_1.1.0.zip.
2. Sistema de mods
Depois de iniciar o jogo e clicar em "Jogar" e "Criar jogo", a pasta Mods dentro do diretório do jogo é verificada. Cada subpasta desse diretório é considerada um mod se houver um arquivo modinfo.json.
2.1. Steam Workshop, instalação e publicação de mods
Se você inicia o jogo pelo cliente Steam, no menu "Jogar" haverá o painel "Mods" com os seguintes botões:
- Steam Workshop
- Pasta de mods
- Publicar
- Manual
2.1.1. Steam Workshop
Abre o Steam Workshop dentro do cliente Steam. Para baixar um mod, é preciso se inscrever nele. Depois disso, o download começará automaticamente. Se o mod for grande, a transferência pode levar algum tempo. O status do download é exibido no cliente Steam.
2.1.2. Pasta de mods
Abre a pasta de mods do seu jogo.
2.1.3. Publicar
O jogo verifica automaticamente a pasta Mods e publica na Steam Workshop todos os mods dos quais você é autor.
- Se o mod for novo, um steam_id será gerado automaticamente.
- Se o mod já existir, ele será atualizado.
- Durante o envio, o botão de publicação muda de aparência.
- O mod será publicado apenas se houver alterações.
- Alterar o arquivo modinfo.json não é considerado mudança de conteúdo.
- Os mods publicados ficam disponíveis para jogadores do mundo todo. No entanto, o Steam Workshop não é a única forma de distribuição: também é possível compartilhar mods diretamente, apenas colocando a pasta do mod dentro do diretório Mods.
2.1.4. Manual
Link para este manual.
2.2. Arquivos JSON
Todos os dados e textos do jogo usam o formato JSON. A principal diferença em relação a um formato de texto comum é que os dados devem ficar entre chaves {}.
Descrição da sintaxe JSON:
- https://en.wikipedia.org/wiki/JSON
- https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/JSON
Recomenda-se seguir os exemplos de arquivos do jogo.
2.3. Estrutura de arquivos
Cada mod tem uma estrutura de arquivos análoga à do jogo. Esses arquivos adicionam novo conteúdo ou alteram o existente. Os arquivos JSON adicionam ou alteram elementos específicos do jogo. Arquivos de outros formatos (png, ogg) são substituídos por inteiro.
Exemplo: se você criar o arquivo data/game.json e alterar nele a entidade "Warrior" (classe do jogo), apenas essa classe será modificada, e as demais entidades de game.json permanecerão inalteradas. Se você adicionar o arquivo portrait_warrior_front.png, ele substituirá totalmente a imagem correspondente no jogo, pois o nome coincide.
Dentro do mod existem arquivos e pastas obrigatórios e opcionais. A estrutura padrão é a seguinte:
- Nome da pasta do mod (pode ser qualquer um, não é o nome do mod)
- modinfo.json
- preview.png
- data/
- icons/
- sounds/
- texts/
- tiles/
Para entender melhor, recomenda-se estudar os exemplos do jogo e os mods existentes. Abaixo há uma descrição detalhada de cada pasta e arquivo.
2.3.1. modinfo.json
Arquivo com metadados do mod. Parte desses dados é usada pelo Steam Workshop ao publicar.
- title — nome do mod exibido no Steam.
- version — versão do mod.
- description — descrição do mod.
- tags — tags para navegação na Steam Workshop.
- order — ordem de carregamento dos mods. Se vários mods alterarem os mesmos dados, o mod com order maior substituirá o de valor menor.
- steam_id — não é necessário preencher manualmente, é gerado automaticamente na publicação.
- created_time — data de criação.
- changed_time — data de alteração.
- É permitido adicionar outros campos, mas eles só serão usados dentro do arquivo. O autor do mod é determinado automaticamente via Steam Workshop.
2.3.2. preview.png
Imagem (ícone) do mod para a Steam Workshop. Resolução recomendada: 256x256 ou 512x512. A proporção deve ser quadrada. São aceitos PNG transparente ou JPG.
2.3.3. data
Pasta com arquivos JSON de dados. Contém arquivos que alteram entidades existentes do jogo ou adicionam novas. Você pode criar apenas os arquivos e campos que precisa alterar ou incluir. A descrição detalhada dos dados modificáveis está na seção 3.
2.3.4. icons
Pasta com ícones do jogo. Contém a maioria das imagens, exceto GUI e tiles. São usados vários tamanhos e camadas padrão para diferentes situações de jogo. O jogo utiliza arquivos PNG com fundo transparente.
2.3.5. sounds
Pasta com sons e músicas. É possível adicionar novos arquivos ou substituir os existentes. O formato utilizado é OGG.
2.3.6. texts
Pasta com textos localizados do jogo. Cada arquivo corresponde a um idioma e segue o padrão IETF BCP-47 / ISO. Atualmente são suportados 13 idiomas: ruRU.json, trTR.json, jaJP.json, koKR.json, zhTW.json, zhCN.json, plPL.json, ptBR.json, itIT.json, esES.json, frFR.json, deDE.json, enUS.json.
2.3.7. tiles
Pasta com imagens de tiles. Usam-se arquivos PNG com fundo transparente. O tamanho padrão de um tile é 256x384. Os tiles consistem em várias camadas, como solo, objetos, floresta, montanhas e estradas.
2.4. Sincronização de mods
Depois de obter um mod, ele é sincronizado automaticamente com a versão mais recente publicada na Oficina Steam sempre que o jogo é iniciado.
Se você for o autor do mod, a sincronização não é executada e os arquivos do mod não são substituídos. Isso garante que, ao trabalhar no mod, suas alterações não se percam após reiniciar o jogo.
Se quiser criar um mod com base no mod de outra pessoa, antes de reiniciar o jogo você precisa:
- Alterar o nome da pasta do mod para outro nome diferente do id.
- No arquivo modinfo.json, remova os campos: "author", "created_time", "steam_id", "changed_time".
2.5. Mesclagem de dados
Os arquivos JSON de dados dos mods e do jogo não são substituídos, e sim mesclados.
Ordem de mesclagem:
- As entidades originais dos arquivos JSON do jogo são usadas como base.
- Os dados dos mods são aplicados por cima. Os mods são aplicados conforme as prioridades definidas pelo campo order no arquivo modinfo.json.
Durante a mesclagem, cada campo de cada componente é processado separadamente. Por exemplo, se uma entidade tiver "hideIfZero":true e você precisar que o valor seja false, não basta remover o campo — é preciso declarar explicitamente "hideIfZero":false.
As listas no arquivo list.json são mescladas do mesmo modo. Não é necessário duplicar cada lista com todos os campos se você só vai adicionar um item. Porém, listas que contêm apenas dados simples são totalmente substituídas, como RndGoodEvents e RndEvents.
3. Componentes
O jogo Next Run é construído sobre a arquitetura ECS. Todo o jogo consiste em entidades. Uma entidade é um contêiner de componentes e contém apenas o campo id. Todos os outros dados são descritos pelos componentes. Todos os dados são definidos em arquivos JSON.
Exemplo de elemento em um arquivo JSON:
"Speed": {
"Button": {"panel": "statsPanel","iconType": "btnBig","numText1Type": "total","icon": "arrow2"},
"Tooltip": {"text": "Speed"},
"Total": {"now": 25}
}Neste exemplo, a entidade "Speed" é descrita com três componentes: Button — define a aparência e o comportamento do Botão no jogo; Tooltip — descrição da dica; Total — o valor numérico da entidade, neste caso a velocidade é 25.
A seguir há uma descrição mais detalhada dos componentes e de seus campos. Algumas propriedades dos componentes são definidas automaticamente e não estão disponíveis para edição nos arquivos JSON. Por exemplo, a dificuldade de Limpeza de masmorras depende do Nível e de outros parâmetros calculados pelo jogo.
3.2. Tooltip
Descreve o conteúdo da dica de Botão.
- text = string, nome da entidade exibido no jogo.
- dontShowDuration = bool, impede mostrar o valor de duração da entidade.
- hideSources = bool, impede mostrar as entidades-origem que afetam o valor desta entidade.
- hideAsSubjTT = bool, impede mostrar este objeto como fonte para entidades relacionadas.
- desc = string, texto de descrição no início da dica.
- desc2 = string, texto de descrição no fim da dica.
- redDesc = string, texto de descrição destacado em vermelho no final.
- totalTextAs = string, texto em vez de "Total".
- ttPos = string, posição da dica em relação ao Botão, opções "top", "left".
3.3. GameClass
Descreve a mecânica de uma classe do jogo.
- text = string, nome da classe no jogo.
- portrait_back = string, imagem de fundo ao escolher a classe, 391x598.
- portrait_front = string, imagem da classe ao escolher, 411x620, transparente.
- figurine = string, imagem do avatar do personagem no mapa, 149x243.
- doll = string, imagem P&B da classe no inventário, 460x784.
- bonusSkill1 = string, nome do primeiro talento que recebe bônus.
- bonusSkillVal1 = double, valor do bônus do talento 1.
- bonusSkill2 = string, nome do segundo talento que recebe bônus.
- bonusSkillVal2 = double, valor do bônus 2.
- debuffSkill1 = string, nome do primeiro talento que recebe penalidade.
- debuffSkillVal1 = double, valor da penalidade 1.
- debuffSkill2 = string, nome do segundo talento que recebe penalidade.
- debuffSkillVal2 = double, valor da penalidade 2.
- gold = double, quantidade de Ouro inicial da classe.
- remains = double, número de restos no início.
- equip = List<string>, lista de itens equipados no início.
- units = string, nome da criatura inicial.
- itemName = string, nome do item inicial no inventário.
- itemNum = double, quantidade inicial do item no inventário.
- learnList = string, lista de feitiços ou projetos para aprender, a lista fica no arquivo list.json.
- learnNum = double, quantidade de feitiços ou projetos que serão aprendidos da lista.
- lessTime = double, quanto tempo a menos entre ataques do inferno.
- manaBonus = double, bônus de mana, máximo e total.
- upgradeDexterityBonusMod = double, bônus para itens aprimoráveis a partir do talento Destreza.
- skillPointsPerLevel = double, número de pontos de talento recebidos ao subir de Nível.
- upgradeManaCostMod = double, bônus de eficiência para melhorar feitiços.
- freeRegion = bool, região gratuita.
- necroBonus = bool, jogabilidade e bônus do Necromante.
- druidBonus = bool, jogabilidade e bônus do Druida.
- stances = bool, existência de posturas/formas/ordens.
- defStance = string, postura padrão.
- notDemo = bool, classe indisponível na Versão demo.
- notTutorial = bool, indica se a classe está disponível no modo Treinamento.
3.4. GameMode
Descreve a mecânica de um modo de jogo.
- text = string, nome do modo no jogo.
- back = string, imagem de fundo ao escolher o modo, 391x598.
- moreTime = double, quanto aumenta o tempo entre ataques do inferno.
- lessTime = double, quanto diminui o tempo entre ataques do inferno.
- woundChance = double, chance de receber ferimento.
- notDemo = bool, modo indisponível na Versão demo.
- scenario = string, nome do mapa separado para este modo.
- noHellAttacks = bool, sem ataques do inferno neste modo (como no modo sandbox).
- savesOnExitOnly = bool, neste modo só há salvamento ao sair do jogo.
3.5. Biome
Define a mecânica de biomas.
- frequency = double, frequência com que o bioma aparece na geração do mapa; quanto maior o número, mais comum. Com 0 não é gerado. O bioma Lava é sempre gerado como região final.
- hexBase = string, tile base para o bioma; é gerado como base sob os assentamentos.
- music = string, nome do arquivo de trilha musical do bioma.
- hexPatterns = List<string>, lista de padrões de objetos do bioma. Funciona como um baralho: os padrões são embaralhados e sorteados; ao chegar a 0, o baralho é recriado. O padrão tem formato: nome_do_objeto#nome_do_objeto, o símbolo # é o separador entre objetos.
- mobLevel1 .. mobLevel8 = string, nome das criaturas geradas no bioma dependendo do nível da região.
3.6. TileAsset
Define a aparência de um objeto no mapa do jogo.
- tileMap = string, nome da camada: LandTilemap — superfície, ObjectTilemap — objeto comum, RoadTilemap — estrada etc.; a diferença é apenas a ordem de sobreposição das camadas.
- rawSprite = string, imagem 256x384 para adicionar o desenho ao mapa.
- icon = string, ícone para adicionar por cima de todas as TileMap.
- buttonIcon = bool, indica se o ícone deve ser usado a partir do Button.
- delLevel = double, nível de remoção, o quanto é difícil remover o objeto com a ação.
3.7. Shop
Descreve a mecânica de uma loja.
- slots = int, número de espaços da loja.
- type = string, nome do sortimento da loja que existe em list.json.
3.8. Item
Descreve a mecânica de um item.
- slot = string, nome do espaço de equipamento.
- stackable = bool, se é possível ter mais de 1 item na mesma pilha.
- upgradable = bool, se é possível melhorar o item; a duração da melhoria depende do Nível.
- upProgress = double, duração da melhoria.
- order = double, ordem do item na loja; quanto menor, mais acima.
3.9. Mob
Descreve a mecânica de uma criatura.
- hell = bool, criatura infernal. Penalidade ao subornar. Participa dos ataques do inferno. Bônus de restos.
- undead = bool, criatura Morta-viva. Não pode ser subornada. Mecânica especial de melhoria.
- type = string, tipo de criatura — "Warriors", "Defenders", "Mages", "Gatherers", "Crafters". Define a cor de fundo, chance de acertar o jogador, tipo de dano e de saque.
- upMob = string, em que criatura é melhorada.
- upCostName = string, item necessário para melhorar.
- upCostNum = double, quantidade de recurso necessária para melhorar, padrão 1.
3.10. Dungeon
Descreve a mecânica de uma masmorra.
- magic = bool, masmorra mágica. Afeta o tipo de dano, saque e addons.
- boss = bool, masmorra final.
3.11. Ruins
Descreve a mecânica das ruínas — locais de busca de itens.
3.12. Addon
Mecânica das extensões. As extensões são objetos localizados em uma célula com masmorra ou ruínas que alteram seus parâmetros e fornecem recompensas adicionais.
- skill = string, nome do talento que o jogador receberá se limpar a masmorra ou examinar as ruínas. É possível indicar: "Random", "Strength" etc.
- unit = string, nome da criatura bônus após concluir a ação. É possível indicar "Random".
- item = string, nome do item bônus após concluir a ação. É possível indicar "Random".
- phyChanceMulti = double, modificador da Chance de dano físico durante a Limpeza. Por exemplo, em 50(%).
- magChanceMulti = double, modificador da Chance de dano mágico durante a Limpeza. Por exemplo, em 50(%).
- progressMulti = double, quanto tempo a mais levará para executar ações do tipo Limpeza ou Inspeção. Por exemplo, em 100(%).
- dmgMulti = double, modificador do tamanho do dano durante a Limpeza. Por exemplo, em 50(%).
3.13. Build
Define que o objeto é uma construção.
3.14. Center
Define que este objeto é um assentamento.
- captureProgress = double, esforço necessário para capturar o assentamento.
- upProgress = double, esforço necessário para melhorar o assentamento.
- upCostName1 = string, nome do item 1 necessário para melhorar.
- upCostNum1 = double, quantidade do item 1 necessária para melhorar.
- upCostName2 = string, análogo para o item 2.
- upCostNum2 = double, análogo para o item 2.
- upCostName3 = string, análogo para o item 3.
- upCostNum3 = double, análogo para o item 3.
- upProp = string, em qual assentamento é melhorado.
3.15. Gatherable
Define que este objeto pode ser minerado e gerar recursos.
- gather = string, nome do recurso que será obtido.
- deposit = bool, indica se o recurso é um depósito; se sim, é possível construir uma mina aqui.
3.16. AlliedForest
Define a mecânica e os valores de "Floresta aliada" ao jogar como Druida.
- allyBonus = double, valor do bônus "Floresta aliada".
3.17. Graveyard
Define a mecânica que marca o objeto como cemitério, importante ao jogar como Necromante. Aqui o valor é gerado aleatoriamente indicando quantos restos podem ser obtidos.
- now = double, valor atual dos restos.
- rndMin = double, valor mínimo do número aleatório de restos.
- rndMax = double, valor máximo do número aleatório de restos.
- rndCeil = bool, arredondamento para cima ao gerar valor aleatório.
3.18. Pred
Componente de ação. Embora a maior parte da funcionalidade esteja oculta no código, parte está disponível.
- action = string, nome da ação que dispara ao executar a ação.
- local = bool, indica se é necessário estar na mesma célula que o objeto para interagir.
- attackPred = bool, esta ação é de Ataque; será aplicada automaticamente se for usado um feitiço de combate.
- gatherPred = bool, esta ação é de coleta; será aplicada automaticamente se for usado um feitiço de Coleta de recursos.
- craftPred = bool, esta ação é de artesanato; será aplicada automaticamente se for usado um feitiço durante a fabricação.
- skill = string, talento usado para realizar a ação, por exemplo ações ofensivas usam o talento Ataque.
- longPred = bool, esta ação não é instantânea e requer tempo.
- repeat = bool, a ação será repetida até ser interrompida.
- noOwner = bool, esta ação não exige selecionar quaisquer objetos.
- skipLongTooltip = bool, versão simplificada da dica para a ação.
- onlyClass = string, ação do tipo postura, forma ou ordem disponível apenas para determinada classe.
3.19. Total
Componente que define o valor numérico da entidade; em geral é a quantidade de algo.
- now = double, valor atual.
- inc = double, crescimento por turno.
- max = double, valor máximo.
- min = double, valor mínimo.
- rndMin = double, valor mínimo de número aleatório.
- rndMax = double, valor máximo de número aleatório, substitui now.
- rndCeil = bool, arredondamento para cima ao gerar o valor aleatório.
- overMax = bool, permite exceder o limite.
- delIfZero = bool, remove se o valor for 0.
- numPercent = bool, indica se o valor é percentual.
3.20. Level
Componente que define o Nível da entidade.
- now = double, valor atual.
- max = double, valor máximo.
- min = double, valor mínimo.
- localLevelPlus = int, bônus para o Nível local; funciona apenas para objetos no mapa, cujo Nível se torna o Nível da região mais este valor.
3.21. Duration
Componente que define a duração da entidade.
- now = double, valor atual.
- max = double, valor máximo.
- min = double, valor mínimo.
- delIfZero = bool, remove se o valor for 0.
3.22. Mods
Componente-lista de modificadores. Ao criar este componente, é gerado um conjunto de mudanças que afetam outras entidades. Ao remover a entidade, essas mudanças desaparecem.
- radius = int, raio de alcance da modificação; funciona apenas no mapa.
- objType = string, tipo de entidades às quais a modificação se aplica, por exemplo "Stat", "Skill", "Prop", "Item", "ModableVal", "PropMod".
- objName = string, nome da entidade, por exemplo "Speed".
- objComp = string, componente ao qual a modificação é aplicada, por exemplo "Total", "Level".
- objKey = string, campo do componente ao qual a modificação é aplicada, por exemplo "now", "inc", "max".
- modType = string, forma de influenciar o campo: "add", "mult", "addPerLevel", "multPerLevel".
- now = double, valor do modificador pelo qual ocorre a mudança.
- subjTooltipText = string, adiciona menção ao sujeito na dica dinâmica.
- skipPerTooltip = bool, substitui PerLevel por Plus na dica.
- skipSubjTooltip = bool, ignora a dica para este sujeito.
3.23. ModableVals
Componente-lista de variáveis globais do jogo. O vínculo a uma entidade específica é condicional. Grande parte da lógica dessas variáveis fica oculta no código do jogo.
- now = double, valor da variável.
3.24. Slot
Componente que define a entidade como um espaço no inventário.
- name = string, nome do espaço. Para colocar um item neste espaço, o valor do campo slot do componente Item deve coincidir.
3.25. Container
Define a entidade como um contêiner com células.
- cells = int, número de células no contêiner.
- cellsPanel = string, nome do painel.
3.26. Tom
Define que a entidade é um tomo de feitiços que pode ser estudado para obter ou melhorar um feitiço.
- cast = string, nome do feitiço.
3.27. Cast
Define que a entidade é um feitiço.
- mana = double, custo de mana do feitiço.
- predSkill = string, ao ativar este feitiço, qual tipo de ações deve iniciar; por exemplo, para o tipo Attack, as ações ofensivas são disparadas automaticamente.
- notSkills = string, dica indicando qual ação é necessária para usar este feitiço.
- attack = double, quanto acelera a ação do tipo Ataque ao usar este feitiço; em termos práticos, é o dano mágico.
- gather = double, quanto acelera a ação do tipo Coleta de recursos.
- craft = double, quanto acelera a ação do tipo Fabricação.
- heal = double, quanto cura o herói do jogador.
- newEvent = string, nome do evento que o feitiço aciona; geralmente eventos do tipo bônus.
- teleport = bool, teleporta para o local selecionado.
- explore = double, revela esta célula e as adjacentes.
3.28. Blueprint
Mecânica da entidade-projeto.
- item = string, nome do item que será criado.
- build = string, nome da construção que será erguida.
- costName1 = string, nome do item 1 necessário para criar.
- costNum1 = double, quantidade do item 1 necessária para criar.
- costName2 = string, análogo para o item 2.
- costNum2 = double, análogo para o item 2.
- costName3 = string, análogo para o item 3.
- costNum3 = double, análogo para o item 3.
3.29. Cost
Componente-preço, define que a entidade pode ser comprada e vendida.
- raw = double, preço base, sem modificadores. O custo de compra e venda é calculado a partir dele.
3.30. Event
Componente para eventos.
- uniq = bool, evento exclusivo; o surgimento de um evento repetido remove o anterior com o mesmo nome.
- rndEvent = bool, evento é aleatório.
- nextEvent1 = string, nome do primeiro evento que começa ao concluir o atual.
- nextEvent2 = string, nome do segundo evento que começa ao concluir o atual.
- castType = string, tipo de efeito de reforço do feitiço; substitui o mesmo tipo.
3.31. Proc
Componente para funcionamento de procs (chances), por exemplo a probabilidade de aparecer uma doença.
- addEvent = string, evento que dispara caso a Chance ocorra.
3.32. ProcMod
Componente que permite a uma entidade influenciar a Chance de procs.
- proc = string, nome do proc que este componente afeta.
- chance = double, intensidade da influência; parte da funcionalidade está no código.
- dependsLevel = bool, dependência do Nível da entidade.
3.33. Usable
Componentes de uso único que concedem efeito, como poções. O componente é ativado ao usar a ação Usar.
- stat = string, nome do atributo afetado pelo efeito.
- skill = string, nome do talento afetado pelo efeito.
- nowBonus = double, bônus que afeta o campo Total.now do componente.
- maxBonus = double, bônus que afeta o campo Total.max do componente.
- cure = bool, se o item cura o efeito Doença.
3.34. Drankable
Componente que permite beber o objeto no mapa, como Lago, Oásis e similares.
3.35. Sphinx
Componente-missão no mapa, Esfinge. Os parâmetros são definidos automaticamente com base nos níveis da região.
3.36. Living_tree
Componente-missão no mapa, Árvore viva. Os parâmetros são definidos automaticamente com base nos níveis da região.
3.37. Vision
Mecanismo de objeto no mapa que amplia o raio visível do mapa quando o herói do jogador entra na localização com a entidade.
- explore = int, raio de exploração. 1 — exploração normal, 2 — aumentada em uma célula.
3.38. Remains
Descrição da entidade como componente de restos. Permite transformar tais entidades em Mortos-vivos.
3.39. Audio_comp
Componente que permite reproduzir sons para uma entidade específica dependendo do seu tipo.
- click = string, som ao clicar na entidade; usado para ações e feitiços.
- added = string, som reproduzido ao criar a entidade; usado para eventos.
- ambient1 = string, som ambiente, trilha 1.
- ambient2 = string, som ambiente, trilha 2.
- ambient3 = string, som ambiente, trilha 3.
- process = List<string>, lista de nomes de sons reproduzidos enquanto a ação é executada.
- waits = List<double>, lista de pausas entre a reprodução dos sons.
- finish = string, som ao concluir a ação.
- rndProcess = bool, pequenos efeitos aleatórios para os sons durante a reprodução.
3.40. Childs
Componente que cria novas entidades de forma recursiva.
- list = List<Entity>, lista de filhos que são criados automaticamente e vinculados para a entidade específica.
3.41. Preds
Componente que cria ações para uma entidade específica, embora a maioria das entidades seja definida no código do jogo.
- list = List<string>.
3.42. Equip
Componente-marca indicando que este item pode ser equipado pelo herói.
3.43. Res
Componente-indicador de que esta entidade é um recurso. Necessário para dicas, animações e resumo da partida.
3.44. TurnAct
Componente indica que a entidade deve ser verificada a cada tick de tempo do jogo, por exemplo para componentes Total e Duration.
4. Listas
O arquivo list.json contém um conjunto de seções de dados que não são entidades ou componentes. Elas definem várias listas para geração de conteúdo no jogo.
4.1. RndGoodEvents
Lista de eventos aleatórios positivos gerados logo no início do jogo.
4.2. RndEvents
Lista de eventos aleatórios bons e ruins que serão gerados ao longo da partida.
4.3. Generator_dungeon_addons_physical
Lista de extensões (addons) geradas para masmorras com dano físico.
4.4. Generator_dungeon_addons_magical
Lista de extensões (addons) geradas para masmorras com dano mágico.
4.5. Generator_ruins_addons
Lista de extensões (addons) geradas para ruínas.
4.6. Generator_settlement_levels
Lista de correspondências entre níveis de regiões e nomes de entidades-assentamentos; por exemplo, "lvl1":"Village" significa que em uma região de Nível 1 será gerado um assentamento do tipo Village.
4.7. Generator_rar_metals
Lista de correspondências entre níveis de regiões e nomes de jazidas; por exemplo, "lvl2":"Deposit_tin" significa que em uma região de Nível 2 será gerada uma jazida de estanho.
4.8. Generator_mages
Lista de correspondências entre níveis de regiões e nomes de Magos que serão gerados para guardar torres de magos; por exemplo, "lvl3":"Priestesses" significa que em uma região de Nível 3 serão geradas sacerdotisas.
4.9. LevelMobs_
Listas de criaturas para diferentes níveis de regiões que o jogador receberá após libertar prisioneiros ao limpar masmorras ou examinar ruínas.
4.10. Crafter_start, Lord_start, Mage_start,
Diversas listas de itens que classes diferentes recebem no início no componente GameClass, no campo learnList. O número de itens gerados está no campo learnNum.
- obj = string, nome do item.
- min = double, número mínimo aleatório.
- max = double, número máximo aleatório.
- chance = double, Chance de gerar exatamente este item.
- É possível criar outras listas e vinculá-las a diferentes classes caso seja necessário aprender outros projetos ou feitiços.
4.11. Gold_
Esta lista define a quantidade de Ouro gerado dependendo do Nível da região. O Ouro aparece com probabilidade de 50% em todos os tipos de recompensa no mapa. Consulte o item 4.10 para a sintaxe.
4.12. Loot_-
Grupo de listas que define a geração de recompensas dependendo do Nível da região. Aplica-se a criaturas, masmorras e ruínas. Para criaturas, define a probabilidade de itens específicos caírem com Chance de 50%; para os outros 50% são usadas as listas do item 4.13. Consulte o item 4.10 para a sintaxe.
4.13. Warriors_, Defenders_, Mages_, Gatherers_, Crafters_,
Grupo de listas que define a geração de recompensas dependendo do Nível da região e da classe das criaturas. Aplica-se apenas a criaturas. Essas listas são uma extensão das listas do tipo Loot_- e acionam em 50% dos casos para gerar recompensas dependentes da classe, por exemplo quando é necessário que Magos recebam tomos de feitiços e cajados com mais frequência. Consulte o item 4.10 para a sintaxe.
4.14. Shop_, Books_
Listas para diferentes níveis de regiões, por exemplo Books5 ou Shop6. Usadas para gerar o sortimento das lojas. Consulte o item 4.10 para a sintaxe. Essas listas são definidas no componente Shop, campo type, e para torres são geradas pelo código do jogo.
