Rename game files to lowercase
[spiritwrak.git] / src / miznia.inf
diff --git a/src/miznia.inf b/src/miznia.inf
new file mode 100644 (file)
index 0000000..6a18b50
--- /dev/null
@@ -0,0 +1,892 @@
+! *******************************************************************
+! MIZNIA -- add-on for SPIRITWRAK
+! *******************************************************************
+
+
+Object MIZNIA_GUSStop "Mizniaport"
+   with description "The Great Change certainly hasn't changed the \
+ultra-swank city of Mizniaport. The entire place is filled with \
+splashy color and a disturbing sense of moderness. There's a \
+stairway down here, while side walkways head west and \
+northeast.",
+        name "color" "moderness" "stairway" "walkway" "walkways",
+        d_to MIZNIA_GUSStation,
+        w_to MIZNIA_Park,
+        ne_to FROBAR_Ent,
+    has light;
+    
+Object MIZNIA_Park "Miznia Suburbs"
+   with description "Overly cozy-looking homes sprout up all over \
+the place here. Ridiculously \
+well-trimmed front lawns remind you that you're still in Miznia. \
+A nice pebble path heads east and west. You see the entrance to \
+a swank-looking boutique to the south.",
+        name "homes" "lawns" "pebble" "path",
+        e_to MIZNIA_GUSStop,
+        w_to MIZNIA_Outskirts,
+        s_to MIZNIA_Boutique,
+        in_to MIZNIA_Boutique,
+   has light;
+
+Object MIZNIA_Boutique "Swank Boutique"
+   with description "A ultra-swank accessory store, filled with \
+flashy items for the fashion-unconscious shopper. \
+An exit lies north.",
+        name "items" "accessory",
+        out_to MIZNIA_Park,
+        n_to MIZNIA_Park,
+   has light;
+
+Object boutique_sign "small sign" MIZNIA_Boutique
+   with description "The sign reads ~PLEASE RING BELL FOR SERVICE~",
+        name "small" "sign",
+   has static;
+   
+Object MIZNIA_Outskirts "City Limits"
+   with description "The city stops here abruptly. The Miznia jungle \
+makes its presence known for real here, forming a natural barrier. A \
+path leads east, while an almost overgrown path leads into the jungle \
+to the southwest.",
+        name "path" "jungle" "barrier",
+        e_to MIZNIA_Park,
+        sw_to Jungle_Edge,
+   has light;
+  
+Object c8 "coin" MIZNIA_Boutique class coin_class;
+
+Object Jungle_Edge "Edge of Jungle"
+   with description "Wild birds and wilder vegetation distract you from \
+a faint trail through the jungle here. The path leads northeast and \
+southwest.",
+        name "birds" "vegetation" "trail",
+        ne_to MIZNIA_Outskirts,
+        sw_to Deep_Jungle,
+   has light;
+
+Object Deep_Jungle "Deep Jungle"
+   with description "You're in very deep jungle, just on the verge of \
+getting lost. Your surroundings are green and untamed. A path \
+leads northeast, while a muddy path heads south.",
+        name "mud" "path",
+        ne_to Jungle_Edge,
+        s_to Swamp,
+   has light;
+
+Object Swamp "Swamp"
+   with description [;
+          print "You're knee-deep in a murky swamp. Huge swamp grasses \
+wall you in";
+          if (self has general)
+             print ", except for a section to the west";
+          ". Drier land is north or south.";
+        ],
+        name "swamp" "land",
+        n_to Deep_Jungle,
+        s_to Jungle_Clearing,
+        w_to [;
+           if (self hasnt general)
+              "You can't go that way.";
+           else return Jungle_Ruins;
+        ],
+   has light;
+
+Nearby grasses "grasses"
+   with name "grass" "grasses",
+        description "Tall, thick swampgrass.",
+        before [;
+           Push, Pull, Cut, Attack:
+               "The grass is extremely hardy.";
+           Search:
+               if ((Jungle_Map notin player))
+                  "You hunt around in the grasses for a while and find nothing.";
+               else {
+                  give Swamp general;
+                  Achieved(21);
+                  "You check the jungle map. Sure enough, there's a loose \
+patch of grass that you could duck under to the west.";
+               }
+           Cast:
+               if (the_spell_was == throck_spell)
+                  "Grasses don't grow much more than this.";
+        ],
+   has scenery;
+
+
+Object Jungle_Clearing "Jungle Clearing"
+   with description "The Jungle clears out a bit here, so you can actually \
+see patches of sky and walk ten paces without running into a tree. There's \
+a path into the jungle undergrowth to the north. \
+You notice a group of jungle natives gathered here.",
+        name "sky" "path",
+        number 1,
+        n_to Swamp,
+        each_turn [ ;
+           if (Jungle_Clearing.number == 2) {
+              move Shaman to Jungle_Clearing;
+              Jungle_Clearing.number = 5;
+              "^A single native tribesman breaks away from the group and \
+approaches you.";
+           }
+           if (Jungle_Clearing.number == 1)
+              Jungle_Clearing.number = 2; 
+        ],
+   has light;
+
+Nearby natives "natives"
+   with name "natives" "group",
+        description "A group of jungle natives in elaborate feather and \
+        fur clothing. They appear to be armed with large spears.",
+        life [;
+default:  "The group of natives looks at you with distrusting stares.";
+        ],
+        before [;
+Cast: 
+   if (the_spell_was == espnis_spell or foblub_spell)
+"They can't understand your language, thus the meaning of \
+the sermon is lost on them.";
+        ],
+   has animate concealed;
+   
+        
+        
+Object Jungle_Ruins "Hidden Ruins"
+   with description "Hidden here in some extremely deep jungle \
+        are the ruins of some ancient civilization. Broken sandstone \
+        structures are nearly covered with jungle vines and mosses. \
+        There is a partially intact structure to the north. \
+        It seems to be a short pyramid-like building, with a single \
+        dark entrance hidden amongst vines. Definitely a find to \
+        write the Monastery about, or at least your local \
+        Archeology Guild.",
+        name "sandstone" "structures" "structure" "vines" 
+"pyramid" "entrance" "mosses",
+        e_to Swamp,
+        n_to TEMPLE_Ent,
+   has light;
+   
+! (The ancient temple, unlit, of course)
+Object TEMPLE_Ent "Pyramid Entrance"
+   with description "A damp, dark, unmarked stone room. You can hear \
+        the sounds of the jungle from the exit to the south. There \
+        are dark passages north and east.",
+        s_to Jungle_Ruins,
+        e_to TEMPLE_Statue_room,
+        n_to TEMPLE_Trap,
+        before [;
+           Listen: "You hear noises of the jungle from the south.";
+        ],
+;
+  
+Object TEMPLE_Statue_room "Statue Room"
+   with description "A tiny dark chamber, with a passage west.",
+        w_to TEMPLE_Ent,
+;
+
+Nearby TEMPLE_Statue "large statue"
+   with name "statue",
+        description "A stone statue of some ancient \
+        warrior, probably intended to frighten off visitors.",
+        before [;        
+           ! manual dealing with PushDir (only 3 possible locs anyway)
+           PushDir:
+              if (self has general)
+                 "The statue is stuck fast and doesn't budge.";
+              if ((self in TEMPLE_Statue_room) && (second == w_obj)) {
+               print "^There's a grinding noise as you push the statue west.^";
+               AllowPushDir(); rtrue;
+              }
+              if ((self in TEMPLE_Ent) && (second == s_obj))
+                 "^The statue doesn't appear to fit through the \
+                 entranceway.";
+              if ((self in TEMPLE_Ent) && 
+                  ((second == n_obj) || (second == e_obj))) {
+                 print "^There's a grinding noise as you push the statue.^";
+                 AllowPushDir(); rtrue;
+              }
+              if ((self in TEMPLE_Trap) && (second == s_obj)) {
+               print "^There's a grinding noise as you push the statue south.^";
+                 AllowPushDir(); rtrue;
+              }
+              if ((self in TEMPLE_Trap) && (second == n_obj)) {
+                 give self general;
+                 move rollers to TEMPLE_Trap;
+                 "You start to push the statue north, and hear a strange \
+                 click. Suddenly, two enormous stone rolling pins slide \
+                 down from the east and west sides of the room! \
+                 Desperately, you topple the statue and hide behind it. \
+                 You hear a huge crash!^^\
+                 You open your eyes, surprised to find yourself not \
+                 squashed into pancake. The statue has wedged itself \
+                 neatly between the two giant rollers, effectively \
+                 blocking them!";
+              }
+              "You can't push the statue that way.";
+            Take:
+              "The statue rocks back and forth a bit, but is \
+far too heavy to take.";
+            Push:
+              print "The statue ";
+              if (self hasnt general)
+              "rocks back and forth a bit.";
+              else "seems to be stuck.";
+           ],                 
+   has static;
+   
+Object TEMPLE_Trap "Strange Chamber"
+   with description "This is an odd long hallway running north and south. \
+The stone floor is noticeably concave, sloping upwards to \
+the east and west. It's like being in a long stone \
+channel.",
+        name "slope" "channel",
+        s_to TEMPLE_Ent,
+        e_to "The floor gets too steep, and you slide back down.",
+        w_to "The floor gets too steep, and you slide back down.",        
+        n_to [;
+           if (TEMPLE_Statue hasnt general) {
+              deadflag = 1;
+              "You head north, and hear a strange click. Suddenly, \
+              two huge stone rolling pins roll down from the east \
+              and west sides of the room! Desperately, you try to \
+              escape, but the hall is too long, and the stone \
+              rollers too fast. You are crushed to jelly.";
+           }
+           else {
+              print "You step over and around the jammed rollers and \
+              the statue and head north.^";
+              return TEMPLE_1;
+           }
+        ],
+;
+
+Object rollers "stone rollers"
+   with name "roller" "rollers" "stone",
+        initial "There are two stone rollers pinned against the statue.",
+        description "Massive stone rolling pins.",
+        before [;
+Push, Pull, Attack, Turn, Shake, Squeeze:
+"The rollers are huge and stuck fast.";
+        ],
+   has static;
+   
+Object TEMPLE_1 "Bare Chamber"
+   with description "You are in a bare stone chamber with passages leading \
+north, east, south and west. A stone ladder also heads upwards through a \
+dark hole in the ceiling.",
+       name "ladder" "hole",
+       s_to TEMPLE_Trap,
+       n_to TEMPLE_1N,
+       e_to TEMPLE_1E,
+       w_to TEMPLE_1W,
+       u_to TEMPLE_2,
+;       
+        
+Object TEMPLE_1W "Small Chamber"
+   with description "You're in a small bare chamber. On one of the walls, \
+   you notice an engraving, almost worn away with age. It seems to be a \
+   picture of a jungle village, and you recognize the pyramid you are currently in. \
+   An exit lies east.",
+      e_to TEMPLE_1,
+;
+
+Object TEMPLE_1N "Small Chamber"
+   with description "You're in a rather bare chamber. On one of the walls, \
+   you see a worn engraving depicting a group of robed figures standing in \
+   some chamber. They are carrying several long reeds. An exit lies south.",
+        s_to TEMPLE_1,
+;
+
+Object TEMPLE_1E "Small Chamber"
+   with description "You're in a small stone chamber. In the center of the \
+   floor is a strange funnel-like depression, which starts as a large \
+   circular opening, and narrows into a very small tunnel below, \
+   probably no wider than your hand. You also see a small round hole \
+   in the ceiling above. An exit heads west.",
+      w_to TEMPLE_1,
+      d_to "You'd never fit down that opening.",
+      u_to "You can't reach the hole, and besides, you'd never fit through \
+it if you could.",
+;
+
+Object TEMPLE_1_HOLEU "hole" TEMPLE_1E
+   with name "hole",
+        description "You see a dark small hole in the center of the \
+ceiling.",
+        before [;
+Rub, Push, Pull, Touch, Receive, LetGo, Search:
+"The hole is far above your head.";
+        ],
+   has scenery;
+
+Object TEMPLE_1_Opening "opening" TEMPLE_1E
+   with name "opening" "funnel" "depression" "tunnel",
+        description "A smooth funnel in the stone in the floor, that descends \
+        into darkness as it narrows.",
+        describe [ x;
+           print "^The opening ";
+           if (children(self) == 0)
+              "appears to be empty.";
+           else {
+         print "contains:^";
+         x = children(self);
+         x = FULLINV_BIT + INDENT_BIT + NEWLINE_BIT + RECURSE_BIT;
+         WriteListFrom (child(self), x, 1); 
+         rtrue;
+           }
+        ],
+        before [;
+           Receive:
+             if (noun ~= TEMPLE_Artifact)  {
+                print "That doesn't quite fit -- ";
+                if (noun.size > TEMPLE_Artifact.size)
+                   "the funnel becomes too narrow too quickly.";
+                else "strangely...";
+             }
+           LetGo:
+              "You stick your hand down the small hole, but it must be \
+              quite deep, and you can't quite reach.";
+         ],
+         capacity 1,
+         size 10,
+   has static container open;
+   
+Object TEMPLE_2 "Bare Chamber"
+   with description "You are in a bare stone chamber with passages leading \
+north, east, south and west. A stone ladder leads upwards and downwards \
+into dark holes.",
+       name "ladder" "hole",
+       s_to TEMPLE_2S,
+       n_to TEMPLE_2N,
+       e_to TEMPLE_2E,
+       w_to TEMPLE_2W,
+       u_to TEMPLE_3,
+       d_to TEMPLE_1,
+;   
+
+Object TEMPLE_2N "Small Chamber"
+  with description "You're in a small bare chamber. Engravings on the \
+  wall show several robed figures in a low domed chamber. Some of \
+  the figures are pushing what appears to be reeds down a small hole \
+  in the ground, while others stand by and seem to be praying or \
+  engaged in some ceremony. In a separate scene, similar robed \
+  figures can be seen throwing some poor bound individual off the \
+  top of the pyramid, apparently in some sort of ritualistic \
+  sacrifice. An exit heads south.",
+     s_to TEMPLE_2,
+;
+
+Object TEMPLE_2W "Small Chamber"
+   with description "You're in a small bare chamber. Engravings on \
+   the wall depict several robed figures in a room mostly filled \
+   with water. The figures are watching reeds that seem to fall \
+   from the sky and land in the water. Several reeds are floating \
+   towards an apparent drain in the water, where a few reeds that are thin \
+   enough fall through with the flow of the water. An exit lies east.",
+      e_to TEMPLE_2,
+;
+
+Object TEMPLE_2S "Small Chamber"
+   with description "You're in a rather small chamber. Engravings on \
+   the walls depict several robed figures in a strange room with a \
+   circular depression in the ground, filled with water. Water also \
+   flows into the pool in a thin stream from some undrawn source above. \
+   With the stream of water, a few reeds appear to be falling. A single \
+   figure is collecting the reeds as they fall and placing them in \
+   a long thin vase or container. The significance of \
+   this is uncertain. An exit lies north.",
+      n_to TEMPLE_2,
+;
+
+Object TEMPLE_engravings "engravings"
+   with name "engravings" "engraving",
+        description [; <Look>; ],
+        found_in TEMPLE_1W TEMPLE_1N TEMPLE_2N TEMPLE_2W TEMPLE_2S,
+   has scenery;
+
+Object TEMPLE_2E "Small Chamber"
+   with description [;
+   print "You're in a bare stone chamber which is partially \
+filled with a sunken pool of dirty blackish water. Near the south wall \
+is a depression in the floor that was probably a drain for the pool, given the \
+apparent water stains; however the level of the pool is below \
+the point where it would overflow into the drain. Near the center \
+of the ceiling is a small round hole, right above the pool. An \
+exit lies west";
+   if ((self hasnt general) && (TEMPLE_3 hasnt general) &&
+        (amulet has worn)) {
+      give self general;
+      ".^^Your amulet suddenly gives off a bright purple flash!";
+   }
+   else ".";
+   ],
+   name "stains",
+   before [;
+      Fill:
+"The blackish water seems like something you really don't want.";
+   ],  
+   w_to TEMPLE_2,
+;  
+   
+Object TEMPLE_2_HOLEU "hole" TEMPLE_2E
+   with name "hole",
+        description "You see a dark small hole in the center of the \
+ceiling.",
+        before [;
+Rub, Push, Pull, Touch, Receive, LetGo, Search:
+"The hole is far above your head.";
+        ],
+   has scenery;
+
+Object TEMPLE_2_Opening "opening" TEMPLE_2E
+   with name "opening" "drain" "depression",
+        description "A smooth drain opening in the stone in the floor, \
+        that descends into darkness.",
+        before [;
+           Receive:
+             if ((noun ~= TEMPLE_Artifact) && (noun hasnt is_rod)) ! TODO ADD?
+              "Oddly, that doesn't fit through the small round drain.";
+             else {
+                if (children(TEMPLE_1_Opening) == 0) 
+                   move noun to TEMPLE_1_Opening;
+                if (TEMPLE_Artifact in TEMPLE_1_Opening &&
+                    children(TEMPLE_Artifact) == 0)
+                   move noun to TEMPLE_Artifact;
+                else move noun to TEMPLE_1E;  
+                CDefArt(noun); " drops into the drain and disappears \
+                out of sight. Moments later you hear a thump from \
+                somewhere below.";
+             }
+         ],
+         capacity 1,
+         size 10,
+   has scenery container open;
+
+Object TEMPLE_Pool "pool" TEMPLE_2E
+   with name "pool" "water",
+        describe [;
+print "^The black pool is disturbingly calm";
+if (umbrella in self)
+   ". Floating on the surface is a black open umbrella.";
+else ".";
+        ],
+        description [;
+           print "Murky black water that seems disturbingly calm";
+           if (umbrella notin self)
+           ".";
+           else
+           ". Floating on the surface is a black open umbrella.";
+           ],
+        before [;
+           Cast:
+              if (the_spell_was == frotz_spell)
+                 "There's a strange gurgling noise as you finish the \
+                 chant, and the black water starts to glow! But, \
+                 to your horror, the inky water seems to absorb the \
+                 light and return to its original blackness! The \
+                 chant fails.";
+                 
+          Enter:
+             deadflag = 1;
+             "You notice the water seems unusually cold as you enter \
+             the pool. Without warning, something grabs your legs and \
+             pulls you under! In pitch black liquid that seems to \
+             absorb all light, you can't defend yourself, or even \
+             see your adversary, who devours you shortly.";
+          Search:
+             "You can't see a thing, the water is blacker than night.";
+          Receive:
+             if (noun == toy_volcano) {
+                remove noun;
+                "You drop the toy volcano into the black pool and \
+watch it sink. Moments later, a large large bubble rises, and \
+pops at the surface, followed by a strange, belch-like noise!";
+             }
+             if ((noun ~= umbrella) || (umbrella hasnt open)) {
+             remove noun;
+             CDefArt(noun); 
+print " falls into the pool and slowly sinks into the black water. \
+Suddenly, ", (the) noun, " seems to get pulled into the pool, \
+and is soon gone! Something dwells in that pool, apparently, \
+hidden well in a cover of"; " blackness!";
+             }
+             else {
+                move umbrella to TEMPLE_Pool;
+                give umbrella ~light;  ! a 'special-effect'?
+                "The open umbrella sits in the pool, floating on the \
+                surface like a cloth dome.";
+             }                      
+        ],
+        size 25,
+   has static container open;
+
+               
+Object TEMPLE_3 "Collapsed Chamber"
+   with description [;
+   print "You are in a stone chamber that has broken and \
+   eroded walls in several places. Broken stones and dirt are everywhere. \
+   It appears there was once an open archway east, however the heavy stones \
+   that framed it have collapsed. A tiny hole remains, \
+   but it would be an exceptionally tight squeeze. \
+   A stone ladder leads downwards into a dark hole";
+   if ((self hasnt general) && (TEMPLE_2E hasnt general) &&
+       (amulet has worn)) {
+      give self general;
+      ".^^Your amulet suddenly gives off a bright purple flash!";
+   }
+   else ".";
+   ],
+   name "stones" "dirt" "archway" "ladder" "hole",
+       e_to [;
+          if (children(player) ~= 0)
+             "You try to squeeze through the hole, to \
+             no avail. You're carrying too much to fit.";
+          else return TEMPLE_3E;
+       ],
+       d_to TEMPLE_2,
+;
+
+Object TEMPLE_3E "Low Chamber"
+   with description "You're in a tiny low room, dimly lit by strange \
+   glowing lichens and mosses. A tiny exit lies west between some \
+   collapsed rock -- it looks like a very tight squeeze. The room is \
+   otherwise filled with broken rock and the like. A tiny round hole \
+   is in the very center of the floor.",
+   name "lichens" "mosses" "rock",
+   w_to [;
+      if (children(player) ~= 0)
+             "You try to squeeze through the hole, to \
+             no avail. You're carrying too much to fit.";
+          else return TEMPLE_3;
+       ],
+   d_to "You can barely fit your hand in the hole.",
+has light;
+              
+Nearby TEMPLE_3_Opening "opening"
+   with name "opening" "hole" "tiny" "round",
+        description "A smooth round hole in the stone in the floor \
+        that descends into darkness.",
+        before [;
+           Receive:
+             if (noun hasnt is_rod)  
+                "Oddly, that doesn't quite fit.";
+             else {
+                print "The rod slips through with ease. \
+Moments later you";
+                if (umbrella notin TEMPLE_Pool) {
+                   remove noun;  
+                   " hear a splash from somewhere below.";
+                }
+                else {
+                if (children(TEMPLE_1_Opening) == 0) 
+                   move noun to TEMPLE_1_Opening;
+                else {
+                if (TEMPLE_Artifact in TEMPLE_1_Opening &&
+                    children(TEMPLE_Artifact) == 0) 
+                   move noun to TEMPLE_Artifact;
+                else move noun to TEMPLE_1E;  
+                Achieved(22);
+                }
+                !   if (TEMPLE_Artifact notin TEMPLE_1_Opening)
+                !      move noun to TEMPLE_1_Opening;
+                !   else 
+                !      move noun to TEMPLE_Artifact;
+                   " hear a thump from below, followed by a rattling noise, \
+                   and finally another thump, much fainter.";
+                }
+             }
+         ],
+         capacity 1,
+         size 10,
+   has scenery container open;
+
+
+! (Super Zmart) (REMOVED)
+
+Object stuffed_toy "stuffed toy" MIZNIA_Park
+   with name "toy" "stuffed" "alligator",
+        initial "A stuffed toy has been left unattended on someone's lawn.",
+        description "A cute little stuffed toy alligator.",
+        !weight 5,
+        size 15,
+;
+
+
+   
+Object FROBAR_Ent "In Front of Swank House"
+   with description "You're in front of a rather swank looking house to the \
+        northeast. To the southwest is the rest of Mizniaport.",
+        name "house",
+        sw_to MIZNIA_GUSStop,
+        ne_to [;
+           if (Frobar in Delbins)
+              "You walk up to the front door, only to find it locked.";
+           else return FROBAR_Foyer;
+        ],
+        in_to [;
+           if (Frobar in Delbins)
+              "You walk up to the front door, only to find it locked.";
+           else return FROBAR_Foyer;
+        ],
+   has light;
+   
+Nearby Frobar_mailbox "mailbox"
+   with name "mailbox" "box",
+        description "A mailbox stands in front of the house. The letter \
+        ~F~ is on one side.",
+        capacity 5,
+        size 15,
+        ! block a receive here?
+   has static container openable;
+   
+Object Ench_mag "copy of ~Enchanter Monthly~" Frobar_mailbox
+   with name "magazine" "monthly" "enchanter" "copy",
+        description "~Enchanter Monthly~ has been somewhat lacking in \
+        quality content these days (The absence of magic probably \
+        being a large factor behind this). For filler, the editors have \
+        been turning in mostly tabloid drivel articles about ~What ever \
+        happened to so-and-so?~. This month's cover story \
+        suggests that Barsap the magician was actually turned into a tortoise \
+        during the Great Cataclysm, and underwent a slow mutation into a \
+        newt.",
+        !weight 5, 
+        size 15,
+;
+              
+
+
+
+! **********
+! critters/people
+! **********
+
+Object Shaman "jungle shaman"
+   with name "shaman" "tribesman" "native",
+        description [;
+print "A jungle native with a rather elaborate costume \
+        make of bird feathers and animal hides. He seems old, but wise";
+if (self hasnt general) 
+        ". Unlike the rest of the natives, this one is not wearing a \
+        fancy feather-and-fur headdress.";
+else ".";
+        ],        
+        life [;
+           Order:
+              if ((action==##Give) && (noun==Jungle_Map) && (Jungle_Map in self))
+                 "You try to convey your desire for the map with \
+                 gestures. The shaman seems to understand. He \
+                 points to the map, then you. Then, he raises his \
+                 hand in a 'stop' gesture. Then, he points to his \
+                 bare head.";
+              "The shaman does not seem to understand.";
+           Give:
+              if (noun==headdress) {
+                 move Jungle_Map to player;
+                 move headdress to Shaman;
+                 give self general;
+                 "The shaman takes the headdress and places it on his \
+                 head. He smiles, and gives you a strange map in return.";
+              }
+              "The shaman smiles and shakes his head.";
+           Attack, ThrowAt:
+              deadflag = 1;
+              "As you make a threatening move, several of the natives \
+              step forward and pierce your body with stout spears. \
+              It appears they've had bad dealings with outsiders \
+              before.";
+           Show: 
+            if (noun == headdress)
+               "The shaman nods and points to the headdress, then \
+               himself.";
+             "The shaman says something in a language you've never \
+             heard before.";             
+           default: "You can't seem to communicate with him; their \
+           language is completely foreign to you.";           
+        ],
+        before [;
+           Cast:
+              if (the_spell_was == foblub_spell or espnis_spell)
+                 "You begin the sermon, but the shaman and natives \
+                 seem very puzzled by your speech, and clearly \
+                 can't understand a word you're saying. The chant \
+                 fails.";
+        ],
+   has animate;  ! transparent?
+   
+Object Jungle_Map "jungle map" Shaman
+   with name "map" "jungle",
+        description [;
+        print "The map is somewhat crudely drawn:^^";
+        font off;
+        spaces 23; print "xxxx^";
+        spaces 23; print "xxxx^";
+        spaces 23; print "XXXX^";
+        spaces 22; print "/^";
+        spaces 18; print "XXXX^";
+        spaces 18; print "XXXX^";
+        spaces 18; print "XXXX^";
+        spaces 20; print "I^";
+        spaces 18; print "oooo^";
+        spaces 12; print "<#>---oooo^";
+        spaces 18; print "oooo^";
+        spaces 20; print "I^";
+        spaces 18; print "XXXX^";
+        spaces 18; print "XXXX^";
+        spaces 18; print "XXXX^";
+        font on;
+        ],
+         ! weight 10, 
+        size 10,
+;
+
+Object earth_spirit "earth spirit" TEMPLE_3 ! TEMPLE_3E
+  with name "spirit",
+       description "It looks like a large moving mass of mud and earth, \
+                  in a somewhat man-like shape.",
+       each_turn [ i ;
+       ! spirit attack
+       ! (in general, the 4 spirits are _very_ dangerous.
+       ! There's a 1/5 chance of killing outright, and 2
+       ! chances of doing 10 and 5 points of damage respectively.
+       ! In short, the player needs to realize it's time to swanko,
+       ! and do so, quickly)
+       if (self hasnt general) {
+          give self general ~concealed;    
+          "^Some of the dirt and mud in one corner stirs! A form \
+          made of mud and earth suddenly rises to attack!";
+       }
+       i = random(5);
+       if (i == 1) {
+          deadflag = 1;
+          "^The earth creature moves quickly, and blinds you with \
+          a spray of dirt! You clear your eyes, only to see the \
+          brown mass move forward and bury you! You struggle, but \
+          suffocate in short time.";
+       }
+       if (i == 2) 
+          Player_HP_CUR = Player_HP_CUR - 10;
+       if (i==3) 
+          Player_HP_CUR = Player_HP_CUR - 5;
+       if (Player_HP_CUR <= 0) {
+          deadflag = 1;
+          "^The last blow from the earth spirit was too much for \
+          you, I'm afraid to say. The spirit slowly sludges \
+          towards you for the final blow...";
+       } 
+       print "^The earth spirit ";
+       if (i==2)
+          "clubs you with a heavy pseudopod \
+          made of animated soil and rock. Ouch!";
+       if (i==3) {
+          print "throws some loose soil and sand in \
+          your face! The attack knocks you back, and \
+          you fall into the chamber below!";
+          PlayerTo(TEMPLE_2);
+          rtrue;          
+       }
+       "sends a spray of sharp rocks \
+       your way, and you just dodge in time!";
+       ],
+       before [;
+          Cast:
+            if (the_spell_was == swanko_spell) {
+               remove self;
+               "As you speak the chant, the earth spirit falls back \
+               in fear! You finish the chant, and the earth spirit \
+               collapses into a heap of dirt and mud, banished!";
+            }
+            print "The creature makes a banshee-howl as you chant.^"; 
+       ],
+       life [ ;
+          Attack: 
+            print "You ";
+            if (random(20) >= 8)
+            "strike the earth creature, but your attack passes \
+            harmlessly through it! You hear a strange noise from \
+            the creature -- akin to mad laughter from someone \
+            trapped underground in a coffin.";
+            "attack the earth spirit, but miss!";
+          default: "It's too busy trying to kill you.";
+       ],
+   has animate concealed;   
+        
+! **********
+! spells/scrolls
+! **********
+
+! TODO (Dan, why is this declared _here_?)
+Object white_scroll "white scroll" 
+  class scroll_class,
+  with name "white",
+;
+
+Object huncho_spell "send object to higher plane" white_scroll
+  class spell_class,
+  with name "huncho",
+       magic [;
+          if (second == 0)
+"You see a brief flash of light, but nothing happens.";
+          if (second == player) {
+             print "You finish the chant";
+!             if ((location == ATRII_8) && (ATRII_8 hasnt general) &&
+! (white_rod_piece in player) && (black_rod_piece in player) &&
+! (smoke_rod_piece in player) && (gray_rod_piece in player)) {
+             if ((location == ATRII_8) && (ATRII_8 hasnt general)) {
+               give ATRII_8 general;
+               spell_block = 1;
+               print " and notice the \
+white streaks of light above widen, as though a rift was \
+being torn in the sky! You feel a force pulling you \
+upwards, into the unknown!^";
+               StartTimer(Imp_Liv,10);
+               PlayerTo(Imp_Liv);
+               rtrue;
+             }
+             else 
+                ", and see a short-lived flash
+of light above, but nothing else.";
+          }
+          if (second has animate) {
+             "You feel a slight rumbling overhead, but nothing else \
+happens.";
+          }
+          else {
+             if ((second hasnt static) && (second hasnt scenery) &&
+                 (in_atrii == 0)) {
+                if (second has clothing) give second ~worn;
+                move second to ATRII_8;
+                print "There is a flash of light, and "; DefArt(second); 
+                " suddenly vanishes!";
+             }
+             "Your chant goes unanswered.";
+          }
+      ],
+;
+
+Object muddy_scroll "muddy scroll" Deep_Jungle
+  class scroll_class,
+  with name "muddy",
+       initial "Partially buried in the mud is a scroll.",
+;
+
+Object throck_spell "grow plant" muddy_scroll
+  class spell_class,
+  with name "throck",
+       magic [;
+             "Your chant goes unanswered. It's intended for plants only.";
+       ],
+;
+
+! **********
+! misc objs
+! **********
+
+
+! 'earth' rod piece -- BLACK
+Object black_rod_piece "black rod piece" TEMPLE_3E
+  class rod_class,
+  with name "black",
+       initial "In the center of the room is a short black rod.",
+       description "It's a short section of a rod made of some \
+undeterminable hard substance, \
+colored an inky black. A piece of the Rod of \
+the Ancients, I'd warrant!",
+;