Add to act_comm.c

After do_say add this...

void do_osay (CHAR_DATA * ch, char *argument)
{
    if (argument[0] == '\0')
    {
        send_to_char ("Osay what?\n\r", ch);
        return;
    }

    act ("{6$n says OOCly '{7$T{6'{x", ch, NULL, argument, TO_ROOM);
    act ("{6You say OOCly '{7$T{6'{x", ch, NULL, argument, TO_CHAR);

    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;
}



Then search for 

    ALTER_COLOUR (info)}
    else if (!str_cmp (arg, "say_text"))
    {

and after it add this...


    ALTER_COLOUR (info)}
    else if (!str_cmp (arg, "osay"))
    {
    ALTER_COLOUR (info)}
    else if (!str_cmp (arg, "osay_text"))
    {


Then in interp.c Search for...

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

And below it add this...

{"osay", do_osay, POS_RESTING, 0, LOG_NORMAL, 1},


And finally, in interp.h search for this...

DECLARE_DO_FUN( do_say                  );

and after it add this...

DECLARE_DO_FUN( do_osay                 );