Files
Delta-v/Content.Shared/_DV/Addictions/SharedAddictionSystem.cs
T
deltanedasanddeltanedas ec94579ebc the great namespace refactor (#2574)
* refactor DeltaV/deltav resources to _DV

* change DeltaV namespaces to _DV

* add space before all DeltaV comments

* update xamls

* fix and move arena parallax to _DV

* more fix

* refactor even more stuff

* fix the grid fills

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>
2025-01-01 07:50:34 +00:00

44 lines
1.3 KiB
C#

using Content.Shared.StatusEffect;
using Robust.Shared.Prototypes;
namespace Content.Shared._DV.Addictions;
public abstract class SharedAddictionSystem : EntitySystem
{
[Dependency] private readonly StatusEffectsSystem _statusEffects = default!;
public ProtoId<StatusEffectPrototype> StatusEffectKey = "Addicted";
protected abstract void UpdateTime(EntityUid uid);
public virtual void TryApplyAddiction(EntityUid uid, float addictionTime, StatusEffectsComponent? status = null)
{
if (!Resolve(uid, ref status, false))
return;
UpdateTime(uid);
if (!_statusEffects.HasStatusEffect(uid, StatusEffectKey, status))
{
_statusEffects.TryAddStatusEffect<AddictedComponent>(uid, StatusEffectKey, TimeSpan.FromSeconds(addictionTime), true, status);
}
else
{
_statusEffects.TryAddTime(uid, StatusEffectKey, TimeSpan.FromSeconds(addictionTime), status);
}
}
public virtual void TrySuppressAddiction(EntityUid uid, float duration)
{
if (!TryComp<AddictedComponent>(uid, out var comp))
return;
var ent = new Entity<AddictedComponent>(uid, comp);
UpdateAddictionSuppression(ent, duration);
}
protected virtual void UpdateAddictionSuppression(Entity<AddictedComponent> ent, float duration)
{
}
}