+ /* The user may have the +H umode on himself, but +H does not necessarily correspond
+ * to the +H of m_hideoper.
+ * However we only add the modewatcher when m_hideoper is loaded, so these
+ * conditions (mw_added and the user being +H) together mean the user is a hidden oper.
+ */
+
+ if (IS_OPER(user) && (!mw_added || !user->IsModeSet('H')))
+ privs.push_back('y');
+ return MOD_RES_PASSTHRU;
+ }
+
+ void OnPostJoin(Membership* memb)
+ {
+ if ((!IS_LOCAL(memb->user)) || (!IS_OPER(memb->user)) || (((mw_added) && (memb->user->IsModeSet('H')))))
+ return;
+
+ if (memb->hasMode(opm.GetModeChar()))
+ return;
+
+ // The user was force joined and OnUserPreJoin() did not run. Set the operprefix now.