Ion storm event (#20277)

* ion storm event prototype + locale

* add lawsets

* use lawsets, make borgs ion storm targets

* ion storm rule and ion storm target

* lawset prototype

* use lawsets

* update silicon law system to use lawsets and support ion storm event

* new toys

* fix

* more fix

* fixy

* ion storm admin logging

* assigning laws makes borg provide its own laws, other stuff

* 1h reoccurence

* 50% chance

* better call saul

* emagLaws is required

* add announcment audio

* fixy

* family friendly gaming

* fixy

* address reviews

* fixy

* more fixy and no erp

* pro

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>
This commit is contained in:
deltanedas
2023-10-27 03:40:13 +01:00
committed by GitHub
parent 7144894173
commit b9af991e04
18 changed files with 1675 additions and 58 deletions

View File

@@ -1,7 +1,6 @@
using Content.Shared.Actions;
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
namespace Content.Shared.Silicons.Laws.Components;
@@ -14,19 +13,19 @@ public sealed partial class SiliconLawBoundComponent : Component
/// <summary>
/// The sidebar action that toggles the laws screen.
/// </summary>
[DataField("viewLawsAction", customTypeSerializer: typeof(PrototypeIdSerializer<EntityPrototype>))]
public string ViewLawsAction = "ActionViewLaws";
[DataField]
public EntProtoId ViewLawsAction = "ActionViewLaws";
/// <summary>
/// The action for toggling laws. Stored here so we can remove it later.
/// </summary>
[DataField("viewLawsActionEntity")]
[DataField]
public EntityUid? ViewLawsActionEntity;
/// <summary>
/// The last entity that provided laws to this entity.
/// </summary>
[DataField("lastLawProvider")]
[DataField]
public EntityUid? LastLawProvider;
}
@@ -43,7 +42,7 @@ public record struct GetSiliconLawsEvent(EntityUid Entity)
{
public EntityUid Entity = Entity;
public readonly List<SiliconLaw> Laws = new();
public SiliconLawset Laws = new();
public bool Handled = false;
}