Removes LoopingSoundComponent. (#4396)

I'm sorry.
This commit is contained in:
Vera Aguilera Puerto
2021-07-31 12:41:59 +02:00
committed by GitHub
parent f93bdcd226
commit dc18997bf8
50 changed files with 120 additions and 380 deletions

View File

@@ -81,7 +81,6 @@ namespace Content.Client.Entry
factory.RegisterClass<SharedCargoConsoleComponent>(); factory.RegisterClass<SharedCargoConsoleComponent>();
factory.RegisterClass<SharedReagentDispenserComponent>(); factory.RegisterClass<SharedReagentDispenserComponent>();
factory.RegisterClass<SharedChemMasterComponent>(); factory.RegisterClass<SharedChemMasterComponent>();
factory.RegisterClass<SharedMicrowaveComponent>();
factory.RegisterClass<SharedGravityGeneratorComponent>(); factory.RegisterClass<SharedGravityGeneratorComponent>();
factory.RegisterClass<SharedAMEControllerComponent>(); factory.RegisterClass<SharedAMEControllerComponent>();

View File

@@ -2,7 +2,7 @@ using Content.Shared.DragDrop;
using Content.Shared.Kitchen.Components; using Content.Shared.Kitchen.Components;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
namespace Content.Client.Kitchen namespace Content.Client.Kitchen.Components
{ {
[RegisterComponent] [RegisterComponent]
internal sealed class KitchenSpikeComponent : SharedKitchenSpikeComponent internal sealed class KitchenSpikeComponent : SharedKitchenSpikeComponent

View File

@@ -0,0 +1,17 @@
using Content.Shared.Kitchen.Components;
using Content.Shared.Sound;
using Robust.Shared.Audio;
using Robust.Shared.GameObjects;
using Robust.Shared.Serialization.Manager.Attributes;
namespace Content.Client.Kitchen.Components
{
[RegisterComponent]
public class MicrowaveComponent : SharedMicrowaveComponent
{
public IPlayingAudioStream? PlayingStream { get; set; }
[DataField("loopingSound")]
public SoundSpecifier LoopingSound = new SoundPathSpecifier("/Audio/Machines/microwave_loop.ogg");
}
}

View File

@@ -0,0 +1,31 @@
using System;
using Content.Client.Kitchen.Components;
using Robust.Shared.Audio;
using Robust.Shared.GameObjects;
using Robust.Shared.Player;
namespace Content.Client.Kitchen.EntitySystems
{
public class MicrowaveSystem : EntitySystem
{
public void StartSoundLoop(MicrowaveComponent microwave)
{
StopSoundLoop(microwave);
microwave.PlayingStream = SoundSystem.Play(Filter.Local(), microwave.LoopingSound.GetSound(), microwave.Owner,
AudioParams.Default.WithAttenuation(1).WithMaxDistance(5).WithLoop(true));
}
public void StopSoundLoop(MicrowaveComponent microwave)
{
try
{
microwave.PlayingStream?.Stop();
}
catch (Exception _)
{
// TODO: HOLY SHIT EXPOSE SOME DISPOSED PROPERTY ON PLAYING STREAM OR SOMETHING.
}
}
}
}

View File

@@ -1,10 +1,10 @@
using Content.Client.Sound; using Content.Client.Kitchen.Components;
using Content.Client.Kitchen.EntitySystems;
using Content.Shared.Kitchen.Components; using Content.Shared.Kitchen.Components;
using Content.Shared.Power; using Content.Shared.Power;
using Content.Shared.Sound;
using JetBrains.Annotations; using JetBrains.Annotations;
using Robust.Client.GameObjects; using Robust.Client.GameObjects;
using Robust.Shared.Audio; using Robust.Shared.GameObjects;
using Robust.Shared.Log; using Robust.Shared.Log;
namespace Content.Client.Kitchen.Visualizers namespace Content.Client.Kitchen.Visualizers
@@ -17,35 +17,33 @@ namespace Content.Client.Kitchen.Visualizers
base.OnChangeData(component); base.OnChangeData(component);
var sprite = component.Owner.GetComponent<ISpriteComponent>(); var sprite = component.Owner.GetComponent<ISpriteComponent>();
var loopingSoundComponent = component.Owner.GetComponentOrNull<LoopingSoundComponent>(); var microwaveComponent = component.Owner.GetComponentOrNull<MicrowaveComponent>();
if (!component.TryGetData(PowerDeviceVisuals.VisualState, out MicrowaveVisualState state)) if (!component.TryGetData(PowerDeviceVisuals.VisualState, out MicrowaveVisualState state))
{ {
state = MicrowaveVisualState.Idle; state = MicrowaveVisualState.Idle;
} }
// The only reason we get the entity system so late is so that tests don't fail... Amazing, huh?
switch (state) switch (state)
{ {
case MicrowaveVisualState.Broken: case MicrowaveVisualState.Broken:
sprite.LayerSetState(MicrowaveVisualizerLayers.BaseUnlit, "mwb"); sprite.LayerSetState(MicrowaveVisualizerLayers.BaseUnlit, "mwb");
loopingSoundComponent?.StopAllSounds(); if(microwaveComponent != null)
EntitySystem.Get<MicrowaveSystem>().StopSoundLoop(microwaveComponent);
break; break;
case MicrowaveVisualState.Idle: case MicrowaveVisualState.Idle:
sprite.LayerSetState(MicrowaveVisualizerLayers.Base, "mw"); sprite.LayerSetState(MicrowaveVisualizerLayers.Base, "mw");
sprite.LayerSetState(MicrowaveVisualizerLayers.BaseUnlit, "mw_unlit"); sprite.LayerSetState(MicrowaveVisualizerLayers.BaseUnlit, "mw_unlit");
loopingSoundComponent?.StopAllSounds(); if(microwaveComponent != null)
EntitySystem.Get<MicrowaveSystem>().StopSoundLoop(microwaveComponent);
break; break;
case MicrowaveVisualState.Cooking: case MicrowaveVisualState.Cooking:
sprite.LayerSetState(MicrowaveVisualizerLayers.Base, "mw"); sprite.LayerSetState(MicrowaveVisualizerLayers.Base, "mw");
sprite.LayerSetState(MicrowaveVisualizerLayers.BaseUnlit, "mw_running_unlit"); sprite.LayerSetState(MicrowaveVisualizerLayers.BaseUnlit, "mw_running_unlit");
var audioParams = AudioParams.Default; if(microwaveComponent != null)
audioParams.Loop = true; EntitySystem.Get<MicrowaveSystem>().StartSoundLoop(microwaveComponent);
var scheduledSound = new ScheduledSound();
scheduledSound.Filename = "/Audio/Machines/microwave_loop.ogg";
scheduledSound.AudioParams = audioParams;
loopingSoundComponent?.StopAllSounds();
loopingSoundComponent?.AddScheduledSound(scheduledSound);
break; break;
default: default:

View File

@@ -1,4 +1,5 @@
using Content.Shared.Light.Component; using Content.Shared.Light.Component;
using Robust.Shared.Audio;
using Robust.Shared.GameObjects; using Robust.Shared.GameObjects;
namespace Content.Client.Light.Components namespace Content.Client.Light.Components
@@ -9,6 +10,6 @@ namespace Content.Client.Light.Components
[RegisterComponent] [RegisterComponent]
public class ExpendableLightComponent : SharedExpendableLightComponent public class ExpendableLightComponent : SharedExpendableLightComponent
{ {
public IPlayingAudioStream? PlayingStream { get; set; }
} }
} }

View File

@@ -1,7 +1,10 @@
using Content.Client.Light.Components; using System;
using Content.Client.Light.Components;
using Content.Shared.Light.Component; using Content.Shared.Light.Component;
using JetBrains.Annotations; using JetBrains.Annotations;
using Robust.Client.GameObjects; using Robust.Client.GameObjects;
using Robust.Shared.Audio;
using Robust.Shared.Player;
namespace Content.Client.Light.Visualizers namespace Content.Client.Light.Visualizers
{ {
@@ -17,7 +20,7 @@ namespace Content.Client.Light.Visualizers
return; return;
} }
if (component.TryGetData(ExpendableLightVisuals.State, out string lightBehaviourID)) if (component.TryGetData(ExpendableLightVisuals.Behavior, out string lightBehaviourID))
{ {
if (component.Owner.TryGetComponent<LightBehaviourComponent>(out var lightBehaviour)) if (component.Owner.TryGetComponent<LightBehaviourComponent>(out var lightBehaviour))
{ {
@@ -33,6 +36,35 @@ namespace Content.Client.Light.Visualizers
} }
} }
} }
void TryStopStream(IPlayingAudioStream? stream)
{
try
{
stream?.Stop();
}
catch (Exception _)
{
// TODO: HOLY SHIT EXPOSE SOME DISPOSED PROPERTY ON PLAYING STREAM OR SOMETHING.
}
}
if (component.TryGetData(ExpendableLightVisuals.State, out ExpendableLightState state)
&& component.Owner.TryGetComponent<ExpendableLightComponent>(out var expendableLight))
{
switch (state)
{
case ExpendableLightState.Lit:
TryStopStream(expendableLight.PlayingStream);
expendableLight.PlayingStream = SoundSystem.Play(Filter.Local(), expendableLight.LoopedSound,
expendableLight.Owner, SharedExpendableLightComponent.LoopedSoundParams.WithLoop(true));
break;
case ExpendableLightState.Dead:
TryStopStream(expendableLight.PlayingStream);
break;
}
}
} }
} }
} }

View File

@@ -1,105 +0,0 @@
using System.Collections.Generic;
using Content.Shared.Physics;
using Content.Shared.Sound;
using Robust.Shared.Audio;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
using Robust.Shared.Network;
using Robust.Shared.Player;
using Robust.Shared.Players;
using Robust.Shared.Random;
using Robust.Shared.Serialization.Manager.Attributes;
namespace Content.Client.Sound
{
[RegisterComponent]
public class LoopingSoundComponent : SharedLoopingSoundComponent
{
[Dependency] private readonly IRobustRandom _random = default!;
private readonly Dictionary<ScheduledSound, IPlayingAudioStream> _audioStreams = new();
[DataField("schedules", true)]
private List<ScheduledSound> _scheduledSounds
{
set => value.ForEach(AddScheduledSound);
get => new();
}
public override void StopAllSounds()
{
foreach (var kvp in _audioStreams)
{
kvp.Key.Play = false;
kvp.Value.Stop();
}
_audioStreams.Clear();
}
public override void StopScheduledSound(string filename)
{
foreach (var kvp in _audioStreams)
{
if (kvp.Key.Filename != filename) continue;
kvp.Key.Play = false;
kvp.Value.Stop();
_audioStreams.Remove(kvp.Key);
}
}
public override void AddScheduledSound(ScheduledSound schedule)
{
Play(schedule);
}
public void Play(ScheduledSound schedule)
{
if (!schedule.Play) return;
Owner.SpawnTimer((int) schedule.Delay + (_random.Next((int) schedule.RandomDelay)),() =>
{
if (!schedule.Play) return; // We make sure this hasn't changed.
if (!_audioStreams.ContainsKey(schedule))
{
_audioStreams.Add(schedule, SoundSystem.Play(Filter.Local(), schedule.Filename, Owner, schedule.AudioParams)!);
}
else
{
_audioStreams[schedule] = SoundSystem.Play(Filter.Local(), schedule.Filename, Owner, schedule.AudioParams)!;
}
if (schedule.Times == 0) return;
if (schedule.Times > 0) schedule.Times--;
Play(schedule);
});
}
public override void HandleNetworkMessage(ComponentMessage message, INetChannel channel, ICommonSession? session = null)
{
base.HandleNetworkMessage(message, channel, session);
switch (message)
{
case ScheduledSoundMessage msg:
AddScheduledSound(msg.Schedule);
break;
case StopSoundScheduleMessage msg:
StopScheduledSound(msg.Filename);
break;
case StopAllSoundsMessage _:
StopAllSounds();
break;
}
}
protected override void Initialize()
{
base.Initialize();
SoundSystem.OcclusionCollisionMask = (int) CollisionGroup.Impassable;
}
}
}

View File

@@ -52,7 +52,6 @@ namespace Content.IntegrationTests.Tests.GameObjects.Components.Mobs
- type: PointLight - type: PointLight
enabled: false enabled: false
radius: 3 radius: 3
- type: LoopingSound
- type: Appearance - type: Appearance
visuals: visuals:
- type: FlashLightVisualizer - type: FlashLightVisualizer

View File

@@ -195,6 +195,9 @@ namespace Content.Server.Kitchen.EntitySystems
while (_uiUpdateQueue.TryDequeue(out var comp)) while (_uiUpdateQueue.TryDequeue(out var comp))
{ {
if(comp.Deleted)
continue;
bool canJuice = false; bool canJuice = false;
bool canGrind = false; bool canGrind = false;
if (comp.BeakerContainer.ContainedEntity != null) if (comp.BeakerContainer.ContainedEntity != null)

View File

@@ -20,8 +20,6 @@ namespace Content.Server.Light.Components
[RegisterComponent] [RegisterComponent]
public class ExpendableLightComponent : SharedExpendableLightComponent, IUse public class ExpendableLightComponent : SharedExpendableLightComponent, IUse
{ {
private static readonly AudioParams LoopedSoundParams = new(0, 1, "Master", 62.5f, 1, true, 0.3f);
/// <summary> /// <summary>
/// Status of light, whether or not it is emitting light. /// Status of light, whether or not it is emitting light.
/// </summary> /// </summary>
@@ -77,18 +75,20 @@ namespace Content.Server.Light.Components
private void UpdateVisualizer() private void UpdateVisualizer()
{ {
_appearance?.SetData(ExpendableLightVisuals.State, CurrentState);
switch (CurrentState) switch (CurrentState)
{ {
case ExpendableLightState.Lit: case ExpendableLightState.Lit:
_appearance?.SetData(ExpendableLightVisuals.State, TurnOnBehaviourID); _appearance?.SetData(ExpendableLightVisuals.Behavior, TurnOnBehaviourID);
break; break;
case ExpendableLightState.Fading: case ExpendableLightState.Fading:
_appearance?.SetData(ExpendableLightVisuals.State, FadeOutBehaviourID); _appearance?.SetData(ExpendableLightVisuals.Behavior, FadeOutBehaviourID);
break; break;
case ExpendableLightState.Dead: case ExpendableLightState.Dead:
_appearance?.SetData(ExpendableLightVisuals.State, string.Empty); _appearance?.SetData(ExpendableLightVisuals.Behavior, string.Empty);
break; break;
} }
} }
@@ -100,12 +100,6 @@ namespace Content.Server.Light.Components
switch (CurrentState) switch (CurrentState)
{ {
case ExpendableLightState.Lit: case ExpendableLightState.Lit:
if (LoopedSound != string.Empty && Owner.TryGetComponent<LoopingLoopingSoundComponent>(out var loopingSound))
{
loopingSound.Play(LoopedSound, LoopedSoundParams);
}
if (LitSound != string.Empty) if (LitSound != string.Empty)
{ {
SoundSystem.Play(Filter.Pvs(Owner), LitSound, Owner); SoundSystem.Play(Filter.Pvs(Owner), LitSound, Owner);
@@ -131,11 +125,6 @@ namespace Content.Server.Light.Components
SoundSystem.Play(Filter.Pvs(Owner), DieSound, Owner); SoundSystem.Play(Filter.Pvs(Owner), DieSound, Owner);
} }
if (LoopedSound != string.Empty && Owner.TryGetComponent<LoopingLoopingSoundComponent>(out var loopSound))
{
loopSound.StopAllSounds();
}
sprite.LayerSetState(0, IconStateSpent); sprite.LayerSetState(0, IconStateSpent);
sprite.LayerSetShader(0, "shaded"); sprite.LayerSetShader(0, "shaded");
sprite.LayerSetVisible(1, false); sprite.LayerSetVisible(1, false);

View File

@@ -1,67 +0,0 @@
using Content.Shared.Sound;
using Robust.Shared.Audio;
using Robust.Shared.GameObjects;
using Robust.Shared.Network;
namespace Content.Server.Sound.Components
{
[RegisterComponent]
public class LoopingLoopingSoundComponent : SharedLoopingSoundComponent
{
/// <summary>
/// Stops all sounds.
/// </summary>
/// <param name="channel">User that will be affected.</param>
public void StopAllSounds(INetChannel? channel)
{
SendNetworkMessage(new StopAllSoundsMessage(), channel);
}
/// <summary>
/// Stops a certain scheduled sound from playing.
/// </summary>
/// <param name="channel">User that will be affected.</param>
public void StopScheduledSound(string filename, INetChannel? channel)
{
SendNetworkMessage(new StopSoundScheduleMessage() {Filename = filename}, channel);
}
/// <summary>
/// Adds an scheduled sound to be played.
/// </summary>
/// <param name="channel">User that will be affected.</param>
public void AddScheduledSound(ScheduledSound schedule, INetChannel? channel)
{
SendNetworkMessage(new ScheduledSoundMessage() {Schedule = schedule}, channel);
}
public override void StopAllSounds()
{
StopAllSounds(null);
}
public override void StopScheduledSound(string filename)
{
StopScheduledSound(filename, null);
}
public override void AddScheduledSound(ScheduledSound schedule)
{
AddScheduledSound(schedule, null);
}
/// <summary>
/// Play an audio file following the entity.
/// </summary>
/// <param name="filename">The resource path to the OGG Vorbis file to play.</param>
/// <param name="channel">User that will be affected.</param>
public void Play(string filename, AudioParams? audioParams = null, INetChannel? channel = null)
{
AddScheduledSound(new ScheduledSound()
{
Filename = filename,
AudioParams = audioParams,
}, channel);
}
}
}

View File

@@ -1,4 +1,8 @@
using System; using System;
using Robust.Shared.Audio;
using Robust.Shared.GameObjects;
using Robust.Shared.GameStates;
using Robust.Shared.Players;
using Robust.Shared.Serialization; using Robust.Shared.Serialization;
using Robust.Shared.Serialization.Manager.Attributes; using Robust.Shared.Serialization.Manager.Attributes;
using Robust.Shared.ViewVariables; using Robust.Shared.ViewVariables;
@@ -8,7 +12,8 @@ namespace Content.Shared.Light.Component
[Serializable, NetSerializable] [Serializable, NetSerializable]
public enum ExpendableLightVisuals public enum ExpendableLightVisuals
{ {
State State,
Behavior
} }
[Serializable, NetSerializable] [Serializable, NetSerializable]
@@ -20,8 +25,11 @@ namespace Content.Shared.Light.Component
Dead Dead
} }
[NetworkedComponent]
public abstract class SharedExpendableLightComponent: Robust.Shared.GameObjects.Component public abstract class SharedExpendableLightComponent: Robust.Shared.GameObjects.Component
{ {
public static readonly AudioParams LoopedSoundParams = new(0, 1, "Master", 62.5f, 1, true, 0.3f);
public sealed override string Name => "ExpendableLight"; public sealed override string Name => "ExpendableLight";
[ViewVariables(VVAccess.ReadOnly)] [ViewVariables(VVAccess.ReadOnly)]
@@ -65,7 +73,7 @@ namespace Content.Shared.Light.Component
[ViewVariables] [ViewVariables]
[DataField("loopedSound")] [DataField("loopedSound")]
protected string LoopedSound { get; set; } = string.Empty; public string LoopedSound { get; set; } = string.Empty;
[ViewVariables] [ViewVariables]
[DataField("dieSound")] [DataField("dieSound")]

View File

@@ -1,116 +0,0 @@
using System;
using Robust.Shared.Audio;
using Robust.Shared.GameObjects;
using Robust.Shared.GameStates;
using Robust.Shared.Serialization;
using Robust.Shared.Serialization.Manager.Attributes;
namespace Content.Shared.Sound
{
[NetworkedComponent()]
public class SharedLoopingSoundComponent : Component
{
public override string Name => "LoopingSound";
/// <summary>
/// Stops all sounds.
/// </summary>
public virtual void StopAllSounds()
{}
/// <summary>
/// Stops a certain scheduled sound from playing.
/// </summary>
public virtual void StopScheduledSound(string filename)
{}
/// <summary>
/// Adds an scheduled sound to be played.
/// </summary>
public virtual void AddScheduledSound(ScheduledSound scheduledSound)
{}
/// <summary>
/// Play an audio file following the entity.
/// </summary>
/// <param name="filename">The resource path to the OGG Vorbis file to play.</param>
public void Play(string filename, AudioParams? audioParams = null)
{
AddScheduledSound(new ScheduledSound()
{
Filename = filename,
AudioParams = audioParams,
});
}
}
[NetSerializable, Serializable]
public class ScheduledSoundMessage : ComponentMessage
{
public ScheduledSound Schedule = new();
public ScheduledSoundMessage()
{
Directed = true;
}
}
[NetSerializable, Serializable]
public class StopSoundScheduleMessage : ComponentMessage
{
public string Filename = string.Empty;
public StopSoundScheduleMessage()
{
Directed = true;
}
}
[NetSerializable, Serializable]
public class StopAllSoundsMessage : ComponentMessage
{
public StopAllSoundsMessage()
{
Directed = true;
}
}
[Serializable, NetSerializable]
[DataDefinition]
public class ScheduledSound
{
[DataField("fileName")]
public string Filename = string.Empty;
/// <summary>
/// The parameters to play the sound with.
/// </summary>
[DataField("audioparams")]
public AudioParams? AudioParams;
/// <summary>
/// Delay in milliseconds before playing the sound,
/// and delay between repetitions if Times is not 0.
/// </summary>
[DataField("delay")]
public uint Delay;
/// <summary>
/// Maximum number of milliseconds to add to the delay randomly.
/// Useful for random ambience noises. Generated value differs from client to client.
/// </summary>
[DataField("randomdelay")]
public uint RandomDelay;
/// <summary>
/// How many times to repeat the sound. If it's 0, it will play the sound once.
/// If it's less than 0, it will repeat the sound indefinitely.
/// If it's greater than 0, it will play the sound n+1 times.
/// </summary>
[DataField("times")]
public int Times;
/// <summary>
/// Whether the sound will play or not.
/// </summary>
public bool Play = true;
}
}

View File

@@ -47,7 +47,6 @@
- type: PointLight - type: PointLight
enabled: false enabled: false
radius: 3 radius: 3
- type: LoopingSound
- type: Appearance - type: Appearance
visuals: visuals:
- type: FlashLightVisualizer - type: FlashLightVisualizer

View File

@@ -15,7 +15,6 @@
- type: PointLight - type: PointLight
enabled: false enabled: false
radius: 3 radius: 3
- type: LoopingSound
- type: Appearance - type: Appearance
visuals: visuals:
- type: FlashLightVisualizer - type: FlashLightVisualizer

View File

@@ -19,7 +19,6 @@
sprite: Clothing/Shoes/Specific/clown.rsi sprite: Clothing/Shoes/Specific/clown.rsi
- type: Clothing - type: Clothing
sprite: Clothing/Shoes/Specific/clown.rsi sprite: Clothing/Shoes/Specific/clown.rsi
- type: LoopingSound
- type: FootstepModifier - type: FootstepModifier
footstepSoundCollection: footstep_clown footstepSoundCollection: footstep_clown

View File

@@ -10,7 +10,6 @@
- type: Puddle - type: Puddle
spill_sound: /Audio/Effects/Fluids/splat.ogg spill_sound: /Audio/Effects/Fluids/splat.ogg
recolor: true recolor: true
- type: LoopingSound
- type: Clickable - type: Clickable
- type: Slippery - type: Slippery
- type: Physics - type: Physics

View File

@@ -387,7 +387,6 @@
# Eek! You can eat them alive for now until someone makes something that detects when # Eek! You can eat them alive for now until someone makes something that detects when
# a mob is dead or something idk # a mob is dead or something idk
- type: Food - type: Food
- type: LoopingSound
- type: SolutionContainer - type: SolutionContainer
contents: contents:
reagents: reagents:

View File

@@ -9,7 +9,6 @@
- type: Sprite - type: Sprite
sprite: Objects/Consumable/Food/Baked/bread.rsi sprite: Objects/Consumable/Food/Baked/bread.rsi
netsync: false netsync: false
- type: LoopingSound
- type: SolutionContainer - type: SolutionContainer
maxVol: 20 maxVol: 20
contents: contents:

View File

@@ -10,7 +10,6 @@
- type: Sprite - type: Sprite
sprite: Objects/Consumable/Food/Baked/cake.rsi sprite: Objects/Consumable/Food/Baked/cake.rsi
netsync: false netsync: false
- type: LoopingSound
- type: SolutionContainer - type: SolutionContainer
maxVol: 20 maxVol: 20
contents: contents:

View File

@@ -13,7 +13,6 @@
- type: Sprite - type: Sprite
sprite: Objects/Consumable/Food/Baked/donut.rsi sprite: Objects/Consumable/Food/Baked/donut.rsi
netsync: false netsync: false
- type: LoopingSound
- type: SolutionContainer - type: SolutionContainer
maxVol: 5 maxVol: 5
contents: contents:

View File

@@ -9,7 +9,6 @@
- type: Sprite - type: Sprite
sprite: Objects/Consumable/Food/Baked/misc.rsi sprite: Objects/Consumable/Food/Baked/misc.rsi
netsync: false netsync: false
- type: LoopingSound
- type: SolutionContainer - type: SolutionContainer
maxVol: 5 maxVol: 5
contents: contents:

View File

@@ -10,7 +10,6 @@
- type: Sprite - type: Sprite
sprite: Objects/Consumable/Food/Baked/pizza.rsi sprite: Objects/Consumable/Food/Baked/pizza.rsi
netsync: false netsync: false
- type: LoopingSound
- type: SolutionContainer - type: SolutionContainer
maxVol: 15 maxVol: 15
contents: contents:

View File

@@ -92,7 +92,6 @@
- box11 - box11
- box12 - box12
# Someday... # Someday...
# - type: LoopingSound
# - type: DamageOnLand # - type: DamageOnLand
# amount: 5 # amount: 5
# - type: DamageOtherOnHit # - type: DamageOtherOnHit

View File

@@ -78,7 +78,6 @@
reagents: reagents:
- ReagentId: Nutriment - ReagentId: Nutriment
Quantity: 15 Quantity: 15
- type: LoopingSound
- type: Food - type: Food
trash: FoodTinPeachesTrash trash: FoodTinPeachesTrash
@@ -127,7 +126,6 @@
reagents: reagents:
- ReagentId: Nutriment - ReagentId: Nutriment
Quantity: 15 Quantity: 15
- type: LoopingSound
- type: Food - type: Food
trash: FoodTinPeachesMaintTrash trash: FoodTinPeachesMaintTrash
@@ -176,7 +174,6 @@
reagents: reagents:
- ReagentId: Nutriment - ReagentId: Nutriment
Quantity: 15 Quantity: 15
- type: LoopingSound
- type: Food - type: Food
trash: FoodTinBeansTrash trash: FoodTinBeansTrash
@@ -227,7 +224,6 @@
reagents: reagents:
- ReagentId: Nutriment - ReagentId: Nutriment
Quantity: 15 Quantity: 15
- type: LoopingSound
- type: Food - type: Food
trash: FoodTinMRETrash trash: FoodTinMRETrash

View File

@@ -10,7 +10,6 @@
- type: Sprite - type: Sprite
sprite: Objects/Consumable/Food/burger.rsi sprite: Objects/Consumable/Food/burger.rsi
netsync: false netsync: false
- type: LoopingSound
- type: SolutionContainer - type: SolutionContainer
maxVol: 15 maxVol: 15
contents: contents:

View File

@@ -23,7 +23,6 @@
reagents: reagents:
- ReagentId: Egg - ReagentId: Egg
Quantity: 5 Quantity: 5
- type: LoopingSound
- type: DamageOnLand - type: DamageOnLand
amount: 1 amount: 1
- type: DamageOtherOnHit - type: DamageOtherOnHit

View File

@@ -9,7 +9,6 @@
- type: Sprite - type: Sprite
sprite: Objects/Consumable/Food/frozen.rsi sprite: Objects/Consumable/Food/frozen.rsi
netsync: false netsync: false
- type: LoopingSound
- type: SolutionContainer - type: SolutionContainer
maxVol: 20 # For sprinkles or something? Idk. maxVol: 20 # For sprinkles or something? Idk.
contents: contents:

View File

@@ -9,7 +9,6 @@
- type: Sprite - type: Sprite
sprite: Objects/Consumable/Food/meat.rsi sprite: Objects/Consumable/Food/meat.rsi
netsync: false netsync: false
- type: LoopingSound
- type: SolutionContainer - type: SolutionContainer
maxVol: 20 maxVol: 20
contents: contents:

View File

@@ -11,7 +11,6 @@
- type: Sprite - type: Sprite
sprite: Objects/Consumable/Food/noodles.rsi sprite: Objects/Consumable/Food/noodles.rsi
netsync: false netsync: false
- type: LoopingSound
- type: SolutionContainer - type: SolutionContainer
maxVol: 20 maxVol: 20
contents: contents:

View File

@@ -10,7 +10,6 @@
- type: Sprite - type: Sprite
sprite: Objects/Consumable/Food/skewer.rsi sprite: Objects/Consumable/Food/skewer.rsi
netsync: false netsync: false
- type: LoopingSound
- type: SolutionContainer - type: SolutionContainer
maxVol: 20 maxVol: 20
contents: contents:

View File

@@ -9,7 +9,6 @@
- type: Sprite - type: Sprite
sprite: Objects/Consumable/Food/snacks.rsi sprite: Objects/Consumable/Food/snacks.rsi
netsync: false netsync: false
- type: LoopingSound
- type: SolutionContainer - type: SolutionContainer
maxVol: 30 # Room for extra condiments maxVol: 30 # Room for extra condiments
contents: contents:

View File

@@ -5,7 +5,6 @@
components: components:
- type: Food - type: Food
trash: FoodBowlBig trash: FoodBowlBig
- type: LoopingSound
- type: SolutionContainer - type: SolutionContainer
maxVol: 20 maxVol: 20
contents: contents:

View File

@@ -6,7 +6,6 @@
id: DrinkBottleBaseEmpty id: DrinkBottleBaseEmpty
description: That's an empty bottle. description: That's an empty bottle.
components: components:
- type: LoopingSound
- type: Sprite - type: Sprite
state: icon state: icon
- type: SolutionContainer - type: SolutionContainer

View File

@@ -28,7 +28,6 @@
interfaces: interfaces:
- key: enum.PDAUiKey.Key - key: enum.PDAUiKey.Key
type: PDABoundUserInterface type: PDABoundUserInterface
- type: LoopingSound
- type: entity - type: entity
parent: BasePDA parent: BasePDA

View File

@@ -10,7 +10,6 @@
- type: Item - type: Item
sprite: Objects/Misc/skub.rsi sprite: Objects/Misc/skub.rsi
- type: ItemCooldown - type: ItemCooldown
- type: LoopingSound
- type: EmitSoundOnUse - type: EmitSoundOnUse
sound: sound:
path: /Audio/Items/skub.ogg path: /Audio/Items/skub.ogg

View File

@@ -13,7 +13,6 @@
- type: EmitSoundOnActivate - type: EmitSoundOnActivate
sound: sound:
collection: ToySqueak collection: ToySqueak
- type: LoopingSound
- type: ItemCooldown - type: ItemCooldown
- type: UseDelay - type: UseDelay
delay: 1.0 delay: 1.0
@@ -91,7 +90,6 @@
sprite: Objects/Fun/toys.rsi sprite: Objects/Fun/toys.rsi
state: plushie_snake state: plushie_snake
- type: ItemCooldown - type: ItemCooldown
- type: LoopingSound
- type: EmitSoundOnUse - type: EmitSoundOnUse
sound: sound:
path: /Audio/Items/Toys/rattle.ogg path: /Audio/Items/Toys/rattle.ogg
@@ -108,7 +106,6 @@
sprite: Objects/Fun/toys.rsi sprite: Objects/Fun/toys.rsi
state: toy_mouse state: toy_mouse
- type: ItemCooldown - type: ItemCooldown
- type: LoopingSound
- type: EmitSoundOnUse - type: EmitSoundOnUse
sound: sound:
path: /Audio/Items/Toys/mousesqueek.ogg path: /Audio/Items/Toys/mousesqueek.ogg
@@ -125,7 +122,6 @@
sprite: Objects/Fun/toys.rsi sprite: Objects/Fun/toys.rsi
state: plushie_vox state: plushie_vox
- type: ItemCooldown - type: ItemCooldown
- type: LoopingSound
- type: EmitSoundOnUse - type: EmitSoundOnUse
sound: sound:
path: /Audio/Voice/Vox/shriek1.ogg path: /Audio/Voice/Vox/shriek1.ogg
@@ -151,7 +147,6 @@
sound: sound:
path: /Audio/Items/Toys/helpme.ogg path: /Audio/Items/Toys/helpme.ogg
- type: ItemCooldown - type: ItemCooldown
- type: LoopingSound
- type: EmitSoundOnUse - type: EmitSoundOnUse
sound: sound:
path: /Audio/Items/Toys/helpme.ogg path: /Audio/Items/Toys/helpme.ogg
@@ -173,7 +168,6 @@
sound: sound:
path: /Audio/Items/Toys/hellothere.ogg path: /Audio/Items/Toys/hellothere.ogg
- type: ItemCooldown - type: ItemCooldown
- type: LoopingSound
- type: EmitSoundOnUse - type: EmitSoundOnUse
sound: sound:
path: /Audio/Items/Toys/hellothere.ogg path: /Audio/Items/Toys/hellothere.ogg
@@ -195,7 +189,6 @@
sound: sound:
path: /Audio/Items/Toys/thankyou.ogg path: /Audio/Items/Toys/thankyou.ogg
- type: ItemCooldown - type: ItemCooldown
- type: LoopingSound
- type: EmitSoundOnUse - type: EmitSoundOnUse
sound: sound:
path: /Audio/Items/Toys/thankyou.ogg path: /Audio/Items/Toys/thankyou.ogg
@@ -217,7 +210,6 @@
sound: sound:
path: /Audio/Items/Toys/verygood.ogg path: /Audio/Items/Toys/verygood.ogg
- type: ItemCooldown - type: ItemCooldown
- type: LoopingSound
- type: EmitSoundOnUse - type: EmitSoundOnUse
sound: sound:
path: /Audio/Items/Toys/verygood.ogg path: /Audio/Items/Toys/verygood.ogg
@@ -239,7 +231,6 @@
sound: sound:
path: /Audio/Items/Toys/imsorry.ogg path: /Audio/Items/Toys/imsorry.ogg
- type: ItemCooldown - type: ItemCooldown
- type: LoopingSound
- type: EmitSoundOnUse - type: EmitSoundOnUse
sound: sound:
path: /Audio/Items/Toys/imsorry.ogg path: /Audio/Items/Toys/imsorry.ogg
@@ -311,7 +302,6 @@
sprite: Objects/Fun/toys.rsi sprite: Objects/Fun/toys.rsi
state: ian state: ian
- type: ItemCooldown - type: ItemCooldown
- type: LoopingSound
- type: EmitSoundOnUse - type: EmitSoundOnUse
sound: sound:
path: /Audio/Items/Toys/ian.ogg path: /Audio/Items/Toys/ian.ogg

View File

@@ -29,7 +29,6 @@
- type: Item - type: Item
sprite: Objects/Misc/torch.rsi sprite: Objects/Misc/torch.rsi
HeldPrefix: unlit HeldPrefix: unlit
- type: LoopingSound
- type: Construction - type: Construction
graph: lightTorch graph: lightTorch
node: torch node: torch

View File

@@ -32,7 +32,6 @@
sprite: Objects/Misc/flare.rsi sprite: Objects/Misc/flare.rsi
color: "#FF0000" color: "#FF0000"
HeldPrefix: unlit HeldPrefix: unlit
- type: LoopingSound
- type: Appearance - type: Appearance
visuals: visuals:
- type: ExpendableLightVisualizer - type: ExpendableLightVisualizer

View File

@@ -23,7 +23,6 @@
- type: PointLight - type: PointLight
enabled: false enabled: false
radius: 3 radius: 3
- type: LoopingSound
- type: Appearance - type: Appearance
visuals: visuals:
- type: FlashLightVisualizer - type: FlashLightVisualizer

View File

@@ -23,7 +23,6 @@
radius: 3 radius: 3
energy: 2.5 energy: 2.5
color: "#FFC458" color: "#FFC458"
- type: LoopingSound
- type: Appearance - type: Appearance
visuals: visuals:
- type: LanternVisualizer - type: LanternVisualizer
@@ -39,4 +38,3 @@
radius: 5 radius: 5
energy: 10 energy: 10
color: "#FFC458" color: "#FFC458"
- type: LoopingSound

View File

@@ -17,4 +17,3 @@
size: 24 size: 24
sprite: Objects/Weapons/Melee/pickaxe.rsi sprite: Objects/Weapons/Melee/pickaxe.rsi
prefix: inhand prefix: inhand
- type: LoopingSound

View File

@@ -26,7 +26,6 @@
interfaces: interfaces:
- key: enum.ReagentDispenserUiKey.Key - key: enum.ReagentDispenserUiKey.Key
type: ReagentDispenserBoundUserInterface type: ReagentDispenserBoundUserInterface
- type: LoopingSound
- type: Anchorable - type: Anchorable
- type: Pullable - type: Pullable
- type: Damageable - type: Damageable

View File

@@ -11,7 +11,6 @@
- type: Appearance - type: Appearance
visuals: visuals:
- type: MicrowaveVisualizer - type: MicrowaveVisualizer
- type: LoopingSound
- type: UserInterface - type: UserInterface
interfaces: interfaces:
- key: enum.MicrowaveUiKey.Key - key: enum.MicrowaveUiKey.Key

View File

@@ -14,7 +14,6 @@
- type: Appearance - type: Appearance
visuals: visuals:
- type: ReagentGrinderVisualizer - type: ReagentGrinderVisualizer
- type: LoopingSound
- type: Physics - type: Physics
fixtures: fixtures:
- shape: - shape:

View File

@@ -57,4 +57,3 @@
- type: StorageVisualizer - type: StorageVisualizer
state_open: generic_open state_open: generic_open
state_closed: generic_door state_closed: generic_door
- type: LoopingSound

View File

@@ -49,4 +49,3 @@
- type: StorageVisualizer - type: StorageVisualizer
state_open: crate_open state_open: crate_open
state_closed: crate_door state_closed: crate_door
- type: LoopingSound

View File

@@ -105,7 +105,6 @@
openSound: /Audio/Items/deconstruct.ogg openSound: /Audio/Items/deconstruct.ogg
trayPrototype: CrematoriumTray trayPrototype: CrematoriumTray
doSoulBeep: false doSoulBeep: false
- type: LoopingSound
- type: Appearance - type: Appearance
visuals: visuals:
- type: CrematoriumVisualizer - type: CrematoriumVisualizer

View File

@@ -16,7 +16,6 @@
!type:PhysShapeAabb !type:PhysShapeAabb
bounds: "-0.45, -0.15, 0.45, 0.35" bounds: "-0.45, -0.15, 0.45, 0.35"
layer: [ Passable ] layer: [ Passable ]
- type: LoopingSound
- type: Sprite - type: Sprite
sprite: Structures/Wallmounts/Lighting/light_tube.rsi sprite: Structures/Wallmounts/Lighting/light_tube.rsi
layers: layers: