-
Notifications
You must be signed in to change notification settings - Fork 4
Criando macros
Vejamos agora a última funcionalidade do ygofab make
, o uso de macros. O que seria isso? Esse nome veio emprestado dos macros de C/C++ (#define
), e aqui eles funcionam de forma similar. Macros são pedaços de texto representados por um nome, ou seja, você digita um texto uma veez só, e se refere a ele em vários locais apenas com o nome dele.
Ainda muito abstrato, certo? Pense na seguinte situação. Muitas cartas tem efeitos limitados a uso em uma vez por turno, chamado por vezes em inglês como "hard once per turn", e essa restrição é escrita da forma: Você só pode usar 1 efeito de "Nome da Carta" por turno e apenas uma vez por turno.
Nós poderíamos fazer disso um macro, para que não precisemos copiar e colar esse texto toda hora. Vamos chamá-lo de HOPT
(hard once per turn) e definí-lo assim:
[macro]
HOPT = '''Você só pode usar 1 efeito de "Nome da Carta" por turno e apenas uma vez por turno'''
Agora podemos usar isso num efeito de carta. Mas como? Basta digitar ${}
e colocar o nome do macro entre as chaves:
[[card]]
id = 102345681
name = "Fabrick Teste"
set = "fabrick"
type = "spell continuous"
effect = '''Escolha 1 card de seu oponente: Destrua-o. ${HOPT}.'''
Você deve ter notado, no entando, que o "Nome da Carta"
no macro não vai mudar. Bem, felizmente, um macro pode receber texto como argumentos (como se fosse uma função) e usá-los em partes específicas do seu próprio texto, sendo isso denotado por $1
(indicando o primeiro argumento), $2
(indicando o segundo argumento), e assim em diante. Pode não haver nenhum argumento também, como já foi visto. Para separar os argumentos, qualquer caractere especial pode ser usado, exceto $
, {
e }
. |
pode ser usado para isso na maioria das vezes, visto que os textos das cartas não constuam incluir esse caractere. Vamos então mudar nosso exemplo para:
[macro]
HOPT = '''Você só pode usar 1 efeito de "$1" por turno e apenas uma vez por turno'''
[[card]]
id = 102345681
name = "Fabrick Teste"
set = "fabrick"
type = "spell continuous"
effect = '''Escolha 1 card de seu oponente: Destrua-o. ${HOPT|Fabrick Teste}.'''
Agora, esse efeito se tornará Escolha 1 card do seu oponete: Destrua-o. Você só pode usar 1 efeito de "Fabrick Teste" por turno e apenas uma vez por turno.
Outros exemplos de texto repetitivo que poderiam ser trocados por macros são os efeitos de Monstros Espírito, Toon, Gêmeos, ou União, ou seus archetypes personalizados poderiam ter efeitos em comum também.
Macros podem ser usados em qualquer situação em que uma string seria aceita, inclusive dentro de outros macros. Recursividade é permitida, porém não pode ser cíclica (ou seja, quando dois ou mais macros dependem um do outro mutuamente), se não o texto final não poderia ser produzido.