Pular para o conteúdo principal

Tycoon

Tycoon de zoológico: pesquise animais, ganhe renda passiva, crie, prestigie, explore e negocie.

Privadasv0.1Economia e criação
RequerTypeWriter0.9.0-beta-177 (BTC build)Entity extensionGUI extensionVaultVehicle extensionopcionalPacketEventsopcionalRPG CoreopcionalTemporaryDimension extensionopcionalMySql extensionopcionalMiniPlaceholdersopcional

Criada para a rede BornToCraft. Esta extensão é documentada como referência e não é distribuída.

Visão geral​

O Tycoon é um modo de jogo de zoológico. Os jogadores matam mobs para desbloquear categorias de pesquisa, alimentam um catalisador e usam um item de combustível para pesquisar animais e depois colocam seus animais no zoológico para ganhar renda passiva. Os animais sobem de nível, podem receber prestígio para ganhar bônus permanentes, ser enviados em expedições cronometradas, cruzados, fundidos, negociados em um mercado de jogadores ou entregues para contratos.

Tudo é orientado por dados. Cada espécie é uma Animal Definition, cada sistema (categorias de pesquisa, desafios, funcionários, decorações, contratos, criação, lojas) é uma entry de manifest, e as regras da economia ficam em uma única Tycoon Economy Config. A interface do jogador é um único menu, o Tycoon Control Panel, cujos layouts são construídos no painel web: o código apenas preenche os dados ao vivo e anexa os cliques.

O espaço do zoológico, e não o dinheiro, é o recurso escasso. A capacidade de um jogador cresce com o nível de sua profissão de zoológico, cada espécie custa um certo número de espaços, e a receita cresce com esse custo. Os animais colocados são exibidos apenas ao seu dono, então todos os jogadores podem compartilhar um único mundo.

Esta é uma extensão privada da build BTC do TypeWriter (BTC Core, Paper ou Folia), documentada como referência.

Recursos​

  • Árvore de pesquisa — abates de mobs desbloqueiam Research Categories; cada animal precisa de um catalisador totalmente carregado e de um item de combustível para o sorteio final.
  • Espaço do zoológico e colocação — as espécies custam espaços; os animais são colocados em posições declaradas de um Placement Group, um animal por posição.
  • Renda passiva — os animais colocados pagam receita ao longo do tempo, escalada por raridade, nível, prestígio, felicidade, funcionários e decorações, com recuperação offline limitada.
  • Felicidade — de 0 a 100, multiplica a receita; a superlotação é sua única penalidade, e a alimentação e as decorações a aumentam.
  • Níveis e prestígio — curva de XP e limite de nível na economy config; o Prestige redefine um animal para o nível 1 em troca de um bônus de receita permanente.
  • Fusão e criação — Fusion de dois animais da mesma espécie e Breeding baseado em receitas com tempo de incubação.
  • Expedições — envie um animal em uma missão ociosa cronometrada e colete o resultado ao retornar.
  • Mapa de aventura — uma dimensão temporária clonada de um mundo modelo, explorada chunk por chunk com um medidor de fadiga, com animais usados como montarias.
  • Economia social — uma Delivery Shop rotativa, mercado de jogadores, contratos de animais, desafios diários e semanais, funcionários do zoológico, decorações e um ranking.

Instalação​

  1. Instale o TypeWriter com a build BTC (BTC Core no Paper ou Folia).
  2. Instale as extensões obrigatórias: Entity (modelos de animais e entidades falsas) e GUI (o painel de controle).
  3. Instale o Vault com um plugin de economia. Todos os custos e recompensas em dinheiro usam o Vault.
  4. Extensões opcionais: Vehicle com o PacketEvents para montarias, RPG Core para o nível da profissão de zoológico, TemporaryDimension para o mapa de aventura (ela precisa do SlimeWorldManager do BTC Core) e MySql com Redis para o ranking e o mercado entre servidores. O MiniPlaceholders é necessário para os placeholders.
  5. Coloque o JAR do Tycoon em plugins/Typewriter/extensions/ e reinicie o servidor.

Primeiros passos​

Adicione um primeiro animal e deixe os jogadores pesquisá-lo:

  1. No painel web do TypeWriter, abra uma página static e adicione um Tycoon Data Artifact. Adicione também um Tycoon Market Artifact se quiser o mercado de jogadores. Não altere seus artifactId.
  2. Adicione uma Research Category. Defina displayName, requiredMobKills e, opcionalmente, trackedMobTypes (vazio significa que todo mob conta).
  3. Adicione uma Animal Definition. Defina entityDefinition (o modelo), category (o id da categoria), rarity, spaceCost e baseRevenueRate. Liste os acceptedCatalystItems (um nome de material em itemId e um powerValue), o catalystPowerRequired e o fuelItem. Adicione o id do novo animal a animals da categoria.
  4. Adicione um Tycoon Placement Group com pelo menos uma posição, para que os jogadores tenham onde colocar o animal.
  5. Adicione uma Tycoon Economy Config. Sem ela, os padrões internos são usados.
  6. Construa a interface: adicione um Tycoon Control Panel com seus layouts e views e uma Tycoon Menu Config com os templates de itens de cada lista. Abra o painel a partir de uma entry de comando à sua escolha.
  7. Publique. Um jogador mata mobs até a categoria desbloquear, inicia o catalisador do animal na tela de pesquisa, o alimenta com itens de catalisador e depois usa o item de combustível (ou você dispara o Catalyst Activate) para tentar a pesquisa.
observação

Um template de lista deixado vazio no Tycoon Menu Config é renderizado como um slot vazio. Nada é inventado pelo código.

Como funciona​

Pesquisa​

Matar um mob conta para toda Research Category que acompanha seu tipo. Ao atingir requiredMobKills, a categoria é desbloqueada, a menos que requiredCategory ainda não esteja desbloqueada (a action Category Unlock também respeita isso).

Um animal é pesquisado em duas etapas. Primeiro o jogador alimenta itens de catalisador: clicar com o botão direito em uma entidade com um item listado em acceptedCatalystItems soma seu powerValue. Quando o poder atinge catalystPowerRequired, usar o fuelItem sorteia a pesquisa. A chance é successChance multiplicada pelo peso de captura da raridade. Em caso de sucesso, o jogador recebe o animal, ou as alternativeRewards se já possui a espécie. O catalisador é consumido de qualquer forma. O gesto de clique direito só reage a um animal cujo catalisador já foi iniciado (por exemplo, a partir da tela de pesquisa do painel de controle). A action Catalyst Activate sorteia a pesquisa de um catalisador totalmente carregado sem o item de combustível.

RaridadeMultiplicador de receitaPeso de capturaFadiga da montaria (s)
COMMON1.01.0120
UNCOMMON1.50.6180
RARE2.50.25300
EPIC5.00.08480
LEGENDARY10.00.02900

Zoológico, espaço e felicidade​

A capacidade é baseSpaceCapacity mais spacePerZooLevel para cada nível da profissão do RPG Core indicada em zooProfessionId (o nível é 1 quando vazio ou quando o RPG Core está ausente). maxPlacedPerSpecies limita quantos indivíduos de uma espécie ficam ao mesmo tempo. Acima de overcrowding.thresholdPercent da capacidade, a felicidade cai. A felicidade altera a receita entre revenueMultiplierAtZero e revenueMultiplierAtMax.

Offline, um jogador ganha por no máximo offlineCatchup.maxHours horas a offlineCatchup.rate da taxa online, calculado uma vez quando ele se reconecta.

Níveis, prestígio, fusão e criação​

maxAnimalLevel e xpCurve definem os níveis. No nível máximo, o Prestige redefine um indivíduo para o nível 1 e soma prestigeRevenueBonus à sua receita, até maxPrestige.

O Fusion pega dois animais de reserva de uma espécie com o mesmo nível e prestígio (de pelo menos fusionMinLevel), os remove e inicia uma incubação. O Breeding corresponde duas espécies parentes (em qualquer ordem) a uma receita com requiredParentLevel, incubationSeconds, cost e consumesParents. Quando o ovo choca, rarityUpgradeChance da ação pode subir a raridade um degrau e cosmeticMutationChance pode dar uma skin de mutação.

Funcionários, decorações e desafios​

Os membros da Staff têm um role (REVENUE_COLLECTOR, CARETAKER, EXPEDITION_GUIDE, RESEARCHER), um hireCost e um upkeepPerHour por hora; um membro que não pode ser pago é dispensado. As Decorations somam happinessBonus e revenueBonus e são limitadas por maxPerPlayer. Os Challenges acompanham um challengeType em um período DAILY ou WEEKLY e pagam rewardMoney e rewardCommands. Os Animal Contracts pedem animais por espécie ou categoria, nível mínimo e quantidade.

O Tycoon Control Panel é um menu com views. A página define tudo o que o jogador vê:

  • layoutPool guarda um frame raiz (ou mainLayoutId o indica). Os frames de conteúdo variável usam o id de layout @view.
  • views declara as telas. Uma view informa seu layout por frame, ou pela convenção de nomes <viewId>_<frameId>. defaultViewId é a primeira view aberta.
  • Um slot de aba carrega a tag view:<viewId>; a aba ativa é destacada pelo estilo de view compartilhado.
  • Os itens de conteúdo usam um buttonType no formato tycoon_button:TYPE ou tycoon_button:TYPE:argument. A extensão preenche dados ao vivo nas tags do item e anexa os cliques.
  • Um menu é aberto em uma view com o alvo <viewId> ou <viewId>:<argument> (por exemplo, o id de uma categoria de pesquisa).

Tipos de botão, por tela:

TelaTipos de botão
Zoológico e bestiárioZOO_INFO, BESTIARY_ENTRY, BESTIARY_SPECIES_ENTRY, SPECIES_MANAGE_INFO, PLACEMENT_SLOT_ENTRY, SPECIES_LEVEL_ENTRY, BESTIARY_PANEL_ENTRY, PLACED_ENTRY
PesquisaRESEARCH_CATEGORY_ENTRY, RESEARCH_ANIMAL_ENTRY, RESEARCH_CATEGORY
Expedições e montariasEXPEDITION_ENTRY, EXPEDITION_START_ENTRY, MOUNT_ENTRY
AventuraADVENTURE_CHUNK_ENTRY, ADVENTURE_INFO
EconomiaSHOP_ENTRY, PRESTIGE_ENTRY, MARKET_ENTRY, MARKET_MINE_ENTRY, MARKET_SELL_ENTRY, ANIMAL_CONTRACT_ENTRY, STAFF_ENTRY, STAFF_INFO
SocialRANKING_SORT, RANKING_ENTRY, CHALLENGE_ENTRY
Criação e decoraçõesBREEDING_PARENT_ENTRY, BREEDING_EGG_ENTRY, BREEDING_INFO, DECORATION_ENTRY, DECORATION_PLACED_ENTRY
ListasLIST_PAGER:<listId>[:<pageSize>] (aparece apenas quando a lista não cabe em uma tela)

As entradas baseadas em ordem (os tipos _ENTRY) renderizam um elemento por slot marcado, na ordem dos slots. O template de item de cada lista, com suas tags como {animal_name} ou {remaining_time}, vem do Tycoon Menu Config. A mesma entry indica as views abertas pelas categorias de pesquisa (researchViewId), pelos slots de expedição (expeditionViewId) e pelo bestiário (bestiaryViewId).

Comandos​

Os comandos são entries, então seus nomes e permissões são editados no painel. Cada um é registrado ao colocar a entry em uma página.

ComandoDescrição
/tycoonadmin give <player> <animal>Dá um animal a um jogador online. Exige a permissão definida em permission (padrão tycoon.admin).
/tycoonadmin remove <player> <animal>Remove o indivíduo menos avançado de uma espécie.
/tycoonadmin setlevel <player> <animal> <level>Define o nível de todos os indivíduos de uma espécie, limitado a maxAnimalLevel.
/tycoonadmin unlockcategory <player> <category>Desbloqueia uma categoria de pesquisa.
/tycoonadmin info [player]Mostra o perfil de zoológico de um jogador.
/tycoonadmin resetfatigue [player]Redefine a fadiga da aventura.
/tycoonadmin spawnshop <shop>Invoca agora um comerciante de delivery shop.
/tycoonadmin saveGrava todos os dados do Tycoon em disco.
/collecterColeta a receita acumulada. Aberto a todos, a menos que permission esteja definida.
/visiter <player>Teletransporta para o local de outro jogador para visitar seu zoológico. Aberto a todos, a menos que permission esteja definida.

Os nomes acima são os padrões de Tycoon Admin Command, Tycoon Collect Command e Tycoon Visit Command; altere commandName para renomeá-los. Os comandos de abertura de menu (por exemplo /zoo) não fazem parte desta extensão: crie-os com uma entry de comando da extensão Basic que dispare o Control Panel.

Permissões​

PermissãoConcede
tycoon.adminToda a árvore /tycoonadmin. Este é o padrão do campo permission do comando de admin e pode ser alterado lá.

O campo permission dos comandos de coleta e de visita vem vazio por padrão (nenhuma permissão necessária).

Placeholders​

Tags MiniPlaceholders da expansão tycoon, fornecidas por meio do TypeWriter. <id> é o id de uma animal definition, <cat> o id de uma categoria de pesquisa e <n> o índice de um slot de expedição começando em 0. Todos leem o perfil do jogador que está vendo.

Totais​

PlaceholderRetorna
<tycoon_total_animals>Número de animais possuídos.
<tycoon_total_species>Número de espécies possuídas.
<tycoon_placed_animals>Animais colocados no zoológico.
<tycoon_unplaced_animals>Animais na reserva.
<tycoon_total_revenue>Receita total ganha, com 2 casas decimais.
<tycoon_total_revenue_raw>Receita total ganha, como inteiro.
<tycoon_categories_unlocked>, <tycoon_categories_total>, <tycoon_categories_locked>Categorias de pesquisa desbloqueadas, acompanhadas e ainda bloqueadas.
<tycoon_milestones_count>Marcos de coleção alcançados.
<tycoon_prestige_total>Contagem total de prestígio de todos os animais.
<tycoon_expeditions_active>Expedições ativas.
<tycoon_expeditions_completed>Sempre 0.
<tycoon_zoo_visitors>Visitantes do zoológico.
<tycoon_active_mount_id>Id da montaria selecionada, ou none.
<tycoon_last_revenue_collect>Hora da última coleta (HH:mm:ss).

Categorias de pesquisa​

PlaceholderRetorna
<tycoon_category_unlocked:cat>true se desbloqueada.
<tycoon_category_mobs_killed:cat>Mobs acompanhados abatidos.
<tycoon_category_required_kills:cat>Abates necessários para desbloquear.
<tycoon_category_progress_percent:cat>Progresso em porcentagem.
<tycoon_category_name:cat>Nome de exibição.

Animais​

PlaceholderRetorna
<tycoon_animal_level:id>, <tycoon_animal_xp:id>, <tycoon_animal_prestige:id>Nível, XP e contagem de prestígio do animal possuído.
<tycoon_animal_owned:id>, <tycoon_animal_placed:id>true ou false.
<tycoon_animal_count:id>, <tycoon_animal_placed_count:id>Indivíduos possuídos e colocados.
<tycoon_animal_rarity:id>, <tycoon_animal_rarity_color:id>Nome da raridade e sua cor hexadecimal.
<tycoon_animal_custom_name:id>Nome personalizado.
<tycoon_animal_display_name:id>Nome de exibição da definição.
<tycoon_animal_is_mountable:id>, <tycoon_animal_mount_speed:id>, <tycoon_animal_fatigue_capacity:id>Configurações de montaria da definição.
<tycoon_animal_max_level:id>maxAnimalLevel da economy config.
<tycoon_animal_space_cost:id>, <tycoon_animal_revenue_rate:id>, <tycoon_animal_fusion_level:id>spaceCost, baseRevenueRate, fusionMinLevel.
<tycoon_animal_catalyst_progress:id>Preenchimento do catalisador em porcentagem.
<tycoon_animal_catalyst_power:id>, <tycoon_animal_catalyst_items:id>Poder do catalisador e número de tipos de itens doados.
<tycoon_placed_happiness:id>, <tycoon_placed_biome:id>, <tycoon_placed_world:id>, <tycoon_placed_coords:id>, <tycoon_placed_chunk:id>Detalhes do animal colocado.
<tycoon_prestige_bonus:id>Bônus de prestígio do animal.

Expedições​

PlaceholderRetorna
<tycoon_expedition_count>Slots de expedição em uso.
<tycoon_expedition_animal:n>Id do animal do slot n.
<tycoon_expedition_remaining_seconds:n>, <tycoon_expedition_remaining_minutes:n>Tempo antes do retorno.
<tycoon_expedition_duration_hours:n>Duração total em horas.
<tycoon_expedition_ready:n>true quando pronto para coleta.

Entries​

27 entradas, geradas a partir do código-fonte da extensão.

Ações9
Comandos3
Artefatos2
Manifestos13

Solução de problemas​

O menu abre vazio. Os templates do Tycoon Menu Config vêm, por padrão, como slots vazios, e o layoutPool deve conter os layouts indicados por mainLayoutId e views. Verifique o id do menu no log.

Clicar em uma categoria de pesquisa ou em um slot de expedição volta à visão geral. Os ids de view em researchViewId, expeditionViewId e bestiaryViewId da menu config (padrões tycoon_recherches, tycoon_expeditions, tycoon_bestiaire) devem corresponder aos ids de suas views. Caso contrário, o motor recorre à view padrão.

Uma categoria nunca é desbloqueada. trackedMobTypes é comparado com o nome do tipo de entidade em minúsculas; uma lista vazia conta todos os mobs. Uma categoria com requiredCategory só pode ser desbloqueada pela action Category Unlock depois que essa categoria estiver desbloqueada.

Um animal não pode ser colocado. Ele precisa de uma posição livre em um Placement Group cujo maxSpaceCost seja pelo menos o spaceCost do animal, de espaço livre suficiente dentro da capacidade e de um nível de zoológico de pelo menos requiredZooLevel. Não reordene positions em um servidor ativo: os ids dos slots derivam de seu índice.

Custos e recompensas em dinheiro não fazem nada. Eles passam pelo Vault. Instale o Vault e um plugin de economia.

O mapa de aventura ou as montarias estão indisponíveis. Eles precisam da extensão TemporaryDimension (com o SlimeWorldManager do BTC Core) e da extensão Vehicle com o PacketEvents. Sem o Redis, o ranking e o mercado ficam locais ao servidor.

Uma fusão ou criação não dá nada. A fusão precisa de dois animais de reserva com o mesmo nível e prestígio e pelo menos fusionMinLevel; animais posicionados são ignorados. A eclosão só é sorteada quando o ovo está pronto, após incubationHours: aí rarityUpgradeChance e cosmeticMutationChance da ação Fusion se aplicam.

Extensões relacionadas​

  • BTC Sky — ilhas e pesquisa na mesma build BTC.
  • Machine — máquinas orientadas por dados para ilhas.