diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/builtinmodes.h | 1 | ||||
-rw-r--r-- | include/mode.h | 19 |
2 files changed, 20 insertions, 0 deletions
diff --git a/include/builtinmodes.h b/include/builtinmodes.h index 922a86f0e..49198b650 100644 --- a/include/builtinmodes.h +++ b/include/builtinmodes.h @@ -78,6 +78,7 @@ class ModeChannelVoice : public PrefixMode ModeChannelVoice() : PrefixMode(NULL, "voice", 'v', VOICE_VALUE, '+') { + selfremove = false; ranktoset = ranktounset = HALFOP_VALUE; } }; diff --git a/include/mode.h b/include/mode.h index 5cfbe4015..30b28a6b0 100644 --- a/include/mode.h +++ b/include/mode.h @@ -359,6 +359,9 @@ class CoreExport PrefixMode : public ModeHandler */ unsigned int prefixrank; + /** Whether a client with this prefix can remove it from themself. */ + bool selfremove; + public: /** * Constructor @@ -371,6 +374,16 @@ class CoreExport PrefixMode : public ModeHandler PrefixMode(Module* Creator, const std::string& Name, char ModeLetter, unsigned int Rank = 0, char PrefixChar = 0); /** + * Called when a channel mode change access check for your mode occurs. + * @param source Contains the user setting the mode. + * @param channel contains the destination channel the modes are being set on. + * @param parameter The parameter for your mode. This is modifiable. + * @param adding This value is true when the mode is being set, or false when it is being unset. + * @return allow, deny, or passthru to check against the required level + */ + ModResult AccessCheck(User* source, Channel* channel, std::string ¶meter, bool adding) CXX11_OVERRIDE; + + /** * Handles setting and unsetting the prefix mode. * Finds the given member of the given channel, if it's not found an error message is sent to 'source' * and MODEACTION_DENY is returned. Otherwise the mode change is attempted. @@ -392,6 +405,12 @@ class CoreExport PrefixMode : public ModeHandler */ void RemoveMode(Channel* channel, Modes::ChangeList& changelist); + + /** + * Determines whether a user with this prefix mode can remove it. + */ + bool CanSelfRemove() const { return selfremove; } + /** * Mode prefix or 0. If this is defined, you should * also implement GetPrefixRank() to return an integer |