diff options
author | Adam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864> | 2010-04-10 22:58:46 +0000 |
---|---|---|
committer | Adam- <Adam-@5417fbe8-f217-4b02-8779-1006273d7864> | 2010-04-10 22:58:46 +0000 |
commit | aa677072e0b2a7f003e6c3cdb7b5831c4765d254 (patch) | |
tree | 50ae7a95779345a43379b954557cd05c338ee184 /src/core/cs_modes.c | |
parent | c424dce517be537bd154565bca5e3a87ddb8c406 (diff) |
Fixed cs_modes to add commands after the modes requiring them are introduced
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@2883 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/core/cs_modes.c')
-rw-r--r-- | src/core/cs_modes.c | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/src/core/cs_modes.c b/src/core/cs_modes.c index e2d6028bf..128c1fb8e 100644 --- a/src/core/cs_modes.c +++ b/src/core/cs_modes.c @@ -381,10 +381,21 @@ class CSModes : public Module this->AddCommand(CHANSERV, new CommandCSVoice()); this->AddCommand(CHANSERV, new CommandCSDeVoice()); - if (ModeManager::FindChannelModeByName(CMODE_HALFOP)) + if (serv_uplink && is_sync(serv_uplink)) + OnUplinkSync(); + + Implementation i[] = { + I_OnUplinkSync, I_OnServerDisconnect, I_OnChanServHelp + }; + ModuleManager::Attach(i, this, 3); + } + + void OnUplinkSync() + { + if (ModeManager::FindChannelModeByName(CMODE_OWNER)) { - this->AddCommand(CHANSERV, new CommandCSHalfOp()); - this->AddCommand(CHANSERV, new CommandCSDeHalfOp()); + this->AddCommand(CHANSERV, new CommandCSOwner()); + this->AddCommand(CHANSERV, new CommandCSDeOwner()); } if (ModeManager::FindChannelModeByName(CMODE_PROTECT)) @@ -393,14 +404,23 @@ class CSModes : public Module this->AddCommand(CHANSERV, new CommandCSDeProtect()); } - if (ModeManager::FindChannelModeByName(CMODE_OWNER)) + if (ModeManager::FindChannelModeByName(CMODE_HALFOP)) { - this->AddCommand(CHANSERV, new CommandCSOwner()); - this->AddCommand(CHANSERV, new CommandCSDeOwner()); + this->AddCommand(CHANSERV, new CommandCSHalfOp()); + this->AddCommand(CHANSERV, new CommandCSDeHalfOp()); } + } - ModuleManager::Attach(I_OnChanServHelp, this); + void OnServerDisconnect() + { + this->DelCommand(CHANSERV, "OWNER"); + this->DelCommand(CHANSERV, "DEOWNER"); + this->DelCommand(CHANSERV, "PROTECT"); + this->DelCommand(CHANSERV, "DEPROTECT"); + this->DelCommand(CHANSERV, "HALFOP"); + this->DelCommand(CHANSERV, "DEHALFOP"); } + void OnChanServHelp(User *u) { if (ModeManager::FindChannelModeByName(CMODE_OWNER)) |