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
6 changes: 6 additions & 0 deletions Content.Shared/Actions/ActionGrantComponent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,10 @@ public sealed partial class ActionGrantComponent : Component

[DataField, AutoNetworkedField]
public List<EntityUid> ActionEntities = new();

/// <summary>
/// Actions will only be available if the item is in the clothing slot.
/// </summary>
[DataField, AutoNetworkedField]
public bool ActiveIfWorn;
}
6 changes: 6 additions & 0 deletions Content.Shared/Actions/ActionGrantSystem.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
using Content.Shared.Inventory;

namespace Content.Shared.Actions;

/// <summary>
Expand All @@ -17,9 +19,13 @@ public override void Initialize()

private void OnItemGet(Entity<ItemActionGrantComponent> ent, ref GetItemActionsEvent args)
{

if (!TryComp(ent.Owner, out ActionGrantComponent? grant))
return;

if (ent.Comp.ActiveIfWorn && (args.SlotFlags == null || args.SlotFlags == SlotFlags.POCKET))
return;

foreach (var action in grant.ActionEntities)
{
args.AddAction(action);
Expand Down
6 changes: 6 additions & 0 deletions Content.Shared/Actions/ItemActionGrantComponent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,10 @@ public sealed partial class ItemActionGrantComponent : Component
{
[DataField(required: true), AutoNetworkedField, AlwaysPushInheritance]
public List<EntProtoId> Actions = new();

/// <summary>
/// Actions will only be available if the item is in the clothing slot.
/// </summary>
[DataField, AutoNetworkedField]
public bool ActiveIfWorn;
}
36 changes: 36 additions & 0 deletions Content.Shared/Movement/Components/JumpAbilityComponent.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
using Content.Shared.Actions;
using Content.Shared.Movement.Systems;
using Robust.Shared.Audio;
using Robust.Shared.GameStates;

namespace Content.Shared.Movement.Components;

/// <summary>
/// A component for configuring the settings for the jump action.
/// To give the jump action to an entity use <see cref="ActionGrantComponent"/> and <see cref="ItemActionGrantComponent"/>.
/// The basic action prototype is "ActionGravityJump".
/// </summary>
[RegisterComponent, NetworkedComponent, AutoGenerateComponentState, Access(typeof(SharedJumpAbilitySystem))]
public sealed partial class JumpAbilityComponent : Component
{
/// <summary>
/// How far you will jump (in tiles).
/// </summary>
[DataField, AutoNetworkedField]
public float JumpDistance = 5f;

/// <summary>
/// Basic “throwing” speed for TryThrow method.
/// </summary>
[DataField, AutoNetworkedField]
public float JumpThrowSpeed = 10f;

/// <summary>
/// This gets played whenever the jump action is used.
/// </summary>
[DataField, AutoNetworkedField]
public SoundSpecifier? JumpSound;
}

public sealed partial class GravityJumpEvent : InstantActionEvent;

35 changes: 35 additions & 0 deletions Content.Shared/Movement/Systems/SharedJumpAbilitySystem.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using Content.Shared.Gravity;
using Content.Shared.Movement.Components;
using Content.Shared.Throwing;
using Robust.Shared.Audio.Systems;

namespace Content.Shared.Movement.Systems;

public sealed partial class SharedJumpAbilitySystem : EntitySystem
{
[Dependency] private readonly ThrowingSystem _throwing = default!;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly SharedGravitySystem _gravity = default!;

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

SubscribeLocalEvent<JumpAbilityComponent, GravityJumpEvent>(OnGravityJump);
}

private void OnGravityJump(Entity<JumpAbilityComponent> entity, ref GravityJumpEvent args)
{
if (_gravity.IsWeightless(args.Performer))
return;

var xform = Transform(args.Performer);
var throwing = xform.LocalRotation.ToWorldVec() * entity.Comp.JumpDistance;
var direction = xform.Coordinates.Offset(throwing); // to make the character jump in the direction he's looking

_throwing.TryThrow(args.Performer, direction, entity.Comp.JumpThrowSpeed);

_audio.PlayPredicted(entity.Comp.JumpSound, args.Performer, args.Performer);
args.Handled = true;
}
}
7 changes: 6 additions & 1 deletion Resources/Audio/Effects/attributions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,11 @@
copyright: "Created by mattroks101 for Bee Station. cig_snuff converted to mono"
source: "https://github.com/BeeStation/BeeStation-Hornet/pull/29"

- files: [stealthoff.ogg]
copyright: 'TGStation at d4f678a1772007ff8d7eddd21cf7218c8e07bfc0'
license: "CC-BY-SA-3.0"
source: https://github.com/tgstation/tgstation/commit/d4f678a1772007ff8d7eddd21cf7218c8e07bfc0

- files: ["soft_thump.ogg"]
license: "CC-BY-4.0"
copyright: "Clipped by FairlySadPanda (Github) from a sound created by CheChoDj (Freesound)"
Expand All @@ -255,4 +260,4 @@
- files: [card_drag.ogg]
copyright: 'created by Tao7891; perryprog (GitHub) downmixed to mono'
license: CC0-1.0
source: https://github.com/space-wizards/space-station-14/pull/37363
source: https://github.com/space-wizards/space-station-14/pull/37363
Binary file added Resources/Audio/Effects/stealthoff.ogg
Binary file not shown.
15 changes: 15 additions & 0 deletions Resources/Locale/en-US/_white/markings/reptilian.ftl
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Aiden <aiden@djkraz.com>
# SPDX-FileCopyrightText: 2025 PuroSlavKing <103608145+PuroSlavKing@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# SNOUT
marking-LizardShoutEasternDragon= Lizard, eastern dragon
marking-LizardShoutEasternDragon-eastern_dragon = Outer
marking-LizardShoutEasternDragon-eastern_dragon_overlay = Inner

marking-LizardShoutEasternDragonUsiki= Lizard, eastern dragon (Mustache)
marking-LizardShoutEasternDragonUsiki-eastern_dragon = Outer
marking-LizardShoutEasternDragonUsiki-eastern_dragon_overlay = Inner
marking-LizardShoutEasternDragonUsiki-eastern_dragon_usiki = Mustache
12 changes: 12 additions & 0 deletions Resources/Prototypes/Actions/types.yml
Original file line number Diff line number Diff line change
Expand Up @@ -359,3 +359,15 @@
useDelay: 1
itemIconStyle: BigAction
event: !type:ToggleActionEvent

- type: entity
id: ActionGravityJump
name: Jump
description: Activating the advanced propulsion system, you propel yourself a short distance in the direction of your gaze.
components:
- type: InstantAction
useDelay: 8
icon:
sprite: Interface/Actions/jump.rsi
state: icon
event: !type:GravityJumpEvent {}
29 changes: 28 additions & 1 deletion Resources/Prototypes/Entities/Clothing/Shoes/misc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -181,4 +181,31 @@
- type: StaticPrice
price: 75
- type: Tag
tags: [ ]
tags: []

- type: entity
parent: ClothingShoesBase
id: ClothingShoesBootsJump
name: jump boots
description: High-tech boots that give you the incredible ability to JUMP! With these boots you can jump over lava, chasms and weird chemicals on the floor!
components:
- type: Sprite
sprite: Clothing/Shoes/Boots/jumpboots.rsi
layers:
- state: icon
- type: Clothing
sprite: Clothing/Shoes/Boots/jumpboots.rsi
- type: JumpAbility
jumpDistance: 4
jumpSound: /Audio/Effects/stealthoff.ogg
- type: ActionGrant
actions:
- ActionGravityJump
- type: ItemActionGrant
actions:
- ActionGravityJump
activeIfWorn: true
- type: StaticPrice
price: 220
- type: Tag
tags: []
1 change: 1 addition & 0 deletions Resources/Prototypes/Recipes/Lathes/Packs/science.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
- ClothingShoesBootsMagSci
- NFClothingShoesBootsMoon # Frontier: use NF variant
- ClothingShoesBootsSpeed
- ClothingShoesBootsJump
- ClothingBackpackHolding
- ClothingBackpackSatchelHolding
- ClothingBackpackDuffelHolding
Expand Down
10 changes: 10 additions & 0 deletions Resources/Prototypes/Recipes/Lathes/misc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,16 @@
Silver: 500
Bluespace: 200 #DeltaV

- type: latheRecipe
id: ClothingShoesBootsJump
result: ClothingShoesBootsJump
completetime: 2
materials:
Steel: 1400
Plastic: 600
Silver: 200
Plasma: 200

- type: latheRecipe
id: ModularReceiver
result: ModularReceiver
Expand Down
1 change: 1 addition & 0 deletions Resources/Prototypes/Research/industrial.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
- BorgModuleGrapplingGun
- OreProcessorIndustrialMachineCircuitboard
- ClothingMaskWeldingGas
- ClothingShoesBootsJump
- MechEquipmentDrill # Goobstation

- type: technology
Expand Down
4 changes: 3 additions & 1 deletion Resources/Prototypes/_HL/Entities/Mobs/Player/synth.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,6 @@
save: false
name: Urist McSynth
parent: BaseMobSynth
id: MobSynth
id: MobSynth
components:
- type: PotentialPsionic #Nyano - Summary: makes potentially psionic.
7 changes: 0 additions & 7 deletions Resources/Prototypes/_HL/Entities/Mobs/Species/synth.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,6 @@
damageModifierSet: Synth
damageContainer: Synth
- type: HLSynth
- type: Tag
tags:
- Synth
- CanPilot
- FootstepSound
- DoorBumpOpener
- AnomalyHost
- type: Thirst
- type: DamageVisuals
damageOverlayGroups:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 PuroSlavKing <103608145+PuroSlavKing@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
# SNOUT
- type: marking
id: LizardShoutEasternDragon
bodyPart: Snout
markingCategory: Snout
speciesRestriction: [Reptilian]
sprites:
- sprite: _White/Mobs/Customization/snouts.rsi
state: eastern_dragon
- sprite: _White/Mobs/Customization/snouts.rsi
state: eastern_dragon_overlay

- type: marking
id: LizardShoutEasternDragonUsiki
bodyPart: Snout
markingCategory: Snout
speciesRestriction: [Reptilian]
sprites:
- sprite: _White/Mobs/Customization/snouts.rsi
state: eastern_dragon
- sprite: _White/Mobs/Customization/snouts.rsi
state: eastern_dragon_overlay
- sprite: _White/Mobs/Customization/snouts.rsi
state: eastern_dragon_usiki
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
30 changes: 30 additions & 0 deletions Resources/Textures/Clothing/Shoes/Boots/jumpboots.rsi/meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/cd6ba31a1b5891133c14b9ebba4a4479143b5167",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "icon"
},
{
"name": "equipped-FEET",
"directions": 4
},
{
"name": "equipped-FEET-vox",
"directions": 4
},
{
"name": "inhand-left",
"directions": 4
},
{
"name": "inhand-right",
"directions": 4
}
]
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 14 additions & 0 deletions Resources/Textures/Interface/Actions/jump.rsi/meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"version": 1,
"license": "CC-BY-SA-3.0",
"copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/a373b4cb08298523d40acc14f9c390a0c403fc31",
"size": {
"x": 32,
"y": 32
},
"states": [
{
"name": "icon"
}
]
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 23 additions & 0 deletions Resources/Textures/_White/Mobs/Customization/snouts.rsi/meta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"version": 1,
"size": {
"x": 32,
"y": 32
},
"license": "CC-BY-SA-3.0",
"copyright": "Taken from S.P.L.U.R.T at commit https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13/commit/02617f9b08d7767e2feb137a8c96650342bd3c0a | Edited, resprited and reshaded by PuroSlavKing (Github), further edited by NotLivyathan (GitHub)",
"states": [
{
"name": "eastern_dragon",
"directions": 4
},
{
"name": "eastern_dragon_overlay",
"directions": 4
},
{
"name": "eastern_dragon_usiki",
"directions": 4
}
]
}
Loading