CS fixes in YML issues everywhere
This commit is contained in:
parent
a7733e1a37
commit
ccdb1b161d
|
|
@ -5,9 +5,9 @@ using Content.Server.Atmos.Components;
|
|||
using Content.Server.Atmos.EntitySystems;
|
||||
using Content.Server.Body.Components;
|
||||
using Content.Server.Body.Systems;
|
||||
using Content.Server.Botany;
|
||||
using Content.Server.Botany.Components;
|
||||
using Content.Server.Botany.Systems;
|
||||
using Content.Server.Botany;
|
||||
using Content.Server.Chat.Systems;
|
||||
using Content.Server.Emp;
|
||||
using Content.Server.Explosion.EntitySystems;
|
||||
|
|
@ -28,17 +28,19 @@ using Content.Server.Zombies;
|
|||
using Content.Shared.Atmos;
|
||||
using Content.Shared.Audio;
|
||||
using Content.Shared.Coordinates.Helpers;
|
||||
using Content.Shared.EntityEffects;
|
||||
using Content.Shared.EntityEffects.EffectConditions;
|
||||
using Content.Shared.EntityEffects.Effects;
|
||||
using Content.Shared.EntityEffects.Effects.PlantMetabolism;
|
||||
using Content.Shared.EntityEffects.Effects.StatusEffects;
|
||||
using Content.Shared.EntityEffects.Effects;
|
||||
using Content.Shared.EntityEffects;
|
||||
using Content.Shared.Humanoid;
|
||||
using Content.Shared.Maps;
|
||||
using Content.Shared.Mind.Components;
|
||||
using Content.Shared.Nyanotrasen.Chemistry.Effects;
|
||||
using Content.Shared.Popups;
|
||||
using Content.Shared.Random;
|
||||
using Content.Shared.Xenoarchaeology.Artifact;
|
||||
using Content.Shared.Xenoarchaeology.Artifact.Components;
|
||||
using Content.Shared.Zombies;
|
||||
using Robust.Server.GameObjects;
|
||||
using Robust.Shared.Audio;
|
||||
|
|
@ -47,9 +49,8 @@ using Robust.Shared.GameObjects;
|
|||
using Robust.Shared.Map;
|
||||
using Robust.Shared.Prototypes;
|
||||
using Robust.Shared.Random;
|
||||
|
||||
using TemperatureCondition = Content.Shared.EntityEffects.EffectConditions.Temperature; // disambiguate the namespace
|
||||
using PolymorphEffect = Content.Shared.EntityEffects.Effects.Polymorph;
|
||||
using TemperatureCondition = Content.Shared.EntityEffects.EffectConditions.Temperature; // disambiguate the namespace
|
||||
|
||||
namespace Content.Server.EntityEffects;
|
||||
|
||||
|
|
@ -999,8 +1000,23 @@ public sealed class EntityEffectSystem : EntitySystem
|
|||
|
||||
private void OnActivateArtifact(ref ExecuteEntityEffectEvent<ActivateArtifact> args)
|
||||
{
|
||||
var artifact = args.Args.EntityManager.EntitySysManager.GetEntitySystem<ArtifactSystem>();
|
||||
artifact.TryActivateArtifact(args.Args.TargetEntity, logMissing: false);
|
||||
// Get the XenoArtifact system
|
||||
var xenoArtifactSystem = EntityManager.EntitySysManager.GetEntitySystem<SharedXenoArtifactSystem>();
|
||||
|
||||
// Make sure the target entity has a XenoArtifactComponent
|
||||
if (!TryComp<XenoArtifactComponent>(args.Args.TargetEntity, out var artifactComp))
|
||||
return;
|
||||
|
||||
// Wrap the entity and component in the Entity<> type
|
||||
var artifactEntity = new Entity<XenoArtifactComponent>(args.Args.TargetEntity, artifactComp);
|
||||
|
||||
// Try to activate the artifact
|
||||
xenoArtifactSystem.TryActivateXenoArtifact(
|
||||
artifact: artifactEntity,
|
||||
user: null, // no performer info in the effect
|
||||
target: args.Args.TargetEntity,
|
||||
coordinates: Transform(args.Args.TargetEntity).Coordinates
|
||||
);
|
||||
}
|
||||
|
||||
// Nyanotrasen
|
||||
|
|
|
|||
|
|
@ -231,7 +231,7 @@ public sealed partial class InstrumentSystem : SharedInstrumentSystem
|
|||
if (msg.Value)
|
||||
{
|
||||
// Prevent stuck notes when turning off a channel... Shrimple.
|
||||
RaiseNetworkEvent(new InstrumentMidiEventEvent(msg.Uid, new []{RobustMidiEvent.AllNotesOff((byte)msg.Channel, 0)}));
|
||||
RaiseNetworkEvent(new InstrumentMidiEventEvent(msg.Uid, new[] { RobustMidiEvent.AllNotesOff((byte)msg.Channel, 0) }));
|
||||
}
|
||||
|
||||
Dirty(uid, instrument);
|
||||
|
|
@ -277,7 +277,7 @@ public sealed partial class InstrumentSystem : SharedInstrumentSystem
|
|||
var instrumentQuery = EntityManager.GetEntityQuery<InstrumentComponent>();
|
||||
|
||||
if (!TryComp(uid, out InstrumentComponent? originInstrument)
|
||||
|| originInstrument.InstrumentPlayer is not {} originPlayer)
|
||||
|| originInstrument.InstrumentPlayer is not { } originPlayer)
|
||||
return Array.Empty<(NetEntity, string)>();
|
||||
|
||||
// It's probably faster to get all possible active instruments than all entities in range
|
||||
|
|
@ -292,7 +292,7 @@ public sealed partial class InstrumentSystem : SharedInstrumentSystem
|
|||
continue;
|
||||
|
||||
// We want to use the instrument player's name.
|
||||
if (instrument.InstrumentPlayer is not {} playerUid)
|
||||
if (instrument.InstrumentPlayer is not { } playerUid)
|
||||
continue;
|
||||
|
||||
// Maybe a bit expensive but oh well GetBands is queued and has a timer anyway.
|
||||
|
|
@ -320,7 +320,7 @@ public sealed partial class InstrumentSystem : SharedInstrumentSystem
|
|||
var netUid = GetNetEntity(uid);
|
||||
|
||||
// Reset puppet instruments too.
|
||||
RaiseNetworkEvent(new InstrumentMidiEventEvent(netUid, new[]{RobustMidiEvent.SystemReset(0)}));
|
||||
RaiseNetworkEvent(new InstrumentMidiEventEvent(netUid, new[] { RobustMidiEvent.SystemReset(0) }));
|
||||
|
||||
RaiseNetworkEvent(new InstrumentStopMidiEvent(netUid));
|
||||
}
|
||||
|
|
@ -371,12 +371,12 @@ public sealed partial class InstrumentSystem : SharedInstrumentSystem
|
|||
|
||||
if (instrument.RespectMidiLimits)
|
||||
{
|
||||
if (instrument.LaggedBatches == (int) (MaxMidiLaggedBatches * (1 / 3d) + 1))
|
||||
if (instrument.LaggedBatches == (int)(MaxMidiLaggedBatches * (1 / 3d) + 1))
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("instrument-component-finger-cramps-light-message"),
|
||||
uid, attached, PopupType.SmallCaution);
|
||||
}
|
||||
else if (instrument.LaggedBatches == (int) (MaxMidiLaggedBatches * (2 / 3d) + 1))
|
||||
else if (instrument.LaggedBatches == (int)(MaxMidiLaggedBatches * (2 / 3d) + 1))
|
||||
{
|
||||
_popup.PopupEntity(Loc.GetString("instrument-component-finger-cramps-serious-message"),
|
||||
uid, attached, PopupType.MediumCaution);
|
||||
|
|
@ -430,7 +430,7 @@ public sealed partial class InstrumentSystem : SharedInstrumentSystem
|
|||
var query = AllEntityQuery<ActiveInstrumentComponent, InstrumentComponent>();
|
||||
while (query.MoveNext(out var uid, out _, out var instrument))
|
||||
{
|
||||
if (instrument.Master is {} master)
|
||||
if (instrument.Master is { } master)
|
||||
{
|
||||
if (Deleted(master))
|
||||
{
|
||||
|
|
@ -456,7 +456,7 @@ public sealed partial class InstrumentSystem : SharedInstrumentSystem
|
|||
(instrument.BatchesDropped >= MaxMidiBatchesDropped
|
||||
|| instrument.LaggedBatches >= MaxMidiLaggedBatches))
|
||||
{
|
||||
if (instrument.InstrumentPlayer is {Valid: true} mob)
|
||||
if (instrument.InstrumentPlayer is { Valid: true } mob)
|
||||
{
|
||||
_stuns.TryParalyze(mob, TimeSpan.FromSeconds(1), true);
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using Content.Server.Cargo.Systems;
|
||||
using Content.Shared.Cargo;
|
||||
using Content.Shared.Xenoarchaeology.Artifact;
|
||||
using Content.Shared.Xenoarchaeology.Artifact.Components;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
using Content.Server._DV.Xenoarchaeology.XenoArtifacts.Effects.Components;
|
||||
using Content.Server.Xenoarchaeology.XenoArtifacts.Events;
|
||||
using Content.Shared.Xenoarchaeology.Artifact;
|
||||
using Content.Shared.Psionics.Glimmer;
|
||||
|
||||
namespace Content.Server._DV.Xenoarchaeology.XenoArtifacts.Effects.Systems;
|
||||
|
|
@ -12,10 +12,10 @@ public sealed class GlimmerArtifactSystem : EntitySystem
|
|||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<GlimmerArtifactComponent, ArtifactActivatedEvent>(OnActivated);
|
||||
SubscribeLocalEvent<GlimmerArtifactComponent, XenoArtifactActivatedEvent>(OnActivated);
|
||||
}
|
||||
|
||||
private void OnActivated(Entity<GlimmerArtifactComponent> ent, ref ArtifactActivatedEvent args)
|
||||
private void OnActivated(Entity<GlimmerArtifactComponent> ent, ref XenoArtifactActivatedEvent args)
|
||||
{
|
||||
var range = ent.Comp.Range;
|
||||
var current = _glimmer.Glimmer;
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
using System.Linq;
|
||||
using Content.Server._DV.Xenoarchaeology.XenoArtifacts.Effects.Components;
|
||||
using Content.Server.Xenoarchaeology.XenoArtifacts;
|
||||
using Content.Server.Xenoarchaeology.XenoArtifacts.Events;
|
||||
using Content.Server.Psionics;
|
||||
using Content.Shared.Xenoarchaeology.Artifact;
|
||||
using Content.Shared.Xenoarchaeology.Artifact.Components;
|
||||
|
||||
public sealed class PsionicProducingArtifactSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly ArtifactSystem _artifact = default!;
|
||||
[Dependency] private readonly SharedXenoArtifactSystem _artifact = default!;
|
||||
[Dependency] private readonly EntityLookupSystem _lookup = default!;
|
||||
[Dependency] private readonly PsionicsSystem _psionics = default!;
|
||||
|
||||
|
|
@ -15,24 +16,39 @@ public sealed class PsionicProducingArtifactSystem : EntitySystem
|
|||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<PsionicProducingArtifactComponent, ArtifactActivatedEvent>(OnActivated);
|
||||
SubscribeLocalEvent<PsionicProducingArtifactComponent, XenoArtifactActivatedEvent>(OnActivated);
|
||||
}
|
||||
|
||||
private void OnActivated(Entity<PsionicProducingArtifactComponent> ent, ref ArtifactActivatedEvent args)
|
||||
private void OnActivated(Entity<PsionicProducingArtifactComponent> ent, ref XenoArtifactActivatedEvent args)
|
||||
{
|
||||
var (uid, comp) = ent;
|
||||
if (!_artifact.TryGetNodeData(uid, NodeDataPsionicAmount, out int amount))
|
||||
amount = 0;
|
||||
|
||||
if (amount >= comp.Limit)
|
||||
// Resolve the artifact entity from the node
|
||||
if (!TryComp<XenoArtifactComponent>(uid, out var artifactComp))
|
||||
return;
|
||||
|
||||
var artifactEntity = new Entity<XenoArtifactComponent>(uid, artifactComp);
|
||||
|
||||
// Pick first active node
|
||||
var node = _artifact.GetActiveNodes(artifactEntity).FirstOrDefault();
|
||||
if (node == null)
|
||||
return;
|
||||
|
||||
// Track psionic usage using ConsumedResearchValue
|
||||
var currentAmount = _artifact.GetResearchValue(node);
|
||||
|
||||
if (currentAmount >= comp.Limit)
|
||||
return;
|
||||
|
||||
var coords = Transform(uid).Coordinates;
|
||||
|
||||
foreach (var target in _lookup.GetEntitiesInRange<PotentialPsionicComponent>(coords, comp.Range))
|
||||
{
|
||||
_psionics.TryMakePsionic(target);
|
||||
}
|
||||
|
||||
_artifact.SetNodeData(uid, NodeDataPsionicAmount, amount + 1);
|
||||
// Update node usage
|
||||
_artifact.SetConsumedResearchValue(node, currentAmount + 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,14 @@
|
|||
using Content.Server._DV.Xenoarchaeology.XenoArtifacts.Triggers.Components;
|
||||
using Content.Server.Nyanotrasen.StationEvents.Events;
|
||||
using Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems;
|
||||
using Content.Server.Xenoarchaeology.Artifact;
|
||||
using Content.Shared.Abilities.Psionics;
|
||||
using Content.Shared.Xenoarchaeology.Artifact.Components;
|
||||
|
||||
namespace Content.Server.Xenoarchaeology.XenoArtifacts.Triggers.Systems;
|
||||
|
||||
public sealed class ArtifactMetapsionicTriggerSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly ArtifactSystem _artifact = default!;
|
||||
[Dependency] private readonly XenoArtifactSystem _artifact = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
|
|
@ -20,7 +21,18 @@ public sealed class ArtifactMetapsionicTriggerSystem : EntitySystem
|
|||
|
||||
private void OnPowerDetected(Entity<ArtifactMetapsionicTriggerComponent> ent, ref PsionicPowerDetectedEvent args)
|
||||
{
|
||||
_artifact.TryActivateArtifact(ent);
|
||||
if (!TryComp<XenoArtifactComponent>(ent, out var artifactComp))
|
||||
return;
|
||||
|
||||
var artifactEntity = new Entity<XenoArtifactComponent>(ent, artifactComp);
|
||||
var coords = Transform(ent).Coordinates;
|
||||
|
||||
_artifact.TryActivateXenoArtifact(
|
||||
artifactEntity,
|
||||
user: null,
|
||||
target: null,
|
||||
coordinates: coords
|
||||
);
|
||||
}
|
||||
|
||||
private void OnGlimmerEventEnded(GlimmerEventEndedEvent args)
|
||||
|
|
@ -28,7 +40,18 @@ public sealed class ArtifactMetapsionicTriggerSystem : EntitySystem
|
|||
var query = EntityQueryEnumerator<ArtifactMetapsionicTriggerComponent>();
|
||||
while (query.MoveNext(out var uid, out _))
|
||||
{
|
||||
_artifact.TryActivateArtifact(uid);
|
||||
if (!TryComp<XenoArtifactComponent>(uid, out var artifactComp))
|
||||
continue;
|
||||
|
||||
var artifactEntity = new Entity<XenoArtifactComponent>(uid, artifactComp);
|
||||
var coords = Transform(uid).Coordinates;
|
||||
|
||||
_artifact.TryActivateXenoArtifact(
|
||||
artifactEntity,
|
||||
user: null,
|
||||
target: null,
|
||||
coordinates: coords
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
using Content.Server.Xenoarchaeology.XenoArtifacts.Effects.Components;
|
||||
using Content.Server.Xenoarchaeology.XenoArtifacts.Events;
|
||||
using Content.Shared.Xenoarchaeology.Artifact;
|
||||
using Content.Server.Revenant.EntitySystems;
|
||||
using Content.Shared.Item;
|
||||
using System.Linq;
|
||||
|
|
@ -19,10 +19,10 @@ public sealed class AnimateArtifactSystem : EntitySystem
|
|||
/// <inheritdoc/>
|
||||
public override void Initialize()
|
||||
{
|
||||
SubscribeLocalEvent<AnimateArtifactComponent, ArtifactActivatedEvent>(OnActivated);
|
||||
SubscribeLocalEvent<AnimateArtifactComponent, XenoArtifactActivatedEvent>(OnActivated);
|
||||
}
|
||||
|
||||
private void OnActivated(EntityUid uid, AnimateArtifactComponent component, ArtifactActivatedEvent args)
|
||||
private void OnActivated(EntityUid uid, AnimateArtifactComponent component, XenoArtifactActivatedEvent args)
|
||||
{
|
||||
// Get a list of all nearby objects in range
|
||||
|
||||
|
|
|
|||
|
|
@ -470,5 +470,15 @@ public enum LogType
|
|||
/// <summary>
|
||||
/// Artifact node got activated.
|
||||
/// </summary>
|
||||
ArtifactNode = 101
|
||||
ArtifactNode = 101,
|
||||
|
||||
/// <summary>
|
||||
/// Damaging grid collision has occurred.
|
||||
/// </summary>
|
||||
ShuttleImpact = 102,
|
||||
|
||||
/// <summary>
|
||||
/// Events relating to midi playback.
|
||||
/// </summary>
|
||||
Instrument = 103,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ public abstract partial class SharedInstrumentComponent : Component
|
|||
public bool AllowPercussion { get; set; }
|
||||
|
||||
[DataField("allowProgramChange"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public bool AllowProgramChange { get ; set; }
|
||||
public bool AllowProgramChange { get; set; }
|
||||
|
||||
[DataField("respectMidiLimits"), ViewVariables(VVAccess.ReadWrite)]
|
||||
public bool RespectMidiLimits { get; set; } = true;
|
||||
|
|
@ -38,7 +38,13 @@ public abstract partial class SharedInstrumentComponent : Component
|
|||
/// Component that indicates that musical instrument was activated (ui opened).
|
||||
/// </summary>
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class ActiveInstrumentComponent : Component;
|
||||
[AutoGenerateComponentState(true)]
|
||||
public sealed partial class ActiveInstrumentComponent : Component
|
||||
{
|
||||
[DataField]
|
||||
[AutoNetworkedField]
|
||||
public MidiTrack?[] Tracks = [];
|
||||
}
|
||||
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class InstrumentComponentState : ComponentState
|
||||
|
|
@ -144,3 +150,72 @@ public enum InstrumentUiKey
|
|||
{
|
||||
Key,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the MIDI channels on an instrument.
|
||||
/// </summary>
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class InstrumentSetChannelsEvent : EntityEventArgs
|
||||
{
|
||||
public NetEntity Uid { get; }
|
||||
public MidiTrack?[] Tracks { get; set; }
|
||||
|
||||
public InstrumentSetChannelsEvent(NetEntity uid, MidiTrack?[] tracks)
|
||||
{
|
||||
Uid = uid;
|
||||
Tracks = tracks;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Represents a single midi track with the track name, instrument name and bank instrument name extracted.
|
||||
/// </summary>
|
||||
[Serializable, NetSerializable]
|
||||
public sealed class MidiTrack
|
||||
{
|
||||
/// <summary>
|
||||
/// The first specified Track Name
|
||||
/// </summary>
|
||||
public string? TrackName;
|
||||
/// <summary>
|
||||
/// The first specified instrument name
|
||||
/// </summary>
|
||||
public string? InstrumentName;
|
||||
|
||||
/// <summary>
|
||||
/// The first program change resolved to the name.
|
||||
/// </summary>
|
||||
public string? ProgramName;
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"Track Name: {TrackName}; Instrument Name: {InstrumentName}; Program Name: {ProgramName}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Truncates the fields based on the limit inputted into this method.
|
||||
/// </summary>
|
||||
public void TruncateFields(int limit)
|
||||
{
|
||||
if (InstrumentName != null)
|
||||
InstrumentName = Truncate(InstrumentName, limit);
|
||||
|
||||
if (TrackName != null)
|
||||
TrackName = Truncate(TrackName, limit);
|
||||
|
||||
if (ProgramName != null)
|
||||
ProgramName = Truncate(ProgramName, limit);
|
||||
}
|
||||
|
||||
private const string Postfix = "…";
|
||||
// TODO: Make a general method to use in RT? idk if we have that.
|
||||
private string Truncate(string input, int limit)
|
||||
{
|
||||
if (string.IsNullOrEmpty(input) || limit <= 0 || input.Length <= limit)
|
||||
return input;
|
||||
|
||||
var truncatedLength = limit - Postfix.Length;
|
||||
|
||||
return input.Substring(0, truncatedLength) + Postfix;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,345 +1,440 @@
|
|||
# base actions
|
||||
|
||||
# base prototype for all action entities
|
||||
- type: entity
|
||||
id: BaseSuicideAction
|
||||
abstract: true
|
||||
id: BaseAction
|
||||
components:
|
||||
- type: Action
|
||||
|
||||
# an action that is done all in le head and cant be prevented by any means
|
||||
- type: entity
|
||||
abstract: true
|
||||
parent: BaseAction
|
||||
id: BaseMentalAction
|
||||
components:
|
||||
- type: Action
|
||||
checkCanInteract: false
|
||||
checkConsciousness: false
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
parent: BaseMentalAction
|
||||
id: BaseSuicideAction
|
||||
components:
|
||||
- type: ConfirmableAction
|
||||
popup: suicide-action-popup
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
parent: BaseAction
|
||||
id: BaseImplantAction
|
||||
components:
|
||||
- type: InstantAction
|
||||
event: !type:ActivateImplantEvent
|
||||
|
||||
- type: entity
|
||||
abstract: true
|
||||
parent: BaseAction
|
||||
id: BaseToggleAction
|
||||
components:
|
||||
- type: InstantAction
|
||||
event: !type:ToggleActionEvent
|
||||
|
||||
# actions
|
||||
|
||||
- type: entity
|
||||
parent: BaseAction
|
||||
id: ActionScream
|
||||
name: Scream
|
||||
description: AAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
components:
|
||||
- type: InstantAction
|
||||
- type: Action
|
||||
useDelay: 10
|
||||
icon: Interface/Actions/scream.png
|
||||
event: !type:ScreamActionEvent
|
||||
checkCanInteract: false
|
||||
- type: InstantAction
|
||||
event: !type:ScreamActionEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseMentalAction
|
||||
id: ActionTurnUndead
|
||||
name: Turn Undead
|
||||
description: Succumb to your infection and become a zombie.
|
||||
components:
|
||||
- type: InstantAction
|
||||
checkCanInteract: false
|
||||
checkConsciousness: false
|
||||
- type: Action
|
||||
icon: Interface/Actions/zombie-turn.png
|
||||
- type: InstantAction
|
||||
event: !type:ZombifySelfActionEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseToggleAction
|
||||
id: ActionToggleLight
|
||||
name: Toggle Light
|
||||
description: Turn the light on and off.
|
||||
components:
|
||||
- type: InstantAction
|
||||
- type: Action
|
||||
useDelay: 1
|
||||
icon: { sprite: Objects/Tools/flashlight.rsi, state: flashlight }
|
||||
iconOn: { sprite: Objects/Tools/flashlight.rsi, state: flashlight-on }
|
||||
event: !type:ToggleActionEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseAction
|
||||
id: ActionOpenStorageImplant
|
||||
name: Toggle Storage Implant
|
||||
description: Opens or closes the storage implant embedded under your skin, note that it cannot store high value or storage based items # DeltaV
|
||||
components:
|
||||
- type: InstantAction
|
||||
- type: Action
|
||||
itemIconStyle: BigAction
|
||||
priority: -20
|
||||
icon:
|
||||
sprite: Clothing/Back/Backpacks/backpack.rsi
|
||||
state: icon
|
||||
event: !type:OpenStorageImplantEvent
|
||||
useDelay: 1
|
||||
- type: InstantAction
|
||||
event: !type:OpenStorageImplantEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseSuicideAction
|
||||
parent: [BaseSuicideAction, BaseImplantAction]
|
||||
id: ActionActivateMicroBomb
|
||||
name: Activate Microbomb
|
||||
description: Activates your internal microbomb, completely destroying you and your equipment
|
||||
components:
|
||||
- type: InstantAction
|
||||
checkCanInteract: false
|
||||
checkConsciousness: false
|
||||
- type: Action
|
||||
itemIconStyle: BigAction
|
||||
priority: -20
|
||||
icon:
|
||||
sprite: Actions/Implants/implants.rsi
|
||||
state: explosive
|
||||
event: !type:ActivateImplantEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseSuicideAction
|
||||
parent: [BaseSuicideAction, BaseImplantAction]
|
||||
id: ActionActivateDeathAcidifier
|
||||
name: Activate Death-Acidifier
|
||||
description: Activates your death-acidifier, completely melting you and your equipment
|
||||
components:
|
||||
- type: InstantAction
|
||||
checkCanInteract: false
|
||||
checkConsciousness: false
|
||||
- type: Action
|
||||
itemIconStyle: BigAction
|
||||
priority: -20
|
||||
icon:
|
||||
sprite: Objects/Magic/magicactions.rsi
|
||||
state: gib
|
||||
event: !type:ActivateImplantEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseAction
|
||||
id: ActionActivateFreedomImplant
|
||||
name: Break Free
|
||||
description: Activating your freedom implant will free you from any hand restraints
|
||||
components:
|
||||
- type: InstantAction
|
||||
charges: 3
|
||||
- type: LimitedCharges
|
||||
maxCharges: 3
|
||||
- type: Action
|
||||
checkCanInteract: false
|
||||
itemIconStyle: BigAction
|
||||
priority: -20
|
||||
icon:
|
||||
sprite: Actions/Implants/implants.rsi
|
||||
state: freedom
|
||||
- type: InstantAction
|
||||
event: !type:UseFreedomImplantEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseAction
|
||||
id: ActionOpenUplinkImplant
|
||||
name: Open Uplink
|
||||
description: Opens the syndicate uplink embedded under your skin
|
||||
components:
|
||||
- type: InstantAction
|
||||
- type: Action
|
||||
itemIconStyle: BigAction
|
||||
priority: -20
|
||||
icon:
|
||||
sprite: Objects/Devices/communication.rsi
|
||||
state: old-radio
|
||||
- type: InstantAction
|
||||
event: !type:OpenUplinkImplantEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseImplantAction
|
||||
id: ActionActivateEmpImplant
|
||||
name: Activate EMP
|
||||
description: Triggers a small EMP pulse around you
|
||||
components:
|
||||
- type: InstantAction
|
||||
- type: LimitedCharges
|
||||
maxCharges: 3
|
||||
- type: Action
|
||||
checkCanInteract: false
|
||||
charges: 3
|
||||
useDelay: 5
|
||||
itemIconStyle: BigAction
|
||||
priority: -20
|
||||
icon:
|
||||
sprite: Objects/Weapons/Grenades/empgrenade.rsi
|
||||
state: icon
|
||||
event: !type:ActivateImplantEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseAction
|
||||
id: ActionActivateScramImplant
|
||||
name: SCRAM!
|
||||
description: Randomly teleports you within a large distance.
|
||||
components:
|
||||
- type: InstantAction
|
||||
- type: LimitedCharges
|
||||
maxCharges: 2
|
||||
- type: Action
|
||||
checkCanInteract: false
|
||||
charges: 2
|
||||
useDelay: 5
|
||||
itemIconStyle: BigAction
|
||||
priority: -20
|
||||
icon:
|
||||
sprite: Structures/Specific/anomaly.rsi
|
||||
state: anom4
|
||||
- type: InstantAction
|
||||
event: !type:UseScramImplantEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseAction
|
||||
id: ActionActivateDnaScramblerImplant
|
||||
name: Scramble DNA
|
||||
description: Randomly changes your name and appearance.
|
||||
components:
|
||||
- type: ConfirmableAction
|
||||
popup: dna-scrambler-action-popup
|
||||
- type: InstantAction
|
||||
charges: 1
|
||||
- type: LimitedCharges
|
||||
maxCharges: 1
|
||||
- type: Action
|
||||
itemIconStyle: BigAction
|
||||
priority: -20
|
||||
icon:
|
||||
sprite: Clothing/OuterClothing/Hardsuits/lingspacesuit.rsi
|
||||
state: icon
|
||||
- type: InstantAction
|
||||
event: !type:UseDnaScramblerImplantEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseAction
|
||||
id: ActionToggleSuitPiece
|
||||
name: Toggle Suit Piece
|
||||
description: Remember to equip the important pieces of your suit before going into action.
|
||||
components:
|
||||
- type: InstantAction
|
||||
- type: Action
|
||||
itemIconStyle: BigItem
|
||||
useDelay: 1 # equip noise spam.
|
||||
- type: InstantAction
|
||||
event: !type:ToggleClothingEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseAction
|
||||
id: ActionCombatModeToggle
|
||||
name: "[color=red]Combat Mode[/color]"
|
||||
description: Enter combat mode
|
||||
components:
|
||||
- type: InstantAction
|
||||
checkCanInteract: false
|
||||
checkConsciousness: false
|
||||
- type: Action
|
||||
icon: Interface/Actions/harmOff.png
|
||||
iconOn: Interface/Actions/harm.png
|
||||
event: !type:ToggleCombatActionEvent
|
||||
priority: -100
|
||||
- type: InstantAction
|
||||
event: !type:ToggleCombatActionEvent
|
||||
|
||||
- type: entity
|
||||
id: ActionCombatModeToggleOff
|
||||
parent: ActionCombatModeToggle
|
||||
name: "[color=red]Combat Mode[/color]"
|
||||
description: Enter combat mode
|
||||
id: ActionCombatModeToggleOff
|
||||
components:
|
||||
- type: InstantAction
|
||||
- type: Action
|
||||
enabled: false
|
||||
autoPopulate: false
|
||||
priority: -100
|
||||
|
||||
- type: entity
|
||||
parent: BaseAction
|
||||
id: ActionChangeVoiceMask
|
||||
name: Set name
|
||||
description: Change the name others hear to something else.
|
||||
components:
|
||||
- type: InstantAction
|
||||
- type: Action
|
||||
icon: { sprite: Interface/Actions/voice-mask.rsi, state: icon }
|
||||
- type: InstantAction
|
||||
event: !type:VoiceMaskSetNameEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseAction
|
||||
id: ActionVendingThrow
|
||||
name: Dispense Item
|
||||
description: Randomly dispense an item from your stock.
|
||||
components:
|
||||
- type: InstantAction
|
||||
- type: Action
|
||||
useDelay: 30
|
||||
- type: InstantAction
|
||||
event: !type:VendingMachineSelfDispenseEvent
|
||||
|
||||
# - type: entity
|
||||
# parent: BaseAction
|
||||
# id: ActionArtifactActivate
|
||||
# name: Activate Artifact
|
||||
# description: Immediately activates your current artifact node.
|
||||
# components:
|
||||
# - type: Action
|
||||
# icon:
|
||||
# sprite: Objects/Specific/Xenoarchaeology/xeno_artifacts.rsi
|
||||
# state: ano01
|
||||
# useDelay: 60
|
||||
# - type: InstantAction
|
||||
# event: !type:ArtifactSelfActivateEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseToggleAction
|
||||
id: ActionToggleBlock
|
||||
name: Block
|
||||
description: Raise or lower your shield.
|
||||
components:
|
||||
- type: InstantAction
|
||||
- type: Action
|
||||
icon: { sprite: Objects/Weapons/Melee/shields.rsi, state: teleriot-icon }
|
||||
iconOn: Objects/Weapons/Melee/shields.rsi/teleriot-on.png
|
||||
event: !type:ToggleActionEvent
|
||||
iconOn: { sprite: Objects/Weapons/Melee/shields.rsi, state: teleriot-on }
|
||||
|
||||
- type: entity
|
||||
parent: BaseMentalAction
|
||||
id: ActionClearNetworkLinkOverlays
|
||||
name: Clear network link overlays
|
||||
description: Clear network link overlays.
|
||||
components:
|
||||
- type: InstantAction
|
||||
- type: Action
|
||||
clientExclusive: true
|
||||
checkCanInteract: false
|
||||
checkConsciousness: false
|
||||
temporary: true
|
||||
icon: { sprite: Objects/Tools/multitool.rsi, state: icon }
|
||||
- type: InstantAction
|
||||
event: !type:ClearAllOverlaysEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseAction
|
||||
id: ActionAnimalLayEgg
|
||||
name: Lay egg
|
||||
description: Uses hunger to lay an egg.
|
||||
components:
|
||||
- type: InstantAction
|
||||
- type: Action
|
||||
icon: { sprite: Objects/Consumable/Food/egg.rsi, state: icon }
|
||||
useDelay: 60
|
||||
- type: InstantAction
|
||||
event: !type:EggLayInstantActionEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseMentalAction
|
||||
id: ActionSleep
|
||||
name: Sleep
|
||||
description: Go to sleep.
|
||||
components:
|
||||
- type: InstantAction
|
||||
checkCanInteract: false
|
||||
checkConsciousness: false
|
||||
- type: Action
|
||||
icon: { sprite: Clothing/Head/Hats/pyjamasyndicatered.rsi, state: icon }
|
||||
- type: InstantAction
|
||||
event: !type:SleepActionEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseMentalAction
|
||||
id: ActionWake
|
||||
name: Wake up
|
||||
description: Stop sleeping.
|
||||
components:
|
||||
- type: InstantAction
|
||||
icon: { sprite: Clothing/Head/Hats/pyjamasyndicatered.rsi, state: icon }
|
||||
checkCanInteract: false
|
||||
checkConsciousness: false
|
||||
event: !type:WakeActionEvent
|
||||
- type: Action
|
||||
startDelay: true
|
||||
useDelay: 2
|
||||
icon: { sprite: Clothing/Head/Hats/pyjamasyndicatered.rsi, state: icon }
|
||||
- type: InstantAction
|
||||
event: !type:WakeActionEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseImplantAction
|
||||
id: ActionActivateHonkImplant
|
||||
name: Honk
|
||||
description: Activates your honking implant, which will produce the signature sound of the clown.
|
||||
components:
|
||||
- type: InstantAction
|
||||
- type: Action
|
||||
icon: { sprite: Objects/Fun/bikehorn.rsi, state: icon }
|
||||
event: !type:ActivateImplantEvent
|
||||
useDelay: 1
|
||||
|
||||
- type: entity
|
||||
parent: BaseAction
|
||||
id: ActionFireStarter
|
||||
name: Ignite
|
||||
description: Ignites enemies in a radius around you.
|
||||
components:
|
||||
- type: InstantAction
|
||||
- type: Action
|
||||
priority: -1
|
||||
useDelay: 30
|
||||
icon: Interface/Actions/firestarter.png
|
||||
- type: InstantAction
|
||||
event: !type:FireStarterActionEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseMentalAction
|
||||
id: ActionToggleEyes
|
||||
name: Open/Close eyes
|
||||
description: Close your eyes to protect your peepers, or open your eyes to enjoy the pretty lights.
|
||||
components:
|
||||
- type: InstantAction
|
||||
- type: Action
|
||||
icon: Interface/Actions/eyeopen.png
|
||||
iconOn: Interface/Actions/eyeclose.png
|
||||
event: !type:ToggleEyesActionEvent
|
||||
useDelay: 1 # so u cant give yourself and observers eyestrain by rapidly spamming the action
|
||||
checkCanInteract: false
|
||||
checkConsciousness: false
|
||||
- type: InstantAction
|
||||
event: !type:ToggleEyesActionEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseToggleAction
|
||||
id: ActionToggleWagging
|
||||
name: Wagging Tail
|
||||
description: Start or stop wagging your tail.
|
||||
components:
|
||||
- type: InstantAction
|
||||
icon: { sprite: Mobs/Customization/reptilian_parts.rsi, state: tail_smooth_behind }
|
||||
iconOn: { sprite: Mobs/Customization/reptilian_parts.rsi, state: tail_smooth_behind }
|
||||
itemIconStyle: NoItem
|
||||
useDelay: 1 # emote spam
|
||||
event: !type:ToggleActionEvent
|
||||
- type: Action
|
||||
icon: { sprite: Mobs/Customization/reptilian_parts.rsi, state: tail_smooth_behind }
|
||||
iconOn: { sprite: Mobs/Customization/reptilian_parts.rsi, state: tail_smooth_behind }
|
||||
itemIconStyle: NoItem
|
||||
useDelay: 1 # emote spam
|
||||
checkCanInteract: false
|
||||
|
||||
- type: entity
|
||||
parent: BaseAction
|
||||
id: FakeMindShieldToggleAction
|
||||
name: '[color=green]Toggle Fake Mindshield[/color]'
|
||||
description: Turn the Fake Mindshield implant's transmission on/off
|
||||
components:
|
||||
- type: InstantAction
|
||||
- type: Action
|
||||
icon: { sprite: Interface/Actions/actions_fakemindshield.rsi, state: icon }
|
||||
iconOn: { sprite: Interface/Actions/actions_fakemindshield.rsi, state: icon-on }
|
||||
itemIconStyle: NoItem
|
||||
useDelay: 1
|
||||
- type: InstantAction
|
||||
event: !type:FakeMindShieldToggleEvent
|
||||
- type: Tag
|
||||
tags:
|
||||
- FakeMindShieldImplant
|
||||
|
||||
- type: entity
|
||||
parent: BaseToggleAction
|
||||
id: ActionToggleParamedicSiren
|
||||
name: Toggle Paramedic Siren
|
||||
description: Toggles the paramedic siren on and off.
|
||||
components:
|
||||
- type: InstantAction
|
||||
- type: Action
|
||||
icon:
|
||||
sprite: Clothing/OuterClothing/Hardsuits/paramed.rsi
|
||||
state: icon-siren
|
||||
useDelay: 1
|
||||
itemIconStyle: BigAction
|
||||
event: !type:ToggleActionEvent
|
||||
|
||||
- type: entity
|
||||
parent: BaseToggleAction
|
||||
id: ActionToggleRootable
|
||||
name: Rootable
|
||||
description: Begin or stop being rooted to the floor.
|
||||
components:
|
||||
- type: Action
|
||||
icon: Interface/Actions/rooting.png
|
||||
iconOn: Interface/Actions/rooting.png
|
||||
itemIconStyle: NoItem
|
||||
useDelay: 1
|
||||
|
||||
- type: entity
|
||||
id: ActionChameleonController
|
||||
name: Control clothing
|
||||
description: Change your entire outfit fast!
|
||||
components:
|
||||
- type: Action
|
||||
priority: -20
|
||||
icon: { sprite: Actions/Implants/implants.rsi, state: chameleon }
|
||||
itemIconStyle: BigAction
|
||||
- type: InstantAction
|
||||
event: !type:ChameleonControllerOpenMenuEvent
|
||||
Loading…
Reference in New Issue