From: "Artur 'Revinor' Biesiadowski" /* 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 */