using Content.Shared.Chemistry.Components;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
+using Robust.Shared.Audio;
namespace Content.Server.Botany.Components;
[DataField(customTypeSerializer: typeof(TimeOffsetSerializer))]
public TimeSpan LastCycle = TimeSpan.Zero;
+ [DataField]
+ public SoundSpecifier? WateringSound;
+
[DataField]
public bool UpdateSpriteAfterUpdate;
using Content.Shared.Coordinates.Helpers;
using Content.Shared.Examine;
using Content.Shared.FixedPoint;
+using Content.Shared.Fluids.Components;
using Content.Shared.Hands.Components;
using Content.Shared.IdentityManagement;
using Content.Shared.Interaction;
[Dependency] private readonly SharedAudioSystem _audio = default!;
[Dependency] private readonly PopupSystem _popup = default!;
[Dependency] private readonly IGameTiming _gameTiming = default!;
- [Dependency] private readonly SharedPointLightSystem _pointLight = default!;
[Dependency] private readonly SharedSolutionContainerSystem _solutionContainerSystem = default!;
[Dependency] private readonly TagSystem _tagSystem = default!;
[Dependency] private readonly RandomHelperSystem _randomHelper = default!;
SubscribeLocalEvent<PlantHolderComponent, ExaminedEvent>(OnExamine);
SubscribeLocalEvent<PlantHolderComponent, InteractUsingEvent>(OnInteractUsing);
SubscribeLocalEvent<PlantHolderComponent, InteractHandEvent>(OnInteractHand);
+ SubscribeLocalEvent<PlantHolderComponent, SolutionTransferredEvent>(OnSolutionTransferred);
}
public override void Update(float frameTime)
}
}
+ private void OnSolutionTransferred(Entity<PlantHolderComponent> ent, ref SolutionTransferredEvent args)
+ {
+ _audio.PlayPvs(ent.Comp.WateringSound, ent.Owner);
+ }
private void OnInteractHand(Entity<PlantHolderComponent> entity, ref InteractHandEvent args)
{
DoHarvest(entity, args.User, entity.Comp);
_adminLogger.Add(LogType.Ingestion, LogImpact.Low, $"{ToPrettyString(args.User):target} drank {ToPrettyString(entity.Owner):drink}");
}
- _audio.PlayPvs(entity.Comp.UseSound, args.Target.Value, AudioParams.Default.WithVolume(-2f));
+ _audio.PlayPvs(entity.Comp.UseSound, args.Target.Value, AudioParams.Default.WithVolume(-2f).WithVariation(0.25f));
_reaction.DoEntityReaction(args.Target.Value, solution, ReactionMethod.Ingestion);
_stomach.TryTransferSolution(firstStomach.Value.Owner, drained, firstStomach.Value.Comp1);
_adminLogger.Add(LogType.Ingestion, LogImpact.Low, $"{ToPrettyString(args.User):target} ate {ToPrettyString(entity.Owner):food}");
}
- _audio.PlayPvs(entity.Comp.UseSound, args.Target.Value, AudioParams.Default.WithVolume(-1f));
+ _audio.PlayPvs(entity.Comp.UseSound, args.Target.Value, AudioParams.Default.WithVolume(-1f).WithVariation(0.20f));
// Try to break all used utensils
foreach (var utensil in utensils)
/// Sound that plays when ejecting an item
/// </summary>
[DataField("soundVend")]
- // Grabbed from: https://github.com/discordia-space/CEV-Eris/blob/f702afa271136d093ddeb415423240a2ceb212f0/sound/machines/vending_drop.ogg
+ // Grabbed from: https://github.com/tgstation/tgstation/blob/d34047a5ae911735e35cd44a210953c9563caa22/sound/machines/machine_vend.ogg
public SoundSpecifier SoundVend = new SoundPathSpecifier("/Audio/Machines/machine_vend.ogg")
{
Params = new AudioParams
{
- Volume = -2f
+ Volume = -4f,
+ Variation = 0.15f
}
};
- chime.ogg
- buzz-sigh.ogg
- buzztwo.ogg
+ - machine_vend.gg
license: "CC-BY-SA-3.0"
copyright: "Taken from TG station."
source: "https://github.com/tgstation/tgstation/tree/d4f678a1772007ff8d7eddd21cf7218c8e07bfc0"
- type: FootstepModifier
footstepSoundCollection:
collection: FootstepSpurs
+ params:
+ variation: 0.09
- type: entity
parent: ClothingShoesBootsCowboyBrown
- type: FootstepModifier
footstepSoundCollection:
collection: FootstepClown
+ params:
+ variation: 0.17
# for H.O.N.K. construction
- type: Tag
tags:
- type: FootstepModifier
footstepSoundCollection:
collection: FootstepSlip
+ params:
+ variation: 0.10
- type: Construction
graph: BananaClownShoes
node: shoes
- type: FootstepModifier
footstepSoundCollection:
collection: FootstepClown
+ params:
+ variation: 0.17
- type: PointLight
enabled: true
radius: 3
- type: FootstepModifier
footstepSoundCollection:
collection: FootstepJester
+ params:
+ variation: 0.07
- type: entity
parent: ClothingShoesClown
- type: FootstepModifier
footstepSoundCollection:
collection: FootstepSkates
+ params:
+ variation: 0.08
maxInterval: 12
sound:
collection: BikeHorn
+ params:
+ variation: 0.125
- type: Sprite
sprite: Mobs/Silicon/Bots/honkbot.rsi
state: honkbot
interactFailureString: petting-failure-honkbot
interactSuccessSound:
path: /Audio/Items/bikehorn.ogg
+ params:
+ variation: 0.125
- type: entity
parent: MobHonkBot
- type: SpamEmitSound
sound:
collection: CluwneHorn
+ params:
+ variation: 0.125
- type: Sprite
state: jonkbot
- type: Construction
- type: InteractionPopup
interactSuccessSound:
path: /Audio/Items/brokenbikehorn.ogg
+ params:
+ variation: 0.125
- type: Vocal
sounds:
Unsexed: Cluwne
- type: FootstepModifier
footstepSoundCollection:
collection: FootstepClown
+ params:
+ variation: 0.17
- type: Mech
baseState: honker
openState: honker-open
collection: Keyboard
params:
volume: -1
+ variation: 0.10
+ pitch: 1.10 # low pitch keyboard sounds feel kinda weird
- type: ContainerContainer
containers:
board: !type:Container
False: { visible: false }
- type: PlantHolder
drawWarnings: true
+ wateringSound:
+ path: /Audio/Effects/Fluids/slosh.ogg
+ params:
+ volume: -6
+ variation: 0.20
- type: Destructible
thresholds:
- trigger: