bugg ice shards and add it to loadouts (#899)
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
using Content.Shared._CP14.MagicSpell.Components;
|
||||
using Content.Shared._CP14.MagicSpell.Events;
|
||||
using Content.Shared._CP14.MagicSpell.Spells;
|
||||
|
||||
namespace Content.Shared._CP14.MagicSpell;
|
||||
|
||||
public abstract partial class CP14SharedMagicSystem
|
||||
{
|
||||
private void InitializeInstantActions()
|
||||
{
|
||||
SubscribeLocalEvent<CP14InstantActionEvent>(OnMagicInstantAction);
|
||||
SubscribeLocalEvent<CP14EntityWorldTargetActionEvent>(OnMagicEntityWorldTargetAction);
|
||||
SubscribeLocalEvent<CP14EntityTargetActionEvent>(OnMagicEntityTargetAction);
|
||||
}
|
||||
|
||||
private void OnMagicInstantAction(CP14InstantActionEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
if (!TryComp<CP14MagicEffectComponent>(args.Action, out var magicEffect))
|
||||
return;
|
||||
|
||||
if (!CanCastSpell((args.Action, magicEffect), args.Performer))
|
||||
return;
|
||||
|
||||
var spellArgs =
|
||||
new CP14SpellEffectBaseArgs(args.Performer, magicEffect.SpellStorage, args.Performer, Transform(args.Performer).Coordinates);
|
||||
|
||||
CastSpell((args.Action, magicEffect), spellArgs);
|
||||
_action.CP14StartCustomDelay(args.Action, args.Cooldown);
|
||||
}
|
||||
|
||||
private void OnMagicEntityWorldTargetAction(CP14EntityWorldTargetActionEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
if (!TryComp<CP14MagicEffectComponent>(args.Action, out var magicEffect))
|
||||
return;
|
||||
|
||||
if (!CanCastSpell((args.Action, magicEffect), args.Performer))
|
||||
return;
|
||||
|
||||
var spellArgs =
|
||||
new CP14SpellEffectBaseArgs(args.Performer, magicEffect.SpellStorage, args.Entity, args.Coords);
|
||||
|
||||
CastSpell((args.Action, magicEffect), spellArgs);
|
||||
_action.CP14StartCustomDelay(args.Action, args.Cooldown);
|
||||
}
|
||||
|
||||
private void OnMagicEntityTargetAction(CP14EntityTargetActionEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
if (!TryComp<CP14MagicEffectComponent>(args.Action, out var magicEffect))
|
||||
return;
|
||||
|
||||
if (!CanCastSpell((args.Action, magicEffect), args.Performer))
|
||||
return;
|
||||
|
||||
var spellArgs =
|
||||
new CP14SpellEffectBaseArgs(args.Performer, magicEffect.SpellStorage, args.Target, Transform(args.Target).Coordinates);
|
||||
|
||||
CastSpell((args.Action, magicEffect), spellArgs);
|
||||
_action.CP14StartCustomDelay(args.Action, args.Cooldown);
|
||||
}
|
||||
}
|
||||
@@ -10,9 +10,9 @@ public abstract partial class CP14SharedMagicSystem
|
||||
{
|
||||
private void InitializeToggleableActions()
|
||||
{
|
||||
SubscribeLocalEvent<CP14ToggleableInstantActionEvent>(OnInstantAction);
|
||||
SubscribeLocalEvent<CP14ToggleableEntityWorldTargetActionEvent>(OnEntityWorldTargetAction);
|
||||
SubscribeLocalEvent<CP14ToggleableEntityTargetActionEvent>(OnEntityTargetAction);
|
||||
SubscribeLocalEvent<CP14ToggleableInstantActionEvent>(OnToggleableInstantAction);
|
||||
SubscribeLocalEvent<CP14ToggleableEntityWorldTargetActionEvent>(OnToggleableEntityWorldTargetAction);
|
||||
SubscribeLocalEvent<CP14ToggleableEntityTargetActionEvent>(OnToggleableEntityTargetAction);
|
||||
|
||||
SubscribeLocalEvent<CP14MagicEffectComponent, CP14ToggleableInstantActionDoAfterEvent>(OnToggleableInstantActionDoAfterEvent);
|
||||
SubscribeLocalEvent<CP14MagicEffectComponent, CP14ToggleableEntityWorldTargetActionDoAfterEvent>(OnToggleableEntityWorldTargetActionDoAfterEvent);
|
||||
@@ -128,7 +128,7 @@ public abstract partial class CP14SharedMagicSystem
|
||||
/// <summary>
|
||||
/// Instant action used from hotkey event
|
||||
/// </summary>
|
||||
private void OnInstantAction(CP14ToggleableInstantActionEvent args)
|
||||
private void OnToggleableInstantAction(CP14ToggleableInstantActionEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
@@ -148,7 +148,7 @@ public abstract partial class CP14SharedMagicSystem
|
||||
/// <summary>
|
||||
/// Target action used from hotkey event
|
||||
/// </summary>
|
||||
private void OnEntityWorldTargetAction(CP14ToggleableEntityWorldTargetActionEvent args)
|
||||
private void OnToggleableEntityWorldTargetAction(CP14ToggleableEntityWorldTargetActionEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
@@ -171,7 +171,7 @@ public abstract partial class CP14SharedMagicSystem
|
||||
/// <summary>
|
||||
/// Entity target action used from hotkey event
|
||||
/// </summary>
|
||||
private void OnEntityTargetAction(CP14ToggleableEntityTargetActionEvent args)
|
||||
private void OnToggleableEntityTargetAction(CP14ToggleableEntityTargetActionEvent args)
|
||||
{
|
||||
if (args.Handled)
|
||||
return;
|
||||
|
||||
@@ -43,6 +43,7 @@ public abstract partial class CP14SharedMagicSystem : EntitySystem
|
||||
base.Initialize();
|
||||
InitializeDelayedActions();
|
||||
InitializeToggleableActions();
|
||||
InitializeInstantActions();
|
||||
InitializeChecks();
|
||||
InitializeSlowdown();
|
||||
|
||||
|
||||
27
Content.Shared/_CP14/MagicSpell/Events/CP14ActionsEvents.cs
Normal file
27
Content.Shared/_CP14/MagicSpell/Events/CP14ActionsEvents.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using Content.Shared.Actions;
|
||||
|
||||
namespace Content.Shared._CP14.MagicSpell.Events;
|
||||
|
||||
public interface ICP14MagicEffect
|
||||
{
|
||||
public TimeSpan Cooldown { get; }
|
||||
}
|
||||
|
||||
public sealed partial class CP14EntityWorldTargetActionEvent : EntityWorldTargetActionEvent, ICP14MagicEffect
|
||||
{
|
||||
[DataField]
|
||||
public TimeSpan Cooldown { get; private set; } = TimeSpan.FromSeconds(1f);
|
||||
}
|
||||
|
||||
public sealed partial class CP14EntityTargetActionEvent : EntityTargetActionEvent, ICP14MagicEffect
|
||||
{
|
||||
[DataField]
|
||||
public TimeSpan Cooldown { get; private set; } = TimeSpan.FromSeconds(1f);
|
||||
}
|
||||
|
||||
public sealed partial class CP14InstantActionEvent : InstantActionEvent, ICP14MagicEffect
|
||||
{
|
||||
[DataField]
|
||||
public TimeSpan Cooldown { get; private set; } = TimeSpan.FromSeconds(1f);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user