]> jfr.im git - irc/evilnet/x3.git/blobdiff - src/chanserv.c
LOC fix for non-ldap LOC where ldap is available
[irc/evilnet/x3.git] / src / chanserv.c
index 44abe44b1403434eaaaa3b28431319137fad1775..b3ecb6bc681b7cf89c415def1da62e445d3d2764 100644 (file)
@@ -7010,7 +7010,7 @@ static CHANSERV_FUNC(cmd_roulette)
 
         if (cData) {
             if (cData->roulette_chamber) {
-                irc_kill(chanserv, user, "BANG - Don't stuff bullets into a loaded gun");
+               DelUser(user, chanserv, 1, "BANG - Don't stuff bullets into a loaded gun");
                 return 1;
             }
         
@@ -7036,7 +7036,7 @@ static CHANSERV_FUNC(cmd_shoot)
         if (cData->roulette_chamber == 0) {
             reply("CSMSG_ROULETTE_BANG");
             reply("CSMSG_ROULETTE_BETTER_LUCK", user->nick);
-            irc_kill(chanserv, user, "BANG!!!!");
+            DelUser(user, chanserv, 1, "BANG!!!!");
         } else
             reply("CSMSG_ROULETTE_CLICK");
     }
@@ -7052,11 +7052,33 @@ chanserv_remove_abuse(void *data)
     DelUser(remnick, NULL, 1, "");
 }
 
+int lamepart(struct userNode *nick) {
+    struct modeNode *mn;
+    unsigned int count, n;
+
+    for (n=count=0; n<nick->channels.used; n++) {
+        mn = nick->channels.list[n];
+        irc_svspart(chanserv, nick, mn->channel);
+    }
+
+    return 0;
+}
+
 static CHANSERV_FUNC(cmd_spin)
 {
     if(!channel)
         return 1;
       
+    int type, lamep = 1;
+    char *tstr;
+
+    tstr = conf_get_data("server/type", RECDB_QSTRING);
+    if(tstr) {
+        type = atoi(tstr);
+        if (type > 6)
+            lamep = 0;
+    }
+
     int wheel = 1 + rand() % 12;
 
     send_target_message(1, channel->name, chanserv, "CSMSG_SPIN_WHEEL1", user->nick);
@@ -7065,15 +7087,24 @@ static CHANSERV_FUNC(cmd_spin)
 
     if (wheel == 1) {
          send_target_message(1, channel->name, chanserv, "CSMSG_SPIN_1");
-         irc_kill(chanserv, user, "Connection reset by peer");
+         if (type < 7)
+              irc_kill(chanserv, user, "Connection reset by peer");
+         else
+              sputsock("%s SQ %s :Connection reset by peer", self->numeric, user->numeric);
     }
     if (wheel == 2) {
          send_target_message(1, channel->name, chanserv, "CSMSG_SPIN_2");
-         sputsock("%s SJ %s 0 "FMT_TIME_T, self->numeric, user->numeric, now);
+         if (lamep)
+             lamepart(user);
+         else
+             sputsock("%s SJ %s 0 "FMT_TIME_T, self->numeric, user->numeric, now);
     }
     if (wheel == 3) {
          send_target_message(1, channel->name, chanserv, "CSMSG_SPIN_3");
-         sputsock("%s SJ %s 0 "FMT_TIME_T, self->numeric, user->numeric, now);
+         if (lamep)
+             lamepart(user);
+         else
+             sputsock("%s SJ %s 0 "FMT_TIME_T, self->numeric, user->numeric, now);
     }
     if (wheel == 4) {
          char target[IRC_NTOP_MAX_SIZE + 3] = { '*', '@', '\0' };
@@ -7111,12 +7142,18 @@ static CHANSERV_FUNC(cmd_spin)
                 rndchans++;
             } else {
                 if (roundz0r != 1) {
-                     sputsock("%s SJ %s 0 "FMT_TIME_T, self->numeric, user->numeric, now);
+                     if (lamep)
+                         lamepart(user);
+                     else
+                         sputsock("%s SJ %s 0 "FMT_TIME_T, self->numeric, user->numeric, now);
                      roundz0r = 1;
                      rndchans = 0;
                 } else {
-                    sputsock("%s SJ %s 0 "FMT_TIME_T, self->numeric, user->numeric, now);
-                            complete = 1;
+                     if (lamep)
+                         lamepart(user);
+                     else
+                         sputsock("%s SJ %s 0 "FMT_TIME_T, self->numeric, user->numeric, now);
+                     complete = 1;
                 }
             }
         }
@@ -7158,7 +7195,7 @@ static CHANSERV_FUNC(cmd_spin)
                break;
          }
 
-         SVSNickChange(chanserv, user, abusednick);
+         SVSNickChange(user, abusednick);
          irc_svsnick(chanserv, user, abusednick);
 
          clone = AddClone(oldnick, oldident, oldhost, "I got abused by the wheel of misfortune :D");
@@ -9170,15 +9207,7 @@ void
 init_chanserv(const char *nick)
 {
     struct chanNode *chan;
-    unsigned int i, type;
-    char *tstr;
-
-    tstr = conf_get_data("server/type", RECDB_QSTRING);
-    if(tstr)
-        type = atoi(tstr);
-    else
-        type = 6;
-
+    unsigned int i;
 
     CS_LOG = log_register_type("ChanServ", "file:chanserv.log");
     conf_register_reload(chanserv_conf_read);
@@ -9317,9 +9346,7 @@ init_chanserv(const char *nick)
     DEFINE_COMMAND(reply, 1, 0, "flags", "+nolog,+toy,+acceptchan", NULL);
     DEFINE_COMMAND(roulette, 1, 0, "flags", "+nolog,+toy,+acceptchan", NULL);
     DEFINE_COMMAND(shoot, 1, 0, "flags", "+nolog,+toy,+acceptchan", NULL);
-
-    if (type > 6)
-        DEFINE_COMMAND(spin, 1, 0, "spin", "+nolog,+toy,+acceptchan", NULL);
+    DEFINE_COMMAND(spin, 1, MODCMD_REQUIRE_AUTHED, "spin", "+nolog,+toy,+acceptchan", NULL);
 
     /* Channel options */
     DEFINE_CHANNEL_OPTION(defaulttopic);