| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- using Content.Shared.Damage.Prototypes;
- using Content.Shared.Dataset;
- using Content.Shared.FixedPoint;
- using Robust.Shared.GameStates;
- using Robust.Shared.Prototypes;
- namespace Content.Shared.Damage.ForceSay;
- /// <summary>
- /// This is used for forcing clients to send messages with a suffix attached (like -GLORF) when taking large amounts
- /// of damage, or things like entering crit or being stunned.
- /// </summary>
- [RegisterComponent, NetworkedComponent]
- public sealed partial class DamageForceSayComponent : Component
- {
- /// <summary>
- /// The localization string that the message & suffix will be passed into
- /// </summary>
- [DataField]
- public LocId ForceSayMessageWrap = "damage-force-say-message-wrap";
- /// <summary>
- /// Same as <see cref="ForceSayMessageWrap"/> but for cases where no suffix is used,
- /// such as when going into crit.
- /// </summary>
- [DataField]
- public LocId ForceSayMessageWrapNoSuffix = "damage-force-say-message-wrap-no-suffix";
- /// <summary>
- /// The fluent string prefix to use when picking a random suffix
- /// </summary>
- [DataField]
- public ProtoId<LocalizedDatasetPrototype> ForceSayStringDataset = "ForceSayStringDataset";
- /// <summary>
- /// The amount of total damage between <see cref="ValidDamageGroups"/> that needs to be taken before
- /// a force say occurs.
- /// </summary>
- [DataField]
- public FixedPoint2 DamageThreshold = FixedPoint2.New(5);
- /// <summary>
- /// A list of damage group types that are considered when checking <see cref="DamageThreshold"/>.
- /// </summary>
- [DataField]
- public HashSet<ProtoId<DamageGroupPrototype>>? ValidDamageGroups = new()
- {
- "Brute",
- "Burn",
- };
- /// <summary>
- /// The time enforced between force says to avoid spam.
- /// </summary>
- [DataField]
- public TimeSpan Cooldown = TimeSpan.FromSeconds(5.0);
- public TimeSpan? NextAllowedTime = null;
- }
|