pdirt/data/
pdirt/data/HELP/
pdirt/data/HELP/0/
pdirt/data/HELP/F/
pdirt/data/HELP/G/
pdirt/data/HELP/H/
pdirt/data/HELP/J/
pdirt/data/HELP/K/
pdirt/data/HELP/O/
pdirt/data/HELP/Q/
pdirt/data/HELP/R/
pdirt/data/HELP/U/
pdirt/data/HELP/V/
pdirt/data/HELP/Y/
pdirt/data/HELP/Z/
pdirt/data/MESSAGES/
pdirt/data/POWERINFO/
pdirt/data/WIZ_ZONES/
pdirt/drv/
pdirt/drv/bin/
pdirt/drv/compiler/converter/
pdirt/drv/compiler/libs/
pdirt/drv/compiler/scripts/
pdirt/drv/include/AberChat/
pdirt/drv/include/InterMud/
pdirt/drv/include/machine/
pdirt/drv/src/InterMud/
pdirt/drv/src/Players/
pdirt/drv/utils/UAFPort/
pdirt/drv/utils/dnsresolv/
pdirt/drv/utils/gdbm/
/************************************************************************
*	File:		oaktree.zone					*
*	Author:		Judy						*
*	Code by:	Ithor						*
*	Notes:		Code for this zone may be incomplete in some	*
*			dyrt distributions.				*
************************************************************************/


#include "undef.h"
#include "exits.h"
#include "special.h"



	
Zone		= oaktree
Author		= "Judy"
Quest		= Bust

EndZone		= oaktree


Mobile        = Sapling
Name	= "Sapling"
Location	= Oaktree35@oaktree
Strength    = 100
Armor       = 0
Damage      = 10
Aggression  = 0
Speed       = 0
Desc	 = "
  There is a small Sapling standing majestically here absorbing bolts of 
lightning and casting a few of its own back at the sky."
Trap		= all
@
   switch(event) {
   case E_ONKILLED:
     send_msg(ploc(param_s.plx), 0, LVL_MIN, LVL_MAX, NOBODY, NOBODY,
		   "The Sapling bursts into flames and crumbles to ashes.\n"
		   "A silvery object falls to the ground.\n");
     create(OBJ_OAKTREE_SPIKE);
     setoloc(OBJ_OAKTREE_SPIKE, ploc(param_s.plx), IN_ROOM);
     break;
   default: break;
   }
@
EndTrap
EndMobile         = Sapling

Mobile        = Ent
Name	= "Ent"
PFlags		= NoSummon
Location	= Oaktree34@oaktree
Strength    = 180
Armor       = 0
Damage      = 15
Aggression  = 0
Speed       = 0
Desc	 = "There is a large Tree Ent blocking the entrance."
Trap		= all
@
   switch (event) {
   case E_ONGIVE:
     if (onum(param_s.ob) == OBJ_LIMBO_WATER)
     { sendf(ploc(param_s.plx), "The Ent says 'Ahhh! I needed that.  Thanks you.  A "
	    "word of advice to you:'\n             'Beware, to touch the silver "
	    "spriti is death.'\n");
      setploc(param_s.pl, LOC_DEAD_DEAD);
      strcpy(pname(param_s.pl), "");
      eat(param_s.ob);
      dumpstuff(param_s.pl, ploc(param_s.plx));
      sendf(ploc(param_s.plx), "The Ent makes like a tree and leaves east.\n");
      param_s.ret = -1;
    } else param_s.ret = 1;
    break;
  case E_ONMOVE:
     if (param_s.ob == EX_EAST)
     {  bprintf("The Ent pushes its branches in your way, preventing you from moving east.\n");
        param_s.ret = -1;
     }
     break;
  default:
    break;
  }
@
EndTrap
EndMobile         = Ent

Mobile        = Dryad
Name	= "Dryad"
SFlags		= Female
Location	= Oaktree26@oaktree
Strength    = 70
Armor       = 0
Damage      = 10
Aggression  = 0
Speed       = 0
Desc	 = "A very pretty Dryad is sitting on the rock sunning herself."
Trap		= all
@
   switch(event) {
   case E_ONGIVE:
     if (onum(param_s.ob) == OBJ_BLIZZARD_GARLAND)
     {  sendf(ploc(param_s.plx), "The Dryad says 'Thank you!  It's very lovely.\n");
        setobjstate(OBJ_OAKTREE_PORTAL1, 0);
        strcpy(pname(param_s.pl), "");
        setploc(param_s.pl, LOC_DEAD_DEAD);
        dumpstuff(param_s.pl, ploc(param_s.pl));
        destroy(param_s.ob);
        sendf(ploc(param_s.plx),"The Dryad opens a portal in her tree and goes inside\n");
        param_s.ret = -1;
     } param_s.ret = 1;
     break;
   default:
     break;
   }
@
EndTrap
EndMobile         = Dryad

Mobile        = Beetle
Name	= "Beetle"
Location	= Oaktree24@oaktree
Strength    = 50
Armor       = 0
Damage      = 10
Aggression  = 30
Speed       = 5
Desc	 = "A boring Beetle is crawling about here muttering to itself."
EndMobile         = Beetle

Mobile		= viola
Location	= entrance@oaktree
PFlags		= NoSummon, NoSteal
SFlags		= Female
Speed           = 0
Strength	= 200
Damage		= 13
Aggression      = 0
Armor	        = 0
Desc		= "
A beautiful, ghostly little girl stands here with a disdainful air."
Trap		= all
@
   switch(event) {
   case E_ONGIVE:
      if (param_s.ob == OBJ_OAKTREE_FAN) {
         bprintf("Viola kisses you%s.\n", psex(mynum) == 0 ? "" : " on the cheek");
         bprintf("Viola says 'Thank you, %s.  Won't you please come in?'\n",
            psex(mynum) == 0 ? "kind sir" : "madame");
         setpscore(mynum, pscore(mynum) + 50);
         setoloc(param_s.ob, param_s.pl, CARRIED_BY);
         param_s.ret = -1;
     } 
     break;   
   case E_ONMOVE:
     if (param_s.ob == EX_EAST)
     {  if (ploc (param_s.pl) == ploc (param_s.plx) &&
	    carries_obj_type (param_s.pl, OBJ_OAKTREE_FAN) == -1)
        {
	    bprintf ("\001pViola\003 says 'How dare you come to our land!  "
		   "Leave at once!'\n");
	    param_s.ret = -1;
        }
     }     
     break;
   default:
     break;
   }
@
EndTrap
EndMobile             = viola

Mobile		= cosimo
Location	= olive3@oaktree
PFlags		= NoSummon
MFlags		= NoGrab, GrabHostile, NoSteal
Strength	= 80
Damage		= 20
Aggression      = 0
Armor		= 0
Speed           = 0
Desc		= "
A small boy in gaiters and tricorn brandishes his rapier at you."
EndMobile             = cosimo

Mobile		= vixen
Name	= "The Vixen"
Location	= den@oaktree
PFlags		= NoSummon
SFlags		= Female
Speed           = 0
Strength	= 80
Damage		= 10
Aggression      = 50
Armor		= 0
Desc		= "
A sly and curvaceous vixen snarls at you from the corner."
EndMobile             = vixen

Mobile		= ottimo
Location	= limbo@limbo
Armor		 = 0
Strength      	= 40
Damage		= 10
Aggression      = 0
PFlags		= NoSummon
Desc		= "
A small dachshund is here, panting hard and sniffing about for a fox."
Trap		= all
@
   if (event == E_ONMISC && param_s.misc == VERB_PAT)
   {  bprintf("Ottimo rubs up against your leg and licks your hand.\n");
      param_s.ret = -1;
   }
@
EndTrap
EndMobile             = ottimo



/* Replaced by limbo water */
#if 0
Object        = water
Location	= IN_ROOM:Holes@sea
BaseValue      = 0
Desc0     = ""
EndObject         = water
#endif

Object        = spike
OFlags		= Destroyed, GetFlips
Location	= IN_ROOM:Oaktree35@oaktree
BaseValue      = 360
Size        = 10
Weight      = 10
State       = 1
MaxState    = 1
Desc0     = "A long silver spike lays here giving off blue sparks."
Desc1     = "There is a silvery object laying in the ashes of the sapling."
Trap		= all
@
   switch(event) {
   case E_ONDROP:
     if (param_s.misc == D_INPIT)
     {  int i;
        if (alive(i = max_players + MOB_OAKTREE_SAPLING) == -1 &&
	  pscore(i) == param_s.plx)
	{
          set_quest(Q_SPIKE,param_s.plx);
	}
     }
     break;
   case E_ONGET:
    if (!iswornby(OBJ_OAKTREE_GLOVE, param_s.plx) && param_s.misc == BEFORE_GET)
    {
      crapup("    As you touch the spike, you feel a powerful spirit take "
	     "control of\n    your body very briefly before your life winks "
	     "out like a light...",SAVE_ME);
      param_s.ret = 0;
    }
    break;
   default: break;
   }
@
EndTrap
EndObject         = Spike

Object        = portal1
Name	= "Portal"
OFlags		= NoGet
Location	= IN_ROOM:Oaktree32@oaktree
BaseValue      = 0
Linked      = portal2
State       = 1
MaxState    = 1
Desc0     = "A strange portal leads south."
Desc1     = ""
EndObject         = portal1

Object        = portal2
Name	= "Portal"
OFlags		= NoGet
Location	= IN_ROOM:Oaktree26@oaktree
BaseValue      = 0
Linked      = portal1
State       = 1
MaxState    = 1
Desc0     = "A strange portal has been opened in a tree here."
Desc1     = ""
EndObject         = portal2

Object        = berries
Altname	= "food"
OFlags		= Food
Location	= IN_ROOM:Oaktree32@oaktree
BaseValue      = 5
Size        = 1
Weight      = 1
Desc0     = "Some edible looking berries are here."
EndObject         = berries

Object        = stick
Altname	= "branch"
OFlags		= Lightable, Weapon
Location	= IN_ROOM:Oaktree30@oaktree
BaseValue      = 80
Damage      = 8
Size        = 10
Weight      = 5
Desc0     = "
A smooth sturdy looking hickory stick wound with gold wire is here."
EndObject         = stick

Object        = goldpot
Altname	= "pot"
Location	= IN_CONTAINER:depression@oaktree
BaseValue      = 80
Size        = 5
Weight      = 5
Desc0     = "There is a small pot of gold here."
EndObject         = goldpot

Object        = quartz
Location	= IN_CONTAINER:depression@oaktree
BaseValue      = 20
Size        = 1
Weight      = 1
Desc0     = "A small piece of quartz has been left here."
Examine     = "
It looks as though something with sharp teeth has been chewing on it."
EndObject         = quartz

Object        = skeleton
Altname	= "key"
OFlags		= Key
Location	= IN_CONTAINER:depression@oaktree
BaseValue      = 20
Size        = 1
Weight      = 1
Desc0     = "A large skeleton key is lying here."
EndObject         = skeleton

Object        = rock
OFlags		= NoGet
Location	= IN_ROOM:Oaktree26@oaktree
BaseValue      = 0
Size        = 0
Weight      = 0
Linked      = depression
State       = 1
MaxState    = 1
Desc0     = "A huge rock stands beside a small depression."
Desc1     = "A huge rock is here soaking up the sun."
Trap		= all
@
   char s[100];
   switch (event) {
   case E_ONPUSH:
        if (state(OBJ_OAKTREE_ROCK) == 1)
	{
	  sprintf(s,"moves the rock, uncovering a depression.");
	  bprintf("You uncover a depression.\n");
	  setobjstate(OBJ_OAKTREE_ROCK, 0);
	}
      else
	{
	  sprintf(s,"pushes the rock back into the depression.\n");
	  bprintf("You push the rock back into the depression.\n");
	  setobjstate(OBJ_OAKTREE_ROCK, 1);
	}
      send_msg(ploc(param_s.plx), 0, pvis(param_s.plx), LVL_MAX, param_s.plx, NOBODY,
	       "%s %s\n", pname(param_s.plx), s);
      send_msg(ploc(param_s.plx), 0, LVL_MIN, pvis(param_s.plx), param_s.plx, NOBODY,
	       "Someone %s\n", s);
      param_s.ret = -1;
      break;
  default:
      break;
  }
@
EndTrap
EndObject         = rock

Object        = depression
OFlags		= NoGet, Container
Location	= IN_ROOM:Oaktree26@oaktree
BaseValue      = 0
Size        = 0
Weight      = 0
Linked      = rock
State       = 1
MaxState    = 1
Desc0     = "There is a small depression here."
Desc1     = ""
EndObject         = depression


Object        = glove
OFlags		= Armor, WearOnHands, ExcludeWear
Location	= IN_CONTAINER:safe@oaktree
BaseValue      = 60
Armor       = 1
Size        = 5
Weight      = 2
Desc0     = "A heavy looking iron glove is lying here."
Examine     = "The glove is well insulated on the inside."
EndObject         = glove

Object        = safe
OFlags		= NoGet, Destroyed, Openable, Lockable, Container
Location	= IN_ROOM:Oaktree37@oaktree
BaseValue      = 0
Size        = 0
Weight      = 0
State       = 2
MaxState    = 2
Desc0     = "There is a wall safe here."
Desc1     = "There is a wall safe here."
Desc2     = "There is a wall safe here."
EndObject         = safe

Object        = picture
Name	= "picture"
Altname	= "painting"
OFlags		= GetFlips
Location	= IN_ROOM:Oaktree37@oaktree
BaseValue      = 50
Size        = 20
Weight      = 5
State       = 1
MaxState    = 1
Desc0     = "
A rather ugly looking picture of an old grue has been discarded here."
Desc1     = "A picture of Grandpa Grue covers one wall."
Trap		= all
@
   switch (event) {
   case E_ONGET:
    if (state(OBJ_OAKTREE_PICTURE) == 1 && param_s.misc == BEFORE_GET)
    {
      bprintf("You uncover a wall safe behind the picture.\n");
      send_msg(LOC_OAKTREE_OAKTREE37, 0, pvis(param_s.plx), LVL_MAX, param_s.plx, NOBODY,
	       "%s uncovers a wall safe behind the picture.\n",pname(param_s.plx));
      send_msg(LOC_OAKTREE_OAKTREE37, 0, LVL_MIN, pvis(param_s.plx), param_s.plx, NOBODY,
	       "Someone uncovers a wall safe behind the picture.\n");
      create(OBJ_OAKTREE_SAFE);
      setoloc(OBJ_OAKTREE_SAFE, LOC_OAKTREE_OAKTREE37, IN_ROOM);
    }
    break;
   default: break;
   }
@
EndTrap
EndObject         = picture

Object        = rotten_door1
Name	= "door"
OFlags		= NoGet, Pushable
Location	= IN_ROOM:Oaktree36@oaktree
BaseValue      = 0
Size        = 0
Weight      = 0
Linked      = rotten_door2
State       = 1
MaxState    = 1
Desc0     = "The remains of a shattered wooden door lie here."
Desc1     = "A wooden door bars any passage south."
Examine     = "The door appears to be stuck."
EndObject         = rotten_door1

Object        = rotten_door2
Name	= "door"
OFlags		= NoGet, Pushable
Location	= IN_ROOM:Oaktree37@oaktree
BaseValue      = 0
Size        = 0
Weight      = 0
Linked      = rotten_door1
State       = 1
MaxState    = 1
Desc0     = "The remains of a shattered wooden door lie here."
Desc1     = "A wooden door bars any passage north."
Examine     = "The door appears to be stuck."
EndObject         = rotten_door2

Object        = B_roots
Name	= "roots"
Altname	= "root"
OFlags		= NoGet, Lightable
Location	= IN_ROOM:Oaktree36@oaktree
BaseValue      = 0
Size        = 0
Weight      = 0
Linked      = roots
State       = 1
MaxState    = 1
Desc0     = "Some roots have been burned away allowing passage east."
Desc1     = "Long, thick roots cover the entire eastern wall here."
Examine     = "There appears to be a passage behind the roots."
UseTrap		= all:roots
EndObject         = B_roots

Object        = roots
Name	= "roots"
Altname	= "root"
OFlags		= NoGet, Lightable
Location	= IN_ROOM:Oaktree24@oaktree
BaseValue      = 0
Size        = 0
Weight      = 0
Linked      = B_roots
State       = 1
MaxState    = 1
Desc0     = "There is a passage behind some burnt out roots."
Desc1     = "Long, thick roots cover the entire western wall here."
Examine     = "There appears to be a passage behind the roots."
Trap		= all
@
   switch(event) {
   case E_ONLIGHT:
     if (state(param_s.ob) == 1)
     {
        send_msg(ploc(param_s.plx), 0, LVL_MIN, LVL_MAX, NOBODY, NOBODY, 
	       "The roots burn away to reveal a hidden passageway.\n");
     }
     break;
   default:
     break;
   }
@
EndTrap
EndObject         = roots

Object        = mouth2
Name	= "mouth"
Altname	= "lion"
OFlags		= NoGet
Location	= IN_ROOM:Grove@oaktree
BaseValue      = 0
Size        = 0
Weight      = 0
Linked      = mouth1
State       = 1
MaxState    = 1
Desc0     = "A portal has been opened in the immense oak tree."
/*Desc1     = "Under the lions gaze, try as you might you can't pass them."*/
Examine     = ""
EndObject         = mouth2

Object        = mouth1
Name	= "mouth"
Altname	= "lion"
OFlags		= NoGet
Location	= IN_ROOM:Oaktree31@oaktree
BaseValue      = 0
Size        = 0
Weight      = 0
Linked      = mouth2
State       = 1
MaxState    = 1
Desc0     = "A portal has been opened in the large oak tree."
Desc1     = "Under the lions gaze, try as you might you can't pass them."
Examine     = ""
Trap		= all
@
   switch (event) {
   case E_ONPUT:
      if (param_s.misc != OBJ_OAKTREE_QUARTZ)
	{
	  bprintf("It won't fit.\n");
	  param_s.ret = -1;
	  break;
	}
      else if (state(OBJ_OAKTREE_MOUTH1) == 0)
	{
	  bprintf("Nothing happens.\n");
	  param_s.ret = -1;
	  break;
	}
      setobjstate(OBJ_OAKTREE_MOUTH1, 0);
      destroy(OBJ_OAKTREE_QUARTZ);
      bprintf("The quartz slides into its mouth and fits perfectly.\n");
      send_msg(ploc(param_s.plx), 0, pvis(param_s.plx), LVL_MAX, param_s.plx, NOBODY,
	       "%s slides the quartz into the lion's mouth.\n",pname(param_s.plx));
      send_msg(ploc(param_s.plx), 0, LVL_MIN, pvis(param_s.plx), param_s.plx, NOBODY,
	       "Someone slides the quartz into the lion's mouth.\n");
      param_s.ret = -1;
      break;
   default: break;
   }
@
EndTrap
EndObject         = mouth1


Object      = rapier
Altname	= "sword"
Location	= WIELDED_BY:cosimo@oaktree
OFlags		= Weapon
Damage    = 15
BaseValue    = 150
Size      = 10
Weight    = 8
Desc0   = "A small, fearfully sharp rapier lies here."
EndObject       = rapier

Object      = fan
Location	= IN_ROOM:Ilex@oaktree
BaseValue    = 50
Size      = 3
Weight    = 1
Desc0   = "A lady's fan has been forgotten here."
Examine   = '
It has a faint scent of violets, and an inscription reading:
"To my beloved Viola -- From her Cosimo."'
EndObject       = fan

Object      = whistle
Location	= IN_ROOM:walnut@oaktree
OFlags		= Destroyed
BaseValue    = 200
Size      = 2
Weight    = 1
Desc0   = "A silver whistle has been dropped here."
Examine   = `
The whistle is shaped like a dog's head and bears the engraving:
"Ottimo Massimo"`
Trap		= all
@
   char s[100];

   switch(event) {
   case E_ONMISC:
      if (param_s.misc == VERB_BLOW)
      {
         broad ("\001dA strange ringing fills your head.\n\003");
         if (alive (max_players + MOB_OAKTREE_OTTIMO) != -1)
         {
             bprintf ("A small dachshund bounds into the room "
                      "and leaps on you playfully.\n");
             sprintf (s, "A small dachshund bounds into the room "
                         "and leaps on %s playfully.\n", pname (param_s.plx));
             sillycom (s);
             setploc (max_players + MOB_OAKTREE_OTTIMO, ploc (param_s.plx));
         }
         if (ploc(param_s.plx) == (oloc(OBJ_OAKTREE_TOPFOXHOLE)))
         {
             bprintf("Ottimo begins to dig, wagging his tail happily.\n");
             bprintf("Ottimo has uncovered a foxhole at the bottom of the oak!\n");
             setobjstate(OBJ_OAKTREE_TOPFOXHOLE, 0);
         }
         param_s.ret = -1;
      }
      break;
  default: break;
  }
@
EndTrap
EndObject       = whistle

Object      = encyclopedia
Altname	= "book"
Location	= IN_ROOM:Olive3@oaktree
BaseValue    = 800
Size      = 100
Weight    = 60
Desc0   = "An encyclopedia in many volumes has been stacked here."
Examine   = "
This is an extremely rare and valuable first edition of Diderot's Encyclopedia.
The covers are slightly stained and bear the streaks of snails, but you should
still get a hefty price for it."
EndObject       = encyclopedia

Object      = treatise
Altname	= "book"
Location	= IN_ROOM:olive3@oaktree
BaseValue    = 60
Size      = 5
Weight    = 5
Desc0   = "A strange political treatise has been left here."
Examine   = '
It is a very fine work, which could have been a useful guide to any government,
describing the imaginary Republic of Arborea.  It is entitled "A Project for
the Constitution of an Ideal State in the Trees, with a Declaration of the
Rights of Men, Women, Children, Domestic and Wild Animals, including Birds,
Fishes, and Insects."'
EndObject       = treatise

Object      = MarbleBust
Name	= "bust"
Location	= IN_ROOM:mansion@oaktree
OFlags		= GetFlips
State     = 1
MaxState  = 1
BaseValue    = 500
Size      = 30
Weight    = 30
Desc0   = "A bust of fine Italian marble has been placed here."
Desc1   = "
Precariously balanced on the banister is a bust of fine Italian marble."
Examine   = "It appears to be the bust of Cacciaguerra Piovasco the Crusader."
Trap		= all
@
   switch(event) {
   case E_ONDROP:
     if (param_s.misc == D_INPIT)
     {  set_quest(Q_BUST,param_s.plx);
     }
   default: break;
   }
@
EndTrap
EndObject       = MarbleBust

Object      = BustBroken
Name	= "bust"
Location	= IN_ROOM:mansion@oaktree
OFlags		= Destroyed, NoGet
Desc0    = "
On the floor near the staircase is a valuable bust, in smithereens."
Examine   = "Some klutz has broken this once fine piece of sculpture."
EndObject       = BustBroken

Object      = toast
Altname	= "food"
Location	= IN_ROOM:bedroom@oaktree
OFlags		= Food
BaseValue    = 10
Size      = 2
Weight    = 2
Desc0   = "There is a slice of pate toast here."
Examine   = "It is a really exquisite pate toast made of rats' livers."
UseTrap		= all:cakes
EndObject       = toast

Object     = tart
Altname	= "food"
Location	= IN_ROOM:bedroom@oaktree
OFlags		= Food
BaseValue    = 10
Size      = 2
Weight    = 2
Desc0   = "There is a dainty tart here."
Examine   = "
Grasshoppers' claws, crisp and sectioned, are laid on an open tart in a mosaic
pattern."
UseTrap		= all:cakes
EndObject       = tart

Object      = cakes
Altname	= "food"
Location	= IN_ROOM:bedroom@oaktree
OFlags		= Food
BaseValue    = 10
Size      = 2
Weight    = 2
Desc0   = "There are several little cakes here."
Examine   = "
These are pigs' tails baked in little cakes and dusted with sugar."
Trap		= all
@
/* Various FOOD in oaktree */
   switch (event) {
   case E_ONCONSUME:
    bprintf("That was delicious, but not very filling.\n");
    eat(param_s.ob);
    setpstr(param_s.plx, pstr(param_s.plx) + 6);
    calib_player(param_s.plx);
    break;
   default: break;
   }
@
EndTrap
EndObject       = cakes

Object      = soup
Altname	= "food"
Location	= IN_ROOM:bedroom@oaktree
OFlags		= Food
BaseValue    = 10
Size      = 2
Weight    = 2
Desc0   = "There is some pale green soup here, in a tiny china cup."
Examine   = "
It is a delicious smelling caterpillar consomme.  Something is glittering at
the bottom of the cup."
Trap		= all
@
   switch (event) {
   case E_ONCONSUME:
    bprintf("As you finish off the last of the caterpillar consume\n");
    bprintf("you notice a small diamond in the bottom of the cup.\n");
    eat(param_s.ob);
    create(OBJ_OAKTREE_CUPDIAMOND);
    setoloc(OBJ_OAKTREE_CUPDIAMOND, param_s.plx, CARRIED_BY);
    create(OBJ_OAKTREE_CUPCHINA);
    setoloc(OBJ_OAKTREE_CUPCHINA, param_s.plx, CARRIED_BY);
    setpstr(param_s.plx, pstr(param_s.plx) + 6);
    calib_player(param_s.plx);
    break;
   default: break;
   }
@
EndTrap
EndObject       = soup

Object      = CupChina
Name	= "cup"
Location	= IN_ROOM:limbo@limbo
OFlags		= Destroyed
BaseValue    = 60
Size      = 2
Weight    = 2
Desc0   = "A china cup from a doll's tea set has been discarded here."
EndObject       = CupChina

Object      = CupDiamond
Name	= "diamond"
Location	= IN_ROOM:limbo@limbo
OFlags		= Destroyed
BaseValue    = 300
Size      = 4
Weight    = 2
Desc0   = "A small diamond glitters nearby."
EndObject       = CupDiamond

Object      = Window_landing
Name	= "window"
Location	= IN_ROOM:landing@oaktree
OFlags		= Openable, NoGet
Linked    = Window_ilex
State     = 1
MaxState  = 1
Desc0   = "
Through the open window you can see the undulating leaves of an ilex."
Desc1   = "
Through the closed window you can see the undulating leaves of an ilex."
EndObject       = Window_landing

Object      = Window_ilex
Name	= "window"
Location	= IN_ROOM:ilex@oaktree
OFlags		= Openable, NoGet
Linked    = Window_landing
State     = 1
MaxState  = 1
Desc0   = "An open window to the north allows entrance to the mansion."
Desc1   = "There is a closed window to the north."
EndObject       = Window_ilex

Object      = TopFoxhole
Name	= "foxhole"
Altname	= "hole"
Location	= IN_ROOM:grove@oaktree
OFlags		= NoGet
Linked    = HoleFox
State     = 1
MaxState  = 1
Desc0    = "At the foot of the oak tree a foxhole leads down."
Trap		= all
@
catch_dig
{
  if (state (OBJ_OAKTREE_TOPFOXHOLE) == 1)
  {
      bprintf ("Although there are fox tracks in the grass, you can't "
	       "find the fox hole.\n");
      fail(-1);
  }
}
@
EndTrap
EndObject       = TopFoxhole

Object      = HoleFox
Name	= "hole"
Location	= IN_ROOM:hole@oaktree
OFlags		= NoGet
Linked    = TopFoxhole
State     = 1
MaxState  = 1
Desc0   = "Light shines down from a hole above you."
Desc1   = "
Someone has sealed the entrance with dirt and rocks.  You are trapped!"
EndObject       = HoleFox

Object      = boarskin
Altname	= "skin"
Location	= IN_ROOM:walnut@oaktree
OFlags		= NoGet
Trap		= all
@
   if (event == E_ONEXAMINE)
   {    if (!odamage (OBJ_OAKTREE_WHISTLE))
	{
	  create (OBJ_OAKTREE_WHISTLE);
	  bprintf ("Under the boarskin you find a silver whistle.\n");
	  osetdamage (OBJ_OAKTREE_WHISTLE, 1);
	  param_s.ret = -1;
	}
   }
@
EndTrap
EndObject       = boarskin


Location	= "Grove"
South		= Valley@Blizzard
Up		= Tree1@oaktree
Down		= ^TopFoxHole@oaktree
North           = ^mouth2@oaktree
Trap		= all
@
    switch(event) {
    case E_ONTIMER:
      if (randperc() < 7)
         sendf(LOC_OAKTREE_GROVE,"The sharp bark of a fox reverbrates off the oaks.\n");
      break;
    default:
      break;
    }
@
EndTrap
LFlags		= Outdoors
Title		= "&+WOak Grove&*"
Desc		= ^
   Deep in the oak grove, you find yourself surrounded by silent trees in a
field of frost-covered grass.  Two stone lions crouch before you, flanking an
immense oak with heavy, low branches.  A lush valley extends to the south.
^
EndLocation	= "Grove"

Location	= "Tree1"
Up		= Tree2@oaktree
Down		= Grove@oaktree
UseTrap	= all:ilex
LFlags		= Outdoors
Title		= "&+WOak Tree&*"
Desc		= ^
   You are sitting comfortably in the fork of a big branch.  The branches are
spread out high over your head.  The sun shines through the leaves, so that you
must shade your eyes with your hand to look up.
^
EndLocation	= "Tree1"

Location	= "Tree2"
North		= Elm@oaktree
Down		= Tree1@oaktree
UseTrap	= all:ilex
LFlags		= Outdoors
Title		= "&+WOak Tree&*"
Desc		= ^
   You are high up, near the crest of the oak tree.  You can see the branches
of an elm tree to the north, almost touching the oak.  Farther away, the tops
of the trees thin out into little terraced fields propped by stone walls, and
groves dark with olive trees and walnuts.  In the distance is the sea where a
boat is idly sailing.
^
EndLocation	= "Tree2"

Location	= "Elm"
North		= Fig@oaktree
East		= Mulberry@oaktree
South		= Tree2@oaktree
West		= Walnut@oaktree
UseTrap	= all:ilex
LFlags		= Outdoors
Title		= "&+WElm Tree&*"
Desc		= ^
   You are in an elm tree, high above the ground.  This is not an easy tree to
move about on as the branches grow upwards, slender and thickly covered,
leaving little foothold.  To the north you can see the twisted shape of a fig
tree, to your west is a knobby walnut, and to your east is a mulberry.  In the
south are the oaks, haughty and detached.
^
EndLocation	= "Elm"

Location	= "Mulberry"
East		= Magnolia@oaktree
West		= Elm@oaktree
UseTrap	= all:ilex
LFlags		= Outdoors
Title		= "&+WMulberry Tree&*"
Desc		= ^
   Some branches of the mulberry tree reach and overhang a high fortress-like
wall to your east.  Over the wall you can see a magnolia, from whose black
branches spring pulpy white flowers and shiny dark leaves.
^
EndLocation	= "Mulberry"

Location	= "Magnolia"
East		= Bedroom@oaktree
West		= Mulberry@oaktree
Down		= Gardens@oaktree
UseTrap	= all:ilex
LFlags		= Outdoors
Title		= "&+WMagnolia Tree&*"
Desc		= ^
   The branches, although they are slender and of soft wood, bear your weight,
and the points of your shoes tear white wounds on the black bark.  You are
enveloped in the fresh scent of leaves, turned this way and that by the wind,
dull one moment and glittering the next.  Quite far below the lowest branch is
a mysterious garden, and to the east, a half-hidden mansion.  One high window
is quite near your tree.
^
EndLocation	= "Magnolia"

Location	= "Bedroom"
East		= Landing@oaktree
West		= Magnolia@oaktree
Title		= "&+WMansion Bedroom&*"
Desc		= ^
   This looks like a little girl's bedroom.  An arched doorway leads east.
The room is beautifully furnished with curtains of white taffeta, a Persian
carpet, and a tiny canopied bed with cushions of pale yellow damask.  Rosewood
chairs surround a tiny silver table, with a doll's tea service set for two.
^
EndLocation	= "Bedroom"

Location	= "Landing"
South		= ^window_landing@oaktree
West		= Bedroom@oaktree
Down		= mansion@oaktree
Trap		= all
@
   switch (event) {
   case E_ONMOVE:
    if (param_s.ob == EX_DOWN)
    {
      bprintf ("You slide down the banister.  Wheee!\n");
      
      send_msg (ploc (param_s.plx), 0, pvis (param_s.plx), LVL_MAX, param_s.plx, NOBODY,
		"%s slides down the banister shouting 'Yippeee...'\n",
		pname (param_s.plx));
      
      send_msg (param_s.misc, 0, pvis (param_s.plx), LVL_MAX, param_s.plx, NOBODY,
		"%s slides down the banister and lands at your feet.\n",
		pname (param_s.plx));
      
      if (oloc (OBJ_OAKTREE_MARBLEBUST) == param_s.misc)
	{
	  bprintf ("On your way down, you smash a valuable bust.\n");
	  
	  send_msg (param_s.misc, 0, pvis (param_s.plx), LVL_MAX, param_s.plx, NOBODY,
		    "%s smashed a valuable bust on %s way down.\n",
		    pname (param_s.plx), his_or_her (param_s.plx));
	  
	  destroy (OBJ_OAKTREE_MARBLEBUST);
	  create (OBJ_OAKTREE_BUSTBROKEN);
	}
    }
   default: break;
   }
@
EndTrap
Title		= "&+WMansion Landing&*"
Desc		= ^
   You are standing in a great pool of colored light, cast by the stained glass
of a vast coat of arms in a south-facing window, depicting an heraldic leopard.
To your west is an arched doorwary.  A huge, curving marble staircase extends
downwards into the mansion, past paintings and stern-looking busts.  You have
an uncontrollable desire to slide down a banister.
^
EndLocation	= "Landing"

Location	= "Ilex"
North		= ^window_ilex@oaktree
Trap		= all
@
   switch (event) {
   case E_ONDROP:
      bprintf("The %s falls through the leaves to the ground far below.\n",
	    oname(param_s.ob));
      param_s.loc = LOC_OAKTREE_GROVE;
      sendf(param_s.loc, "Something falls to the ground.\n");
      break;
   default: break;
   }
@
EndTrap
Title		= "&+WIlex Tree&*"
Desc		= ^
   In the ilex, deep in the thickest press of leaves, you find a hanging
pavilion with curtains flapping in the wind, shaded by a large, fringed
parasol.  Stuck on the branches here and there are fluttering ribbons and
scraps of lace.  Butterflies dart in pairs among the curtains.
^
EndLocation	= "Ilex"

Location	= "Mansion"
West		= Entrance@oaktree
Up		= Landing@oaktree
Title		= "&+WMansion&*"
Desc		= ^
   Here in the mansion, silver shines and lacquer glows, carved gilt chairs
line the walls, sofas have legs like swans' necks and rest on lions' paws, and
a great deal of dust spirals slowly through the air, lit by innumerable softly
glowing candles. A marble staircase curves upwards, and you can see the gardens
through a doorway to the west.  To the south is the mansion library.
^
EndLocation	= "Mansion"

Location	= "Gardens"
East		= Entrance@oaktree
LFlags		= Outdoors
Title		= "&+WMansion Gardens&*"
Desc		= ^
   In the gardens the branches spread out above you like the tentacles of
extraordinary animals, and the plants on the ground open up stars of fretted
leaves like the green skins of reptiles, and wave feathery yellow bamboos with
a rustle like paper.  A white flight of stairs leads east to the mansion. Above
you is a sweet-scented magnolia tree, but the lowest branch is too high for you
to reach.
^
EndLocation	= "Gardens"

Location	= "Entrance"
East		= Mansion@oaktree
West		= Gardens@oaktree
Title		= "&+WMansion Entrance&*"
Desc		= ^
   You are standing on a small white porch.  A white flight of stairs lead west
to the gardens.  The mansion door is to your east.
^
EndLocation	= "Entrance"

Location	= "Fig"
North		= Olive@oaktree
South		= Elm@oaktree
UseTrap	= all:Ilex
LFlags		= Outdoors
Title		= "&+WFig Tree&*"
Desc		= ^
   You are in a fig tree, under the pavilion of leaves, watching the sun move
slowly through the network of twigs and branches, smelling the scent of flowers
budding in the stalks.  The fig tree seems to absorb you, permeate you with its
gummy texture and the buzz of hornets, and you feel uneasy.  To the north is a
small olive grove.
^
EndLocation	= "Fig"

Location	= "Olive"
East		= Oaktree17@oaktree
South		= Fig@oaktree
West		= Olive2@oaktree
UseTrap	= all:Ilex
LFlags		= Outdoors
Title		= "&+WOlive Tree&*"
Desc		= ^
   You find that the olive trees make comfortable and easy passages for you, in
spite of the scarcity of thick branches.  The grove extends to the east and
west.
^
EndLocation	= "Olive"

Location	= "Olive2"
East		= Olive@oaktree
South		= Olive3@oaktree
UseTrap	= all:Ilex
LFlags		= Outdoors
Title		= "&+WOlive Tree&*"
Desc		= ^
   This tree is hung all over with scrawled pieces of paper and bits of
cardboard with maxims from Seneca and Shaftesbury, and with various objects:
clusters of feathers, church candles, crowns of leaves, women's corsets,
pistols, scales, tied to each other in a certain order, the significance of
which has been lost.  The olive grove continues to the east.
^
EndLocation	= "Olive2"

Location	= "Olive3"
North		= Olive2@oaktree
Down		= Oaktree22@oaktree
UseTrap	= all:Ilex
LFlags		= Outdoors
Title		= "&+WOlive Tree&*"
Desc		= ^
   In this tree there is a kind of hanging bookcase, sheltered somewhat from
the rains.  The olive grove continues to the north.
^
EndLocation	= "Olive3"

Location	= "Oaktree17"
West		= Olive@oaktree
Down		= Oaktree23@oaktree
UseTrap	= all:Ilex
LFlags		= Outdoors
Title		= "&+WOlive Tree&*"
Desc		= ^
   This tree juts out from a cliff, and through the leaves and branches you
find the sea there facing you, calm and limpid and vast as the sky. The horizon
opens wide and high and the sea-blue is stretched bare, without a sail. You can
almost count the far-off ripples of the waves.  Only a very light rustle, like
a sigh, runs over the pebbles on the beach.  There are some roots hanging over
the cliff face here.  They look fairly sturdy, and you might be able to climb
down if you weren't carrying much.
^
EndLocation	= "Oaktree17"

Location	= "Walnut"
East		= Elm@oaktree
UseTrap	= all:Ilex
LFlags		= Outdoors
Title		= "&+WWalnut Tree&*"
Desc		= ^
   You are in an old and stately nut tree.  At the fork of the trunk is a
hollow, formed from an old ax wound.  A soft boarskin is stretched across the
hollow, making a cosy refuge in the shade of the dark green foliage.  In a deep
incision in the bark, now so old and deformed that it no longer seems the work
of human hands, is carved in big letters: Cosimo, Viola, and beneath: Ottimo
Massimo.
^
EndLocation	= "Walnut"

Location	= "Hole"
South		= Burrow@oaktree
Up		= ^HoleFox@oaktree
Down		= Burrow@oaktree
Title		= "&+WFox Hole&*"
Desc		= ^
   You have crawled into a damp, narrow fox hole.  The roots of the giant oak
are all around you.  The burrow continues to the south, but the fox smell is
stronger there.
^
EndLocation	= "Hole"

Location	= "Burrow"
North		= Hole@oaktree
South		= Den@oaktree
Up		= Burrow@oaktree
Down		= Den@oaktree
LFlags		= Dark
Title		= "&+WFox Burrow&*"
Desc		= ^
   You are crawling around on your hands and knees in a cramped north-south fox
burrow.  The stench of fox permeates the burrow and gets even stronger towards
the south.  The air to the north is somewhat fresher.
^
EndLocation	= "Burrow"

Location	= "Den"
North		= Burrow@oaktree
Up		= Burrow@oaktree
LFlags		= Dark
Title		= "&+WFox Den&*"
Desc		= ^
   You are wedged into a reeking fox den.  Strangely enough, the vixen has
built her den adjoining a huge natural cavern that extends deep into the earth,
much farther than your feeble flame can penetrate.  It looks like it might go
all the way to China!  You could jump in, but you would fall a long way....
There is a blinking construction sign here.
^
EndLocation	= "Den"

Location	= "Oaktree22"
LFlags		= Death
Title		= "&+WThe branches give way and...&*"
Desc		= ^
  As you plummet to your demise, the cheery sounds of tiny woodland folk
reverberate in your ears.
^
EndLocation	= "Oaktree22"

Location	= "Oaktree23"
West		= Oaktree24@oaktree
LFlags		= Outdoors
Title		= "&+WSide of the Cliff&*"
Desc		= ^
   The roots end here and you are hanging precariously to the side of the
cliff.  You catch a glimpse of a hole behind the thick roots.  It's a tight
squeeze, but you could probably make it.  Getting back, however, is impossible.
^
EndLocation	= "Oaktree23"

Location	= "Oaktree24"
North		= Oaktree25@oaktree
West		= ^roots@oaktree
Up		= Oaktree25@oaktree
Title		= "&+WBehind the Roots&*"
Desc		= ^
   You are in a cramped underground tunnel.  A myriad of roots dangling from
the ceiling keep you from standing up straight.  From the northern end of the
tunnel, light streams down a low incline, dimly illuminating the tunnel.  It
feels as though someone is tapping you on your shoulder, but when you turn
around no one is there.
^
EndLocation	= "Oaktree24"

Location	= "Oaktree25"
South		= Oaktree24@oaktree
Up		= Oaktree26@oaktree
Down		= Oaktree24@oaktree
Title		= "&+WThe Incline&*"
Desc		= ^
   This is a low incline dug from the earth.  By the looks of the deep claw
marks in the walls, it was dug by some animal.  On one area of the wall the
marks resemble words.
^
EndLocation	= "Oaktree25"

Location	= "Oaktree26"
North		= ^portal2@oaktree
East		= Oaktree27@oaktree
South		= Oaktree29@oaktree
West		= Oaktree28@oaktree
Down		= Oaktree25@oaktree
LFlags		= Peaceful, Outdoors
Title		= "&+WSunny Clearing&*"
Desc		= ^
   You find yourself in a large clearing amongst the trees.  The sun shines
brightly throughout the trees here.  One particularly intense sunbeam shines 
upon a large rock near the northern end of the clearing.  At the southern end
you can make out neatly trimmed hedge rows, while a narrow path snakes through
the clearing from east to west.  A sloping hole has been dug out of the earth.
^
EndLocation	= "Oaktree26"

Location	= "Oaktree27"
West		= Oaktree26@oaktree
Title		= "&+WBeneath the Olive Tree&*"
Desc		= ^
   The light is much dimmer here, as the branches almost completely block out
the sun.  The grass is neatly trimmed and it's obvious that someone takes
proper care of these groves.  The only exit lies to the west.
^
EndLocation	= "Oaktree27"

Location	= "Oaktree28"
North		= Oaktree28@oaktree
East		= Oaktree30@oaktree
South		= Oaktree28@oaktree
West		= Oaktree28@oaktree
LFlags		= Outdoors
Title		= "&+WAmongst the Saplings&*"
Desc		= ^
   Tall saplings are spread out in every direction in neat rows.  If you're not
careful, you could get lost in here.
^
EndLocation	= "Oaktree28"

Location	= "Oaktree29"
North		= Oaktree26@oaktree
South		= Oaktree31@oaktree
LFlags		= Outdoors
Title		= "&+WThe Shrubbery&*"
Desc		= ^
   The hedges are neatly trimmed shrubberies.  One is a little higher than 
the others and produces a nice tier effect with a path running down the middle.
Someone certainly must care for the plants in this area.
^
EndLocation	= "Oaktree29"

Location	= "Oaktree30"
North		= Oaktree28@oaktree
East		= Oaktree26@oaktree
South		= Oaktree28@oaktree
West		= Oaktree28@oaktree
LFlags		= Outdoors
Title		= "&+WAmongst the Saplings&*"
Desc		= ^
   Tall saplings are spread out in every direction in neat rows.  If you're not
careful, you could get lost in here.
^
EndLocation	= "Oaktree30"

Location	= "Oaktree31"
North		= Oaktree29@oaktree
South		= ^mouth1@oaktree
LFlags		= NoMobiles, Outdoors
Title		= "&+WThe Lions&*"
Desc		= ^
   The path ends here at a large oak tree.  The giant oak completely blocks the
path, creating a dead end.  On either side of the oak tree are large statues of
magnificent lions.  One of the lions has its mouth open.
^
EndLocation	= "Oaktree31"

Location	= "Oaktree32"
North		= Oaktree33@oaktree
South		= ^portal1@oaktree
LFlags		= Outdoors
Title		= "&+WBetween Worlds&*"
Desc		= ^
   The air seems heavy, almost wooden, and gray mists prevent you from seeing
more than two feet in front of you.  You have to grope around before finding
a way out to the north.
^
EndLocation	= "Oaktree32"

Location	= "Oaktree33"
South		= Oaktree32@oaktree
Down		= Oaktree34@oaktree
LFlags		= Outdoors
Title		= "&+WThe Great Forest&*"
Desc		= ^
   You stand on a low hill overlooking a vast forest that looks truly primeval
in nature.  Some of the trees look as tall as a giant.  Below you, you can hear
the wind softly moaning through the trees.  Or is that the wind?
^
EndLocation	= "Oaktree33"

Location	= "Oaktree34"
East		= Oaktree35@oaktree
West		= Oaktree33@oaktree
Up		= Oaktree33@oaktree
LFlags		= Outdoors
Title		= "&+WEntrance to the Sacred Grove&*"
Desc		= ^
   The trees thin somewhat here, and you can hear strange sounds from all 
around you.  It smells of cedar and the floor of the forest is littered with a
thick bed of pine needles.  East of here you can make out what looks to be a
small clearing.
^
EndLocation	= "Oaktree34"

Location	= "Oaktree35"
West		= Oaktree34@oaktree
LFlags		= Soundproof
Title		= "&+WSacred Grove&*"
Desc		= ^
   A sense of power radiates from the centre of this clearing where bolts of 
lightning frequently flash from a lowering sky.  Strangely enough these bolts
make no sound.  In fact, you hear nothing at all, as everything has fallen
silent about you.
^
EndLocation	= "Oaktree35"

Location	= "Oaktree36"
East		= ^B_roots@oaktree
South		= ^rotten_door1@oaktree
LFlags		= Dark
Title		= "&+WThe Crack&*"
Desc		= ^
   This is a tight squeeze, and you frequently have to scramble over large 
rocks that partially block the way.  The walls are sharply chiseled and cut 
into your skin now and then as you try to squeeze by.  To the south the crack
appears to widen slightly.
^
EndLocation	= "Oaktree36"

Location	= "Oaktree37"
North		= ^rotten_door2@oaktree
LFlags		= Dark
Title		= "&+WThe Grue's Den&*"
Desc		= ^
   This is a small dry cave that has been carved from the living rock.  Some
dilapidated furniture has been spread about the room, and the floor is littered
with debris and old, gnawed bones - human bones.
^
EndLocation	= "Oaktree37"