This is a very and I do mean very simple snippet written to allow players to target their
says, adds a very nice flavor to them and helps avoid complete confusion during heavy RPing
in crowded places. 

It is the first snippet I've written, plus my first attempt at one and I dare say I am quite
pleased with the result. In any case, be so kind as to add a line for credit, simple or not
it is my firstborn. :P

It has been tested on a ROM codebase derivative, it works nicely, feel free to modify to 
suit your tastes.

Enjoy


===========================================================================================

In interp.h after

DECLARE_DO_FUN (do_say);

add

DECLARE_DO_FUN (do_sayto);

===========================================================================================

In interp.c after 

    {"say", do_say, POS_RESTING, 0, LOG_NORMAL, 1},
    {"'", do_say, POS_RESTING, 0, LOG_NORMAL, 0},

add

    {"sayto", do_sayto, POS_RESTING, 0, LOG_NORMAL, 1},

===========================================================================================

Copy the following code after do_say in act_comm.c

CH_CMD (do_sayto)
{
	char arg[MAX_INPUT_LENGTH];/*, buf[MAX_STRING_LENGTH]*/
    CHAR_DATA *victim;

    argument = one_argument (argument, arg);

	if (arg[0] == '\0' || argument[0] == '\0')
	{
	    chsend ("Say what to whom?\n\r", ch);
	    return;
	}

	if ((victim = get_char_world (ch, arg)) == NULL ||
		 victim->in_room != ch->in_room )
	{
		chsend ("They are not here.\n\r",ch);
		return;
	}
	else
	{
		act ("" CTAG (_SAY1) "You say to $N '" CTAG (_SAY2) "$t"
		 CTAG (_SAY1) "'{x", ch, argument, victim, TO_CHAR);

		act_new ("" CTAG (_SAY1) "$n says to you '" CTAG (_SAY2) "$t"
			 CTAG (_SAY1) "'{x", ch, argument, victim, TO_VICT, POS_DEAD);

		act_new ("" CTAG (_SAY1) "$n says to $N '" CTAG (_SAY2) "$t"
			 CTAG (_SAY1) "'{x", ch, argument, victim, TO_ROOM, POS_DEAD);

	}

    if (!IS_NPC (ch))
	{
	    CHAR_DATA *mob, *mob_next;
	    for (mob = ch->in_room->people; mob != NULL; mob = mob_next)
		{
		    mob_next = mob->next_in_room;
		    if (IS_NPC (mob) && HAS_TRIGGER (mob, TRIG_SPEECH) &&
			mob->position == mob->pIndexData->default_pos)
			mp_act_trigger (argument, mob, ch, NULL, NULL,
					TRIG_SPEECH);
		}
	}
    return;
}

===========================================================================================

Made for GrMuD v 1.0 (c) 2002-2003 Khashnak
email: Elyandil@hotmail.com