Files
tbd-station-14/Content.Server/KillTracking/KillTrackerComponent.cs
2023-08-30 18:06:15 -07:00

63 lines
1.5 KiB
C#

using Content.Shared.FixedPoint;
using Content.Shared.Mobs;
using Robust.Shared.Network;
namespace Content.Server.KillTracking;
/// <summary>
/// This is used for entities that track player damage sources and killers.
/// </summary>
[RegisterComponent, Access(typeof(KillTrackingSystem))]
public sealed partial class KillTrackerComponent : Component
{
/// <summary>
/// The mobstate that registers as a "kill"
/// </summary>
[DataField("killState")]
public MobState KillState = MobState.Critical;
/// <summary>
/// A dictionary of sources and how much damage they've done to this entity over time.
/// </summary>
[DataField("lifetimeDamage")]
public Dictionary<KillSource, FixedPoint2> LifetimeDamage = new();
}
public abstract record KillSource;
/// <summary>
/// A kill source for players
/// </summary>
[DataDefinition, Serializable]
public sealed partial record KillPlayerSource : KillSource
{
[DataField("playerId")]
public NetUserId PlayerId;
public KillPlayerSource(NetUserId playerId)
{
PlayerId = playerId;
}
}
/// <summary>
/// A kill source for non-player controlled entities
/// </summary>
[DataDefinition, Serializable]
public sealed partial record KillNpcSource : KillSource
{
[DataField("npcEnt")]
public EntityUid NpcEnt;
public KillNpcSource(EntityUid npcEnt)
{
NpcEnt = npcEnt;
}
}
/// <summary>
/// A kill source for kills with no damage origin
/// </summary>
[DataDefinition, Serializable]
public sealed partial record KillEnvironmentSource : KillSource;