diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/users.cpp | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/src/users.cpp b/src/users.cpp index 55a3a84ab..9256eba7b 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -463,6 +463,12 @@ void User::SetModeInternal(const MessageSource &source, UserMode *um, const Anop this->modes[um->name] = param; + if (um->name == "OPER") + ++OperCount; + + if (um->name == "CLOAK" || um->name == "VHOST") + this->UpdateHost(); + FOREACH_MOD(OnUserModeSet, (source, this, um->name)); } @@ -473,6 +479,15 @@ void User::RemoveModeInternal(const MessageSource &source, UserMode *um) this->modes.erase(um->name); + if (um->name == "OPER") + --OperCount; + + if (um->name == "CLOAK" || um->name == "VHOST") + { + this->vhost.clear(); + this->UpdateHost(); + } + FOREACH_MOD(OnUserModeUnset, (source, this, um->name)); } @@ -592,20 +607,6 @@ void User::SetModesInternal(const MessageSource &source, const char *umodes, ... } else this->RemoveModeInternal(source, um); - - if (um->name == "OPER") - { - if (add) - ++OperCount; - else - --OperCount; - } - else if (um->name == "CLOAK" || um->name == "VHOST") - { - if (!add && !this->vhost.empty()) - this->vhost.clear(); - this->UpdateHost(); - } } } |