diff --git a/Content.Shared/DeltaV/StepTrigger/Component/NoShoesSilentFootstepsComponent.cs b/Content.Shared/DeltaV/StepTrigger/Component/NoShoesSilentFootstepsComponent.cs new file mode 100644 index 00000000000..ae2697b0ef0 --- /dev/null +++ b/Content.Shared/DeltaV/StepTrigger/Component/NoShoesSilentFootstepsComponent.cs @@ -0,0 +1,9 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.StepTrigger.Components; + + +[RegisterComponent, NetworkedComponent] +public sealed partial class NoShoesSilentFootstepsComponent : Component +{ +} diff --git a/Content.Shared/Movement/Systems/SharedMoverController.cs b/Content.Shared/Movement/Systems/SharedMoverController.cs index 92b953aca98..31a05b2004c 100644 --- a/Content.Shared/Movement/Systems/SharedMoverController.cs +++ b/Content.Shared/Movement/Systems/SharedMoverController.cs @@ -23,6 +23,7 @@ using Robust.Shared.Timing; using Robust.Shared.Utility; using PullableComponent = Content.Shared.Movement.Pulling.Components.PullableComponent; +using Content.Shared.StepTrigger.Components; // Delta V-NoShoesSilentFootstepsComponent namespace Content.Shared.Movement.Systems { @@ -46,6 +47,7 @@ public abstract partial class SharedMoverController : VirtualController [Dependency] protected readonly SharedPhysicsSystem Physics = default!; [Dependency] private readonly SharedTransformSystem _transform = default!; [Dependency] private readonly TagSystem _tags = default!; + [Dependency] private readonly IEntityManager _entities = default!; // Delta V-NoShoesSilentFootstepsComponent protected EntityQuery MoverQuery; protected EntityQuery MobMoverQuery; @@ -438,6 +440,14 @@ private bool TryGetSound( sound = moverModifier.FootstepSoundCollection; return true; } + + // If got the component in yml and no shoes = no sound. Delta V + if (_entities.TryGetComponent(uid, out NoShoesSilentFootstepsComponent? _) & + !_inventory.TryGetSlotEntity(uid, "shoes", out var _)) + { + return false; + } + // Delta V NoShoesSilentFootsteps till here. if (_inventory.TryGetSlotEntity(uid, "shoes", out var shoes) && TryComp(shoes, out var modifier)) diff --git a/Resources/Prototypes/DeltaV/typing_indicator.yml b/Resources/Prototypes/DeltaV/typing_indicator.yml new file mode 100644 index 00000000000..a3fc2fbcfb9 --- /dev/null +++ b/Resources/Prototypes/DeltaV/typing_indicator.yml @@ -0,0 +1,5 @@ +- type: typingIndicator + id: felinid + spritePath: /Textures/DeltaV/Effects/speech.rsi + typingState: felinid0 + offset: 0, 0.2 # 0625 diff --git a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml index d95014d1675..8e1242d2d7c 100644 --- a/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml +++ b/Resources/Prototypes/Nyanotrasen/Entities/Mobs/Species/felinid.yml @@ -24,21 +24,30 @@ prototype: Felinid - type: Damageable damageModifierSet: Felinid + - type: SlowOnDamage + speedModifierThresholds: + 60: 0.85 # 0.7 is base speed. + 80: 0.75 # 0.5 is base speed. - type: MeleeWeapon soundHit: collection: Punch animation: WeaponArcClaw damage: types: - Blunt: 3 - Slash: 2 + Slash: 4 + Piercing: 1 +# - type: DiseaseCarrier +# naturalImmunities: +# - OwOnavirus - type: Speech speechSounds: Alto - - type: DamageOnHighSpeedImpact + - type: DamageOnHighSpeedImpact # Landing on all fours! damage: types: Blunt: 1 - type: Stamina + - type: TypingIndicator + proto: felinid - type: PseudoItem - type: Vocal wilhelm: "/Audio/Nyanotrasen/Voice/Felinid/cat_wilhelm.ogg" @@ -54,6 +63,22 @@ - type: SizeAttributeWhitelist # Frontier tall: true tallscale: 1 + - type: Reactive + groups: + Flammable: [ Touch ] + Extinguish: [ Touch ] + reactions: + - reagents: [ Water, SpaceCleaner ] + methods: [ Touch ] + effects: + - !type:WashCreamPieReaction + - reagents: [ Water ] + methods: [ Touch ] + effects: + - !type:Emote + emote: Scream + probability: 0.2 + - type: NoShoesSilentFootsteps - type: entity save: false @@ -65,5 +90,3 @@ components: - type: HumanoidAppearance species: Felinid - -#Nya~~ diff --git a/Resources/Textures/DeltaV/Effects/speech.rsi/felinid0.png b/Resources/Textures/DeltaV/Effects/speech.rsi/felinid0.png new file mode 100644 index 00000000000..586d1e6a343 Binary files /dev/null and b/Resources/Textures/DeltaV/Effects/speech.rsi/felinid0.png differ diff --git a/Resources/Textures/DeltaV/Effects/speech.rsi/felinid1.png b/Resources/Textures/DeltaV/Effects/speech.rsi/felinid1.png new file mode 100644 index 00000000000..8af894f1dec Binary files /dev/null and b/Resources/Textures/DeltaV/Effects/speech.rsi/felinid1.png differ diff --git a/Resources/Textures/DeltaV/Effects/speech.rsi/felinid2.png b/Resources/Textures/DeltaV/Effects/speech.rsi/felinid2.png new file mode 100644 index 00000000000..abb5f04373e Binary files /dev/null and b/Resources/Textures/DeltaV/Effects/speech.rsi/felinid2.png differ diff --git a/Resources/Textures/DeltaV/Effects/speech.rsi/meta.json b/Resources/Textures/DeltaV/Effects/speech.rsi/meta.json new file mode 100644 index 00000000000..1d4b09fbffe --- /dev/null +++ b/Resources/Textures/DeltaV/Effects/speech.rsi/meta.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "Felinid sprites made by Adrian16199 (Github)", + "states": [ + { + "name": "felinid0", + "delays": [ + [ + 0.2, + 0.3, + 0.3, + 0.5 + ] + ] + }, + { + "name": "felinid1" + }, + { + "name": "felinid2" + } + ] +} diff --git a/Resources/Textures/DeltaV/Mobs/Customization/Felinid/felinid_tails.rsi/felinid_fluffy_tail_rings.png b/Resources/Textures/DeltaV/Mobs/Customization/Felinid/felinid_tails.rsi/felinid_fluffy_tail_rings.png index 4e6a6d8dc0d..31b402d3381 100644 Binary files a/Resources/Textures/DeltaV/Mobs/Customization/Felinid/felinid_tails.rsi/felinid_fluffy_tail_rings.png and b/Resources/Textures/DeltaV/Mobs/Customization/Felinid/felinid_tails.rsi/felinid_fluffy_tail_rings.png differ