mirror of
https://github.com/space-syndicate/space-station-14.git
synced 2026-10-09 18:31:17 +03:00
* Add some Zero-G modifiers * make moths use base, and make some overloads * undo moth base * remove extra modifications we don't need * remove change that might cause unintended effects * CR - Added the modifiers for weightlessnessEvent - added HandRelays for WeightlessModifier - cleaned up unused ClothingSpeedModifierComponent changes - cleaned up unused PullingSystem changes * Cleanup and some API specifics * forgot to commit :) --------- Co-authored-by: Princess Cheeseballs <66055347+Princess-Cheeseballs@users.noreply.github.com>
58 lines
2.4 KiB
C#
58 lines
2.4 KiB
C#
using Content.Shared.Clothing;
|
|
using Content.Shared.Hands;
|
|
using Content.Shared.Movement.Components;
|
|
using Content.Shared.Movement.Systems;
|
|
|
|
namespace Content.Shared.Item;
|
|
|
|
/// <summary>
|
|
/// This handles <see cref="HeldSpeedModifierComponent"/>
|
|
/// </summary>
|
|
public sealed partial class HeldSpeedModifierSystem : EntitySystem
|
|
{
|
|
[Dependency] private MovementSpeedModifierSystem _movementSpeedModifier = default!;
|
|
|
|
/// <inheritdoc/>
|
|
public override void Initialize()
|
|
{
|
|
SubscribeLocalEvent<HeldSpeedModifierComponent, GotEquippedHandEvent>(OnGotEquippedHand);
|
|
SubscribeLocalEvent<HeldSpeedModifierComponent, GotUnequippedHandEvent>(OnGotUnequippedHand);
|
|
SubscribeLocalEvent<HeldSpeedModifierComponent, HeldRelayedEvent<RefreshMovementSpeedModifiersEvent>>(OnRefreshMovementSpeedModifiers);
|
|
SubscribeLocalEvent<HeldSpeedModifierComponent, HeldRelayedEvent<RefreshWeightlessModifiersEvent>>(OnRefreshWeightlessModifiers);
|
|
}
|
|
|
|
private void OnGotEquippedHand(Entity<HeldSpeedModifierComponent> ent, ref GotEquippedHandEvent args)
|
|
{
|
|
_movementSpeedModifier.RefreshMovementModifiers(args.User);
|
|
}
|
|
|
|
private void OnGotUnequippedHand(Entity<HeldSpeedModifierComponent> ent, ref GotUnequippedHandEvent args)
|
|
{
|
|
_movementSpeedModifier.RefreshMovementModifiers(args.User);
|
|
}
|
|
|
|
public (float,float) GetHeldMovementSpeedModifiers(EntityUid uid, HeldSpeedModifierComponent component)
|
|
{
|
|
var walkMod = component.WalkModifier;
|
|
var sprintMod = component.SprintModifier;
|
|
if (component.MirrorClothingModifier && TryComp<ClothingSpeedModifierComponent>(uid, out var clothingSpeedModifier))
|
|
{
|
|
walkMod = clothingSpeedModifier.WalkModifier;
|
|
sprintMod = clothingSpeedModifier.SprintModifier;
|
|
}
|
|
|
|
return (walkMod, sprintMod);
|
|
}
|
|
|
|
private void OnRefreshMovementSpeedModifiers(EntityUid uid, HeldSpeedModifierComponent component, HeldRelayedEvent<RefreshMovementSpeedModifiersEvent> args)
|
|
{
|
|
var (walkMod, sprintMod) = GetHeldMovementSpeedModifiers(uid, component);
|
|
args.Args.ModifySpeed(walkMod, sprintMod);
|
|
}
|
|
|
|
private void OnRefreshWeightlessModifiers(Entity<HeldSpeedModifierComponent> ent, ref HeldRelayedEvent<RefreshWeightlessModifiersEvent> args)
|
|
{
|
|
args.Args.ModifyAcceleration(ent.Comp.WeightlessAcceleration);
|
|
args.Args.WeightlessModifierMod *= ent.Comp.ZeroGravityModifier;
|
|
}
|
|
}
|