/* Beep command adapted from Altrag's snippet for smaug. This will work on
 * most codebases with minor tweaks but was designed with LoW4 in mind.
 * No emails or help file additions or anything are needed for this. All
 * I ask is that you release any snippets of your own work that you might
 * have just laying around. Feel free to delete any comments in the code.
 *
 * -Igabod-
 */

/* Instructions for installing this snippet
 *
 * In merc.h under the ACT bits used for mobs at the bottom of that list
 * add in the following, replacing the number with the first free bit.
 */
#define ACT_NOBEEP               262144

/* Somewhere among the DECLARE_DO_FUN's add in the following lines.
 */
DECLARE_DO_FUN( do_beep         );
DECLARE_DO_FUN( do_nobeep       );

/* In interp.c I've added a new section for new commands I made but if
 * you don't wanna do that then just put this somewhere near the bottom
 * of the cmd_table.
 */
{"beep",         do_beep,         POS_STANDING,  1, LOG_NORMAL },
{"nobeep",       do_nobeep,       POS_STANDING,  1, LOG_NORMAL },

/* Copy and paste the following two functions into any file you want.
 * I made a file called iggystuff.c for all my random new commands but
 * this can go in any file that has #include merc.h at the top.
 */

void do_beep(CHAR_DATA *ch, char *argument)
{
        CHAR_DATA *victim;
        char buf[MAX_STRING_LENGTH];

        if(!argument || !(victim = get_char_world(ch,argument)))
        {
                stc("{cBeep who?{x\r\n",ch);
                return;
        }

        if (IS_NPC(victim))
        {
                stc("{cYou can only beep players.{x\r\n",ch);
                return;
        }

        if (IS_SET(victim->act,ACT_NOBEEP))
        {
                sprintf(buf,"{C%s {cis not accepting beeps at this time.{x\r\n",victim->name);
                stc(buf,ch);
                return;
        }
/* If you change the message here, be sure to leave the \a in since it
 * is what causes the audible beep.
 */
        sprintf(buf,"{C%s {cis beeping you!{x\a\r\n",PERS(ch,victim));
        stc(buf,victim);
        sprintf(buf,"{cYou beep {C%s.{x\r\n",PERS(victim,ch));
        stc(buf,ch);
        return;
}

void do_nobeep(CHAR_DATA * ch,char *argument)
{
        if (IS_NPC(ch)) return;

        if (IS_SET(ch->act,ACT_NOBEEP))
        {
                REMOVE_BIT(ch->act,ACT_NOBEEP);
                stc("You can now be the target of beeps.\r\n",ch);
                return;
        }

        else if (!IS_SET(ch->act,ACT_NOBEEP))
        {
                SET_BIT(ch->act,ACT_NOBEEP);
                stc("You can no longer be the target of beeps.\r\n",ch);
                return;
        }

        else
        {
                stc("Excuse you?\r\n",ch);
                return;
        }

        return;
}
/* Do a clean compile and then copyover and you should be good to go.
 * You will want to read through the functions and make changes to the
 * colors and possibly the messages.
 *
 * If you have difficulty installing this snippet, go to www.mudbytes.net
 * or www.godwars.net and ask for help on the forums there. Both places
 * are full of people who can and will help you.
 */