/* For now I will not give you exact instructions, only the idea of doing it.

Idea of direction descriptions is to give tool for making rooms different
when entered from different sides. For example imagine path to vulcano:

> n
You move a bit closer to vulcano.
You see some remains of old lava.

> n
As you move even closer to vulcano, you begin to feel great heat from that
direction.
You are standing on path which was tormented by lava streams many times.

> n 
It begins to be unbearable hot. You don't want to get any closer.
You are standing on the edge of vulcano.

> s

When you walk to greater distance from vulcano, fresh air cooled you face.
You are standing on path which was tormented by lava streams many times.



I hope you see what I mean in this short example.
My method is fully compatible with standart Merc/Envy area format, so you
can share areas with people who have this feature, or do not have it.

We will use extra descriptions in room.
Choose two magic postheaders ( any combination of 3-5 letters will do ).
I will call them XXXX and YYYY.

When you want to desription pop out when moving from room 333 to room 444
add extra description in room 444 with keyword

333XXXX~   or 333YYYY~
and modify autolook called from move_char to seek such descriptions and
show them to char.

I extracted autolook part from do_look and changed it a little */


void do_look_directional( CHAR_DATA *ch, char *argument )
{
	int normal_look;
	char                     buf[15];
	char                    *exdesc;


	if ( !ch->desc)
	return;


    if ( ch->position < POS_SLEEPING )
    {
	send_to_char( "You can't see anything but stars!\n\r", ch );
	return;
    }

    if ( ch->position == POS_SLEEPING )
    {
	send_to_char( "You can't see anything, you're sleeping!\n\r", ch );
	return;
    }

    if ( !check_blind( ch ) )
	return;

    if ( !IS_NPC( ch )
	&& !IS_SET( ch->wiz_act, WIZ_HOLYLIGHT )
	&& room_is_dark( ch->in_room ) )
    {
	send_to_char( "It is pitch black ... \n\r", ch );
	show_char_to_char( ch->in_room->people, ch );
	return;
    }

    send_to_char( ch->in_room->name, ch );
    send_to_char( "\n\r", ch );

    if ( !IS_NPC( ch ) && IS_SET( ch->act, PLR_AUTOEXIT ) )
	do_exits( ch, "auto" );

	if (  !IS_NPC( ch ) && !IS_SET( ch->act, PLR_BRIEF ) ) 
    {
       normal_look = 0;
       buf[0] = '\0';
       sprintf( buf , argument);
       strcat ( buf , MAGIC_DD_YYYY );
       exdesc = get_extra_descr( buf, ch->in_room->extra_descr);
       if ( exdesc )
       {
	  do_look( ch, buf );
       }
       else
       {
	  buf[0] = '\0';
	  sprintf( buf , argument);
	  strcat ( buf , MAGIC_DD_XXXX );
	  exdesc = get_extra_descr( buf, ch->in_room->extra_descr);
	  normal_look = 1;
	  if (exdesc)
	  {
	     do_look( ch, buf );
	  }
       }
       if ( normal_look )  send_to_char( ch->in_room->description, ch );
	}


    if ( IS_SET( ch->in_room->room_flags, ROOM_CONE_OF_SILENCE ) )
	send_to_char( "It seems eerily quiet.\n\r", ch );

    show_list_to_char( ch->in_room->contents, ch, FALSE, FALSE );
    show_char_to_char( ch->in_room->people,   ch );
    return;

}

/* Now in move_char add at beginning */

	int vn;
	char buf[50];

	vn = ch->in_room->vnum;


/* and then just before 
   SET_BIT( ch->act, moved  ); */

	sprintf( buf , "%d" , vn);
	do_look_directional( ch, buf );


/* I think thats all. If I missed something mail me I will correct myself.
   XXXX is for 
   extra descr + normal descr

   YYYY is for
   extra descr only ( interesting thing - if you put YYYY at all directions
   you can write normal look with statements like - "You are standing" because
   to get this descr char have to look after moving into room

*/





