diff --git a/scripts/server/bitflag.js b/scripts/server/bitflag.js index d5843fc1..22d7c507 100644 --- a/scripts/server/bitflag.js +++ b/scripts/server/bitflag.js @@ -169,6 +169,36 @@ function doesClientHaveStaffPermission(client, requiredFlags) { // --------------------------------------------------------------------------- +function doesClientHaveClanPermission(client, requiredFlags) { + if(client.console) { + return true; + } + + if(requiredFlags == getClanFlagValue("none")) { + return true; + } + + if(doesClientHaveStaffPermission(client, getStaffFlagValue("manageClans"))) { + return true; + } + + let clanFlags = 0; + clanFlags = getClientCurrentSubAccount(client).clanFlags | getClanRankFlags(getClientCurrentSubAccount(client).clanRank); + + // -1 is automatic override (having -1 for staff flags is basically god mode admin level) + if(clanFlags == getClanFlagValue("all")) { + return true; + } + + if(clanFlags & requiredFlags) { + return true; + } + + return false; +} + +// --------------------------------------------------------------------------- + function getStaffFlagValue(flagName) { if(flagName == "all") { return -1; @@ -183,6 +213,20 @@ function getStaffFlagValue(flagName) { // --------------------------------------------------------------------------- +function getClanFlagValue(flagName) { + if(flagName == "all") { + return -1; + } + + if(typeof getServerBitFlags().clanFlags[flagName] === "undefined") { + return false; + } + + return getServerBitFlags().clanFlags[flagName]; +} + +// --------------------------------------------------------------------------- + function getAccountSettingsFlagValue(flagName) { if(flagName == "all") { return -1;