Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions Content.Server/Traits/Assorted/LayingDownModifierComponent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using Robust.Shared.GameStates;

namespace Content.Server.Traits.Assorted;

/// <summary>
/// This is used for traits that modify values related to the Laying Down system.
/// </summary>
[RegisterComponent]
public sealed partial class LayingDownModifierComponent : Component
{
/// <summary>
/// What to multiply the cooldown of laying down and standing up by.
/// </summary>
[DataField]
public float LayingDownCooldownMultiplier = 1f;

/// <summary>
/// What to multiply the speed multiplier when lying down by.
/// </summary>
[DataField]
public float DownedSpeedMultiplierMultiplier = 1f;
}
22 changes: 22 additions & 0 deletions Content.Server/Traits/Assorted/LayingDownModifierSystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
using Content.Server.Traits.Assorted;
using Content.Server.Standing;

namespace Content.Shared.Traits.Assorted.Systems;

public sealed class LayingDownModifierSystem : EntitySystem
{
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<LayingDownModifierComponent, ComponentStartup>(OnStartup);
}

private void OnStartup(EntityUid uid, LayingDownModifierComponent component, ComponentStartup args)
{
if (!TryComp<LayingDownComponent>(uid, out var layingDown))
return;

layingDown.Cooldown *= component.LayingDownCooldownMultiplier;
layingDown.DownedSpeedMultiplier *= component.DownedSpeedMultiplierMultiplier;
}
}
7 changes: 6 additions & 1 deletion Content.Shared/Climbing/Systems/ClimbSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
using Content.Shared.Physics;
using Content.Shared.Popups;
using Content.Shared.Stunnable;
using Content.Shared.Traits.Assorted.Components;
using Content.Shared.Verbs;
using Robust.Shared.Audio.Systems;
using Robust.Shared.Physics;
Expand Down Expand Up @@ -216,7 +217,11 @@ public bool TryClimb(
if (ev.Cancelled)
return false;

var args = new DoAfterArgs(EntityManager, user, comp.ClimbDelay, new ClimbDoAfterEvent(),
var climbDelay = comp.ClimbDelay;
if (user == entityToMove && TryComp<ClimbDelayModifierComponent>(user, out var delayModifier))
climbDelay *= delayModifier.ClimbDelayMultiplier;

var args = new DoAfterArgs(EntityManager, user, climbDelay, new ClimbDoAfterEvent(),
entityToMove,
target: climbable,
used: entityToMove)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using Robust.Shared.GameStates;

namespace Content.Shared.Traits.Assorted.Components;

/// <summary>
/// This is used for any trait that modifies climbing speed.
/// </summary>
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState]
public sealed partial class ClimbDelayModifierComponent : Component
{
/// <summary>
/// What to multiply the climbing delay by.
/// </summary>
[DataField, AutoNetworkedField]
public float ClimbDelayMultiplier = 1f;
}
5 changes: 5 additions & 0 deletions Resources/Locale/en-US/traits/traits.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,11 @@ trait-description-Voracious =
Nothing gets between you and your food.
Your endless consumption of food and drinks is twice as fast.

trait-name-ParkourTraining = Parkour Training
trait-description-ParkourTraining =
Whether as a hobby, lifestyle, or professional training, you are trained in the discipline of parkour.
You're faster with climbing, crawling, lying down, and getting up.

trait-name-LightStep = Light Step
trait-description-LightStep =
You move with a gentle step, making your footsteps quieter.
11 changes: 11 additions & 0 deletions Resources/Prototypes/Traits/skills.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,17 @@
foodDelayMultiplier: 0.5
drinkDelayMultiplier: 0.5

- type: trait
id: ParkourTraining
category: Physical
points: -3
components:
- type: ClimbDelayModifier
climbDelayMultiplier: 0.70
- type: LayingDownModifier
layingDownCooldownMultiplier: 0.8
downedSpeedMultiplierMultiplier: 1.25

- type: trait
id: LightStep
category: Auditory
Expand Down