Repository navigation
Conversation
Жалоба игрока: сообщение приходит раньше, чем пнул. Германский рыцарь упал на землю! Вы УЖАСНО пнули германского рыцаря, его аж скрючило от боли. Могучий воевода упал на землю! Ваш мощный пинок отправил могучего воеводу к праотцам. Пинок (kick.cpp): ветка критической удачи меняла позицию жертвы и печатала "$N упал$A на землю!" до того, как вызывался dmg.Process. В сообщении нет ни слова о пинке, поэтому игрок видел следствие раньше причины, а при смертельном ударе -- раньше сообщения о смерти. Бросок (throw.cpp): то же самое. PerformShadowThrowSideAbilities печатает "Попадание копья повалило $n3 наземь", сажает жертву и вешает чары, и вызывался он до damage.Process. Образец взят из баша (bash.cpp:254): сперва damage = dmg.Process(...), и только потом SetPosition. Там же видно, зачем нужен возврат -- отрицательное значение означает, что жертва убита (damage.cpp:973). Пинок: условие падения вычисляется до урона (множитель dam *= 2 остался на месте), а применение и объявление перенесены после. Случай смерти отсекается проверкой позиции: у убитого kDead = 0, что меньше kSit = 6, -- так же, как в баше. Бросок: вызов побочной способности перенесен после damage.Process и выполняется только при неотрицательном возврате, то есть на труп чары больше не вешаются. Сборка без предупреждений, 872 теста проходят (3 отключены давно). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Жалоба игрока: «сообщение приходит раньше чем пнул».
Где
Пинок,
kick.cpp. Ветка критической удачи меняла позицию жертвы и печатала$N упал$A на землю!до вызоваdmg.Process. В самом сообщении нет ни слова о пинке, поэтому игрок видел следствие раньше причины, а при смертельном ударе — ещё и раньше сообщения о смерти.Бросок,
throw.cpp. То же самое:PerformShadowThrowSideAbilitiesпечатает «Попадание копья повалило $n3 наземь», сажает жертву и вешает чары, и вызывался доdamage.Process.Как чинится
Образец взят из баша,
bash.cpp:254— там уже правильно:Там же видно, зачем нужен возврат: отрицательное значение означает, что жертва убита (
damage.cpp:973).Пинок. Условие падения вычисляется до урона (множитель
dam *= 2остался на месте), применение и объявление перенесены после. Случай смерти отсекается самой проверкой позиции: у убитогоkDead= 0, что меньшеkSit= 6 — ровно как в баше.Бросок. Вызов побочной способности перенесён после
damage.Processи выполняется только при неотрицательном возврате, то есть на труп чары больше не вешаются.Что это меняет в игре
Проверено
build/(release, с тестами) без предупреждений../tests/tests— 872 проходят, 3 отключены давно (Vedun_*).Process: вdisarm.cppурон нулевой (fight::kZeroDmg), после него сообщений нет — порядок не нарушен.🤖 Generated with Claude Code