Todos os sistemas Itens, economia e progressão

Sistema de Enchant

Reescrito do zero. A chance é definida por nível e por tipo de scroll, em arquivo aberto: você escolhe o que acontece na falha, até onde é seguro, quais equipamentos cada scroll aceita e em que marcas o servidor anuncia o sucesso. Cinco tipos de scroll em enchant/.

Por que isso importa para o seu servidor

Enchant é o sistema que define o ritmo do seu servidor inteiro. Chance alta demais e todo mundo chega ao topo em duas semanas — o servidor esvazia por falta de objetivo. Chance baixa demais e o jogador desiste na terceira arma quebrada.

O problema do Interlude original é que essa curva é praticamente fixa. Aqui ela é uma tabela: cada nível tem a sua chance, e você desenha a curva que quiser. Dá para fazer os primeiros níveis seguros, criar um patamar de risco no meio e deixar o topo realmente raro — que é a forma de manter conteúdo por meses sem tocar em rate.

Cada tipo de scroll fica num arquivo:

ArquivoO que é
scrolls.xmlAs scrolls normais, por grade e tipo de equipamento.
blessed.xmlAbençoadas: preservam o item ao falhar.
crystall.xmlCrystal Scrolls, com faixa e comportamento próprios.
cursed.xmlAmaldiçoadas: ganho maior, risco maior.
yogiScroll.xmlScroll especial, com regra própria de sucesso e perda.

A estrutura de uma scroll

<scroll itemId="959" grade="S" target="WEAPON" onFail="CRYSTALIZE"
        increment="1" chanceBonus="0" minLevel="0" maxWeapon="0"
        safeMax="3" safeMaxFull="4">
    <enchant level="1" weaponChance="100" magicWeaponChance="100" />
    <enchant level="5" weaponChance="25" magicWeaponChance="25"
             announce="%s has successfully enchanted his item %s" />
</scroll>

O cabeçalho

AtributoO que faz
itemIdO ID da scroll no datapack.
gradeA grade que ela aceita: D, C, B, A, S.
targetO tipo de equipamento: WEAPON, ARMOR, JEWEL.
onFailO que acontece quando falha. É o atributo mais importante do arquivo — veja abaixo.
incrementQuantos níveis sobem por sucesso. 1 é o normal; 2 cria scrolls de salto.
chanceBonusPercentual somado à chance da tabela. Serve para criar variantes "melhoradas" da mesma scroll.
minLevelEnchant mínimo que o item precisa ter para a scroll funcionar. Permite scroll que só age a partir de certo ponto.
maxWeaponTeto de enchant. 0 significa sem teto próprio.
safeMaxAté que nível a falha não destrói o item.
safeMaxFullO mesmo, para full armor — normalmente um nível acima.

O que acontece na falha

O onFail aceita:

  • CRYSTALIZE — o item vira cristais. É o comportamento clássico do Interlude.
  • KEEP — o item continua igual, só a scroll é gasta. Servidor mais leve, sem perda.
  • DECREASE — o item desce um nível. Um meio-termo: dói, mas não zera meses de progresso.

Essa escolha define o caráter do servidor mais do que qualquer rate. KEEP com chances baixas cria um servidor de paciência; CRYSTALIZE com chances médias cria um de aposta.

A tabela de chance

Uma linha por nível:

<enchant level="4" weaponChance="100" magicWeaponChance="100" />
<enchant level="5" weaponChance="25"  magicWeaponChance="25" />
AtributoO que faz
levelO nível que está sendo tentado. A linha level="5" é a chance de sair do +4 para o +5.
weaponChanceChance percentual para arma física.
magicWeaponChanceChance percentual para arma mágica. Separar as duas permite compensar o peso maior do enchant em armas mágicas.
announceMensagem global quando o enchant dá certo naquele nível. %s é substituído pelo nome do jogador e pelo nome do item, nessa ordem. Deixe de fora para não anunciar.

No exemplo entregue, os níveis 1 a 4 são 100% e do 5 em diante caem para 25%. É uma curva de dois patamares: todo mundo chega ao +4 sem sofrer, e o risco começa exatamente onde o item já vale alguma coisa.

O anúncio

Colocar announce só em marcas redondas — 5, 10, 16 — funciona melhor do que anunciar tudo. O anúncio vira evento: o chat para, todo mundo vê, e o jogador que conseguiu ganha o status que o fez gastar. Anunciar todo enchant transforma isso em ruído e as pessoas param de ler.

Criando uma scroll custom

O sistema foi desenhado para isso: uma scroll nova é um bloco novo no arquivo, sem tocar em código. O passo a passo completo:

1. Crie o item no datapack

A scroll precisa existir como item antes de existir como regra. Anote o itemId.

2. Decida o comportamento

Antes de escrever o bloco, responda quatro perguntas:

PerguntaAtributo
Que grade ela aceita?grade
Que tipo de equipamento?target
O que acontece quando falha?onFail
Até onde é seguro?safeMax e safeMaxFull

3. Escreva o bloco

<scroll itemId="9500" grade="S" target="WEAPON" onFail="DECREASE"
        increment="1" chanceBonus="0" minLevel="10" maxWeapon="20"
        safeMax="10" safeMaxFull="10">
    <enchant level="11" weaponChance="60" magicWeaponChance="55" />
    <enchant level="12" weaponChance="55" magicWeaponChance="50" />
    <enchant level="13" weaponChance="50" magicWeaponChance="45" />
    <enchant level="14" weaponChance="45" magicWeaponChance="40" />
    <enchant level="15" weaponChance="40" magicWeaponChance="35"
             announce="%s conseguiu levar %s ao +15!" />
</scroll>

O exemplo acima é uma scroll de faixa alta: com minLevel="10" ela só funciona a partir do +10, e com maxWeapon="20" ela para no +20. Isso cria um produto que não compete com a scroll comum — quem está no começo não tem uso para ela, e quem está no topo precisa dela.

4. Confira a tabela

A tabela precisa cobrir todos os níveis que a scroll pode tentar. Uma linha faltando no meio é um nível sem chance definida, e o comportamento aí depende da build — não conte com um padrão.

5. Recarregue

Recarregue os dados ou reinicie. A scroll passa a funcionar imediatamente.

Três receitas que funcionam

Scroll de segurança — para vender caro e agradar quem odeia perder item:

<scroll itemId="..." grade="S" target="WEAPON" onFail="KEEP"
        increment="1" safeMax="0" safeMaxFull="0">

Com onFail="KEEP" nada quebra nunca. A chance pode ser bem menor que a da scroll comum — o jogador paga pela ausência de risco, não pela probabilidade.

Scroll de salto — para prêmio de evento:

<scroll itemId="..." grade="S" target="WEAPON" onFail="CRYSTALIZE"
        increment="2" chanceBonus="0" safeMax="3">

O increment="2" sobe dois níveis por sucesso. É rara, arriscada e memorável.

Scroll melhorada — a mesma curva, com bônus fixo:

<scroll itemId="..." grade="S" target="WEAPON" onFail="CRYSTALIZE"
        increment="1" chanceBonus="15" safeMax="4">

O chanceBonus="15" soma 15 pontos percentuais a cada linha da tabela. É a forma mais simples de criar uma variante "premium" sem reescrever a curva inteira.

Desenhando a sua curva

Uma abordagem que costuma funcionar:

  1. Zona segura — do +1 até o safeMax, chance alta. O jogador aprende o sistema sem perder nada.
  2. Zona de decisão — logo acima do safeMax, a chance cai e a falha passa a doer. É aqui que a scroll abençoada ganha valor.
  3. Zona de prestígio — os últimos níveis, chance baixa e announce ligado. Pouca gente chega, e quem chega é conhecido pelo servidor inteiro.

Ajuste a chance, não o safeMax. Mexer no safeMax depois de aberto muda retroativamente o risco que os jogadores acharam que estavam correndo.

Cuidados

  • O multiplicador de enchant do VIP se soma a isto. O atributo bonus enchant em vip/*.xml multiplica a chance da tabela. Calcule o resultado final antes de achar que a curva está calibrada.
  • chanceBonus é somado, não multiplicado. Um chanceBonus="10" numa linha de 25% resulta em 35%, não em 27,5%.
  • Alterar a tabela vale para todos, inclusive itens já enchantados — o que muda é a próxima tentativa.
  • Cada tentativa é registrada. O log de enchant vai para o Discord; use-o quando um jogador afirmar que perdeu item sem ter tentado.

Como isso conversa com o resto da base

O enchant tem painel de edição dentro do jogo, então o ajuste fino pode ser feito com o servidor no ar. As scrolls abençoadas, crystal e cursed são variações do mesmo formato — o que muda é o onFail e a curva. E o painel de augment usa uma faixa de item separada (9212–9243) justamente para não colidir com este sistema.

Falar no WhatsAppContato aqui