Melee refactor (#10897)

Co-authored-by: metalgearsloth <metalgearsloth@gmail.com>
This commit is contained in:
metalgearsloth
2022-09-29 15:51:59 +10:00
committed by GitHub
parent c583b7b361
commit f51248ecaa
140 changed files with 2440 additions and 1824 deletions

View File

@@ -0,0 +1,6 @@
using Content.Shared.Weapons.Ranged.Components;
namespace Content.Server.Weapons.Ranged.Components;
[RegisterComponent]
public sealed class AmmoCounterComponent : SharedAmmoCounterComponent {}

View File

@@ -0,0 +1,11 @@
namespace Content.Server.Weapons.Ranged.Components
{
[RegisterComponent]
public sealed class ChemicalAmmoComponent : Component
{
public const string DefaultSolutionName = "ammo";
[DataField("solution")]
public string SolutionName { get; set; } = DefaultSolutionName;
}
}

View File

@@ -0,0 +1,30 @@
using Content.Shared.Damage.Prototypes;
using Robust.Shared.Audio;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.Dictionary;
namespace Content.Server.Weapons.Ranged.Components;
/// <summary>
/// Plays the specified sound upon receiving damage of that type.
/// </summary>
[RegisterComponent]
public sealed class RangedDamageSoundComponent : Component
{
// TODO: Limb damage changing sound type.
/// <summary>
/// Specified sounds to apply when the entity takes damage with the specified group.
/// Will fallback to defaults if none specified.
/// </summary>
[ViewVariables, DataField("soundGroups",
customTypeSerializer: typeof(PrototypeIdDictionarySerializer<SoundSpecifier, DamageGroupPrototype>))]
public Dictionary<string, SoundSpecifier>? SoundGroups;
/// <summary>
/// Specified sounds to apply when the entity takes damage with the specified type.
/// Will fallback to defaults if none specified.
/// </summary>
[ViewVariables, DataField("soundTypes",
customTypeSerializer: typeof(PrototypeIdDictionarySerializer<SoundSpecifier, DamageTypePrototype>))]
public Dictionary<string, SoundSpecifier>? SoundTypes;
}

View File

@@ -0,0 +1,32 @@
using Robust.Shared.Audio;
namespace Content.Server.Weapons.Ranged.Components;
/// <summary>
/// Responsible for handling recharging a basic entity ammo provider over time.
/// </summary>
[RegisterComponent]
public sealed class RechargeBasicEntityAmmoComponent : Component
{
[ViewVariables(VVAccess.ReadWrite)]
[DataField("minRechargeCooldown")]
public float MinRechargeCooldown = 30f;
[ViewVariables(VVAccess.ReadWrite)]
[DataField("maxRechargeCooldown")]
public float MaxRechargeCooldown = 45f;
[DataField("rechargeSound")]
public SoundSpecifier RechargeSound = new SoundPathSpecifier("/Audio/Magic/forcewall.ogg")
{
Params = AudioParams.Default.WithVolume(-5f)
};
[DataField("accumulatedFrametime")]
public float AccumulatedFrameTime;
/// <summary>
/// Number of seconds until the next recharge.
/// </summary>
[ViewVariables(VVAccess.ReadWrite)]
public float NextRechargeTime = 0f;
}