+ // Allow forced nick changes.
+ if (ServerInstance->NICKForced.get(user))
+ return MOD_RES_PASSTHRU;
+
+ for (UCListIter i = user->chans.begin(); i != user->chans.end(); i++)
+ {
+ Channel* curr = *i;
+
+ ModResult res = ServerInstance->OnCheckExemption(user,curr,"nonick");
+
+ if (res == MOD_RES_ALLOW)
+ continue;
+
+ if (override && IS_OPER(user))
+ continue;
+
+ if (!curr->GetExtBanStatus(user, 'N').check(!curr->IsModeSet('N')))
+ {
+ user->WriteNumeric(ERR_CANTCHANGENICK, "%s :Can't change nickname while on %s (+N is set)",
+ user->nick.c_str(), curr->name.c_str());
+ return MOD_RES_DENY;
+ }
+ }
+
+ return MOD_RES_PASSTHRU;
+ }
+
+ virtual void OnRehash(User* user)
+ {
+ ConfigReader Conf;
+ override = Conf.ReadFlag("nonicks", "operoverride", "no", 0);
+ }
+};