X-Git-Url: https://jfr.im/git/irc/evilnet/x3.git/blobdiff_plain/b404335b5af3d430489a52fd927802d992aebe4e..18006b5cc4b0c4b72c638669a6ad5c8fb39ddf87:/src/chanserv.c diff --git a/src/chanserv.c b/src/chanserv.c index 44abe44..b3ecb6b 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -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; nchannels.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);