More anomalies (#13766)
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
using Robust.Shared.Audio;
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
namespace Content.Shared.Anomaly.Effects.Components;
|
||||
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
[Access(typeof(BluespaceAnomalySystem))]
|
||||
public sealed class BluespaceAnomalyComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// The maximum radius that the shuffle effect will extend for
|
||||
/// scales with stability
|
||||
/// </summary>
|
||||
[DataField("maxShuffleRadius"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public float MaxShuffleRadius = 10;
|
||||
|
||||
/// <summary>
|
||||
/// The maximum MAX distance the portal this anomaly is tied to can teleport you.
|
||||
/// </summary>
|
||||
[DataField("maxPortalRadius"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public float MaxPortalRadius = 25;
|
||||
|
||||
/// <summary>
|
||||
/// The minimum MAX distance the portal this anomaly is tied to can teleport you.
|
||||
/// </summary>
|
||||
[DataField("minPortalRadius"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public float MinPortalRadius = 10;
|
||||
|
||||
/// <summary>
|
||||
/// How far the supercritical event can teleport you
|
||||
/// </summary>
|
||||
[DataField("superCriticalTeleportRadius"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public float SupercriticalTeleportRadius = 50f;
|
||||
|
||||
/// <summary>
|
||||
/// The sound played after players are shuffled/teleported around
|
||||
/// </summary>
|
||||
[DataField("teleportSound"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public SoundSpecifier TeleportSound = new SoundPathSpecifier("/Audio/Effects/teleport_arrival.ogg");
|
||||
}
|
||||
@@ -1,14 +1,41 @@
|
||||
namespace Content.Shared.Anomaly.Effects.Components;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom;
|
||||
|
||||
namespace Content.Shared.Anomaly.Effects.Components;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed class ElectricityAnomalyComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// The maximum radius of the passive electrocution effect
|
||||
/// scales with stability
|
||||
/// </summary>
|
||||
[DataField("maxElectrocutionRange"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public float MaxElectrocuteRange = 6f;
|
||||
public float MaxElectrocuteRange = 7f;
|
||||
|
||||
/// <summary>
|
||||
/// The maximum amount of damage the electrocution can do
|
||||
/// scales with severity
|
||||
/// </summary>
|
||||
[DataField("maxElectrocuteDamage"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public float MaxElectrocuteDamage = 20f;
|
||||
|
||||
/// <summary>
|
||||
/// The maximum amount of time the electrocution lasts
|
||||
/// scales with severity
|
||||
/// </summary>
|
||||
[DataField("maxElectrocuteDuration"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public TimeSpan MaxElectrocuteDuration = TimeSpan.FromSeconds(8);
|
||||
|
||||
/// <summary>
|
||||
/// The maximum chance that each second, when in range of the anomaly, you will be electrocuted.
|
||||
/// scales with stability
|
||||
/// </summary>
|
||||
[DataField("passiveElectrocutionChance"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public float PassiveElectrocutionChance = 0.05f;
|
||||
|
||||
/// <summary>
|
||||
/// Used for tracking seconds, so that we can shock people in a non-tick-dependent way.
|
||||
/// </summary>
|
||||
[DataField("nextSecond", customTypeSerializer: typeof(TimeOffsetSerializer)), ViewVariables(VVAccess.ReadWrite)]
|
||||
public TimeSpan NextSecond = TimeSpan.Zero;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
using Content.Shared.Maps;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
||||
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype.List;
|
||||
|
||||
namespace Content.Shared.Anomaly.Effects.Components;
|
||||
|
||||
[RegisterComponent]
|
||||
public sealed class FleshAnomalyComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// A list of entities that are random picked to be spawned on each pulse
|
||||
/// </summary>
|
||||
[DataField("spawns", required: true, customTypeSerializer: typeof(PrototypeIdListSerializer<EntityPrototype>)), ViewVariables(VVAccess.ReadWrite)]
|
||||
public List<string> Spawns = new();
|
||||
|
||||
/// <summary>
|
||||
/// The maximum number of entities that spawn per pulse
|
||||
/// scales with severity.
|
||||
/// </summary>
|
||||
[DataField("maxSpawnAmount"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public int MaxSpawnAmount = 8;
|
||||
|
||||
/// <summary>
|
||||
/// The maximum radius the entities will spawn in.
|
||||
/// Also governs the maximum reach of flesh tiles
|
||||
/// scales with stability
|
||||
/// </summary>
|
||||
[DataField("spawnRange"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public float SpawnRange = 4f;
|
||||
|
||||
/// <summary>
|
||||
/// The tile that is spawned by the anomaly's effect
|
||||
/// </summary>
|
||||
[DataField("fleshTileId", customTypeSerializer: typeof(PrototypeIdSerializer<ContentTileDefinition>)), ViewVariables(VVAccess.ReadWrite)]
|
||||
public string FleshTileId = "FloorFlesh";
|
||||
|
||||
/// <summary>
|
||||
/// The entity spawned when the anomaly goes supercritical
|
||||
/// </summary>
|
||||
[DataField("superCriticalSpawn", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>)), ViewVariables(VVAccess.ReadWrite)]
|
||||
public string SupercriticalSpawn = "FleshKudzu";
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
namespace Content.Shared.Anomaly.Effects.Components;
|
||||
using Robust.Shared.GameStates;
|
||||
|
||||
[RegisterComponent]
|
||||
namespace Content.Shared.Anomaly.Effects.Components;
|
||||
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed class GravityAnomalyComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
|
||||
@@ -13,7 +13,7 @@ public sealed class PyroclasticAnomalyComponent : Component
|
||||
/// I have no clue if this is balanced.
|
||||
/// </remarks>
|
||||
[DataField("heatPerSecond")]
|
||||
public float HeatPerSecond = 50;
|
||||
public float HeatPerSecond = 25;
|
||||
|
||||
/// <summary>
|
||||
/// The maximum distance from which you can be ignited by the anomaly.
|
||||
@@ -50,5 +50,5 @@ public sealed class PyroclasticAnomalyComponent : Component
|
||||
/// The amount of gas released when the anomaly goes supercritical
|
||||
/// </summary>
|
||||
[DataField("supercriticalMoleAmount")]
|
||||
public float SupercriticalMoleAmount = 50f;
|
||||
public float SupercriticalMoleAmount = 75f;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user