+
+static int neonserv_cmd_mode_botwar_detect(struct ClientSocket *client, struct UserNode *user, struct ChanNode *chan) {
+ struct ChanUser *chanuser = getChanUser(user, chan);
+ if(!chanuser) return 0; //flying super cow?
+ if(time(0) - chanuser->changeTime > BOTWAR_DETECTION_TIME) {
+ chanuser->changeTime = time(0);
+ chanuser->chageEvents = 1;
+ } else {
+ if(!botwar_detect_executed)
+ chanuser->chageEvents++;
+ botwar_detect_executed = 1;
+ if(chanuser->chageEvents >= BOTWAR_DETECTION_EVENTS || chanuser->chageEvents < 0) {
+ //BOTWAR!
+ chanuser->changeTime = time(0);
+ if(chanuser->chageEvents > 0) {
+ char *alertchan = get_string_field("General.alertchan");
+ putsock(client, "NOTICE @%s :%s %s", chan->name, get_language_string(user, "NS_BOTWAR_DETECTED"), (alertchan ? get_language_string(user, "NS_BOTWAR_REPORTED") : ""));
+ if(alertchan) {
+ struct ChanNode *alertchan_chan = getChanByName(alertchan);
+ struct ClientSocket *alertclient;
+ if(alertchan_chan && (alertclient = getBotForChannel(chan)) != NULL) {
+ char msgBuf[MAXLEN];
+ putsock(alertclient, "PRIVMSG %s :%s", alertchan_chan->name, build_language_string(NULL, msgBuf, "NS_BOTWAR_ALERT", chan->name, user->nick));
+ }
+ }
+ }
+ chanuser->chageEvents = -2;
+ return 1;
+ }
+ }
+ return 0;
+}
+