Example #1
0
        void Cmd_timebomb(string nick, string message)
        {
            Channel chan = p_manager.GetChannel();

            if (chan.IsPrivate())
            {
                return;
            }

            string channel = chan.GetName();

            if (m_timers.ContainsKey(channel))
            {
                chan.Say("Only one timebomb is allowed at a time.");
                return;
            }
            if (m_cooldown.ContainsKey(channel))
            {
                chan.Say("Assembling a new bomb. Please wait... (" +
                         (int)(m_cooldown[channel].GetRemaining() / 1000.0) + "s)");
                return;
            }

            string dst_name = Chatcommand.GetNext(ref message);

            dst_name = chan.FindNickname(dst_name, false);
            if (dst_name == null)
            {
                chan.Say(nick + ": Unknown or invalid nickname specified.");
                return;
            }

            if (dst_name == G.settings["nickname"])
            {
                E.Notice(nick, "You fell for it, fool! Thunder Cross Split Attack!");
                dst_name = nick;
            }

            // Take a random amount from "colors"
            string[] choices    = new string[Utils.random.Next(2, 5)];
            string   choice_str = "";

            for (int i = 0; i < choices.Length; ++i)
            {
                choices[i] = (string)Utils.RandomIn(colors);
                // Format chat output
                choice_str += choices[i];
                if (i < choices.Length - 1)
                {
                    choice_str += ", ";
                }
            }
            string color = (string)Utils.RandomIn(choices);

            var data = new DisarmData(dst_name, color, Utils.random.Next(50, 90) * 1000.0);

            data.timer.Elapsed += delegate {
                BoomTimerElapsed(channel);
            };

            m_timers[channel] = data;
            chan.Say(dst_name + ": Tick tick.. " + (int)(data.timer.Interval / 1000.0) +
                     "s until explosion. Try $cutwire <color> from one of these colors: " + choice_str);
        }