Luola
http://www.saunalahti.fi/~laakkon1/linux/luola/index.php
---------------------------------------------------------------

Luola is a simple yet addictive arcade game where you fly a little V-shaped ship inside caverns and try
to blow up other players.
It is inspired by V-Wing, an old finnish caveflying game (it was my favourite).
Many of luola's weapons are basicly copied from vwing and you can even use the old V-Wing levels !
(You need to convert the level into a pcx first. See LEVELFILE for more information)

Installation
--------------------------------------------------------------
See INSTALL for generic installation instructions.
But most of the time, you just do this:
./configure
make
make install

By default, sounds are compiled in. If you do not want to compile sounds in,
use --disable-sounds.
If you have SDL_gfx installed, by default, luola uses it for some drawing options.
If you don't wan't luola to use SDL_gfx, pass configure --disable-sdl-gfx
Luola can use Truetype fonts if you have SDL_ttf installed.
If you don't want to enabled truetype support, pass configure --disable-ttf
If compilation fails complaining something about gettext, try configuring with
--with-included-gettext . If this doesn't work, try --disable-nls

make install puts the actual game binary in /usr/local/bin and
the data files to /usr/local/share/luola/
If you don't want to install the game, just play it straight out the src/ directory,
edit the config.h (after running configure) and remove or comment the "#define PACKAGE_DATA_DIR" line

Using joysticks
---------------------------------------------------------------
To use joysticks, you must have joystick support in your kernel.
(Note: Kernel version 2.4.10 had some problems with joysticks, upgrading to 2.4.16 fixed it)
Read some HOWTOs on the subject and joystick.txt under the Documentation/input directory on your
kernel sources.
To use two joysticks on an Y-cable load the 'analog' driver like this:
insmod analog js=y-pad
USB joysticks are also pretty good. (Basicly you need the hid driver and joydev + their dependencies)
Since of luola 1.0.0, analog joysticks are no longer supported.
(You have to use a digital joystick, preferrably a pad)
The support was removed because analog joysticks are really not very good
with this type of games. And the code was ugly and attracted bugs.

Some usage notes
----------------------------------------------------------------

Screenshots:
 You can take a screenshot anytime by pressing F10. (that is, if you WM doesn't trap that key)
 If you don't like F10, you can change it in console.c
 The screenshot will be named luola_*.bmp .
 The * is the number of ticks that has elapsed since luola was started. This way, you can take multiple
 screenshots and keep them in chronological order.

Fullscreen:
 To enter fullscreen mode, run luola with the --fullscreen parameter.
 You can change the fullscreen mode to be the default mode by changing the #define FULLSCREEN from 0 to 1
 in the 'defines.h' file.
 If luola runs in fullscreen mode by default and you want to run it in windowed mode, use the --window paremeter.
 You can also switch between fullscreen and windowed mode by pressing F12 any time in the game.
 See the FAQ if you can't get fullscreen mode to work under Linux.

Playing the game:

 * Players control their ships with the keys previously selected in key configuration. (the defaults can be changed in game.c)
 * Pressing esc ends the level
 * The level ends when there is only one ship remaining or the last surviving ship has landed on a base
 * Pressing Weapon1 and downkey at the same time ejects the pilot. The pilot can also be ejected when the ship is dead (gray) by pressing Weapon2
 * You can return to your empty ship by walking over it. You can also take over empty enemy ships this way...
 * When on a base, hold down downkey and press left/right to switch special weapons
   (Note that when switching weapons, you lose the ammo you have. Water can't turn to missiles, right ? ;)

Pilot controls:

 * Move with left and right keys.
 * Shoot with Weapon1 key
 * Weapon2 key opens the parachute or cuts the rope
 * Jump with the up key. While jumping, pressing the up key again shoots the rope in a 45 degree angle.
 * While on the rope, weapon2 drops you free. You can sling back and forth and climb up and down with the arrow keys
 * Shoot the rope straight up with downkey
 * You can lock the pilot controls by pressing down Weapon2 key. When locked, the pilot does not move, so you can aim
   your gun. When locked, the pilot does not automaticly aim at enemies
 * You can kick another player out of his/hers ship by first attaching the ninja rope to it, getting as close as possible
   and then pressing up+Weap1

Team play:
  Team play is just like normal game with 4 players, except that some rules are enforced by the game itself.
  The difference is that you don't attack your team-mates (you can, but it's stupid) and the game ends when the
  either of the teams is completely destroyed.
  These are the weapons related specials that apply to team-play:
   * Homing missile only targets enemy team-members

Game end modes:
  A level can end in two different ways.
  It can end immediately after all opponents have been destroyed, or after last surviving player has landed on a base.
  If the level does not have any bases, the level ends immediately when only one player is left (or one team in case of teamplay)

Configuration file:
  The configuration file contains the player key confs and game settings.
  You should not need to modify it by hand (you can if you really want to, but be careful,
  incorrect data can crash the game !)
  See the Tweaking section for more information on configuration files

Function keys:

  * F10 anytime, takes a screenshot.
  * F12 anytime, switches between fullscreen and windowed mode.
  * F1 during gameplay, toggle radar.
  * Pause key during gameplay, pauses/resumes the game

Weapons
-------------------------------------------------------------------------------
  Here are the weapons currently implemented. If you have a good idea for a new
  weapon, email me ! (but remember to check my TODO list first!)
  
  Cannon:
    This is the basic weapon. Shoots a projectile that explodes. Very simple ;)
  Grenade:
    Fires a projectile similiar to the cannonball, except it contains a shrapnel grenade.
  MegaBomb:
    Drops a very powerfull shrapnel bomb straight down.
  Homing missile:
    A missile that homes to the nearest enemy ship.
  Cloaking device:
    Turns your ship invisible. It cannot be seen even by turrets.
    If you eject your player, the cloaking device goes into a powersave-mode and can keep the ship cloaked for ever.
    This way, you can hide your ship and go adventuring...
  Magnetic mine:
    A floating mine that quickly jumps to nearby ships
  Mine:
    A Floating mine that explodes when any ship gets too close. It also has a builtin
    cloaking device and can only be seen from a short distance
  Shield:
    A powerful shield that repels all projectiles
    Note. Your ship is not repaired while the shield is up. This is due to
    the fact that the shield repels all repair personnel and droids...
  Ghost Ship:
    Phases the ship partially into a parallel dimension, allowing it to pass thru any solid material
  After Burner:
    Boosts your ships speed
  Jump engine:
    Generates a jump-point. First you drop the jump-point exit, second activation will open the hyperspace
    portal between the two points
  Clay bomb:
    Shoots an ultra-compressed lump of dirt that quickly expands when it hits something
  Plastic Explosive:
    A small projectile is launched a short distance from the rear of the ship, containt liquid explosive
    that spreads to the ground
  Snowball:
    Launches a projectile containing a powerfull freeze-agent that can freeze a ship, making it completely inmanouverable
    until it hits the ground or water. Can also freeze water.
  Dart:
    Puts the ship's engines in overdrive. The ship will lose all moneuverability and will charge at a high velocity to the
    direction it was pointing at. Causes immense damage to opponents when it hits
  Landmine:
    A remote detonateable mine that is placed on the ground. The mine is shot a short distance behid the ship,
    so you will have to be close to the ground. Detonation will send shrapnel hurling at the direction your ship
    was pointing when the mine was laid.
  Auto-repair system
    Repairs the ship on the fly.
  Infantry
    Drops small soldiers that shoot at enemy ships.
    The soldiers cloak and can only be seen from a short distance.
    The soldiers also attack enemy helicopters that are in range.
  Helicopter
    Launches a small attack helicopter. The helicopter cannot be launched underwater.
    The helicopters can also attack enemy pilots in addition to enemy infantry. 
  Speargun
    Fires a spear. If the spear hits another player, the ship is impaled and hurled at the direction
    the spear was going. If soft land is encountered, the ship sinks slighty in it.
  Gravity mine
    A mine that pulls ships and projectiles at it. You can use it to create a deadly tornado of bullets...
  Grav-gun
    Shoots a gravitymine from the rear of the ship that keeps on going until it is outside the game area.
  Shotgun:
    Shoots a spray of bullets. Very simple yet very effective...
  Thunderbolt:
    Electric attack that creates a field of lightning around the ship. Very powerfull, but the range is also very short.
    Hold down button2 to fire.
  Rocket:
    Fires a slowmoving rocket equipped with an explosive warhead almost as powerful as the megabomb
  Microwave cannon:
    Fires an energy beam that travels thru terrain.
    While not very powerful, it is quick and consumes very little energy.
  Boomerang bomb:
    Fires an explosive devices with a builtin homing system.
    So, like a boomerang, it returns to your ship if it doesnt hit anything
  Remote control:
    Allows you to control enemy ships (doesn't work on teammates).
    When an enemy gets close enough (remote's initial range is quite short) active the RC and you will
    gain control over the enemy's ship. After the connection has been established, you can fly around and fire the primary
    weapon. Secondary weapon cannot be used, it will break the connection.
  Dividing mine:
    A very special mine that divides every few seconds. Can quickly take over massive areas making fly-thru almost impossible
  Tag-gun:
    Shoots a tag that attaches to a ship or to ground. If it hits the ground, coloured smoke will be emitted.
    If it hits a ship, it will leave a smoketrail making the ship easier to track. It makes cloaking device useless, since
    missiles can home onto a tagged ship, even if invisible.
  Mush:
    Shoots a projectile that leaves a trail of bullets. Very destructive if shot at a high angle.
  Watergun:
    A high pressure waterjet. Water is shot a short distance in front of the ship.
    Hurls enemy ships and is an effective weapon against ground troops and turrets.
    Hold down button2 to fire. When fired underwater, watertanks are refilled
  Ember:
    Drops a huge lump of hardened napalm. The lump breaks into smaller pieces as it falls,
    eventually forming into a line of fiery embers capable of demolishing entire cities
  Acid:
    Fires a projectile filled with a highly corrosive molecular acid.
    When the projectile hits something, the casing is broken and the acid released.
    It will burn a large hole in terrain and eat a way at your ships armour.

Levels
------------------------------------------------------------------------------

Download the level packs from the luola homepage.
The level pack contains descriptions of the levels.

Level specials
-------------------------------------------------------------------------------

  Jump gates:
    Jump-gates provide permanent wormholes between two or more points in the level.
    They activate when a player flies over them.
    You can set the number of jump-gates per level from the level settings screen.

  Turrets:
    These are automatic turrets that fire at everybody.
    There are three types of turrets.
    1. A normal turret, has an ordinary cannon.
    2. Grenade launcher, fires grenade shells
    3. SAM-Site, fires homing missiles (these have their own sprite)

    You can change the number of turrets from the level settings screen.

  Critters:
    Unlike other level specials, these don't do anything, except walk (or fly or swim)
    around and get killed.
    (Note. Technically, infantry and helicopters are also critters, so some critters actually do something)
    You can enable/disable critters from the level settings screen.
    You can also set the number of different critter species. (Including infantry and helicopters)

Tweaking
---------------------------------------------

These tweaks are done by editing the source/header files themselves. They are quite
simple, and you don't need any programming ability.

Take a look at defines.h . You can find all sorts of settings there.
For example, you can change wheter or not luola starts in fullscreenmode by default or the names of the configuration
or playlist files.

Here are the most important things you might want to take a look at:
You change these by commenting (put // in the beginning of the line) or uncommenting (remove the //) them.
Or if they define a value, change the value (do NOT comment those lines !)

#define HIRES_PROJ		This enables the pixel perfect collision checking for projectiles. Disabling this might make the
				game a bit faster, but projectiles will fly straight thru thin walls.
#define	DONT_UPDATE_DEAD	Comment this line out so the screens of dead players continue to get updated.
#define VWING_STYLE_SMOKE	Make the ship exhaust look like it did in vwing. Try it and see which you like better
#define HEARINGRANGE ???.0	How far away can you hear things.
#define MAX_WIND_TIME	???	How long can a wind last before it changes direction.

#define VWING_LEVEL_SCALE_X and Y	How vwing levels are scaled. (Note that only integers are supported)
#define WINGS_LEVEL_SCALE_X and Y	How wings levels are scaled. (Note that only integers are supported)

Then there are bunch of speeds. These are rather self explanatory.

#define SNOWFLAKE_INTERVAL	???	How often are new snowflakes created (smaller number means more often)
#define DIVIDINGMINE_INTERVAL	???	How fast do dividingmines divide.


Beyond this are things that you should not touch if you don't know what you are doing.

Configuration files are located in ~/.luola/ directory.
This directory was introduced in luola 1.0.0, before that the files were
all in ~/
The names of the files were also changed:
.luola_conf -> luola.cfg
.luola_startup -> startup.cfg
.luola_playlist -> battle.pls

You can also put a custom fonts.cfg file into the .luola directory.
The file there will override the common one in the fonts directory

