/************************************************************************ * 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"