Tycoon
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
- Instale o TypeWriter com a build BTC (BTC Core no Paper ou Folia).
- Instale as extensões obrigatórias: Entity (modelos de animais e entidades falsas) e GUI (o painel de controle).
- Instale o Vault com um plugin de economia. Todos os custos e recompensas em dinheiro usam o Vault.
- 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.
- 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:
- 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. - Adicione uma Research Category. Defina
displayName,requiredMobKillse, opcionalmente,trackedMobTypes(vazio significa que todo mob conta). - Adicione uma Animal Definition. Defina
entityDefinition(o modelo),category(o id da categoria),rarity,spaceCostebaseRevenueRate. Liste osacceptedCatalystItems(um nome de material emitemIde umpowerValue), ocatalystPowerRequirede ofuelItem. Adicione o id do novo animal aanimalsda categoria. - Adicione um Tycoon Placement Group com pelo menos uma posição, para que os jogadores tenham onde colocar o animal.
- Adicione uma Tycoon Economy Config. Sem ela, os padrões internos são usados.
- 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.
- 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.
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.
| Raridade | Multiplicador de receita | Peso de captura | Fadiga da montaria (s) |
|---|---|---|---|
COMMON | 1.0 | 1.0 | 120 |
UNCOMMON | 1.5 | 0.6 | 180 |
RARE | 2.5 | 0.25 | 300 |
EPIC | 5.0 | 0.08 | 480 |
LEGENDARY | 10.0 | 0.02 | 900 |
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.
Menus
O Tycoon Control Panel é um menu com views. A página define tudo o que o jogador vê:
layoutPoolguarda umframeraiz (oumainLayoutIdo indica). Os frames de conteúdo variável usam o id de layout@view.viewsdeclara 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
buttonTypeno formatotycoon_button:TYPEoutycoon_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:
| Tela | Tipos de botão |
|---|---|
| Zoológico e bestiário | ZOO_INFO, BESTIARY_ENTRY, BESTIARY_SPECIES_ENTRY, SPECIES_MANAGE_INFO, PLACEMENT_SLOT_ENTRY, SPECIES_LEVEL_ENTRY, BESTIARY_PANEL_ENTRY, PLACED_ENTRY |
| Pesquisa | RESEARCH_CATEGORY_ENTRY, RESEARCH_ANIMAL_ENTRY, RESEARCH_CATEGORY |
| Expedições e montarias | EXPEDITION_ENTRY, EXPEDITION_START_ENTRY, MOUNT_ENTRY |
| Aventura | ADVENTURE_CHUNK_ENTRY, ADVENTURE_INFO |
| Economia | SHOP_ENTRY, PRESTIGE_ENTRY, MARKET_ENTRY, MARKET_MINE_ENTRY, MARKET_SELL_ENTRY, ANIMAL_CONTRACT_ENTRY, STAFF_ENTRY, STAFF_INFO |
| Social | RANKING_SORT, RANKING_ENTRY, CHALLENGE_ENTRY |
| Criação e decorações | BREEDING_PARENT_ENTRY, BREEDING_EGG_ENTRY, BREEDING_INFO, DECORATION_ENTRY, DECORATION_PLACED_ENTRY |
| Listas | LIST_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.
| Comando | Descriçã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 save | Grava todos os dados do Tycoon em disco. |
/collecter | Coleta 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ão | Concede |
|---|---|
tycoon.admin | Toda 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
| Placeholder | Retorna |
|---|---|
<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
| Placeholder | Retorna |
|---|---|
<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
| Placeholder | Retorna |
|---|---|
<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
| Placeholder | Retorna |
|---|---|
<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
- Animal XP ActionGrant XP to a player's owned animal toward its next level
- Catalyst Activate ActionUse the fuel item to attempt animal research once the catalyst is fully powered
- Category Unlock ActionUnlock a research category when the mob kill threshold is met
- Customize Animal ActionCustomize an owned animal: rename, apply skins, equip accessories
- Expedition Start ActionSend an owned animal on a timed expedition to earn loot, XP, and rare resources
- Fusion ActionFuse two animals of the same species to create an egg with inherited stats and mutation chance
- Prestige ActionPrestige a max-level animal: resets to level 1 with a permanent revenue bonus and exclusive cosmetic
- Revenue Collect ActionCollect accumulated tycoon revenue for a player
- Tycoon MenuTycoon Control Panel (menu à vues)
Comandos3
- Tycoon Admin CommandCommande d'administration Tycoon
- Tycoon Collect CommandCommande de collecte des revenus
- Tycoon Visit CommandCommande de visite de zoo
Artefatos2
- Tycoon Data ArtifactCentralized persistent storage for all Tycoon data (profiles, research, expeditions)
- Tycoon Market ArtifactPersistent storage for the player auction house (market listings)
Manifestos13
- Adventure MapConfigures an adventure map: temporary dimension template, chunk grid, spawn zone, and mount selector
- Animal DefinitionDefines a tycoon animal with research tree, catalyst mechanics, fusion, and economy stats
- Delivery ShopConfigures a rotating delivery shop: NPC spawn schedule, item pool, and FOMO rotation mechanics
- Research CategoryResearch category in the tycoon tech tree; groups animals and requires mob kills to unlock
- Tycoon Animal ContractA delivery contract rewarding handed-over animals
- Tycoon Breeding RecipeCross two animal species into a hybrid offspring egg
- Tycoon ChallengeA rotating daily/weekly zoo challenge
- Tycoon DecorationA placeable zoo decoration granting happiness/revenue bonuses
- Tycoon Economy ConfigTycoon economic rules: space, overcrowding, happiness, prestige
- Tycoon Menu ConfigTycoon Control Panel Configuration
- Tycoon Placement GroupGroupe d'emplacements de zoo
- Tycoon Research RecipeResearch Recipe
- Tycoon StaffA hireable zoo staff member with a passive role effect
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.