diff --git a/Content.Shared/_CP14/Shuttle/CP14WatershipPaddleComponent.cs b/Content.Shared/_CP14/Shuttle/CP14WatershipPaddleComponent.cs
new file mode 100644
index 0000000000..2527ebd823
--- /dev/null
+++ b/Content.Shared/_CP14/Shuttle/CP14WatershipPaddleComponent.cs
@@ -0,0 +1,11 @@
+namespace Content.Shared._CP14.Shuttle;
+
+///
+///
+///
+[RegisterComponent, Access(typeof(CP14WatershipSystem))]
+public sealed partial class CP14WaterShipPaddleComponent : Component
+{
+ [DataField]
+ public float Power = 10f;
+}
diff --git a/Content.Shared/_CP14/Shuttle/CP14WatershipSystem.cs b/Content.Shared/_CP14/Shuttle/CP14WatershipSystem.cs
new file mode 100644
index 0000000000..2d0e9928b2
--- /dev/null
+++ b/Content.Shared/_CP14/Shuttle/CP14WatershipSystem.cs
@@ -0,0 +1,66 @@
+using Content.Shared.Construction.Components;
+using Content.Shared.Construction.EntitySystems;
+using Content.Shared.Verbs;
+using Robust.Shared.Physics.Systems;
+
+namespace Content.Shared._CP14.Shuttle;
+
+public sealed class CP14WatershipSystem : EntitySystem
+{
+ [Dependency] private readonly SharedTransformSystem _transform = default!;
+ [Dependency] private readonly SharedPhysicsSystem _physics = default!;
+
+ public override void Initialize()
+ {
+ SubscribeLocalEvent>(OnPaddleForward);
+ SubscribeLocalEvent>(OnPaddleBackward);
+ }
+
+ private void OnPaddleForward(Entity ent, ref GetVerbsEvent args)
+ {
+ if (!args.CanAccess || !args.CanInteract)
+ return;
+
+ var paddleTransform = Transform(ent);
+
+ if (!paddleTransform.Anchored)
+ return;
+
+ var verb = new ActivationVerb
+ {
+ Text = "Forward",
+ Priority = 1,
+ Act = () => Bulb(ent, paddleTransform, 1)
+ };
+ args.Verbs.Add(verb);
+ }
+
+ private void OnPaddleBackward(Entity ent, ref GetVerbsEvent args)
+ {
+ if (!args.CanAccess || !args.CanInteract)
+ return;
+
+ var paddleTransform = Transform(ent);
+
+ if (!paddleTransform.Anchored)
+ return;
+
+ var verb = new AlternativeVerb
+ {
+ Text = "Backward",
+ Priority = 2,
+ Act = () => Bulb(ent, paddleTransform, -1)
+ };
+ args.Verbs.Add(verb);
+ }
+
+ private void Bulb(Entity ent, TransformComponent paddleTransform, float modifier)
+ {
+ if (paddleTransform.GridUid is null)
+ return;
+
+ var impulseDirection = paddleTransform.LocalRotation.ToVec();
+
+ _physics.ApplyLinearImpulse(paddleTransform.GridUid.Value, impulseDirection * ent.Comp.Power * modifier, paddleTransform.LocalPosition);
+ }
+}
diff --git a/Resources/Prototypes/_CP14/Entities/watershipTEST.yml b/Resources/Prototypes/_CP14/Entities/watershipTEST.yml
new file mode 100644
index 0000000000..6a35bdfd80
--- /dev/null
+++ b/Resources/Prototypes/_CP14/Entities/watershipTEST.yml
@@ -0,0 +1,59 @@
+- type: entity
+ name: ship paddle
+ id: CP14BaseWatershipPaddle
+ abstract: true
+ parent:
+ - BaseStructure
+ description: bulb bulb
+ categories: [ ForkFiltered ]
+ components:
+ - type: Physics
+ bodyType: Static
+ - type: Fixtures
+ fixtures:
+ fix1:
+ shape:
+ !type:PhysShapeAabb
+ bounds: "-0.45,-0.45,0.45,0.05"
+ density: 190
+ mask:
+ - TableMask
+ - type: Sprite
+ sprite: _CP14/Structures/Shuttle/paddle.rsi
+ - type: Damageable
+ damageContainer: Inorganic
+ damageModifierSet: Wood
+ - type: Destructible
+ thresholds:
+ - trigger:
+ !type:DamageTrigger
+ damage: 75
+ behaviors:
+ - !type:DoActsBehavior
+ acts: ["Destruction"]
+ - !type:SpawnEntitiesBehavior
+ spawn:
+ CP14WoodenPlanks1:
+ min: 2
+ max: 4
+ - type: Transform
+ anchored: true
+ - type: Anchorable
+ - type: Pullable
+ - type: CP14WaterShipPaddle
+
+- type: entity
+ parent: CP14BaseWatershipPaddle
+ id: CP14WatershipPaddleLeft
+ suffix: Left
+ components:
+ - type: Sprite
+ state: wooden_l
+
+- type: entity
+ parent: CP14BaseWatershipPaddle
+ id: CP14WatershipPaddleRight
+ suffix: Right
+ components:
+ - type: Sprite
+ state: wooden_r
\ No newline at end of file
diff --git a/Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/meta.json b/Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/meta.json
new file mode 100644
index 0000000000..7d1a6d7a0d
--- /dev/null
+++ b/Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/meta.json
@@ -0,0 +1,17 @@
+{
+ "version": 1,
+ "license": "CLA",
+ "copyright": "Created by TheShuEd (Github) for CrystallPunk14",
+ "size": {
+ "x": 96,
+ "y": 32
+ },
+ "states": [
+ {
+ "name": "wooden_l"
+ },
+ {
+ "name": "wooden_r"
+ }
+ ]
+}
diff --git a/Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/wooden_l.png b/Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/wooden_l.png
new file mode 100644
index 0000000000..5d5d31850d
Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/wooden_l.png differ
diff --git a/Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/wooden_r.png b/Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/wooden_r.png
new file mode 100644
index 0000000000..669175bca8
Binary files /dev/null and b/Resources/Textures/_CP14/Structures/Shuttle/paddle.rsi/wooden_r.png differ