From ea1044c27183a23a11b461ac5b2f146dc4e6f007 Mon Sep 17 00:00:00 2001 From: James Osborne Date: Tue, 5 May 2026 18:51:10 -0400 Subject: [PATCH] Merge boss flags when blocking damage rollback --- src/ReceiveSubcommands.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/ReceiveSubcommands.cc b/src/ReceiveSubcommands.cc index 42ff62ac..99a963c5 100644 --- a/src/ReceiveSubcommands.cc +++ b/src/ReceiveSubcommands.cc @@ -3719,8 +3719,10 @@ static asio::awaitable on_update_enemy_state(shared_ptr c, Subcomm ene_st->set_last_hit_by_client_id(c->lobby_client_id); } if (blocked_damage_rollback) { - l->log.warning_f("Blocked boss state rollback via 6x0A from C-{} on E-{:03X}: incoming_damage={} current_damage={} incoming_flags={:08X} current_flags={:08X}", - c->lobby_client_id, ene_st->e_id, incoming_total_damage, ene_st->total_damage, src_flags, ene_st->game_flags); + uint32_t old_game_flags = ene_st->game_flags; + ene_st->game_flags |= src_flags; + l->log.warning_f("Blocked boss damage rollback and merged flags via 6x0A from C-{} on E-{:03X}: incoming_damage={} current_damage={} incoming_flags={:08X} old_flags={:08X} merged_flags={:08X}", + c->lobby_client_id, ene_st->e_id, incoming_total_damage, ene_st->total_damage, src_flags, old_game_flags, ene_st->game_flags); } else { ene_st->game_flags = src_flags; ene_st->total_damage = incoming_total_damage; @@ -3744,12 +3746,15 @@ static asio::awaitable on_update_enemy_state(shared_ptr c, Subcomm ene_st->alias_target_ene_st->set_last_hit_by_client_id(c->lobby_client_id); } if (alias_blocked_damage_rollback) { - l->log.warning_f("Blocked boss state rollback via 6x0A from C-{} on alias target E-{:03X}: incoming_damage={} current_damage={} incoming_flags={:08X} current_flags={:08X}", + uint32_t old_alias_game_flags = ene_st->alias_target_ene_st->game_flags; + ene_st->alias_target_ene_st->game_flags |= src_flags; + l->log.warning_f("Blocked boss damage rollback and merged flags via 6x0A from C-{} on alias target E-{:03X}: incoming_damage={} current_damage={} incoming_flags={:08X} old_flags={:08X} merged_flags={:08X}", c->lobby_client_id, ene_st->alias_target_ene_st->e_id, incoming_total_damage, ene_st->alias_target_ene_st->total_damage, src_flags, + old_alias_game_flags, ene_st->alias_target_ene_st->game_flags); } else { ene_st->alias_target_ene_st->game_flags = src_flags;