private static bool CheckPerms(Synapse.Api.Player ply, KeycardPermissions RequiredPermissions) { if (RequiredPermissions == KeycardPermissions.None) { return(true); } if (ply != null) { if (ply.Bypass) { return(true); } if (Server.Get.Configs.synapseConfiguration.RemoteKeyCard) { foreach (var item in ply.Inventory.Items.Where(x => x.ItemCategory == ItemCategory.Keycard)) { if (((item.ItemBase as KeycardItem).Permissions & RequiredPermissions) == RequiredPermissions) { var allowcard = true; EventHandler.Get.Player.InvokePlayerItemUseEvent(ply, item, Api.Events.SynapseEventArguments.ItemInteractState.Finalizing, ref allowcard); if (allowcard) { return(allowcard); } } } } else { if (ply.ItemInHand == null || !(ply.ItemInHand.ItemBase is KeycardItem keycardItem)) { return(false); } var allowcard = (keycardItem.Permissions & RequiredPermissions) == RequiredPermissions; if (allowcard) { EventHandler.Get.Player.InvokePlayerItemUseEvent(ply, ply.ItemInHand, Api.Events.SynapseEventArguments.ItemInteractState.Finalizing, ref allowcard); } return(allowcard); } } return(false); }
public static Permissions ToTruthyPermissions(this KeycardPermissions keycardPermissions) => (Permissions)keycardPermissions;