Tenho dificuldade em lembrar de tudo o que tenho que fazer ao subir de nível um personagem de D&D. Por qualquer motivo, uma das coisas que me causa problemas é descobrir qual deve ser o novo valor máximo da HP. Para esse desafio, você escreverá um programa ou função para calcular o valor correto automaticamente.
Terminologia
A primeira coisa que você precisa saber para calcular o HP máximo é o "modificador de Constituição". Cada caractere DND possui seis pontuações de habilidades inteiras, incluindo uma para Constituição. O único conhecimento relevante necessário para esse desafio é como a pontuação da habilidade de Constituição afeta outra estatística, que é o modificador de Constituição. Em resumo, o modificador é igual a floor( (ability_score - 10) / 2 )
. Os aventureiros só podem ter notas de habilidade de 1 a 20, inclusive. Seu código nunca precisará lidar com pontuações fora desse intervalo, o que também significa que nunca precisará lidar com um modificador menor que -5 ou maior que +5. Embora o modificador de Constituição possa mudar à medida que o caractere sobe de nível, seus efeitos sobre a HP são aplicados retroativamente, portanto, apenas seu valor atual é necessário para calcular o máximo de HP atual.
(Isso é totalmente irrelevante para o desafio, mas se você estiver curioso sobre como isso afeta o HP máximo: Você pode assumir que o talento "Difícil" adiciona 2 ao modificador de Constituição de um personagem para fins de cálculo da HP, pois é efetivamente o que ele faz Esse não é o texto da façanha, mas a matemática é exatamente a mesma. Você não precisa lidar com essa façanha na sua resposta.)
Em seguida, toda classe tem um tipo de "dado de batida" atribuído, envolvido no cálculo da HP. A tabela a seguir lista os dados de acerto para cada classe.
Sorcerer: d6
Wizard: d6
Bard: d8
Cleric: d8
Druid: d8
Monk: d8
Rogue: d8
Warlock: d8
Fighter: d10
Paladin: d10
Ranger: d10
Barbarian: d12
Finalmente, o nível do personagem. Tudo o que isso afeta é quantas vezes adicionar um valor ao total em execução na seção a seguir. O nível de um personagem é um número inteiro de 1 a 20, inclusive 1 . Seu código nunca precisará lidar com um nível fora desse intervalo. Para atingir o nível n
, um personagem começa no nível 1 e sobe de nível n-1
. Por exemplo, um personagem de nível 3 chegou onde está sendo um personagem de nível 1 e subiu de nível duas vezes.
Como calcular o HP máximo
O HP máximo de um personagem é igual ao HP no nível 1 mais a soma do aumento que eles receberam em cada nível.
No nível 1
No nível 1, o HP de um personagem é igual à maior jogada possível no seu dado de acerto (o número no nome do dado, para aqueles que não estão familiarizados com dados com mais de 6 lados) mais o modificador de Constituição. Lembre-se de que, ao calcular o HP em um nível posterior, você pode assumir que a Constituição de um personagem sempre foi a mesma, pois essa parte do cálculo é repetida toda vez que a Constituição for alterada.
Ao subir de nível
Toda vez que um personagem sobe de nível, ele tem duas opções. Eles podem rolar um de seus dados de vida ou fazer o lançamento médio desse dado (arredondado para cima). Qualquer que seja a sua escolha, seu modificador de Constituição é adicionado ao resultado. Esse total é a quantia que o HP deles aumenta. Para esse desafio, o rolo médio é sempre obtido, portanto a produção é determinística. (Novamente, se você não estiver familiarizado com> dados de 6 lados, poderá calcular a média da rolagem arredondada como (highest_possible_roll / 2) + 1
.)
Há uma exceção notável. O HP máximo de um personagem sempre aumenta em pelo menos 1 cada vez que ele aumenta de nível 2 . Se as instruções no parágrafo acima resultarem em um aumento de 0 ou menos ao subir de nível, ele aumentará em 1.
O desafio
Seu programa ou função terá três entradas :
- A classe do personagem, como uma string
- O nível do personagem
- A pontuação de habilidade de Constituição do personagem ( não modificador)
Ele produzirá apenas uma coisa: o HP máximo atual do personagem.
Exemplos
Todas as combinações possíveis de entradas e saídas associadas podem ser encontradas neste link. Para ter algo para ver nesta página, aqui estão 30 casos de teste escolhidos aleatoriamente:
Barbarian, 15th level, 13 CON: 125
Rogue, 10th level, 18 CON: 93
Wizard, 15th level, 18 CON: 122
Wizard, 16th level, 1 CON: 16
Barbarian, 15th level, 7 CON: 80
Warlock, 15th level, 3 CON: 18
Ranger, 14th level, 1 CON: 18
Warlock, 3rd level, 14 CON: 24
Druid, 3rd level, 4 CON: 9
Cleric, 11th level, 5 CON: 25
Bard, 20th level, 11 CON: 103
Barbarian, 11th level, 13 CON: 93
Bard, 8th level, 19 CON: 75
Bard, 16th level, 17 CON: 131
Fighter, 10th level, 6 CON: 44
Monk, 10th level, 2 CON: 13
Cleric, 14th level, 17 CON: 115
Cleric, 6th level, 5 CON: 15
Rogue, 7th level, 13 CON: 45
Cleric, 4th level, 14 CON: 31
Rogue, 19th level, 15 CON: 136
Paladin, 13th level, 13 CON: 95
Cleric, 13th level, 15 CON: 94
Bard, 8th level, 5 CON: 19
Monk, 20th level, 11 CON: 103
Barbarian, 8th level, 20 CON: 101
Monk, 1st level, 4 CON: 5
Bard, 5th level, 17 CON: 43
Monk, 18th level, 7 CON: 57
Wizard, 17th level, 5 CON: 19
1. A rigor, não acho que exista uma regra que diga que 20 é o nível máximo. No entanto, 21 é o ponto em que deixa de haver tabelas no livro para dizer quais devem ser alguns dos vários números das regras, incluindo a quantidade de experiência necessária para alcançá-lo. Esse é um limite de nível bom o suficiente para mim.
2. Na verdade, não acho que isso seja verdade com o RAW. Eu perguntei no rpg.se e tal coisa não parece estar escrita em lugar algum. No entanto, Mike Mearls, designer-chefe de D&D, twittou em março de 2015 . Isso não é autoritário da maneira que você poderia argumentar com um tweet do desenvolvedor de regras líder Jeremy Crawford, mas é uma evidência de que é o que eles pretendiam, então eu o usarei para esse desafio.