02 listopada 2025

Zmian ciąg dalszy

Udało mi się przenieść część funkcjonalności do nowego szablonu i już teraz widzę że generator jest wygodniejszy w użyciu nie tylko za sprawą  ładniejszego gui, ale jako sama baza kodu. Zrobiłem spory refaktor, przepakietowanie, jakieś poprawki nazewnictwa i namespaców. Całkowicie przebudowałem część odpowiedzialną za dobieranie cech w przypadku więcej niż jednej profesji. 

Algorytm

W poprzedniej wersji algorytmu przy dwóch profesjach losowałem dwie postacie i dobierałem wartości wylosowanych cech zgodnie z ich kolejnością losowania przy czym do końcowego podsumowania przenoszona była wyższa wartość. Jednakże bardzo trudno było sprawdzić czy cechy zostały dobrze dobrane, czy prawidłowo się połączyły i czy w ogóle końcowy efekt jest poprawny (zwykle nie był). Przeliczenie odporności stało się za skomplikowane i byłem pewien nieprawidłowych wartości w podsumowaniu postaci. Musiałem podjąć drastyczne kroki. Cały ten kod wyrzuciłem i napisałem od nowa.

Aktualna wersja działa inaczej. Przy dwóch profesjach tworzę meta profesję, do której dobieram tylko lepsze (wyższe) cechy z wybranych profesji. Dzięki temu generator cech i odporności uruchamiany jest jeden raz (tak jakby to była jedna profesja) i nie ma problemu z modyfikacjami współczynników wynikających z innych kroków generatora np. wagi postaci. Nie muszę uruchamiać algorytmu łączącego dwie wylosowane postacie i dobierającego lepsze cechy. 

Stan wyjściowy generatora


Na zrzucie widać generowanie wojownika. W logu pod przyciskiem losowania 
widać jakie cechy zostały dobrane do profesji z jakimi kostkami i takimi tam
sterującymi rzeczami. Docelowo log będzie wyświetlał postać
w szablonie znanym z kryształów.


Teraz dwie profesje - Barbarzyńca/Astrolog i zebrane cechy 
profesji. Jak widać dla barbarzyńcy 20+ to HP/SF/ZR/SZ ale już z 
astrologa 20+ dla MD/WI oraz +10 IQ/CH/UM. Podobnie zostały dobrane 
odporności - te większe. Jeśli byłaby możliwa taka konfiguracja
profesji to jedynie Elektryczność nie będzie zwiększana rzutem.
To te -1 przy parametrze BaseProfession dla tej odporności oraz D0 (dice 0 )

Testy

Ach bym prawie zapomniał - do projektu dodałem kilka prostackich testów. W c# nigdy ich nie pisałem także jest to dla mnie terra incognita. Mam nadzieję, że wspomogą mnie w pracy nad projektem ... o ile będzie mi się chciało powiększać ich bazę.