feat(tvt): per-character scoreboard (kills, statues, statue damage)

Server: new 0xFD HeykelSavasiScoreboard packet + view plugin; HeykelSavasiContext tracks per-player
kills (Player.AfterKilledPlayerAsync hook), statues broken (OnDestructibleDied), and statue damage
(AttackableNpcBase.AttackByAsync hook); broadcast top-8 by damage (desc) every ~1s, omitting zero-damage
characters.
This commit is contained in:
Acentech Dev
2026-07-21 16:34:15 +03:00
parent 586590e06f
commit 538189ea7c
8 changed files with 573 additions and 0 deletions

View File

@@ -142,6 +142,13 @@ public abstract class AttackableNpcBase : NonPlayerCharacter, IAttackable
{
await player.ApplyMaceMasteryStunEffectAsync(this).ConfigureAwait(false);
}
// ADAMU-CUSTOM: TvT Event -> record per-character statue damage for the event scoreboard.
if (this.Definition.ObjectKind == NpcObjectKind.Destructible
&& player.CurrentMiniGame is MiniGames.HeykelSavasiContext heykelDamageGame)
{
heykelDamageGame.RecordStatueDamage(player, this, (uint)hitInfo.HealthDamage);
}
}
if (attacker as IPlayerSurrogate is { } playerSurrogate)