| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- using Content.Shared.Alert;
- using Robust.Shared.GameStates;
- using Robust.Shared.Prototypes;
- using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
- namespace Content.Shared.Damage.Components;
- /// <summary>
- /// Add to an entity to paralyze it whenever it reaches critical amounts of Stamina DamageType.
- /// </summary>
- [RegisterComponent, NetworkedComponent, AutoGenerateComponentState(true), AutoGenerateComponentPause]
- public sealed partial class StaminaComponent : Component
- {
- /// <summary>
- /// Have we reached peak stamina damage and been paralyzed?
- /// </summary>
- [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
- public bool Critical;
- /// <summary>
- /// How much stamina reduces per second.
- /// </summary>
- [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
- public float Decay = 3f;
- [DataField, AutoNetworkedField]
- public float DecayModifier = 1f; // stalker-changes
- /// <summary>
- /// How much time after receiving damage until stamina starts decreasing.
- /// </summary>
- [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
- public float Cooldown = 3f;
- /// <summary>
- /// How much stamina damage this entity has taken.
- /// </summary>
- [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
- public float StaminaDamage;
- /// <summary>
- /// How much stamina damage is required to entire stam crit.
- /// </summary>
- [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
- public float CritThreshold = 100f;
- [DataField, AutoNetworkedField]
- public float CritThresholdModifier = 1f; // stalker-changes
- /// <summary>
- /// How long will this mob be stunned for?
- /// </summary>
- [ViewVariables(VVAccess.ReadWrite), DataField]
- public TimeSpan StunTime = TimeSpan.FromSeconds(6);
- /// <summary>
- /// To avoid continuously updating our data we track the last time we updated so we can extrapolate our current stamina.
- /// </summary>
- [DataField(customTypeSerializer: typeof(TimeOffsetSerializer)), AutoNetworkedField]
- [AutoPausedField]
- public TimeSpan NextUpdate = TimeSpan.Zero;
- [DataField]
- public ProtoId<AlertPrototype> StaminaAlert = "Stamina";
- // stalker-changes-start
- /// <summary>
- /// How much stamina damage is required to entire stam crit.
- /// </summary>
- [ViewVariables(VVAccess.ReadWrite), DataField, AutoNetworkedField]
- public float SlowdownThreshold = 50f; // CritThreshold / 2
- // stalker-changes-end
- }
|