После того, как я переписал логику функции RemoveHead() и её вызовы, то образовался странный баг. Попадания в голову засчитываются, но сама голова не отрывается.
Кстати, в оригинале у разработчиков вообще получалась рекурсия.
Из функции TakeDamage() при обнаружении попадания в голову и достаточном уроне вызывалась функция RemoveHead(). В ней менялись некоторые параметры и для нанесения дополнительного урона опять вызывалась функция TakeDamage(). Получалась рекурсия: TakeDamage() -> RemoveHead() -> TakeDamage().
Тем более еще в функции TakeDamage() спавняться различные эффекты, что тоже давало дополнительную нагрузку.
После того, как я переписал логику функции RemoveHead() и её вызовы, то образовался странный баг. Попадания в голову засчитываются, но сама голова не отрывается. Кстати, в оригинале у разработчиков вообще получалась рекурсия. Из функции TakeDamage() при обнаружении попадания в голову и достаточном уроне вызывалась функция RemoveHead(). В ней менялись некоторые параметры и для нанесения дополнительного урона опять вызывалась функция TakeDamage(). Получалась рекурсия: TakeDamage() -> RemoveHead() -> TakeDamage(). Тем более еще в функции TakeDamage() спавняться различные эффекты, что тоже давало дополнительную нагрузку.