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 (
+2
ou-(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 C
próximo a um uso de desejo indica que o desejo não pode mais ser usado. A F
denota 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.
Respostas:
JavaScript (ES6), 379 bytes
Ungolfed
Mostrar snippet de código
Explicação da saída
Os cartões variam de 0 a 21 da seguinte maneira:
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.
Ungolfed
Mostrar snippet de código
fonte
Kotlin , 1173 bytes
É executável também. - Experimente online!
Provavelmente há muitos bugs ... deixe-me saber nos comentários!
fonte
Fool
ouJester
.Java 8,
481480 bytesPortou 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 algumEDIT: já corrigido como sete ou oito erros desde que eu postei isso ..), por favor me avise.Saídas de cartão:
Formato de saída para desejos deixados, desejos usados, inteligência deixada e sinalizador usado:
Explicação:
Experimente aqui ou Experimente aqui com uma saída bem impressa .
fonte
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?