diff --git a/ClaimLink/ClaimLinkChatCommand.cs b/ClaimLink/ClaimLinkChatCommand.cs index 4a9d99b..c65ee80 100644 --- a/ClaimLink/ClaimLinkChatCommand.cs +++ b/ClaimLink/ClaimLinkChatCommand.cs @@ -291,7 +291,30 @@ public static class ClaimLinkChatCommand }); } - public static TextCommandResult Delete(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink delete"); + public static TextCommandResult Delete(TextCommandCallingArgs args) + { + string groupName = (string)args[0]; + string playerUid = args.Caller.Player.PlayerUID; + + TextCommandResult? err = TryResolveGroup(groupName, out PlayerGroup group); + if (err != null) return err; + + err = TryResolveClaimLink(group, out ClaimLink link); + if (err != null) return err; + + err = RequireOwner(args.Caller.Player, group); + if (err != null) return err; + + int groupId = group.Uid; + return Stage(playerUid, $"'{groupName}' will be deleted as a claim link.", () => + { + foreach (ClaimLinkMember member in link.Members) + RemovePending(member.OwnerPlayerUid); + + ClaimLinkModSystem.Registry.Remove(groupId); + return TextCommandResult.Success($"'{groupName}' is no longer a claim link."); + }); + } public static TextCommandResult TransferOwnership(TextCommandCallingArgs args) => TextCommandResult.Success("stub: claimlink transferownership"); public static TextCommandResult Info(TextCommandCallingArgs args)