Dibuja hasta caer

17

En Dungeons & Dragons 5th edition (así como en la mayoría de las otras ediciones), existe un objeto mágico llamado Deck of Many Things . Es un elemento increíblemente poderoso, ya que todas las cartas tienen efectos positivos o negativos muy fuertes. Para usar el mazo, un personaje declara un número y luego dibuja hasta ese número de cartas, con los efectos aplicados en secuencia. Si el personaje no roba todas las cartas que declararon, y ha pasado al menos 1 hora desde que se sacó la última carta, el resto de las cartas se roban automáticamente para ellos y se aplican los efectos. Después de que se roba cada carta, se devuelve al mazo y se baraja el mazo.

La siguiente es una lista de los efectos de robar cada una de las cartas 1 :

  • Equilibrio : su mente sufre una alteración desgarradora, lo que hace que su alineación cambie. Legal se vuelve caótico, el bien se vuelve malo y viceversa. Si eres verdaderamente neutral o no alineado, esta carta no tiene ningún efecto en ti.
  • Cometa : si solo derrotas al siguiente monstruo hostil o grupo de monstruos que encuentres, obtienes puntos de experiencia lo suficiente como para ganar un nivel. De lo contrario, esta carta no tiene efecto.
  • Donjon : Desaparece y queda sepultado en un estado de animación suspendida en una esfera extradimensional. Todo lo que llevabas y llevabas queda atrás en el espacio que ocupabas cuando desapareciste. Permaneces preso hasta que te encuentran y te sacan de la esfera. No puedes ser localizado por ninguna magia de adivinación, pero un hechizo de deseo puede revelar la ubicación de tu prisión. No robas más cartas.
  • Euryale . El rostro medusa de la carta te maldice. Recibes una penalización de -2 en tiros de salvación mientras estás maldecido de esta manera. Solo un dios o la magia de la carta The Fates puede poner fin a esta maldición.
  • The Fates : el tejido de Reality se desenreda y gira de nuevo, lo que te permite evitar o borrar un evento como si nunca hubiera sucedido. Puedes usar la magia de la carta tan pronto como la saques o en cualquier otro momento antes de morir.
  • Llamas : un poderoso demonio se convierte en tu enemigo. El diablo busca tu ruina y plaga tu vida, saboreando tu sufrimiento antes de intentar matarte. Esta enemistad dura hasta que tú o el diablo mueran.
  • Tonto : Pierdes 10,000 XP, descarta esta carta y roba del mazo nuevamente, contando ambos sorteos como uno de tus sorteos declarados. Si perder esa cantidad de XP te hace perder un nivel, en cambio, pierdes una cantidad que te deja con la cantidad de XP suficiente para mantener tu nivel.
  • Gema : Veinticinco piezas de joyería por valor de 2,000 gp cada una o cincuenta gemas por valor de 1,000 gp cada una aparecen a tus pies.
  • Idiota : reduce permanentemente tu inteligencia en 1d4 + 1 (a un puntaje mínimo de 1). Puedes robar una carta adicional más allá de tus sorteos declarados.
  • Bufón : Obtienes 10,000 XP, o puedes robar dos cartas adicionales más allá de tus sorteos declarados. Descarta esta carta después de robarla.
  • Clave : un arma mágica rara o rara con la que eres competente aparece en tus manos. El GM elige el arma.
  • Caballero : obtienes el servicio de un luchador de 4to nivel que aparece en un espacio que eliges a menos de 30 pies de ti. El luchador es de la misma raza que tú y te sirve fielmente hasta la muerte, creyendo que el destino lo ha atraído hacia ti. Tú controlas a este personaje.
  • Luna : Se te otorga la habilidad de lanzar el hechizo de deseo 1d3 veces.
  • Pícaro : un personaje que no sea jugador elegido por el DJ se vuelve hostil hacia ti. La identidad de tu nuevo enemigo no se conoce hasta que el NPC o alguien más lo revele. Nada menos que un hechizo de deseo o intervención divina puede poner fin a la hostilidad del PNJ hacia ti.
  • Ruina : todas las formas de riqueza que llevas o posees, excepto los objetos mágicos, se pierden para ti. La propiedad portátil desaparece. Las empresas, los edificios y los terrenos que posee se pierden de una manera que altera menos la realidad. Cualquier documentación que demuestre que debe poseer algo perdido en esta tarjeta también desaparece.
  • Cráneo . Invocas a un avatar de la muerte: un esqueleto humanoide fantasmal vestido con una túnica negra hecha jirones y que lleva una guadaña espectral. Aparece en un espacio de elección del GM a menos de 10 pies de ti y te ataca, advirtiendo a todos los demás que debes ganar la batalla solo. El avatar lucha hasta que mueres o cae a 0 puntos de golpe, con lo que desaparece. Si alguien intenta ayudarte, el ayudante convoca a su propio avatar de muerte. Una criatura asesinada por un avatar de la muerte no puede ser devuelta a la vida.
  • Estrella : aumenta uno de tus puntajes de habilidad en 2. El puntaje puede exceder 20 pero no puede exceder 24.
  • Sol : Obtienes 50,000 XP, y un objeto maravilloso (que el GM determina al azar) aparece en tus manos.
  • Garras : cada objeto mágico que llevas o llevas se desintegra. Los artefactos en tu posesión no se destruyen, pero desaparecen.
  • Trono : Ganas competencia en la habilidad Persuasión y duplicas tu bonificación de habilidad en los controles realizados con esa habilidad. Además, obtienes la propiedad legítima de una pequeña fortaleza en algún lugar del mundo. Sin embargo, la fortaleza está actualmente en manos de monstruos, que debes eliminar antes de poder reclamar la fortaleza como tuya.
  • Visir : En cualquier momento que elijas dentro de un año de haber sacado esta carta, puedes hacer una pregunta en meditación y recibir mentalmente una respuesta veraz a esa pregunta. Además de la información, la respuesta lo ayuda a resolver un problema desconcertante u otro dilema. En otras palabras, el conocimiento viene con sabiduría sobre cómo aplicarlo.
  • El vacío : esta carta negra significa desastre. Su alma es extraída de su cuerpo y contenida en un objeto en un lugar de elección del GM. Uno o más seres poderosos guardan el lugar. Mientras su alma está atrapada de esta manera, su cuerpo está incapacitado. Un hechizo de deseo no puede restaurar tu alma, pero el hechizo revela la ubicación del objeto que lo contiene. No robas más cartas.

(descripciones de tarjetas copiadas del D&D 5th edition SRD )

Algunos jugadores especialmente tontos sacarán una gran cantidad de cartas a la vez, con la esperanza de obtener al menos una bendición poderosa para equilibrar las cartas perjudiciales. Como era de esperar, esto a menudo resulta en la muerte del personaje o la incapacidad de continuar robando cartas.

El reto

Simule el sorteo repetido de un Mazo de muchas cosas de 22 cartas , sacando cada carta robada, deteniéndose solo cuando se cumple una de las siguientes condiciones:

  • El personaje muere (al robar Skull o robar 5 cartas después de robar Flames o Rogue , sin el beneficio de The Fates o Moon active 2 ).
  • El personaje es incapaz de robar más cartas (a través de los efectos de Donjon , Talons , The Void 3 o la puntuación de inteligencia del personaje que cae a 3 o menos a través de Idiot 4 ).

Reglas

  • La alineación, el nivel, el XP y las posesiones del personaje que no sean el mazo no importan.
  • La puntuación de inteligencia del personaje comienza en 10.
  • No hay límite máximo para la Inteligencia del personaje o sus usos acumulados de deseo .
  • Los usos de The Fates no se acumulan.
  • El hechizo de deseo tiene una probabilidad de 1 en 3 de hacer que el personaje nunca más pueda usar el hechizo de deseo , además de su efecto regular. Si esto ocurre, el personaje ya no puede usar el hechizo para negar llamas , pícaro o calavera ; el poder de The Fates es su único recurso.
  • El personaje siempre toma las siguientes decisiones:
    • The Fates y Moon solo se usan para sacar al personaje de problemas de Skull , Flames y Rogue . El personaje nunca los usará para revertir el efecto de las Garras o el hechizo de deseo que no se puede lanzar de nuevo, y no puede usarlos para revertir los efectos de Donjon y The Void . El personaje usará inmediatamente un hechizo de deseo para negar los efectos de Calavera , Llamas o Pícaro al dibujar uno de ellos, y siempre tendrá éxito. El personaje siempre usará The Fates antes de usardesee .
    • El personaje siempre elige robar más cartas con los efectos de Idiota y Bufón (apropiadamente).
    • El efecto de Estrella siempre se usa para aumentar la Inteligencia en 2, para evitar tener que detener el robo de cartas a través del efecto de Idiota .
  • El aliado de la APN convocado por Knight no es lo suficientemente poderoso como para salvar al personaje de su desaparición prematura.
  • Cualquier aumento o disminución de Inteligencia (a través de Star o Idiot , respectivamente) debe reflejarse en la salida (ya sea notando el cambio ( +2o -(1d4+1)), o emitiendo la puntuación de Inteligencia actual después de que tenga lugar el efecto).
  • Cualquier cambio en el número de usos de deseo que el personaje ha almacenado debe reflejarse de manera similar en la salida, incluido un deseo que hace que el personaje ya no pueda usar deseo .
  • Todas las selecciones aleatorias son de distribuciones discretas uniformes.
  • Puede elegir cualquier conjunto de 22 salidas distintas para las tarjetas extraídas; no es necesario usar los nombres de las tarjetas.
  • Puede generar cambios en Inteligencia, usos de deseo y deseo de volverse inutilizable de cualquier manera coherente y sin ambigüedades de su elección.
  • El personaje puede usar el deseo o el poder de The Fates para evitar la muerte si la carta apropiada se roba como la quinta carta después de robar Rogue o Flames . Solo si el deseo no se puede usar o si se han utilizado todos los usos, y si The Fates no se dibuja a tiempo o ya se ha utilizado, el personaje morirá.
  • El tonto y el bufón se descartan después de que se dibujan. Todas las demás cartas se devuelven inmediatamente al mazo, y el mazo se baraja.
  • Si hay varias acumulaciones de Rogue y / o Flame activas, solo es necesario un uso de The Fates o wish para disiparlas a todas.
  • Robar varias cartas a la vez a través de Jester o Fool no avanza el contador de turnos en Flames y / o Rogue .

Ejemplos

Cada línea representa una secuencia de dibujos. Los cambios en los usos de Inteligencia y deseo se muestran entre paréntesis por el valor actual. Un uso Cal lado de un deseo denota que el deseo ya no se puede usar. A Fdenota que el poder de The Fates se usó para evitar la muerte. Se proporcionan comentarios adicionales con fines explicativos, en forma de comentarios 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

Implementación de referencia

#!/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]: Técnicamente, hay dos variantes: una con 13 cartas y otra con 22 cartas. Aquí solo nos preocupa la versión completa de 22 cartas.

[2]: Flame y Rogue normalmente no matan directamente al personaje, pero se supone que el PNJ hostil encontró y mató al personaje tonto después de que tienen tiempo para robar 5 cartas más. El espectro convocado por Skull es extremadamente difícil de combatir, y se supone que el personaje no gana. Solo la intervención divina / mágica a través de The Fates o Moon puede salvar al personaje tonto de su muerte con estas 3 cartas.

[3]: Asumimos que los amigos del personaje son lo suficientemente inteligentes como para no tratar de rescatarlo y permitirles robar más cartas.

[4]: Una puntuación de Inteligencia de 3 es aproximadamente equivalente a un animal salvaje, que no sería capaz de elegir activamente robar cartas.

Mego
fuente
Sandbox
Mego
Podría ser bueno incluir más ejemplos de carreras donde a) los cinco turnos caducan, idealmente con algunas cartas de bonificación extraídas en el medio, b) el destino se extrae dos veces, con y sin usarlo en el medio.
Martin Ender
Su implementación de referencia no permite que el deseo caduque si se usa en el momento en que se dibuja la Luna. Y tampoco comprueba allí si ya han expirado.
Martin Ender
Una cosa más: las reglas originales de D&D mencionan tarjetas adicionales para todos los idiotas, tontos y bufones. Tus reglas primero establecen que el jugador roba una carta adicional para Idiot y Jester, pero luego aclara el contador de reglas para Fool and Jester, y tu implementación de referencia parece robar solo cartas adicionales para Fool y Jester. ¿Podría aclarar / arreglar esto?
Martin Ender
2
@steenbergh También lo leí al principio, pero " Después de que se roba cada carta, se devuelve al mazo y se baraja el mazo ". Solo el tonto y el bufón se eliminarán cuando se extraiga, todo lo demás se colocará en el mazo nuevamente y se reorganizará cada vez que se robe una nueva carta.
Kevin Cruijssen

Respuestas:

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)}

Sin golf

Explicación de salida

Las tarjetas van de 0 a 21 de la siguiente manera:

  • 0: destinos
  • 1: tonto
  • 2: bufón
  • 3: cráneo
  • 4: Donjon
  • 5: vacío
  • 6: Garras
  • 7: llamas
  • 8: pícaro
  • 9: luna
  • 10: idiota
  • 11: estrella
  • 12 a 21: Sol, Trono, Llave, Caballero, Ruina, Euryale, Visir, Cometa, Gema, Equilibrio

Una inversión de Skull, Flames o Rogue a través de The Fates se denota con a 0.


JavaScript (ES6), 792 bytes

Versión anterior con nombres de tarjetas, antes de descubrir que se permiten 22 salidas 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)

Sin golf

Darrylyeo
fuente
2
@Mego honestamente, realmente no lo entendí tan bien como debería hasta que vi esta respuesta, estaba bien hecho; fácil de entender al ver los nombres completos. Si lo cambia, ¿puede mantener una versión con los nombres completos?
Magic Octopus Urn
@MagicOctopusUrn Ciertamente, me aseguraré de preservar la versión actual de nombre completo en el futuro.
darrylyeo
@Mego estaba dirigido a OP, y solo decía "la versión con los nombres reales de las tarjetas deletreadas por completo hizo que esta implementación fuera fácil de leer. Si quitas los bytes, mantén esta también, etiquetada como" sin golf ".
Urna mágica de pulpo el
@MagicOctopusUrn Actualizado.
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}}}

También es ejecutable. - Pruébalo en línea!

Probablemente haya muchos errores ... ¡házmelo saber en los comentarios!

Trenton Telge
fuente
Impresión de bucle infinito Foolo Jester.
FrownyFrog el
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;}}

Porté la implementación de referencia de Python3 en Java, y luego la bajé. Definitivamente se puede jugar más, pero esta es solo una versión inicial para asegurarme de que hice todo bien.

Si alguien detecta algún error ( no me sorprendería si hay alguna EDICIÓN: ya lo solucioné como siete u ocho errores desde que publiqué esto ...), hágamelo saber.

Salidas de tarjeta:

0: Destinos
1: Luna
2: Llamas
3: Pícaro
4: Cráneo
5: Idiota
6: Estrella
7/ 8/ 9: Donjon / Void / Talons
20/ 21: Fool / Jester

10-19: todo lo demás (Sol / Trono / Llave / Caballero / Ruina / Euryale / Visir / Cometa / Gema / Balance)

Formato de salida para los deseos restantes, los deseos utilizados, la inteligencia restante y el indicador utilizado:

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

Explicación:

Pruébelo aquí o Pruébelo aquí con una salida impresa bonita .

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
fuente
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 qué se detuvo?
FrownyFrog el
@FrownyFrog ¡Gracias! Debería arreglarse ahora. Si detecta algún otro error, avíseme. :)
Kevin Cruijssen