Recursos de lógica para achievements
Link para o texto em inglês: Achievement Logic Features
Existem várias ferramentas e opções disponíveis para o desenvolvedor, saber como utilizá-las adequadamente melhorará a qualidade de seus sets. Essas ferramentas/opções podem ser usadas no Achievement Editor:

Para ajuda sobre esses, o nosso servidor do Discord estará sempre aberto para ajudar.
Valores Delta
Um valor Delta é o valor do frame anterior.
Exemplos de como ele pode ser usado:
- Detectar se o nível foi aumentado:
level > delta level. Significa que "o nível atual é maior que o nível do frame anterior". - Detectar danos:
health < delta health. Significa que "a saúde atual é menor do que a saúde do frame anterior". Ou você pode apenas tornar o valor do frame anterior um requisito.delta health = 1significa que "o valor do frame anterior para a saúde deve ser 1". Você pode ver como isso funciona no Exemplos Reais
Hit Counts
No Achievement Editor, o campo do lado direito é Hit Count.
Zero é o valor padrão. Isso significa que a condição deve ser verdadeira quando a conquista aparecer.
Se você definir manualmente uma contagem (hit), por exemplo 1, significa que a condição deve ser verdadeira por pelo menos 1 frame e, uma vez que a contagem de hits seja atendida, ela não precisa ser atendida novamente em outro momento.
ATENÇÃO: se uma condição tiver uma contagem de hits e atingir o número necessário, esta condição não é mais testada. Ela é verdadeira e permanece verdadeira, A MENOS que você tenha um ResetIf, o qual discutiremos abaixo.
Você pode ver como isso funciona no Exemplos Reais
Special Flags
No Achievement Editor, é o campo intitulado como Special?.
Essas flags condicionais só funcionam se você definir uma contagem de hits para uma condição.
PauseIf
Isso pausará a atividade para todas as condições no mesmo grupo.
Nota: tenha em mente que isso não irá pausar as condições em outros grupos.
O PauseIf é usado para pausar a contagem de hits em uma situação específica (como pausar o jogo). É usado quando você deseja manter a contagem de hits previamente conquistada, mas não deseja reiniciá-la quando alguém simplesmente faz uma pausa no jogo, por exemplo.
ResetIf
Isso irá zerar a contagem de hits para todas condições em que você definiu uma contagem de hits. Ele é muito mais comum de usar do que PauseIf
Nota: Ao contrário do PauseIf, le irá zerar as condições em todos os grupos
Você pode ver como isso funciona no Real Examples
AddSource
Quando uma condição tem a flag AddSource o valor daquele endereço de memória é adicionado ao valor do endereço na condição logo abaixo, e a comparação é feita na condição abaixo daquela com o AddSource. Isso pode soar um pouco confuso, mas o exemplo a seguir vai esclarecer como funciona:

Neste exemplo o valor em 0x8010 será adicionado ao valor em 0x8020 e a comparação é se esta soma é maior ou igual a zero.
Se o valor em 0x8010 é 1 e o valor em 0x8020 é 2, a comparação será 1 + 2 > 0, ou 3 > 0.
Nota: todos os campos de comparação na condição com a flag AddSource são ignorados.
Tentando resumir esta explicação com uma imagem:

Nota: você pode usar AddSource para somar mais endereços, como no exempo abaixo:

SubSource
Funciona muito semelhante ao AddSource, porém o SubSource faz o valor naquele endereço de memória ser negativo.
Nota 1: SubSource NÃO é um flag de subtração. Ele apenas torna o valor negativo.
Nota 2: A linha final (sem AddSource ou SubSource) ainda é adicionada para a comparação final.
Usando aquele exemplo de uso de AddSource example, se nós o substituíssemos por SubSource e com os mesmos valores (valor(0x8010) = 1 e valor(0x8020) = 2), a comparação seria -1 + 2 > 0, or 1 > 0.
AddHits
Também funciona de maneira de similar ao AddSource, porém relacionado aos hitcounts.
O AddHits adiciona o hitcount da condição atual à próxima condição. O hitcount total a ser checado será aquele definido na condição logo após a última condição com AddHits. Se a condição logo após o último AddHits não tiver um hitcount definido, todas as condições com AddHits serão ignoradas.
Diferentemente do AddSource, todos os campos são usados numa condição AddHits, inclusive os campos de comparação. Se uma condição é verdadeira, o hitcount para esta condição é incrementada (e parará de incrementar se assim que o número de hitcount definido for atingido).
As condições com AddHits não precisam ser verdadeiras para a conquista disparar. Porém primeira condição após o último AddHits, sim, precisa ser verdadeira.
Groups
Os achievements podem ter grupos adicionados a eles que podem atuar como requisitos alternativos para desbloquear um achievement. Estes são chamados de Alt Groups.
Uma coisa extremamente importante a notar: para uma conquista desbloquear, deve ter o Core group E pelo menos um Alt group ser verdadeiro. Se não houver nenhum grupo Alt presente, apenas as condições do Core group's precisam ser verdadeiras.
Dica: devido ao grupo Core sempre precisar ser verdadeiro, normalmente você colocaria lá condições que sejam à todos os requisitos alternativos. No entanto, um truque que você pode usar para basicamente para ignorar a necessidade de um grupo Core é dar-lhe uma condição que é sempre verdadeira, como:
Mem 0x0001 = Mem 0x0001
Como o grupo Core agora é sempre verdadeiro, agora você pode se concentrar em diferenciar os grupos Alt.
