Files
crystall-punk-14/Content.Shared/_CP14/MagicSpell/Events/CP14ToggleableActionEvents.cs
Ed 558c199a29 Fix spells (#853)
* fix kick

* fix some spells

* Update ice_ghost.yml
2025-02-07 09:51:22 +03:00

148 lines
3.7 KiB
C#

using Content.Shared.Actions;
using Content.Shared.DoAfter;
using Robust.Shared.Map;
using Robust.Shared.Serialization;
namespace Content.Shared._CP14.MagicSpell.Events;
public interface ICP14ToggleableMagicEffect
{
public float EffectFrequency { get; }
public float CastTime { get; }
public float Cooldown { get; }
public bool BreakOnMove { get; }
public bool BreakOnDamage { get; }
public float DistanceThreshold { get; }
public bool Hidden{ get; }
}
public sealed partial class CP14ToggleableInstantActionEvent : InstantActionEvent, ICP14ToggleableMagicEffect
{
[DataField]
public float EffectFrequency { get; private set; } = 1f;
[DataField]
public float Cooldown { get; private set; } = 3f;
[DataField]
public float CastTime { get; private set; } = 10f;
[DataField]
public bool BreakOnMove { get; private set; } = false;
[DataField]
public bool BreakOnDamage { get; private set; } = true;
[DataField]
public float DistanceThreshold { get; private set; } = 100f;
[DataField]
public bool Hidden { get; private set; } = false;
}
public sealed partial class CP14ToggleableEntityWorldTargetActionEvent : EntityWorldTargetActionEvent, ICP14ToggleableMagicEffect
{
[DataField]
public float EffectFrequency { get; private set; } = 1f;
[DataField]
public float Cooldown { get; private set; } = 3f;
[DataField]
public float CastTime { get; private set; } = 10f;
[DataField]
public bool BreakOnMove { get; private set; } = false;
[DataField]
public bool BreakOnDamage { get; private set; } = true;
[DataField]
public float DistanceThreshold { get; private set; } = 100f;
[DataField]
public bool Hidden { get; private set; } = false;
}
public sealed partial class CP14ToggleableEntityTargetActionEvent : EntityTargetActionEvent, ICP14ToggleableMagicEffect
{
[DataField]
public float EffectFrequency { get; private set; } = 1f;
[DataField]
public float Cooldown { get; private set; } = 3f;
[DataField]
public float CastTime { get; private set; } = 10f;
[DataField]
public bool BreakOnMove { get; private set; } = false;
[DataField]
public bool BreakOnDamage { get; private set; } = true;
[DataField]
public float DistanceThreshold { get; private set; } = 100f;
[DataField]
public bool Hidden { get; private set; } = false;
}
[Serializable, NetSerializable]
public sealed partial class CP14ToggleableInstantActionDoAfterEvent : DoAfterEvent
{
[DataField]
public float? Cooldown;
public CP14ToggleableInstantActionDoAfterEvent(float cooldown)
{
Cooldown = cooldown;
}
public override DoAfterEvent Clone() => this;
}
[Serializable, NetSerializable]
public sealed partial class CP14ToggleableEntityWorldTargetActionDoAfterEvent : DoAfterEvent
{
[DataField]
public NetCoordinates? TargetPosition;
[DataField]
public NetEntity? TargetEntity;
[DataField]
public float? Cooldown;
public CP14ToggleableEntityWorldTargetActionDoAfterEvent(NetCoordinates? targetPos, NetEntity? targetEntity, float cooldown)
{
TargetPosition = targetPos;
TargetEntity = targetEntity;
Cooldown = cooldown;
}
public override DoAfterEvent Clone() => this;
}
[Serializable, NetSerializable]
public sealed partial class CP14ToggleableEntityTargetActionDoAfterEvent : DoAfterEvent
{
[DataField]
public NetEntity? TargetEntity;
[DataField]
public float? Cooldown;
public CP14ToggleableEntityTargetActionDoAfterEvent(NetEntity? targetEntity, float cooldown)
{
TargetEntity = targetEntity;
Cooldown = cooldown;
}
public override DoAfterEvent Clone() => this;
}