Como eu programei uma função que não existia nativamente no Firecast
Recentemente comecei a jogar RPG com uns amigos pelo Firecast, o Software é bem construído e - se o Mestre for usuário premium - supre bem as necessidades básicas de jogo. | ||||||
Menos uma, a rolagem oculta. | ||||||
Contextualizando: Todos os NPC`s do jogo são, em teoria, controlados pelo Mestre e respeitam as regras do jogo tal qual os outros jogadores. Sejam elas testes de ataque, defesa, furtividade, resistência ou qualquer outra mecânica que dependa do uso dos dados. Só que para manter a expectativa do jogo, as vezes, o mestre precisa fazer essas rolagens de maneira que os jogadores não saibam quantos dados ele rolou ou o resultado (apesar de sabermos que ele está rolando os dados). | ||||||
O problema é que o Firecast não tem essa ferramenta de maneira oficial e nem nos plugins de expansão disponíveis no Github do software. Pesquisando melhor eu vi que esse era inclusive um pedido recorrente da comunidade que utiliza o Firecast. Essa questão me deixou curioso, pois me parece uma função muito básica para um programa que tem funções mais complexas. | ||||||
O Firecast tem a possibilidade de programar macros para automatizar algumas ações, inclusive usando da linguagem Lua para aumentar as possibilidades de personalização do código. Estudando um pouco a documentação do software eu encontrei a função "rolarLocal()", que era justamente o que eu precisava. Agora era só relembrar como programar para eu criar essa ferramenta e eis que alguns dias depois surge meu código: | ||||||
| ||||||
E o resultado é esse: | ||||||
Analisando o Macro, vemos que é uma implementação bem simples. O Firecast usa um padrão para marcar os dados que serão rolados. Sendo um numeral para a quantidade de dados, a letra "D" e outro numeral para o valor de faces dos dados. Resultando em um valor como "1D20", por exemplo. | ||||||
Sabendo disso, nas duas primeiras linhas do código eu uso um input manual para definir as variáveis "qtdados" (quantidade de dados) e "vldados" (valor de faces de dados), na terceira, eu defino mais uma variável "rolada", que não é nada além das informações recolhidas pelas duas primeiras variáveis concatenados com um "D"no meio. | ||||||
| ||||||
Depois disso, temos a função "rolarLocal()" que eu citei no começo do texto. Precisei definir mais uma variável "dado", que faria a rolagem dos dados definidos anteriormente na variável "rolada". Então, eu só precisei imprimir na tela o resultado da rolagem de um maneira que somente quem ativou o macro pudesse ver. Eu poderia imprimir no chat também, mas achei melhor usar a função "showMessage" para abrir uma janela que só é fechada pressionando o "OK". | ||||||
Para finalizar, eu só imprimi no chat uma mensagem de que os dados foram rolados, avisando aos jogadores de que o Mestre fez essa rolagem, mas sem dizer quantos dados foram rolados, nem quais dados foram rolados. | ||||||
| ||||||
Essa ultima função foi uma tentativa de simular a interação numa mesa real, em que os jogadores percebem quando o mestre rola os dados, mas não tem acesso ao resultado. Acredito que essa situação gere momentos de tensão que não poderiam ser replicados se a rolagem fosse 100% oculta, mas é mais uma perfumaria e o Macro não precisa dessa linha para funcionar. | ||||||
Com isso, tenho algumas considerações a fazer. Por enquanto, o macro não permite a rolagem de dados de valores diferentes simultaneamente. Pelo que eu observei, isso é uma situação mais rara de acontecer. De qualquer jeito, já está nos planos trabalhar nessa correção na versão 2.0 do código. Talvez eu faça em forma de plugin, para ficar mais visual e mais fácil de compartilhar. | ||||||
A segunda consideração é que essa foi minha primeira vez programando e meio que eu tomei gosto pela coisa... Tenho estudado bastante sobre programação e espero me dedicar mais a esse assunto. Pretendo documentar aqui a caminhada para registrar o processo e também para fixar o assunto estudado. Se você gostou, vamos trocar ideia! Meu e-mail é melo_vinicius@hotmail.com e eu vou adorar conversar sobre o assunto. | ||||||
Forte abraço | ||||||
Seguir meu Canal |