O Foundry VTT é uma plataforma de Virtual TTRPG que está em ascensão e muitos mestres estão migrando seus jogos para ela devido a flexibilidade a capacidade da plataforma, e para melhorar isso vamos aprender Macros!

Conversando com alguns mestres que estão utilizando o Foundry VTT atualmente eles expressaram a dificuldade de criarem Macros para explorar a plataforma de maneira mais profunda se o background deles não esta relacionado com a área de TI principalmente na área de programação.

Com isso decidi criar essa série que terá de 3 posts que reunirá recursos, exemplos que o ajudara a entender de javascript a linguagem utilizada no Foundry, a API do Foundry e como unir ambos para levar sua campanha para o próximo nível.

Javascript ou JS é uma linguagem de programação interpretada que executa instruções em tempo de execução no seu navegador e também hoje pode ser utilizada para backend (servidores). Em geral o javascript é uma linguagem bem flexível e Foundry VTT utiliza dessa flexibilidade para criar essa plataforma que amamos.

TL;DR

Por onde começar?

Se você não possui nenhum conhecimento de programação vou listar alguns recursos e cursos gratuitos que você precisa fazer como pré requisito para entender melhor as próximas partes e tirar vantagem completa deste artigo.

Primeiro se você não conhece nada sobre linguagem de programação ou algoritmo esse video do Sharpax explica bem o que é e como funciona, pois nossas macros são pequenos algoritmos que executam o que desejamos.

Para exercitar o uso de algoritmos é bem comum em cursos você praticar utilização do Português Estruturado, para isto eu recomendo uma ferramenta chamada Portugol Studio (eu fazia isso no papel e caneta) que possui exercícios para compreensão de algoritmos, e cobre itens básicos como condições e loops, que utilizaremos com grande frequências para a criação de macros.

Eu vou começar com uma recomendação bem legal que é o Marco Bruno que possui um série de videos, e essa playlist de 3 videos com aproximadamente 1h vai te ajudar a iniciar no javascript.

Nesta playlist ele explica baseando-se no livro "Eloquente Javascript" mais profundamente como funciona os tipos de dados na linguagem, isso o ajudará a entender melhor e mais profundo conforme você for se aprofundando nas macros.

Outro curso completo focado na Orientação a Objetos com Javascript (Aula 5) é o do Marcos Soares que é utilizado pelo Foundry e é bem importante conhecer.

E por ultimo você pode praticar utilizando o https://www.hackerrank.com/ (inglês) que possui exercícios gratuitos de JavaScript & Algoritmo.

Eu sei o básico de programação por onde eu começo?

Foundry VTT Fundamentos

Agora que já sabemos o que é Javascript, por onde começar no javascript para podermos criar nossos pequenos algoritmos e executá-los como macros, como fazemos isso no Foundry.

Vamos consolidar como o Foundry funciona e para isso precisamos entender todos os componentes chave do aplicativo pois iremos manipulados com as macros.

O Foundry e composto por um eco-sistema partes generalizadas que em conjunto são capazes podem ser transformadas para Sistema e Modulos, as partes desse eco-sistema podem ser acessados por uma API. Essa API pode ser modificada durante a inicialização (Sistema e Módulos) ou em tempo de execução (Macros).

Com o tempo de execução nos temos acesso a todas as partes desse eco-sistema e elas se definem em

  • Actors
  • Playlists
  • Chat*
  • Combat*
  • RollTables
  • Dice
  • Scenes
  • JournalEntry
  • Macro
  • Token
  • Walls
  • Map Notes
  • Drawings
  • Ambient Sound
  • Light and Dynamic Effects
  • Tiles

Cada um deses items possui uma API que determina como deverão como os dados podem ser utilizados para leitura e escrita.

Para a continuação do item básico vamos focar no Token pois podemos utilizar atributos dele.

  • Token: E a implementação de um Objeto que representa um Ator que foi colocado na cena no game canvas.(ref: API)

Agora que sabemos o que um Token e vamos para o próximo passo onde podemos utilizar parte de seus dados em Macros.

OBS: Eu vou entrar em mais detalhe em cada um desses itens no próximo artigo, onde eu irei cobrir API e o inicio de Script Macro.

Fonte: https://foundryvtt.com/kb/

Foundry VTT Macros

Definição

Macros em Foundry VTT são divididas em 2 tipos Script e Chat, e abordaremos as duas em momentos diferentes. Primeiro vamos entender por onde começar com as macros.

Diferente dos outros items Macros são guardadas no Macro Directory que é localizada no canto inferior esquerdo da Hotbar (atalho) conforme mostrado na imagem.

  • Macro Directory: Fornece acesso a todas as macros que foram criadas e você tem permissão para visualizar, usar ou editar.
  • Macro HotBar: Dá acesso instantâneo e rápido pressionamento de teclas 1 a 0 para executar macros , que podem ser usadas para enviar mensagens de bate-papo ou executar ações de API com script.
  • Hotbar Pages: O controle de páginas de macro permite que você alterne entre até cinto páginas diferentes de layouts de macro para sua conveniência, possibilitando acesso a 50 (10*5) macros de acesso rápido.
Imagem oficial de macros, fonte: https://foundryvtt.com/kb/

Script Macros

Macros complexas e poderosas que alavancam a API Foundry VTT por meio de JavaScript simples para executar funções tão simples ou tão avançadas quanto você possa imaginar.

Script macros serão abordadas nas versões intermediaria e avançada.

Chat Macros

Simples e fáceis de usar, as macros de bate-papo postam mensagens de bate-papo predefinidas na janela de bate-papo quando executadas. Todos os usuários podem executar macros de bate-papo por padrão.


Utilizando Chat Macros.

A primeira capacidade da barra de macros e a capacidade de executar ações possuídas pre-definidas que o usuário possui.

Da ficha do seu personagem você pode arrastar qualquer um dos items abaixo para a "HotBar" e facilitar para executar.

  • Weapons (Armas)
  • Equipment (Equipamento)
  • Consumables (Consumíveis)
  • Tools (Ferramentas)
  • Loot
  • Features (Habilidades)
  • Spells (Feitiços)

Mas não e somente isso que as macros podem fazer vamos, vamos para alguns outros exemplos.

Exemplo de Macro Arrastando - Uso da Hot Bar.

Rolagem de dados

# Com mensagems
/r 1d6#which of my players is the next victim?

# Com tags
/roll 2d6[slashing damage]+1d8[fire damage]

# Pedindo uma rolagem
Can everyone roll a [[/roll 1d10]] for me?
Can everyone roll a [[/roll 1d10#Mensagem]] for me?
Can everyone roll a [[/roll 1d10[slashing damage]#Mensagem]] for me?

Com a rolagem de dados você pode preparar todo tipo de rolagem, mas não paramos por ai.

  • Chat comandos também podem ser utilizados

Com o personagem selecionado, abra o Console (Crtl+Shift+I / F12) e digite o seguinte código.

_token.actor.data.data

Isso significa que o Token selecionado (_token) vamos pegar o (actor) que o token esta relacionado e buscar os dados (data) e acessar os dados internos do objeto (data).

Com isso podemos acessar as habilidades do nosso personagem e adiciona-las na macro. As habilidades são acessíveis através do:

Os campos disponíveis são:

@abilities, @attributes, @bonuses, @currency, @details, @resources, @skills, @spells, @traits.

Exemplo de como acessar.

Gp: [[ @currency.gp ]]
Passive Perception: [[ @skills.prc.passive ]]

Obs: Somente campos numéricos podem ser utilizados

Além dos atributos também e possível fazer link direto a objetos disponíveis.

  • @Actor[Character Name] (Necessário ser um ator existente, não um entrada do Compendium)
  • @Scene[Scene Name]
  • @Item[Item Name] (Como no ator, precisa ser um Item não uma entrada do Compendium.)
  • @JournalEntry[Journal Entry Name]
  • @Compendium[Entry Name]
  • @RollTable[Roll Table Name]
  • @Macro[Macro Name]

Um exemplo pratico de como utilizar.

@Macro[MyMacro]
@Actor[Akra (Dragonborn Cleric)]
@Item[Ghost Cutlass]
@Scene[B10. Naval Combat Mini-Game]
@JournalEntry[0. Read Me First]
@RollTable[Felcay Random Encounters]

Com essas combinações você tem o poder de criar mensagens compostas para você mesmo com notas para sua campanha como por exemplo, tabela de encontro junto com tabela de possíveis items.

Para mestres alguns detalhes simples economizam bastante o tempo em uma campanha.

Fiquem atentos para a versão Intermediaria onde faremos a introdução a Script Macros, e como transformar isso que aprendemos hoje em algo muito mais poderoso.


Se você gostou deste conteúdo, por favor considere suportar o Nerdweek contribuindo para nosso Patreon, Apoia.se ou se inscrevendo no Youtube através do Premium ou na Twitch.tv através do Prime. Nós também gostaríamos de convida-los para nos seguir no Twitter, Instagram e Facebook compartilhar com seus amigos que amam RPG e juntar-se a nós na nossa comunidade no Discord, onde podemos discutir sobre este e muitos outros assuntos. Muito obrigado por ler!

PS: Eu não concordo em usar JavaScript pra backend, mas isso é uma outra história, não podia deixar de observar, para reclamar comigo por favor vá no @hugoprudente no twitter. :)