Mam problem z zapamiętaniem wszystkiego, co muszę zrobić, aby awansować na postać D&D. Z jakiegokolwiek powodu jedną z rzeczy, które przysparzają mi kłopotów, jest ustalenie ich nowej maksymalnej wartości HP. Do tego wyzwania napiszesz program lub funkcję do automatycznego obliczania poprawnej wartości.
Terminologia
Pierwszą rzeczą, którą musisz wiedzieć, aby obliczyć maksymalne HP, jest „modyfikator Konstytucji”. Każda postać DND ma sześć całkowitych wyników umiejętności, w tym jeden za Konstytucję. Jedyną istotną wiedzą wymaganą do tego wyzwania jest to, jak wynik umiejętności Konstytucji wpływa na inną statystykę, która jest modyfikatorem Konstytucji. Krótko mówiąc, modyfikator jest równy floor( (ability_score - 10) / 2 ). Poszukiwacze przygód mogą mieć wyniki od 1 do 20 włącznie. Twój kod nigdy nie będzie musiał obsługiwać wyników poza tym zakresem, co oznacza również, że nigdy nie będzie musiał obsługiwać modyfikatora niższego niż -5 lub większego niż +5. Chociaż modyfikator Konstytucji może się zmieniać wraz ze wzrostem poziomu postaci, jego wpływ na HP jest stosowany z mocą wsteczną, więc tylko jego aktualna wartość jest potrzebna do obliczenia aktualnego maksymalnego HP.
(To jest zupełnie bez znaczenia na to wyzwanie, ale jeśli jesteś ciekaw, jak to wpływa na maksymalną HP: Można założyć, że „Tough” feat dodaje 2 do modyfikatora charakter konstytucji dla celów obliczania HP, ponieważ to skutecznie , co robi To nie jest tekst wyczynu, ale matematyka okazuje się być dokładnie taka sama. Nie musisz radzić sobie z tym wyczynem w swojej odpowiedzi.)
Następnie każda klasa ma przypisany typ „trafienia”, który bierze udział w obliczaniu HP. W poniższej tabeli wymieniono kości trafień dla każdej klasy.
Sorcerer: d6
Wizard: d6
Bard: d8
Cleric: d8
Druid: d8
Monk: d8
Rogue: d8
Warlock: d8
Fighter: d10
Paladin: d10
Ranger: d10
Barbarian: d12
Wreszcie poziom postaci. Wszystko to wpływa na to, ile razy należy dodać wartość do bieżącej sumy w poniższej sekcji. Poziom postaci to liczba całkowita od 1 do 20, w tym 1 . Twój kod nigdy nie będzie musiał obsługiwać poziomu spoza tego zakresu. Aby osiągnąć poziom n, postać zaczyna od poziomu 1 i podnosi n-1czasy. Na przykład postać poziomu 3 dotarła do miejsca, w którym się znajduje, będąc postacią poziomu 1 i dwukrotnie podnosząc poziom.
Jak obliczyć maksymalne HP
Maksymalne HP postaci jest równe jej HP na poziomie 1 plus suma wzrostu, jaki otrzymali na każdym poziomie.
Na poziomie 1
Na poziomie 1 HP postaci jest równe najwyższemu możliwemu rzutowi na jej kości trafienia (liczba w nazwie kości, dla tych z was, którzy nie znają kości, które mają więcej niż 6 stron) plus ich modyfikator Konstytucji. Pamiętaj, że obliczając HP na późniejszym poziomie, możesz założyć, że Konstytucja postaci zawsze była taka sama, ponieważ ta część obliczeń jest powtarzana za każdym razem, gdy zmienia się Konstytucja.
Podczas awansowania
Za każdym razem, gdy postać awansuje, mają dwie opcje. Mogą albo rzucić jedną ze swoich trafionych kości, albo wziąć średni wynik tej kości (zaokrąglony w górę). Cokolwiek wybiorą, ich modyfikator Konstytucji zostanie dodany do wyniku. Ta suma to kwota, którą zwiększa ich HP. W przypadku tego wyzwania zawsze wybierany jest średni rzut, więc wynik jest deterministyczny. (Ponownie, jeśli nie jesteś zaznajomiony z> 6-stronnymi kostkami, możesz obliczyć zaokrąglony średni rzut jako (highest_possible_roll / 2) + 1.)
Jest jeden znaczący wyjątek. Maksymalne HP postaci zawsze wzrasta o co najmniej 1 za każdym razem, gdy awansuje o 2 . Jeśli instrukcje w powyższym akapicie spowodowałyby wzrost o 0 lub mniej podczas podwyższania, zamiast tego wzrosłyby o 1.
Wyzwanie
Twój program lub funkcja przyjmie trzy dane wejściowe :
- Klasa postaci jako ciąg
- Poziom postaci
- Wynik zdolności Konstytucji postaci ( bez modyfikatora)
Będzie wyjście tylko jedno: postać za prąd maksymalny HP.
Przykłady
Każda możliwa kombinacja wejść i powiązanych z nimi wyjść można znaleźć pod tym linkiem. Aby mieć na co spojrzeć na tej stronie, tutaj losowo wybieranych jest 30 przypadków testowych:
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. Ściśle mówiąc, nie sądzę, żeby istniała reguła, która mówi, że 20 to maksymalny poziom. Jednak 21 jest punktem, w którym przestają być tabele w książce, które mówią ci, jakie powinny być różne liczby w regułach, w tym ilość doświadczenia, które musisz zdobyć, aby je osiągnąć. To dla mnie wystarczający limit poziomu.
2. Właściwie nie sądzę, że tak jest w przypadku RAW. Zapytałem na rpg.se i nic takiego nie wydaje się być nigdzie zapisane. Jednak Mike Mearls, główny projektant D&D, napisał na Twitterze w marcu 2015 r . Nie jest to autorytatywny sposób, w jaki można argumentować tweeta od twórcy reguł wiodących, Jeremy'ego Crawforda, ale jest to dowód na to, że tak zamierzali, więc wykorzystam go do tego wyzwania.