J'ai du mal à me souvenir de tout ce que je dois faire lors de la montée en niveau d'un personnage D&D. Pour une raison quelconque, l'une des choses qui me pose problème est de déterminer quelle devrait être leur nouvelle valeur maximale en HP. Pour ce défi, vous écrirez un programme ou une fonction pour calculer automatiquement la valeur correcte.
Terminologie
La première chose que vous devez savoir pour calculer les PV max est le "modificateur de Constitution". Chaque personnage du MDN a six scores de capacité entiers, dont un pour la Constitution. La seule connaissance pertinente requise pour ce défi est de savoir comment le score de capacité de Constitution affecte une autre statistique, qui est le modificateur de Constitution. En bref, le modificateur est égal à floor( (ability_score - 10) / 2 ). Les aventuriers ne peuvent avoir que des scores de capacité de 1 à 20 inclus. Votre code n'aura jamais à gérer des scores en dehors de cette plage, ce qui signifie également qu'il n'aura jamais à gérer un modificateur inférieur à -5 ou supérieur à +5. Bien que le modificateur de Constitution puisse changer à mesure qu'un personnage monte de niveau, ses effets sur les PV sont appliqués rétroactivement, donc seule sa valeur actuelle est nécessaire pour calculer les PV max actuels.
(Cela n'a rien à voir avec le défi, mais si vous êtes curieux de savoir comment cela affecte les HP maximum: vous pouvez supposer que l'exploit "Tough" ajoute 2 au modificateur de Constitution d'un personnage aux fins du calcul des HP, car c'est effectivement ce qu'il fait. . Ce n'est pas le texte de l'exploit, mais les calculs sont exactement les mêmes. Vous n'avez pas à gérer cet exploit dans votre réponse.)
Ensuite, chaque classe a un type de "hit die" assigné, qui est impliqué dans le calcul des HP. Le tableau suivant répertorie les dés de succès pour chaque 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
Enfin, le niveau du personnage. Tout cela affecte le nombre de fois où ajouter une valeur au total cumulé dans la section suivante. Le niveau d'un personnage est un entier de 1 à 20, inclus 1 . Votre code n'aura jamais à gérer un niveau en dehors de cette plage. Pour atteindre le niveau n, un personnage commence au niveau 1 et monte dans le n-1temps. Par exemple, un personnage de niveau 3 est arrivé là où il est en étant un personnage de niveau 1 et en montant deux fois.
Comment calculer Max HP
Les PV maximums d'un personnage sont égaux à ses PV au niveau 1 plus la somme de l'augmentation qu'il a reçue à chaque niveau.
Au niveau 1
Au niveau 1, les PV d'un personnage sont égaux au plus haut jet possible sur son dé touché (le nombre au nom du dé, pour ceux d'entre vous qui ne connaissent pas les dés qui ont plus de 6 faces) plus leur modificateur de Constitution. N'oubliez pas que lorsque vous calculez des HP à un niveau ultérieur, vous pouvez supposer que la Constitution d'un personnage a toujours été la même, car cette partie du calcul est refaite chaque fois que la Constitution change.
Lors de la mise à niveau
Chaque fois qu'un personnage monte de niveau, il a deux options. Ils peuvent soit lancer l'un de leurs dés, soit prendre le jet moyen de ce dé (arrondi). Quel que soit leur choix, leur modificateur de Constitution est ajouté au résultat. Ce total est le montant que leur HP augmente. Pour ce défi, le roulement moyen est toujours pris, donc la sortie est déterministe. (Encore une fois, si vous n'êtes pas familier avec les dés> 6 faces, vous pouvez calculer le jet moyen arrondi comme (highest_possible_roll / 2) + 1.)
Il y a une exception notable. Les PV maximums d'un personnage augmentent toujours d'au moins 1 à chaque fois qu'il monte de niveau 2 . Si les instructions du paragraphe ci-dessus entraînent une augmentation de 0 ou moins lors de la montée de niveau, elle augmente de 1 à la place.
Le défi
Votre programme ou fonction prendra trois entrées :
- La classe du personnage, sous forme de chaîne
- Le niveau du personnage
- Score de capacité de constitution du personnage ( pas de modificateur)
Il sera sortie qu'une seule chose: HP maximale actuelle du personnage.
Exemples
Toutes les combinaisons possibles d'entrées et de leurs sorties associées sont disponibles sur ce lien. Pour avoir quelque chose à regarder sur cette page, voici 30 cas de test choisis au hasard:
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. À strictement parler, je ne pense pas qu'il existe une règle qui dit que 20 est le niveau maximum. Cependant, 21 est le point où il n'y a plus de tableaux dans le livre pour vous dire quels devraient être les différents nombres dans les règles, y compris la quantité d'expérience dont vous avez besoin pour l'atteindre. C'est un niveau suffisant pour moi.
2. En fait, je ne pense pas que ce soit vrai avec RAW. J'ai demandé sur rpg.se et une telle chose ne semble être écrite nulle part. Cependant, Mike Mearls, concepteur principal de D&D, l'a tweeté en mars 2015 . Ce n'est pas la manière dont vous pourriez faire valoir un tweet du développeur principal des règles, Jeremy Crawford, mais c'est la preuve que c'est ce qu'ils voulaient, donc je vais l'utiliser pour ce défi.