2023-09-10 07:20:27 +01:00
|
|
|
using Content.Shared.Inventory.Events;
|
|
|
|
|
using Content.Shared.Ninja.Components;
|
|
|
|
|
|
|
|
|
|
namespace Content.Shared.Ninja.Systems;
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// System for katana binding and dash events. Recalling is handled by the suit.
|
|
|
|
|
/// </summary>
|
|
|
|
|
public sealed class EnergyKatanaSystem : EntitySystem
|
|
|
|
|
{
|
|
|
|
|
[Dependency] private readonly SharedSpaceNinjaSystem _ninja = default!;
|
|
|
|
|
|
|
|
|
|
public override void Initialize()
|
|
|
|
|
{
|
|
|
|
|
base.Initialize();
|
|
|
|
|
|
|
|
|
|
SubscribeLocalEvent<EnergyKatanaComponent, GotEquippedEvent>(OnEquipped);
|
2024-07-11 05:55:56 +00:00
|
|
|
SubscribeLocalEvent<EnergyKatanaComponent, CheckDashEvent>(OnCheckDash);
|
2023-09-10 07:20:27 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// When equipped by a ninja, try to bind it.
|
|
|
|
|
/// </summary>
|
2024-07-11 05:55:56 +00:00
|
|
|
private void OnEquipped(Entity<EnergyKatanaComponent> ent, ref GotEquippedEvent args)
|
2023-09-10 07:20:27 +01:00
|
|
|
{
|
2024-07-11 05:55:56 +00:00
|
|
|
_ninja.BindKatana(args.Equipee, ent);
|
2023-09-10 07:20:27 +01:00
|
|
|
}
|
|
|
|
|
|
2024-07-11 05:55:56 +00:00
|
|
|
private void OnCheckDash(Entity<EnergyKatanaComponent> ent, ref CheckDashEvent args)
|
2023-09-10 07:20:27 +01:00
|
|
|
{
|
2024-07-11 05:55:56 +00:00
|
|
|
if (!_ninja.IsNinja(args.User))
|
|
|
|
|
args.Cancelled = true;
|
2023-09-10 07:20:27 +01:00
|
|
|
}
|
|
|
|
|
}
|