Podczas analizy funkcji "Damage" natrafiłem na kilka problemów związanych z umiejętnością 'Strach'. Po dokładnym przyjrzeniu się sytuacji odkryłem następujące kwestie:
Okazało się, że prawdopodobieństwo aktywacji efektu "Strach" było znacznie niższe niż przewidywano, co było wynikiem błędnych obliczeń. To nie zgadzało się z opisem umiejętności.
Brakowało funkcji blokującej obrażenia w przypadku aktywacji "Strachu", a zmienna "pct" była używana w różnych obliczeniach, co mogło prowadzić do nieprawidłowości.
W zaktualizowanej wersji kodu, kiedy postać jest pod wpływem efektu 'Strach', mechanika blokowania obrażeń została zaktualizowana. Teraz, na podstawie mocy umiejętności 'Strach', obliczane jest prawdopodobieństwo zablokowania ataku. Jeśli wylosowana wartość mieści się w obliczonym zakresie (mniejsza lub równa wartości 'terrorEffectProbability'), funkcja 'SendDamagePacket' jest wywoływana z flagą 'DAMAGE_BLOCK'. To skutkuje zablokowaniem ataku, który jest następnie zwracany jako 'miss'.
Dodatkowo, zmieniłem kolejność sprawdzania warunków. Teraz kod najpierw sprawdza, czy postać ma aktywny efekt "Strach", a dopiero potem analizuje typ obrażeń. Dzięki temu, jeśli postać nie jest pod wpływem "Strachu", nie ma potrzeby sprawdzania typu obrażeń, co może przyspieszyć działanie kodu.
Cześć,👋
Podczas analizy funkcji "Damage" natrafiłem na kilka problemów związanych z umiejętnością 'Strach'. Po dokładnym przyjrzeniu się sytuacji odkryłem następujące kwestie:
W zaktualizowanej wersji kodu, kiedy postać jest pod wpływem efektu 'Strach', mechanika blokowania obrażeń została zaktualizowana. Teraz, na podstawie mocy umiejętności 'Strach', obliczane jest prawdopodobieństwo zablokowania ataku. Jeśli wylosowana wartość mieści się w obliczonym zakresie (mniejsza lub równa wartości 'terrorEffectProbability'), funkcja 'SendDamagePacket' jest wywoływana z flagą 'DAMAGE_BLOCK'. To skutkuje zablokowaniem ataku, który jest następnie zwracany jako 'miss'.
Dodatkowo, zmieniłem kolejność sprawdzania warunków. Teraz kod najpierw sprawdza, czy postać ma aktywny efekt "Strach", a dopiero potem analizuje typ obrażeń. Dzięki temu, jeśli postać nie jest pod wpływem "Strachu", nie ma potrzeby sprawdzania typu obrażeń, co może przyspieszyć działanie kodu.
Prezentacja działania:
Rozwiązanie:
📁 Lokalizacja pliku: 'game -> char_battle.cpp'
🔍 Szukamy:
🚫 Usuwamy powyższy blok kodu i przenosimy go do innego pliku.
📁 Lokalizacja pliku: 'game -> char.h'
🔍 Szukamy:
➕ Dodajemy:
🔍 Wracamy do pliku: char_battle.cpp funkcja ::DAMAGE szukamy kodu odpowiadającego za działanie Strachu:
🔄 Zamień: