/*

filename    udgaard
password    release
changedby   Darg
EmailAdd    Mark Pringle
request     compile
version     1
END HEADER*/




#include

%zone    udgaard

title "Village of Udgaard"

lifespan 25
reset RESET_ANYHOW

creators {"papi"}

notes
"This is designed to be the small and easy starting village of Valhalla.
It contains basic shops, law, banking and post office. Midgaard then
becomes the capital of Valhalla.
Version 1.0 made 12 March 94 by Papi (Michael Seifert).
16 Rooms added by Isildur - May 1997 - added watch towers."

help
"&l                   The Village of Udgaard
                      1 1 1 1 1 1 1 1 1 1
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
A                C   T                         Temple          B07
                |   |
B      I-I   S   C   B   S                     Item Storage    A09
        |   |   |   |   | |                   Food Store      B05
C  1-W---#---#---#---#---#-#-W-2               Armourer        B11
        |   |   |   |   |                     Ironmonger      D05
D    R---P   S   |   O   S                     Weaponsmith     D11
                |                             Inn             B03
E        H       |       F                     Post Office     D03
        |       |       |                     Guard's Office  D09
F  G-#---#---#---#---#---#---#-G               Haon-Dor        C00
                |           |                 Bank            B09
G    T           |           Y                 Herbalist       E03
    |           |                             Field Equipment E11
H    #---#---#---S---#---#---#                 Tobacco Shop    G01
    |   |       |       |   |                 Mage Tailor     I03
I    G   M       D       F   G                 Fence           I11
                |                             Village Dump    I07
J              Bridge                          Town Records    D01

                                              Healer Guild    F00
                                              Fighter Guild   F14
>From C13 you reach the city of Midgaard       Thieves Guild   H14
by going 'eseseenenee'                         Conjurer Guild  H00

                                              Cypress Forest  C14
The Udgaard Town Hall is situated at G13.      
That's is where the Mayor is to be found.      W - Watchtowers


&fUdgaard is the starting Village for new players. It contains all the basic
elements needed: A temple, armory, weaponsmith, banker, sheriff, food store,
ironmonger, post office and an Inn. All of the four starting guilds are
reachable through the guild streets, also containing several
guild-dedicated shops.&n&n

Udgaard is connected to the Haon-Dor forest, Cypress forest - all
are ideal zones for beginners as long as you are a little cautious.&n&n

The only native monster in here is the ever-famous 'beastly fido'. A map of
Udgaard is available at the Ironmonger store and also has directions for
reaching the city of Midgaard.

Beginners: Try 'help me' to get beginners help."

#define CIGAR(price,smoketime)   \
extra {"$rem_s"}    \
"You put away your $2N for later enjoyment." \
extra {"$rem_o"}    \
"$1n puts away $1s $2N for later enjoyment." \
manipulate {MANIPULATE_TAKE,MANIPULATE_HOLD} \
type ITEM_OTHER     \
cost price IRON_PIECE   \
value[1] 0     \
dilcopy cigar_dil2@udgaard();                   \
dilcopy cigar_dil@udgaard(smoketime);  \
dilcopy smoke_dil@udgaard();

/* Price and weight are straightforward, smoketime is the time the
  pipe will stay lit (in seconds)        */

#define PIPE(price,wgt,smoketime)  \
extra {"$rem_s"}    \
"You put your $2N away for later enjoyment." \
extra {"$rem_o"}    \
"$1n puts $1s $2N away for later enjoyment." \
manipulate{MANIPULATE_TAKE,MANIPULATE_HOLD} \
type ITEM_OTHER     \
cost  price IRON_PIECE   \
weight  wgt     \
value[1] 0     \
value[2] 0     \
dilcopy pipe_dil@udgaard(smoketime);  \
dilcopy pipe_dil2@udgaard();                    \
dilcopy smoke_dil@udgaard();

#define NO_NEWBIE "Newbie Quest Declined"

%dil

dilbegin go_home(place : string); /* If we aren't where we're supposed to be,
                                    go back there. */

code
{
  heartbeat := PULSE_SEC*60;

:start:
  wait(SFB_TICK, TRUE);

  if (self.outside.nameidx != place)
  {
     act("$1n returns to where $1e belongs.",
         A_SOMEONE, self, null, null, TO_ALL);
     link(self, findroom(place));
     act("$1n has returned after being away for a while.",
         A_SOMEONE, self, null, null, TO_ALL);
  }

  goto start;
}
dilend /* go_home */






dilbegin all_block();
var
 word:string;
code
{
  :start:
  wait(SFB_CMD, ((command("get")) or (command ("bury"))));
  word:=getword (argument);

  if (word== "all")
  {
     block;
     act("This command has been restricted for Donations rooms.",
A_ALWAYS, activator, null, null, TO_CHAR);
     goto start;
  }
}
dilend


dilbegin eager_read();
var
  u : unitptr;
  state : integer;
code
{
  wait(SFB_CMD, activator == self.outside);

  state := 0;
  u := self.outside;
  secure(u, stop);

  pause;
  heartbeat := PULSE_SEC * 45;

  :loop:
  wait(SFB_CMD | SFB_TICK, TRUE);
  if (command("read"))
  {
     if (findunit(u, argument, FIND_UNIT_IN_ME, null) == self)
       quit;
     else if (("chapter 1" in argument) or
              ("chapter 2" in argument) or
              ("chapter 3" in argument) or
              ("chapter 4" in argument) or
              ("chapter 5" in argument) or
              ("chapter 6" in argument))
       quit;
  }
  else if (command(CMD_AUTO_TICK))
  {
     state := state + 1;

     if (state <= 2)
       act("&c+yYou should read $2n by writing: 'read handbook'&cw",
    A_ALWAYS, u, self, null, TO_CHAR);
     else if (state == 3)
       act("&c+y$2n wants to be read.&cw",
    A_ALWAYS, u, self, null, TO_CHAR);
     else if (state == 4)
       act("&c+y$2n tells you, 'Read me now or I will make you!'&cw",
    A_ALWAYS, u, self, null, TO_CHAR);
     else if (state == 5)
     {
       exec("read handbook", u);
       quit;
     }
  }
  goto loop;

  :stop:
  quit;
}
dilend



dilbegin recall home();
var
  hour : integer;
  i : integer;

code
{
  hour := -24;

  :start:
  wait(SFB_CMD, (activator == self.outside) and command("home"));
  block;
  if (self.outside.position == POSITION_FIGHTING)
  {
     act("The $2N does not work in combat.",
  A_ALWAYS, self.outside, self, null, TO_CHAR);
     goto start;
  }
  if (self.equip == 0)
  {
     act("The $2N must be worn for it to work.",
  A_ALWAYS, self.outside, self, null, TO_CHAR);
     goto start;
  }
  if (activator.level > 3)
  {
     act("As you attempt to use $2n it suddenly dissolves.",
  A_ALWAYS, self.outside, self, null, TO_CHAR);
     act("$1n's $2n suddenly dissolves as $1e attempts to use it,",
  A_ALWAYS, self.outside, self, null, TO_REST);
     destroy(self);
  }
  i := hour - (mudhour + mudday * MUD_DAY);
  if (i < 0)
    i := -i;
  if (i < 6)
  {
     act("The $2N has not charged enough power yet.",
  A_ALWAYS, self.outside, self, null, TO_CHAR);
     goto start;
  }
  hour := mudhour + mudday * MUD_DAY;
  act("Your $2N glows and you feel transported to another place!",
       A_ALWAYS, self.outside, self, null, TO_CHAR);
  act("The $2N on $1n's finger glows brightly as $1e vanishes in a "+
      "flash of light!", A_ALWAYS, self.outside, self, null, TO_REST);
  link(self.outside, findroom(self.outside.hometown));
  exec("look", self.outside);
  act("$1n appears in a flash of light!",
      A_ALWAYS, self.outside, self, null, TO_REST);
  goto start;
}
dilend



dilbegin blowaway(s : string);
code
{
  heartbeat := PULSE_SEC * 120;

  :loop:
  pause;

  if (self.outside.type == UNIT_ST_ROOM)
  {
     act(s, A_SOMEONE, self, null, null, TO_ROOM);
     destroy(self);
  }

  goto loop;
}
dilend



dilbegin statue_load(pc : unitptr, s : string, n : string, i : integer);
var
 u : unitptr;

code
{
  if (findunit(pc, n, FIND_UNIT_INVEN | FIND_UNIT_EQUIP, null) == null)
  {
     u := load(s);
     u.cost := 0;
     u.height := pc.height;
     link(u, pc);
     if (i)
       dilcopy("blowaway@udgaard($1n explodes in a flash of "+
        "bright yellow light!)", u);
  }
  return;
}
dilend


dilbegin clone_attr(original : unitptr, tgt : unitptr);
var
  i : integer;

code
{

  /* - - - Abilities - - - */

  i := 0;

  while (i < ABIL_TREE_MAX)
  {
     tgt.abilities[i] := original.abilities[i];
     i := i + 1;
  }

  /* tgt.level   := original.level; */
  /* tgt.max_hp := original.max_hp; */
  tgt.hp     := original.hp;

  /* - - - Spells - - - */

  i := 0;

  if (tgt.type == UNIT_ST_PC)
  {
     while (i < SPL_GROUP_MAX)
     {
        tgt.spells[i] := (3 * original.spells[i]) / 2;
        i := i + 1;
     }
  }
  else
  {
     while (i < SPL_GROUP_MAX)
     {
        tgt.spells[i] := original.spells[i];
        i := i + 1;
     }
  }



  /* - - - Weapons - - - */

  i := 0;

  if (tgt.type == UNIT_ST_PC)
  {
     while (i < WPN_GROUP_MAX)
     {
        tgt.weapons[i] := (3 * original.weapons[i]) / 2;
        i := i + 1;
     }
  }
  else
  {
     while (i < SPL_GROUP_MAX)
     {
        tgt.weapons[i] := original.weapons[i];
        i := i + 1;
     }
  }

  quit;
}
dilend









/* ------------------ DIL FROM GUILD SHOPS ----------------------- */

/* ----------------------- HOLYWATER DIL ---------------- */

/* Works only for (ex) healers and paladins. Does not work on Necros.
Blesses PC's. Damages undead and demons. Use with care. */

dilbegin holy_water();
var
mob : unitptr;
n : integer;
txt : string;
code
{
:start:
wait(SFB_CMD,command("sprinkle")and(activator==self.outside));
block;
txt:=argument;
mob:=findunit(activator,txt,FIND_UNIT_SURRO,null);

if (not(mob))
{
sendtext("Sprinkle who?&n",self.outside);
goto start;
}

if ((mob.type == UNIT_ST_PC)and
    (mob!=activator)and(visible(self.outside,mob)))
{
act("You open your vial and sprinkle holy water over $3n with a blessing.",
A_SOMEONE,self.outside,self,mob,TO_CHAR);
act("$1n opens a vial and sprinkles holy water over $3n with a blessing.",
A_SOMEONE,self.outside,self,mob,TO_NOTVICT);
act("$1n opens a vial and sprinkles holy water over you with a blessing.",
A_SOMEONE,self.outside,self,mob,TO_VICT);
if ((("$Udgaard Healer" in self.outside.quests)or
    ("$Midgaard Paladin" in self.outside.quests))and
    (mob.guild!=GUILD_NECROMANCER))
{
n:=cast_spell(SPL_BLESS,self.outside,self,mob,"");
}
destroy(self);
}

if ((mob.type == UNIT_ST_PC)and(mob==activator))
{
act("You open your vial and sprinkle yourself with the holy water.",
A_SOMEONE,self.outside,self,mob,TO_CHAR);
act("$1n opens a vial and sprinkles $1mself with holy water.",
A_SOMEONE,self.outside,self,mob,TO_REST);
if ((("$Udgaard Healer" in self.outside.quests)or
    ("$Midgaard Paladin" in self.outside.quests))and
    (self.outside.guild!=GUILD_NECROMANCER))
{
n:=cast_spell(SPL_BLESS,self.outside,self,self.outside,"");
}
destroy(self);
}

if (mob.type==UNIT_ST_NPC)
{
act("You sprinkle $3n with holy water!",
A_SOMEONE,self.outside,self,mob,TO_CHAR);
act("$1n sprinkles $3n with holy water!",
A_SOMEONE,self.outside,self,mob,TO_REST);

if (((mob.race>5999)and(mob.race<6999)) or
   ((mob.race>5019)and(mob.race<5030)) or
   ((mob.race>5000)and(mob.race<5006)))
{
act("The water melts $3n like hot acid!",
A_SOMEONE,self.outside,self,mob,TO_ALL);
n:=cast_spell(SPL_ACIDBALL_1,self.outside,self,mob,"");
exec("kill "+self.outside.name,mob);
}
destroy(self);
}
sendtext("Sprinkle who? --TEST--&n",self.outside);
goto start;
}
dilend


/* ----------------------- TENT DIL --------------------- */

dilbegin tent_dil();
var
item:unitptr;
code
{
       :start:
wait(SFB_DONE,command("get")and(self==medium));
if (self.inside)
 {
act("You almost break your back trying to lift the tent, there must be "+
"something inside!&n"+
"You drop the tent back to the ground.",
A_SOMEONE,activator,self,null,TO_CHAR);
link(self,self.outside.outside);
goto start;
}
goto start;
}
dilend


/* ------------------- SMOKING DIL ----------------------------- */

dilbegin tobacco_pouch();
code
{
       :start:
wait(SFB_DONE,command("look")and(self==target));
if (self.value[1]>0)
sendtext("It currently contains enough tobacco for "+itoa(self.value[1])+
" fillings of the pipe.&n",activator);
else
sendtext("It is empty.&n",activator);
goto start;
}
dilend


dilbegin recall aware pipe_dil2();
code
{
       :start:
wait(SFB_DONE,command("remove")and(self.value[1]==1)and
(medium==self)and(activator==self.outside));

self.value[1]:=0;
self.value[2]:=0;
sendtext("You put out your "+self.name+" and knock out the "+
"remaining ashes.&n",self.outside);
act("$1n puts out $1s $2N and knocks out the remaining ashes.",
A_HIDEINV,self.outside,self,null,TO_REST);
goto start;
}
dilend


dilbegin recall aware pipe_dil(time:integer);
var
       pc      : unitptr;
       u       : unitptr;
code
{
       :start:
interrupt(SFB_CMD,(command("fill")or command("light")or
command("extinguish"))
and(activator==self.outside)and(activator.position>POSITION_SLEEPING)
,commands);

wait(SFB_DONE,self.value[1]==1);

heartbeat:=PULSE_SEC*time/2;
wait(SFB_TICK,TRUE);
wait(SFB_TICK,TRUE);

self.value[1]:=0;
self.value[2]:=0;
sendtext("Your pipe goes out.&n",self.outside);
act("$1n's pipe goes out.",A_HIDEINV,self.outside,self,null,TO_REST);
goto start;

       :commands:
u:=findunit(self.outside,argument,FIND_UNIT_IN_ME,null);
if ((u==null)or(u!=self)) goto start;
pc:=self.outside;
secure(pc,gone);

/*      Value 1 of the pipe is lit (1) or not (0)
       Value 2 of the pipe is filled (1) or not (0)    */

if (command("fill")and(self.value[2]==0))
{
block;
u:=findunit(pc,"tobacco pouch",FIND_UNIT_IN_ME,pc.inside);
if ((u)and(u.value[1]>0))
{
self.value[2]:=1;
u.value[1]:=u.value[1]-1;
sendtext("You fill your pipe with some tobacco from your pouch.&n"
,pc);
act("$1n fills $1s $2n with some tobacco from $1s tobacco pouch."
,A_HIDEINV,pc,self,u,TO_REST);
goto start;
}
sendtext("You regretfully realize that you lack tobacco to fill in your "+
"pipe!&n",pc);
goto start;
}

if (command("fill")and(self.value[2]==1))
{
block;
sendtext("Your "+self.name+" is already filled with tobacco!&n",pc);
goto start;
}

if (command("extinguish")and(self.value[1]==0))
{
block;
sendtext("But your pipe is not lit!&n",pc);
goto start;
}

if (command("extinguish")and(self.value[1]==1))
{
block;
sendtext("You extinguish your "+self.name+".&n",pc);
self.value[1]:=0;
goto start;
}

if (command("light")and(self.value[1]==0))
{
block;
if (self.equip==WEAR_HOLD)
{
if (self.value[2]==1)
 {
 sendtext("You puff on your pipe and light it, inhaling the smoke
deeply.&n",pc);
 act("$1n lights a pipe, blowing out a cloud of smoke."
 ,A_SOMEONE,pc,self,null,TO_REST);
 self.value[1]:=1;
 self.value[2]:=0;
 goto start;
 }
if (self.value[2]==0)
 {
 sendtext("You lack tobacco in your pipe!&n",pc);
 goto start;
 }
}
sendtext("You need to hold your pipe to light it, do you want it smoking "+
"in your pocket?&n",pc);
goto start;
}

if (command("light")and(self.value[1]==1))
{
block;
sendtext("But your pipe is already lit..?&n",pc);
goto start;
}

else goto start;

       :gone:
unsecure(pc);
self.value[1]:=0;
goto start;
}
dilend


dilbegin aware cigar_dil2();
code
{
       :start:
wait(SFB_DONE,command("remove")and(activator==self.outside)and
(medium==self));

if (self.value[1]==1)
{
self.value[1]:=0;
sendtext("You put out your "+self.name+".&n",self.outside);
act("$1n puts out $1s $2N.",A_HIDEINV,self.outside,self,null,TO_REST);
goto start;
}
else goto start;
}
dilend


dilbegin recall aware cigar_dil(time:integer);
var
       pc      : unitptr;
       u       : unitptr;
       item    : unitptr;
code
{
       :start:
interrupt(SFB_CMD,(command("light")or command("extinguish"))
and(activator==self.outside)and(activator.position>POSITION_SLEEPING)
,commands);

wait(SFB_CMD,(self.value[1]==1)and(self.equip==WEAR_HOLD));

heartbeat:=PULSE_SEC*time/2;
wait(SFB_TICK,TRUE);
wait(SFB_TICK,TRUE);

self.value[1]:=0;
sendtext("Your cigar burns out.&n",self.outside);
act("$1n's cigar burns out.",A_HIDEINV,self.outside,self,null,TO_REST);
u:=load("dogend@udgaard");
secure(u,blah);
link(u,self.outside);
addequip(u,WEAR_HOLD);
destroy(self);
quit;
       :blah:
unsecure(u);
goto start;

       :commands:
item:=findunit(self.outside,argument,FIND_UNIT_IN_ME,null);
if ((item==null)or(item!=self)) goto start;
pc:=activator;
secure(pc,gone);

/*      Value 1 of the cigar is lit (1) or not (0)      */

if (command("extinguish")and(self.value[1]==0))
{
block;
sendtext("But your "+self.name+" is not lit!&n",pc);
goto start;
}

if (command("extinguish")and(self.value[1]==1))
{
block;
sendtext("You put out your "+self.name+".&n",pc);
self.value[1]:=0;
goto start;
}

if (command("light")and(self.value[1]==0))
{
block;
if (self.equip==WEAR_HOLD)
{
 sendtext("You light your "+self.name+".&n",pc);
 act("$1n lights "+self.title+", blowing out a cloud of smoke."
 ,A_SOMEONE,pc,self,null,TO_REST);
 self.value[1]:=1;
 goto start;
}
sendtext("You need to hold your cigar to light it, do you want it smoking "+
"in your pocket?&n",pc);
goto start;
}

if (command("light")and(self.value[1]==1))
{
block;
sendtext("You re-light your "+self.name+", just to be sure.&n",pc);
act("$1n re-lights $1s $2N, just to be on the safe side.",
A_SOMEONE,pc,self,null,TO_REST);
goto start;
}
goto start;

       :gone:
unsecure(pc);
self.value[1]:=0;
goto start;
}
dilend


dilbegin recall aware smoke_dil();
var
u : unitptr;
i : integer;
txt : string;
code
{
:start:
interrupt(SFB_CMD,command("smoke")and(activator==self.outside),smoking);
wait(SFB_CMD,(self.value[1]==1)and(self.equip==WEAR_HOLD));
:smokeloop:
if ((self.value[1]==1)and(not(command("remove"))))
{
i:=rnd(1,5);
heartbeat:=PULSE_SEC*5;
pause;
if (i==1)
{
sendtext("You inhale deeply the tobacco smoke.&n",self.outside);
act("$1n inhales deeply the tobacco smoke from $1s $2n with every sign "+
"of enjoyment.",A_HIDEINV,self.outside,self,null,TO_REST);
}
if (i==2)
{
sendtext("You blow smoke rings in the air.&n",self.outside);
act("$1n blows smoke rings in the air.",
A_SOMEONE,self.outside,self,null,TO_REST);
}
if (i==3)
{
sendtext("Puffing energetically on your "+self.name+", you blow a cloud of "+
"smoke in the air.&n", self.outside);
act("Puffing energetically on $1s $2n, $1n blows a cloud of smoke.",
A_HIDEINV,self.outside,self,null,TO_REST);
}
if (i==4)
{
sendtext("You take another puff on your "+self.name+".&n",self.outside);
act("$1n takes another puff on $1s $2n.",
A_HIDEINV,self.outside,self,null,TO_REST);
}
if (i==5)
{
sendtext("You enjoy the smoke of your "+self.name+".&n",self.outside);
act("A cloud of tobacco smoke surrounds $1n.",
A_HIDEINV,self.outside,self,null,TO_REST);
}
heartbeat:=PULSE_SEC*20;
pause;
goto smokeloop;
}
else goto start;

:smoking:
/* -------------------- Smoke Social ---------------------- */
block;
if (self.value[1]==0)
{
sendtext("Light your "+self.name+" first, then smoke it!&n",self.outside);
goto smokeloop;
}

txt:=argument;
if ((txt==self.outside.name)or(txt==self.name)or
((txt=="cigar")and("cigar" in self.name))or
((txt=="pipe")and("pipe" in self.name)))
txt:="";
if (txt=="")
 {
if (rnd(1,3)==1)
{
sendtext("You puff on your "+self.name+" and blow smoke into "+
"the air.&n",self.outside);
act("$1n puffs on $1s $2N and blows smoke into the air.",
A_SOMEONE,self.outside,self,null,TO_REST);
goto start;
}
if (rnd(1,2)==1)
{
sendtext("You inhale the aromatic smoke deeply.&n",self.outside);
act("$1n inhales deeply the smoke of $1s $2N.",
A_SOMEONE,self.outside,self,null,TO_REST);
goto start;
}
if (rnd(1,2)==1)
{
sendtext("You blow smoke circles in the air.&n",self.outside);
act("$1n blows smoke circles in the air.",
A_SOMEONE,self.outside,self,null,TO_REST);
goto start;
}
sendtext("You pulse on your "+self.name+".&n",self.outside);
act("$1n pulses on $1s $2n.",
A_SOMEONE,self.outside,self,null,TO_REST);
goto start;
 }
if (txt!="")
{
u:=findunit(self.outside,txt,FIND_UNIT_SURRO,null);
       if ((u.type==UNIT_ST_PC)and(rnd(1,2)==1))
        {
        sendtext("You blow a cloud of smoke in the face of "+u.name+".&n",
        self.outside);
        act("$1n blows a cloud of tobacco smoke in $3n's face.",
        A_SOMEONE,self.outside,self,u,TO_NOTVICT);
        act("$1n blows a cloud of tobacco smoke in your face.",
        A_SOMEONE,self.outside,self,u,TO_VICT);
        goto start;
        }
       if (u.type==UNIT_ST_PC)
        {
        sendtext("You blow a neat smoke ring right at "+u.name+"!&n",
        self.outside);
        act("$1n blows a neat smoke ring right at $3n.",
        A_SOMEONE,self.outside,self,u,TO_NOTVICT);
        act("$1n blows a ring of smoke right in your face.",
        A_SOMEONE,self.outside,self,u,TO_VICT);
        goto start;
        }
 if (u.type==UNIT_ST_NPC)
 {
        sendtext("You blow a cloud of smoke at "+u.title+".&n",
        self.outside);
        act("$1n blows a cloud of tobacco smoke at $3n.",
        A_SOMEONE,self.outside,self,u,TO_NOTVICT);
        act("$1n blows a cloud of tobacco smoke in your face.",
        A_SOMEONE,self.outside,self,u,TO_VICT);
  if (u.alignment<0)
 {
 exec("growl "+self.outside.name,u);
 }
 goto start;
 }
sendtext("No-one here by this name.&n",self.outside);
}
goto start;
}
dilend


dilbegin recall counter();
code
{
:start:
heartbeat := PULSE_SEC * SECS_PER_MUD_DAY/24;
wait(SFB_TICK, TRUE);
heartbeat := PULSE_SEC * 5;

sendto("add count", self);
goto start;
}
dilend


dilbegin recall aware timerone();
var
day : integer;
week : integer;
month : integer;
year : integer;
time : integer;
pc : unitptr;
count : integer;
code
{
if(time > 0)
 goto init;
time := 0;

:init:
day := interrupt (SFB_MSG, argument == "add day", day);
week := interrupt (SFB_MSG, argument == "add week", week);
month := interrupt (SFB_MSG, argument == "add month", month);
year := interrupt (SFB_MSG, argument == "add year", year);
heartbeat := PULSE_SEC * 3;
count := interrupt (SFB_MSG, argument == "add count", count);

wait(SFB_TICK, TRUE);
:top:
pc := self.outside;
if(time == 12) /* 12 */
 goto half_time;

if(time == 22) /* 22 */
 goto time_close;

if(time == 24) /* 24 */
 goto time_up;

goto init;

:hold:
day := interrupt (SFB_MSG, argument == "add day", day);
week := interrupt (SFB_MSG, argument == "add week", week);
month := interrupt (SFB_MSG, argument == "add month", month);
year := interrupt (SFB_MSG, argument == "add year", year);
heartbeat := PULSE_SEC * 3;
count := interrupt (SFB_MSG, argument == "add count", count);

wait(SFB_TICK, TRUE);

goto hold;

:half_time:
     act("**Warning** Your storage lease expires in 12 mud hours.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:time_close:

     act("**Warning** Your storage lease expires in 2 mud hours.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("If you do not renew your lease or remove your belongings they
will be repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:time_up:

     act("**Warning** Your storage lease has expired.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("Your belongings have been repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     destroy(self);
     quit;

:day:
time := time - 24;
goto init;

:week:
time := time - 168;
goto init;

:month:
time := time - 674;
goto init;

:year:
time := time - 8086;
goto init;

:count:
time := time + 1;
goto top;

}
dilend


dilbegin recall aware timertwo();
var
day : integer;
week : integer;
month : integer;
year : integer;
time : integer;
pc : unitptr;
count : integer;
code
{
if(time > 0)
 goto init;
time := 0;

:init:
day := interrupt (SFB_MSG, argument == "add day", day);
week := interrupt (SFB_MSG, argument == "add week", week);
month := interrupt (SFB_MSG, argument == "add month", month);
year := interrupt (SFB_MSG, argument == "add year", year);
heartbeat := PULSE_SEC * 3;
count := interrupt (SFB_MSG, argument == "add count", count);
wait(SFB_TICK, TRUE);
:top:
pc := self.outside;

if(time == 48)
 goto five_days_left;

if(time == 120)
 goto two_days_left;

if(time == 144)
 goto one_day_left;

if(time == 156)
 goto twelve_hours;

if(time == 164)
 goto four_hours;

if(time == 166)
 goto two_hours;

if(time == 168)
 goto time_up;

goto init;

:hold:
day := interrupt (SFB_MSG, argument == "add day", day);
week := interrupt (SFB_MSG, argument == "add week", week);
month := interrupt (SFB_MSG, argument == "add month", month);
year := interrupt (SFB_MSG, argument == "add year", year);
heartbeat := PULSE_SEC * 3;
count := interrupt (SFB_MSG, argument == "add count", count);

wait(SFB_TICK, TRUE);

goto hold;

:five_days_left:

     act("**Warning** Your storage lease expires in 5 mud days.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:two_days_left:

     act("**Warning** Your storage lease expires in 2 mud days.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("If you do not renew your lease or remove your belongings they
will be repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:one_day_left:

     act("**Warning** Your storage lease expires in 1 mud day.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("If you do not renew your lease or remove your belongings they
will be repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:twelve_hours:

     act("**Warning** Your storage lease expires in 12 mud hours.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("If you do not renew your lease or remove your belongings they
will be repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:four_hours:

     act("**Warning** Your storage lease expires in 4 mud hours.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("If you do not renew your lease or remove your belongings they
will be repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:two_hours:

     act("**Warning** Your storage lease expires in 2 mud hours.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("If you do not renew your lease or remove your belongings they
will be repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:time_up:

     act("**Warning** Your storage lease has expired.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("Your belongings have been repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     destroy(self);
     quit;

:day:
time := time - 24;
goto init;

:week:
time := time - 168;
goto init;

:month:
time := time - 674;
goto init;

:year:
time := time - 8086;
goto init;

:count:
time := time + 1;
goto top;

}
dilend


dilbegin recall aware timerthree();
var
day : integer;
week : integer;
month : integer;
year : integer;
time : integer;
pc : unitptr;
count : integer;
code
{
if(time > 0)
 goto init;
time := 0;

:init:
day := interrupt (SFB_MSG, argument == "add day", day);
week := interrupt (SFB_MSG, argument == "add week", week);
month := interrupt (SFB_MSG, argument == "add month", month);
year := interrupt (SFB_MSG, argument == "add year", year);
heartbeat := PULSE_SEC * 3;
count := interrupt (SFB_MSG, argument == "add count", count);
wait(SFB_TICK, TRUE);
:top:
pc := self.outside;

if(time == 168)
 goto week_one;

if(time == 336)
 goto week_two;

if(time == 504)
 goto week_three;

if(time == 624)
 goto two_days_left;

if(time == 648)
 goto one_day_left;

if(time == 660)
 goto twelve_hours;

if(time == 670)
 goto four_hours;

if(time == 672)
 goto two_hours;

if(time == 674)
 goto time_up;

goto init;

:hold:
day := interrupt (SFB_MSG, argument == "add day", day);
week := interrupt (SFB_MSG, argument == "add week", week);
month := interrupt (SFB_MSG, argument == "add month", month);
year := interrupt (SFB_MSG, argument == "add year", year);
heartbeat := PULSE_SEC * 3;
count := interrupt (SFB_MSG, argument == "add count", count);

wait(SFB_TICK, TRUE);

goto hold;

:week_one:

     act("**Warning** Your storage lease expires in 3 mud weeks.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:week_two:

     act("**Warning** Your storage lease expires in 2 mud weeks.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:week_three:

     act("**Warning** Your storage lease expires in 7 mud days",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:two_days_left:

     act("**Warning** Your storage lease expires in 2 mud days.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("If you do not renew your lease or remove your belongings they
will be repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:one_day_left:

     act("**Warning** Your storage lease expires in 1 mud day.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("If you do not renew your lease or remove your belongings they
will be repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:twelve_hours:

     act("**Warning** Your storage lease expires in 12 mud hours.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("If you do not renew your lease or remove your belongings they
will be repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:four_hours:

     act("**Warning** Your storage lease expires in 4 mud hours.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("If you do not renew your lease or remove your belongings they
will be repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:two_hours:

     act("**Warning** Your storage lease expires in 2 mud hours.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("If you do not renew your lease or remove your belongings they
will be repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:time_up:

     act("**Warning** Your storage lease has expired.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("Your belongings have been repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     destroy(self);
     quit;

:day:
time := time - 24;
goto init;

:week:
time := time - 168;
goto init;

:month:
time := time - 674;
goto init;

:year:
time := time - 8086;
goto init;

:count:
time := time + 1;
goto top;
}
dilend


dilbegin recall aware timerfour();
var
day : integer;
week : integer;
month : integer;
year : integer;
time : integer;
pc : unitptr;
count : integer;
code
{
if(time > 0)
 goto init;
time := 0;

:init:
day := interrupt (SFB_MSG, argument == "add day", day);
week := interrupt (SFB_MSG, argument == "add week", week);
month := interrupt (SFB_MSG, argument == "add month", month);
year := interrupt (SFB_MSG, argument == "add year", year);
heartbeat := PULSE_SEC * 3;
count := interrupt (SFB_MSG, argument == "add count", count);
wait(SFB_TICK, TRUE);
:top:
pc := self.outside;

if(time == 674)
 goto month_one;

if(time == 1348)
 goto month_two;

if(time == 2022)
 goto month_three;

if(time == 2696)
 goto month_four;

if(time == 3370)
 goto month_five;

if(time == 4044)
 goto month_six;

if(time == 4718)
 goto month_seven;

if(time == 5392)
 goto month_eight;

if(time == 6066)
 goto month_nine;

if(time == 6740)
 goto month_ten;

if(time == 7414)
 goto month_eleven;

if(time == 7582)
 goto week_one;

if(time == 7750)
 goto week_two;

if(time == 7918)
 goto week_three;

if(time == 8038)
 goto two_days_left;

if(time == 8062)
 goto one_day_left;

if(time == 8074)
 goto twelve_hours;

if(time == 8082)
 goto four_hours;

if(time == 8084)
 goto two_hours;

if(time == 8086)
 goto time_up;

goto init;

:hold:
day := interrupt (SFB_MSG, argument == "add day", day);
week := interrupt (SFB_MSG, argument == "add week", week);
month := interrupt (SFB_MSG, argument == "add month", month);
year := interrupt (SFB_MSG, argument == "add year", year);
heartbeat := PULSE_SEC * 3;
count := interrupt (SFB_MSG, argument == "add count", count);

wait(SFB_TICK, TRUE);

goto hold;

:month_one:

     act("**Warning** Your storage lease expires in 11 mud months.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:month_two:

     act("**Warning** Your storage lease expires in 10 mud months.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:month_three:

     act("**Warning** Your storage lease expires in 9 mud months.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:month_four:

     act("**Warning** Your storage lease expires in 8 mud months.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:month_five:

     act("**Warning** Your storage lease expires in 7 mud months.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:month_six:

     act("**Warning** Your storage lease expires in 6 mud months.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:month_seven:

     act("**Warning** Your storage lease expires in 5 mud months.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:month_eight:

     act("**Warning** Your storage lease expires in 4 mud months.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:month_nine:

     act("**Warning** Your storage lease expires in 3 mud months.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:month_ten:

     act("**Warning** Your storage lease expires in 2 mud months.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:month_eleven:

     act("**Warning** Your storage lease expires in 4 mud weeks.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:week_one:

     act("**Warning** Your storage lease expires in 3 mud weeks.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:week_two:

     act("**Warning** Your storage lease expires in 2 mud weeks.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:week_three:

     act("**Warning** Your storage lease expires in 7 mud days",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:two_days_left:

     act("**Warning** Your storage lease expires in 2 mud days.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("If you do not renew your lease or remove your belongings they
will be repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:one_day_left:

     act("**Warning** Your storage lease expires in 1 mud day.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("If you do not renew your lease or remove your belongings they
will be repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:twelve_hours:

     act("**Warning** Your storage lease expires in 12 mud hours.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("If you do not renew your lease or remove your belongings they
will be repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:four_hours:

     act("**Warning** Your storage lease expires in 4 mud hours.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("If you do not renew your lease or remove your belongings they
will be repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:two_hours:

     act("**Warning** Your storage lease expires in 2 mud hours.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("If you do not renew your lease or remove your belongings they
will be repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     goto hold;

:time_up:

     act("**Warning** Your storage lease has expired.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("Your belongings have been repossessed.",
      A_SOMEONE, pc, null, null, TO_CHAR);
     destroy(self);
     quit;

:day:
time := time - 24;
goto init;

:week:
time := time - 168;
goto init;

:month:
time := time - 674;
goto init;

:year:
time := time - 8086;
goto init;

:count:
time := time + 1;
goto top;
}
dilend



%rooms
post_path
names {"path"}
title "A Small Dirt Path"
descr
"The small dirt path has trees lining both sides of it. Not far in the
distance a spiral of smoke floats up from a chimney of a log cabin. In
from of the cabin are various furs and pelts hung to dry in the wind.
Southward along the path one can hear the everyday lives of a small
village."
movement SECT_CITY
south to village_rd7 descr
"The path continues south.";
north to trading_post descr
"A log cabin can be seen ahead";
end

trading_post
names {"trading post"}
title "Ben's Trading"
descr
"Although the cabin is fairly large, there are so many furs and pelts
laying around that it is difficult to move. A wood stove along the north
wall of the cabin provides heat to help dry some of the newer hides."
movement SECT_INSIDE
south to post_path descr
"The door opens onto a path.";

end


village_rd4

title "Village Road"
descr
"To the east is a bend in the village road. The armourer and
weaponsmith are located north and south of here. The village road continues
east and west."
movement SECT_CITY
north to armourer;
south to weaponsmith;
west to village_rd3;
east to village_rd5;
ALWAYS_LIGHT
end


village_rd5

title "Bend in the Village Road"
descr
"The village road bends from north to west here. To the east is a tall
wooden watchtower, and large trees block all passage to the south."
extra {"village road", "road"}
"The road is constructed of hard-packed dirt."
extra {"wooden watchtower", "watchtower", "tower"}
"This watchtower helps to protect the town of Udgaard."
extra {"large trees", "trees", "tree"}
"These trees seem to be very old."
movement SECT_CITY
west to village_rd4 descr "Village Road.";
east to watch_tower descr "A wooden watch tower.";
north to village_rd6 descr "Village Road.";
ALWAYS_LIGHT
end

village_rd6

title "Village Road"
descr
"The village road leads from north to south here. West of the road is
the side of the armourer's shop, and trees block all passage to the east."
extra {"village road", "road"}
"The road is constructed of hard-packed dirt."
extra {"large trees", "trees", "tree"}
"These trees seem to be very old."
extra {"armourer's shop", "shop"}
"You can outfit yourself with some better equipment here."
movement SECT_CITY
north to village_rd7 descr "Village road north of Udgaard.";
south to village_rd5 descr "Bend in the Village Road.";
ALWAYS_LIGHT
end

village_rd7

title "Village Road North of Udgaard"
descr
"At this point the village road bends from west to south. To the north
is a small house, and to the east all passage is blocked by large trees."
extra {"village road", "road"}
"The road is constructed of hard-packed dirt."
extra {"large trees", "trees", "tree"}
"These trees seem to be very old."
extra {"small house", "house"}
"This small house is owned by Arny the weaponsmith, whose shop is in the
main village to the south of here."
movement SECT_CITY
west to village_rd8 descr "Village Road.";
south to village_rd6 descr "Village Road.";
north to post_path descr
"A small dirt path";
ALWAYS_LIGHT
end

village_rd8

title "Village Road"
descr
"The village road travels from west to east here. Some small houses are
north, while to the south is the back side of Slade's Better Clothing."
extra {"village road", "road"}
"The road is constructed of hard-packed dirt."
extra {"small houses", "houses", "house"}
"These houses are owned by the inhabitants of Udgaard."
extra {"better clothing", "back side", "clothing", "slades", "slade"}
"You can buy armour here, helping to protect your body. To get there,
follow the path to the east."
movement SECT_CITY
west to village_rd9 descr "Village Road.";
east to village_rd7 descr "Village Road north of Udgaard.";
ALWAYS_LIGHT
end

village_rd9

title "Village Road"
descr
"The village road runs from west to east here. Some small houses of the
Udgaard merchants are north, while to the south is the back side of the
bank."
extra {"village road", "road"}
"The road is constructed of hard-packed dirt."
extra {"small houses", "houses", "house"}
"These houses are owned by the inhabitants of Udgaard."
extra {"back side", "bank"}
"You can deposit your money at the bank, making it protected from thieves.
To get there, follow the Village Road to the east."
movement SECT_CITY
west to village_rd10 descr "End of the Village Road.";
east to village_rd8 descr "Village Road.";
ALWAYS_LIGHT
end

village_rd10

title "End of the Village Road"
descr
"The village road leads back to the east from here. To the north is a
wooden watchtower, and to the south is the back side of the Udgaard
temple."
extra {"wooden watchtower", "watchtower", "tower"}
"This watchtower helps to protect the town of Udgaard."
extra {"village road", "road"}
"The road is constructed of hard-packed dirt."
extra {"udgaard temple", "back side", "temple"}
"The Udgaard temple is the center of your existance. It is there that you
can find donated items, rest your soul, or resurrect from death."
movement SECT_CITY
north to watch_tower3 descr "Wooden Watchtower.";
east to village_rd9 descr "Village Road.";
ALWAYS_LIGHT
end

watch_tower

title "Underneath the Wooden Watchtower"
descr
"The floor of a wooden watchtower spreads above your head. The Cypress
Forest grows to the east, or you can enter Udgaard to the west. Trees block
all passage to the north and south.  A ladder leads upwards into the
watchtower."
extra {"ladder"}
"It is a simple wooden ladder."
extra {"wooden watchtower", "watchtower", "tower"}
"This watchtower helps to protect the town of Udgaard."
extra {"village road", "road"}
"The road is constructed of hard-packed dirt."
extra {"udgaard"}
"Udgaard is far safer than the lands which surround it."
extra {"cypress forest", "cypress", "forest"}
"The Cypress Forest stands between Midgaard and Udgaard."
extra {"large trees", "trees", "tree"}
"These trees seem to be very old."
movement SECT_CITY
west to village_rd5 descr "Bend in the Village Road.";
east to cypress/hill descr "Go into the Cypress Forest.";
up to up_tower1 descr "Up in the Watchtower.";
ALWAYS_LIGHT
end

up_tower1

title "Up in the Wooden Watchtower"
descr
"It is obvious why this watchtower was built. From the top of it, there is
a good view of all of Udgaard, and it is possible to scan the surrounding
lands for infidels. The tower can be exited by way of a ladder leading
down."
extra {"wooden watchtower", "watchtower", "tower"}
"This watchtower helps to protect the town of Udgaard."
extra {"village road", "road"}
"The road is constructed of hard-packed dirt."
extra {"udgaard"}
"Udgaard is far safer than the lands which surround it."
extra {"cypress forest", "cypress", "forest"}
"The Cypress Forest stands between Midgaard and Udgaard."
extra {"large trees", "trees", "tree"}
"These trees seem to be very old."
movement SECT_CITY
down to watch_tower descr "Wooden Watchtower.";
ALWAYS_LIGHT
end

watch_tower2

title "Underneath the Wooden Watchtower"
descr
"The floor of a wooden watchtower looms over your head. The forest of
Haon-dor is to the west, and the Village Road of Udgaard leads east. Trees
block all passage to the north and south. A ladder leads upwards into the
watchtower."
extra {"ladder"}
"It is a simple wooden ladder."
extra {"wooden watchtower", "watchtower", "tower"}
"This watchtower helps to protect the town of Udgaard."
extra {"village road", "road"}
"The road is constructed of hard-packed dirt."
extra {"udgaard"}
"Udgaard is far safer than the lands which surround it."
extra {"cypress forest", "cypress", "forest"}
"The Cypress Forest stands between Midgaard and Udgaard."
extra {"large trees", "trees", "tree"}
"These trees seem to be very old."
movement SECT_CITY
west to haon_dor/forest_edge descr "Go into the Forest of Haon-dor.";
east to village_rd1 descr "Village Road at Haon-dor.";
up to up_tower2 descr "Up in the Watch Tower.";
ALWAYS_LIGHT
end

up_tower2

title "Up in the Wooden Watchtower"
descr
"This watchtower has a sturdy wooden floor. From the top of it, there is
a good view of all of Udgaard, and it is possible to look over the
surrounding lands. The tower can be exited by way of a ladder leading down."
extra {"wooden watchtower", "watchtower", "tower"}
"This watchtower helps to protect the town of Udgaard."
extra {"sturdy wooden floor", "wooden floor", "floor"}
"The floor could support a great weight."
extra {"village road", "road"}
"The road is constructed of hard-packed dirt."
extra {"udgaard"}
"Udgaard is far safer than the lands which surround it."
extra {"cypress forest", "cypress", "forest"}
"The Cypress Forest stands between Midgaard and Udgaard."
extra {"large trees", "trees", "tree"}
"These trees seem to be very old."
movement SECT_CITY
down to watch_tower2 descr "Wooden Watchtower.";
ALWAYS_LIGHT
end

watch_tower3

title "Underneath the Wooden Watchtower"
descr
"The floor of a wooden watchtower looms over your head. Some farm fields
are to the north, and the Village Road of Udgaard is south. To the east
and west are the fences of farm fields. A ladder leads upwards into the
watchtower."
extra {"farming fields", "fences", "field"}
"These fields help to supply Udgaard with food."
extra {"ladder"}
"It is a simple wooden ladder."
extra {"wooden watchtower", "watchtower", "tower"}
"This watchtower helps to protect the town of Udgaard."
extra {"village road", "road"}
"The road is constructed of hard-packed dirt."
extra {"udgaard"}
"Udgaard is far safer than the lands which surround it."
extra {"cypress forest", "cypress", "forest"}
"The Cypress Forest stands between Midgaard and Udgaard."
extra {"large trees", "trees", "tree"}
"These trees seem to be very old."
movement SECT_CITY
south to village_rd10 descr "End of the Village Road.";
up to up_tower3 descr "Up in the Watch Tower.";
ALWAYS_LIGHT
end

up_tower3

title "Up in the Wooden Watchtower"
descr
"This watchtower has a sturdy wooden floor. From the top of it, there is
a good view of all of Udgaard, and a small farming hamlet is visible over
the fields to the north. The tower can be exited by way of a ladder
leading down."
extra {"farming hamlet", "hamlet"}
"This is a small town which farmers live in."
extra {"fields", "field"}
"Food is grown here."
extra {"wooden watchtower", "watchtower", "tower"}
"This watchtower helps to protect the town of Udgaard."
extra {"sturdy wooden floor", "wooden floor", "floor"}
"The floor could support a great weight."
extra {"village road", "road"}
"The road is constructed of hard-packed dirt."
extra {"udgaard"}
"Udgaard is far safer than the lands which surround it."
extra {"cypress forest", "cypress", "forest"}
"The Cypress Forest stands between Midgaard and Udgaard."
extra {"large trees", "trees", "tree"}
"These trees seem to be very old."
movement SECT_CITY
down to watch_tower3 descr "Wooden Watchtower.";
ALWAYS_LIGHT
end

   ud_storage

title "Storage Office"
descr
"You have entered a room which is filled with all kinds of junk.  Piles
of weapons and armor, bottles, flasks, and scrolls litter the floor.
Small cubby holes with doors line the walls, and boxes and crates are stacked
on large shelves.  You are amazed at the size of this room, it seems
to extend fifty feet to the north.  There is a small sign on the wall."


extra {"junk"}
"There is anything that you can imagine piled about this store."
extra {"piles", "weapons", "armor", "bottles", "flasks", "scrolls"}
"These items have been reclaimed by the storage agency."
extra {"small cubby holes", "cubby holes", "boxes", "crates", "large shelves",
"shelves"}
"These are all used to hold the goods of the storage agencies clients."
extra {"room"}
"This room is absolutely monstrous."
extra {"sign"}
"&l
The Sign Says:

-order container
-store
-withdraw
-storage list
-renew lease
"

flags {UNIT_FL_NO_WEATHER}

movement SECT_INSIDE
south to bank@udgaard;
ALWAYS_LIGHT
end
                               ud_auction

title "Auction Office"
descr
"This room is surmounted by a large wooden box.  Various items
line shelves and the floor, bearing colored tags.  The room is
relatively bare otherwise, being a place where trading, buying,
and selling is done.  The building spans overhead, and heavy
wooden rafters appear to do a good job of supporting the ceiling.
The dark alley is west of here."
extra {"building", "room"}
"This is the auction office of Udgaard."
extra {"wooden box", "box"}
"The auctioneer stands on this box to call bids."
extra {"shelves", "floor", "items"}
"The whole room is filled with items that are being or have been sold."
extra {"colored tags"}
"The colored tags have names and prices written on them.  One reads:
'Papi: Valhalla Mud, 10000000 Platinum, 2 Iron'."
extra {"heavy wooden rafters", "wooden rafters", "rafters", "ceiling"}
"They look to be very sturdy, keeping the large ceiling in place."
flags {UNIT_FL_NO_WEATHER}
movement SECT_INSIDE
west to dark_all3;
ALWAYS_LIGHT
end




                             command_chat
title "Commands's Chat Room"
descr
"You have entered the 'newbie zone'. If you have been brought to this
place then you must be seeking help. Sit still and your guide will
explain all you need to know about life in the world of Valhalla."
movement SECT_INSIDE
up to temple;
ALWAYS_LIGHT
end

                               newbie_chat
names {"newbie chat room"}
title "The Newbie Guide Chat Room"
descr
"You have entered the 'newbie zone'. If you have been brought to this
place then you must be seeking help. Sit still and your guide will
explain all you need to know about life in the world of Valhalla."
movement SECT_INSIDE
up to square;
ALWAYS_LIGHT
end




     square

title "Village Square"
descr
"You are at the small village square of Udgaard. The temple is located
just north of here. The Village road continues both east and west, while
the Guild road is due south."
movement SECT_CITY
east to village_rd3;
west to village_rd2;
south to guild_rd1;
north to temple;
ALWAYS_LIGHT
end

     village_rd1

title "Village Road at Haon-Dor"
descr
"Just west of here is a watchtower which protects Udgaard from the
dangers of the forest.  Farther west from that is the forest of
Haon-Dor where many adventurers travel.  Very conveniently the Chicken's
Rest is next to you just north while the post office is south in case you
would like to send a last farewell letter."
movement SECT_CITY
north to inn;
south to postoffice;
west to watch_tower2;
east to village_rd2;
ALWAYS_LIGHT
end

     village_rd2

title "Village Road"
descr
"The village square is east of here and the Village road continues
west. The food store is to the north and Harold's is to the south."
movement SECT_CITY
north to food_store;
south to ironmonger;
east to square;
west to village_rd1;
ALWAYS_LIGHT
end

     village_rd3

title "Village Road"
descr
"The village square is just west of here. The finest building in Udgaard,
the bank, is north. Safeguarding the bank is the guard headquarters to the
south. The village road continues east."
movement SECT_CITY
north to bank;
south to accuse_room;
west to square;
east to village_rd4;
ALWAYS_LIGHT
end

     guild_rd1

title "Guild Road"
descr
"The road is constructed from white flagstones, each fashioned and laid
by hand. From there you can see the village square to the north while the
road continues to the south. The tranquility path is west of here and the
Swordsman way is to the east."
movement SECT_CITY
north to square;
south to guild_rd2;
west to healers_way1;
east to fighters_way1;
ALWAYS_LIGHT
end
                          guild_rd2

title "Guild Road"
descr
" The road is constructed from handmade and laid flagstones. Although the
flagstones are old they are still in very good repair. A dark alley leads
off to the east of here and elemental alley is to the west. The road
continues to the north and a dump is to the south."
movement SECT_CITY
north to guild_rd1;
west to magic_way1;
east to dark_all1;
south to dump;
ALWAYS_LIGHT
end
                                dump

names {"dump"}
title "Village Dump"
descr
"The village dump is quite a dirty mess, actually you are convinced, that
if you drop any items here, you wont be able to find them again. The Guild
Road is north of here. To the south a large river calmly flows east towards
the cypress forest."
movement SECT_CITY
north to guild_rd2;
south to bridge;
ALWAYS_LIGHT


dilbegin dump();
var
  val : integer;
  i   : integer;

code
{
  :loop:
  wait(SFB_DONE, command("drop"));

  if (activator.outside != self)
    goto loop;

  if (medium.type != UNIT_ST_OBJ)
    goto loop;

if ((medium.value[2]!=1) and
(medium.nameidx=="corpse") and
(medium.zoneidx=="basis"))
goto loop;

  act("$2n vanishes among all the trash.",
      A_SOMEONE, activator, medium, null, TO_ALL);
  if (medium.cost > 0)
  {
     val := medium.cost / 10;
     if (val > SILVER_MULT)
val := SILVER_MULT;
  }

  if (val <= 0)
    goto kill;

  act("You are awarded for outstanding performance.",
      A_SOMEONE, activator, null, null, TO_CHAR);

  act("$1n has been awarded for being a good citizen.",
      A_HIDEINV, activator, null, null, TO_ROOM);

  i := transfermoney(null, activator, val);

  if (activator.exp <= 1000)
  {
     if (val > 5)
val := 5;
     experience(5, activator);
  }

  :kill:
  destroy(medium);
}
dilend

end

                                bridge
title "On the Boat Bridge"
descr
"The river gently flows east towards the cypress forest. The village dump
of Udgaard is just north of here."
movement SECT_CITY
north to dump;
south to river;
ALWAYS_LIGHT
end

                                river
title "On the River"
descr
"You are on the river flowing through the village of Udgaard with a
pretty view of the village dump just north of here beyond the boat bridge."

movement SECT_WATER_SAIL

north to bridge;
east to cypress/river;
dilcopy force_move@function(180, "river@cypress!You drift east through the cypress forest.",0);
end



                                temple

title "Temple of Udgaard"
descr
"You are inside the small and humble village temple in Udgaard. A
simple stone altar, with strange stone carvings, is placed against the
north  wall. A small humble donation room is to the east.  The temple exit is
south to the Village Square."
flags {UNIT_FL_NO_WEATHER, UNIT_FL_INDOORS, UNIT_FL_NO_TELEPORT,
      UNIT_FL_NO_MOB, UNIT_FL_SACRED}
movement SECT_INSIDE
south to square;
east to udonate;
north to heal_room;
ALWAYS_LIGHT
extra {"stone altar", "altar"}
"The stone altar is very simple and engraved in it are a lots of strange
symbols. Perhaps the symbols are worth examining."

extra {"symbols", "stone carvings", "carvings"}
"Some of the symbols clearly represents various Gods while other appear
to be normal text. The symbols you do understand looks like this:&l

     Pray to odin if you are new and helpless."
end

                               heal_room

title "Temple of Udgaard"
descr
"You are in the healing center of a small and humble village temple. The
walls are bare stone with intricate etching in them depicting many great
battles."

flags {UNIT_FL_NO_WEATHER, UNIT_FL_INDOORS, UNIT_FL_NO_TELEPORT,
UNIT_FL_NO_MOB, UNIT_FL_SACRED}
movement SECT_INSIDE
south to temple;
ALWAYS_LIGHT
end
                   udonate
names {"udgaard donations room", "udgaard donation room", "donations room"}
title "The Udgaard Donations Room"
descr
"   You are standing in a room beside the temple of Udgaard.
If you are lucky you might have the good graces to have
something nice drop into your lap, it has been known to happen."
flags {UNIT_FL_NO_MOB, UNIT_FL_INDOORS, UNIT_FL_NO_WEATHER,
UNIT_FL_NO_TELEPORT}

west to temple;

/* Dil to restrict getting all */

dilcopy all_block@udgaard ();
end
                         inn_2
title "Back Room"
descr
"The room smells of stale beer and smoke, with a number of round tables,
this is where the village residents gather to play cards and and have a
cold one during the long nights."

flags {UNIT_FL_NO_WEATHER, UNIT_FL_INDOORS, UNIT_FL_NO_MOB,UNIT_FL_SACRED,
UNIT_FL_NO_TELEPORT}
movement SECT_INSIDE
extra {"round tables","tables","table"}
"Round card tables, stained with beer and cigar butts."
east to inn;
ALWAYS_LIGHT
end


                                  inn

title "The Chicken's Rest"
descr
"The Chicken's Rest is a cozy bar often used by adventurers returning
from the dangerous forest of Haon-Dor just west of here. A small sign has
been hung on the wall. A rickety staircase leads upstairs and a small
door leads into the back room."
flags {UNIT_FL_NO_WEATHER, UNIT_FL_INDOORS, UNIT_FL_NO_MOB, UNIT_FL_SACRED}
movement SECT_INSIDE
south to village_rd1;
west to inn_2;
up to offices/hallway;
ALWAYS_LIGHT
extra {"rickety staircase", "staircase"}
"Well, it's rickety!"
extra {"sign", "small sign", "wall"}
"From whence cometh the name 'The Chicken's Rest' is forgotten in the
mists of time. But it has been said, that a blessing rests in this inn
which make wounds heal faster.&l

   Use `list'           to see available drinks.
       `request ' to ask the price of a drink.
       `buy '    to buy a drink.
       `value '   to get a price for a drink you are selling.
       `sell '   to sell a drink.

                        - Sam the Keeper"
flags {UNIT_FL_NO_TELEPORT}
end

                                postoffice
title "The Post Office"
descr
"You are inside the small tidy post office of Udgaard. If you wish to send
a letter before departing on your next adventure this would be a good time
to do so. There is a sign with instructions mounted on the wall. The
Records office is just west of here."
extra {"sign", "instructions", "wall"}
"Use:&l
     `write letter' to begin writing a letter.
     `mail ' to send a letter to somebody.
     `request' to get your mail.
     `eat ' to erase the letter permanently."
flags {UNIT_FL_NO_WEATHER, UNIT_FL_INDOORS, UNIT_FL_NO_MOB}
movement SECT_INSIDE
north to village_rd1;
west to records;
ALWAYS_LIGHT

dilbegin letter_subst();
var
  u : unitptr;
  p : unitptr;
  s : string;
code
{
  :start:
  unsecure(u);
  unsecure(p);

  wait(SFB_CMD, command("write"));

  if (argument == "")
    goto start;

  p := activator;
  secure(p, start);

  u := findunit(p, argument, FIND_UNIT_INVEN, null);

  if (u == null)
  {
     act("You realize that you have nothing to write on, so you grab a "+
         "piece of paper.", A_ALWAYS, p, null, null, TO_CHAR);
     u := load("letter@basis");
     secure(u,start);
     link(u,p);
     s := getword(argument);
     addstring(u.names, s);
  }
}
dilend

end

                                records
title "The Records Office"
descr
"This neatly kept office is where the Town Records are kept. All of the
citizens of Valhalla have a file here, and they can change the information
which the files contain. There are two strange cabinets, one on each side
of the room. On one is written the word 'Mailing Addresses', and the other
has the words 'Maiden Name' carefully engraved upon it. There is an
important SIGN on the far wall which you really should look at. The Post
Office is east of here."

extra {"files"}
"The files are secret to all but the person whose name appears on the file.
Look at the sign if you need information on how to access your file."

extra {"cabinets", "cabinet"}
"Each Cabinet is almost six feet in height and a good two feet wide. One
contains the files which record Mailing Addresses, and the other has the
Maiden Name lists."

extra {"desk"}
"The desk is quite bare, but looks proper and makes the owner feel very
important."

extra {"sign", "instructions", "wall"}
"&l&c+cPersonal File Information&cw
-------------------------
     `&c+wsee file&cw' to see your current file information.
     
     `&c+wmaiden &cw' to change your Mother's Maiden name to
      something new. This is used to verify your identity should
      you lose your password. You can use any word or name as
      long as you remember it. (e.g. maiden gates)
                         
     `&c+wmail &cw' to change your email address to something
      new (e.g. mail joe@valhalla.com).

&c+cPlayer Email List (&crNot the mud mailing list - Just a list of emails&cw)
-----------------
     `&c+wupdate&cw' will update your entry on the email list (or create
      an entry if you don't already have an entry on the list).

     `&c+wpublic&cw' to allow others to see your email address. This is
      by default set off so only you see your address. Typing public
      again will deny people from seeing your email address. Your current
      email address on this list may not be the same as that of your
      character unless you have used the &c+wupdate&cw command mentioned
      above.

     `&c+wshow &cw' will show you the email address of
      player , if they have entered one and it is publicly
      visible.
   
Only you, the player, and higher level administrators (254+) can see your
maiden name setting, and unless you set your email to public, the same
restriction will reply to your email address."

flags {UNIT_FL_NO_WEATHER, UNIT_FL_INDOORS, UNIT_FL_NO_MOB}
movement SECT_INSIDE
east to postoffice;
ALWAYS_LIGHT

end /* records */

                               food_store

title "Rosanne's Food Store"
descr
"A scent of various foods fills the store. There is a sign placed
on the wall. The village road is south of here."
flags {UNIT_FL_NO_WEATHER, UNIT_FL_INDOORS, UNIT_FL_NO_MOB}
movement SECT_INSIDE
south to village_rd2;
ALWAYS_LIGHT
extra {"sign", "wall"}
"The sign says:&l

   Use `list' to see what is in store.
       `buy ' to buy an item.
       `sell ' to sell an item.
       `request ' to ask the price of an item.
       `value ' to make the shopkeeper evaluate your item."
end

                                ironmonger

title "Harold's Assorted Goods"
descr
"Various items cover the shelves behind the counter. It is clear that
this shop has all the nifty little things you need on your adventures.
A sign has been hung on the wall."
flags {UNIT_FL_NO_WEATHER, UNIT_FL_INDOORS, UNIT_FL_NO_MOB}
movement SECT_INSIDE
north to village_rd2;
ALWAYS_LIGHT
extra {"sign", "wall"}
"The sign says:&l

   Use `list' to see what is in store.
       `buy ' to buy an item.
       `sell ' to sell an item.
       `request ' to ask the price of an item.
       `value ' to make the shopkeeper evaluate your item."
end

                                 bank

title "Mammon's Nest"
descr
"Without doubt this is the finest building in Udgaard, although not large,
it has been made from large granite rocks. A white marble sign hangs on the
wall.  A small passage north leads into a back room and the street is to
the south."
flags {UNIT_FL_NO_WEATHER, UNIT_FL_INDOORS, UNIT_FL_NO_MOB}
movement SECT_INSIDE

north to ud_storage;
south to village_rd3;
ALWAYS_LIGHT
extra {"white marble sign", "marble sign", "sign", "wall"}
"It says :-&l
                        The Bank of Udgaard

                 We stash your cash and hold your
                   gold for a mere 5% interest.

   Use `deposit ' to deposit,
       `withdraw ' to withdraw, and
       `exchange' to change into coins of more wealth.
       `balance' to get a statement of your account."
end

                                 accuse_room

title "Guard's Office"
descr
"You are inside the guards office. Through the window in the northern
wall you see the Bank beyond the village road. There is a sign hanging
on the wall."
flags {UNIT_FL_NO_WEATHER, UNIT_FL_INDOORS, UNIT_FL_NO_MOB,
UNIT_FL_NO_TELEPORT}
movement SECT_INSIDE
north to village_rd3;
south to jail open {EX_OPEN_CLOSE, EX_CLOSED, EX_LOCKED, EX_PICKPROOF}
     key jail_key
     descr "You see the heavy steel door." keyword {"steel door", "door"};
ALWAYS_LIGHT
extra {"sign", "wall"}
"The sign says:&l

   In order to accuse another player of a crime, you must accuse him
   to the captain. Use the command:

      accuse murder   - for a murder accusation.
      accuse stealing - for a stealing accusation."
end


                           jail
names {"jail"}
title "The Jail"
descr
"You are in a dark and humid jail.  The dark stone walls are hard and cold
to the touch.  A heavy steel door, supposed to keep prisoners inside the
jail,
is in the north stone wall."

extra {"wall","walls"}
"The walls are marked with lots of scratches.  Some of them spell sentences
like `INGRES STRIKES AGAIN'."

flags {UNIT_FL_NO_WEATHER, UNIT_FL_INDOORS, UNIT_FL_NO_TELEPORT}
movement SECT_INSIDE

north to accuse_room key jail_key keyword {"steel door", "door"}
    open {EX_OPEN_CLOSE, EX_CLOSED, EX_LOCKED, EX_PICKPROOF} descr
    "You see the heavy steel door.";

ALWAYS_LIGHT
end

                                  armourer

title "Better Clothing"
descr
"This shop is actually a combined armory and smith. The smell of hot
iron fills the room. A sign is hanging on the wall."
flags {UNIT_FL_NO_WEATHER, UNIT_FL_INDOORS, UNIT_FL_NO_MOB}
movement SECT_INSIDE
south to village_rd4;
ALWAYS_LIGHT
extra {"sign", "wall"}
"The sign says:&l

   Use `list' to see what is in store.
       `buy ' to buy an item.
       `sell ' to sell an item.
       `request ' to ask the price of an item.
       `value ' to make the shopkeeper evaluate your item."
end


                                  weaponsmith

title "Sharper Swords"
descr
"This is a neat and tidy small weapon shop. You wonder why there is no
smithy in here but soon realize that Arny must be working with Slade from
across the street. A sign is hanging on the wall."
flags {UNIT_FL_NO_WEATHER, UNIT_FL_INDOORS, UNIT_FL_NO_MOB}
movement SECT_INSIDE
north to village_rd4;
ALWAYS_LIGHT
extra {"sign", "wall"}
"The sign says:&l

   Use `list' to see what is in store.
       `buy ' to buy an item.
       `sell ' to sell an item.
       `request ' to ask the price of an item.
       `value ' to make the shopkeeper evaluate your item."
end

fighters_way1
title "Swordsman Way"
names {"swordsman way"}
descr
"The street here is paved with a reddish colored flagstone, each of them
laid with loving pride by some long-ago mason. A couple of smaller sized
trees stand proud, despite the nicks and cuts countless swords have made
in their trunks over the years. The road continues to the east and west."
movement SECT_CITY
ALWAYS_LIGHT
extra {"street","mason","flagstone","stone"}
"The flagstones are a reddish brown color, hand made and laid with loving
care."
west to guild_rd1;
east to fighters_way2;
end

 fighters_way2
title "Swordsman Way"
names {"swordsman way"}
descr
"The street here is paved with a reddish colored flagstone, each of them
laid with loving pride by some long-ago mason. The sounds of swords
clanging can be heard through out the area. The road continues to the
east and west from here. A small shop sells outdoors equipment north of
here."
extra {"shop"}
"The small shop offers a variety of equipment handy for anyone travelling
out in the wilderness.&n"
extra {"street","mason","flagstone","stone"}
"The flagstones are a reddish brown color, handmade and laid with loving
care.&n"
movement SECT_CITY
ALWAYS_LIGHT
east to fighters_way3;
west to fighters_way1;
north to field_shop;
end

fighters_way3
title "Swordsman Way"
names {"swordsman way"}
descr
"The street here is paved with a reddish colored flagstone, each of them
laid with loving pride by some long-ago mason. The sounds of metal on metal
ring out resoundingly from the fighters guild to the east.  To the south
is an impressive edifice which appears to be the town hall."
east to entrance@fightersguild;
west to fighters_way2;
south to town_hall;
extra {"street","mason","flagstone","stone"}
"The flagstones are a reddish brown color, hand made and laid with loving
care."
movement SECT_CITY
ALWAYS_LIGHT
end

                               town_hall

names {"town hall", "hall"}
title "Udgaard Town Hall"
descr
"The Udgaard Town Hall is a majestic yet subtle building. The craftsmanship
of the woodwork here was undertaken by skilled craftsman, and large
glass windows line the walls.  The building is filled with rows of
wooden benches, and a small stage has been raised at one end of the hall.
A set of stairs lead upwards to the Mayor's home."
extra {"udgaard town hall", "town hall", "hall"}
"The Town Hall of Udgaard is a place for meetings and the dissemination
of important information."
extra {"woodwork"}
"The woodwork is quite exquisite, having been carved by skilled artisans."
extra {"glass windows", "windows"}
"No expense was spared on this building, by the necessity of having a
well lit building that was sheltered from the elements."
extra {"wooden benches", "benches", "rows"}
"It is here that the commoners from the hamlet and the townspeople of
udgaard gather to discuss matters."
extra {"small stage", "stage"}
"The stage bears a large podium, and a number of seats bearing name
plates.  The nameplates read: Whistler, Palio, Saor, Eirinn, Drevar, Jager...
and so on down the wizard list.  The podium has some letters scratched into
it, you think you might be able to read them."
extra {"scratches","letters","podium"}
"The letters read: 'Papi, Gnort, God, Quinn and Mead were here'."
extra {"stairs"}
"The stairs lead upwards to the Mayor's home."
flags {UNIT_FL_NO_WEATHER, UNIT_FL_NOSAVE, UNIT_FL_NO_TELEPORT,
UNIT_FL_NO_BURY, UNIT_FL_SACRED}
movement SECT_INSIDE
north to fighters_way3;
up to mayor_house;
ALWAYS_LIGHT
end
                     mayor_house

title "The Mayor's Home"
descr
"The Mayor's home is a small but quaint room above the Town Hall.
There is a fireplace against one wall, and in addition to the Mayor's
bed are four beds for his guards.  A large desk sits against one wall,
with what looks like an overstuffed chair standing before it. There is a
bookshelf against one wall, and a nice rug covers the floor. A staircase
leads down."
extra {"mayor's home", "home", "room"}
"The Mayor's home looks like a nice place, whether for conducting business or
just stopping in for a chat."
extra {"fireplace"}
"The fireplace glows with a warm flame."
extra {"mayor's bed", "beds", "bed"}
"The beds look to be quite comfortable."
extra {"large desk", "desk"}
"The desk is constructed of mahogany, or some similar fine wood.  Its top
is covered with papers."
extra {"overstuffed chair", "chair"}
"The chair looks to be wonderfully comfortable.  A truly great
place to sit."
extra {"bookshelf"}
"You can make out some of the titles in the bookshelf:  Screetons Book of
Knowledge, Guide to Familiars, A small book about horses, The Maleus
Malefacarum, The history of Sanctuary, Aristol's Book, The book of Creation,
The Book of Remembrance, the Book of Demonic Knowledge, Thorbardins
Events, Practical Demonology, Bases and Acids in Modern Alchemy, and
the list goes on."
extra {"nice rug", "rug"}
"The rug is just a nice throw rug."
extra {"staircase"}
"The stairs lead down to the Town Hall."
flags {UNIT_FL_NO_WEATHER}
movement SECT_INSIDE
down to town_hall;
ALWAYS_LIGHT
end

healers_way1
title "Tranquility Path"
names {"tranquility Path"}
descr
"You are traveling down a quiet dirt path, birds can be heard singing
here during any season and large shade trees provide some natural cover
from the elements. All the noises of the nearby village have been
filtered out and a sense of peace washes over you. The road
continues to the east and west from here."
extra {"path","dirt path","dirt"}
"The path is made from well packed dirt."
extra {"trees","tree"}
"The trees add a welcome tranquillity to the area."
west to healers_way2;
east to guild_rd1;
movement SECT_CITY
ALWAYS_LIGHT
end

 healers_way2
title "Tranquility Path"
names {"tranquility Path"}
descr
"You are traveling down a quiet dirt path, birds can be heard singing
here during any season and large shadowy trees provide some natural cover
from the elements. All the noises of the nearby village have been
filtered out and a sense of peace washes over you. The path is lined with
a soft green grass that looks inviting to sit and rest on in any
season. The path continues to the east and west from here, while to the
north a small shop offers charms and talismans for adventurers."
extra {"shop"}
"The small shop sells all sorts of charms, herbs and holy items, mostly
for people of the faith, but everyone is welcome.&n"
extra {"path","dirt path","dirt"}
"The path is made from well packed dirt."
extra {"trees","tree"}
"The trees add a welcome tranquility to the area."
north to heal_shop
open {EX_OPEN_CLOSE} keyword {"door"};

west to healers_way3;
east to healers_way1;
movement SECT_CITY
ALWAYS_LIGHT
end


 healers_way3
title "Tranquility Path"
names {"tranquility Path"}
descr
"You are traveling down a quiet dirt path, birds can be heard singing
here during any season and large shade trees provide some natural cover
from the elements. All the noises of the nearby village have been
filtered out and a sense of peace washes over you. To the west
you notice a quiet monastery where the healers of the area practice their
art."

extra {"path","dirt path","dirt"}
"The path is made from well packed dirt."
extra {"trees","tree"}
"The trees add a welcome tranquillity to the areas."
east to healers_way2; movement SECT_CITY
west to entrance@clericguild;
movement SECT_CITY
ALWAYS_LIGHT
end

dark_all1
title "A Dark Alley"
names {"alley"}
descr
"You are walking down a dark dreary alley. It is difficult to see much of
anything down here. Even in the middle of the day a gloom seems to hang
over the place as if mother nature knew that those that frequent this
place should be hidden from the sight of the honest people of the surrounding
village. You hear the faint whisper of movement in the darkness but are
unable to locate it origin. "
extra {"gloom","shadows"}
"It is dark and difficult to see. It seems as if one of the shadows
moved...just a little."
west to guild_rd2;
east to dark_all2;
movement SECT_CITY
ALWAYS_LIGHT
end


 dark_all2
title "A dark alley"
names {"alley"}
descr
"You are walking down a dark dreary alley. It is difficult to see much of
anything down here. Even in the middle of the day a gloom seems to hang
over the place as if mother nature knows that those that frequent this
place should be hidden from the sight of the honest people of the surrounding
village. Looking around there seems to be some slight movement off in the
shadows, you get the feeling you had better hang on to your purse. A
dark side alley leads off to the south."
extra {"side alley","sidealley"}
"A dark and narrow side-alley, you think you can spot someone standing in
there...&n"
extra {"gloom","shadows"}
"It is dark and difficult to see. It seems as if one of the shadows
moved...just a little.&n"
west to dark_all1;
east to dark_all3;
south to side_alley;
movement SECT_CITY
ALWAYS_LIGHT
end


dark_all3
title "A Dark Alley"
names {"alley"}
descr

"You are walking down a dark dreary alley. It is difficult to see much of
anything down here. Even in the middle of the day a gloom seems to hang
over the place as if mother nature knows that those that frequent this
place should be hidden from the sight of the honest people of the
surrounding  village. To the south you can just make out an old abandoned
bar, while to the east appears to be an auction house."
extra {"gloom","shadows"}
"It is dark and difficult to see. It seems as if one of the shadows
moved...just a little."
extra {"trees"}
"The trees of the forest add to the gloom of the area."
west to dark_all2;
south to entrance@thievesguild;
east to ud_auction;
movement SECT_CITY
ALWAYS_LIGHT
end

magic_way1
title "Elemental Path"
names {"elemental path"}
descr
"You are walking down a quiet cobblestone path. Small flowers grow along the
edges giving the area a peaceful look. Small shade trees provide
the scholars that frequent this area a place to rest and read, as well as
providing the perfect place for the young conjurers to practice their
fledgling spells, as is evident by the scorch marks on many of the trunks.
You can follow the path to the east or west."
extra {"cobblestone","path","stone"}
"The path is made from plain white handcrafted cobblestones."
extra {"trees"}
"The trees are covered in burn marks, some conjurer has been practising
here."
east to guild_rd2;
west to magic_way2;
movement SECT_CITY
ALWAYS_LIGHT
end


magic_way2
title "Elemental Path"
names {"elemental path"}
descr
"You are walking down a quiet cobblestone path. Small flowers grow along the
edges giving the area a peaceful look. Small shade trees provide
the scholars that frequent this area a place to rest and read. At spots
along the path you notice burn marks on the cobblestones and can only
assume some young conjurer was practicing their fireball spells at sometime
in the past. Upon closer inspection you notice that many of the trees are
damaged by young conjurers as they worked to hone the skills of their
chosen field.&n
A sign saying 'Mr Winky's Tailoring && Crafting' hangs over a door to a
shop to the south."
extra {"sign","door","shop"}
"The sign over the door says 'Mr Winky's Tailoring && Crafting' and
a quick look inside tells you that it does not lie.&n"
extra {"cobblestone","path","stone"}
"The path is made from plain white handcrafted cobblestones."
extra {"trees"}
"The trees are covered in burn marks, some conjurer has been practising
here."
east to magic_way1;
west to magic_way3;
south to mageshop;
movement SECT_CITY
ALWAYS_LIGHT
end

 magic_way3
title "Elemental Path"
names {"elemental path"}
descr
"You are walking down a quiet cobblestone path. Small flowers grow along the
edges giving the area a peaceful look. Small shade trees provide
the scholars that frequent this area a place to rest and read. To the
south you notice a pair of tall towers of a huge stone building complex.
This is the place that the magic users visit to study their art. The path
leads off to the east back toward the village, while to the north a small
door leads into a tobacco shop."
east to magic_way2;
north to tobacco_shop open {EX_OPEN_CLOSE} keyword {"door"};
south to entrance@mageguild;
extra {"tobacco shop","shop","door"}
"The small tobacco shop is frequently visited by the local wizards who
enjoy a good smoke after a hard day of spell-tossing.&n"
extra {"cobblestone","path","stone"}
"The path is made from plain white handcrafted cobblestones."
extra {"trees"}
"The trees are covered in burn marks, some conjurer has been practising
here."
extra {"towers"}
"The towers of the magic guild raise up over the trees"
movement SECT_CITY
ALWAYS_LIGHT
end

/* --------------------- GUILD SHOPS ----------------------- */

/* ----------------- MAGESHOP ------------------------------ */
 mageshop
names {"Mage Shop","tailor shop","shop"}
title "At a small tailor shop"
descr
"This small shop seems filled with random merchandise. Clothes seem the main
feature here, but a few weapons and other random trinkets complete the
collection of the absolute must for the well-equipped beginner student of
the College of Arcane Arts. The door to the north leads back to the
Elemental Path of Udgaard.&n
A sign hanging over the counter tries to explain a few things."
extra {"sign over the counter","sign"}
"&lThe sign says:

'list'  - lists the merchandise.
'buy ' - lets you acquire an item.
'sell ' - lets you sell an item.

 Warning: As this shop specializes in mage items, some of the items
 may be worthless to non-students of the College of Arcane Arts.

&f"
movement SECT_CITY
north to magic_way2 descr "The Elemental Path of Udgaard opens before
you.&n";
ALWAYS_LIGHT
end

/* ----------------- THIEVES BACKALLEY --------------------- */
 side_alley
names {"dark alley","alley"}
title "A dark side-alley"
descr
"This narrow side-alley continues a short distance to the south before
terminating at a high wall of some less-than-reputable house. A door
leads into the house east of here, but it seems barred and locked. A few
old barrels lie in the mud and the stench of old urine and rotting
vegetables is everywhere. To the north you can see a larger street."
extra {"old barrels","barrels","barrel","vegetables"}
"One of the barrels is smashed, rotting heads of cabbage lying in the
smelly mud. The other one is half-filled with stinky rain-water.&n"
extra {"high wall","wall","house"}
"The tall wall to the house provides no hand holds and you think you can
see something glimmer on the top of it. A closer look confirms your
suspicion - someone has topped this one with broken glass, making it a
thief's nightmare.&n"
extra {"barred door","east door","door"}
"The door is barred shut. Perhaps if you brought a ram...&n"
movement SECT_CITY
north to dark_all2 descr "The less reputable part of Udgaard is visible to
the north.&n";
end

/* ----------------------------- HEAL SHOP ------------------ */

 heal_shop
names {"The Herbalist and Talismongers","store","supplies"}
title "The Herbalist && Talismonger store"
descr
"A weak tinkle of small bells over the door announces your arrival in the
small store. Windows of coloured glass let in the light and the
air smells faintly of herbs, incense and other various healer
ingredients. The shop is filled with trinkets of all sorts and a sign
catches your attention. A door leads back to the street south of here."
extra {"bells over the door","bells","bell"}
"Tiny brass bells hang over the door, tinkling musically.&n"
extra {"coloured windows","glass","windows","light"}
"The many-coloured glass makes you think of cathedral windows. Perhaps
owner of this shop got his glass cheap from the church. Or perhaps he was
out with a rock himself, collecting whatever fell down.&n"
extra {"trinkets","herbs","incense","ingredients"}
"A lot of talismans, herbs, vials, holy charms and whatever the
well-supplied superstitious needs to get him through the day.&n"
extra {"sign"}
"&l
________________________________________________________
[                                                        ]
[   &c+c'list'&cw         - to view items currently in stock    ]
[   &c+c'buy '&cw   - to buy an item from the talismonger ]
[   &c+c'sell '&cw  - to sell an item from your inventory ]
[                                                        ]
[   &c+c'ask talismonger '&cw will give you a description ]
[   of the item in question; only items sold in this     ]
[   store can be examined in this way.                   ]
[________________________________________________________]

&f&n"
south to healers_way2 descr "A door leads back to the street.&n"
open {EX_OPEN_CLOSE} keyword {"door"};
end

/* --------------------- OUTDOORS SHOP ----------------- */

               field_shop
names {"field equipment store","store"}
title "Field Equipment Store"
descr
"This small store is filled with all sorts of equipment, useful in the
outdoors. Perhaps you can browse the many items here and find something
you might like. A small door lead out to the south. A small sign hangs
over the counter."
extra {"small sign","sign"}
"&l
________________________________________________________
[                                                        ]
[   &c+c'list'&cw         - to view items currently in stock    ]
[   &c+c'buy '&cw   - to buy an item from the shopkeeper  ]
[   &c+c'sell '&cw  - to sell an item from your inventory ]
[                                                        ]
[   &c+c'ask shopkeeper '&cw will give you a description  ]
[   of the item in question; only items sold in this     ]
[   store can be examined in this way.                   ]
[________________________________________________________]

&f&n"
movement SECT_INSIDE
romflags {UNIT_FL_INDOORS,UNIT_FL_NO_WEATHER}
south to fighters_way2 descr "You can see the street outside.&n";
end

/* -------------------- TOBACCO SHOP ------------------- */

 tobacco_shop
names {"tobacco shop","shop"}
title "At 'Ye Olde Tobacco Shoppe'"
descr
"This shop is very small. The aroma of tobacco permeates the air. The
shelves are filled with jars and boxes of tobacco, cigars, pipes and
other articles for the well-supplied smoker. A small sign stands on a
small counter. The only door out of here leads south to the Elemental
Path of Udgaard."
extra {"shelves","jars","boxes","tobacco","cigars","pipes","articles"}
"Those shelves keep all your heart would desire if you are a smoker or
plan to get off to a good start.&n"
extra {"small sign","sign"}
"&l
________________________________________________________
[                                                        ]
[   &c+c'list'&cw         - to view items currently in stock    ]
[   &c+c'buy '&cw   - to buy an item from the seller      ]
[   &c+c'sell '&cw  - to sell an item from your inventory ]
[                                                        ]
[   &c+c'ask seller '&cw will give you a description      ]
[   of the item in question; only items sold in this     ]
[   store can be examined in this way.                   ]
[________________________________________________________]

&f&n"
south to magic_way3 descr "A small door leads back to the Elemental Path of
Udgaard.&n" keyword {"door"} open {EX_OPEN_CLOSE};
end

%objects
                            kurt

names {"Kurt"}
title "Kurt the Master of Records"
descr "Kurt the Master of Records is sitting behind his desk here."

extra {}
"He looks like an ordinary clerk, but there's a twinkle in his eye that
says he's not what he appears to be. In fact he looks like he's not really
alive at all. You get the impression he wants you to look that the sign
on the wall here."

CONTAINER_DEF(1)

weight 5

end


                            axe0

names {"hand axe","axe"}
title "an axe"
descr "A short axe with a large head is here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
/* Not pure Iron / Craftsman-ship = -5% */
WEAPON_DEF(WPN_HAND_AXE, -5, 0)
weight 6
cost  4   SILVER_PIECE
end

  ud_cont
names {"storage container", "udcontainer"}
title "a storage container"
descr "A storage container should not be on the ground."
type ITEM_OTHER
weight 0
CONTAINER_DEF(2000)
end


                              fighter_book

names {"Fighters Handbook", "fighter's handbook", "handbook", "book"}
title "the Fighter's Handbook"
descr "A small Fighter's Handbook has carelessly been left here."
manipulate {MANIPULATE_TAKE}
type ITEM_NOTE
weight 1

dilcopy eager_read@udgaard();

extra {}
"&l                &c+yThe Fighter's Handbook to Valhalla&cw


                Chapter 1 ... Introduction
                Chapter 2 ... Combat
                Chapter 3 ... How to get around
                Chapter 4 ... The Automated Tour
                Chapter 5 ... Hint && Tips
                Chapter 6 ... Help Topics

&fHere is an example of how to read chapter one:&l

  > read chapter 1
"

extra {"chapter 1", "introduction", "chapter one"}

"&l                        INTRODUCTION

&fThis handbook describes how to get started playing Valhalla as an
Udgaard Fighter. Read it carefully and you can get started in only
a few minutes.&n&n

You have just received a lot of equipment and a dictionary which
has been prepared especially for you. To see the equipment, type:&l

  > inventory (or the shorthand version: i)
  > equipment (or the shorthand version: eq)

To see what aliases have been defined in your dictionary, write:

  > alias (or the shorthand version: al)

Now read chapter 2."

extra {"chapter 2", "chapter two"}
"&l                           COMBAT

&fYou must always be sure that your opponent is not out of your
league, you can do this by using the consider command, example:&l

 > consider rabbit

&fThis will approximately tell you how dangerous your opponent is.
Right now you can try your strength against rabbits, skunks and badgers,
and perhaps even risk the more dangerous fox, deer and boar.&n&n

Aliases have been defined in your dictionary, they are a shorthand method
for writing long commands, so when you spot one of the above opponents,
you can quickly attack it, example:&l

 > kr  (to execute the kill rabbit alias)

&fNow read chapter 3 about finding your opponents."


extra {"chapter 3", "chapter three"}
"&l                         HOW TO GET AROUND

&fYou are just about ready, all you need is to find your way around this
place. Your life begins in the small village of Udgaard, located between
the ancient forest of Haon Dor and the younger Cypress Forest.
While in Udgaard, you can get a map at any time by typing:&l

  > help

&fThe map shows you how to get to the Haon-Dor Forest as well as the
Cypress Forest. From the village square simply go east three times to
get to the Cypress forest, or west three times to get to the Haon Dor
forest. Both locations are ideal for beginners such as yourself.&n&n

Once in either forest, find a rabbit, a skunk, a badger or a fox
and use the shorthand aliases (kr to kill a rabbit, kf to kill a fox,
kb to kill a badger, etc.)&n&n

Now read chapter four."

extra {"chapter 4", "chapter four"}
"&l                          THE AUTOMATED TOUR

&fIf you have made it this far, you are well on your way! In Valhalla
there is a teacher which will explain you the basics of the game. He
can be quite boring, but if you feel more comfortable getting the
tour, write:&l

  > say help me

&fwhen standing in the Temple of Udgaard. This will first give you a lesson
in the most fundamental commands. When that lesson is complete you can once
again write 'say help me' and you will get a tour around town, get to see
the shops and the guild you belong to. Now read chapter 5."


extra {"chapter 5", "chapter five"}

"&l                           HINTS && TIPS

&fTry the following commands:&l

 > score
 > status
 > status weapons
 > status spells
 > status skills

&fThere is no need for you to visit your guild until you have earned
a level. All your skills and abilities are set from the beginning.
You can earn experience faster by being in a group with other players.&n&n

Note that when you are in wimpy mode you only gain HALF xp but you
significantly reduce the risk of dying. See 'help wimpy' for further
details.&n&n

If you lose your equipment, you can always pray to the statue of Odin
in the Temple of Udgaard. Odin will grant you new equipment for that which
is lost or missing, write this:&l

 > pray odin
"

extra {"chapter 6", "chapter six"}
"&l                            HELP TOPICS

&fThe following are good help topics for beginners:&l

  > help me
  > help status
  > help score
  > help wear
  > help wimpy
  > help alias
  > help abilities
  > help weapon
  > help armour
  > help practice
  > help info
  > help index"
end

                              thief_book

names {"Thiefs Handbook", "thief's handbook", "handbook", "book"}
title "the Thief's Handbook"
descr "A small Thief's Handbook has carelessly been left here."
manipulate {MANIPULATE_TAKE}
type ITEM_NOTE
weight 1

dilcopy eager_read@udgaard();

extra {}
"&l                &c+yThe Thief's Handbook to Valhalla&cw


                Chapter 1 ... Introduction
                Chapter 2 ... Combat
                Chapter 3 ... How to get around
                Chapter 4 ... The Automated Tour
                Chapter 5 ... Hint && Tips
                Chapter 6 ... Help Topics

&fHere is an example of how to read chapter one:&l

  > read chapter 1
"

extra {"chapter 1", "introduction", "chapter one"}

"&l                        INTRODUCTION

&fThis handbook describes how to get started playing Valhalla as an
Udgaard Thief. Read it carefully and you can get started in only
a few minutes.&n&n

You have just received a lot of equipment and a dictionary which
has been prepared especially for you. To see the equipment, type:&l

  > inventory (or the shorthand version: i)
  > equipment (or the shorthand version: eq)

To see what aliases have been defined in your dictionary, write:

  > alias (or the shorthand version: al)

Now read chapter 2."

extra {"chapter 2", "chapter two"}
"&l                           COMBAT

&fYou must always be sure that your opponent is not out of your
league, you can do this by using the consider command, example:&l

 > consider rabbit

&fThis will approximately tell you how dangerous your opponent is.
Right now you can try your strength against rabbits, skunks and badgers,
and perhaps even risk the more dangerous fox, deer and boar.&n&n

Aliases have been defined in your dictionary, they are a shorthand method
for writing long commands, so when you spot one of the above opponents,
you can quickly attack it, example:&l

 > kr  (to execute the kill rabbit alias)

&fNow read chapter 3 about finding your opponents."


extra {"chapter 3", "chapter three"}
"&l                         HOW TO GET AROUND

&fYou are just about ready, all you need is to find your way around this
place. Your life begins in the small village of Udgaard, located between
the ancient forest of Haon Dor and the younger Cypress Forest.
While in Udgaard, you can get a map at any time by typing:&l

  > help

&fThe map shows you how to get to the Haon-Dor Forest as well as the
Cypress Forest. From the village square simply go east three times to
get to the Cypress forest, or west three times to get to the Haon Dor
forest. Both locations are ideal for beginners such as yourself.&n&n

Once in either forest, find a rabbit, a skunk, a badger or a fox
and use the shorthand aliases (kr to kill a rabbit, kf to kill a fox,
kb to kill a badger, etc.)&n&n

Now read chapter four."

extra {"chapter 4", "chapter four"}
"&l                          THE AUTOMATED TOUR

&fIf you have made it this far, you are well on your way! In Valhalla
there is a teacher which will explain you the basics of the game. He
can be quite boring, but if you feel more comfortable getting the
tour, write:&l

  > say help me

&fwhen standing in the Temple of Udgaard. This will first give you a lesson
in the most fundamental commands. When that lesson is complete you can once
again write 'say help me' and you will get a tour around town, get to see
the shops and the guild you belong to. Now read chapter 5."


extra {"chapter 5", "chapter five"}

"&l                           HINTS && TIPS

&fTry the following commands:&l

 > score
 > status
 > status weapons
 > status spells
 > status skills

&fThere is no need for you to visit your guild until you have earned
a level. All your skills and abilities are set from the beginning.
You can earn experience faster by being in a group with other players.&n&n

Note that when you are in wimpy mode you only gain HALF xp but you
significantly reduce the risk of dying. See 'help wimpy' for further
details.&n&n

If you lose your equipment, you can always pray to the statue of Odin
in the Temple of Udgaard. Odin will grant you new equipment for that which
is lost or missing, write this:&l

 > pray odin
"

extra {"chapter 6", "chapter six"}
"&l                            HELP TOPICS

&fThe following are good help topics for beginners:&l

  > help me
  > help status
  > help score
  > help wear
  > help wimpy
  > help alias
  > help abilities
  > help weapon
  > help armour
  > help practice
  > help info
  > help index"
end

                              healer_book

names {"Healers Handbook", "healer's handbook", "handbook", "book"}
title "the Healer's Handbook"
descr "A small Healer's Handbook has carelessly been left here."
manipulate {MANIPULATE_TAKE}
type ITEM_NOTE
weight 1

dilcopy eager_read@udgaard();

extra {}
"&l                &c+yThe Healer's Handbook to Valhalla&cw


                Chapter 1 ... Introduction
                Chapter 2 ... Combat
                Chapter 3 ... How to get around
                Chapter 4 ... The Automated Tour
                Chapter 5 ... Hint && Tips
                Chapter 6 ... Help Topics

&fHere is an example of how to read chapter one:&l

  > read chapter 1
"

extra {"chapter 1", "introduction", "chapter one"}

"&l                        INTRODUCTION

&fThis handbook describes how to get started playing Valhalla as an
Udgaard Healer. Read it carefully and you can get started in only
a few minutes.&n&n

You have just received a lot of equipment and a dictionary which
has been prepared especially for you. To see the equipment, type:&l

  > inventory (or the shorthand version: i)
  > equipment (or the shorthand version: eq)

To see what aliases have been defined in your dictionary, write:

  > alias (or the shorthand version: al)

Now read chapter 2."

extra {"chapter 2", "chapter two"}
"&l                           COMBAT

&fYou must always be sure that your opponent is not out of your
league, you can do this by using the consider command, example:&l

 > consider rabbit

&fThis will approximately tell you how dangerous your opponent is.
Right now you can try your strength against rabbits, skunks and badgers,
and perhaps even risk the more dangerous fox, deer and boar.&n&n

Aliases have been defined in your dictionary, they are a shorthand method
for writing long commands, so when you spot one of the above opponents,
you can quickly attack it, example:&l

 > kr  (to execute the kill rabbit alias)

&fNow read chapter 3 about finding your opponents."


extra {"chapter 3", "chapter three"}
"&l                         HOW TO GET AROUND

&fYou are just about ready, all you need is to find your way around this
place. Your life begins in the small village of Udgaard, located between
the ancient forest of Haon Dor and the younger Cypress Forest.
While in Udgaard, you can get a map at any time by typing:&l

  > help

&fThe map shows you how to get to the Haon-Dor Forest as well as the
Cypress Forest. From the village square simply go east three times to
get to the Cypress forest, or west three times to get to the Haon Dor
forest. Both locations are ideal for beginners such as yourself.&n&n

Once in either forest, find a rabbit, a skunk, a badger or a fox
and use the shorthand aliases (kr to kill a rabbit, kf to kill a fox,
kb to kill a badger, etc.)&n&n

Now read chapter four."

extra {"chapter 4", "chapter four"}
"&l                          THE AUTOMATED TOUR

&fIf you have made it this far, you are well on your way! In Valhalla
there is a teacher which will explain you the basics of the game. He
can be quite boring, but if you feel more comfortable getting the
tour, write:&l

  > say help me

&fwhen standing in the Temple of Udgaard. This will first give you a lesson
in the most fundamental commands. When that lesson is complete you can once
again write 'say help me' and you will get a tour around town, get to see
the shops and the guild you belong to. Now read chapter 5."


extra {"chapter 5", "chapter five"}

"&l                           HINTS && TIPS

&fTry the following commands:&l

 > score
 > status
 > status weapons
 > status spells
 > status skills

&fThere is no need for you to visit your guild until you have earned
a level. All your skills and abilities are set from the beginning.
You can earn experience faster by being in a group with other players.&n&n

Note that when you are in wimpy mode you only gain HALF xp but you
significantly reduce the risk of dying. See 'help wimpy' for further
details.&n&n

If you lose your equipment, you can always pray to the statue of Odin
in the Temple of Udgaard. Odin will grant you new equipment for that which
is lost or missing, write this:&l

 > pray odin
"

extra {"chapter 6", "chapter six"}
"&l                            HELP TOPICS

&fThe following are good help topics for beginners:&l

  > help me
  > help status
  > help score
  > help wear
  > help wimpy
  > help alias
  > help abilities
  > help weapon
  > help armour
  > help practice
  > help info
  > help index"
end

                              conjurer_book

names {"Conjurers Handbook", "conjurer's handbook", "handbook", "book"}
title "the Conjurer's Handbook"
descr "A small Conjurer's Handbook has carelessly been left here."
manipulate {MANIPULATE_TAKE}
type ITEM_NOTE
weight 1

dilcopy eager_read@udgaard();

extra {}
"&l                &c+yThe Conjurer's Handbook to Valhalla&cw


                Chapter 1 ... Introduction
                Chapter 2 ... Combat
                Chapter 3 ... How to get around
                Chapter 4 ... The Automated Tour
                Chapter 5 ... Hint && Tips
                Chapter 6 ... Help Topics

&fHere is an example of how to read chapter one:&l

  > read chapter 1
"

extra {"chapter 1", "introduction", "chapter one"}

"&l                        INTRODUCTION

&fThis handbook describes how to get started playing Valhalla as an
Udgaard Conjurer. Read it carefully and you can get started in only
a few minutes.&n&n

You have just received a lot of equipment and a dictionary which
has been prepared especially for you. To see the equipment, type:&l

  > inventory (or the shorthand version: i)
  > equipment (or the shorthand version: eq)

To see what aliases have been defined in your dictionary, write:

  > alias (or the shorthand version: al)

Now read chapter 2."

extra {"chapter 2", "chapter two"}
"&l                           COMBAT

&fYou must always be sure that your opponent is not out of your
league, you can do this by using the consider command, example:&l

 > consider rabbit

&fThis will approximately tell you how dangerous your opponent is.
Right now you can try your strength against rabbits, skunks and badgers,
and perhaps even risk the more dangerous fox, deer and boar.&n&n

Aliases have been defined in your dictionary, they are a shorthand method
for writing long commands, so when you spot one of the above opponents,
you can quickly attack it, example:&l

 > kr  (to execute the kill rabbit alias)

&fNow read chapter 3 about finding your opponents."


extra {"chapter 3", "chapter three"}
"&l                         HOW TO GET AROUND

&fYou are just about ready, all you need is to find your way around this
place. Your life begins in the small village of Udgaard, located between
the ancient forest of Haon Dor and the younger Cypress Forest.
While in Udgaard, you can get a map at any time by typing:&l

  > help

&fThe map shows you how to get to the Haon-Dor Forest as well as the
Cypress Forest. From the village square simply go east three times to
get to the Cypress forest, or west three times to get to the Haon Dor
forest. Both locations are ideal for beginners such as yourself.&n&n

Once in either forest, find a rabbit, a skunk, a badger or a fox
and use the shorthand aliases (kr to kill a rabbit, kf to kill a fox,
kb to kill a badger, etc.)&n&n

Now read chapter four."

extra {"chapter 4", "chapter four"}
"&l                          THE AUTOMATED TOUR

&fIf you have made it this far, you are well on your way! In Valhalla
there is a teacher which will explain you the basics of the game. He
can be quite boring, but if you feel more comfortable getting the
tour, write:&l

  > say help me

&fwhen standing in the Temple of Udgaard. This will first give you a lesson
in the most fundamental commands. When that lesson is complete you can once
again write 'say help me' and you will get a tour around town, get to see
the shops and the guild you belong to. Now read chapter 5."


extra {"chapter 5", "chapter five"}

"&l                           HINTS && TIPS

&fTry the following commands:&l

 > score
 > status
 > status weapons
 > status spells
 > status skills

&fThere is no need for you to visit your guild until you have earned
a level. All your skills and abilities are set from the beginning.
You can earn experience faster by being in a group with other players.&n&n

Note that when you are in wimpy mode you only gain HALF xp but you
significantly reduce the risk of dying. See 'help wimpy' for further
details.&n&n

If you lose your equipment, you can always pray to the statue of Odin
in the Temple of Udgaard. Odin will grant you new equipment for that which
is lost or missing, write this:&l

 > pray odin
"

extra {"chapter 6", "chapter six"}
"&l                            HELP TOPICS

&fThe following are good help topics for beginners:&l

  > help me
  > help status
  > help score
  > help wear
  > help wimpy
  > help alias
  > help abilities
  > help weapon
  > help armour
  > help practice
  > help info
  > help index"
end


                           wedding_ring

names {"mithril ring", "wedding ring", "ring"}
title "a wedding ring of pure mithril"
descr "A wedding ring of pure mithril has carelessly been dropped here."
type ITEM_TREASURE
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_FINGER, MANIPULATE_HOLD}
weight 0
bright 1
extra {}
"
&l
                         &cw
                         &cw
                          &cw      &c+r####     &cw
                 &cw              &c+r###&cw#&c+r##  &cw
                              &c+r#####&cw#&c+r##
                 &cw#####&c+y########&c+b#&c+r######&c+b#&c+y########
             &cw####&c+y############&c+b  #&c+r####&c+b#  &c+y############
           &cw##&c+y#########          &c+b              &c+y#########
         &cw##&c+y######                            &cw      &c+y######
        &cw#&c+y#####                                         &c+y####
        &c+y###                                            &cw #&c+y###
        &c+y###                                             &cw#&c+y###
        &c+y###                                            &cw##&c+y###
         &c+y####                                       &cw###&c+y####
           &c+y######                              &cw#####&c+y#####
             &c+y#########                  &cw#######&c+y########
                 &c+y############          &cw#&c+y############
                      &c+y#########################
                             &c+y###########&cw

&fThis wedding ring is of supreme craftsmanship. It is made from pure
mithril and a small diamond is set in the middle of the ring. You notice
an inscription on the inner side of the ring."
extra {"inscription"}
"`Forever yours'"
end
/* --------------------- Items for the mayor and crew -------------- */


algol
names {"algol", "medallion", "eye", "medusa"}
title "&c+rAlgol&cw, the Eye of Medusa"
descr "A medallion with a fiery gemstone lies here."
extra {}
"This medallion was forged from the heart of a fallen star by the ancient
Mystics of Midgaard. It has immense magical power, and can only be used
by a select few. There is a fiery red gemstone set within a mantle of
the purest platinum, to be worn around the waist."
extra {"$identify"}
"True conjurers rejoice! Algol feeds off of the magical abilities of your
enemies. Depending on your Magic, Algol will attempt to transfer the
mana it eats from your opponents to you."
extra {"$wear_s"}
"You place $2n neatly around your waist."
extra {"$wear_o"}
"$1n slips $1s $2n around $1s waist and prepares for the inevitable."
extra {"$rem_s"}
"You take $2n off and stow it securely away for another day."
extra {"$rem_o"}
"$1n stops using $2n and puts it away."
manipulate {MANIPULATE_TAKE,MANIPULATE_WEAR_WAIST}
type ITEM_OTHER
MATERIAL_METAL("This item is made of pure platinum.")
dilcopy guild_restrict@function ({GUILD_UDG_MAGE},0,25,"");
dilcopy level_restrict@function (40,0,0,"lvl_rest@skaven");
dilcopy abi_restrict@function (ABIL_BRA,50,0,0,"bra_rest@skaven");
dilcopy abi_restrict@function (ABIL_MAG,50,0,25,"mag_rest@skaven");
rent 100 IRON_PIECE

dilbegin mdrain();
var
       storenum        :       integer;        num             :       integer;
       num2            :       integer;
       diff            :       integer;
       mag_skill       :       integer;
code
{
  :init:
  heartbeat := PULSE_SEC*9;

  :start:
  wait(SFB_COM, ((self.outside.fighting) and
      (self.equip == WEAR_WAIST)));

  if ((self.outside.guild $= GUILD_UDG_MAGE) or
      (self.outside.type == UNIT_ST_NPC))
  {
     num2 := rnd(1, 5);
     storenum := self.outside.fighting.mana / (2 * num2);      mag_skill := self.outside.abilities[ABIL_MAG];
     num2 := rnd(1,110);
     if (mag_skill > num2)
     {
        self.outside.fighting.mana := self.outside.fighting.mana - storenum;         num := rnd(10,130);
        if (mag_skill > num)
        {
act("Your $2n sends a surge of energy into your body!"
,A_ALWAYS, self.outside, self, self.outside.fighting,TO_CHAR);
act("$3n pales visibly as $3s mana is drained away!"
,A_ALWAYS, self.outside, self, self.outside.fighting,TO_CHAR);
act("$1n's $2n glows, energy crackles along $1s body!"
,A_ALWAYS, self.outside, self, self.outside.fighting,TO_REST);
act("$3n pales visibly as $3s mana is drained away!"
,A_ALWAYS, self.outside, self, self.outside.fighting,TO_NOTVICT);
act("You can feel your magic essence being siphoned!"
,A_ALWAYS, self.outside, self, self.outside.fighting,TO_VICT);

           diff := self.outside.max_mana - self.outside.mana;
           if (storenum < diff)               self.outside.mana := self.outside.mana + storenum;            else
              self.outside.mana := self.outside.mana + diff;
           position_update(self.outside);
        }
        else
         {
       act("Your $2n glows as it drains mana from $3n!"
,A_ALWAYS, self.outside, self, self.outside.fighting,TO_CHAR);
       act("$1n's $2n glows as it drains mana from $3n!"
,A_ALWAYS, self.outside, self, self.outside.fighting,TO_NOTVICT);
       act("$1n's $2n glows as it drains your mana!"
,A_ALWAYS, self.outside, self, self.outside.fighting,TO_VICT);
             pause;
            goto start;
        }
     }
else
{
act("Your $2n glows slightly as it attempts to battle $3n's will!"
,A_ALWAYS, self.outside, self, self.outside.fighting,TO_CHAR);
act("$1n's $2n glows slightly in an attempt to battle $3n will!"
,A_ALWAYS, self.outside, self, self.outside.fighting,TO_NOTVICT);
act("You feel $1n's $2n intruding on your will, you push the assault back!"
,A_ALWAYS, self.outside, self, self.outside.fighting,TO_VICT);
         pause;
        goto start;
}
     pause;
     goto start;
}
goto start;
}
dilend

end


                               mayor_plate
names {"phoenix plate", "plate"}
title "the Phoenix Plate"
descr "A glistening plate has been left here."
extra {}
"This exquisite plate was crafted especially for the mayor, and bears
the phoenix emblem of Udgaard.  It shines in light and dark, and appears
to be able to withstand a great many blows."
ARMOUR_PLATE(0,0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_BODY}
weight 15
dilcopy level_restrict@function(40,0,25,"");
cost 1 GOLD_PIECE
end

                               war_plate
names {"tungsten plate", "plate"}
title "a tungsten plate"
descr "A tungsten plate has been left here."
extra {}
"This tungsten plate shines quite brightly, and you must almost
avert your eyes to keep from being blinded.  It appears to be
very strong, yet at the same time pliable."
ARMOUR_PLATE(0,0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_BODY}
weight 12
dilcopy level_restrict@function(40,0,25,"");
cost 1 GOLD_PIECE
end

                               mayor_legs
names {"glistening leggings","leggings"}
title "a pair of glistening leggings"
descr "A pair of glistening leggings have been left here."
extra {}
"These exquisite leggings were crafted especially for the mayor, and
they bear the phoenix emblem of Udgaard.  The shine through both light
and darkness, serving to protect well their master."
ARMOUR_PLATE(0,0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_LEGS}
weight 10
dilcopy level_restrict@function(40,0,25,"");
cost 1 GOLD_PIECE
end

                              war_legs
names {"tungsten leggings","leggings"}
title "a pair of tungsten leggings"
descr "A pair of tungsten leggings have been left here."
extra {}
"These tungsten leggings shine quite brightly, and you must almost
avert your eyes to keep from being blinded.  They appear to be
very strong, yet at the same time pliable."
ARMOUR_PLATE(0,0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_LEGS}
weight 7
dilcopy level_restrict@function(40,0,25,"");
cost 1 GOLD_PIECE
end

                               mayor_arms
names {"glistening sleeves","sleeves"}
title "a pair of glistening sleeves"
descr "A pair of glistening sleeves have been left here."
extra {}
"These exquisite sleeves were crafted especially for the mayor, and
they bear the phoenix emblem of Udgaard.  The shine through both light
and darkness, serving to protect well their master."
ARMOUR_PLATE(0,0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_ARMS}
weight 10
dilcopy level_restrict@function(40,0,25,"");
cost 1 GOLD_PIECE
end
                              war_sle
names {"tungsten sleeves","sleeves"}
title "a pair of tungsten sleeves"
descr "A pair of tungsten sleeves have been left here."
extra {}
"These tungsten sleeves shine quite brightly, and you must almost
avert your eyes to keep from being blinded.  They appear to be
very strong, yet at the same time pliable."
ARMOUR_PLATE(0,0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_ARMS}
weight 7
dilcopy level_restrict@function(40,0,25,"");
cost 1 GOLD_PIECE
end


                               mayor_hands
names {"spiked gauntlets","gauntlets"}
title "a pair of spiked gauntlets"
descr "A pair of spiked gauntlets have been left here."
extra {}
"These dangerous gauntlets were crafted especially for the mayor, and
they bear the phoenix emblem of Udgaard.  These vicious looking gauntlets
bear curving spikes, used to punch holes in ones enemy.  You notice some
bloodstains on them."
ARMOUR_PLATE(0,0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_HANDS}
weight 5
dilcopy level_restrict@function(40,0,25,"");
cost 1 GOLD_PIECE
end

                               mayor_head
names {"horned helm", "garuck", "helm"}
title "the Horned Helm Garuck"
descr "A large horned helm has been left here."
extra {}
"The horned helm Garuk was passed down through generations of dwarves
in a line as yet ending with Thargarad.  The horns come from an
unknown creature, and the rise a full foot from the helm.  The scrollwork
on this helm is intricately and fabulously etched, making you
wonder at its antiquity."
ARMOUR_PLATE(0,0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_HEAD}
weight 10
dilcopy level_restrict@function(40,0,25,"");
cost 1 GOLD_PIECE
end
                              war_helm
names {"tungsten helmet","helmet"}
title "a tungsten helmet"
descr "A tungsten helmet has been left here."
extra {}
"This tungsten helmet shines quite brightly, and you must almost
avert your eyes to keep from being blinded.  It appears to be
very strong, yet at the same time pliable."
ARMOUR_PLATE(0,0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_HEAD}
weight 7
dilcopy level_restrict@function(40,0,25,"");
cost 1 GOLD_PIECE
end

                               mayor_boots
names {"amber boots","boots"}
title "a pair of amber boots"
descr "A pair of amber boots have been left here."
extra {}
"The amber boots were crafted by the Danalek specifically for Thargarad.
They shine with a deep golden color, almost like that of pure honey.
They look to be quite rare."

ARMOUR_PLATE(0,0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_FEET}
weight 5
dilcopy level_restrict@function(40,0,25,"");
cost 1 GOLD_PIECE
end

                              war_boots
names {"tungsten boots","boots"}
title "a pair of tungsten boots"
descr "A pair of tungsten boots have been left here."
extra {}
"These tungsten boots shine quite brightly, and you must almost
avert your eyes to keep from being blinded.  They appear to be
very strong, yet at the same time pliable."
ARMOUR_PLATE(0,0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_FEET}
weight 3
dilcopy level_restrict@function(40,0,25,"");
cost 1 GOLD_PIECE
end

                               mayor_cloak

names {"phoenix mantle", "mantle"}
title "Mantle of the Phoenix"
descr "A mantle bearing the mark of a large phoenix is here."
extra {}
"This mantle bears the mark of one who is in the service of the mayor
of Udgaard.  Embroidered on the back the is seal of Udgaard,
a large phoenix set in front of a glowing sun.  The material of this
mantle is exquisite and it will offer good protection."
ARMOUR_PLATE(0,0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_ABOUT}
weight 8
bright 1
dilcopy level_restrict@function(40,0,25,"");
cost 1 GOLD_PIECE
end
                               healer_tunic

names {"silk tunic", "tunic"}
title "a silk tunic"
descr "A silk tunic lies in a heap on the ground."
extra {}
"While this silken tunic is quite thin, it appears to be imbued with
a magical power that makes it quite strong.  It will offer good protection
while being very soft to the wearer.  Truly a piece of craftsmanship
which can be only of elvish origin."
ARMOUR_PLATE(0,0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_BODY}
weight 2
dilcopy level_restrict@function(40,0,25,"");
cost 1 GOLD_PIECE
end

                               healer_pants

names {"silk pants", "pants"}
title "a pair of silk pants"
descr "A pair of silk pants lie in a heap on the ground."
extra {}
"While these silken pants are quite thin, they appears to be imbued with
a magical power that makes them quite strong.  They will offer good protection
while being very soft to the wearer.  They are truly a piece of craftsmanship
which can be only of elvish origin."
ARMOUR_PLATE(0,0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_LEGS}
weight 3
dilcopy level_restrict@function(40,0,25,"");
cost 1 GOLD_PIECE
end

                               healer_arms

names {"leather armguards", "armguards"}
title "a pair leather armguards"
descr "A pair of leather armguards sit on the ground."
extra {}
"These armguards, while only composed of leather look to offer
good protection.  They are clearly elvish in nature, and are studded
small mithril knobs."
ARMOUR_HRD_LEATHER(0,0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_ARMS}
weight 3
dilcopy level_restrict@function(20,0,25,"");
cost 1 GOLD_PIECE
end

mage_robe
names {"robe of ixtlan", "ixtlan", "robe"}
title "the Robe of Ixtlan"
descr "A crimson robe lies here in a rumpled heap."
extra {}
"The Robe of Ixtlan has been passed though many generations of gnomish
mages.  It appears to be an item of insurmountable power, but you
doubt that your feeble mind can unlock its secrets.  The robe is crimson
and quite a beautiful thing to behold."
ARMOUR_PLATE(0,0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_ARMS}
weight 10
dilcopy level_restrict@function(40,0,25,"");
cost 1 GOLD_PIECE
end


                               mage_ring

names {"lapis-lazuli ring", "ring"}
title "a lapis-lazuli ring"
descr "a lapis-lazuli ring is almost hidden in the dirt on the ground."
extra {}
"The stone in this ring is set in a band of the purest platinum.
The gem itself is a deep blue, with inclusions of pyrite winding through
it.  It looks to be quite valuable, though you doubt you could unlock
its magical secrets."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_FINGER}
weight 1
cost 1 PLATINUM_PIECE
end


               sagit

names {"sagittarius", "staff"}
title "Sagittarius"
descr "A staff lies on the ground."
extra {}
"This simple staff was crafted from a piece of fallen star by the
fabled Mystics of Midgaard.  Its shaft is quite long, and it
looks to be quite sturdy.  The staff seems to hum slightly."

WEAPON_DEF(WPN_QUARTERSTAFF, 8, 8)
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
weight 10
dilcopy level_restrict@function(40,0,25,"");
dilcopy abi_restrict@function (ABIL_STR,30,0,25,"");
cost 128 IRON_PIECE
rent 64 IRON_PIECE
end

polaris
names {"polaris", "war hammer", "hammer"}
title "Polaris"
descr "A war hammer sits on the ground."
extra {}
"This hammer was forged from a piece of a fallen star by the fabled
Mystics of Midgaard.  There is a strong sense of peace which emanates
from it, a feeling which you can not quite place."
extra {"$identify"}
"Polaris will improve your healing skill, while
adding to your brain and divinity.
It will weaken your constitution slightly."
extra {"$improved identify"}
"&l
Heal:            +10%
Divine:          +2
Brain:           +1
Constitution:    -1"
WEAPON_DEF(WPN_WAR_HAMMER, 8, 8)
SPELL_TRANSFER(SPL_CURE_WOUNDS_3, +10)
DIV_TRANSFER(+2)
BRA_TRANSFER(+1)
CON_TRANSFER(-1)
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
weight 14
dilcopy level_restrict@function(40,0,25,"");
dilcopy weap_restrict@function(WPN_WAR_HAMMER,40,0,25,"");
dilcopy abi_restrict@function (ABIL_DIV,40,0,25,"");
rent 214 IRON_PIECE
cost 428 IRON_PIECE
end

                               mayor_axe
names {"orion", "battle axe", "axe"}
title "the Battle axe Orion"
descr "The Battle axe Orion rests on the ground."
extra {}
"Forged from a fallen star by the fabled Mystics of Midgaard,
Orion is truly a fabulous piece of work.  Its double bits gleam
cruelly, and the shaft is deeply inlaid with pure mithril.
Various glowing gems stud the shaft, a true weapon of devastating
power."
extra {"$identify"}
"This massive battle axe will improve your battle axe skill, while
adding to your strength and dexterity.  It will weaken your magical
and cognizant abilities slightly."
extra {"$improved identify"}
"&l
Battle axe: +10%
Strength: +1    Dexterity: +2
Brain:    -1    Magic:     -1"
WEAPON_DEF(WPN_BATTLE_AXE, 9, 9)
WEAPON_TRANSFER(WPN_BATTLE_AXE, +10)
STR_TRANSFER(+1)
DEX_TRANSFER(+2)
BRA_TRANSFER(-1)
MAG_TRANSFER(-1)
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
weight 21
dilcopy level_restrict@function(40,0,25,"");
dilcopy weap_restrict@function(WPN_BATTLE_AXE,70,0,25,"");
dilcopy abi_restrict@function (ABIL_STR,70,0,25,"");
rent 214 IRON_PIECE
cost 428 IRON_PIECE
end

castor
names {"castor", "blade", "short sword", "sword"}
title "Castor"
descr "A short sword lies on the ground shining softly."
extra {}
"This short sword is Castor, one of the celestial twins. It was forged
by the ancient Mystics of Midgaard from a fallen star."
extra {"$identify"}
"Castor like its twin will improve your short sword skill, while
adding to your dexterity.  It will weaken your constitution slightly."
extra {"$improved identify"}
"&l
Short Sword:     +5%
Dexterity:       +2
Constitution:    -1"

WEAPON_DEF(WPN_SHORT_SWORD, 4, 4)
WEAPON_TRANSFER(WPN_SHORT_SWORD, +5)
DEX_TRANSFER(+2)
CON_TRANSFER(-1)
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
weight 4
dilcopy level_restrict@function(40,0,25,"");
dilcopy weap_restrict@function(WPN_SHORT_SWORD,40,0,25,"");
dilcopy abi_restrict@function (ABIL_DEX,50,0,25,"");
rent 102 IRON_PIECE
cost 204 IRON_PIECE
end

pollux
names {"pollux", "blade", "short sword", "sword"}
title "Pollux"
descr "A short sword lies on the ground shining softly."
extra {}
"This short sword is Pollux, one of the celestial twins. It was forged
by the ancient Mystics of Midgaard from a fallen star."
extra {"$identify"}
"Pollux like its twin will improve your short sword skill, while
adding to your dexterity.  It will weaken your constitution slightly."
extra {"$improved identify"}
"&l
Short Sword:     +5%
Dexterity:       +2
Constitution:    -1"
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}

WEAPON_DEF(WPN_SHORT_SWORD, 4, 4)
WEAPON_TRANSFER(WPN_SHORT_SWORD, +5)
DEX_TRANSFER(+2)
CON_TRANSFER(-1)
weight 4
dilcopy level_restrict@function(40,0,25,"");
dilcopy weap_restrict@function(WPN_SHORT_SWORD,40,0,25,"");
dilcopy abi_restrict@function (ABIL_DEX,50,0,25,"");
rent 102 IRON_PIECE
cost 204 IRON_PIECE
end

sirius
names {"sirius", "star blade", "blade", "great sword", "sword"}
title "Sirius"
descr "A blazing bright great sword lies here, scorching the ground."
extra {}
"Sirius the Star blade is a weapon of unrivalled beauty. It is rumored that
it is made of metal forged from a fallen star by the fabled Mystics of
Midgaard."
extra {"$identify"}
"The great sword Sirius will improve your disarm skill, while
adding to your dexterity and strength.
It will weaken your magic ability."
extra {"$improved identify"}
"&l
Disarm:          +10%
Strength:        +2
Dexterity:       +1
Magic:           -2"
weight 22
STR_TRANSFER(+2)
DEX_TRANSFER(+1)
MAG_TRANSFER(-2)
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
WEAPON_DEF(WPN_GREAT_SWORD, 8, 8)
SKILL_TRANSFER(SKI_DISARM, +10)
dilcopy level_restrict@function(40,0,25,"");
dilcopy weap_restrict@function(WPN_GREAT_SWORD,50,0,25,"");
dilcopy abi_restrict@function(ABIL_STR,50,0,25,"");
rent 214 IRON_PIECE
cost 428 IRON_PIECE
end

sicoif
names {"coif of inner sight", "inner sight", "sight", "coif"}
title "coif of inner sight"
descr "A coif is lying here, glowing faintly."
extra {}
"This coif is magical. It allows the wearer to see invisible."
ARMOUR_CHAIN(0, 0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_HEAD}
weight 10
CHAR_FLAG_TRANSFER(CHAR_DETECT_INVISIBLE)
dilcopy level_restrict@function(30,0,25,"");
rent 25 IRON_PIECE
cost 50 IRON_PIECE
end

chshirt
names {"chain shirt", "chain", "shirt"}
title "a chain shirt"
descr "A chain shirt is lying here."
extra {}
"This is a typical chain shirt. It has no overtly significant features,
other than the good upkeep."
ARMOUR_CHAIN(0, 0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_BODY}
weight 15
dilcopy level_restrict@function(30,0,25,"");
cost 5 SILVER_PIECE
end

dgloves
names {"gloves", "pair"}
title "a pair of gloves"
descr "A pair of gloves lie here."
extra {}
"A pair of gloves, used by thieves to stop sweaty hands and the resultant
fingerprints. They're made of soft black leather."
ARMOUR_LEATHER(0, 0)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_HANDS}
weight 1
dilcopy level_restrict@function(20,0,25,"");
cost 5 SILVER_PIECE
end

pleiades
names {"pleiades", "crown", "diadem"}
title "Pleiades"
descr "A crown with seven brilliant gems lies here sparkling."
extra {}
"This crown is inlaid with seven bright gemstones:&l

&c+wDiamond&cw for Purity.
&c+bSapphire&cw for Bravery.
&cmAmethyst&cw for Honour.
&cgEmerald&cw for Strength.
&c+rRuby&cw for Valour.
&c+yAmber&cw for Perseverance.
&c+nObsidian&cw for Character.
&f
They are set within a diadem of the purest platinum. The wearer must be
a special healer."
extra {"$identify"}
"This crown will allow the wearer to be more proficient in harm and heal,
as well as giving ultimate powers of sight."
extra {"$improved identify"}
"This crown will give +5 to harm and heal spell skills as well as allowing
the wearer to detect invisible, magic, life, poison, alignment, curse and
undead."
CHAR_FLAG_TRANSFER(CHAR_DETECT_INVISIBLE)
CHAR_FLAG_TRANSFER(CHAR_DETECT_MAGIC)
CHAR_FLAG_TRANSFER(CHAR_DETECT_LIFE)
CHAR_FLAG_TRANSFER(CHAR_DETECT_POISON)
CHAR_FLAG_TRANSFER(CHAR_DETECT_ALIGN)
CHAR_FLAG_TRANSFER(CHAR_DETECT_CURSE)
CHAR_FLAG_TRANSFER(CHAR_DETECT_UNDEAD)
SPELL_TRANSFER(SPL_CAUSE_WOUNDS_3, +5)
SPELL_TRANSFER(SPL_CURE_WOUNDS_3, +5)
weight 6
ARMOUR_PLATE(3, 3)
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_HEAD}
cost 2000 IRON_PIECE
rent 262 IRON_PIECE
end



/* end mayors entourage eq */

                               shirt
names {"shirt"}
title "a shirt"
descr "A shirt has been left here."
extra {}
"On the shirt it has been written: 'Any resemblance with real persons
is purely coincidental'."
ARMOUR_CLOTHES(-20,0)
end

/* Standard items given away to beginners for free. */

                               wd_sleeves

names {"wool sleeves","sleeves"}
title "a pair of wool sleeves"
descr "A pair of wool sleeves are lying on the ground."
extra {}
"The sleeves are made from thick wool and will offer slight protection
to your arms."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_ARMS}
ARMOUR_CLOTHES(0, 0)
weight 1
end
                               wd_plate

names {"wool vest", "vest"}
title "a wool vest"
descr "A wool vest is lying on the ground."
extra {}
"The vest is made of thick wool and will offer slight protection."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_BODY}
ARMOUR_CLOTHES(0, 0)
weight 2
end

                               wd_pants

names {"wool pants", "pants"}
title "a pair of wool pants"
descr "A pair of wool pants are lying on the ground."
extra {}
"The pants are made from thick wool and will offer slight protection."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_LEGS}
ARMOUR_CLOTHES(0, 0)
weight 2
end

                          sword_1

names {"long sword", "sword"}
title "a long sword"
descr "A long sword has carelessly been left here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
/* Iron - Non Pure, Craftsman ship -5 */
WEAPON_DEF(WPN_LONG_SWORD, -5, 0)
weight 20
cost 12 SILVER_PIECE
end


                                tuborg

names {"green tuborg", "tuborg", "beer bottle", "bottle", "beer"}
title "&cga bottle of Green Tuborg&cw"
descr "A beer bottle of Green Tuborg has carelessly been left here."
extra {}
"Your mouth begins to water as you look at the cool and refreshing
bottle of Green Tuborg. You feel an urge to drink it as soon as
possible and at the same time you are convinced that it will bring
you new energy."
manipulate {MANIPULATE_TAKE}
LIQ_BEER( 1, 1, 1, 0)
cost 7 IRON_PIECE

dilbegin cure_sleep();
code
{
  :loop1:
  wait(SFB_CMD, command("drink"));

  if (findunit(activator, argument, FIND_UNIT_INVEN | FIND_UNIT_EQUIP, null)
      != self)
     goto loop1;

  sendto("spl_curesleep 200", activator);
  quit;
}
dilend

dilcopy tuborg@function("NORMAL");
end


                          comp_board

names {"bulletin board", "board"}
title "the board"
descr "A large board with special people is mounted on a wall here."
type ITEM_OTHER
special SFUN_COMPETITION_BOARD
end


                          reward_board

names {"bulletin board", "board"}
title "the board"
descr "A large board with wanted persons is mounted on a wall here."
type ITEM_OTHER
special SFUN_REWARD_BOARD
end

                          bull_board

names {"bulletin board", "board"}
title "a bulletin board"
descr "A large bulletin board is mounted on a wall here."
type ITEM_OTHER
dilcopy board@boards("citizen","","rem_res@boards","",100);
end

                              odin_statue

/* Statue which contains the things to players (pray function) */
names {"statue of odin", "odin", "statue"}
title "the statue"
descr "A statue of Odin is standing behind the altar."
extra {}
"It depicts Odin sitting on his throne, two large wolves by his feet and two
ravens sitting on the back of the throne.  He has long grey hair and beard,
and looks grave and thoughtful."
type ITEM_OTHER
weight 8000

dilbegin worship_st();
var
pc :unitptr;
code
{
  heartbeat:=PULSE_SEC*5;

  :start:
  wait (SFB_DONE, command("worship") and
                  (activator.type==UNIT_ST_PC) and (self==target));
  pc := activator;
  secure(pc, start);

  if (not(dilfind ("channel@function",pc)))
    dilcopy ("channel@function",pc);

  if ((dilfind ("still_newbie@udgaard",pc)) or (pc.level >5))
  {
     unsecure(pc);
     goto start;
  }
  else
    dilcopy ("still_newbie@udgaard",pc);

  goto start;
}
dilend


dilbegin odinstatue();

external
  statue_load(pc : unitptr, s : string, n : string, i : integer);


var
  pc         : unitptr;

code
{
  :start:
  wait(SFB_CMD, command("pray"));

  if (activator.type != UNIT_ST_PC)
    goto start;

  if (findunit(activator, argument, FIND_UNIT_SURRO, null) != self)
    goto start;

  block;

  act("$1n kneels before $3n and prays to Odin.",
      A_HIDEINV, activator, null, self, TO_ROOM);

  act("You kneel before $3n and pray to Odin.",
      A_ALWAYS, activator, null, self, TO_CHAR);

  if (activator.level != START_LEVEL)
  {
     act("Nothing happens.", A_ALWAYS, activator, null, null, TO_CHAR);
     goto start;
  }

  pc := activator;
  secure(pc, start);

  act("The eyes of $3n glows in a bright yellow light.",
      A_ALWAYS, pc, null, self, TO_ALL);

  act("A voice echoes inside your head 'The Gods like you, receive"+
      " this gift'",A_ALWAYS, pc, null, self, TO_CHAR);

  if ( not (dilfind("channel@function",pc)))
    dilcopy ("channel@function",pc);

  if (not(dilfind ("still_newbie@udgaard",pc)))
    dilcopy ("still_newbie@udgaard",pc);

  statue_load(pc, "tuborg@udgaard",        "tuborg",     1);
  statue_load(pc, "midgaard/torch",        "torch",      1);
  statue_load(pc, "midgaard/bread",        "bread",      1);
  statue_load(pc, "swood_shield@midgaard", "shield",     1);
  statue_load(pc, "basis/dictionary",      "dictionary", 0);

  if (pc.guild == GUILD_UDG_MAGE)
  {
       statue_load(pc, "udgaard/conjurer_book",  "book",    1);
statue_load(pc, "udgaard/newbie_robes",   "robes",   1);
statue_load(pc, "udgaard/newbie_bracers", "bracers", 1);
statue_load(pc, "udgaard/newbie_boots",   "boots",   1);
statue_load(pc, "udgaard/conjure_item",   "ring",    1);
     statue_load(pc, "midgaard/dag0",          "dagger",  1);
  }
  else if (pc.guild == GUILD_UDG_CLERIC)
  {
       statue_load(pc, "udgaard/healer_book",  "handbook", 1);
statue_load(pc, "udgaard/newbie_chain", "jerkin",   1);
statue_load(pc, "udgaard/newbie_boots", "boots",    1);
statue_load(pc, "udgaard/newbie_pants", "skirt",    1);
statue_load(pc, "udgaard/healer_item",  "amulet",   1);
statue_load(pc, "midgaard/mace",        "mace",     1);
  }
  else if (pc.guild == GUILD_UDG_FIGHTER)
  {
       statue_load(pc, "udgaard/fighter_book",    "handbook",    1);
statue_load(pc, "udgaard/newbie_plate",    "breastplate", 1);
statue_load(pc, "udgaard/newbie_psleeves", "sleeves",     1);
statue_load(pc, "udgaard/newbie_boots",    "boots",       1);
statue_load(pc, "udgaard/plegg",           "leggings",    1);
statue_load(pc, "udgaard/fighter_item",    "earring",     1);
statue_load(pc, "udgaard/axe0",            "axe",         1);
  }
  else if (pc.guild == GUILD_UDG_THIEF)
  {
       statue_load(pc, "udgaard/thief_book",    "handbook",  1);
statue_load(pc, "udgaard/newbie_jacket", "jerkin",    1);
statue_load(pc, "udgaard/newbie_lpants", "pants",     1);
statue_load(pc, "udgaard/newbie_boots",  "boots",     1);
statue_load(pc, "udgaard/newbie_cloak",  "cloak",     1);
statue_load(pc, "udgaard/thief_item",    "broach",    1);
statue_load(pc, "midgaard/sword0",       "sword",     1);
  }
  unsecure(pc);
  goto start;
}
dilend

end
/*newer newbie equipment*/

       rapier
names {"rapier","sword"}
title "a rapier"
descr "A slender rapier lies here."
extra {}
"A slender, thin blade, very light and very good at piercing if not much
else."
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
WEAPON_DEF(WPN_RAPIER,0,0)
weight 1
cost 12 IRON_PIECE
end

       hand_axe
names {"hand axe","axe"}
title "a hand axe"
descr "A hand axe lies here."
extra {}
"A broad-bladed hand axe."
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
WEAPON_DEF(WPN_HAND_AXE,0,0)
weight 6
cost 5 IRON_PIECE
end

       cudgel
names {"cudgel","club"}
title "a cudgel"
descr "A wooden cudgel lies here."
extra {}
"A short, wooden cudgel. A perfect ambush weapon for knockouts."
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
WEAPON_DEF(WPN_CLUB,0,0)
weight 3
cost 3 IRON_PIECE
end

       fistiron
names {"fist-iron","iron","fist"}
title "a fist-iron"
descr "A fist-iron lies here, gleaming."
extra {}
"A fist-iron to add power to your punches."
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
WEAPON_DEF(WPN_FIST,0,0)
weight 1
cost 6 IRON_PIECE
end

       short_staff
names {"short staff","staff"}
title "a short staff"
descr "A short staff lies here."
extra {}
"A short staff of light wood."
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
WEAPON_DEF(WPN_QUARTERSTAFF, 0,0)
weight 4
cost 3 IRON_PIECE
end

       hand_mace
names {"hand mace","mace"}
title "a hand mace"
descr "A small hand mace lies here."
extra {}
"Perfect weapon for all your self-defence needs."
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
WEAPON_DEF(WPN_MACE, 0,0)
weight 5
cost 1 COPPER_PIECE
end

thief_dagger
names {"pirate's choice dagger","choice dagger","dagger"}
title "the pirate's choice dagger"
descr "A small glowing dagger lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
WEAPON_DEF(WPN_DAGGER, 0,0)
weight 1
extra {}
"The dagger is the choice for new thieves."
WEAPON_SLAYER(RACE_RABBIT)
end
                              mage_staff

names {"Caval's choice staff","choice staff","staff"}
title "Caval's choice staff"
descr "A staff lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
WEAPON_DEF(WPN_QUARTERSTAFF, 0,0)
weight 3
extra {}
"The staff is made from a fine oak wood."
WEAPON_SLAYER(RACE_RABBIT)
end


                               healer_mace

names {"Isabella's  choice mace", "choice mace", "mace"}
title "Isabella's choice mace"
descr "A finely crafted mace lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
WEAPON_DEF(WPN_MACE, 0,0)
weight 4
extra {}
"This mace is Isabella choice for all new healers."
WEAPON_SLAYER(RACE_RABBIT)
end




                               fighter_sword

names {"Lancelot's beginner sword","beginner sword","longsword","fighter
sword","sword"}
title "a Lancelot's beginner sword"
descr "A shining, sharp long sword lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
WEAPON_DEF(WPN_LONG_SWORD, 0,0)
weight 5
extra {}
"This long sword is Sir Lancelot's choice for young fighters."
WEAPON_SLAYER(RACE_RABBIT)
end

 fighter_plate
names {"leather plate","fighters plate","breastplate","plate"}
title "a sturdy leather plate"
descr "A sturdy leather plate has been left here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_BODY}
ARMOUR_LEATHER(0,0)
weight 3
dilcopy guild_restrict@function ({GUILD_UDG_FIGHTER},0,0,"");
extra {}
"This breastplate is made from sturdy leather."
end



                               fighter_bands
names {"fighter arm bands","arm bands","bands"}
title "a pair of sturdy leather arm bands"
descr "A small pair of sturdy leather arm bands lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_ARMS}
ARMOUR_LEATHER(0,0)
weight 1
dilcopy guild_restrict@function ({GUILD_UDG_FIGHTER},0,0,"");
extra {}
"The arm bands stretch around one's upper arm."
end

                               fighter_leg

names {"leather leggings","fighters leggings", "leggings"}
title "a pair of sturdy leather leggings"
descr "A pair of sturdy leather leggings is lying here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_LEGS}
ARMOUR_LEATHER(0,0)
weight 5
dilcopy guild_restrict@function ({GUILD_UDG_FIGHTER},0,0,"");
extra {}
"The leather leggings are simply two strong flaps of leather, hanging
down on each side of the user's legs, protecting them in battle."
end

                               go_boots

names {"leather rawhide","rawhide","boots","pieces","hide"}
title "some pieces of rawhide"
descr "Some piece of rawhide lie here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_FEET}
ARMOUR_LEATHER(0,0)
weight 1
extra {}
"The leather ties around your ankle with a leather thong and protects
your feet as you walk. The animal fur is still inside to provide added
comfort."
end
                               fighter_helmet

names {"leather coif","fighters helmet", "helmet","coif"}
title "a sturdy leather coif"
descr "A sturdy leather coif is lying here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_HEAD}
ARMOUR_LEATHER(0,0)
weight 5
dilcopy guild_restrict@function ({GUILD_UDG_FIGHTER},0,0,"");
extra {}
"The coif is made from sturdy leather and will provide some protection
to your head during battle."
end

              wood_buckler

names {"wooden buckler", "wood","buckler"}
title "a wooden buckler"
descr "A wooden buckler lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_SHIELD}
ARMOUR_HRD_LEATHER(0, 0)
SHIELD_DEF(SHIELD_SMALL,1,3)
weight 5
extra {}
"The buckler is made from wood."
end


                               healers_vest
names {"healer vestments","vestments","red cloth","cloth"}
title "healer vestments"
descr "A piece of regal red cloth lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_BODY}
ARMOUR_CLOTHES(0,0)
weight 1
dilcopy guild_restrict@function ({GUILD_UDG_CLERIC},0,0,"");
extra {}
"The vestments are made of a rich, red cloth."
end


                               healer_leggings

names {"healer leggings", "leggings"}
title "a pair of blue cloth leggings"
descr "A pair of blue cloth leggings have been left here"
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_LEGS}
ARMOUR_LEATHER(0,0)
weight 5
extra {}
"The leggings are simply two flaps of strong cloth that hang down on
each side of your legs to protect them in battle."
dilcopy guild_restrict@function ({GUILD_UDG_CLERIC},0,0,"");
end

                               healer_cloak

names {"cloak"}
title "a brown cloak"
descr "A brown cloak lies heaped on the ground here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_ABOUT}
ARMOUR_LEATHER(0,0)
weight 1
extra {}
"The cloak is made from leather and still has the fur inside to provide
added warmth."
dilcopy guild_restrict@function ({GUILD_UDG_CLERIC},0,0,"");

end

                               thief_gloves
names {"gloves"}
title "a pair of finger less gloves"
descr "A pair of gloves lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_HANDS}
ARMOUR_CLOTHES(0,0)
weight 1
extra {}
"These gloves are fashioned for ease of movement."
dilcopy guild_restrict@function ({GUILD_UDG_THIEF},0,0,"");
end

             thief_leggings
names {"thief leggings", "leggings","pants"}
title "a pair of black cloth leggings"
descr "A pair of black cloth leggings have been left here"
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_LEGS}
ARMOUR_CLOTHES(0,0)
weight 5
extra {}
"These are tight fitting pants of a dark color. They are very useful to
move quietly in dark areas."
dilcopy guild_restrict@function ({GUILD_UDG_THIEF},0,0,"");
end



                              thief_shirt
names {"black shirt","thief shirt", "shirt"}
title "a black shirt"
descr "A black shirt lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_BODY}
ARMOUR_CLOTHES(0,0)
weight 1
extra {}
"The shirt would be useful to help hide in dark places."
dilcopy guild_restrict@function ({GUILD_UDG_THIEF},0,0,"");

end


                               thief_pouch

names {"thief pouch","dark pouch","pouch"}
title "a dark pouch"
descr "A small pouch lies here."
manipulate {MANIPULATE_TAKE,MANIPULATE_WEAR_CHEST,MANIPULATE_ENTER}
CONTAINER_DEF (90)
weight 1
extra {}
"The pouch is useful to stash...acquired treasures in."
dilcopy guild_restrict@function ({GUILD_UDG_THIEF},0,0,"");
end


                              mage_robes

names {"conjurer robe","blue robe", "robe"}
title "a black robe"
descr "A black robe lies in the dirt here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_BODY}
ARMOUR_LEATHER(0,0)
weight 1
extra {}
"The robe is made from the finest kidskin and has been died a spectacular
black with blue stars."
dilcopy guild_restrict@function ({GUILD_UDG_MAGE},0,0,"");

end
                            mage_helmet

names {"pointy hat","hat"}
title "a pointy black hat"
descr "A pointy black hat lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_HEAD}
ARMOUR_LEATHER(0,0)
weight 5
extra {}
"The black hat rises up to a point and is decorated with moons and stars."
dilcopy guild_restrict@function ({GUILD_UDG_MAGE},0,0,"");
end


             mage_leggings
names {"mage leggings", "leggings"}
title "a pair of dark blue cloth leggings"
descr "A pair of dark blue cloth leggings have been left here"
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_LEGS}
ARMOUR_CLOTHES(0,0)
weight 5
extra {}
"These are dark blue leggings."
dilcopy guild_restrict@function ({GUILD_UDG_MAGE},0,0,"");
end


                               mage_cloak

names {"cloak"}
title "a dark blue cloak"
descr "A dark blue cloak lies heaped on the ground here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_ABOUT}
ARMOUR_LEATHER(0,0)
weight 1
extra {}
"The cloak is made of fine kid leather and dyed blue."
dilcopy guild_restrict@function ({GUILD_UDG_MAGE},0,0,"");

end

/*new newbie equipment*/
   newbie_dagger

names {"dagger", "rabbit's bane", "bane"}
title "the dagger Rabbit's Bane"
descr "A small glowing dagger lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
WEAPON_DEF(WPN_DAGGER,0,0)
weight 1
extra {}
"This small dagger is standard issue for the conjurer, and is specially
useful against rabbits."
WEAPON_SLAYER(RACE_RABBIT)

end

   newbie_sword

names {"long sword", "boar's bane", "bane", "sword"}
title "the long sword Boar's Bane"
descr "A shining, sharp long sword lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
WEAPON_DEF(WPN_LONG_SWORD,0,0)
weight 5
extra {}
"This long sword is standard issue for fighters, and seems especially useful
against boars."

WEAPON_SLAYER(RACE_BOAR)
end


   newbie_mace

names {"mace", "fox's bane", "bane"}
title "the mace Fox's Bane"
descr "A finely crafted mace lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
WEAPON_DEF(WPN_MACE,0,0)
weight 4
extra {}
"This small mace is standard issue for healers, and has an image of a fox
engraved upon its head."

WEAPON_SLAYER(RACE_FOX)
end


   newbie_short

names {"short sword", "sword", "badger's bane", "bane"}
title "the short sword Badger's Bane"
descr "A small sword lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WIELD}
WEAPON_DEF(WPN_SHORT_SWORD,0,0)
weight 3
extra {}
"This small sword is standard issue for thieves, and has an image of a badger
engraved into its hilt."
WEAPON_SLAYER(RACE_BADGER)

end




   newbie_robes
names {"conjurer robe", "robe"}
title "a conjurer's red robe"
descr "A red robe lies in the dirt here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_BODY}
ARMOUR_CLOTHES( 0,0)
weight 1
extra {}
"This red robe has the sigil of the conjurer College of Arcane upon it."
end



   newbie_bracers

names {"conjurer bracers", "bracers"}
title "a pair of bracers"
descr "A small pair of bracers lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_ARMS}
ARMOUR_CLOTHES(0,0)
weight 1
extra {}
"These small set of bracers provide a spell caster with some protection for his
lower arms."
end

   newbie_boots
names {"boots"}
title "a pair of leather boots"
descr "A pair of boots sits here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_FEET}
ARMOUR_CLOTHES(0,0)
weight 1
extra {}
"These fine boots provide good protection for the feet."
end

   newbie_chain
names {"jerkin", "links","chain"}
title "a chain mail jerkin"
descr "A heap of chain links lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_BODY}
ARMOUR_CLOTHES(0,0)
weight 6
extra {}
"This jerkin is scribed with the rune of the Healer's Guild upon its
chest."
end


   newbie_pants

names {"skirt", "links","chain"}
title "a chain mail skirt"
descr "A heap of chain links lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_LEGS}
ARMOUR_CLOTHES(0,0)
weight 5
extra {}
"This skirt provides protection to the leg and groin area."
end

   newbie_jacket

names {"leather jerkin", "jerkin"}
title "a leather jerkin"
descr "a leather jerkin lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_BODY}
ARMOUR_CLOTHES(0,0)
weight 3
extra {}
"This jerkin has the symbol of the Thieves Guild inscribed on the side."
end

   newbie_lpants

names {"leather pants", "pants"}
title "a pair of leather pants"
descr "a pair of leather pants lie here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_LEGS}
ARMOUR_CLOTHES(0,0)
weight 2
extra {}
"These pants are tight, black leather, and useful for keeping a person
concealed
at night."
end

   newbie_cloak

names {"cloak"}
title "a dark cloak"
descr "A cloak lies heaped on the ground here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_ABOUT}
ARMOUR_CLOTHES(0,0)
weight 1
extra {}
"This dark cloak is good for concealing yourself in the dark with."
end

   newbie_plate

names {"breastplate", "plate"}
title "a fighter's breastplate"
descr "a fine breastplate lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_BODY}
ARMOUR_CLOTHES(0,0)
weight 14
extra {}
"This fine breastplate is made of reinforced cloth and has the insignia of
the Fighter Guild on the chest."
end

   newbie_psleeves

names {"fighter sleeves", "sleeves"}
title "a fighter's sleeves"
descr "A fine pair of reinforced sleeves lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_ARMS}
ARMOUR_CLOTHES(0,0)
weight 10
extra {}
"This fine pair of sleeves has a sword scribed upon its side."
end


   newbie_legg
names {"fighter leggings", "leggings"}
title "a fighter's leggings"
descr "A fine pair of reinforced leggings lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_LEGS}
ARMOUR_CLOTHES(0,0)
weight 10
extra {}
"This fine set of leggings has a sword scribed upon its side."
end


   conjure_item
names {"ring"}
title "the Ring of the Conjurer"
descr "A small glowing ring lies here."
manipulate{MANIPULATE_TAKE, MANIPULATE_WEAR_FINGER}
weight 1
extra {}
"This ring will transport you to udgaard up upon the command 'home' and while
worn."
dilcopy home@udgaard();
dilcopy guild_restrict@function ({GUILD_UDG_MAGE},0,0,"");
end


   healer_item

names {"amulet"}
title "the Amulet of the Healers"
descr "A small glowing amulet lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_NECK}
weight 1
extra {}
"This amulet will transport you to udgaard upon the command 'home' and while
worn."
dilcopy home@udgaard();
dilcopy guild_restrict@function ({GUILD_UDG_CLERIC},0,0,"");

end

   thief_item

names {"broach"}
title "the Broach of Thieving"
descr "A small broach lies here."
manipulate {MANIPULATE_TAKE, MANIPULATE_WEAR_CHEST}
weight 1
extra {}
"This amulet will transport you to udgaard upon the command 'home' and while
worn."
dilcopy home@udgaard();
dilcopy guild_restrict@function ({GUILD_UDG_THIEF},0,0,"");

end


   fighter_item

names {"earring"}
title "the Earring of Battle"
descr "A small earring shaped like a sword is here."
weight 1
manipulate {MANIPULATE_TAKE, MANIPULATE_HOLD, MANIPULATE_WEAR_EAR}
extra {}
"This earring will transport you to udgaard upon the command 'home' and while
worn."
dilcopy home@udgaard();
dilcopy guild_restrict@function ({GUILD_UDG_FIGHTER},0,0,"");

end


                              fountain

names {"golden obelisk", "gold obelisk", "obelisk", "fountain", "water"}
title "the obelisk"
descr "&c+yA large golden obelisk majestically towers above you.&cw"
LIQ_WATER( 4000, 20000, 20000, 0)
cost 1000 PLATINUM_PIECE
spell 200
extra {}
"The obelisk is very impressive standing ten feet tall. Water pours out from
the pyramidal top, runs down all four sides and is eventually collected in
a depression at the base. The obelisk appears to be made of pure gold and
engraved herein you see names of women and men,
who are forever friends of Udgaard and the world of Valhalla. To look at them
you should look names."
extra {"names", "name", "sides", "side", "engraving", "engravings"}
"&c+rCinnamon Buns&n
&c+bKuros Master of The Inner Circle of Truth, and King of Valhalla&n
&c+mVolklod Lord of the Shadows&n
&c+gLightLord husband to Rejji&n
&c+rTigika Lord of the Tigers&n
$c+mJem ?&n
&c+yPookey the first friend of Valhalla&n
&c+gZahra the Grand Master Wizard&n
&c+rRikuo &c+wColdfire Knight of the Apocalypse&n
&c+wNitemare &c+bDreamweaver of the Legendary Midgaard Bums&n
&c+yCopper&c+w Pieces&n
&c+bCorvin Prince of Amber - Valhalla Artist&n
&cw"
end

                           safe_key

/* This is for the safe in the guards office */
names {"brass key","key"}
title "a key"
descr "A brass key has been left here."
type ITEM_KEY
manipulate {MANIPULATE_TAKE, MANIPULATE_HOLD}
weight 1
cost 2 SILVER_PIECE
extra {}
"The brass key is small and looks like it fits a very complicated lock."
end

                          jail_key

/* Key to open the Jail in Udgaard */
names {"steel key","key"}
title "a steel key"
descr "A large steel key has been left here."
type ITEM_KEY
manipulate {MANIPULATE_TAKE, MANIPULATE_HOLD}
weight 1
cost 1 SILVER_PIECE
extra {}
"A key of this size must fit a very strong lock."
end


                              map

names {"map of udgaard", "map"}
title "a map of Udgaard"
descr "A map of Udgaard has been left here."
type ITEM_NOTE
manipulate {MANIPULATE_TAKE, MANIPULATE_HOLD}
weight 1
cost 10 IRON_PIECE
extra {}
"&l                   The Village of Udgaard
                      1 1 1 1 1 1 1 1 1 1
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
A                C                             Temple          A07
                |                             Shops
B        I   S   |   B   S                     Food Store      B05
        |   |   |   |   |                     Armourer        B11
C    1---#---#---#---#---#---2                 Ironmonger      D05
        |   |   |   |   |                     Weaponsmith     D11
D        P   S   |   O   S                     Inn             B03
                |                             Post Office     D03
E  G-#---#---#---#---#---#---#-G               Guard's Office  D09
                |                             Haon-Dor        C01
F  G-#---#---#---#---#---#---#-G               Bank            B09
                                              Cleric's Guild  E00
                                              Warrior's Guild E14
>From C13 you reach the city of Midgaard       Thieve's Guild  H14
by going 'eseseenenee'                         Mage's Guild    H00
                                              Cypress Forest  C13"

end


                                safe

names {"safe"}
title "the safe"
descr "A safe is placed in a dark corner of the room."
extra {} "You notice that the safe has a keyhole. The safe looks very heavy."
manipulate {MANIPULATE_ENTER}
open {EX_OPEN_CLOSE, EX_CLOSED, EX_LOCKED, EX_PICKPROOF}
key safe_key
CONTAINER_DEF(4000)
end

/* ---------------------- GUILD SHOPS ITEMS --------------- */

/* ------------------------- THIEVES ITEMS ------------------- */
 lockpick
names {"simple lockpick","lockpick"}
title "a simple lockpick"
descr "A small lockpick lies here."
extra {}
"This small lockpick is just a very thin, bent steel rod. In the hands of
an experienced thief this can open many a door, however!"
extra {"$identify"}
"This lockpick is very simple but will still add 2% to your picklock
skill.&n"
manipulate {MANIPULATE_TAKE,MANIPULATE_HOLD}
type ITEM_KEY
cost 2 COPPER_PIECE
rent 16 IRON_PIECE
end

 dirk
names {"small dirk","dirk"}
title "a small dirk"
descr "A small dirk lies here."
extra {}
"A small, slender dirk. This is a simple and easy to conceal weapon for a
rookie thief and it doubles as a lock-picking tool as well!"
weight 1
WEAPON_DEF(WPN_DAGGER,0,0)
manipulate {MANIPULATE_TAKE,MANIPULATE_WIELD}
cost 15 IRON_PIECE
rent 8 IRON_PIECE
end

 facemask
names {"black facemask","facemask","mask","cloth"}
title "a black facemask"
descr "A black piece of cloth lies here."
extra {}
"A black piece of cloth you can wrap around your face to aid you in
hiding from wiev."
extra {"$wear_s"}
"You wrap the cloth around your head."
extra {"$wear_o"}
"$1n wraps a piece of black cloth around $1s head."
ARMOUR_CLOTHES(0,0)
manipulate {MANIPULATE_TAKE,MANIPULATE_WEAR_HEAD}
weight 1
cost 18 IRON_PIECE
rent 8 IRON_PIECE
end

 blk_hood_cloak
names {"black hooded cloak","cloak"}
title "a black, hooded cloak"
descr "A black, hooded cloak lies here in a heap."
extra {}
"A black cloak with a hood, it would do nicely if you hope to escape
unwanted attention."
extra {"$identify"}
"This cloak will raise your Hide skill by one but is quite difficult to
swim in and decreases your swim skills by 3.&n"
ARMOUR_CLOTHES(0,0)
manipulate {MANIPULATE_TAKE,MANIPULATE_WEAR_ABOUT}
weight 1
cost 2 COPPER_PIECE
rent 8 IRON_PIECE
end

/* ------------------- HEAL ITEMS --------------------------- */
 prot_talisman
names {"protective talisman","talisman"}
title "a protective talisman"
descr "A small talisman lies here, forgotten by all but you."
extra {}
"A small talisman, looks like a small, flat stone disc with a small hole.
You've seen those before, they protect you against the evil eye and
the various mischevous forces."
extra {"$wear_s"}
"You wear $2n around your neck.&n
You feel protected from evil eye.&n
You feel protected from various mischievous forces."
extra {"$rem_s"}
"You remove $2n.&n
You gasp, as you realize that you are now wounderable to evil eye.&n
With horror you realize that evil forces can now have free play with you."
extra {"$identify"}
"Rocks with natural holes in them are generally regarded as great protection
from faeries altough no-one knows why but the faeries themselves, and they
aren't too keen to share their secrets."
manipulate {MANIPULATE_TAKE,MANIPULATE_WEAR_NECK}
type ITEM_WORN
cost 2 COPPER_PIECE
end

 holycharm
names {"holy charm","charm"}
title "a small holy charm"
descr "A small holy charm lies here in the dust."
extra {}
"This tiny item is a small token of all pious people. It is made of a
shiny metal, altough hoping for silver would be aiming far too high."
extra {"$wear_s"}
"You wear $2n around your neck.&n
Your feel more confident under the protection of the gods."
type ITEM_WORN
manipulate {MANIPULATE_TAKE,MANIPULATE_WEAR_NECK}
cost 5 COPPER_PIECE
rent 8 IRON_PIECE
end

 holybook
names {"holy book","book"}
title "a holy book"
descr "A book lies here in the dust."
extra {}
"Skimming through the book, you realise that it is an holy item, a book
of the teachings and dogmas of the church. Pious people use them to further
their understanding of gods and their works."
extra {"$identify"}
"When held, this book will raise your Div by one but its size will make
you more clumsy in combat.&n"
type ITEM_BOOK
manipulate {MANIPULATE_TAKE,MANIPULATE_HOLD}
weight 4
cost 2 SILVER_PIECE
rent 25 IRON_PIECE
open {EX_OPEN_CLOSE,EX_CLOSED}
end

 holywater
names {"holy water","vial","water"}
title "a vial of holy water"
descr "A small, transparent vial stands here."
extra {}
"A small, transparent vial, containing what looks like water. A small
holy sigil is engraved into the vial. If you want to use it, just
'sprinkle' whomever you want to use it on."
extra {"engraving","sigil"}
"This small sigil is the holy symbol of the church.&n"
extra {"$identify"}
"The holy water has only true power in the hands of skilled men of the
church. However, it will always prove effective against undead and evil
demons. Necromancers and other evil worshippers will have no use for the
holy water.&n"
type ITEM_OTHER
manipulate {MANIPULATE_TAKE,MANIPULATE_HOLD}
weight 1
cost 1 COPPER_PIECE
spell 10
dilcopy holy_water@udgaard();
end

 aid_kit
names {"first aid kit","kit","bag","first aid","aid"}
title "a first aid kit"
descr "A healer's first aid kit stands here."
extra {}
"A small, white bag containing bandages, some simple healing and
painkilling herbs and a bottle of clean water. Excellent aid kit for any
aspiring healer out there."
extra {"$wear_s"}
"You grab your $2N and prepare for medical business."
extra {"$wear_o"}
"$1n grabs $1s $2N and prepares for some medical business."
extra {"$rem_s"}
"You pack up the $2N and stash it away for later use."
extra {"$rem_o"}
"$1n packs up the $2N and stashes it away for later use."
type ITEM_OTHER
manipulate {MANIPULATE_TAKE,MANIPULATE_HOLD}
weight 4
cost 2 SILVER_PIECE
rent 16 IRON_PIECE
end

 heal_herbs
names {"healing herbs","herbs","bunch"}
title "a bunch of healing herbs"
descr "A bunch of herbs lies here."
extra {}
"Altough they look very much like any other weed around this place, those
have weak healing powers and if you eat them, you will probably feel a
bit better."
extra {"$identify"}
"Eating the herbs will heal one hp if your wounds are not too extensive.&n"
manipulate {MANIPULATE_TAKE,MANIPULATE_HOLD}
FOOD_DEF(0,0)
weight 1
cost 6 IRON_PIECE

dilbegin healing_herbs();
code
{
:start:
wait(SFB_CMD,command("eat") and
(("herbs" in argument)or("bunch" in argument))
and(activator==self.outside)and(activator.position>POSITION_SLEEPING));
block;
sendtext("You munch the healing herbs... minty taste.&n",self.outside);
act("$1n munches some healing herbs.",
A_SOMEONE,self.outside,self,null,TO_REST);
if ((self.outside.hp (self.outside.hp==self.outside.max_hp))
{
destroy(self);
quit;
}
sendtext("Hmmm... You feel slightly better.&n",self.outside);
self.outside.hp:=self.outside.hp+1;
position_update(self.outside);
destroy(self);
}
dilend

end

 heal_balm
names {"healing balm","balm","jug"}
title "a small jug of healing balm"
descr "A small white clay jug stands here."
extra {}
"The white clay jug is marked with healer's sigil. It is filled with
balm used to rescue people hovering at the Death's door - however, only
those skilled in First Aid know how to make use of it. Hold it in your
hand and 'aid ' for the balm to work."
extra {"$identify"}
"This balm will heal the patient if applied corectly - the succes depends
on healer's First Aid skill. The balm will only stabilize the patient,
and will only work on mortally wounded.&n"
manipulate {MANIPULATE_TAKE,MANIPULATE_HOLD}
type ITEM_POTION

POTION_DEF(60,SPL_CURE_WOUNDS_2,SPL_CURE_WOUNDS_2,SPL_NONE)

weight 1
cost 2 COPPER_PIECE

dilbegin healing_balm();
var
u : unitptr;
pc : unitptr;
txt : string;
code
{
       :start:
wait(SFB_CMD,(command("aid")or command("quaf"))and
(self.equip==WEAR_HOLD)
and(activator==self.outside)and(activator.position>POSITION_SLEEPING));
block;
pc:=activator;
txt:=argument;

if (command("quaf"))
{
sendtext("No idea in quaffing the balm, it's for external use only.&n",pc);
goto start;
}

if ((pc.position==POSITION_SITTING)or(pc.position==POSITION_RESTING))
{
sendtext("Nah... you're too relaxed to think about that right now...&n",pc);
goto start;
}

if (txt=="")
{
sendtext("Aid who?&n",pc);
goto start;
}

u:=findunit(self.outside,txt,FIND_UNIT_SURRO,null);

if ((u.type==UNIT_ST_PC)or(u.type==UNIT_ST_NPC))
{
if (u==pc)
 {
 sendtext("What point would there be in applying the balm to yourself?&n"+
 "You are not dying at the moment!&n",pc);
 goto start;
 }
if ((u.hp>0)and(u.position>POSITION_INCAP))
 {
 sendtext("But "+u.name+" is not dying at the moment!&n",pc);
 goto start;
 }
if ((u.type==UNIT_ST_NPC)and(u.race>999))
{
sendtext("You don't recognise the anatomy of this creature, you can't "+
"apply the balm!&n",pc);
goto start;
}

sendtext("You carefully apply the healing balm to "+u.name+"'s bleeding "+
"wounds...&n",pc);
act("$1n carefully applies some $2N to $3n's bleeding wounds...",
A_SOMEONE,pc,self,u,TO_NOTVICT);
if (openroll(60,5) {
u.hp:=1;
u.position:=POSITION_RESTING;
position_update(u);
act("The wounds on $3n's body close up, and a sigh comes from $3s chest.",
A_SOMEONE,pc,self,u,TO_NOTVICT);
act("The wounds on $3n's body close up, and a sigh comes from $3s chest.",
A_SOMEONE,pc,self,u,TO_CHAR);
sendtext("You awake from the coma, feeling weak yet still alive!&n",u);
destroy(self);
}
else
{
sendtext("Oh no! You must have made some error in your treatment!&n",pc);
act("There is no apparent effect to be seen.",A_SOMEONE,pc,self,u,TO_ALL);
destroy(self);
}
goto start;
}
sendtext("No-one here by this name.&n",self.outside);
goto start;
}
dilend


end

/* ------------------------- OUTDOORS GOODS ------------------------- */

 small_tent
names {"small tent","tent"}
title "a small tent"
descr "A small tent stands here, wonder what's inside."
extra {}
"A small, but sturdy tent with an oilskin canvas as an added protection
versus the elements. It is quite small and can only contain a few people."
extra {"$get_s"}
"You pack up the $2N."
extra {"$get_o"}
"$1n packs it up $2n."
extra {"$drop_s"}
"You unpack your $2N and assemble it on the ground."
extra {"$drop_o"}
"$1n unpacks $2n and assembles it on the ground."
extra {"$enter_s"}
"You slip into $2n."
extra {"$enter_o"}
"$1n slips into $2n."
weight 20
manipulate {MANIPULATE_TAKE,MANIPULATE_ENTER}
open {EX_OPEN_CLOSE}
flags {UNIT_FL_INDOORS,UNIT_FL_NO_WEATHER}
CONTAINER_DEF(400)
cost 1 SILVER_PIECE
dilcopy tent_dil@udgaard();
end

               large_tent
names {"large tent","tent"}
title "a large tent"
descr "A large tent stands here, wonder what's inside."
extra {}
"A large, sturdy tent with an oilskin canvas as an added protection
versus the elements. It looks large enough for several people."
extra {"$get_s"}
"You pack up the $2N."
extra {"$get_o"}
"$1n packs up $2n."
extra {"$drop_s"}
"You unpack your $2N and assemble it on the ground."
extra {"$drop_o"}
"$1n unpacks $2n and assembles it on the ground."
extra {"$enter_s"}
"You slip into $2n."
extra {"$enter_o"}
"$1n slips into $2n."
weight 30
manipulate {MANIPULATE_TAKE,MANIPULATE_ENTER}
open {EX_OPEN_CLOSE}
flags {UNIT_FL_INDOORS,UNIT_FL_NO_WEATHER}
CONTAINER_DEF(1000)
cost 3 GOLD_PIECE
dilcopy tent_dil@udgaard();
end

 blanket
names {"woolen sleeping blanket","blanket"}
title "a woolen sleeping blanket"
descr "A large sleeping blanket of nice, warm wool lies here."
extra {}
"A large and warm sleeping blanket, clearly designed for outdoors use.
This will keep you warm on the long nights under the stars."
extra {"$wear_s"}
"You wrap $2n about your body.&n
You feel nice and warm."
ARMOUR_CLOTHES(0,0)
manipulate {MANIPULATE_TAKE,MANIPULATE_WEAR_ABOUT}
weight 8
cost 5 IRON_PIECE
end

 backpack
names {"backpack","pack"}
title "an oilskin backpack"
descr "A sturdy oilskin backpack lies here."
extra {}
"A sturdy oilskin backpack, it will protect your items from rain and
other harshness of travel."
manipulate {MANIPULATE_TAKE,MANIPULATE_WEAR_BACK,MANIPULATE_ENTER}
CONTAINER_DEF(150)
open {EX_OPEN_CLOSE,EX_CLOSED}
weight 3
cost 2 COPPER_PIECE
end

 rope_grapnel
names {"grapnel and rope","grapnel","rope","length","hook"}
title "a grapnel and rope"
descr "A coiled rope with a hook attached lies here."
extra {}
"A length of rope with a sturdy hook. You can hold it and use it whenever
you are trying to climb something. Altough rather unwieldy, it is an
excellent aid in all sorts of climbing."
manipulate {MANIPULATE_TAKE,MANIPULATE_HOLD}
SKILL_TRANSFER(SKI_CLIMB,+2)
SKILL_TRANSFER(SKI_FLEE,-3)
SKILL_TRANSFER(SKI_SNEAK,-3)
weight 8
cost 10 COPPER_PIECE
rent 40 IRON_PIECE
end

/* ------------------------- SMOKING GOODS -------------------------- */
 small_pipe
names {"small smoking pipe","smoking pipe","pipe","small pipe"}
title "a small smoking pipe"
descr "A small smoking pipe of white clay lies here."
extra {}
"A small smoking pipe of white pipe-clay. If you have some tobacco and
feel like having a smoke, just 'fill pipe' and light it while holding it.&n
When holding it, you can use the command 'smoke' to enjoy the pipe."
extra {"$identify"}
"&l
For those who did not understand the instructions in the description:

 &c+wfill pipe&cw     - will fill the pipe from your tobacco pouch
                 (if you have one)
 &c+wlight pipe&cw    - will light the pipe - you need to hold it
                 in order to smoke it
 &c+wsmoke&cw         - a social command of smoking
                 ('smoke pipe', 'smoke ', 'smoke pipe/cigar')

       The pipe can be extinguished with &c+wextinguish pipe&cw
       or &c+wremove pipe&cw.
&f
&n"
PIPE(30,0,360)
end

 large_pipe
names {"large smoking pipe","smoking pipe","pipe","large pipe"}
title "a large smoking pipe"
descr "A large smoking pipe lies here."
extra {}
"A large smoking pipe carved in wood. If you got some tobacco and feel
like having a smoke, just 'fill pipe' and light it while holding it.&n
When holding it, you can use the command 'smoke' to enjoy the pipe."
extra {"$identify"}
"&l
For those who did not understand the instructions in the
description:

 &c+wfill pipe&cw     - will fill the pipe from your
tobacco pouch
                 (if you have one)
 &c+wlight pipe&cw    - will light the pipe - you need to
hold it
                 in order to smoke it
 &c+wsmoke&cw         - a social command of smoking
                 ('smoke pipe', 'smoke ', 'smoke
pipe/cigar')

       The pipe can be extinguished with &c+wextinguish
pipe&cw
       or &c+wremove pipe&cw.
&f
&n"
PIPE(50,1,480)
end

 carved_pipe
names {"white meerschaum pipe","smoking pipe","pipe","carved pipe"}
title "a beautiful meerschaum pipe"
descr "A beautifully carved pipe of white meerschaum lies here."
extra {}
"A small piece of art, this pipe is crafted in white meerschaum and the
head is carved in the shape of a small, mischevious devil.&n
If you got some tobacco and feel like having a smoke, just 'fill pipe'
and light it while holding it.&n
When holding it, you can use the command 'smoke' to enjoy the pipe."
extra {"$identify"}
"&l
For those who did not understand the instructions in the
description:

 &c+wfill pipe&cw     - will fill the pipe from your
tobacco pouch
                 (if you have one)
 &c+wlight pipe&cw    - will light the pipe - you need to
hold it
                 in order to smoke it
 &c+wsmoke&cw         - a social command of smoking
                 ('smoke pipe', 'smoke ', 'smoke
pipe/cigar')

       The pipe can be extinguished with &c+wextinguish
pipe&cw
       or &c+wremove pipe&cw.
&f
&n"
PIPE(200,0,400)
end

               tobacco_aroma
names {"pouch of aromatic tobacco","tobacco pouch","tobacco","pouch"}
title "a pouch of aromatic tobacco"
descr "A small tobacco pouch lies here."
extra {}
"A small pouch of aromatic tobacco."
extra {"$identify"}
"You need a pipe to use this tobacco pouch.&n"
weight 1
manipulate{MANIPULATE_TAKE,MANIPULATE_WEAR_NECK,MANIPULATE_HOLD}
type ITEM_OTHER
value[1] 5
cost 2 COPPER_PIECE
dilcopy tobacco_pouch@udgaard();
end

               tobacco_cheap
names {"pouch of cheap tobacco","tobacco pouch","tobacco","pouch"}
title "a pouch of cheap tobacco"
descr "A small tobacco pouch lies here."
extra {}
"A small pouch of cheap tobacco."
extra {"$identify"}
"You need a pipe to use this tobacco pouch.&n"
weight 1
manipulate{MANIPULATE_TAKE,MANIPULATE_WEAR_NECK,MANIPULATE_HOLD}
type ITEM_OTHER
value[1] 10
cost 1 COPPER_PIECE
dilcopy tobacco_pouch@udgaard();
end

               fat_cigar
names {"huge, fat cigar","cigar"}
title "a huge, fat cigar"
descr "A huge and fat cigar lies here."
extra {}
"A huge and fat cigar, the sort you would deal out to celebrate a birth
of your kid. Just hold it and light it if you want a smoke.&n
When smoking a cigar, you can use the command 'smoke' if you wish to bother
others with your smoke."
CIGAR(8,420)
end


 cheap_cigar
names {"cheap cigar","cigar"}
title "a large, cheap cigar"
descr "A large cigar of the cheaper kind lies here."
extra {}
"A large cigar, perhaps not the best quality but it will do for a
desperate chain-smoker. Just hold it and light it if you want a smoke.&n
If smoking a cigar, you can use the command 'smoke' if you wish to bother
others with your smoke."
CIGAR(5,300)
end

 long_cigar
names {"fine cigar","cigar"}
title "a fine, long cigar"
descr "A slick, long cigar lies here, tempting you."
extra {}
"A long, fine cigar if you happen to like smoking. Just hold it and light
it if you want a smoke.&n
If smoking a cigar, you can use the command 'smoke' if you wish to bother
others with your smoke."
CIGAR(15,420)
end

               slick_cigar
names {"slick cigar","cigar"}
title "a slick, long cigar"
descr "A slick, long cigar lies here, ready to be smoked."
extra {}
"A thin and long, slick cigar of high quality and elegance. Just hold it and
light it if you want a smoke.&n
When smoking a cigar, you can use the command 'smoke' if you wish to bother
others with your smoke."
CIGAR(16,420)
end

 dogend
names {"a cigar stump","stump","dog-end","cigar"}
title "a burned-out cigar stump"
descr "A smelly cigar stump lies here."
extra {}
"Once a cigar, now only a soggy dog-end."
type ITEM_TRASH
manipulate {MANIPULATE_TAKE,MANIPULATE_HOLD}
dilcopy blowaway@function(180,"A soggy dog-end of a cigar falls apart.");
end

 glasses
names {"gold-rimmed glasses","glasses","pair"}
title "gold-rimmed glasses"
descr "A pair of gold-rimmed glasses lies here."
extra {}
"A pair of gold-rimmed glasses, rather heavy but very fancy. They seem
rather thick."
extra {"$identify"}
"Unless you are EXTREMELY nearsighted, those glasses will only worsen
your vision.&n"
extra {"$wear_s"}
"You put on the $2n.&n
Everything gets blurred."
extra {"$wear_o"}
"$1n puts on some $2n, $1s eyes looks like huge fishes in a pair of bowls."
extra {"$rem_s"}
"You remove the $2n and rub your aching eyes.&n
Everything returns to normal shape."
extra {"$rem_o"}
"$1n removes $1s $2n and rubs $1s aching eyes."
manipulate {MANIPULATE_TAKE,MANIPULATE_WEAR_HEAD}
weight 1
cost 2 GOLD_PIECE
DEX_TRANSFER(-2)
end

%mobiles

   ud_clerk

names {"clerk"}
title "Storage Clerk"
descr "The storage clerk stands here waiting to serve you."
extra {}
"The storage clerk is wearing a leather apron which is quite stained.
He looks at you with as half cocked eye as if awaiting your request."
M_HUMAN_WARRIOR_SWORD(185,SEX_MALE)
romflags {CHAR_PROTECTED}
dilbegin order();
var
 claim : string;
 owner : stringlist;
 pc : unitptr;
 have : string;
 cont : unitptr;
 cont_name : string;
 cont_log_name : string;
 item  : unitptr;
 thing : unitptr;
 i     : integer;
 tf    : integer;
 amt  : string;
 caust : integer;
 typea : string;
 day   : integer;
 daycost : integer;
 typeb : string;
 week  : integer;
 weekcost : integer;
 typec : string;
 month : integer;
 monthcost : integer;
 typed : string;
 year  : integer;
 yearcost : integer;
 typee : string;
code
{

 :init:
 heartbeat := PULSE_SEC*5;
 on_activation((self.position <= POSITION_SLEEPING), skip);

 :start:
/* These are the variables that control which container from where is used */
 cont_name := "udcontainer";
 cont_log_name := "ud_cont@udgaard";
/* These are the variables which control price ect. */
/* ------------------------------------------------ */
 amt := "1";
 typea := "platinum";
 caust := 40960;
/* --------------- amt, typea, and cause, are variables which relate to the
    first time fee for renting storage -- caust is a
    mud acutal currency pointer number... see documentation
    below for a full explanation
-----------------*/
 day := 8;
 week := 32;
 month := 48;
 year := 90;
/* --------------- day, week, month, and year are variables which relate to
    the daily payment rate
----------------- */
 typeb := "gold";
 typec := "gold";
 typed := "gold";
 typee := "gold";
/* --------------- types b-e are variables which relate to the type of
    currency used to calculate the daily cost
----------------- */
 daycost := 5120*8;
 weekcost := 5120*32;
 monthcost := 5120*48;
 yearcost := 5120*90;
/* --------------------- daycost - yearcost are the actual mud values of the
   currency -- you can determine these values by
   using the makemoney command -- for instance --
   if yearcost = 5120 * 90
   if you type makemoney 5120, you will notice that
   this is equal to one gold,
   -- in this case
   5120 * 90 = 1 gold X 90 = 90 gold for one
   years storage
------------------------ */

 wait(SFB_CMD, (command("order") and ("container" in argument)) and
     (activator.type == UNIT_ST_PC));
   pc := activator;
   secure(pc, lostpc);
 {
    block;
    cont := findunit(self, cont_name, 0, pc.inside);

    if(cont != null)
    {
      exec("say You already have space rented.", self);
      goto start;
    }
/* -----------------------------------------------------------------------
  AT THIS POINT IN THE RENTAL CODE, YOU MUST DETERMINE WHETHER OR NOT
  YOU WISH TO ALLOW RENTAL FOR ALL FOUR PERIODS OF TIME -- IF YOU WISH
  TO REMOVE ONE PERIOD, SUCH AS A YEAR... YOU MUST ARGUMENT IT OUT,
  USING THE SAME METHOD TO BLOCK OUT THESE COMMENTS
-------------------------------------------------------------------------- */

    exec("say Hello There, " +pc.name+ ".", self);
    exec("say We have a " +amt+" "+typea+" first time fee for storage "+
  "space.", self);

/* --------------------------------------------------
YOU MUST ALSO REMOVE ONE OF THESE RENTAL PERIODS FROM THE LINE DIRECTLY
  BELOW, IF YOU WISH TO RENT SPACE FOR ONLY SOME OF THE FOUR PERIODS
-------------------------------------------------- */

    exec("say You can rent for the day, a week, a month, or the year",
   self);

/* --------------------------------------------------
DEPENDING ON WHETHER OR NOT YOU WISH TO REMOVE ONE RENTAL PERIOD, IF
  YOU DO, REMOVE ONE OR MORE OF THE FOUR EXEC STATEMENTS BELOW
-------------------------------------------------- */

    exec("say The rates are " +itoa(day)+" "+typeb+ " for a day.",
   self);
    exec("say               " +itoa(week)+" "+typec+" for the week.",
   self);
    exec("say               " +itoa(month)+" "+typed+" for the month.",
   self);
    exec("say               " +itoa(year)+" "+typee+" for the year.",
   self);
    exec("say These fees are paid in advance.", self);
    exec("say Would like like to rent space with us?", self);
    exec("say Please Nod or Shake", self);

    i := 0;
    while (i < 5)
    {
wait(SFB_CMD, activator #= pc);

if(command("nod"))
{
  goto want_container;
}
else if(command("say"))
{
  pause;
  exec("say Please Nod or Shake.", self);
}
else if(command("shake"))
goto no_store; i := i + 1;
    }
    :no_store:      exec("say I'm sorry to hear that.", self);
     goto start;

    :want_container:
     tf := transfermoney(pc, self, caust);
     if(tf == FALSE)
     {
exec("say You can't afford our initial fee.", self);
goto start;
     }
     :choice:
/* --------------------------------------------------
  DEPENDING ON YOUR CHOICE OF EXCLUSION OR NOT MAKE SURE TO UPDATE THE LINE
BELOW
-------------------------------------------------- */
     exec("say Please say whether you want to rent for a day, "+
   " week, month, or year", self);

     wait(SFB_CMD, (command("say")));
     block;
/* --------------------------------------------------
  ALSO, IN THE CODE BELOW, ARGUMENT OUT THOSE PORTIONS BETWEEN
  THE MAIN, IF STATEMENTS WHICH CONTIAN PERIODS OF TIME
-------------------------------------------------- */

     if("day" in argument)
     {
tf := transfermoney(pc, self, daycost);
if(tf == FALSE)
{
  exec("say You can't afford to rent for a day.", self);
  goto start;
}
goto day;
     }
     if("week" in argument)
     {
tf := transfermoney(pc, self, weekcost);
if(tf == FALSE)
{
  exec("say You can't afford to rent for a week.", self);
  goto start;
}
goto week;
     }
     if("month" in argument)
     {
tf := transfermoney(pc, self, monthcost);
if(tf == FALSE)
{
  exec("say You can't afford to rent for a month.", self);
  goto start;
}
goto month;
     }
     if("year" in argument)
     {
tf := transfermoney(pc, self, yearcost);
if(tf == FALSE)
{
  exec("say You can't afford to rent for a year.", self);
  goto start;
}
goto year;
     }
     goto choice;
/* --------------------------------------------------
  IF YOU HAVE ARGUMENTED OUT ALL ELSE CORRECTLY, IT IS NOT NECESSARY
  TO CHANGE ANY OF THE CODE BELOW
-------------------------------------------------- */
     :day:
     claim := "$"+pc.name;
     owner := {""};
     addstring(owner, claim);
     item := load(cont_log_name);
     item.minv := 200;
     item.alignment := 0;
     addextra(item.extra, owner, "");
     dilcopy("counter@function", item);
     dilcopy("timerone@function", item);
     goto end;

     :week:
     claim := "$"+pc.name;
     owner := {""};
     addstring(owner, claim);
     item := load(cont_log_name);
     item.minv := 200;
     item.alignment := 0;
     addextra(item.extra, owner, "");
     dilcopy("counter@function", item);
     dilcopy("timertwo@function", item);
     goto end;

     :month:
     claim := "$"+pc.name;
     owner := {""};
     addstring(owner, claim);
     item := load(cont_log_name);
     item.minv := 200;
     item.alignment := 0;
     addextra(item.extra, owner, "");
     dilcopy("counter@function", item);
     dilcopy("timerthree@function", item);
     goto end;

     :year:
     claim := "$"+pc.name;
     owner := {""};
     addstring(owner, claim);
     item := load(cont_log_name);
     item.minv := 200;
     item.alignment := 0;
     addextra(item.extra, owner, "");
     dilcopy("counter@function", item);
     dilcopy("timerfour@function", item);
     goto end;

     :end:
     link(item, pc);

     act("The clerk reserves some storage space for you.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("The clerk reserves some storage space for $1n.",
      A_SOMEONE, pc, null, null, TO_REST);

    unsecure(pc);
    goto start;
 }
    :lostpc:
goto start;
}
dilend



dilbegin storage();
var
 pc : unitptr;
 cont  : unitptr;
 cont_name : string;
 cont_log_name : string;
 have : string;
 stuff : unitptr;
 item  : unitptr;
 tf    : integer;
 weit : integer;
 newweit  : integer;
 weait : integer;
 weaits : stringlist;
 weaitsmore : integer;
 exdp : extraptr;
 strin : string;
 strilst : stringlist;
 strint : integer;
/*udgaard only*/
 items : unitptr;
 slop : integer;
 bucket : integer;
 finder : integer;
code
{

 :init:
 heartbeat := PULSE_SEC*5;
 on_activation((self.position <= POSITION_SLEEPING), skip);

 :start:
/* These are the variables that control which container from where is used */
 cont_name := "udcontainer";
 cont_log_name := "ud_cont@udgaard";
 wait(SFB_CMD, (command("withdraw") or command("store")) and      (activator.type == UNIT_ST_PC));
   pc := activator;
   secure(pc, lostpc);
block;
{
 if(command("store"))  {
    block;
    pc := activator;
    secure(pc, lostpc);
    act("$1n speaks with the clerk.",
     A_SOMEONE, pc, null, null, TO_REST);
    have := "$"+activator.name;
    cont := findunit(self, cont_name, 0, pc.inside);
    if(not(have in cont.extra))
    {
goto start;
    }
    if(cont == null)
    {
      exec("say You haven't rented space with us.", self);
      goto start;
    }
    stuff := findunit(self, argument, 0, pc.inside);
    if(stuff == null)
    {
      exec("say You aren't holding a " +argument+"!", self);
      goto start;
    }
    cont := findunit(self, cont_name, 0, pc.inside);
/* udgaard only*/
    items := cont.inside;
    slop := 0;
    bucket := 0;
    cont.alignment := 0;
    if(items == null)
    {
      cont.alignment := 0;
    }
    while (items)
    {
       slop := items.weight;
       bucket := slop + cont.alignment;
       cont.alignment := bucket;
       items := (items.next);
    }

    weait := 0;
    weait := stuff.weight;
    strint := cont.alignment;
    weaitsmore := weait + strint;
    if(weaitsmore >= 90)
    {
      exec("say I'm sorry, but you are out of space.", self);
      goto start;
    }
    cont.alignment := weaitsmore;
    link(cont, pc.outside);
    link(stuff, cont);
    setweight(cont, 0);
    setweight(cont, (-(cont.weight)));
    link(cont, pc);

    act("The clerk puts your $2n into storage.",
    A_SOMEONE, self, stuff, pc, TO_VICT);

    act("The clerk stores something for $3n.",     A_SOMEONE, self, null, pc, TO_NOTVICT);
    unsecure(pc);
    goto start;
 }
 if(command("withdraw"))
 {
    block;
    act("$1n speaks with the clerk.",
     A_SOMEONE, pc, null, null, TO_REST);
    have := "$"+activator.name;
    cont := findunit(self, cont_name, 0, pc.inside);
    if(not(have in cont.extra))
    {
goto start;
    }
    if(cont == null)
    {
      exec("say You haven't rented space with us.", self);
      goto start;
    }
    stuff := findunit(self, argument, 0, cont.inside);
    if(stuff == null)
    {
      exec("say You don't have a " +argument+" in storage!", self);
      goto start;
    }
    cont := findunit(self, cont_name, 0, pc.inside);
/* udgaard only*/
    items := cont.inside;
    slop := 0;
    bucket := 0;
    cont.alignment := 0;
    if(items == null)
    {
      cont.alignment := 0;
    }
    while (items)
    {
       slop := items.weight;
       bucket := slop + cont.alignment;
       cont.alignment := bucket;
       items := (items.next);
    }
    weait := 0;
    weait := stuff.weight;
    strint := cont.alignment;
    weaitsmore := strint - weait;
    cont.alignment := weaitsmore;
    link(stuff, pc);
    setweight(cont, 0);
    setweight(cont, (-(cont.weight)));

    act("The clerk gives you your $2n.",
    A_SOMEONE, self, stuff, pc, TO_VICT);

    act("The clerk gives something to $3n.",
    A_SOMEONE, self, null, pc, TO_NOTVICT);
    unsecure(pc);
    goto start;
 }
}
    :lostpc:
goto start;
}
dilend

dilbegin store_inventory();
var
 pc : unitptr;
 cont  : unitptr;
 cont_name : string;
 cont_log_name : string;
 have : string;
 items   : unitptr;
code
{
 :init:
 heartbeat := PULSE_SEC*5;
 on_activation((self.position <= POSITION_SLEEPING), skip);
 :start:
/* These are the variables that control which container from where is used */
 cont_name := "udcontainer";
 cont_log_name := "ud_cont@udgaard";
 wait(SFB_CMD, (command("storage") and ("list" in argument)) and
     (activator.type == UNIT_ST_PC));
   pc := activator;
   secure(pc, lostpc);
 {
    block;
    have := "$"+activator.name;
    cont := findunit(self, cont_name, 0, pc.inside);
    if(not(have in cont.extra))
    {
exec("say You haven't rented space with us.", self);
goto start;
    }
    if(cont == null)
    {
      exec("say You haven't rented space with us.", self);
      goto start;
    }

    act("The clerk says that you have:  ",
    A_SOMEONE, pc, null, null, TO_CHAR);
    items := cont.inside;
    if (items == null)
    {
       act("nothing", A_SOMEONE, pc, null, null, TO_CHAR);
       goto after_loop;
    }
    while (items)
    {
      act(items.title, A_SOMEONE, pc, null, null, TO_CHAR);
      items := (items.next);
    }
    :after_loop:
    act(" in storage.",
    A_SOMEONE, pc, null, null, TO_CHAR);

    unsecure(pc);
    goto start;
 }
    :lostpc:
goto start;
}
dilend


/* --------------------------------------------------
  THIS IS THE CODE WHICH RENEWS A STORAGE CONTRACT
  IT MUST BE MODIFIED TO MATCH YOUR SPECIFICATIONS
  IF YOU ALTERED THE DILPROGRAM order - I HAVE MADE
  NOTATIONS IN THIS CODE WHEREVER CHANGE MAY BE
  NECESSARY
-------------------------------------------------- */

dilbegin renew();
var
 claim : string;
 owner : stringlist;
 pc : unitptr;
 have : string;
 cont : unitptr;
 cont_name : string;
 cont_log_name : string;
 item  : unitptr;
 i     : integer;
 tf    : integer;
 day   : integer;
 daycost : integer;
 typeb : string;
 week  : integer;
 weekcost : integer;
 typec : string;
 month : integer;
 monthcost : integer;
 typed : string;
 year  : integer;
 yearcost : integer;
 typee : string;
code
{

 :init:
 heartbeat := PULSE_SEC*5;
 on_activation((self.position <= POSITION_SLEEPING), skip);

 :start:
/* These are the variables that control which container from where is used */
 cont_name := "udcontainer";
 cont_log_name := "ud_cont@udgaard";
/* --------------------------------------------------
  CHANGE EVERYTHING BELOW THIS COMMENT UNTIL THE NEXT COMMENT
-------------------------------------------------- */
 day := 8;
 week := 32;
 month := 48;
 year := 90;
 typeb := "gold";
 typec := "gold";
 typed := "gold";
 typee := "gold";
 daycost := 5120*8;
 weekcost := 5120*32;
 monthcost := 5120*48;
 yearcost := 5120*90;
/* --------------------------------------------------
  CHANGE EVERYTHING ABOVE THIS COMMENT
-------------------------------------------------- */
wait(SFB_CMD, (command("renew") and ("lease" in argument))
     and (activator.type == UNIT_ST_PC));
   pc := activator;
   secure(pc, lostpc);
 {
    block;
    have := "$"+activator.name;
    cont := findunit(self, cont_name, 0, pc.inside);
    if(not(have in cont.extra))
    {
goto start;
    }
    if(cont == null)
    {
      exec("say You can't renew a lease on nothing!", self);
      goto start;
    }
    exec("say Hello again, " +pc.name+ ".", self);
    pause;
/* --------------------------------------------------
  AGAIN, MODIFY AS PER YOUR DESIRED LEASE PERIODS
-------------------------------------------------- */
    exec("say You can renew your lease for the day, a week, a month, "+
  "or the year", self);
    exec("say The rates are " +itoa(day)+" "+typeb+ " for a day.",
   self);
    exec("say               " +itoa(week)+" "+typec+" for the week.",
   self);
    exec("say               " +itoa(month)+" "+typed+" for the month.",
   self);
    exec("say               " +itoa(year)+" "+typee+" for the year.",
   self);
/* -------------------------------------------------- */
    exec("say These fees are paid in advance.", self);
    exec("say Would like like to renew your space with us?", self);
    pause;
    exec("say Please Nod or Shake", self);

    i := 0;
    while (i < 5)
    {
wait(SFB_CMD, activator #= pc);

if(command("nod"))
{
  goto want_container;
}
else if(command("say"))
{
  pause;
  exec("say Please Nod or Shake.", self);
}
else if(command("shake"))
goto no_store; i := i + 1;
    }
    :no_store:      exec("say I'm sorry to hear that.", self);
     goto start;

    :want_container:
     :choice:
/* --------------------------------------------------
 MODIFY BELOW
-------------------------------------------------- */
     exec("say Please say whether you want to renew for a day, "+
   " week, month, or year", self);

     wait(SFB_CMD, (command("say")));
     block;

     if("day" in argument)
     {
tf := transfermoney(pc, self, daycost);
if(tf == FALSE)
{
  exec("say You can't afford to renew for a day.", self);
  goto start;
}
goto day;
     }
     if("week" in argument)
     {
tf := transfermoney(pc, self, weekcost);
if(tf == FALSE)
{
  exec("say You can't afford to renew for a week.", self);
  goto start;
}
goto week;
     }
     if("month" in argument)
     {
tf := transfermoney(pc, self, monthcost);
if(tf == FALSE)
{
  exec("say You can't afford to renew for a month.", self);
  goto start;
}
goto month;
     }
     if("year" in argument)
     {
tf := transfermoney(pc, self, yearcost);
if(tf == FALSE)
{
  exec("say You can't afford to renew for a year.", self);
  goto start;
}
goto year;
     }
     goto choice;
/* --------------------------------------------------
  END MODIFICATIONS
-------------------------------------------------- */
     :day:
     cont := findunit(self, cont_name, 0, pc.inside);
     sendto("add day", cont);
     goto end;

     :week:
     cont := findunit(self, cont_name, 0, pc.inside);
     sendto("add week", cont);
     goto end;

     :month:
     cont := findunit(self, cont_name, 0, pc.inside);
     sendto("add month", cont);
     goto end;

     :year:
     cont := findunit(self, cont_name, 0, pc.inside);
     sendto("add year", cont);
     goto end;

     :end:

     act("The clerk renews your storage lease.",
      A_SOMEONE, pc, null, null, TO_CHAR);

     act("The clerk renews $1n's storage lease.",
      A_SOMEONE, pc, null, null, TO_REST);

    unsecure(pc);
    goto start;
 }
    :lostpc:
goto start;
}
dilend

end



                           nicholas

names {"father Nicholas", "father", "Nicholas"}
title "Father Nicholas"
descr "Father Nicholas is sitting here, chanting softly."
extra {}
"Father Nicholas is surrounded by a white aura of peace. His blue eyes
reveal that he is a wise priest."
flags {UNIT_FL_NO_TELEPORT}
romflags {CHAR_PROTECTED}

M_HUMAN_CLERIC_HAMMER(12, SEX_MALE, "cast harm", "cast heal")
alignment 1000
end


   jens
names {"Jens Grib", "Jens", "Grib"}
title "Jens Grib"
descr "Jens Grib is standing here."
extra {}
"Jens is a middleaged man, nearly bald, with a really short haircut.
Somehow you wonder if he is really as nice as he tries to seem."

M_HUMAN_THIEF_SWORD(3, SEX_MALE)
alignment -800
money 3 IRON_PIECE

special SFUN_TEAMWORK "jesper/enver"

dilbegin crook1();
var
  pc : unitptr;
code
{
  heartbeat := PULSE_SEC * 8;

  :start:
  nopriority;
  wait(SFB_CMD, activator.type == UNIT_ST_PC);

  pc := activator;
  secure(pc, start);
  priority;

  pause;

  exec("say Hello "+pc.name+", do you need some work?", self);
  pause;

  exec("steal money from "+pc.name, self);
  pause;

  exec("say I got this really nice offer for you.", self);
  pause;

  exec("steal money from "+pc.name, self);
  pause;

  exec("say You'll earn a lot of money!", self);
  pause;

  exec("steal money from "+pc.name, self);
  pause;

  exec("say No hard feelings, my friend, bye!", self);
  pause;
  pause;
  pause;
  pause;
  pause;
}
dilend


special SFUN_RANDOM_GLOBAL_MOVE time PULSE_SEC*30
end

   jesper
names {"Jesper Grib", "Jesper", "Grib"}
title "Jesper Grib"
descr "Jesper Grib is standing here."
extra {}
"Jesper has curly black hair and look a bit smarter than Jens, although
perhaps more naive. Perhaps he is the smaller brother."
M_HUMAN_THIEF_SWORD(1, SEX_MALE)
alignment -600
money 3 IRON_PIECE

special SFUN_TEAMWORK "jens/enver"

dilbegin crook2();
code
{
  heartbeat := PULSE_SEC * 60;

  exec("say My brain tells me, that this probably wont work.", self);
  pause;
  exec("emote listens to his brain.", self);
  pause;
  exec("say My brain tells me, that we could get in trouble for this!",
self);
  pause;
  exec("emote talks with his brain.", self);
  pause;
  exec("say Wierd, my brain doesn't say anything, wonder if it is empty?",
self);
  pause;

}
dilend

end





                            trader

names {"Ben", "skin trader","trader","shopkeeper"}
title "Ben the skin trader"
extra {} "He is a burly looking man with a scruffy beard and unkempt hair"
descr "Ben is waiting to buy some skins"
exp -500
M_SHOP_KEEPER(2, SEX_MALE, RACE_HUMAN)
money 20 IRON_PIECE

special SFUN_WHISTLE


end




   enver
names {"Enver Svansen", "Enver", "Svansen"}
title "Enver Svansen"
descr "Enver Svansen is standing here."
extra {}
"Enver is the slimy type. You get the creeps when he starts bullshitting."

M_HUMAN_THIEF_SWORD(2, SEX_MALE)
alignment -1000
money 3 IRON_PIECE

special SFUN_TEAMWORK "jesper/jens"

end


                            sam

/* For the Checken's Rest Inn */
names {"Sam", "bartender"}
title "Sam the Bartender"
descr "Sam watches you calmly, while he skillfully mixes a drink."
extra {} "He is a tired-looking bartender, who hates trouble in his bar."
exp -500
M_SHOP_KEEPER(2, SEX_MALE, RACE_HUMAN)
money 20 IRON_PIECE

special SFUN_WHISTLE

dilcopy shopkeeper@function(
{"tuborg@udgaard 40 40","beer_barrel@midgaard 2 10","beer_bottle@midgaard
10 30"},
{
"$1n says, 'I've got no such item!'",
"$1n says, '$3n, you haven't even got it!'",
"$1n says, 'I don't trade with things such as $2n'",
"$1n says, '$3n, you can't afford $2n'",
"$1n says, 'Here you are.'",
"$1n says, 'This is a nice $2n, thank you.'",
"$1n says, 'I don't have that many in my stock'",
"$1n says, 'I'm not serving now, come back later.'",
"$1n says, 'What do you want me to do with this?'",
"$1n says, 'I'm sorry $3n, but i can't afford it'"
}, {"6","6"}, "-1", 150, 80, 2*PLATINUM_MULT, "", "" );
end


                            hansen

names {"postman", "Hansen"}
title "Hansen"
descr "Hansen the Postman is standing here."
exp -500
M_SHOP_KEEPER(2, SEX_MALE, RACE_HUMAN)
money 10 IRON_PIECE
flags {UNIT_FL_NO_TELEPORT}
special SFUN_WHISTLE
dilcopy mail@mail();
end

                       eliza

names {"Bonzino"}
title "Bonzino"
descr "Bonzino the human is standing here."

extra {}
"She has big green ears, and long greasy hair."

M_SHOP_KEEPER(2, SEX_FEMALE, RACE_HUMAN)
money 3 COPPER_PIECE

dilbegin poly_names();
var
  c : string;
  i : integer;
code
{
  i := rnd(1, 5);

  if (i == 1)
  {
     c := "Elvira";
  }
  else if (i == 2)
  {
     c := "Darkmoon";
  }
  else if (i == 3)
  {
     c := "Sunbeam";
  }
  else if (i == 4)
  {
     c := "Patricia";
  }
  else
  {
     c := "Elisabeth";
  }

  addstring(self.names, c);
  substring(self.names, "bonzino");

  self.title := c;
  self.outside_descr := c+" the human is standing here.";

  quit;
}
dilend


special SFUN_ORACLE
special SFUN_RANDOM_ZONE_MOVE time PULSE_SEC * 120 bits SFB_RANTIME
end

                                rosanne

names {"Rosanne"}
title "Rosanne"
descr
"Rosanne is here."
extra {}
"She is a quite large, nice-looking lady."
exp -500

M_SHOP_KEEPER(3, SEX_FEMALE, RACE_HUMAN)
money 30 IRON_PIECE

special SFUN_WHISTLE

dilcopy shopkeeper@function(
{"bread@midgaard 20 30", "pastry@midgaard 10 15"},
{
"$1n says, 'I've got no such item!'",
"$1n says, '$3n, you haven't even got it!'",
"$1n says, 'I don't trade with things such as $2n'",
"$1n says, '$3n, you can't afford $2n'",
"$1n says, 'Here you are'",
"$1n says, 'This is a nice $2n, thank you.'",
"$1n says, 'I don't have that many in my stock'",
"$1n says, 'The shop is closed, come back later'",
"$1n says, 'What do you want me to do with this?'",
"$1n says, 'I'm sorry $3n, but i can't afford it'"
}, {"6","6"}, "19", 110, 10, 2*PLATINUM_MULT, "", "" );
end


                             harold

names {"Harold", "ironmonger"}
title "Harold"
descr
"Harold the Ironmonger stands behind the counter."
extra {}
"A big, but wierd-looking, fellow."
exp -500

M_SHOP_KEEPER(2, SEX_MALE, RACE_HUMAN)
money 50 COPPER_PIECE

special SFUN_WHISTLE

dilcopy shopkeeper@function(
{"torch@midgaard 5 8","lantern@midgaard 2 6","bag@midgaard 5 8",
"paper@midgaard 10 20","quill@midgaard 10 20",
"map@udgaard 2 5","dictionary@basis 2 5"},
{
"$1n says, 'I've got no such item!'",
"$1n says, '$3n, you haven't even got it!'",
"$1n says, 'I don't trade with things such as $2n'",
"$1n says, '$3n, you can't afford $2n'",
"$1n says, 'Here you are'",
"$1n says, 'This is a nice $2n, thankyou'",
"$1n says, 'I don't have that many in my stock'",
"$1n says, 'The shop is closed, come back later'",
"$1n says, 'What do you want me to do with this?'",
"$1n says, 'I'm sorry $3n, but i can't afford it'"
}, {"6","6"}, "1 15 16 17 18 21 11", 120, 80, 2*PLATINUM_MULT, "", "" );


end

                            bob

names {"Bob"}
title "Bob"
descr "Bob the Banker is here, sitting behind the counter."
extra {} "He has a very serious look on his face."

M_SHOP_KEEPER(4, SEX_MALE, RACE_HUMAN)
money 2 SILVER_PIECE
position POSITION_SITTING
default POSITION_SITTING
exp -500

special SFUN_WHISTLE
flags {UNIT_FL_NO_TELEPORT}

special SFUN_BANK
end


                              slade

names {"armourer", "Slade"}
title "Slade"
descr "Slade the Armourer is standing here."
extra {}
"An old and yet very strong armourer, he has made more armours in his
lifetime than you have eaten peas."

M_SHOP_KEEPER(5, SEX_MALE, RACE_HUMAN)
money 20 IRON_PIECE
position POSITION_SITTING
default POSITION_SITTING
exp -500

special SFUN_WHISTLE

dilcopy shopkeeper@function(
{"chain_coif@midgaard 4 20", "chain_sleeves@midgaard 4 20",
"chain_jerkin@midgaard 4 20", "chain_skirt@midgaard 4 20",
"scale_boots@midgaard 4 20", "swood_shield@midgaard 4 20"},
{
"$1n says, 'I've got no such item!'",
"$1n says, '$3n, you haven't even got it!'",
"$1n says, 'I don't trade with things such as $2n'",
"$1n says, '$3n, you can't afford $2n'",
"$1n says, 'Here you are.'",
"$1n says, 'This is a nice $2n, thank you.'",
"$1n says, 'I don't have that many in my stock'",
"$1n says, 'I'm not serving now, come back later.'",
"$1n says, 'What do you want me to do with this?'",
"$1n says, 'I'm sorry $3n, but i can't afford it'"
}, {"6","6"}, "9 25", 140, 30, 2*PLATINUM_MULT, "", "" );


end

                            arny

names {"weaponsmith", "Arny"}
title "Arny"
descr "Arny the Weaponsmith is standing here."
extra {} "He's a young weaponsmith who still has a lot to learn."
exp -500

M_SHOP_KEEPER(4, SEX_MALE, RACE_HUMAN)
money 15 IRON_PIECE
position POSITION_SITTING
default POSITION_SITTING

special SFUN_WHISTLE
dilcopy shopkeeper@function(
{"sword_1@udgaard 4 20", "dag0@midgaard 4 20",
"sword0@midgaard 4 20", "ham0@midgaard 4 20"},
{
"$1n says, 'I've got no such item!'",
"$1n says, '$3n, you haven't even got it!'",
"$1n says, 'I don't trade with things such as $2n'",
"$1n says, '$3n, you can't afford $2n'",
"$1n says, 'Here you are'",
"$1n says, 'This is a nice $2n, thank you.'",
"$1n says, 'I don't have that many in my stock'",
"$1n says, 'The shop is closed, come back later'",
"$1n says, 'What do you want me to do with this?'",
"$1n says, 'I'm sorry $3n, but i can't afford it'"
}, {"6","6"}, "5 6", 110, 60, 2*PLATINUM_MULT, "", "" );

end


/* ------------------------ The law! -------------------------- */

                          adolf

names {"captain", "Adolf"}
title "the Captain"
descr "Adolf the Captain of the guard is here."
extra {}
"He looks like a tall, muscular, athletic fighter. You notice that there is
an electric blue aura around his black eyes."

romflags {CHAR_PROTECTED, CHAR_DETECT_INVISIBLE}
M_HUMAN_WARRIOR_SWORD(70, SEX_MALE)
alignment 1000
exp 0
special SFUN_REWARD_GIVE
special SFUN_WHISTLE
special SFUN_RESCUE "guard"
special SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME
special SFUN_ACCUSE "udgaard/accuse_room"
special SFUN_GUARD_WAY "2accuse_room@cityguard/captain@$1n blocks your
way.@$1n prevents $3n from going south."
special SFUN_GUARD_DOOR "accuse_room@steel door@@$1n stops you.@$1n
prevents $3n from accessing the steel door."
special SFUN_GUARD_UNIT "@safe@@$1n stops you.@$1n prevents $3n from
accessing the safe."

dilcopy captain@midgaard("jail@udgaard");
end


                          tower_guard

names {"cityguard","guard"}
title "the Cityguard"
descr "A cityguard is here."
extra {}
"A big, strong, helpful, trustworthy guard.  He looks as though he's keeping
an eye on the townsfolk."

romflags {CHAR_PROTECTED}
M_HUMAN_WARRIOR_SWORD(60, SEX_MALE)
exp 0
alignment 400  /* Just above neutral */
money 3 IRON_PIECE

special SFUN_WHISTLE
special SFUN_RESCUE "guard/captain/mayor"
special SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME
dilcopy arrest_check@midgaard("accuse_room@udgaard");
end


                          patrol_guard

names {"cityguard","guard"}
title "the Cityguard"
descr "A cityguard is here."
extra {}
"A big, strong, helpful, trustworthy guard.  He looks as though he's keeping
an eye on the townsfolk."

romflags {CHAR_PROTECTED}
M_HUMAN_WARRIOR_SWORD(60, SEX_MALE)
exp 0
alignment 400  /* Just above neutral */
money 3 IRON_PIECE

special SFUN_WHISTLE
special SFUN_RESCUE "guard/captain/mayor"
special SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME
dilcopy arrest_check@midgaard("accuse_room@udgaard");
special SFUN_RANDOM_ZONE_MOVE time 60 bits SFB_RANTIME
end

                            sent_guard
/* This guard is supposed to guard various shopkeepers, i.e. Banker */

names {"cityguard","guard"}
title "the Cityguard"
descr "A cityguard is here."
extra {} "A fairly big, content looking cityguard."

romflags {CHAR_PROTECTED}
M_HUMAN_WARRIOR_POLE(62, SEX_MALE)
exp 0
alignment 400  /* Just above neutral */
money 7 IRON_PIECE

special SFUN_WHISTLE
special SFUN_RESCUE "guard/captain/mayor"
special SFUN_PROTECT_LAWFUL time PULSE_SEC*60 bits SFB_RANTIME
dilcopy arrest_check@midgaard("accuse_room@udgaard");
end

/* ----------------- the mayor and his escorts --------------- */


                    mayor

names {"thargarad","mayor"}
title "Thargarad the Mayor of Udgaard"
descr "Thargarad the Mayor of Udgaard walks about greeting people."
extra {}
"The Mayor is a large Dwarf who walks about the town with well
established ease.  He seems to know everyone, and greets them
cheerfully as he goes about his rounds.  However nice his exterior
appears, you can tell that he has a hardened edge beneath, and it
would be unwise to trifle with him.  The large axe in his belt bears
witness to this."

romflags {CHAR_PROTECTED}
flags {UNIT_FL_NO_TELEPORT}
M_DWARF_WARRIOR_AXE(120, SEX_MALE)
exp 0
alignment 650
money 6 GOLD_PIECE
special SFUN_WHISTLE
special SFUN_RESCUE "quenis/ariana/nestor/morgan"
special SFUN_TEAMWORK "morgan/quenis/ariana/nestor"


end

                       hgmage

names {"ariana","guard"}
title "Ariana the conjurer guard"
descr "Ariana the conjurer guard is escorting the Mayor on his rounds."
extra {}
"Ariana has been studying the mystical arts for some time now, and it
is quite an honor to be placed as escort to the mayor.  She has fair
blonde hair and deep blue eyes.  You think perhaps that you should
let both her and the mayor about their business."

romflags {CHAR_PROTECTED}
flags {UNIT_FL_NO_TELEPORT}
M_GNOME_MAGE_ACID(100, SEX_FEMALE, "cast acid ball")
exp 0
alignment 650
money 1 GOLD_PIECE
special SFUN_WHISTLE
special SFUN_RESCUE "thargarad/nestor/morgan/quenis"
special SFUN_TEAMWORK "thargarad/quenis/morgan/nestor"

end

                       hghealer

names {"quenis","guard"}
title "Quenis the healer guard"
descr "Quenis the healer guard is escorting the Mayor on his rounds."
extra {}
"Quenis is an accomplished healer whose task is to protect the mayor
from harm.  He has a gleam in his eyes, and there is something all
too knowing in his glance.  He is a tall elf, and loves the duties which
he must fulfill."

romflags {CHAR_PROTECTED}
flags {UNIT_FL_NO_TELEPORT}
M_ELF_CLERIC_HAMMER(100, SEX_MALE, "cast harm", "cast heal")
exp 0
alignment 650
money 2 GOLD_PIECE
special SFUN_WHISTLE
special SFUN_RESCUE "thargarad/nestor/morgan/ariana"
special SFUN_TEAMWORK "thargarad/morgan/ariana/nestor"
end

hgthief
names {"morgan", "thief guard", "guard", "thief"}
title "Morgan the thief guard"
descr "Morgan the thief guard is escorting the Mayor on his rounds."
extra {}
"Morgan is a master thief who has hired himself out in the honourable
duty of protecting Thargarad, the Mayor of Udgaard."
M_HALFLING_THIEF_SWORD(100, SEX_MALE)
romflags {CHAR_PROTECTED}
flags {UNIT_FL_NO_TELEPORT}
special SFUN_WHISTLE
special SFUN_RESCUE "thargarad/quenis/ariana/nestor"
special SFUN_TEAMWORK "thargarad/quenis/ariana/nestor"
end

hgfighter
names {"nestor", "fighter guard", "guard", "fighter"}
title "Nestor the fighter guard"
descr "Nestor the fighter guard is escorting the Mayor on his rounds."
extra {}
"Nestor is a master fighter who has hired himself out in the honourable
duty of protecting Thargarad, the Mayor of Udgaard."
M_HUMAN_WARRIOR_SWORD(100, SEX_MALE)
flags {UNIT_FL_NO_TELEPORT}
romflags {CHAR_PROTECTED}
special SFUN_WHISTLE
special SFUN_RESCUE "thargarad/quenis/ariana/morgan"
special SFUN_TEAMWORK "thargarad/quenis/ariana/morgan"
end


               bthief
names {"filthy young boy","young boy","thief", "boy"}
title "a filthy young boy"
descr "A filthy young boy dressed in rags is moving about in the shaddows."
extra {}
"The young lad looks to be in his early teens. His hands are as fast as
a whip, you had better check you have all your belongings."
M_HUMAN_THIEF_SWORD(4, SEX_MALE)
alignment -100
money 4 IRON_PIECE
end

               bthief1
names {"skinny lad","thief","lad","boy"}
title "a skinny lad"
descr "A skinny lad eyes your purse as he stands in the shadows."
extra {}
"The teen is dressed in little more then rags with a hollow empty look to
his face. It obvious that the only way this young lad can survive is to
help himself to others belongings"
M_HUMAN_THIEF_SWORD(3, SEX_MALE)
MSET_WEAPON(10,15,15,10,25,10)
alignment 0
money 4 IRON_PIECE
end

               gthief
names {"filthy young girl","young girl","thief", "girl"}
title "a filthy young girl"
descr "A young filthy girl is eagerly eyeing your belongings."
extra {}
"The young girl looks to be in her early teens. She is eagerly eyeing your
stuff, better watch out!"
M_HUMAN_THIEF_SWORD(5, SEX_FEMALE)
alignment -200
money 5 IRON_PIECE
end

               gthief1
names {"young girl","girl","thief"}
title "a young girl"
descr "A young girl eyes your possessions."
extra {}
"The young girl looks to be in her early teens. As you move bye her eyes
follow you, taking in evey last item of value that you may be carrying."
M_HUMAN_THIEF_CLUB(4, SEX_FEMALE) alignment -200
money 5 IRON_PIECE
end

               bwarrior
names {"young warrior","warrior","boy"}
title "a young warrior"
descr "A young warrior is here practicing his sword thrusts."
extra {}
"The young warrior looks to be in his early teens. He already ripples
with huge muscles from wielding heavy swords."
M_HUMAN_WARRIOR_SWORD(3, SEX_MALE)
alignment 100
money 3 IRON_PIECE
end

               bwarrior1
names {"young warrior","warrior","boy"}
title "a young warrior"
descr "A young warrior pracices his axe skills on nearby trees."
extra {}
"A young, warrior has huge arms, obviously from heaving that huge axe about."
M_HUMAN_WARRIOR_AXE(4, SEX_MALE)
alignment 300
money 4 IRON_PIECE
end

               gwarrior
names {"young girl","swordswoman", "girl"}
title "a young girl"
descr "A young girl is here practicing her sword skills."
extra {}
"The young warrior looks to be in her early teens. Her body is solid and
muscular, obviously from wielding heavy swords. "
M_HUMAN_WARRIOR_SWORD(5, SEX_FEMALE)
alignment 100
money 5 IRON_PIECE
end

               gwarrior1
names {"young girl","warrior", "girl"}
title "a young girl"
descr "A young girl is here charges a tree with her sword drawn."
extra {}
"The young warrior looks to be in her early teens, with dark hair and
muscular arms."
M_HUMAN_WARRIOR_SWORD(4, SEX_FEMALE)
alignment 100
money 3 IRON_PIECE
end

               bmage
names {"young conjurer","conjurer","mage","student","boy"}
title "a young conjurer"
descr "A young conjurer is here summoning up fireballs."
extra {}
"The young conjurer is throwing fireballs at imaginary foes."
M_HUMAN_MAGE_FIRE(3, SEX_MALE, "cast burn")
alignment 0
money 3 IRON_PIECE
end

               bmage1
names {"young conjurer","conjurer","mage", "man","boy"}
title "a young conjurer"
descr "A young conjurer is trying to move a large rock with his will."
extra {}
"The young conjurer is trying to move a HUGE rock with the 'word' and the
'will'."
M_HUMAN_MAGE_FIRE(4, SEX_MALE, "cast energy bolt")
alignment 200
money 3 IRON_PIECE
end

               fmage
names {"young conjurer","conjurer","mage", "woman","girl"}
title "a young conjurer"
descr "A young conjurer is practicing the will and the word."
extra {}
"The young conjuress is attempting to create a magic candle."
M_HUMAN_MAGE_FIRE(4, SEX_MALE, "cast energy bolt")
alignment 500
money 8 IRON_PIECE
end

               fmage1
names {"young conjurer","conjurer","mage", "woman","girl"}
title "a young conjurer"
descr "A young conjurer is trying to make herself invisible."
extra {}
"The conjurer is attempting to make herself invisible."
M_HUMAN_MAGE_FIRE(4, SEX_FEMALE, "cast burn")
alignment 200
money 3 IRON_PIECE
end

               bhealer
names {"young healer","healer","man","boy"}
title "a young healer"
descr "A young healer is here trying to learn how to cure wounds."
extra {}
"The young healer is trying to learn how to cure wounds."
M_HUMAN_CLERIC_HAMMER(3, SEX_MALE, "cast cause light", "cast cure light")
alignment 700
money 3 IRON_PIECE
end

               bhealer1
names {"young healer","healer", "man","boy"}
title "a young healer"
descr "A young healer is here trying to turn his skin to bark "
extra {}
"The young healer is trying to cast bark skin."
M_HUMAN_CLERIC_HAMMER(4, SEX_MALE,"cast cause light","cast cure light")
alignment 500
money 4 IRON_PIECE
end

               fhealer
names {"young healer","cleric","healer","girl"}
title "a young healer"
descr "A young healer is here trying to create a healing rain."
extra {}
"The young healer is trying to cast summer rain."
M_HUMAN_CLERIC_HAMMER(5, SEX_FEMALE, "cast cause light", "cast cure light")
alignment 600
money 3 IRON_PIECE
end

               fhealer1
names {"young healer","cleric","healer", "girl"}
title "a young healer"
descr "A young healer is sitting under a tree, contemplating life. "
extra {}
"The  young healer is sitting under a tree, contemplating life. "
M_HUMAN_CLERIC_HAMMER(4, SEX_FEMALE, "cast cause light", "cast cure light")
alignment 700
money 5 IRON_PIECE
end

/* --------------------- GUILD SHOPS MOBILES ------------------- */

/* --------------------- MAGES TAILOR ----------------- */
               winky
names {"Mr Winky","winky","tailor"}
title "Mr Winky"
descr "Mr Winky walks around here, taking care of the merchandise."
extra {}
"A small, round man, Mr Winky is the tailor of the Conjurers. It is said
that his clothes don't lose facon even after the heaviest spell fumbles."
M_SHOP_KEEPER(33,SEX_MALE,RACE_HUMAN)
flags {UNIT_FL_NO_TELEPORT}
money 10 COPPER_PIECE
alignment 850
height 165
weight 168
exp 0
dilcopy shopkeeper@function(
{"wide_hat@mageguild 1 10","wiz_staff@mageguild 1 10"
,"wiz_dagger@mageguild 1 10","signet_ring@mageguild 2 15"
,"scrollcase@mageguild 2 16","conjurer_robe@mageguild 1 16"
,"pointy_boots@mageguild 2 16"},
{ "&c+w$1n says, 'I am sorry, I am out of those, $3n.'&cw",
  "&c+w$1n says, 'Sell me what, $3n?'&cw",
  "&c+w$1n says, 'I have no use for this, sorry.'&cw",
  "&c+w$1n exclaims, 'Uhm, no credit, $3n!'&cw",
  "&c+w$1n says, 'This $2N is all yours, $3n.'&cw",
  "&c+w$1n says, 'Excellent, it's a deal, $3n.'&cw",
  "&c+w$1n sighs and says, 'I don't seem to have that many in my stock'&cw",
  "&c+w$1n asks, 'I'm having a quick lunch, can you drop by later?'&cw" },
{"13","12"},"2 3 4 5 8 9 10 11 12 23 24 25",100,30,2*PLATINUM_MULT,"",""
);
end

/* --------------------- THIEVES FENCE ---------------- */
 thief_fence
names {"Ratling","fence","person","man","thief"}
title "Ratling the fence"
descr "A person of apparent low moral fiber looks like he might be
fencing something."
extra {}
"A typical low-life from the poorer part of Udgaard, Ratling is small,
unshaven and smelly. His nervous eyes keep darting from shadow to shadow
and he regards you with even higher suspicion than you regard him. He
might be the right person to ask if you want to buy second-hand wares in
this village."
race RACE_HUMAN
level 30
alignment -250
exp 10
romflags {CHAR_WIMPY}
flags {UNIT_FL_NO_TELEPORT}
money 2 COPPER_PIECE
height 167
weight 140

dilcopy shopkeeper@function(
{"dirk@udgaard 10 15","lockpick@udgaard 10 20",
"facemask@udgaard 10 15","blk_hood_cloak@udgaard 5 15"},
{
"&c+w$1n shakes his head 'Ah no trade 'ose, $3n.'&cw",
"&c+w$1n scowls 'Don't try to cheat a honest peddler, $3n!'&cw",
"&c+w$1n shakes his head quickly 'Ah'm not dealin' in this, too hot.'&cw",
"&c+w$1n scowls 'Eez no gift-shop here $3n, pay or beat it.'&cw",
"&c+w$1n says 'Deal, $3n' as the goods change the owner.&cw",
"&c+w$1n peers nervously around as the goods change the owner.&cw",
"&c+w$1n scratches his head 'Ah'll surely have some of that later on,
$3n.'&cw",
"&c+w$1n frowns 'Not now, $3n, ah'm waitin' fer me contact..!'&cw"
 },{"1","24"}, "1 2 5 6 7 8 9 10 11 12 14 15 16 17 20 23 24 25",
100, 90, 2*PLATINUM_MULT,"", "");

end

/* --------------------- HEALER SELLER ---------------- */
 talismonger
names {"Roskva","talismonger","woman","shopkeeper","keeper"}
title "Roskva the Talismonger"
descr "Roskva the Talismonger is preparing some charm for needy adventurers."
extra {}
"Not in her first youth, Roskva looks like a good-natured woman with the
strong body and healthy complexion that can only come from spending a lot
of time outdoors."
M_SHOP_KEEPER(35,SEX_FEMALE,RACE_HUMAN)
flags {UNIT_FL_NO_TELEPORT}
money 3 IRON_PIECE
height 165
weight 146

dilcopy shopkeeper@function(
{"holywater@udgaard 5 20","prot_talisman@udgaard 5 20",
"holycharm@udgaard 5 15","heal_herbs@udgaard 5 10",
"heal_balm@udgaard 5 10","holybook@udgaard 5 20",
"aid_kit@udgaard 5 15"},
{
"&c+w$1n smiles 'I don't trade with those, $3n!'&cw",
"&c+w$1n smiles 'You don't have any such thing, $3n!'&cw",
"&c+w$1n smiles 'I don't buy such stuff, $3n!'&cw",
"&c+w$1n smiles 'I hate to tell you, but you lack money, $3n.'&cw",
"&c+w$1n smiles 'A great buy, $3n!'&cw",
"&c+w$1n smiles 'It's a deal, $3n!'&cw",
"&c+w$1n smiles 'I don't have any in stock right now, try later $3n!'&cw",
"&c+w$1n smiles 'I am working on more charms, try later, $3n!'&cw"
 },{"4","22"}, "1 2 3 4 8 10 12 23 24", 100, 70, 2*PLATINUM_MULT,"", "" );

dilbegin ask_keeper2();
code
{
on_activation(self.position==POSITION_FIGHTING,skip);

       :start:
wait(SFB_DONE,command("ask")and(target==self)and(argument));
if ("talisman" in argument)
{
exec("smile",self);
exec("say I've crafted those protective talismans for many adventurers, "+
"they will protect you from dangers of the road.",self);
goto start;
}
if ("charm" in argument)
{
exec("say Holy charms? Every pious believer should have one!",self);
goto start;
}
if ("book" in argument)
{
exec("say Oh, the holy writtings. No man of the church should be without one."
,self);
exec("nod",self);
goto start;
}
if (("water" in argument)or("vial" in argument))
{
exec("say The holy water can be used to give a blessing or to destroy the "+
"foul monstrosities of undead.",self);
exec("say Just sprinkle the person in question... but only those "+
"of the faith will be able to make it work properly.",self);
goto start;
}
if (("herbs" in argument)or("bunch" in argument))
{
exec("smile",self);
exec("say Those herbs have very weak healing powers and can aid you if "+
"you eat them.",self);
goto start;
}
if (("balm" in argument)or("jug" in argument))
{
exec("say This balm is my own recipe - it can save a man dying of his "+
"wounds!",self);
exec("say If you are skilled in the arts of first aid, simply hold the jar "+
"before treating the patient.",self);
exec("strut",self);
goto start;
}
if (("kit" in argument)or("aid" in argument))
{
exec("smile ",self);
exec("say A first aid kit, a must for any good healer!",self);
goto start;
}
exec("say Uhm, are you sure you saw this in my shop?",self);
goto start;
}
dilend

end

/* ---------------------- OUTDOORS STUFF SELLER ------------ */

               thorbjorn
names {"Thorbjorn","shopkeeper","keeper","hunter"}
title "Thorbjorn"
descr "Thorbjorn waits here, watching you suspiciously."
extra {}
"His rugged hands and stout build witness his past as a hunter. He knows
the outdoors better than anyone else."
M_SHOP_KEEPER(35,SEX_MALE,RACE_HUMAN)
flags {UNIT_FL_NO_TELEPORT}
money 3 IRON_PIECE
height 180
weight 176

dilcopy shopkeeper@function(
{"small_tent@udgaard 10 15","large_tent@udgaard 5 15",
"rope_grapnel@udgaard 10 20","blanket@udgaard 5 20",
"backpack@udgaard 10 20"},
{
"&c+w$1n shakes his head 'I don't sell that, $3n.'&cw",
"&c+w$1n frowns 'Sell me what, $3n?'&cw",
"&c+w$1n shakes his head 'I don't buy that, $3n.'&cw",
"&c+w$1n shakes his head 'Nothing is for free, $3n.'&cw",
"&c+w$1n nods 'A great buy, it's gonna last you ages, $3n.'&cw",
"&c+w$1n says 'It's a deal, $3n.'&cw",
"&c+w$1n says 'I am out of this, but should be getting supplies soon,
$3n.'&cw",
"&c+w$1n says 'It's my time off, $3n, try again later.'&cw"
 },{"1","24"}, "1 5 6 7 8 12 14 15 22 25", 100, 50,2*PLATINUM_MULT,"","" );

dilbegin ask_keeper1();
code
{
on_activation(self.position==POSITION_FIGHTING,skip);

       :start:
wait(SFB_DONE,command("ask")and(target==self)and(argument));
if ("tent" in argument)
{
exec("say Aaah... the tents are some of the best... You can pinch them "+
"virtually everywhere for a bit of privacy or shelter from the elements."
,self);
exec("say The small tent can house only a few people, buy the large "+
"one for added space.",self); goto start;
}
if ("backpack" in argument)
{
exec("say An excellent backpack, sturdy and weatherproof.",self);
goto start;
}
if ("blanket" in argument)
{
exec("say A warm blanket, the best friend out in the cold wilderness.",self);
goto start;
}
if (("grapnel" in argument)or("rope" in argument))
{
exec("say Ah, a length of rope with a grapnel, you never know when you "+
"need to climb something!",self);
goto start;
}
else
{
exec("say Uhm... I don't think I have this in my stock...",self);
exec("scratch",self);
goto start;
}
goto start;
}
dilend

end

/* ---------------------- TOBACCO SELLER ------------------- */
 tobacco_seller
names {"Mr Catherfield","catherfield","seller","tobacco seller","man"}
title "Mr Catherfield"
descr "A small, wizened man regards you suspiciously from above his glasses."
extra {}
"A small, elderly man, Mr Catherfield has been selling tobacco all his
life, boy and man. He regards you suspiciously from above his glasses,
apparently he doesn't like your kind in here."
M_SHOP_KEEPER(35,SEX_MALE,RACE_HUMAN)
flags {UNIT_FL_NO_TELEPORT}
money 5 COPPER_PIECE
height 164
weight 156

dilcopy shopkeeper@function(
{"carved_pipe@udgaard 5 15","large_pipe@udgaard 10 20",
"small_pipe@udgaard 10 20","tobacco_aroma@udgaard 15 30",
"tobacco_cheap@udgaard 15 30","long_cigar@udgaard 10 30",
"slick_cigar@udgaard 10 30","fat_cigar@udgaard 20 40",
"cheap_cigar@udgaard 20 40"},
{
"&c+w$1n sighs 'I am most terribly sorry, I don't trade those, $3n.'&cw",
"&c+w$1n says 'Trying to sell me something you don't have, $3n?'&cw",
"&c+w$1n shakes his head 'I only sell tobacco, $3n.'&cw",
"&c+w$1n rolls his eyes 'I only sell my wares to people who can afford it,
$3n.'&cw",
"&c+w$1n says 'A $2N for you, $3n. Top quality.'&cw",
"&c+w$1n says 'Deal, $3n.'&cw",
"&c+w$1n sighs 'I am most terribly sorry, we don't have as much for the
moment, $3n.'&cw",
"&c+w$1n says 'My pardons, I am on my break, could you care to step in
later?'&cw"
 },{"5","23"}, "1", 100, 50,1*PLATINUM_MULT,"", "");

dilbegin ask_keeper3();
var
s : string;
code
{
on_activation(self.position==POSITION_FIGHTING,skip);

       :start:
wait(SFB_DONE,command("ask")and(target==self)and(argument));
if ((activator.sex==SEX_MALE)or(activator.sex==SEX_NEUTRAL)) s:="sir";
if (activator.sex==SEX_FEMALE) s:="madam";
if ("pipe" in argument)
{
exec("smile",self);
exec("say Aaah, my pipes are of the best quality, guaranteeing hours of "+
"smoking pleasure, "+s+".",self);
goto start;
}
if(("pouch"in argument)or("tobacco" in argument))
{
exec("emote nods slightly.",self);
exec("say Only the finest of the gnomish tobacco sorts are used for my "+
"blends, "+s+".",self);
goto start;
}
if ("cigar" in argument)
{
exec("say Manufactured of the best tobacco leaves avaliable, I have "+
"cigars in every price cathegory.",self);
exec("whisper "+activator.name+" ...altough I might suggest the fine "+
"cigars myself, "+s+".",self);
exec("say The enjoyment is unsurpassed.",self);
exec("emote smiles slightly.",self);
goto start;
}
exec("say Uhm, are you sure, you saw it in my store, "+s+"?",self);goto start;
}
dilend

end

%reset

load trader into trading_post max 1

load ud_clerk into ud_storage@udgaard max 1

load bwarrior into fighters_way1 local 1
{
equip fighter_bands position WEAR_ARMS
equip fighter_sword position WEAR_WIELD
equip wd_pants position WEAR_LEGS
}
load bwarrior1 into fighters_way2 local 1
{
equip hand_axe position WEAR_WIELD
equip midgaard/lth_pants position WEAR_LEGS
}
load bwarrior into fighters_way2 local 1
{
equip fighter_sword position WEAR_WIELD
equip fighter_leg position WEAR_LEGS
}
load bwarrior1 into fighters_way3 local 1
{
equip hand_axe position WEAR_WIELD
equip wood_buckler position WEAR_SHIELD
equip wd_pants position WEAR_LEGS
}
load gwarrior into fighters_way1 local 1
{
equip fighter_sword position WEAR_WIELD
equip fighter_helmet position WEAR_HEAD
equip wd_plate position WEAR_BODY
equip wd_pants position WEAR_LEGS
}
load gwarrior into fighters_way1 local 1
{
equip fighter_sword position WEAR_WIELD
equip fighter_helmet position WEAR_HEAD
equip wd_plate position WEAR_BODY
equip wd_pants position WEAR_LEGS
}
load gwarrior1 into fighters_way2 local 1
{
equip fighter_bands position WEAR_ARMS
equip rapier position WEAR_WIELD
equip wd_plate position WEAR_BODY
}
load gwarrior into fighters_way3 local 1
{
equip go_boots position WEAR_FEET
equip fighter_sword position WEAR_WIELD
equip wd_pants position WEAR_LEGS
}
load bmage1 into magic_way1 local 1
{
equip short_staff position WEAR_WIELD
equip go_boots position WEAR_FEET
equip mage_robes position WEAR_BODY
}
load bmage into magic_way2 local 1
{
equip short_staff position WEAR_WIELD
equip mage_leggings position WEAR_LEGS
equip wood_buckler position WEAR_SHIELD
}
load bmage1 into magic_way3 local 1
{
equip short_staff position WEAR_WIELD
equip mage_cloak position WEAR_ABOUT
}
load fmage into magic_way1 local 1
{
equip short_staff position WEAR_WIELD
equip mage_robes position WEAR_BODY
equip go_boots position WEAR_FEET
}
load fmage1 into magic_way2 local 1
{
equip mage_staff position WEAR_WIELD
equip mage_cloak position WEAR_ABOUT
}
load fmage into magic_way3 local 1
{
equip short_staff position WEAR_WIELD
equip mage_helmet position WEAR_HEAD
}
load fhealer into healers_way1 local 1
{
equip healers_vest position WEAR_BODY
equip hand_mace position WEAR_WIELD
}
load fhealer into healers_way2 local 1
{
equip healer_leggings position WEAR_LEGS
equip healer_mace position WEAR_WIELD
}
load fhealer into healers_way3 local 1
{
equip hand_mace position WEAR_WIELD
equip healer_cloak position WEAR_ABOUT
equip wood_buckler position WEAR_SHIELD
}
load fhealer1 into healers_way1 local 1
{
equip hand_mace position WEAR_WIELD
equip healers_vest position WEAR_BODY
}
load bhealer1 into healers_way2 local 1
{
equip holybook position WEAR_HOLD
equip short_staff position WEAR_WIELD
equip go_boots position WEAR_FEET
}
load bhealer into healers_way3 local 1
{
equip hand_mace position WEAR_WIELD
equip healer_leggings position WEAR_LEGS
}
load bthief1 into dark_all1 local 1
{
equip fistiron position WEAR_WIELD
equip thief_gloves position WEAR_HANDS
}

load bthief into dark_all2 local 1
{
equip thief_dagger position WEAR_WIELD
equip thief_leggings position WEAR_LEGS
}

load bthief1 into dark_all3 local 1
{
equip fistiron position WEAR_WIELD
equip thief_pouch position WEAR_CHEST
equip go_boots position WEAR_FEET
}

load gthief into dark_all1 local 1
{
equip thief_dagger position WEAR_WIELD
equip thief_pouch position WEAR_CHEST
}

load gthief1 into dark_all2 local 1
{
equip cudgel position WEAR_WIELD
equip thief_gloves position WEAR_HANDS
}

load gthief1 into dark_all3 local 1
{
equip cudgel position WEAR_WIELD
equip thief_shirt position WEAR_BODY
equip thief_leggings position WEAR_LEGS
}


/* ----- BASIS STUFF ----- */

door accuse_room SOUTH {EX_OPEN_CLOSE, EX_CLOSED, EX_LOCKED}
door jail        NORTH {EX_OPEN_CLOSE, EX_CLOSED, EX_LOCKED}

load fountain into square local 1

load bull_board into inn local 1

load odin_statue into temple local 1

load odin_statue into midgaard/cth_nave local 1

/* ----- SHOP KEEPERS ----- */

load sam into inn max 1
{
   equip midgaard/sword0 position WEAR_WIELD
}

load hansen into postoffice max 1

load rosanne into food_store max 1
{
   equip midgaard/sword0 position WEAR_WIELD
}

load harold into ironmonger max 1
{
   equip midgaard/sword0 position WEAR_WIELD
}

load bob into bank max 1
load comp_board into bank zonemax 1

load slade into armourer max 1
{
   equip midgaard/sword0 position WEAR_WIELD
}


load arny into weaponsmith max 1
{
   equip midgaard/sword0 position WEAR_WIELD
}

/* ------------------------ THE LAW ----------------------------- */

load midgaard/fido_dog into dump zonemax 1
load midgaard/janitor2 into dump zonemax 1

load safe into accuse_room local 1

load reward_board into accuse_room local 1

load midgaard/bread into jail local 1
load midgaard/water_cup into jail local 1


#define SLTH_ARMOUR \
  equip midgaard/slth_sleeves position WEAR_ARMS \
  equip midgaard/slth_jerkin position WEAR_BODY  \
  equip midgaard/slth_pants position WEAR_LEGS

load eliza into haon_dor/rn_6014 max 1
load adolf into accuse_room max 1 complete
{
  load jail_key
  load safe_key

  load midgaard/bread
  load midgaard/water_cup

  equip midgaard/iron_bracers position WEAR_ARMS
  equip midgaard/iron_plate position WEAR_BODY
  equip midgaard/iron_leggings position WEAR_LEGS
  equip midgaard/iron_boots position WEAR_FEET
  equip midgaard/iron_gloves position WEAR_HANDS
  equip midgaard/iron_helmet position WEAR_HEAD
  equip midgaard/sword2 position WEAR_WIELD

  follow sent_guard local 3
  {
     SLTH_ARMOUR
     equip midgaard/spear0 position WEAR_WIELD
  }
  follow sent_guard local 3
  {
     SLTH_ARMOUR
     equip midgaard/spear0 position WEAR_WIELD
  }
  follow sent_guard local 3
  {
     SLTH_ARMOUR
     equip midgaard/spear0 position WEAR_WIELD
  }
}

load sent_guard into bank local 1 complete
{
  SLTH_ARMOUR
  equip midgaard/spear0 position WEAR_WIELD
}

load patrol_guard into square zonemax 1 complete
{
  SLTH_ARMOUR
  equip midgaard/lsword0 position WEAR_WIELD
}

load tower_guard into up_tower1 max 3
{
  SLTH_ARMOUR
  equip midgaard/lsword0 position WEAR_WIELD
}
load tower_guard into up_tower2 max 3
{
  SLTH_ARMOUR
  equip midgaard/lsword0 position WEAR_WIELD
}
load tower_guard into up_tower3 max 3
{
  SLTH_ARMOUR
  equip midgaard/lsword0 position WEAR_WIELD
}


load jens into market_sq@midgaard max 1
{
  equip shirt position WEAR_BODY

  follow jesper max 1
  {
     equip shirt position WEAR_BODY
  }

  follow enver max 1
  {
     equip shirt position WEAR_BODY
  }
}
/* ------------ Loads for Mayor and escorts --------------- */
load mayor into mayor_house max 1
{
  equip mayor_boots position WEAR_FEET
  equip mayor_legs position WEAR_LEGS
  equip mayor_arms position WEAR_ARMS
  equip mayor_hands position WEAR_HANDS
  equip mayor_plate position WEAR_BODY
  equip mayor_head position WEAR_HEAD
  equip mayor_axe position WEAR_WIELD
  equip mayor_cloak position WEAR_ABOUT

  follow hgfighter max 1
  {
    equip war_boots position WEAR_FEET
    equip war_legs position WEAR_LEGS
    equip war_sle position WEAR_ARMS
    equip war_plate position WEAR_BODY
    equip war_helm position WEAR_HEAD
    equip sirius position WEAR_WIELD  
    equip mayor_cloak position WEAR_ABOUT
  }
  follow hgthief max 1
  {
    equip castor position WEAR_WIELD
    equip pollux position WEAR_HOLD
    equip sicoif position WEAR_HEAD
    equip chshirt position WEAR_BODY
    equip dgloves position WEAR_HANDS
    equip mayor_cloak position WEAR_ABOUT
  }
  follow hgmage max 1
  {
    equip mage_ring position WEAR_FINGER_L
    equip sagit position WEAR_WIELD
    equip algol position WEAR_WAIST
    equip mage_robe position WEAR_BODY
    equip mayor_cloak position WEAR_ABOUT
  }
  follow hghealer max 1
  {
    equip healer_arms position WEAR_ARMS
    equip healer_pants position WEAR_LEGS
    equip healer_tunic position WEAR_BODY
    equip polaris position WEAR_WIELD
    equip pleiades position WEAR_HEAD
    equip mayor_cloak position WEAR_ABOUT
  }
}  


/* ----------------- GUILD SHOP RESETS ------------------------ */
load winky into mageshop max 1
{
equip midgaard/robe1 WEAR_ABOUT
equip midgaard/lth_boots WEAR_FEET
}

load thief_fence into side_alley max 1
{
equip blk_hood_cloak  WEAR_ABOUT
equip dirk   WEAR_WIELD
equip thief_gloves  WEAR_HANDS
equip thief_shirt  WEAR_BODY
equip midgaard/lth_pants WEAR_LEGS
}

load talismonger into heal_shop max 1
{
equip healer_cloak   WEAR_ABOUT
equip prot_talisman  WEAR_NECK_1
}

load tobacco_seller into tobacco_shop max 1
{
equip glasses   WEAR_HEAD
}

load thorbjorn into field_shop max 1
{
equip midgaard/lth_pants  WEAR_LEGS
}

load kurt into records max 1

%end