/
LIB3/
LIB3/D/ADMIN/
LIB3/D/ADMIN/OBJ/
LIB3/D/ADMIN/ROOM/W/
LIB3/D/HOME/
LIB3/D/HOME/CITY/ARENA/
LIB3/D/HOME/CITY/ITEMS/
LIB3/D/HOME/CITY/POSTOFFI/
LIB3/DOC/
LIB3/GLOBAL/SPECIAL/
LIB3/GLOBAL/VIRTUAL/
LIB3/NET/
LIB3/NET/CONFIG/
LIB3/NET/DAEMON/CHARS/
LIB3/NET/GOPHER/
LIB3/NET/INHERIT/
LIB3/NET/OBJ/
LIB3/NET/SAVE/
LIB3/NET/VIRTUAL/
LIB3/OBJ/B_DAY/
LIB3/OBJ/HANDLERS/TERM_TYP/
LIB3/PLAYERS/B/
LIB3/PLAYERS/N/
LIB3/ROOM/
LIB3/SAVE/
LIB3/SAVE/BOARDS/
LIB3/SAVE/ENVIRON/
LIB3/SAVE/POST/
LIB3/STD/COMMANDS/SHADOWS/
LIB3/STD/CREATOR/
LIB3/STD/DOM/
LIB3/STD/EFFECTS/
LIB3/STD/EFFECTS/HEALING/
LIB3/STD/EFFECTS/OTHER/
LIB3/STD/EFFECTS/POISONS/
LIB3/STD/ENVIRON/
LIB3/STD/GUILDS/
LIB3/STD/LIQUIDS/
LIB3/STD/ROOM/
LIB3/STD/TRIGGER/SHADOW/
LIB3/W/
LIB3/W/BANNOR/
LIB3/W/NEWSTYLE/
#include "path.h"
inherit "/std/room.c";

object guard1, guard2;

setup ()
{
   set_short("North end of Traders Walk");
   set_long("This is Traders Walk, which runs North"+
      "/South through "+CITYNAME+". To the north, a heavy gate "+
      "allows exit from the city to the north.\n");
   add_item( ({"road", "street", "traders walk", "Traders Walk"}),
      "Traders Walk carries most of the city's commerce "+
      "from the northern traders. It is kept in good repair, "+
      "but only to encourage the tourists.\n");
   add_item( ({"crowd", "people", "tourist", "trader"}),
      "All the tourists, traders, and locals swarming "+
      "about here are doing it just to annoy you.\n");
      add_item( ({"gate", "entrance", "exit"}),
         "The gates are constructed from heavy oak reinforced with "
         +"wide iron bands. They are usually left open, to allow the "
         +"traders from the north free access to the city.\n");
      add_monster(MONSTERS+"guard", 2);
      add_exit("south", HOMECITY+"traderswalk2", "road");
      add_exit("north", SURROUND+"northroad1", "road");
   modify_exit("north", ({"function", "leave_city"}) );
      set_zone("trader");
      set_light(60);
   }

void reset()
{
if(!guard1)
{
   guard1 = clone_object(MONSTERS+"guard");
   guard1->move(this_object());
}
if(!guard2)
{
   guard2 = clone_object(MONSTERS+"guard");
   guard2->move(this_object());
}
}

void dest_me()
{
if(guard1) guard1->dest_me();
if(guard2) guard2->dest_me();
::dest_me();
}

int leave_city()
{
   if(guard1 || guard2)
      {
      if((string)this_player()->query_race_ob() == "std/races/polymorph")
         {
         notify_fail("The guard stops you, saying 'Hey, you'll have "
               +"to choose a race before leaving the city!'\n");
         say("A guard stops "+this_player()->query_cap_name()
            +" from leaving the city, on the grounds that "
            +this_player()->query_pronoun()+" is still a polymorph.\n");
         return 0;
      }
      if(this_player()->query_level() < 2)
         {
         notify_fail("A guard stops you leaving the city, saying "
               +"'You are too inexperienced to leave the city yet, "
            +this_player()->query_cap_name()+". Why not gain "
            +"a bit more experience before venturing out into the "
            +"big bad world?'\n");
         say("A guard stops "+this_player()->query_cap_name()+" leaving"
            +" the city on the grounds that "+this_player()->query_pronoun()
            +" is too inexperienced.\n");
         return 0;
      }
      if(this_player()->query_level() < 5)
         {
         write("A guard steps up to you, saying 'Beware, "
            +this_player()->query_cap_name()+". You are still "
            +"rather inexperienced to be leaving the city. Do not "
            +"wander too far!'\n");
         say("A guard says something to "+this_player()->query_cap_name()+
            " before allowing "+this_player()->query_objective()
            +" to leave the city.\n");
         return 1;
      }
      write("A guard gives you a cursory glance before "
         +"motioning you on.\n");
      return 1;
   }
write("There are no guards here, so you pass freely through the gate.\n");
return 1;
}