2022-11-17 11:40:05 -06:00
|
|
|
|
using System.Linq;
|
2024-08-22 01:07:43 +03:00
|
|
|
|
using System.Text;
|
2022-11-17 11:40:05 -06:00
|
|
|
|
using Content.Server.Administration;
|
|
|
|
|
|
using Content.Shared.Administration;
|
|
|
|
|
|
using Robust.Shared.Console;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Content.Server.Xenoarchaeology.XenoArtifacts;
|
|
|
|
|
|
|
|
|
|
|
|
public partial class ArtifactSystem
|
|
|
|
|
|
{
|
|
|
|
|
|
[Dependency] private readonly IConsoleHost _conHost = default!;
|
|
|
|
|
|
|
|
|
|
|
|
public void InitializeCommands()
|
|
|
|
|
|
{
|
|
|
|
|
|
_conHost.RegisterCommand("forceartifactnode", "Forces an artifact to traverse to a given node", "forceartifacteffect <uid> <node ID>",
|
|
|
|
|
|
ForceArtifactNode,
|
|
|
|
|
|
ForceArtifactNodeCompletions);
|
2023-02-12 07:35:10 -05:00
|
|
|
|
|
|
|
|
|
|
_conHost.RegisterCommand("getartifactmaxvalue", "Reports the maximum research point value for a given artifact", "forceartifacteffect <uid>",
|
|
|
|
|
|
GetArtifactMaxValue);
|
2024-08-22 01:07:43 +03:00
|
|
|
|
|
|
|
|
|
|
// WD added
|
|
|
|
|
|
_conHost.RegisterCommand("listartifacts", "List all artifact ids and names", "forceartifacteffect",
|
|
|
|
|
|
ListArtifacts);
|
2022-11-17 11:40:05 -06:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
[AdminCommand(AdminFlags.Fun)]
|
|
|
|
|
|
private void ForceArtifactNode(IConsoleShell shell, string argstr, string[] args)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (args.Length != 2)
|
2023-12-27 16:51:42 -05:00
|
|
|
|
{
|
2022-11-17 11:40:05 -06:00
|
|
|
|
shell.WriteError("Argument length must be 2");
|
2023-12-27 16:51:42 -05:00
|
|
|
|
return;
|
|
|
|
|
|
}
|
2022-11-17 11:40:05 -06:00
|
|
|
|
|
2023-09-11 09:42:41 +10:00
|
|
|
|
if (!NetEntity.TryParse(args[0], out var uidNet) || !TryGetEntity(uidNet, out var uid) || !int.TryParse(args[1], out var id))
|
2022-11-17 11:40:05 -06:00
|
|
|
|
return;
|
|
|
|
|
|
|
2023-03-23 22:50:24 -04:00
|
|
|
|
if (!TryComp<ArtifactComponent>(uid, out var artifact))
|
2022-11-17 11:40:05 -06:00
|
|
|
|
return;
|
|
|
|
|
|
|
2023-03-23 22:50:24 -04:00
|
|
|
|
if (artifact.NodeTree.FirstOrDefault(n => n.Id == id) is { } node)
|
2022-11-17 11:40:05 -06:00
|
|
|
|
{
|
2023-09-11 09:42:41 +10:00
|
|
|
|
EnterNode(uid.Value, ref node);
|
2022-11-17 11:40:05 -06:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private CompletionResult ForceArtifactNodeCompletions(IConsoleShell shell, string[] args)
|
|
|
|
|
|
{
|
2023-09-11 09:42:41 +10:00
|
|
|
|
if (args.Length == 2 && NetEntity.TryParse(args[0], out var uidNet) && TryGetEntity(uidNet, out var uid))
|
2022-11-17 11:40:05 -06:00
|
|
|
|
{
|
2023-03-23 22:50:24 -04:00
|
|
|
|
if (TryComp<ArtifactComponent>(uid, out var artifact))
|
2022-11-17 11:40:05 -06:00
|
|
|
|
{
|
2023-03-23 22:50:24 -04:00
|
|
|
|
return CompletionResult.FromHintOptions(artifact.NodeTree.Select(s => s.Id.ToString()), "<node id>");
|
2022-11-17 11:40:05 -06:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return CompletionResult.Empty;
|
|
|
|
|
|
}
|
2023-02-12 07:35:10 -05:00
|
|
|
|
|
|
|
|
|
|
[AdminCommand(AdminFlags.Debug)]
|
|
|
|
|
|
private void GetArtifactMaxValue(IConsoleShell shell, string argstr, string[] args)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (args.Length != 1)
|
|
|
|
|
|
shell.WriteError("Argument length must be 1");
|
|
|
|
|
|
|
2023-09-11 09:42:41 +10:00
|
|
|
|
if (!NetEntity.TryParse(args[0], out var uidNet) || !TryGetEntity(uidNet, out var uid))
|
2023-02-12 07:35:10 -05:00
|
|
|
|
return;
|
|
|
|
|
|
|
2023-03-23 22:50:24 -04:00
|
|
|
|
if (!TryComp<ArtifactComponent>(uid, out var artifact))
|
2023-02-12 07:35:10 -05:00
|
|
|
|
return;
|
|
|
|
|
|
|
2023-09-11 09:42:41 +10:00
|
|
|
|
var pointSum = GetResearchPointValue(uid.Value, artifact, true);
|
|
|
|
|
|
shell.WriteLine($"Max point value for {ToPrettyString(uid.Value)} with {artifact.NodeTree.Count} nodes: {pointSum}");
|
2023-02-12 07:35:10 -05:00
|
|
|
|
}
|
2024-08-22 01:07:43 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// WD added - start
|
|
|
|
|
|
[AdminCommand(AdminFlags.Admin)]
|
|
|
|
|
|
private void ListArtifacts(IConsoleShell shell, string argstr, string[] args)
|
|
|
|
|
|
{
|
|
|
|
|
|
var items = EntityQuery<ArtifactComponent>();
|
|
|
|
|
|
|
|
|
|
|
|
var msg = new StringBuilder();
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var artifact in items)
|
|
|
|
|
|
{
|
|
|
|
|
|
var entity = artifact.Owner;
|
|
|
|
|
|
var effects = string.Join(", ", artifact.NodeTree.ToArray().Select(x => x.Effect));
|
|
|
|
|
|
|
|
|
|
|
|
msg.AppendFormat("{0}: {1}, {2}\n\n", Name(entity), effects, entity);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
shell.WriteLine(msg.ToString());
|
|
|
|
|
|
}
|
|
|
|
|
|
// WD added - end
|
2022-11-17 11:40:05 -06:00
|
|
|
|
}
|