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:
| Arquivo | O que é |
|---|---|
scrolls.xml | As scrolls normais, por grade e tipo de equipamento. |
blessed.xml | Abençoadas: preservam o item ao falhar. |
crystall.xml | Crystal Scrolls, com faixa e comportamento próprios. |
cursed.xml | Amaldiçoadas: ganho maior, risco maior. |
yogiScroll.xml | Scroll 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
| Atributo | O que faz |
|---|---|
itemId | O ID da scroll no datapack. |
grade | A grade que ela aceita: D, C, B, A, S. |
target | O tipo de equipamento: WEAPON, ARMOR, JEWEL. |
onFail | O que acontece quando falha. É o atributo mais importante do arquivo — veja abaixo. |
increment | Quantos níveis sobem por sucesso. 1 é o normal; 2 cria scrolls de salto. |
chanceBonus | Percentual somado à chance da tabela. Serve para criar variantes "melhoradas" da mesma scroll. |
minLevel | Enchant mínimo que o item precisa ter para a scroll funcionar. Permite scroll que só age a partir de certo ponto. |
maxWeapon | Teto de enchant. 0 significa sem teto próprio. |
safeMax | Até que nível a falha não destrói o item. |
safeMaxFull | O 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" />
| Atributo | O que faz |
|---|---|
level | O nível que está sendo tentado. A linha level="5" é a chance de sair do +4 para o +5. |
weaponChance | Chance percentual para arma física. |
magicWeaponChance | Chance percentual para arma mágica. Separar as duas permite compensar o peso maior do enchant em armas mágicas. |
announce | Mensagem 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:
| Pergunta | Atributo |
|---|---|
| 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:
- Zona segura — do +1 até o
safeMax, chance alta. O jogador aprende o sistema sem perder nada. - 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. - Zona de prestígio — os últimos níveis, chance baixa e
announceligado. 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 enchantemvip/*.xmlmultiplica a chance da tabela. Calcule o resultado final antes de achar que a curva está calibrada. chanceBonusé somado, não multiplicado. UmchanceBonus="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.