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 stephenmcameron@gmail.com. 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
|