Upgrade to GPLv3
[spiritwrak.git] / src / GAMBIT3.INF
1
2 ! (level 3)
3
4 Class Gambit_Room_Lev3_Class
5    with description "You are on the surface of a floating stone \
6 cube. The red light from below seems a bit brighter here.",
7         name "stone" "cube" "light",
8 has light;
9
10 Object GAMBIT_31 "On Giant White Cube"
11    class Gambit_Room_Lev3_Class
12    with w_to
13         [ i ;
14           i = CheckGambit(n312,0,3);
15           if (i ~= 2) return i;
16           else return GAMBIT_W31;
17         ],
18         s_to 
19         [ i ;
20           i = CheckGambit(n313,0,3);
21           if (i ~= 2) return i;
22           else return GAMBIT_W32;
23         ],
24 ;
25
26 Object GAMBIT_32 "On Giant White Cube"
27    class Gambit_Room_Lev3_Class
28    with e_to
29         [ i ;
30           i = CheckGambit(n324,0,3);
31           if (i ~= 2) return i;
32           else return GAMBIT_W31;
33         ],
34         w_to
35         [ i ;
36           i = CheckGambit(n322,0,3);
37           if (i ~= 2) return i;
38           else return GAMBIT_W31;
39         ],
40         s_to 
41         [ i ;
42           i = CheckGambit(n323,0,3);
43           if (i ~= 2) return i;
44           else return GAMBIT_W32;
45         ],
46 ;
47
48 Object GAMBIT_33 "On Giant White Cube"
49    class Gambit_Room_Lev3_Class
50    with e_to
51         [ i ;
52           i = CheckGambit(n334,0,3);
53           if (i ~= 2) return i;
54           else return GAMBIT_W31;
55         ],
56         s_to
57         [ i ;
58           i = CheckGambit(n333,0,3);
59           if (i ~= 2) return i;
60           else return GAMBIT_W32;
61         ],
62 ;
63
64 Object GAMBIT_34 "On Giant White Cube"
65    class Gambit_Room_Lev3_Class
66    with w_to
67         [ i ;
68           i = CheckGambit(n342,0,3);
69           if (i ~= 2) return i;
70           else return GAMBIT_W31;
71         ],
72         n_to 
73         [ i ;
74           i = CheckGambit(n341,0,3);
75           if (i ~= 2) return i;
76           else return GAMBIT_W32;
77         ],   
78         s_to 
79         [ i ;
80           i = CheckGambit(n343,0,3);
81           if (i ~= 2) return i;
82           else return GAMBIT_W32;
83         ],   
84 ;
85
86 Object GAMBIT_35 "On Giant White Cube"
87    class Gambit_Room_Lev3_Class
88    with e_to
89         [ i ;
90           i = CheckGambit(n354,0,3);
91           if (i ~= 2) return i;
92           else return GAMBIT_W31;
93         ],
94         w_to
95         [ i ;
96           i = CheckGambit(n352,0,3);
97           if (i ~= 2) return i;
98           else return GAMBIT_W31;
99         ],
100         n_to 
101         [ i ;
102           i = CheckGambit(n351,0,3);
103           if (i ~= 2) return i;
104           else return GAMBIT_W32;
105         ],   
106         s_to 
107         [ i ;
108           i = CheckGambit(n353,0,3);
109           if (i ~= 2) return i;
110           else return GAMBIT_W32;
111         ],   
112 ;
113        
114 Object GAMBIT_36 "On Giant White Cube"
115    class Gambit_Room_Lev3_Class
116    with e_to
117         [ i ;
118           i = CheckGambit(n364,0,3);
119           if (i ~= 2) return i;
120           else return GAMBIT_W31;
121         ],
122         n_to 
123         [ i ;
124           i = CheckGambit(n361,0,3);
125           if (i ~= 2) return i;
126           else return GAMBIT_W32;
127         ],   
128         s_to 
129         [ i ;
130           i = CheckGambit(n363,0,3);
131           if (i ~= 2) return i;
132           else return GAMBIT_W32;
133         ],   
134 ;
135
136 Object GAMBIT_37 "On Giant White Cube"
137    class Gambit_Room_Lev3_Class
138    with w_to
139         [ i ;
140           i = CheckGambit(n372,0,3);
141           if (i ~= 2) return i;
142           else return GAMBIT_W31;
143         ],
144         n_to 
145         [ i ;
146           i = CheckGambit(n371,0,3);
147           if (i ~= 2) return i;
148           else return GAMBIT_W32;
149         ],   
150 ;
151
152 Object GAMBIT_38 "On Giant White Cube"
153    class Gambit_Room_Lev3_Class
154    with w_to
155         [ i ;
156           i = CheckGambit(n382,0,3);
157           if (i ~= 2) return i;
158           else return GAMBIT_W31;
159         ],
160         n_to 
161         [ i ;
162           i = CheckGambit(n381,0,3);
163           if (i ~= 2) return i;
164           else return GAMBIT_W32;
165         ],
166         e_to
167         [ i ;
168           i = CheckGambit(n384,0,3);
169           if (i ~= 2) return i;
170           else return GAMBIT_W31;
171         ],
172 ;
173
174 Object GAMBIT_39 "On Giant White Cube"
175    class Gambit_Room_Lev3_Class
176    with e_to
177         [ i ;
178           i = CheckGambit(n394,0,3);
179           if (i ~= 2) return i;
180           else return GAMBIT_W31;
181         ],
182         n_to 
183         [ i ;
184           i = CheckGambit(n381,0,3);
185           if (i ~= 2) return i;
186           else return GAMBIT_W32;
187         ],   
188 ;
189
190
191 ! (level 3 niches)
192  
193 Object n313 "southern niche" GAMBIT_31
194    class niche_class
195    with name "southern",
196         counter_niche n341,
197         niche_dir 3;
198 Object n312 "western niche" GAMBIT_31
199    class niche_class
200    with name "western",
201         counter_niche n324,
202         niche_dir 2;
203
204 Object n324 "eastern niche" GAMBIT_32
205    class niche_class
206    with name "eastern",
207         counter_niche n312,
208         niche_dir 4;
209 Object n323 "southern niche" GAMBIT_32
210    class niche_class
211    with name "southern",
212         counter_niche n351,
213         niche_dir 3;
214 Object n322 "western niche" GAMBIT_32
215    class niche_class
216    with name "western",
217         counter_niche n334,
218         niche_dir 2;
219
220 Object n334 "eastern niche" GAMBIT_33
221    class niche_class
222    with name "eastern",
223         counter_niche n322,
224         niche_dir 4;
225 Object n333 "southern niche" GAMBIT_33
226    class niche_class
227    with name "southern",
228         counter_niche n361,
229         niche_dir 3;
230
231 Object n341 "northern niche" GAMBIT_34
232    class niche_class
233    with name "northern",
234         counter_niche n313,
235         niche_dir 1;
236 Object n342 "western niche" GAMBIT_34
237    class niche_class
238    with name "western",
239         counter_niche n354,
240         niche_dir 2;
241 Object n343 "southern niche" GAMBIT_34
242    class niche_class
243    with name "southern",
244         counter_niche n371,
245         niche_dir 3;
246
247 Object n351 "northern niche" GAMBIT_35
248    class niche_class
249    with name "northern",
250         counter_niche n323,
251         niche_dir 1;
252 Object n354 "eastern niche" GAMBIT_35
253    class niche_class
254    with name "eastern",
255         counter_niche n342,
256         niche_dir 4;
257 Object n352 "western niche" GAMBIT_35
258    class niche_class
259    with name "western",
260         counter_niche n364,
261         niche_dir 2;
262 Object n353 "southern niche" GAMBIT_35
263    class niche_class
264    with name "southern",
265         counter_niche n381,
266         niche_dir 3;
267
268 Object n364 "eastern niche" GAMBIT_36
269    class niche_class
270    with name "eastern",
271         counter_niche n352,
272         niche_dir 4;
273 Object n361 "northern niche" GAMBIT_36
274    class niche_class
275    with name "northern",
276         counter_niche n333,
277         niche_dir 1;
278 Object n363 "southern niche" GAMBIT_36
279    class niche_class
280    with name "southern",
281         counter_niche n391,
282         niche_dir 3;
283
284 Object n371 "northern niche" GAMBIT_37
285    class niche_class
286    with name "northern",
287         counter_niche n343,
288         niche_dir 1;
289 Object n372 "western niche" GAMBIT_37
290    class niche_class
291    with name "western",
292         counter_niche n384,
293         niche_dir 2;
294
295 Object n381 "northern niche" GAMBIT_38
296    class niche_class
297    with name "northern",
298         counter_niche n353,
299         niche_dir 1;
300 Object n382 "western niche" GAMBIT_38
301    class niche_class
302    with name "western",
303         counter_niche n394,
304         niche_dir 2;
305 Object n384 "eastern niche" GAMBIT_38
306    class niche_class
307    with name "eastern",
308         counter_niche n372,
309         niche_dir 4;
310
311 Object n391 "northern niche" GAMBIT_39
312    class niche_class
313    with name "northern",
314         counter_niche n363,
315         niche_dir 1;
316 Object n394 "eastern niche" GAMBIT_39
317    class niche_class
318    with name "eastern",
319         counter_niche n382,
320         niche_dir 4;
321
322 ! (level 3 initial wood beam layout)
323 ! wood beam, as two 'halves'
324
325 Object p31 "pine beam" n322 class pine_beam_class;
326 Object p311 "pine beam" n334 class pine_beam_class with number 99;
327
328 ! (side note: with balsa beams, 2nd side need not be 99, since 
329 ! it will always break on the first try, and the default number is 0
330 Object b31 "balsa beam" n312 class balsa_beam_class;
331 Object b311 "balsa beam" n324 class balsa_beam_class;
332 Object b32 "balsa beam" n313 class balsa_beam_class;
333 Object b321 "balsa beam" n341 class balsa_beam_class;
334 Object b33 "balsa beam" n323 class balsa_beam_class;
335 Object b331 "balsa beam" n351 class balsa_beam_class;
336 Object b34 "balsa beam" n333 class balsa_beam_class;
337 Object b341 "balsa beam" n361 class balsa_beam_class;
338 Object b35 "balsa beam" n342 class balsa_beam_class;
339 Object b351 "balsa beam" n354 class balsa_beam_class;
340 Object b36 "balsa beam" n352 class balsa_beam_class;
341 Object b361 "balsa beam" n364 class balsa_beam_class;
342 Object b37 "balsa beam" n343 class balsa_beam_class;
343 Object b371 "balsa beam" n371 class balsa_beam_class;
344 Object b38 "balsa beam" n353 class balsa_beam_class;
345 Object b381 "balsa beam" n381 class balsa_beam_class;
346 Object b39 "balsa beam" n363 class balsa_beam_class;
347 Object b391 "balsa beam" n391 class balsa_beam_class;
348 Object b3a "balsa beam" n372 class balsa_beam_class;
349 Object b3a1 "balsa beam" n384 class balsa_beam_class;
350 Object b3b "balsa beam" n382 class balsa_beam_class;
351 Object b3b1 "balsa beam" n394 class balsa_beam_class;
352
353
354 ! extra goodies...
355
356 Object Gambit_hole "large round hole" GAMBIT_37
357    with name "hole" "round",
358         initial "In the center of the room is a large round \
359 hole, going straight down through the floating cube.",
360         description "A large round hole cut straight through the \
361 giant cube you stand on. All you need is a huge square peg.",
362         size 30,
363         before [;
364           Enter:
365             if (fire_spirit in GAMBIT_37)
366                "The towering fire spirit blocks your way!";
367             print "^You close your eyes and jump straight \
368 into the hole! There is a bright flash of light...^";
369             Achieved(5);
370             PlayerTo(GAMBIT_11);
371             return 2;
372           Receive:
373             if (fire_spirit in GAMBIT_37)
374                "The towering fire spirit is in your way!";
375             move noun to GAMBIT_11;
376             print "You drop "; DefArt(noun); 
377             " into the hole. There is a bright flash of light, and \
378 the object disappears!";
379           Rub, Push, Pull, Touch, Squeeze, Turn, Shake:
380 "I don't know how to do that to a giant hole.";
381         ],
382         after [;
383           Search:
384              if (fire_spirit in GAMBIT_37)
385                "The towering fire spirit fills the hole currently!";
386 else "Looking through the hole, you can see a reddish haze \
387 far below.";
388         ],
389    has static container open enterable;
390
391 ! rod piece -- SMOKE
392 Object smoke_rod_piece "smoke rod piece" GAMBIT_37
393   class rod_class,
394   with name "smoke",
395        initial "Sitting on the floor is a short smoke-colored rod.",
396        description "It's a short section of a rod made of some \
397 undeterminable hard substance, \
398 colored smoke. A piece of the Rod of \
399 the Ancients, no doubt!",
400 ;
401
402
403 Object fire_spirit "fire spirit" GAMBIT_37
404   with name "spirit",
405        description "It looks like a tower of animated flame.",
406        each_turn [ i ;
407        ! spirit attack
408        ! (in general, the 4 spirits are _very_ dangerous.
409        ! There's a 1/5 chance of killing outright, and 2
410        ! chances of doing 10 and 5 points of damage respectively.
411        ! In short, the player needs to realize it's time to swanko,
412        ! and do so, quickly)
413        if (self hasnt general) {
414             give self general ~concealed;    
415             "^Suddenly, a flash of flame bursts through the hole \
416 in the center of the cube! A living tower of flame attacks!";            
417        }
418        i = random(5);
419        if (i == 1) {
420           deadflag = 1;
421           "^The fire creature engulfs you in a deadly inferno! \
422 You are burned to a crisp.";          
423        }
424        if (i == 2) 
425           Player_HP_CUR = Player_HP_CUR - 10;
426        if (i==3) 
427           Player_HP_CUR = Player_HP_CUR - 5;
428        if (Player_HP_CUR <= 0) {
429           deadflag = 1;
430           "^The last blow from the fire spirit was too much for \
431 you, I'm afraid to say. The spirit senses your \
432 weakness and engulfs you in flame.";          
433        } 
434        print "^The fir spirit ";
435        if (i==2)
436           "singes you with a jet of fire!";
437        if (i==3) {
438           "sends a small ball of \
439 flame your way! You get slightly burned!";          
440        }
441        "tries to torch you in a sheet of \
442 flame, but you evade just in time!";       
443        ],
444        before [;
445           Cast:
446             if (the_spell_was == swanko_spell) {
447                remove self;
448                "As you speak the chant, the fire spirit falls back \
449 in fear! You finish the chant, and the fire spirit \
450 dissipates into harmless smoke, banished!";
451             }
452             print "Crackling flame drowns out your chant.^";
453        ],
454        life [ ;
455           Attack: 
456             if (random(20) >= 8)
457             "You strike the fire creature, but your attack passes \
458             harmlessly through it! You hear a crackling noise \
459 that could pass for laughter.";            
460             "You attack the fire spirit, but miss!";
461           default: "It's too busy trying to kill you.";
462        ],
463    has animate concealed;