XenoArch [Science Overhaul] (#12204)

* multi-node xeno artifacts

* refactor existing artifact effects

* more tweaks to generation

* more shit plus fix tests

* more generation stuff plus threat levels

* doink

* now make it build

* defer the artifact activation to not cause errors

also pricing

* some changes

* all of the yaml + ui stuff for artifact analyzer

* machine linking and starting to make the ui functional

* artifact analyzer display

* a shit ton of artifact analyzer stuff

* more changes; making destroy work properly; progress bar tweaks

* getting shit going!

ALL RIGHT

* small tweaks that didn't help much

* Komm susser todd: the end of analysis

* recipes and hints and ui, oh my!

* add some in-game sources

gotta prepare for day 1 launch

* node data + ditch random seed in place of id

* bunch of triggers

* finish off the last few triggers

* implement machine examine verb

* knock, flicker, blink, throw

* shatter, foam, shuffle, heat

* fix all the shit i broke

* *some* of these have to be good, no?

25 effects

* callin' it there for effects

* comments + reword some trigger hints

* don't mind this little commit here

* byref event

* fix brokey node entry

* fix low pressure trigger

* mirror review plus fixing 0x40's bug

also the throw artifact threw incorrectly

* randomize the event message a teeny bit
This commit is contained in:
Nemanja
2022-11-06 18:05:44 -05:00
committed by GitHub
parent 0d4a605a94
commit 273e0968e4
107 changed files with 3321 additions and 358 deletions

View File

@@ -0,0 +1,78 @@
using Robust.Shared.Serialization;
namespace Content.Shared.Xenoarchaeology.Equipment;
[Serializable, NetSerializable]
public enum ArtifactAnalzyerUiKey : byte
{
Key
}
[Serializable, NetSerializable]
public sealed class AnalysisConsoleServerSelectionMessage : BoundUserInterfaceMessage
{
}
[Serializable, NetSerializable]
public sealed class AnalysisConsoleScanButtonPressedMessage : BoundUserInterfaceMessage
{
}
[Serializable, NetSerializable]
public sealed class AnalysisConsoleDestroyButtonPressedMessage : BoundUserInterfaceMessage
{
}
[Serializable, NetSerializable]
public sealed class AnalysisConsoleScanUpdateState : BoundUserInterfaceState
{
public EntityUid? Artifact;
public bool AnalyzerConnected;
public bool ServerConnected;
public bool CanScan;
public int? Id;
public int? Depth;
public int? Edges;
public bool? Triggered;
public string? EffectProto;
public string? TriggerProto;
public float? Completion;
public bool Scanning;
public TimeSpan TimeRemaining;
public TimeSpan TotalTime;
public AnalysisConsoleScanUpdateState(EntityUid? artifact, bool analyzerConnected, bool serverConnected, bool canScan,
int? id, int? depth, int? edges, bool? triggered, string? effectProto, string? triggerProto, float? completion,
bool scanning, TimeSpan timeRemaining, TimeSpan totalTime)
{
Artifact = artifact;
AnalyzerConnected = analyzerConnected;
ServerConnected = serverConnected;
CanScan = canScan;
Id = id;
Depth = depth;
Edges = edges;
Triggered = triggered;
EffectProto = effectProto;
TriggerProto = triggerProto;
Completion = completion;
Scanning = scanning;
TimeRemaining = timeRemaining;
TotalTime = totalTime;
}
}

View File

@@ -0,0 +1,36 @@
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
namespace Content.Shared.Xenoarchaeology.XenoArtifacts;
/// <summary>
/// This is a prototype for...
/// </summary>
[Prototype("artifactEffect")]
[DataDefinition]
public sealed class ArtifactEffectPrototype : IPrototype
{
/// <inheritdoc/>
[IdDataField]
public string ID { get; } = default!;
/// <summary>
/// Components that are added to the artifact when the specfic effect is active.
/// These are removed after the node is exited and the effect is changed.
/// </summary>
[DataField("components", serverOnly: true)]
public EntityPrototype.ComponentRegistry Components = new();
/// <summary>
/// Components that are permanently added to an entity when the effect's node is entered.
/// </summary>
[DataField("permanentComponents")]
public EntityPrototype.ComponentRegistry PermanentComponents = new();
//TODO: make this a list so we can have multiple target depths
[DataField("targetDepth")]
public int TargetDepth = 0;
[DataField("effectHint")]
public string? EffectHint;
}

View File

@@ -0,0 +1,25 @@
using Robust.Shared.Prototypes;
using Robust.Shared.Serialization;
namespace Content.Shared.Xenoarchaeology.XenoArtifacts;
/// <summary>
/// This is a prototype for...
/// </summary>
[Prototype("artifactTrigger")]
[DataDefinition]
public sealed class ArtifactTriggerPrototype : IPrototype
{
/// <inheritdoc/>
[IdDataField]
public string ID { get; } = default!;
[DataField("components", serverOnly: true)]
public EntityPrototype.ComponentRegistry Components = new();
[DataField("targetDepth")]
public int TargetDepth = 0;
[DataField("triggerHint")]
public string? TriggerHint;
}