-ModeAction ModeChannelHalfOp::OnModeChange(userrec* source, userrec* dest, chanrec* channel, std::string ¶meter, bool adding)
+void ModeChannelHalfOp::RemoveMode(Channel* channel)
+{
+ CUList* clist = channel->GetHalfoppedUsers();
+ CUList copy;
+ char moderemove[MAXBUF];
+
+ for (CUList::iterator i = clist->begin(); i != clist->end(); i++)
+ {
+ User* n = i->first;
+ copy.insert(std::make_pair(n,n->nick));
+ }
+
+ for (CUList::iterator i = copy.begin(); i != copy.end(); i++)
+ {
+ sprintf(moderemove,"-%c",this->GetModeChar());
+ const char* parameters[] = { channel->name, moderemove, i->first->nick };
+ ServerInstance->SendMode(parameters, 3, ServerInstance->FakeClient);
+ }
+
+}
+
+void ModeChannelHalfOp::RemoveMode(User*)
+{
+}
+
+ModeAction ModeChannelHalfOp::OnModeChange(User* source, User*, Channel* channel, std::string ¶meter, bool adding)