Debug command to set either your hunger or thirst to one of their respective threshold levels (#30563)
* Debug command to set either your hunger or thirst to one of their respective threshold levels * code updates * code + loc changes
This commit is contained in:
115
Content.Server/Nutrition/SetNutrit.cs
Normal file
115
Content.Server/Nutrition/SetNutrit.cs
Normal file
@@ -0,0 +1,115 @@
|
||||
using Content.Server.Administration;
|
||||
using Content.Server.Database.Migrations.Postgres;
|
||||
using Content.Shared.Administration;
|
||||
using Content.Shared.Nutrition.Components;
|
||||
using Content.Shared.Nutrition.EntitySystems;
|
||||
using Robust.Shared.Console;
|
||||
using System.Linq;
|
||||
|
||||
namespace Content.Server.Nutrition;
|
||||
|
||||
[AdminCommand(AdminFlags.Debug)]
|
||||
public sealed class SetNutrit : LocalizedEntityCommands
|
||||
{
|
||||
public override string Command => "setnutrit";
|
||||
|
||||
public override void Execute(IConsoleShell shell, string argStr, string[] args)
|
||||
{
|
||||
var player = shell.Player;
|
||||
if (player == null)
|
||||
{
|
||||
shell.WriteError(Loc.GetString("cmd-nutrition-error-player"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (player.AttachedEntity is not { Valid: true } playerEntity)
|
||||
{
|
||||
shell.WriteError(Loc.GetString("cmd-nutrition-error-entity"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (args.Length != 2)
|
||||
{
|
||||
shell.WriteError(Loc.GetString("shell-wrong-arguments-number-need-specific",
|
||||
("properAmount", 2),
|
||||
("currentAmount", args.Length)
|
||||
));
|
||||
return;
|
||||
}
|
||||
|
||||
var systemString = args[0];
|
||||
switch (systemString)
|
||||
{
|
||||
case "hunger":
|
||||
{
|
||||
if (!EntityManager.TryGetComponent(playerEntity, out HungerComponent? hunger))
|
||||
{
|
||||
shell.WriteError(Loc.GetString("cmd-nutrition-error-component", ("comp", nameof(HungerComponent))));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Enum.TryParse(args[1], out HungerThreshold hungerThreshold))
|
||||
{
|
||||
shell.WriteError(Loc.GetString("cmd-setnutrit-error-invalid-threshold",
|
||||
("thresholdType", nameof(HungerThreshold)),
|
||||
("thresholdString", args[1])
|
||||
));
|
||||
return;
|
||||
}
|
||||
|
||||
var hungerValue = hunger.Thresholds[hungerThreshold];
|
||||
EntityManager.System<HungerSystem>().SetHunger(playerEntity, hungerValue, hunger);
|
||||
return;
|
||||
}
|
||||
case "thirst":
|
||||
{
|
||||
if (!EntityManager.TryGetComponent(playerEntity, out ThirstComponent? thirst))
|
||||
{
|
||||
shell.WriteError(Loc.GetString("cmd-nutrition-error-component", ("comp", nameof(ThirstComponent))));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Enum.TryParse(args[1], out ThirstThreshold thirstThreshold))
|
||||
{
|
||||
shell.WriteError(Loc.GetString("cmd-setnutrit-error-invalid-threshold",
|
||||
("thresholdType", nameof(ThirstThreshold)),
|
||||
("thresholdString", args[1])
|
||||
));
|
||||
return;
|
||||
}
|
||||
|
||||
var thirstValue = thirst.ThirstThresholds[thirstThreshold];
|
||||
EntityManager.System<ThirstSystem>().SetThirst(playerEntity, thirst, thirstValue);
|
||||
return;
|
||||
}
|
||||
default:
|
||||
{
|
||||
shell.WriteError($"invalid nutrition system ${systemString}");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override CompletionResult GetCompletion(IConsoleShell shell, string[] args)
|
||||
{
|
||||
switch (args.Length)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
string[] kinds = { "hunger", "thirst" };
|
||||
return CompletionResult.FromHintOptions(kinds, "nutrition system");
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
return args[0] switch
|
||||
{
|
||||
"hunger" => CompletionResult.FromHintOptions(Enum.GetNames<HungerThreshold>(), nameof(HungerThreshold)),
|
||||
"thirst" => CompletionResult.FromHintOptions(Enum.GetNames<ThirstThreshold>(), nameof(ThirstThreshold)),
|
||||
_ => CompletionResult.Empty,
|
||||
};
|
||||
}
|
||||
default:
|
||||
return CompletionResult.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,5 +2,9 @@ cmd-nutrition-error-player = You cannot use this command unless you are a player
|
||||
cmd-nutrition-error-entity = You cannot use this command without an entity.
|
||||
cmd-nutrition-error-component = Your entity does not have a {$comp} component.
|
||||
|
||||
cmd-setnutrit-desc = modify hunger and thirst
|
||||
cmd-setnutrit-help = set your hunger or thirst to one of the built-in thresholds
|
||||
cmd-setnutrit-error-invalid-threshold = invalid {$thresholdType} `{$thresholdString}`
|
||||
|
||||
cmd-thirsty-desc = makes you thirsty
|
||||
cmd-thirsty-help = sets your thirst level to partched
|
||||
|
||||
Reference in New Issue
Block a user