Skip to content

Commit

Permalink
Rework oni system to use events
Browse files Browse the repository at this point in the history
  • Loading branch information
BarryNorfolk committed Jan 26, 2025
1 parent 6210428 commit 7ab985f
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 97 deletions.
11 changes: 5 additions & 6 deletions Content.Shared/_DV/Abilities/Oni/HeldbyOniComponent.cs
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
namespace Content.Server.Abilities.Oni
namespace Content.Shared._DV.Abilities.Oni;

[RegisterComponent]
public sealed partial class HeldByOniComponent : Component
{
[RegisterComponent]
public sealed partial class HeldByOniComponent : Component
{
public EntityUid Holder = default!;
}
public EntityUid Holder = default!;
}
22 changes: 12 additions & 10 deletions Content.Shared/_DV/Abilities/Oni/OniComponent.cs
Original file line number Diff line number Diff line change
@@ -1,14 +1,16 @@
using Content.Shared.Damage;

namespace Content.Server.Abilities.Oni
namespace Content.Shared._DV.Abilities.Oni;

[RegisterComponent]
public sealed partial class OniComponent : Component
{
[RegisterComponent]
public sealed partial class OniComponent : Component
{
[DataField("modifiers", required: true)]
public DamageModifierSet MeleeModifiers = default!;

[DataField("stamDamageBonus")]
public float StamDamageMultiplier = 1.25f;
}
[DataField("modifiers", required: true)]
public DamageModifierSet MeleeModifiers = default!;

[DataField("stamDamageBonus")]
public float StamDamageMultiplier = 1.25f;

[DataField]
public float PryingSpeedModifier = 0.5f;
}
79 changes: 0 additions & 79 deletions Content.Shared/_DV/Abilities/Oni/OniSystem.cs

This file was deleted.

49 changes: 47 additions & 2 deletions Content.Shared/_DV/Abilities/Oni/SharedOniSystem.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,50 @@
namespace Content.Shared.Nyanotrasen.Abilities.Oni;
using Content.Shared._DV.Prying.Events;
using Content.Shared.Hands;
using Content.Shared.Weapons.Ranged.Events;
using Content.Shared.Weapons.Ranged.Systems;

public abstract class SharedOniSystem : EntitySystem
namespace Content.Shared._DV.Abilities.Oni;

public sealed class SharedOniSystem : EntitySystem
{
[Dependency] private readonly SharedGunSystem _guns = default!;

public override void Initialize()
{
base.Initialize();

SubscribeLocalEvent<OniComponent, GetUserPryTimeModifierEvent>(OnGetUserPryMod);
SubscribeLocalEvent<OniComponent, DidEquipHandEvent>(OnHandEquipped);
SubscribeLocalEvent<OniComponent, DidUnequipHandEvent>(OnHandUnequipped);

SubscribeLocalEvent<HeldByOniComponent, GunRefreshModifiersEvent>(OnGunRefreshModifiers);
}

private void OnGetUserPryMod(Entity<OniComponent> ent, ref GetUserPryTimeModifierEvent args)
{
args.PryTimeModifier *= ent.Comp.PryingSpeedModifier;
}

private void OnHandEquipped(Entity<OniComponent> ent, ref DidEquipHandEvent args)
{
// Only apply the HeldByOni component to guns
if (!_guns.TryGetGun(args.Equipped, out _, out var gun))
return;

var heldComp = EnsureComp<HeldByOniComponent>(args.Equipped);
heldComp.Holder = ent.Owner;
}

private void OnHandUnequipped(Entity<OniComponent> ent, ref DidUnequipHandEvent args)
{
if (HasComp<HeldByOniComponent>(args.Unequipped))
RemComp<HeldByOniComponent>(args.Unequipped);
}

private void OnGunRefreshModifiers(Entity<HeldByOniComponent> end, ref GunRefreshModifiersEvent args)
{
args.MinAngle *= 15f;
args.AngleIncrease *= 15f;
args.MaxAngle *= 15f;
}
}

0 comments on commit 7ab985f

Please sign in to comment.