Start rebalancing anomalies - Rock and Flesh anomaly reworked (#24381)

* rework

* bruh

* all fixed

* balance

* bb

* Update TileAnomalySystem.cs

* Update EntityAnomalySystem.cs
This commit is contained in:
Ed
2024-01-23 15:32:05 +03:00
committed by GitHub
parent 1ab06db7ae
commit b02c211e2f
17 changed files with 660 additions and 205 deletions

View File

@@ -0,0 +1,73 @@
using Content.Shared.Maps;
using Robust.Shared.Prototypes;
namespace Content.Shared.Anomaly.Effects.Components;
[RegisterComponent, Access(typeof(SharedTileAnomalySystem))]
public sealed partial class TileSpawnAnomalyComponent : Component
{
/// <summary>
/// All types of floors spawns with their settings
/// </summary>
[DataField]
public List<TileSpawnSettingsEntry> Entries = new();
}
[DataDefinition, Serializable]
public partial record struct TileSpawnSettingsEntry()
{
/// <summary>
/// The tile that is spawned by the anomaly's effect
/// </summary>
[DataField(required: true)]
public ProtoId<ContentTileDefinition> Floor { get; set; } = default!;
/// <summary>
/// The minimum number of tiles that spawn per pulse
/// </summary>
[DataField]
public int MinAmount { get; set; } = 0;
/// <summary>
/// The maximum number of tiles that spawn per pulse
/// scales with severity.
/// </summary>
[DataField]
public int MaxAmount { get; set; } = 1;
/// <summary>
/// The distance from the anomaly in which the tiles will not appear
/// </summary>
[DataField]
public float MinRange { get; set; } = 0f;
/// <summary>
/// The maximum radius the tiles will spawn in.
/// </summary>
[DataField]
public float MaxRange { get; set; } = 1f;
/// <summary>
/// Whether or not anomaly spawns tiles on Pulse
/// </summary>
[DataField]
public bool SpawnOnPulse { get; set; } = false;
/// <summary>
/// Whether or not anomaly spawns tiles on SuperCritical
/// </summary>
[DataField]
public bool SpawnOnSuperCritical { get; set; } = false;
/// <summary>
/// Whether or not anomaly spawns tiles on StabilityChanged
/// </summary>
[DataField]
public bool SpawnOnStabilityChanged { get; set; } = false;
/// <summary>
/// Whether or not anomaly spawns tiles on StabilityChanged
/// </summary>
[DataField]
public bool SpawnOnSeverityChanged { get; set; } = false;
}