From 2ba0b1e7d384ab4eb14433510e0c8edcf56892ba Mon Sep 17 00:00:00 2001 From: RaidMax Date: Thu, 8 Aug 2019 15:58:23 -0500 Subject: [PATCH] prevent same level clients from demoting each other --- SharedLibraryCore/Commands/NativeCommands.cs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/SharedLibraryCore/Commands/NativeCommands.cs b/SharedLibraryCore/Commands/NativeCommands.cs index 8538d5e02..32f04000c 100644 --- a/SharedLibraryCore/Commands/NativeCommands.cs +++ b/SharedLibraryCore/Commands/NativeCommands.cs @@ -489,9 +489,8 @@ namespace SharedLibraryCore.Commands public override Task ExecuteAsync(GameEvent E) { - - EFClient.Permission oldPerm = E.Target.Level; - EFClient.Permission newPerm = Utilities.MatchPermission(E.Data); + Permission oldPerm = E.Target.Level; + Permission newPerm = Utilities.MatchPermission(E.Data); if (E.Target == E.Origin) { @@ -499,8 +498,7 @@ namespace SharedLibraryCore.Commands return Task.CompletedTask; } - - else if (newPerm == EFClient.Permission.Owner && + else if (newPerm == Permission.Owner && !E.Owner.Manager.GetApplicationSettings().Configuration().EnableMultipleOwners) { // only one owner is allowed @@ -508,7 +506,7 @@ namespace SharedLibraryCore.Commands return Task.CompletedTask; } - else if (E.Origin.Level < EFClient.Permission.Owner && + else if (E.Origin.Level < Permission.Owner && !E.Owner.Manager.GetApplicationSettings().Configuration().EnableSteppedHierarchy) { // only the owner is allowed to set levels @@ -516,15 +514,17 @@ namespace SharedLibraryCore.Commands return Task.CompletedTask; } - else if (E.Origin.Level <= newPerm && - E.Origin.Level < EFClient.Permission.Owner) + else if ((E.Origin.Level <= newPerm && + E.Origin.Level < Permission.Owner) || + E.Origin.Level == newPerm) { // can't promote a client to higher than your current perms + // or your peer E.Origin.Tell(string.Format(Utilities.CurrentLocalization.LocalizationIndex["COMMANDS_SETLEVEL_LEVELTOOHIGH"], E.Target.Name, (E.Origin.Level - 1).ToString())); return Task.CompletedTask; } - else if (newPerm > EFClient.Permission.Banned) + else if (newPerm > Permission.Banned) { var ActiveClient = E.Owner.Manager.GetActiveClients() .FirstOrDefault(p => p.NetworkId == E.Target.NetworkId);