handle devil's/demon's in EnemyDamageSync

This commit is contained in:
Martin Michelsen
2025-09-12 22:41:32 -07:00
parent 526bfb64e5
commit 22d7825ba3
7 changed files with 343 additions and 175 deletions
+11 -8
View File
@@ -7518,14 +7518,17 @@ struct G_RejectBattleStartRequest_Ep3_6xB4x53 {
// GC v3: PSOGCCharacterFile::Character
// XB v3: PSOXBCharacterFile::Character
// 6xE4: Increment enemy damage threshold
// 6xE4: Increment enemy damage
// This command increments or decrements the amount of damage an enemy has
// sustained. This replaces the use of total_damage in 6x0A to update enemy HP.
// sustained. This replaces the use of total_damage in 6x0A to update enemy HP
// when used with the EnemyDamageSync patch.
struct G_IncrementEnemyDamage_Extension_6xE4 {
G_EntityIDHeader header = {0xE4, sizeof(G_IncrementEnemyDamage_Extension_6xE4) / 4, 0x0000};
le_int16_t hit_amount = 0;
le_uint16_t total_damage_before_hit = 0;
le_uint16_t current_hp_before_hit = 0;
le_uint16_t max_hp = 0;
} __packed_ws__(G_IncrementEnemyDamage_Extension_6xE4, 0x0C);
/* 00 */ G_EntityIDHeader header = {0xE4, sizeof(G_IncrementEnemyDamage_Extension_6xE4) / 4, 0x0000};
/* 04 */ le_int16_t hit_amount = 0;
/* 06 */ le_uint16_t total_damage_before_hit = 0;
/* 08 */ le_uint16_t current_hp_before_hit = 0;
/* 0A */ le_uint16_t max_hp = 0;
/* 0C */ le_float factor = -1.0;
/* 10 */
} __packed_ws__(G_IncrementEnemyDamage_Extension_6xE4, 0x10);
+2 -1
View File
@@ -3460,9 +3460,10 @@ static asio::awaitable<void> on_incr_enemy_damage(shared_ptr<Client> c, Subcomma
}
auto ene_st = l->map_state->enemy_state_for_index(c->version(), c->floor, cmd.header.entity_id & 0x0FFF);
c->log.info_f("E-{:03X} damage incremented by {}; before hit, damage was {} (cmd) or {} (ene_st) and HP was {}/{}",
c->log.info_f("E-{:03X} damage incremented by {} with factor {}; before hit, damage was {} (cmd) or {} (ene_st) and HP was {}/{}",
ene_st->e_id,
cmd.hit_amount.load(),
cmd.factor.load(),
ene_st->total_damage,
cmd.total_damage_before_hit.load(),
cmd.current_hp_before_hit.load(),