Ho difficoltà a ricordare tutto ciò che devo fare quando faccio salire di livello un personaggio di D&D. Per qualsiasi motivo, una delle cose che mi dà problemi è capire quale dovrebbe essere il loro nuovo valore massimo di HP. Per questa sfida, dovrai scrivere un programma o una funzione per calcolare automaticamente il valore corretto.
Terminologia
La prima cosa che devi sapere per calcolare i PS massimi è il "modificatore di Costituzione". Ogni personaggio DND ha sei punteggi di abilità interi, incluso uno per Costituzione. L'unica conoscenza rilevante richiesta per questa sfida è come il punteggio di abilità della Costituzione influenza un'altra statistica, che è il modificatore della Costituzione. In breve, il modificatore è uguale a floor( (ability_score - 10) / 2 ). Gli avventurieri possono avere solo punteggi di abilità da 1 a 20, inclusi. Il tuo codice non dovrà mai gestire punteggi al di fuori di tale intervallo, il che significa anche che non dovrà mai gestire un modificatore inferiore a -5 o maggiore di +5. Sebbene il modificatore della Costituzione possa cambiare man mano che il personaggio sale di livello, i suoi effetti su HP sono applicati retroattivamente, quindi è necessario solo il suo valore corrente per calcolare i PS massimi attuali.
(Questo è del tutto irrilevante per la sfida, ma se sei curioso di sapere come influisce sui PS massimi: puoi supporre che l'impresa "Difficile" aggiunga 2 al modificatore di Costituzione di un personaggio ai fini del calcolo dei PS, dato che è effettivamente ciò che fa Questo non è il testo dell'impresa, ma la matematica è esattamente la stessa. Non devi gestire questa impresa nella tua risposta.)
Successivamente, ogni classe ha un tipo "hit die" assegnato, che è coinvolto nel calcolo di HP. La tabella seguente elenca i dadi colpiti per ogni 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
Infine, il livello del personaggio. Tutto ciò influisce su quante volte aggiungere un valore al totale parziale nella sezione seguente. Il livello di un personaggio è un numero intero compreso tra 1 e 20, incluso 1 . Il tuo codice non dovrà mai gestire un livello al di fuori di tale intervallo. Per raggiungere il livello n, un personaggio inizia al livello 1 e sale di livello n-1. Ad esempio, un personaggio di livello 3 è arrivato dove si trova essendo un personaggio di livello 1 e salendo di livello due volte.
Come calcolare HP massimi
I PS massimi di un personaggio sono pari ai loro PS di livello 1 più la somma dell'aumento che hanno ricevuto ad ogni livello.
Al livello 1
Al livello 1, i PS di un personaggio sono pari al tiro più alto possibile sul loro dado per colpire (il numero nel nome del dado, per quelli di voi che non hanno familiarità con i dadi che hanno più di 6 lati) più il loro modificatore di Costituzione. Ricorda che quando calcoli HP in un secondo momento, puoi supporre che la Costituzione di un personaggio sia sempre stata la stessa, poiché questa parte del calcolo viene ripetuta ogni volta che la Costituzione cambia.
Quando si sale di livello
Ogni volta che un personaggio sale di livello, hanno due opzioni. Possono tirare uno dei loro dadi o prendere il tiro medio di quel dado (arrotondato per eccesso). Qualunque cosa scelgano, il loro modificatore di Costituzione viene aggiunto al risultato. Questo totale è l'importo che i loro HP aumentano. Per questa sfida, il tiro medio è sempre preso, quindi l'output è deterministico. (Ancora una volta, se non si ha familiarità con> dadi a 6 facce, è possibile calcolare il tiro medio arrotondato per eccesso come (highest_possible_roll / 2) + 1.)
C'è un'eccezione notevole. I PS massimi di un personaggio aumentano sempre di almeno 1 ogni volta che salgono di livello 2 . Se le istruzioni nel paragrafo precedente comporterebbero un aumento di 0 o inferiore quando si passa di livello, aumenta invece di 1.
La sfida
Il tuo programma o funzione avrà tre input :
- La classe del personaggio, come una stringa
- Il livello del personaggio
- Punteggio abilità Costituzione del personaggio ( non modificatore)
Sarà in uscita solo una cosa: la corrente del personaggio massima HP.
Esempi
Tutte le possibili combinazioni di ingressi e le relative uscite associate sono disponibili a questo link. Per avere qualcosa da guardare in questa pagina, ecco 30 casi di test scelti a caso:
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 di termini, non penso che ci sia una regola che dice che 20 è il livello massimo. Tuttavia, 21 è il punto in cui non ci sono più tabelle nel libro per dirti quali dovrebbero essere alcuni dei vari numeri delle regole, inclusa la quantità di esperienza che devi ottenere per raggiungerla. Questo è un livello abbastanza buono per me.
2. In realtà non penso che ciò sia vero con RAW. Ho chiesto su rpg.se e una cosa del genere non sembra essere scritta da nessuna parte. Tuttavia, Mike Mearls, lead designer di D&D, lo ha twittato a marzo 2015 . Questo non è autorevole nel modo in cui potresti sostenere un tweet dello sviluppatore di regole principali Jeremy Crawford, ma è la prova che è quello che intendevano, quindi lo userò per questa sfida.