Empate até cair

17

Na Dungeons & Dragons 5th edition (assim como na maioria das outras edições), existe um item mágico chamado Deck of Many Things . É um item incrivelmente poderoso, pois todas as cartas têm efeitos positivos ou negativos muito fortes. Para usar o baralho, um personagem declara um número e depois compra esse número de cartas, com os efeitos sendo aplicados em sequência. Se o personagem não sacar todas as cartas que eles declararam, e já faz pelo menos 1 hora desde que a última carta foi sorteada, o restante das cartas são sorteadas automaticamente para eles e os efeitos aplicados. Depois que cada carta é sorteada, ela é devolvida ao baralho e o baralho é embaralhado.

A seguir, é apresentada uma lista dos efeitos do sorteio de cada uma das cartas 1 :

  • Equilíbrio : sua mente sofre uma alteração dolorosa, fazendo com que seu alinhamento mude. O lícito se torna caótico, o bem se torna mau e vice-versa. Se você é realmente neutro ou desalinhado, este cartão não tem efeito sobre você.
  • Cometa : Se você derrotar sozinho o próximo monstro hostil ou grupo de monstros que encontrar, você ganha pontos de experiência o suficiente para ganhar um nível. Caso contrário, este cartão não terá efeito.
  • Donjon : Você desaparece e fica sepultado em um estado de animação suspensa em uma esfera extradimensional. Tudo o que você estava vestindo e carregando fica para trás no espaço que ocupava quando desapareceu. Você permanece preso até ser encontrado e removido da esfera. Você não pode ser localizado por nenhuma mágica de adivinhação, mas um feitiço de desejo pode revelar a localização da sua prisão. Você não compra mais cartas.
  • Euryale . O rosto semelhante à medusa do cartão o amaldiçoa. Você recebe -2 de penalidade nos testes de resistência enquanto amaldiçoado dessa maneira. Somente um deus ou a magia da carta The Fates pode acabar com essa maldição.
  • The Fates : O tecido da realidade se desenrola e gira de novo, permitindo evitar ou apagar um evento como se nunca tivesse acontecido. Você pode usar a magia da carta assim que você a compra ou a qualquer momento antes de morrer.
  • Chamas : Um demônio poderoso se torna seu inimigo. O diabo procura sua ruína e atormenta sua vida, saboreando seu sofrimento antes de tentar matá-lo. Essa inimizade dura até você ou o diabo morrerem.
  • Tolo : Você perde 10.000 XP, descarta esta carta e compra do baralho novamente, contando os dois sorteios como um dos seus sorteios declarados. Se perder tanto XP causaria a perda de um nível, você perderia uma quantia que deixaria XP suficiente para manter seu nível.
  • Gema : Vinte e cinco jóias no valor de 2.000 po cada ou cinquenta gemas no valor 1.000 po cada aparecem aos seus pés.
  • Idiota : reduza permanentemente sua inteligência em 1d4 + 1 (para uma pontuação mínima de 1). Você pode comprar uma carta adicional além dos seus sorteios declarados.
  • Bobo da corte : Você ganha 10.000 XP ou pode comprar mais duas cartas além dos seus sorteios declarados. Descarte este cartão após desenhá-lo.
  • Chave : Uma arma mágica rara ou mais rara com a qual você é proficiente aparece em suas mãos. O GM escolhe a arma.
  • Cavaleiro : Você ganha o serviço de um lutador de quarto nível que aparece em um espaço que você escolhe a 30 pés de você. O lutador é da mesma raça que você e o serve lealmente até a morte, acreditando que o destino o atraiu para você. Você controla esse personagem.
  • Lua : Você tem a capacidade de lançar o feitiço de desejo 1d3 vezes.
  • Ladino : Um personagem não-jogador da escolha do Mestre se torna hostil a você. A identidade do seu novo inimigo não é conhecida até que o NPC ou outra pessoa a revele. Nada menos que um feitiço de desejo ou intervenção divina pode acabar com a hostilidade do NPC em relação a você.
  • Ruína : Todas as formas de riqueza que você possui ou possui, exceto itens mágicos, são perdidas para você. A propriedade portátil desaparece. Negócios, edifícios e terrenos que você possui são perdidos de uma maneira que altera a realidade menos. Qualquer documentação que comprove que você deve possuir algo perdido neste cartão também desaparece.
  • Caveira . Você convoca um avatar da morte - um esqueleto humanóide fantasmagórico vestido com uma túnica preta esfarrapada e carregando uma foice espectral. Ele aparece em um espaço de escolha do Mestre a menos de três metros de você e o ataca, avisando a todos os outros que você deve vencer a batalha sozinho. O avatar luta até você morrer ou cai para 0 pontos de vida, após o que desaparece. Se alguém tentar ajudá-lo, o ajudante convoca seu próprio avatar da morte. Uma criatura morta por um avatar da morte não pode ser restaurada à vida.
  • Estrela : aumente uma das suas pontuações de habilidade em 2. A pontuação pode exceder 20, mas não pode exceder 24.
  • Sol : você ganha 50.000 XP, e um item maravilhoso (que o GM determina aleatoriamente) aparece em suas mãos.
  • Garras : Todo item mágico que você veste ou carrega se desintegra. Artefatos em sua posse não são destruídos, mas desaparecem.
  • Trono : Você ganha proficiência na habilidade Persuasão e duplica seu bônus de proficiência em testes feitos com essa habilidade. Além disso, você obtém a propriedade legítima de uma pequena fortaleza em algum lugar do mundo. No entanto, a fortaleza está atualmente nas mãos de monstros, que você deve limpar antes de poder reivindicar a fortaleza como sua.
  • Vizir : A qualquer momento que você escolher, dentro de um ano após o sorteio deste cartão, você poderá fazer uma pergunta em meditação e receber mentalmente uma resposta verdadeira a essa pergunta. Além de informações, a resposta ajuda a resolver um problema intrigante ou outro dilema. Em outras palavras, o conhecimento vem com sabedoria sobre como aplicá-lo.
  • The Void : Este cartão preto significa desastre. Sua alma é retirada de seu corpo e contida em um objeto em um local de escolha do Mestre. Um ou mais seres poderosos guardam o lugar. Enquanto sua alma está presa dessa maneira, seu corpo fica incapacitado. Um feitiço de desejo não pode restaurar sua alma, mas o feitiço revela a localização do objeto que o contém. Você não compra mais cartas.

(descrições de cartas copiadas da D&D 5ª edição SRD )

Alguns jogadores especialmente tolos vão comprar um grande número de cartas ao mesmo tempo, esperando conseguir pelo menos um benefício poderoso para equilibrar as cartas prejudiciais. Como se poderia esperar, isso geralmente resulta na morte ou incapacidade do personagem para continuar a comprar cartas.

O desafio

Simule o desenho repetido de um baralho de muitas coisas de 22 cartas , produzindo cada carta retirada, parando apenas quando uma das seguintes condições for atendida:

  • O personagem morre (através do desenho de Caveira ou do desenho de 5 cartas depois de desenhar Chamas ou Ladino , sem o benefício de O Destino ou Lua ativo 2 ).
  • O personagem é incapaz de comprar mais cartas (através dos efeitos de Donjon , Talons , The Void 3 ou a pontuação de Inteligência do personagem caindo para 3 ou menos através do Idiota 4 ).

Regras

  • O alinhamento, nível, XP e posses do personagem que não sejam o baralho não importam.
  • A pontuação de Inteligência do personagem começa em 10.
  • Não há limite máximo para a Inteligência do personagem ou seus usos armazenados de desejo .
  • Os usos do destino não se acumulam.
  • O desejo feitiço tem uma chance de 1 em 3 de causar o caráter de nunca ser capaz de usar o desejo feitiço novamente, além de seu efeito regular. Se isso ocorrer, o personagem não poderá mais usar o feitiço para negar Chamas , Ladino ou Caveira - o poder do Destino é o único recurso.
  • O personagem sempre faz as seguintes escolhas:
    • The Fates and Moon são usados ​​exclusivamente para tirar o personagem de problemas de Skull , Flames e Rogue . O personagem nunca os usará para reverter o efeito de Talons ou o feitiço de desejo não poderá ser lançado novamente, e não poderá usá-los para reverter os efeitos de Donjon e The Void . O personagem usará imediatamente um feitiço de desejo para negar os efeitos de Caveira , Chamas ou desejo Ladino ao desenhar um deles, e sempre terá sucesso. O personagem sempre usará o destino antes de usar .
    • O personagem sempre escolhe comprar mais cartas com os efeitos de Idiota e Bobo da Corte (apropriadamente).
    • O efeito de Estrela é sempre usado para aumentar a Inteligência em 2, para evitar ter que parar de comprar cartas através do efeito de Idiota .
  • O NPC aliado convocado por Knight não é poderoso o suficiente para salvar o personagem de sua morte prematura.
  • Quaisquer aumentos ou diminuições na Inteligência (via Star ou Idiot , respectivamente) devem ser refletidos na saída (observando a alteração ( +2ou -(1d4+1)) ou emitindo a pontuação atual da Inteligência após o efeito).
  • Quaisquer alterações no número de pedidos de desejo que o personagem armazenou devem ser igualmente refletidas na saída, incluindo um desejo que faz com que o personagem não possa usar mais desejo .
  • Todas as seleções aleatórias são de distribuições discretas uniformes.
  • Você pode escolher qualquer conjunto de 22 saídas distintas para as cartas sorteadas - os nomes das cartas não precisam ser usados.
  • Você pode gerar mudanças na Inteligência, desejar usos e desejar tornar-se inutilizável de qualquer maneira consistente e inequívoca de sua escolha.
  • O personagem pode usar o desejo ou o poder de The Fates para evitar a morte se a carta apropriada for comprada como a quinta carta após o sorteio de Rogue ou Flames . Somente se o desejo for inutilizável ou se todos os usos tiverem sido utilizados, bem como The Fates não for sorteado a tempo ou já tiver sido usado, o personagem morrerá.
  • Tolo e Jester são descartados após serem sorteados. Todas as outras cartas são devolvidas imediatamente ao baralho, e o baralho é embaralhado.
  • Se houver várias pilhas ativas de Rogue e / ou Flame , apenas um uso de The Fates ou desejo é necessário para dissipar todas elas.
  • Comprar várias cartas de uma só vez através de Jester ou Fool não avança o contador de turnos em Flames e / ou Rogue .

Exemplos

Cada linha representa uma sequência de empates. Alterações no Intelligence e nos usos desejados são mostrados pelo valor atual entre parênteses. Um Cpróximo a um uso de desejo indica que o desejo não pode mais ser usado. A Fdenota que o poder de The Fates foi usado para evitar a morte. Comentários adicionais são fornecidos para fins explicativos, na forma de comentários no estilo Python.

Void # Can't draw with your soul ripped out of your body.
Throne, Euryale, Rogue, Star (12), Donjon # Can't draw while in suspended animation.
Moon (3), Throne, Sun, Flames (2), Fool, Idiot (6), Flames (1 C), The Fates, Skull (F), Skull # Two uses of wish were used on the two Flames draws. The second use rendered the character unable to use wish again. The Fates was used on the first Skull. When the second Skull came up, there was no way for the character to save himself, so he died.
Idiot (5), Star (7), Idiot (3) # Too dumb to draw.
Sun, Star (12), Talons # Talons destroys the deck.
Fates, Throne, Moon (2), Fates, Skull (F), Skull # Fates doesn't stack
Fates, Flames, Euryale, Fates, Skull, Void
Flames, Comet, Euryale, Gem, Knight, Key # 5 draws after Flames, the hero dies
Rogue, Balance, Throne, Gem, Idiot (8), Vizier, Sun # 5 draws plus one extra from Idiot

Implementação de referência

#!/usr/bin/env python3

import random

deck="""Sun
Moon
Star
Throne
Key
Knight
Void
Flames
Skull
Ruin
Euryale
Rogue
Jester
Vizier
Comet
Fates
Gem
Talons
Idiot
Donjon
Balance
Fool""".split()

random.shuffle(deck)

int_stat = 10
wish_uses = 0
wish_expired = False
fates = False
turn_count = None

while True:
    card = deck.pop()
    if card == "Fates":
        if turn_count is None:
            fates = True
            print(card)
        else:
            turn_count = None
            fates = False
            print("{} (F)".format(card))
    elif card == "Moon":
        wish_uses += random.randint(1, 3)
        if turn_count is None:
            print("{} ({})".format(card, wish_uses))
        else:
            turn_count = None
            wish_uses -= 1
            print("{} ({}) ({})".format(card, wish_uses+1, wish_uses))
    elif card in ["Flames", "Rogue"]:
        if turn_count is None:
            turn_count = 5
        if fates:
            fates = False
            turn_count = None
            print("{} (F)".format(card))
        elif wish_uses > 0 and not wish_expired:
            wish_uses -= 1
            turn_count = None
            wish_now_expired = random.choice([False, False, True])
            print("{} ({}{})".format(card, wish_uses, " C" if wish_expired else ""))
            wish_expired = wish_now_expired
        else:
            print("{}".format(card))
    elif card == "Idiot":
        int_stat -= random.randint(2, 5)
        print("{} ({})".format(card, int_stat))
        if turn_count is not None:
          turn_count += 1
        if int_stat <= 3:
            break
    elif card == "Star":
        int_stat += 2
        print("{} ({})".format(card, int_stat))
    elif card == "Skull":
        if fates:
            fates = False
            turn_count = None
            print("{} (F)".format(card))
        elif wish_uses > 0 and not wish_expired:
            wish_uses -= 1
            turn_count = None
            wish_now_expired = random.choice([False, False, True])
            print("{} ({}{})".format(card, wish_uses, " C" if wish_expired else ""))
            wish_expired = wish_now_expired
        else:
            print(card)
            break
    elif card in ["Donjon", "Void", "Talons"]:
        print(card)
        break
    elif card == "Fool":
        print(card)
        if turn_count is not None:
            turn_count += 1
    elif card == "Jester":
        print(card)
        if turn_count is not None:
            turn_count += 2
    else:
        print(card)
    if card not in ["Fool", "Jester"]:
        deck.append(card)
        random.shuffle(deck)
    if turn_count is not None:
        turn_count -= 1
    if turn_count == 0:
        break

[1]: Tecnicamente, existem duas variantes: uma com 13 cartões e outra com 22 cartões. Estamos preocupados apenas com a versão completa de 22 cartões aqui.

[2]: Flame e Rogue normalmente não matam completamente o personagem, mas presume-se que o NPC hostil tenha encontrado e matado o personagem tolo depois que ele tiver tempo para comprar mais 5 cards. O espectro convocado por Skull é extremamente difícil de combater, e supõe-se que o personagem não vença. Somente a intervenção divina / mágica via The Fates or Moon pode salvar o personagem tolo de sua morte por essas 3 cartas.

[3]: Assumimos que os amigos do personagem são espertos o suficiente para não tentar resgatá-lo e permitir que eles comprem mais cartas.

[4]: Uma pontuação de Inteligência igual a 3 é aproximadamente equivalente a um animal selvagem, que não seria capaz de escolher ativamente o sorteio de cartas.

Mego
fonte
Sandbox
Mego
Pode ser bom incluir mais alguns exemplos de corridas onde: a) os cinco turnos expiram, idealmente com algumas cartas de bônus sorteadas; b) o destino é sorteado duas vezes, com e sem usá-lo no meio.
Martin Ender
Sua implementação de referência não deixa o desejo expirar se for usado no momento em que a Lua é desenhada. E também não verifica lá se eles já expiraram.
Martin Ender
Mais uma coisa: as regras originais de D&D mencionam cartões adicionais para todos os Idiot, Fool e Jester. Suas regras primeiro afirmam que o jogador compra cartas adicionais para Idiot e Jester, mas depois esclarece o contador de regras para Fool e Jester, e sua implementação de referência parece atrair apenas cartas adicionais para Fool e Jester. Você poderia esclarecer / corrigir isso?
Martin Ender
2
@steenbergh Também li sobre ele primeiro, mas " Depois que cada carta é retirada, ela é devolvida ao baralho e o baralho é embaralhado ". Apenas o Louco e o Bobo da Corte serão removidos quando comprados, todo o resto é colocado no baralho novamente e baralhado todas as vezes antes de uma nova carta ser comprada.
11557 Kevin Crijssen em

Respostas:

4

JavaScript (ES6), 379 bytes

for(D=[...Array(21)].map((a,b)=>b),d={},i=10,w=e=f=t=0,F=_=>f=t=o=0,W=_=>{w--,t=0,o=w+(e?' C':''),e=1>r(2)},r=a=>0|Math.random()*a,$=1;$;){for(;d[c=r(22)];);o='',c?3>c?(t&&(t+=c),d[c]=1):4>c?f?F():0<w&&!e?W():$=0:7>c?$=0:9>c?(!t&&(t=5),f?F():0<w&&!e&&W()):10>c?(w+=1+r(2),t?(t=0,o=[w,--w]):o=w):11>c?(i-=2+r(3),o=i,$=3<i):12>c&&(i+=2,o=i):t?F():f=1,console.log(c,o),t&&(t--,$=t)}

Ungolfed

Explicação da saída

Os cartões variam de 0 a 21 da seguinte maneira:

  • 0: Destino
  • 1: Tolo
  • 2: Jester
  • 3: Caveira
  • 4: Donjon
  • 5: Vazio
  • 6: Garras
  • 7: Chamas
  • 8: Ladino
  • 9: Lua
  • 10: Idiota
  • 11: Estrela
  • 12 a 21: Sol, Trono, Chave, Cavaleiro, Ruína, Euryale, Vizier, Cometa, Gema, Equilíbrio

Uma reversão de Skull, Flames ou Rogue via The Fates é indicada com a 0.


JavaScript (ES6), 792 bytes

Versão anterior usando nomes de cartões, antes de descobrir que são permitidas 22 saídas distintas.

d=`Sun Moon Star Throne Key Knight Void Flames Skull Ruin Euryale Rogue Jester Vizier Comet Fates Gem Talons Idiot Donjon Balance Fool`.split` `,i=10,w=0,W=!1,f=!1,t=null,F=()=>{f=!1,t=null,_('F')},U=()=>{w--,t=null,_(w+(W?' C':'')),W=1>r(2)},_=(...a)=>console.log(c+a.map(b=>` (${b})`).join``),r=a=>0|Math.random()*a,$=!0;for(;$;)c=d.splice(r(d.length),1)[0],'Fates'==c?null==t?(f=!0,_()):F():'Moon'==c?(w+=1+r(2),null==t?_(w):(t=null,w--,_(w+1,w))):'Idiot'==c?(i-=2+r(3),_(i),3>=i&&($=!1)):'Star'==c?(i+=2,_(i)):'Flames'==c||'Rogue'==c?(null==t&&(t=5),f?F():0<w&&!W?U():_()):'Skull'==c?f?F():0<w&&!W?U():(_(),$=!1):'Donjon'==c||'Void'==c||'Talons'==c?(_(),$=!1):'Fool'==c?null!==t&&(t+=1):'Jester'==c?null!==t&&(t+=2):_(),['Fool','Jester'].includes(c)||d.push(c),null!==t&&t--,0===t&&($=!1)

Ungolfed

darrylyeo
fonte
2
@Mego, honestamente, eu realmente não entendi tão bem quanto deveria até ver essa resposta, foi bem feito; fácil de entender ao ver os nomes completos. Se você o alterar, poderá manter uma versão com os nomes completos?
Magic Octopus Urn
@MagicOctopusUrn Certamente preservarei a versão atual do nome completo no futuro.
darrylyeo
O @Mego foi direcionado ao OP e dizia apenas "a versão com os nomes dos cartões atuais graficamente facilitou a leitura dessa implementação. Se você cortar os bytes, mantenha-os também, rotulados como 'não destruídos'".
Magic Octopus Urn
@MagicOctopusUrn Atualizado.
darrylyeo
0

Kotlin , 1173 bytes

fun main(args:Array<String>){val d="Sun Moon Star Throne Key Knight Void Flames Skull Ruin Euryale Rogue Jester Vizier Comet Fates Gem Talons Idiot Donjon Balance Fool".split(" ");var c=(Math.random()*22).toInt();var i=10;var u=0;var e=false;var f=false;var t=1;r@while(true){when(c){15->{if(t>=1){f=true;println(c)}else{t = 1;f = false;println("${d[c]} (F)")}}1->{u+=(Math.random()*3).toInt()+1;if(t>=1){println("${d[c]} ($u)")}else{t=1;u-=1;println("${d[c]} (${u + 1}) ($u)")}}in arrayOf(7,11)->{if(t>=1){t=5};if(f){f=false;t=1;println("${d[c]} (F)")}else if(u>0&&!e){u-=1;t=1;val n=(Math.random()*3).toInt();println("${d[c]} ($u$e)");e=n==0}else{println(d[c])}}18->{i-=(Math.random()*4).toInt()+2;println("${d[c]} ($i)");if (t!=0){t+=1};if(i<=3){break@r}}2->{i+=2;println("${d[c]} ($i)")}8->{if(f){f=false;t=1;println("${d[c]} (F)")}else if(u>0&&!e){u-=1;t=1;val n=(Math.random()*3).toInt();println("${d[c]} ($u$e)");e=n==0}else{println(c);break@r}}in arrayOf(6,17,19)->{println(d[c]);break@r}21->{println(d[c]);if(t!=0){t += 1}}12->{println(d[c]);if(t!=0){t+=2}}else->{println(d[c])}};if((c !in arrayOf(12,21))){c=(Math.random()*23).toInt()};if(t!=0){t-=1}else{break}}}

É executável também. - Experimente online!

Provavelmente há muitos bugs ... deixe-me saber nos comentários!

Trenton Telge
fonte
Impressão em loop infinito Foolou Jester.
precisa saber é o seguinte
0

Java 8, 481 480 bytes

v->{String r="";for(int i=10,d=22,c=d,F=0,t=0,w=0,W=0,j=Math.random()<.5?1:2;;c=d){c*=Math.random();r+=" "+c;if(c<1){F=1;r+=t>0?"F"+(F=0):"";t=-1;}else if(c<2){w+=Math.random()*3+1-(t>0?1:0);t=-1;}else if(c<4)t=F>0?-1:t<1?6:t;else if(c<5)t=F*w*W<1?1:-1;else if(c>19){t+=t>0?j:0;j=j%2+1;d--;}if(c>1&c<5&w*W>0){w--;W=(int)(Math.random()*3)%2;}i-=c==5?Math.random()*3+2:c==6?-2:0;r+=c>1&c<5&F>0?"F"+(F=0):c>0&c<5?"w"+w+"W"+W:c>4&c<7?"i"+i:"";if(--t==0|(c==5&i<4)|c>6&c<10)return r;}}

Portou a implementação de referência do Python3 em Java e depois a reduziu. Definitivamente pode ser mais jogado, mas esta é apenas uma versão inicial para garantir que eu fiz tudo correto.

Se alguém detectar algum erro ( não me surpreenderia se houver algum EDIT: já corrigido como sete ou oito erros desde que eu postei isso ..), por favor me avise.

Saídas de cartão:

0: Destinos
1: Lua
2: Chamas
3: Ladino
4: Crânio
5: Idiota
6: Estrela
7/ 8/ 9: Donjon / Void / Talons
20 / 21: Tolo / Bobo da corte

10-19: tudo o resto (Sol / Trono / Chave / Cavaleiro / Ruína / Euryale / Vizier / Cometa / Gema / Equilíbrio)

Formato de saída para desejos deixados, desejos usados, inteligência deixada e sinalizador usado:

4w1W0
4       // Card drawn
 w1     // New amount of wishes left
   W0   // Whether the wishes used flag is active (1) or inactive (0)

5i6
5       // Card drawn
 i6     // New intelligence

0F0
0       // Card drawn
 F0     // Fates used

Explicação:

Experimente aqui ou Experimente aqui com uma saída bem impressa .

v->{                       // Method with empty unused parameter and String return-type
  String r="";             //  Result-String, starting empty
  for(int i=10,            //  Intelligence
          d=22,            //  Amount of cards in the deck, starting at 22
          c=d,             //  Current card drawn
          F=0,             //  Fates flag
          t=0,             //  Turn-counter
          w=0,             //  Wishes left
          W=0,             //  Wishes used flag
          j=Math.random()<.5?1:2;
                           //  Whether Jester/Fool is drawn first of the two
      ;                    //  Loop indefinitely
       c=d){               //    After every iteration, shuffle the deck (reset `c`)
    c*=Math.random();      //   Draw a random 0-21 card (or less if Fool/Jester is gone)
    r+=" "+c;              //   Append the result with a space and this card
    if(c<1){               //   If the card was Fates:
      F=1;                 //    Set the Fates-flag to active
      r+=t>0?              //    If the turn-counter is larger than 0:
          "F"+(F=0)        //     Append that Fates was used (and make Fates inactive)
         :                 //    Else:
          "";              //     Append nothing
      t=-1;}               //    Set the turn-counter to -1 (none)
    else if(c<2){          //   If the card was Moon instead:
      w+=Math.random()*3+1 //    Increase the wishes by 1-3 randomly
         -(t>0?            //    Then, if the turn-counter is larger than 0
            1              //     Subtract 1 from the amount of wishes
           :               //    Else:
            0);            //     Leave the wishes the same
      t=-1;}               //    Set the turn-counter to -1 (none)
    else if(c<4)           //   If the card was Flames or Rogue instead:
      t=F>0?               //    If the Fates-flag is active:
         -1                //     Set the turn-counter to -1 (none)
        :t<1?              //    Else-if the turn-counter is 0 or -1 (none):
         6                 //     Set the turn-counter to 6
        :                  //    Else:
         t;                //     Leave the turn-counter the same
    else if(c<5){          //   If the card was Skull instead:
      t=F                  //    If the Fates-flag is inactive
        *w                 //    or the amount of wishes is smaller than 1
        *W<1?              //    or the wishes used flag is inactive
         1                 //     Set the turn-counter to 1
        :                  //    Else:
         -1;               //     Set the turn-counter to -1 (none)
      F=0;}                //    Then set the Fates-flag to inactive
    else if(c>19){         //   If the card was Fool or Jester instead:
      t+=t>0?              //    If the turn-counter was not 0 or -1 (none):
          j                //     Increase either by 1 (Fool) or 2 (Jester)
         :                 //    Else:
          0;               //     Leave the turn-counter the same
      j=j%2+1;             //    Fix `j` (2->1; 1->2)
      d--;}                //    And remove the Fool/Jester from the Deck
    if(c>1&c<5             //   If the card drawn was Flames, Rogue or Skull,
       &w                  //   and the amount of wishes is at least 1,
        *W>0){             //   and the wishes used flag is active
      w--;                 //    Decrease the amount of wishes by 1
      W=(int)(Math.random()*3)%2;}
                           //    And set the wishes used flag to one of (0,0,1)
    i-=c==5?               //   If the card drawn was Idiot:
        Math.random()*3+2  //    Decrease the intelligence by 2-5 randomly
       :c==6?              //   Else-if the card drawn was Star:
        -2                 //    Increase the intelligence by 2
       :                   //   Else:
        0;                 //    Leave the intelligence the same
    r+=c>1&c<5             //   If the card drawn was Flames, Rogue or Skull,
       &F>0?               //   and Fates is active
        "F"+(F=0)          //    Append that Fates was used (and make Fates inactive)
       :c>0&c<5?           //   Else-if the card drawn was Moon, Flames, Rogue or Skull:
        "w"+w+"W"+W        //    Append the amount of wishes left and wishes used flag
       :c>4&c<7?           //   Else-if the card drawn was Idiot or Star:
        "i"+i              //    Append the amount of intelligence left
       :                   //   Else:
        "";                //    Append nothing
    if(--t                 //   Decrease the turn-counter by 1
          ==0              //   And if the turn-counter is now 0,
       |(c==5              //   or the card drawn was Idiot,
             &i<4)         //   and the intelligence dropped below 4,
       |c>6&c<10)          //   or the card drawn was Donjon, Void or Talons:
         return r;         //    Return the result of the game
  }                        //  End of loop
}                          // End of method
Kevin Cruijssen
fonte
1
Jester; Fates; Ruin; Euryale; Gem; Ruin; Ruin; Rogue(Fates used) Gem; Balance; Throne; Rogue(wishes left: 0; wishes used: 0); Rogue(wishes left: 0; wishes used: 0);Por que parou?
FrownyFrog
@FrownyFrog Thanks! Deve ser corrigido agora. Se você encontrar outros erros, me avise. :)
Kevin Cruijssen