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 (
+2
o-(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 C
al lado de un deseo denota que el deseo ya no se puede usar. A F
denota 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.
Respuestas:
JavaScript (ES6), 379 bytes
Sin golf
Mostrar fragmento de código
Explicación de salida
Las tarjetas van de 0 a 21 de la siguiente manera:
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.
Sin golf
Mostrar fragmento de código
fuente
Kotlin , 1173 bytes
También es ejecutable. - Pruébalo en línea!
Probablemente haya muchos errores ... ¡házmelo saber en los comentarios!
fuente
Fool
oJester
.Java 8,
481480 bytesPorté 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 algunaEDICIÓN: ya lo solucioné como siete u ocho errores desde que publiqué esto ...), hágamelo saber.Salidas de tarjeta:
Formato de salida para los deseos restantes, los deseos utilizados, la inteligencia restante y el indicador utilizado:
Explicación:
Pruébelo aquí o Pruébelo aquí con una salida impresa bonita .
fuente
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?