forked from smcameron/wordwarvi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
levels.h
549 lines (477 loc) · 20 KB
/
levels.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
/*
(C) Copyright 2007,2008, Stephen M. Cameron.
This file is part of wordwarvi.
wordwarvi is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
wordwarvi is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with wordwarvi; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef __LEVELS_H__
#define __LEVELS_H__
/*
*
* This file controls how the levels look, to some degree. If you want
* to make your own custom levels, this is the file to modify.
*
* How to make a new level.
*
* 1. Copy an existing level.
* a. Look for the comment below that says "level 1 starts here:"
* and another comment that says "level 1 ends here. ^^^".
* Copy the text between those comments to just above the
* line which says:
*
* INSERT NEW LEVELS ABOVE THIS LINE ^^^^
*
* 2. Modify the new level:
* a. Change the name of the level.
* There are two structures which make up a level, the
* level_obj_descriptor_entry array, and the
* level_descriptor_entry. You must change the name of
* both of them to something not yet used:
*
* Change "level_1_obj" to something else, "my_level_objects"
* or maybe some descriptive term, like maybe your level has a
* lot of rockets and nothing else, so maybe you call it
* "rocket_level". Likewise, change "level1" to a new name
* which you make up.
*
* b. Customize the objects:
* The level_obj_descriptor_entry array contains a list of objects
* which get added to the game. Each row in the table contains
* 4 items, as follows:
*
* 1. Object type,
* 2. How many objects of this type this row adds.
* 3. X position in the game.
* 4. how much space to put between each object.
*
* The value for Object type must be one of these:
*
OBJ_TYPE_AIRSHIP
OBJ_TYPE_BALLOON
OBJ_TYPE_CRON
OBJ_TYPE_FUEL
OBJ_TYPE_SHIP
OBJ_TYPE_GUN
OBJ_TYPE_ROCKET
OBJ_TYPE_SAM_STATION
OBJ_TYPE_GDB
OBJ_TYPE_OCTOPUS
OBJ_TYPE_TENTACLE
OBJ_TYPE_JAMMER
OBJ_TYPE_WORM
OBJ_TYPE_KGU
OBJ_TYPE_JET
See below for a description of what each one is.
How many objects is pretty self explanatory.
X position is expressed as a percentage of the width
of the game world. A value of 50 would put the first
item smack in the center of the game world. The special
value "DO_IT_RANDOMLY" makes the game choose a random
location.
The offset controls how far apart multiple objects are
spaced. If the X value is DO_IT_RANDOMLY, then this
spacing value is not used (but you must specify a value
anyway, 0, in that case is good.
Some examples:
{ OBJ_TYPE_JET, 15, DO_IT_RANDOMLY, 0 },
This says add 15 jets, randomly sprinkled around on the terrain.
{ OBJ_TYPE_JET, 1, 30, 0 },
{ OBJ_TYPE_JET, 1, 50, 0 },
{ OBJ_TYPE_JET, 1, 80, 0 },
The above adds 3 jets, one at 30% across the game's terrain,
one at 50%, and one at 80%.
{ OBJ_TYPE_JET, 5, 20, 10 },
The above adds 5 jets, beginning at 20% across the terrain,
and evenly spaced at 10 unit intervals.
* c. Customize the level_descriptor_entry values.
Each level can be further customized by specifying:
small scale roughness,
large scale roughness,
laser_fire_chance,
number of bridges
number of bombs
number of gravity bombs.
Find the lines below near the bottom of this file
which begin "NEW_LEVEL(....)" and have a comment that
says, "--- level descriptors begin here ---"
The NEW_LEVEL macro constructs a level_descriptor_entry.
The format is:
NEW_LEVEL(levelvar, levelobjectlist, ssr, lsr, lfc, nbr, nbo, ngb, lspd, mkgh, levelname);
levelvar is the name of the variable holding your level description. e.g., my_level.
levelobjectlist is the name of the structure you made in step 2b,
above, e.g. "my_level_objects".
ssr is "small scale roughness." It controls how smooth or rough
the terrain is at a small scale. It should be between 0 and 1.
Values closer to zero are smoother, values closer to 1 are rougher.
A value of 0.15 is pretty good. Experiment to see what it does.
lsr is "large scale roughness." It controls how smooth or rough
the terrain is at a large scale. It should be between 0 and 1.
Values closer to zero are smoother, values closer to 1 are rougher.
A value of 0.09 or so is pretty good. Experiment to see what it does.
lfc is "laser fire chance", and it controls how aggressive or tame
the laser guns in the game are. A value of 20 is very aggressive.
smaller values are less aggressive, larger values more aggressive.
Experiment with it.
nbr is the number of bridges to add to the terrain. Actually it is
a maximum number, you may get less bridges. If your terrain is too
smooth, there might not be enough places to add bridges. This is mostly
a cosmetic thing. A value of 5 or so is fine.
nbo is the number of bombs the player starts the level with. Normally
this is NBOMBS, which is 100. If you want to make a very hard level,
you might set nbr to something small, or zero to take bombs out of
the game. (Some ground based things are hard to kill without bombs though,
so keep that in mind.
ngb is the number of gravity bombs the player starts out with. Normally,
this is 3, as they are kind of like the "smart bomb" in this game. You
can set it to what you like for your level.
lspd is the laser speed, either SLOW_LASER, or FAST_LASER. This is an
integer factor which is multiplied into the velocity of the laserbolts
coming from the laser guns.
mkgh is the maximum kernel gun (laser) health, or in other words the number
of laser hits it takes to kill. Easy is 1, which means 1 shot will kill it.
3 or 4 makes tham significantly harder. (Also they heal over time.)
levelname is the name of your level, e.g: "My Level". This string will
appear in the game at the beginning of the level.
Example:
NEW_LEVEL(my_level, my_level_obj, 0.09, 0.04, 20, 5, 100, 3, "My Level");
This creates a new level named my_level ("My Level") using the objects specified in
my_level_obj list (not shown), with small scale roughness of 0.09,
large scale roughness of 0.04, laser fire chance of 20, up to 5
bridges, the player has 100 bombs, and 3 gravity bombs.
* 3. Add your level into the level list.
*
* Go to the bottom of this file, and find the code that looks like:
*
* struct level_descriptor_entry *leveld[] = {
*
* near the comment that says:
*
* "Add your new level name above this line, with an ampersand."
*
* This is an array of levels. Add your level which you defined
* with the NEW_LEVEL() macro in step 2c, above, into the list,
* preceded by an ampersand, and followed by a comma.
*
* You would add a line into the array like:
*
* &my_level,
*
* The position in the array controls which level it is. E.g.
* if yours is first in the array, it will be level 1. if it's
* 2nd, it will be level 2, etc.
*
* 4. Testing your level:
*
* To test your level, the easiest way is to make it level 1, put
* it first in the array of levels, then of course, build the
* game (type "make") and run it. Once you have the level working
* to your liking, you can then move it into the correct position
* in the array.
*
* That's basically it.
*
*
*
* If you make any particularly cool levels, feel free to send them to
* me at [email protected]. Maybe I'll put them in
* the game.
*
*/
/* Object types, just arbitrary constants used to uniquely id object types */
/***********************************************************/
/*
* VALID OBJECT TYPES DESCRIBED BELOW
*
*/
/* The ones below are the ones which can be custom placed. */
#define OBJ_TYPE_AIRSHIP 'a' /* Blimp */
#define OBJ_TYPE_BALLOON 'B' /* Balloons... don't really do anything yet. */
#define OBJ_TYPE_CRON 'C' /* The green things that pick up humans */
#define OBJ_TYPE_FUEL 'f' /* Fuel tanks. */
#define OBJ_TYPE_SHIP 'w' /* Bill Gates's state of the art warship. */
#define OBJ_TYPE_GUN 'g' /* ground based laser gun */
#define OBJ_TYPE_ROCKET 'r' /* ground based rockets */
#define OBJ_TYPE_BIG_ROCKET 'I' /* ground based rockets */
#define OBJ_TYPE_SAM_STATION 'S' /* ground based missile launching station */
#define OBJ_TYPE_GDB 'd' /* GDB enemy */
#define OBJ_TYPE_OCTOPUS 'o' /* a big ol' octopus */
#define OBJ_TYPE_TENTACLE 'j' /* a big ol' tentacle */
#define OBJ_TYPE_JAMMER 'J' /* A radar jamming station */
#define OBJ_TYPE_WORM 'W' /* A worm */
#define OBJ_TYPE_KGUN 'k' /* a "kernel gun", inverted laser gun suspended on a tower */
#define OBJ_TYPE_JET '-' /* a jet plane that swoops by and shoots missiles */
#define OBJ_TYPE_GUNWHEEL 'O' /* a big gun wheel */
/* The ones above are the ones which can be custom placed. */
/***********************************************************/
/* These cannot be custom placed, they are generally for more transient */
/* objects like laser beams, and bullets and what not. */
#define OBJ_TYPE_BOMB 'p'
#define OBJ_TYPE_BUILDING 'b'
#define OBJ_TYPE_CHAFF 'c'
#define OBJ_TYPE_HUMAN 'h'
#define OBJ_TYPE_LASER 'L'
#define OBJ_TYPE_MISSILE 'm'
#define OBJ_TYPE_HARPOON 'H'
#define OBJ_TYPE_SOCKET 'x'
#define OBJ_TYPE_SPARK 's'
#define OBJ_TYPE_PIXIE_DUST '.'
#define OBJ_TYPE_BRIDGE 'T'
#define OBJ_TYPE_SYMBOL 'z'
#define OBJ_TYPE_FLOATING_MESSAGE 'M'
#define OBJ_TYPE_BULLET '>'
#define OBJ_TYPE_PLAYER '1'
#define OBJ_TYPE_DEBRIS 'D'
#define OBJ_TYPE_VOLCANO 'v'
#define OBJ_TYPE_TRUSS 't'
#define OBJ_TYPE_JETPILOT 'e'
#define OBJ_TYPE_REINDEER 'R'
#define OBJ_TYPE_HOUSE '^'
#define OBJ_TYPE_PRESENT 'G'
#define OBJ_TYPE_SCENERY '9'
#define OBJ_TYPE_TESLA 'V'
#define NHOUSES 10
#define DO_IT_RANDOMLY (-1)
/* Type definitions for level describing structures. */
struct level_obj_descriptor_entry {
int obj_type;
int nobjs;
int x;
int xoffset;
};
struct level_descriptor_entry {
struct level_obj_descriptor_entry *objdesc;
int nobj_desc_entries;
double small_scale_roughness;
double large_scale_roughness;
int laser_fire_chance;
int nbridges;
int nbombs;
int ngbombs;
int jetpilot_firechance;
int laser_velocity_factor;
int max_kgun_health;
char *level_name;
};
#define NEW_LEVEL(levelvar, theobjlist, ssr, lsr, lfc, nbr, nbo, ngb, jfc, lspd, mkgh, levelname) \
struct level_descriptor_entry levelvar = { \
theobjlist, \
sizeof(theobjlist) / sizeof(theobjlist[0]), \
ssr, lsr, lfc, nbr, nbo, ngb, jfc, lspd, mkgh, levelname }
/* Below, the game's levels are defined. */
/***************************************************************************/
/* level 1 starts here: */
struct level_obj_descriptor_entry level_1_obj[] = {
{ OBJ_TYPE_ROCKET, 140, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_JET, 0, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_FUEL, 20, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_JAMMER, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_CRON, 15, DO_IT_RANDOMLY, 0 },
/* { OBJ_TYPE_SHIP, 0, DO_IT_RANDOMLY, 0 }, */
{ OBJ_TYPE_SAM_STATION, 3, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_GUN, 10, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_KGUN, 30, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_AIRSHIP, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_WORM, 2, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_BALLOON, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_GDB, 3, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_OCTOPUS, 1, DO_IT_RANDOMLY, 0 },
};
/* level 1 ends here. ^^^ */
/***************************************************************************/
/* level 2 */
struct level_obj_descriptor_entry level_2_obj[] = {
{ OBJ_TYPE_ROCKET, 25, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_JET, 15, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_FUEL, 19, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_JAMMER, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_CRON, 15, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_SHIP, 0, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_SAM_STATION, 5, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_GUN, 11, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_KGUN, 30, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_AIRSHIP, 2, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_WORM, 2, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_BALLOON, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_GDB, 4, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_OCTOPUS, 1, 85, 1 },
{ OBJ_TYPE_TESLA, 1, 30, 1 },
{ OBJ_TYPE_BIG_ROCKET, 3, DO_IT_RANDOMLY, 0 },
/* { OBJ_TYPE_TENTACLE, 0, DO_IT_RANDOMLY, 0 }, */
};
/* end of level 2 */
/* level 3 */
struct level_obj_descriptor_entry level_3_obj[] = {
{ OBJ_TYPE_ROCKET, 25, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_JET, 2, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_FUEL, 18, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_JAMMER, 2, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_CRON, 15, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_SHIP, 0, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_SAM_STATION, 8, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_GUN, 30, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_KGUN, 30, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_AIRSHIP, 3, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_WORM, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_BALLOON, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_GDB, 7, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_OCTOPUS, 1, 85, 1 },
{ OBJ_TYPE_OCTOPUS, 1, 45, 1 },
{ OBJ_TYPE_BIG_ROCKET, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_TESLA, 1, 60, 0 },
{ OBJ_TYPE_TESLA, 1, 40, 0 },
{ OBJ_TYPE_GUNWHEEL, 1, 95, 0 },
/* { OBJ_TYPE_TENTACLE, 0, DO_IT_RANDOMLY, 0 }, */
};
/* end of level 3 */
/* level 4 */
struct level_obj_descriptor_entry level_4_obj[] = {
{ OBJ_TYPE_ROCKET, 5, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_JET, 2, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_FUEL, 25, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_JAMMER, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_CRON, 10, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_SHIP, 0, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_SAM_STATION, 5, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_GUN, 15, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_KGUN, 20, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_AIRSHIP, 4, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_WORM, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_BALLOON, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_GDB, 30, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_OCTOPUS, 1, 85, 1 },
{ OBJ_TYPE_OCTOPUS, 1, 25, 1 },
{ OBJ_TYPE_BIG_ROCKET, 15, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_GUNWHEEL, 1, 75, 0 },
/* { OBJ_TYPE_TENTACLE, 0, DO_IT_RANDOMLY, 0 }, */
};
/* end of level 4 */
/* level 5 */
struct level_obj_descriptor_entry level_5_obj[] = {
{ OBJ_TYPE_ROCKET, 5, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_JET, 4, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_FUEL, 23, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_JAMMER, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_CRON, 10, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_SHIP, 0, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_SAM_STATION, 8, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_GUN, 18, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_KGUN, 25, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_AIRSHIP, 4, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_WORM, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_BALLOON, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_GDB, 9, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_OCTOPUS, 1, 75, 1 },
{ OBJ_TYPE_OCTOPUS, 1, 35, 1 },
{ OBJ_TYPE_OCTOPUS, 1, 85, 1 },
{ OBJ_TYPE_BIG_ROCKET, 15, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_TESLA, 1, 40, 0 },
{ OBJ_TYPE_TESLA, 1, 60, 0 },
{ OBJ_TYPE_GUNWHEEL, 1, 25, 0 },
{ OBJ_TYPE_GUNWHEEL, 1, 75, 0 },
/* { OBJ_TYPE_TENTACLE, 0, DO_IT_RANDOMLY, 0 }, */
};
/* end of level 5 */
/* level 6 */
struct level_obj_descriptor_entry level_6_obj[] = {
{ OBJ_TYPE_ROCKET, 25, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_JET, 7, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_FUEL, 18, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_JAMMER, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_CRON, 10, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_SHIP, 0, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_SAM_STATION, 9, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_GUN, 28, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_KGUN, 28, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_AIRSHIP, 4, 90, 0 },
{ OBJ_TYPE_WORM, 3, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_BALLOON, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_GDB, 12, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_OCTOPUS, 1, 75, 1 },
{ OBJ_TYPE_OCTOPUS, 1, 15, 1 },
{ OBJ_TYPE_OCTOPUS, 1, 65, 1 },
{ OBJ_TYPE_BIG_ROCKET, 15, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_TESLA, 1, 40, 0 },
{ OBJ_TYPE_TESLA, 1, 60, 0 },
{ OBJ_TYPE_TESLA, 1, 80, 0 },
{ OBJ_TYPE_TESLA, 1, 90, 0 },
{ OBJ_TYPE_TESLA, 1, 10, 0 },
{ OBJ_TYPE_GUNWHEEL, 1, 25, 0 },
{ OBJ_TYPE_GUNWHEEL, 1, 50, 0 },
{ OBJ_TYPE_GUNWHEEL, 1, 75, 0 },
{ OBJ_TYPE_GUNWHEEL, 1, 15, 0 },
/* { OBJ_TYPE_TENTACLE, 0, DO_IT_RANDOMLY, 0 }, */
};
/* end of level 6 */
/* "jet" level begins */
struct level_obj_descriptor_entry jet_level_obj[] = {
/* { OBJ_TYPE_ROCKET, 25, DO_IT_RANDOMLY, 0 }, */
{ OBJ_TYPE_JET, 55, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_FUEL, 15, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_JAMMER, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_CRON, 10, DO_IT_RANDOMLY, 0 },
/* { OBJ_TYPE_SHIP, 0, DO_IT_RANDOMLY, 0 }, */
/* { OBJ_TYPE_SAM_STATION, 5, DO_IT_RANDOMLY, 0 }, */
/* { OBJ_TYPE_GUN, 11, DO_IT_RANDOMLY, 0 }, */
/* { OBJ_TYPE_KGUN, 0, DO_IT_RANDOMLY, 0 }, */
{ OBJ_TYPE_AIRSHIP, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_WORM, 2, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_BALLOON, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_GDB, 1, DO_IT_RANDOMLY, 0 },
{ OBJ_TYPE_OCTOPUS, 1, 85, 1 },
/* { OBJ_TYPE_TENTACLE, 0, DO_IT_RANDOMLY, 0 }, */
};
/* "jet" level ends */
/* -------------------- INSERT NEW LEVELS ABOVE THIS LINE ^^^^ ----------- */
#define NBOMBS 100 /* Number of bombs allocated to player at beginning of levels */
#define NGBOMBS 3 /* Number of gravity bombs allocated at beginning of levels */
/* Some sample laser aggressiveness levels. */
#define DOCILE_LASER 2 /* chance/1000 that flak guns (laser turrets) will fire if in range */
#define LAZY_LASER 8
#define AVERAGE_LASER 13
#define AGGRESSIVE_LASER 20
#define KILLER_LASER 25
#define SLOW_LASER 1
#define FAST_LASER 2
#define EASY_KGUNS 1
#define MEDIUM_KGUNS 2
#define HARD_KGUNS 5
#define NBRIDGES 2 /* max initial number of bridges in terrain (less, if no valleys) */
/* ---------------------level descriptors begin here.---------------------- */
NEW_LEVEL(jet_level, jet_level_obj, 0.11, 0.09, AVERAGE_LASER, NBRIDGES + 1,
NBOMBS, NGBOMBS, AGGRESSIVE_LASER, SLOW_LASER, EASY_KGUNS, "Welcome, Noob!");
NEW_LEVEL(level1, level_1_obj, 0.14, 0.04, LAZY_LASER, NBRIDGES,
NBOMBS, NGBOMBS, KILLER_LASER, SLOW_LASER, EASY_KGUNS, "Rocket Alley");
NEW_LEVEL(level2, level_2_obj, 0.17, 0.09, LAZY_LASER, NBRIDGES + 1,
NBOMBS, NGBOMBS, AGGRESSIVE_LASER, SLOW_LASER, EASY_KGUNS, "Vi! Vi! Vi!");
NEW_LEVEL(level3, level_3_obj, 0.23, 0.15, AVERAGE_LASER, NBRIDGES + 1,
NBOMBS, NGBOMBS, AGGRESSIVE_LASER, SLOW_LASER, EASY_KGUNS, "Joy of VIctory");
NEW_LEVEL(level4, level_4_obj, 0.29, 0.17, AVERAGE_LASER, NBRIDGES + 1,
NBOMBS, NGBOMBS, AGGRESSIVE_LASER, FAST_LASER, MEDIUM_KGUNS, "Debugging Hell");
NEW_LEVEL(level5, level_5_obj, 0.24, 0.22, AVERAGE_LASER, NBRIDGES + 1,
NBOMBS, NGBOMBS, AGGRESSIVE_LASER, FAST_LASER, MEDIUM_KGUNS, "EMACSed Out");
NEW_LEVEL(level6, level_6_obj, 0.14, 0.22, AGGRESSIVE_LASER, NBRIDGES + 3,
NBOMBS, NGBOMBS, AGGRESSIVE_LASER, FAST_LASER, HARD_KGUNS, "Revenge of RMS");
/* ---------------------level descriptors end here.---------------------- */
/* This is an array of all the levels. Add your new level
* which you defined above, into the list below, where indicated: */
struct level_descriptor_entry *leveld[] = {
&jet_level, /* 1st level */
&level1, /* 2nd level */
&level2, /* 3rd level, etc. */
&level3,
&level4,
&level5,
&level6,
/* Add your new level name above this line, with an ampersand. */
NULL,
};
#endif