Implement per-file license notices
[spiritwrak.git] / src / miznia.inf
1 ! *******************************************************************
2 ! MIZNIA -- add-on for SPIRITWRAK
3 !
4 ! SPIRITWRAK is free software; you can redistribute it and/or modify
5 ! it under the terms of the GNU General Public License as published by
6 ! the Free Software Foundation; either version 3 of the License, or
7 ! (at your option) any later version.
8 !
9 ! SPIRITWRAK is distributed in the hope that it will be useful, but
10 ! WITHOUT ANY WARRANTY; without even the implied warranty of
11 ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 ! General Public License for more details.
13 !
14 ! You should have received a copy of the GNU General Public License
15 ! along with SPIRITWRAK. If not, see <https://www.gnu.org/licenses/>.
16 ! *******************************************************************
17
18
19 Object MIZNIA_GUSStop "Mizniaport"
20    with description "The Great Change certainly hasn't changed the \
21 ultra-swank city of Mizniaport. The entire place is filled with \
22 splashy color and a disturbing sense of moderness. There's a \
23 stairway down here, while side walkways head west and \
24 northeast.",
25         name "color" "moderness" "stairway" "walkway" "walkways",
26         d_to MIZNIA_GUSStation,
27         w_to MIZNIA_Park,
28         ne_to FROBAR_Ent,
29     has light;
30     
31 Object MIZNIA_Park "Miznia Suburbs"
32    with description "Overly cozy-looking homes sprout up all over \
33 the place here. Ridiculously \
34 well-trimmed front lawns remind you that you're still in Miznia. \
35 A nice pebble path heads east and west. You see the entrance to \
36 a swank-looking boutique to the south.",
37         name "homes" "lawns" "pebble" "path",
38         e_to MIZNIA_GUSStop,
39         w_to MIZNIA_Outskirts,
40         s_to MIZNIA_Boutique,
41         in_to MIZNIA_Boutique,
42    has light;
43
44 Object MIZNIA_Boutique "Swank Boutique"
45    with description "A ultra-swank accessory store, filled with \
46 flashy items for the fashion-unconscious shopper. \
47 An exit lies north.",
48         name "items" "accessory",
49         out_to MIZNIA_Park,
50         n_to MIZNIA_Park,
51    has light;
52
53 Object boutique_sign "small sign" MIZNIA_Boutique
54    with description "The sign reads ~PLEASE RING BELL FOR SERVICE~",
55         name "small" "sign",
56    has static;
57    
58 Object MIZNIA_Outskirts "City Limits"
59    with description "The city stops here abruptly. The Miznia jungle \
60 makes its presence known for real here, forming a natural barrier. A \
61 path leads east, while an almost overgrown path leads into the jungle \
62 to the southwest.",
63         name "path" "jungle" "barrier",
64         e_to MIZNIA_Park,
65         sw_to Jungle_Edge,
66    has light;
67   
68 Object c8 "coin" MIZNIA_Boutique class coin_class;
69
70 Object Jungle_Edge "Edge of Jungle"
71    with description "Wild birds and wilder vegetation distract you from \
72 a faint trail through the jungle here. The path leads northeast and \
73 southwest.",
74         name "birds" "vegetation" "trail",
75         ne_to MIZNIA_Outskirts,
76         sw_to Deep_Jungle,
77    has light;
78
79 Object Deep_Jungle "Deep Jungle"
80    with description "You're in very deep jungle, just on the verge of \
81 getting lost. Your surroundings are green and untamed. A path \
82 leads northeast, while a muddy path heads south.",
83         name "mud" "path",
84         ne_to Jungle_Edge,
85         s_to Swamp,
86    has light;
87
88 Object Swamp "Swamp"
89    with description [;
90           print "You're knee-deep in a murky swamp. Huge swamp grasses \
91 wall you in";
92           if (self has general)
93              print ", except for a section to the west";
94           ". Drier land is north or south.";
95         ],
96         name "swamp" "land",
97         n_to Deep_Jungle,
98         s_to Jungle_Clearing,
99         w_to [;
100            if (self hasnt general)
101               "You can't go that way.";
102            else return Jungle_Ruins;
103         ],
104    has light;
105
106 Nearby grasses "grasses"
107    with name "grass" "grasses",
108         description "Tall, thick swampgrass.",
109         before [;
110            Push, Pull, Cut, Attack:
111                "The grass is extremely hardy.";
112            Search:
113                if ((Jungle_Map notin player))
114                   "You hunt around in the grasses for a while and find nothing.";
115                else {
116                   give Swamp general;
117                   Achieved(21);
118                   "You check the jungle map. Sure enough, there's a loose \
119 patch of grass that you could duck under to the west.";
120                }
121            Cast:
122                if (the_spell_was == throck_spell)
123                   "Grasses don't grow much more than this.";
124         ],
125    has scenery;
126
127
128 Object Jungle_Clearing "Jungle Clearing"
129    with description "The Jungle clears out a bit here, so you can actually \
130 see patches of sky and walk ten paces without running into a tree. There's \
131 a path into the jungle undergrowth to the north. \
132 You notice a group of jungle natives gathered here.",
133         name "sky" "path",
134         number 1,
135         n_to Swamp,
136         each_turn [ ;
137            if (Jungle_Clearing.number == 2) {
138               move Shaman to Jungle_Clearing;
139               Jungle_Clearing.number = 5;
140               "^A single native tribesman breaks away from the group and \
141 approaches you.";
142            }
143            if (Jungle_Clearing.number == 1)
144               Jungle_Clearing.number = 2; 
145         ],
146    has light;
147
148 Nearby natives "natives"
149    with name "natives" "group",
150         description "A group of jungle natives in elaborate feather and \
151         fur clothing. They appear to be armed with large spears.",
152         life [;
153 default:  "The group of natives looks at you with distrusting stares.";
154         ],
155         before [;
156 Cast: 
157    if (the_spell_was == espnis_spell or foblub_spell)
158 "They can't understand your language, thus the meaning of \
159 the sermon is lost on them.";
160         ],
161    has animate concealed;
162    
163         
164         
165 Object Jungle_Ruins "Hidden Ruins"
166    with description "Hidden here in some extremely deep jungle \
167         are the ruins of some ancient civilization. Broken sandstone \
168         structures are nearly covered with jungle vines and mosses. \
169         There is a partially intact structure to the north. \
170         It seems to be a short pyramid-like building, with a single \
171         dark entrance hidden amongst vines. Definitely a find to \
172         write the Monastery about, or at least your local \
173         Archeology Guild.",
174         name "sandstone" "structures" "structure" "vines" 
175 "pyramid" "entrance" "mosses",
176         e_to Swamp,
177         n_to TEMPLE_Ent,
178    has light;
179    
180 ! (The ancient temple, unlit, of course)
181 Object TEMPLE_Ent "Pyramid Entrance"
182    with description "A damp, dark, unmarked stone room. You can hear \
183         the sounds of the jungle from the exit to the south. There \
184         are dark passages north and east.",
185         s_to Jungle_Ruins,
186         e_to TEMPLE_Statue_room,
187         n_to TEMPLE_Trap,
188         before [;
189            Listen: "You hear noises of the jungle from the south.";
190         ],
191 ;
192   
193 Object TEMPLE_Statue_room "Statue Room"
194    with description "A tiny dark chamber, with a passage west.",
195         w_to TEMPLE_Ent,
196 ;
197
198 Nearby TEMPLE_Statue "large statue"
199    with name "statue",
200         description "A stone statue of some ancient \
201         warrior, probably intended to frighten off visitors.",
202         before [;        
203            ! manual dealing with PushDir (only 3 possible locs anyway)
204            PushDir:
205               if (self has general)
206                  "The statue is stuck fast and doesn't budge.";
207               if ((self in TEMPLE_Statue_room) && (second == w_obj)) {
208                print "^There's a grinding noise as you push the statue west.^";
209                AllowPushDir(); rtrue;
210               }
211               if ((self in TEMPLE_Ent) && (second == s_obj))
212                  "^The statue doesn't appear to fit through the \
213                  entranceway.";
214               if ((self in TEMPLE_Ent) && 
215                   ((second == n_obj) || (second == e_obj))) {
216                  print "^There's a grinding noise as you push the statue.^";
217                  AllowPushDir(); rtrue;
218               }
219               if ((self in TEMPLE_Trap) && (second == s_obj)) {
220                print "^There's a grinding noise as you push the statue south.^";
221                  AllowPushDir(); rtrue;
222               }
223               if ((self in TEMPLE_Trap) && (second == n_obj)) {
224                  give self general;
225                  move rollers to TEMPLE_Trap;
226                  "You start to push the statue north, and hear a strange \
227                  click. Suddenly, two enormous stone rolling pins slide \
228                  down from the east and west sides of the room! \
229                  Desperately, you topple the statue and hide behind it. \
230                  You hear a huge crash!^^\
231                  You open your eyes, surprised to find yourself not \
232                  squashed into pancake. The statue has wedged itself \
233                  neatly between the two giant rollers, effectively \
234                  blocking them!";
235               }
236               "You can't push the statue that way.";
237             Take:
238               "The statue rocks back and forth a bit, but is \
239 far too heavy to take.";
240             Push:
241               print "The statue ";
242               if (self hasnt general)
243               "rocks back and forth a bit.";
244               else "seems to be stuck.";
245            ],                 
246    has static;
247    
248 Object TEMPLE_Trap "Strange Chamber"
249    with description "This is an odd long hallway running north and south. \
250 The stone floor is noticeably concave, sloping upwards to \
251 the east and west. It's like being in a long stone \
252 channel.",
253         name "slope" "channel",
254         s_to TEMPLE_Ent,
255         e_to "The floor gets too steep, and you slide back down.",
256         w_to "The floor gets too steep, and you slide back down.",        
257         n_to [;
258            if (TEMPLE_Statue hasnt general) {
259               deadflag = 1;
260               "You head north, and hear a strange click. Suddenly, \
261               two huge stone rolling pins roll down from the east \
262               and west sides of the room! Desperately, you try to \
263               escape, but the hall is too long, and the stone \
264               rollers too fast. You are crushed to jelly.";
265            }
266            else {
267               print "You step over and around the jammed rollers and \
268               the statue and head north.^";
269               return TEMPLE_1;
270            }
271         ],
272 ;
273
274 Object rollers "stone rollers"
275    with name "roller" "rollers" "stone",
276         initial "There are two stone rollers pinned against the statue.",
277         description "Massive stone rolling pins.",
278         before [;
279 Push, Pull, Attack, Turn, Shake, Squeeze:
280 "The rollers are huge and stuck fast.";
281         ],
282    has static;
283    
284 Object TEMPLE_1 "Bare Chamber"
285    with description "You are in a bare stone chamber with passages leading \
286 north, east, south and west. A stone ladder also heads upwards through a \
287 dark hole in the ceiling.",
288        name "ladder" "hole",
289        s_to TEMPLE_Trap,
290        n_to TEMPLE_1N,
291        e_to TEMPLE_1E,
292        w_to TEMPLE_1W,
293        u_to TEMPLE_2,
294 ;       
295         
296 Object TEMPLE_1W "Small Chamber"
297    with description "You're in a small bare chamber. On one of the walls, \
298    you notice an engraving, almost worn away with age. It seems to be a \
299    picture of a jungle village, and you recognize the pyramid you are currently in. \
300    An exit lies east.",
301       e_to TEMPLE_1,
302 ;
303
304 Object TEMPLE_1N "Small Chamber"
305    with description "You're in a rather bare chamber. On one of the walls, \
306    you see a worn engraving depicting a group of robed figures standing in \
307    some chamber. They are carrying several long reeds. An exit lies south.",
308         s_to TEMPLE_1,
309 ;
310
311 Object TEMPLE_1E "Small Chamber"
312    with description "You're in a small stone chamber. In the center of the \
313    floor is a strange funnel-like depression, which starts as a large \
314    circular opening, and narrows into a very small tunnel below, \
315    probably no wider than your hand. You also see a small round hole \
316    in the ceiling above. An exit heads west.",
317       w_to TEMPLE_1,
318       d_to "You'd never fit down that opening.",
319       u_to "You can't reach the hole, and besides, you'd never fit through \
320 it if you could.",
321 ;
322
323 Object TEMPLE_1_HOLEU "hole" TEMPLE_1E
324    with name "hole",
325         description "You see a dark small hole in the center of the \
326 ceiling.",
327         before [;
328 Rub, Push, Pull, Touch, Receive, LetGo, Search:
329 "The hole is far above your head.";
330         ],
331    has scenery;
332
333 Object TEMPLE_1_Opening "opening" TEMPLE_1E
334    with name "opening" "funnel" "depression" "tunnel",
335         description "A smooth funnel in the stone in the floor, that descends \
336         into darkness as it narrows.",
337         describe [ x;
338            print "^The opening ";
339            if (children(self) == 0)
340               "appears to be empty.";
341            else {
342          print "contains:^";
343          x = children(self);
344          x = FULLINV_BIT + INDENT_BIT + NEWLINE_BIT + RECURSE_BIT;
345          WriteListFrom (child(self), x, 1); 
346          rtrue;
347            }
348         ],
349         before [;
350            Receive:
351              if (noun ~= TEMPLE_Artifact)  {
352                 print "That doesn't quite fit -- ";
353                 if (noun.size > TEMPLE_Artifact.size)
354                    "the funnel becomes too narrow too quickly.";
355                 else "strangely...";
356              }
357            LetGo:
358               "You stick your hand down the small hole, but it must be \
359               quite deep, and you can't quite reach.";
360          ],
361          capacity 1,
362          size 10,
363    has static container open;
364    
365 Object TEMPLE_2 "Bare Chamber"
366    with description "You are in a bare stone chamber with passages leading \
367 north, east, south and west. A stone ladder leads upwards and downwards \
368 into dark holes.",
369        name "ladder" "hole",
370        s_to TEMPLE_2S,
371        n_to TEMPLE_2N,
372        e_to TEMPLE_2E,
373        w_to TEMPLE_2W,
374        u_to TEMPLE_3,
375        d_to TEMPLE_1,
376 ;   
377
378 Object TEMPLE_2N "Small Chamber"
379   with description "You're in a small bare chamber. Engravings on the \
380   wall show several robed figures in a low domed chamber. Some of \
381   the figures are pushing what appears to be reeds down a small hole \
382   in the ground, while others stand by and seem to be praying or \
383   engaged in some ceremony. In a separate scene, similar robed \
384   figures can be seen throwing some poor bound individual off the \
385   top of the pyramid, apparently in some sort of ritualistic \
386   sacrifice. An exit heads south.",
387      s_to TEMPLE_2,
388 ;
389
390 Object TEMPLE_2W "Small Chamber"
391    with description "You're in a small bare chamber. Engravings on \
392    the wall depict several robed figures in a room mostly filled \
393    with water. The figures are watching reeds that seem to fall \
394    from the sky and land in the water. Several reeds are floating \
395    towards an apparent drain in the water, where a few reeds that are thin \
396    enough fall through with the flow of the water. An exit lies east.",
397       e_to TEMPLE_2,
398 ;
399
400 Object TEMPLE_2S "Small Chamber"
401    with description "You're in a rather small chamber. Engravings on \
402    the walls depict several robed figures in a strange room with a \
403    circular depression in the ground, filled with water. Water also \
404    flows into the pool in a thin stream from some undrawn source above. \
405    With the stream of water, a few reeds appear to be falling. A single \
406    figure is collecting the reeds as they fall and placing them in \
407    a long thin vase or container. The significance of \
408    this is uncertain. An exit lies north.",
409       n_to TEMPLE_2,
410 ;
411
412 Object TEMPLE_engravings "engravings"
413    with name "engravings" "engraving",
414         description [; <Look>; ],
415         found_in TEMPLE_1W TEMPLE_1N TEMPLE_2N TEMPLE_2W TEMPLE_2S,
416    has scenery;
417
418 Object TEMPLE_2E "Small Chamber"
419    with description [;
420    print "You're in a bare stone chamber which is partially \
421 filled with a sunken pool of dirty blackish water. Near the south wall \
422 is a depression in the floor that was probably a drain for the pool, given the \
423 apparent water stains; however the level of the pool is below \
424 the point where it would overflow into the drain. Near the center \
425 of the ceiling is a small round hole, right above the pool. An \
426 exit lies west";
427    if ((self hasnt general) && (TEMPLE_3 hasnt general) &&
428         (amulet has worn)) {
429       give self general;
430       ".^^Your amulet suddenly gives off a bright purple flash!";
431    }
432    else ".";
433    ],
434    name "stains",
435    before [;
436       Fill:
437 "The blackish water seems like something you really don't want.";
438    ],  
439    w_to TEMPLE_2,
440 ;  
441    
442 Object TEMPLE_2_HOLEU "hole" TEMPLE_2E
443    with name "hole",
444         description "You see a dark small hole in the center of the \
445 ceiling.",
446         before [;
447 Rub, Push, Pull, Touch, Receive, LetGo, Search:
448 "The hole is far above your head.";
449         ],
450    has scenery;
451
452 Object TEMPLE_2_Opening "opening" TEMPLE_2E
453    with name "opening" "drain" "depression",
454         description "A smooth drain opening in the stone in the floor, \
455         that descends into darkness.",
456         before [;
457            Receive:
458              if ((noun ~= TEMPLE_Artifact) && (noun hasnt is_rod)) ! TODO ADD?
459               "Oddly, that doesn't fit through the small round drain.";
460              else {
461                 if (children(TEMPLE_1_Opening) == 0) 
462                    move noun to TEMPLE_1_Opening;
463                 if (TEMPLE_Artifact in TEMPLE_1_Opening &&
464                     children(TEMPLE_Artifact) == 0)
465                    move noun to TEMPLE_Artifact;
466                 else move noun to TEMPLE_1E;  
467                 CDefArt(noun); " drops into the drain and disappears \
468                 out of sight. Moments later you hear a thump from \
469                 somewhere below.";
470              }
471          ],
472          capacity 1,
473          size 10,
474    has scenery container open;
475
476 Object TEMPLE_Pool "pool" TEMPLE_2E
477    with name "pool" "water",
478         describe [;
479 print "^The black pool is disturbingly calm";
480 if (umbrella in self)
481    ". Floating on the surface is a black open umbrella.";
482 else ".";
483         ],
484         description [;
485            print "Murky black water that seems disturbingly calm";
486            if (umbrella notin self)
487            ".";
488            else
489            ". Floating on the surface is a black open umbrella.";
490            ],
491         before [;
492            Cast:
493               if (the_spell_was == frotz_spell)
494                  "There's a strange gurgling noise as you finish the \
495                  chant, and the black water starts to glow! But, \
496                  to your horror, the inky water seems to absorb the \
497                  light and return to its original blackness! The \
498                  chant fails.";
499                  
500           Enter:
501              deadflag = 1;
502              "You notice the water seems unusually cold as you enter \
503              the pool. Without warning, something grabs your legs and \
504              pulls you under! In pitch black liquid that seems to \
505              absorb all light, you can't defend yourself, or even \
506              see your adversary, who devours you shortly.";
507           Search:
508              "You can't see a thing, the water is blacker than night.";
509           Receive:
510              if (noun == toy_volcano) {
511                 remove noun;
512                 "You drop the toy volcano into the black pool and \
513 watch it sink. Moments later, a large large bubble rises, and \
514 pops at the surface, followed by a strange, belch-like noise!";
515              }
516              if ((noun ~= umbrella) || (umbrella hasnt open)) {
517              remove noun;
518              CDefArt(noun); 
519 print " falls into the pool and slowly sinks into the black water. \
520 Suddenly, ", (the) noun, " seems to get pulled into the pool, \
521 and is soon gone! Something dwells in that pool, apparently, \
522 hidden well in a cover of"; " blackness!";
523              }
524              else {
525                 move umbrella to TEMPLE_Pool;
526                 give umbrella ~light;  ! a 'special-effect'?
527                 "The open umbrella sits in the pool, floating on the \
528                 surface like a cloth dome.";
529              }                      
530         ],
531         size 25,
532    has static container open;
533
534                
535 Object TEMPLE_3 "Collapsed Chamber"
536    with description [;
537    print "You are in a stone chamber that has broken and \
538    eroded walls in several places. Broken stones and dirt are everywhere. \
539    It appears there was once an open archway east, however the heavy stones \
540    that framed it have collapsed. A tiny hole remains, \
541    but it would be an exceptionally tight squeeze. \
542    A stone ladder leads downwards into a dark hole";
543    if ((self hasnt general) && (TEMPLE_2E hasnt general) &&
544        (amulet has worn)) {
545       give self general;
546       ".^^Your amulet suddenly gives off a bright purple flash!";
547    }
548    else ".";
549    ],
550    name "stones" "dirt" "archway" "ladder" "hole",
551        e_to [;
552           if (children(player) ~= 0)
553              "You try to squeeze through the hole, to \
554              no avail. You're carrying too much to fit.";
555           else return TEMPLE_3E;
556        ],
557        d_to TEMPLE_2,
558 ;
559
560 Object TEMPLE_3E "Low Chamber"
561    with description "You're in a tiny low room, dimly lit by strange \
562    glowing lichens and mosses. A tiny exit lies west between some \
563    collapsed rock -- it looks like a very tight squeeze. The room is \
564    otherwise filled with broken rock and the like. A tiny round hole \
565    is in the very center of the floor.",
566    name "lichens" "mosses" "rock",
567    w_to [;
568       if (children(player) ~= 0)
569              "You try to squeeze through the hole, to \
570              no avail. You're carrying too much to fit.";
571           else return TEMPLE_3;
572        ],
573    d_to "You can barely fit your hand in the hole.",
574 has light;
575               
576 Nearby TEMPLE_3_Opening "opening"
577    with name "opening" "hole" "tiny" "round",
578         description "A smooth round hole in the stone in the floor \
579         that descends into darkness.",
580         before [;
581            Receive:
582              if (noun hasnt is_rod)  
583                 "Oddly, that doesn't quite fit.";
584              else {
585                 print "The rod slips through with ease. \
586 Moments later you";
587                 if (umbrella notin TEMPLE_Pool) {
588                    remove noun;  
589                    " hear a splash from somewhere below.";
590                 }
591                 else {
592                 if (children(TEMPLE_1_Opening) == 0) 
593                    move noun to TEMPLE_1_Opening;
594                 else {
595                 if (TEMPLE_Artifact in TEMPLE_1_Opening &&
596                     children(TEMPLE_Artifact) == 0) 
597                    move noun to TEMPLE_Artifact;
598                 else move noun to TEMPLE_1E;  
599                 Achieved(22);
600                 }
601                 !   if (TEMPLE_Artifact notin TEMPLE_1_Opening)
602                 !      move noun to TEMPLE_1_Opening;
603                 !   else 
604                 !      move noun to TEMPLE_Artifact;
605                    " hear a thump from below, followed by a rattling noise, \
606                    and finally another thump, much fainter.";
607                 }
608              }
609          ],
610          capacity 1,
611          size 10,
612    has scenery container open;
613
614
615 ! (Super Zmart) (REMOVED)
616
617 Object stuffed_toy "stuffed toy" MIZNIA_Park
618    with name "toy" "stuffed" "alligator",
619         initial "A stuffed toy has been left unattended on someone's lawn.",
620         description "A cute little stuffed toy alligator.",
621         !weight 5,
622         size 15,
623 ;
624
625
626    
627 Object FROBAR_Ent "In Front of Swank House"
628    with description "You're in front of a rather swank looking house to the \
629         northeast. To the southwest is the rest of Mizniaport.",
630         name "house",
631         sw_to MIZNIA_GUSStop,
632         ne_to [;
633            if (Frobar in Delbins)
634               "You walk up to the front door, only to find it locked.";
635            else return FROBAR_Foyer;
636         ],
637         in_to [;
638            if (Frobar in Delbins)
639               "You walk up to the front door, only to find it locked.";
640            else return FROBAR_Foyer;
641         ],
642    has light;
643    
644 Nearby Frobar_mailbox "mailbox"
645    with name "mailbox" "box",
646         description "A mailbox stands in front of the house. The letter \
647         ~F~ is on one side.",
648         capacity 5,
649         size 15,
650         ! block a receive here?
651    has static container openable;
652    
653 Object Ench_mag "copy of ~Enchanter Monthly~" Frobar_mailbox
654    with name "magazine" "monthly" "enchanter" "copy",
655         description "~Enchanter Monthly~ has been somewhat lacking in \
656         quality content these days (The absence of magic probably \
657         being a large factor behind this). For filler, the editors have \
658         been turning in mostly tabloid drivel articles about ~What ever \
659         happened to so-and-so?~. This month's cover story \
660         suggests that Barsap the magician was actually turned into a tortoise \
661         during the Great Cataclysm, and underwent a slow mutation into a \
662         newt.",
663         !weight 5, 
664         size 15,
665 ;
666               
667
668
669
670 ! **********
671 ! critters/people
672 ! **********
673
674 Object Shaman "jungle shaman"
675    with name "shaman" "tribesman" "native",
676         description [;
677 print "A jungle native with a rather elaborate costume \
678         make of bird feathers and animal hides. He seems old, but wise";
679 if (self hasnt general) 
680         ". Unlike the rest of the natives, this one is not wearing a \
681         fancy feather-and-fur headdress.";
682 else ".";
683         ],        
684         life [;
685            Order:
686               if ((action==##Give) && (noun==Jungle_Map) && (Jungle_Map in self))
687                  "You try to convey your desire for the map with \
688                  gestures. The shaman seems to understand. He \
689                  points to the map, then you. Then, he raises his \
690                  hand in a 'stop' gesture. Then, he points to his \
691                  bare head.";
692               "The shaman does not seem to understand.";
693            Give:
694               if (noun==headdress) {
695                  move Jungle_Map to player;
696                  move headdress to Shaman;
697                  give self general;
698                  "The shaman takes the headdress and places it on his \
699                  head. He smiles, and gives you a strange map in return.";
700               }
701               "The shaman smiles and shakes his head.";
702            Attack, ThrowAt:
703               deadflag = 1;
704               "As you make a threatening move, several of the natives \
705               step forward and pierce your body with stout spears. \
706               It appears they've had bad dealings with outsiders \
707               before.";
708            Show: 
709             if (noun == headdress)
710                "The shaman nods and points to the headdress, then \
711                himself.";
712              "The shaman says something in a language you've never \
713              heard before.";             
714            default: "You can't seem to communicate with him; their \
715            language is completely foreign to you.";           
716         ],
717         before [;
718            Cast:
719               if (the_spell_was == foblub_spell or espnis_spell)
720                  "You begin the sermon, but the shaman and natives \
721                  seem very puzzled by your speech, and clearly \
722                  can't understand a word you're saying. The chant \
723                  fails.";
724         ],
725    has animate;  ! transparent?
726    
727 Object Jungle_Map "jungle map" Shaman
728    with name "map" "jungle",
729         description [;
730         print "The map is somewhat crudely drawn:^^";
731         font off;
732         spaces 23; print "xxxx^";
733         spaces 23; print "xxxx^";
734         spaces 23; print "XXXX^";
735         spaces 22; print "/^";
736         spaces 18; print "XXXX^";
737         spaces 18; print "XXXX^";
738         spaces 18; print "XXXX^";
739         spaces 20; print "I^";
740         spaces 18; print "oooo^";
741         spaces 12; print "<#>---oooo^";
742         spaces 18; print "oooo^";
743         spaces 20; print "I^";
744         spaces 18; print "XXXX^";
745         spaces 18; print "XXXX^";
746         spaces 18; print "XXXX^";
747         font on;
748         ],
749          ! weight 10, 
750         size 10,
751 ;
752
753 Object earth_spirit "earth spirit" TEMPLE_3 ! TEMPLE_3E
754   with name "spirit",
755        description "It looks like a large moving mass of mud and earth, \
756                   in a somewhat man-like shape.",
757        each_turn [ i ;
758        ! spirit attack
759        ! (in general, the 4 spirits are _very_ dangerous.
760        ! There's a 1/5 chance of killing outright, and 2
761        ! chances of doing 10 and 5 points of damage respectively.
762        ! In short, the player needs to realize it's time to swanko,
763        ! and do so, quickly)
764        if (self hasnt general) {
765           give self general ~concealed;    
766           "^Some of the dirt and mud in one corner stirs! A form \
767           made of mud and earth suddenly rises to attack!";
768        }
769        i = random(5);
770        if (i == 1) {
771           deadflag = 1;
772           "^The earth creature moves quickly, and blinds you with \
773           a spray of dirt! You clear your eyes, only to see the \
774           brown mass move forward and bury you! You struggle, but \
775           suffocate in short time.";
776        }
777        if (i == 2) 
778           Player_HP_CUR = Player_HP_CUR - 10;
779        if (i==3) 
780           Player_HP_CUR = Player_HP_CUR - 5;
781        if (Player_HP_CUR <= 0) {
782           deadflag = 1;
783           "^The last blow from the earth spirit was too much for \
784           you, I'm afraid to say. The spirit slowly sludges \
785           towards you for the final blow...";
786        } 
787        print "^The earth spirit ";
788        if (i==2)
789           "clubs you with a heavy pseudopod \
790           made of animated soil and rock. Ouch!";
791        if (i==3) {
792           print "throws some loose soil and sand in \
793           your face! The attack knocks you back, and \
794           you fall into the chamber below!";
795           PlayerTo(TEMPLE_2);
796           rtrue;          
797        }
798        "sends a spray of sharp rocks \
799        your way, and you just dodge in time!";
800        ],
801        before [;
802           Cast:
803             if (the_spell_was == swanko_spell) {
804                remove self;
805                "As you speak the chant, the earth spirit falls back \
806                in fear! You finish the chant, and the earth spirit \
807                collapses into a heap of dirt and mud, banished!";
808             }
809             print "The creature makes a banshee-howl as you chant.^"; 
810        ],
811        life [ ;
812           Attack: 
813             print "You ";
814             if (random(20) >= 8)
815             "strike the earth creature, but your attack passes \
816             harmlessly through it! You hear a strange noise from \
817             the creature -- akin to mad laughter from someone \
818             trapped underground in a coffin.";
819             "attack the earth spirit, but miss!";
820           default: "It's too busy trying to kill you.";
821        ],
822    has animate concealed;   
823         
824 ! **********
825 ! spells/scrolls
826 ! **********
827
828 ! TODO (Dan, why is this declared _here_?)
829 Object white_scroll "white scroll" 
830   class scroll_class,
831   with name "white",
832 ;
833
834 Object huncho_spell "send object to higher plane" white_scroll
835   class spell_class,
836   with name "huncho",
837        magic [;
838           if (second == 0)
839 "You see a brief flash of light, but nothing happens.";
840           if (second == player) {
841              print "You finish the chant";
842 !             if ((location == ATRII_8) && (ATRII_8 hasnt general) &&
843 ! (white_rod_piece in player) && (black_rod_piece in player) &&
844 ! (smoke_rod_piece in player) && (gray_rod_piece in player)) {
845              if ((location == ATRII_8) && (ATRII_8 hasnt general)) {
846                give ATRII_8 general;
847                spell_block = 1;
848                print " and notice the \
849 white streaks of light above widen, as though a rift was \
850 being torn in the sky! You feel a force pulling you \
851 upwards, into the unknown!^";
852                StartTimer(Imp_Liv,10);
853                PlayerTo(Imp_Liv);
854                rtrue;
855              }
856              else 
857                 ", and see a short-lived flash
858 of light above, but nothing else.";
859           }
860           if (second has animate) {
861              "You feel a slight rumbling overhead, but nothing else \
862 happens.";
863           }
864           else {
865              if ((second hasnt static) && (second hasnt scenery) &&
866                  (in_atrii == 0)) {
867                 if (second has clothing) give second ~worn;
868                 move second to ATRII_8;
869                 print "There is a flash of light, and "; DefArt(second); 
870                 " suddenly vanishes!";
871              }
872              "Your chant goes unanswered.";
873           }
874       ],
875 ;
876
877 Object muddy_scroll "muddy scroll" Deep_Jungle
878   class scroll_class,
879   with name "muddy",
880        initial "Partially buried in the mud is a scroll.",
881 ;
882
883 Object throck_spell "grow plant" muddy_scroll
884   class spell_class,
885   with name "throck",
886        magic [;
887              "Your chant goes unanswered. It's intended for plants only.";
888        ],
889 ;
890
891 ! **********
892 ! misc objs
893 ! **********
894
895
896 ! 'earth' rod piece -- BLACK
897 Object black_rod_piece "black rod piece" TEMPLE_3E
898   class rod_class,
899   with name "black",
900        initial "In the center of the room is a short black rod.",
901        description "It's a short section of a rod made of some \
902 undeterminable hard substance, \
903 colored an inky black. A piece of the Rod of \
904 the Ancients, I'd warrant!",
905 ;