Appearance.SetData(scanner, AnomalyScannerVisuals.HasAnomaly, true, appearanceComp);
- var stability = _secretData.IsSecret(anomaly, AnomalySecretData.Stability, secretDataComp)
+ var stability = _secretData.IsSecret(anomaly, AnomalySecretData.Stability, secretDataComp) && !scannerComp.IgnoreSecret
? AnomalyStabilityVisuals.Stable
: _anomaly.GetStabilityVisualOrStable((anomaly, anomalyComp));
Appearance.SetData(scanner, AnomalyScannerVisuals.AnomalyStability, stability, appearanceComp);
- var severity = _secretData.IsSecret(anomaly, AnomalySecretData.Severity, secretDataComp)
+ var severity = _secretData.IsSecret(anomaly, AnomalySecretData.Severity, secretDataComp) && !scannerComp.IgnoreSecret
? 0
: anomalyComp.Severity;
Appearance.SetData(scanner, AnomalyScannerVisuals.AnomalySeverity, severity, appearanceComp);
private void OnScannerAnomalySeverityChanged(ref AnomalySeverityChangedEvent args)
{
- var severity = _secretData.IsSecret(args.Anomaly, AnomalySecretData.Severity) ? 0 : args.Severity;
var query = EntityQueryEnumerator<AnomalyScannerComponent>();
while (query.MoveNext(out var uid, out var component))
{
if (component.ScannedAnomaly != args.Anomaly)
continue;
+ var severity = _secretData.IsSecret(args.Anomaly, AnomalySecretData.Severity) && !component.IgnoreSecret ? 0 : args.Severity;
+
UpdateScannerUi(uid, component);
Appearance.SetData(uid, AnomalyScannerVisuals.AnomalySeverity, severity);
}
private void OnScannerAnomalyStabilityChanged(ref AnomalyStabilityChangedEvent args)
{
- var stability = _secretData.IsSecret(args.Anomaly, AnomalySecretData.Stability)
- ? AnomalyStabilityVisuals.Stable
- : _anomaly.GetStabilityVisualOrStable(args.Anomaly);
var query = EntityQueryEnumerator<AnomalyScannerComponent>();
while (query.MoveNext(out var uid, out var component))
{
if (component.ScannedAnomaly != args.Anomaly)
continue;
+ var stability = _secretData.IsSecret(args.Anomaly, AnomalySecretData.Stability) && !component.IgnoreSecret
+ ? AnomalyStabilityVisuals.Stable
+ : _anomaly.GetStabilityVisualOrStable(args.Anomaly);
+
UpdateScannerUi(uid, component);
Appearance.SetData(uid, AnomalyScannerVisuals.AnomalyStability, stability);
}
TryComp<AppearanceComponent>(uid, out var appearanceComp);
TryComp<SecretDataAnomalyComponent>(args.Anomaly, out var secretDataComp);
- var severity = _secretData.IsSecret(args.Anomaly, AnomalySecretData.Severity, secretDataComp)
+ var severity = _secretData.IsSecret(args.Anomaly, AnomalySecretData.Severity, secretDataComp) && !component.IgnoreSecret
? 0
: anomalyComp.Severity;
Appearance.SetData(uid, AnomalyScannerVisuals.AnomalySeverity, severity, appearanceComp);
- var stability = _secretData.IsSecret(args.Anomaly, AnomalySecretData.Stability, secretDataComp)
+ var stability = _secretData.IsSecret(args.Anomaly, AnomalySecretData.Stability, secretDataComp) && !component.IgnoreSecret
? AnomalyStabilityVisuals.Stable
: _anomaly.GetStabilityVisualOrStable((args.Anomaly, anomalyComp));
Appearance.SetData(uid, AnomalyScannerVisuals.AnomalyStability, stability, appearanceComp);
TryComp<SecretDataAnomalyComponent>(anomaly, out var secret);
//Severity
- if (secret != null && secret.Secret.Contains(AnomalySecretData.Severity))
+ if (secret != null && secret.Secret.Contains(AnomalySecretData.Severity) && !component.IgnoreSecret)
msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-severity-percentage-unknown"));
else
- msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-severity-percentage", ("percent", anomalyComp.Severity.ToString("P"))));
+ {
+ var text = Loc.GetString("anomaly-scanner-severity-percentage", ("percent", anomalyComp.Severity.ToString("P")));
+ if (secret != null && secret.Secret.Contains(AnomalySecretData.Severity))
+ text += " " + Loc.GetString("anomaly-secret-admin");
+ msg.AddMarkupOrThrow(text);
+ }
msg.PushNewline();
//Stability
- if (secret != null && secret.Secret.Contains(AnomalySecretData.Stability))
+ if (secret != null && secret.Secret.Contains(AnomalySecretData.Stability) && !component.IgnoreSecret)
msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-stability-unknown"));
else
{
stateLoc = Loc.GetString("anomaly-scanner-stability-high");
else
stateLoc = Loc.GetString("anomaly-scanner-stability-medium");
+
+ if (secret != null && secret.Secret.Contains(AnomalySecretData.Stability))
+ stateLoc += " " + Loc.GetString("anomaly-secret-admin");
+
msg.AddMarkupOrThrow(stateLoc);
}
msg.PushNewline();
//Point output
- if (secret != null && secret.Secret.Contains(AnomalySecretData.OutputPoint))
+ if (secret != null && secret.Secret.Contains(AnomalySecretData.OutputPoint) && !component.IgnoreSecret)
msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-point-output-unknown"));
else
- msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-point-output", ("point", GetAnomalyPointValue(anomaly, anomalyComp))));
+ {
+ var text = Loc.GetString("anomaly-scanner-point-output", ("point", GetAnomalyPointValue(anomaly, anomalyComp)));
+ if (secret != null && secret.Secret.Contains(AnomalySecretData.OutputPoint))
+ text += " " + Loc.GetString("anomaly-secret-admin");
+ msg.AddMarkupOrThrow(text);
+ }
msg.PushNewline();
msg.PushNewline();
msg.PushNewline();
//Danger
- if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleDanger))
+ if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleDanger) && !component.IgnoreSecret)
msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-particle-danger-unknown"));
else
- msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-particle-danger", ("type", GetParticleLocale(anomalyComp.SeverityParticleType))));
+ {
+ var text = Loc.GetString("anomaly-scanner-particle-danger", ("type", GetParticleLocale(anomalyComp.SeverityParticleType)));
+ if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleDanger))
+ text += " " + Loc.GetString("anomaly-secret-admin");
+ msg.AddMarkupOrThrow(text);
+ }
msg.PushNewline();
//Unstable
- if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleUnstable))
+ if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleUnstable) && !component.IgnoreSecret)
msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-particle-unstable-unknown"));
else
- msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-particle-unstable", ("type", GetParticleLocale(anomalyComp.DestabilizingParticleType))));
+ {
+ var text = Loc.GetString("anomaly-scanner-particle-unstable", ("type", GetParticleLocale(anomalyComp.DestabilizingParticleType)));
+ if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleUnstable))
+ text += " " + Loc.GetString("anomaly-secret-admin");
+ msg.AddMarkupOrThrow(text);
+ }
msg.PushNewline();
//Containment
- if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleContainment))
+ if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleContainment) && !component.IgnoreSecret)
msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-particle-containment-unknown"));
else
- msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-particle-containment", ("type", GetParticleLocale(anomalyComp.WeakeningParticleType))));
+ {
+ var text = Loc.GetString("anomaly-scanner-particle-containment", ("type", GetParticleLocale(anomalyComp.WeakeningParticleType)));
+ if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleContainment))
+ text += " " + Loc.GetString("anomaly-secret-admin");
+ msg.AddMarkupOrThrow(text);
+ }
msg.PushNewline();
//Transformation
- if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleTransformation))
+ if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleTransformation) && !component.IgnoreSecret)
msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-particle-transformation-unknown"));
else
- msg.AddMarkupOrThrow(Loc.GetString("anomaly-scanner-particle-transformation", ("type", GetParticleLocale(anomalyComp.TransformationParticleType))));
+ {
+ var text = Loc.GetString("anomaly-scanner-particle-transformation", ("type", GetParticleLocale(anomalyComp.TransformationParticleType)));
+ if (secret != null && secret.Secret.Contains(AnomalySecretData.ParticleTransformation))
+ text += " " + Loc.GetString("anomaly-secret-admin");
+ msg.AddMarkupOrThrow(text);
+ }
//Behavior
msg.PushNewline();
msg.PushNewline();
- msg.AddMarkupOrThrow(Loc.GetString("anomaly-behavior-title"));
+ var behaviorTitle = Loc.GetString("anomaly-behavior-title");
+ if (secret != null && secret.Secret.Contains(AnomalySecretData.Behavior) && component.IgnoreSecret)
+ behaviorTitle += " " + Loc.GetString("anomaly-secret-admin");
+ msg.AddMarkupOrThrow(behaviorTitle);
msg.PushNewline();
- if (secret != null && secret.Secret.Contains(AnomalySecretData.Behavior))
+ if (secret != null && secret.Secret.Contains(AnomalySecretData.Behavior) && !component.IgnoreSecret)
msg.AddMarkupOrThrow(Loc.GetString("anomaly-behavior-unknown"));
else
{
/// </summary>
[DataField]
public SoundSpecifier? CompleteSound = new SoundPathSpecifier("/Audio/Items/beep.ogg");
+
+ /// <summary>
+ /// Whether to ignore the secret data on the anomaly.
+ /// </summary>
+ [DataField]
+ public bool IgnoreSecret;
}
anomaly-behavior-unknown = [color=red]ERROR. Cannot be read.[/color]
-anomaly-behavior-title = behavior deviation analysis:
+anomaly-behavior-title = Behavior Deviation Analysis:
anomaly-behavior-point = [color=gold]Anomaly produces {$mod}% of the points[/color]
anomaly-behavior-safe = [color=forestgreen]The anomaly is extremely stable. Extremely rare pulsations.[/color]
anomaly-behavior-fast = [color=crimson]The pulsation frequency is strongly increased.[/color]
anomaly-behavior-strenght = [color=crimson]The pulsation power is significantly increased.[/color]
anomaly-behavior-moving = [color=crimson]Coordinate instability was detected.[/color]
+anomaly-secret-admin = [color=red](ERROR)[/color]
- type: Item
storedRotation: -90
+- type: entity
+ parent: AnomalyScanner
+ id: AnomalyScannerAdmin
+ name: admin anomaly scanner
+ description: A hand-held scanner built to collect information on various anomalous objects. This one seems to have a few extra features.
+ suffix: Admin
+ components:
+ - type: AnomalyScanner
+ ignoreSecret: true
+ - type: Sprite
+ sprite: Objects/Specific/Research/adminanomalyscanner.rsi
+
- type: entity
id: AnomalyLocatorUnpowered
parent: BaseItem
--- /dev/null
+{
+ "version": 1,
+ "size": {
+ "x": 32,
+ "y": 32
+ },
+ "license": "CC-BY-SA-3.0",
+ "copyright": "Modified from anomalyscanner.rsi (at commit d0352e734d97f3762f2e9082ea61bd2f83101874) by Samuka-C (github)",
+ "states": [
+ {
+ "name": "icon"
+ },
+ {
+ "name": "inhand-left",
+ "directions": 4
+ },
+ {
+ "name": "inhand-right",
+ "directions": 4
+ },
+ {
+ "name": "growing",
+ "delays": [
+ [ 0.2, 0.2, 0.2 ]
+ ]
+ },
+ {
+ "name": "decaying",
+ "delays": [
+ [ 0.2, 0.2, 0.2 ]
+ ]
+ },
+ {
+ "name": "severity_mask",
+ "delays": [
+ [ 0.25, 0.25, 0.25, 0.25 ]
+ ]
+ },
+ {
+ "name": "timer_1"
+ },
+ {
+ "name": "timer_2"
+ },
+ {
+ "name": "timer_3"
+ },
+ {
+ "name": "timer_4"
+ },
+ {
+ "name": "timer_5"
+ },
+ {
+ "name": "supercritical",
+ "delays": [
+ [ 0.125, 0.125, 0.125, 0.125 ]
+ ]
+ }
+ ]
+}