typedef struct _missile_type_ MissileType;
This structure defines the base type information of all missiles. It contains all information that all missiles of the same type shares. The fields are filled from the configuration files (CCL). See (define-missile-type).
The missile-type structure members:
Object type (future extensions).
Unique identifier of the missile-type, used to reference it in config files and during startup.
File containing the image (sprite) graphics of the missile. The file can contain multiple sprite frames. The sprite frames for the different directions are placed in the row. The different animations steps are placed in the column. But the correct order depends on MissileType::Class ( _missile_class_, ...). Missiles like fire have no directions, missiles like arrows have a direction.
Size (width and height) of a frame in the image. All sprite frames of the missile-type must have the same size.
Total number of sprite frames in the graphic image.
There is currently a limit of 127 sprite frames, which can be lifted if needed.
Number of directions missile can face.
Sound of the missile, if fired.
Impact sound for this missile.
Can hit the unit that have fired the missile.
Can't hit the units of the same player, that has the missile fired.
Class of the missile-type, defines the basic effects of the missile. Look at the different class identifiers for more informations (_missile_class_, MissileClassNone, ...). This isn't used if the missile is handled by Missile::Controller.
Delay in game cycles after the missile generation, until the missile animation and effects starts. Delay denotes the number of display cycles to skip before drawing the first sprite frame and only happens once at start.
This are the number of game cycles to wait for the next animation or the sleeping between the animation steps. All animations steps use the same delay. 0 is the fastest and 255 the slowest animation.
The speed how fast the missile moves. 0 the missile didn't move, 1 is the slowest speed and 32 s the fastest supported speed. This is how many pixels the missiles moves with each animation step. The real use of this member depends on the MisleType::Class or Missile::Controller.
Determines the range that a projectile will deal its damage. A range of 0 will mean that the damage will be limited to only where the missile was directed towards. So if you shot a missile at a unit, it would only damage that unit. A value of 1 only effects the field on that the missile is shot. A value of 2 would mean that for a range of 1 around the impact spot, the damage for that particular missile would be dealt. All fields that aren't the center get only 50% of the damage.
The name of the next (other) missile to generate, when this missile reached its end point or its life time is over. So it can be used to generate a chain of missiles.
Pointer to the impact missile-type. Used during run time.
Missile sprite image loaded from MissileType::File
|impact sound for this missile-type |
|missile can't hit own units |
|missile name |
|number of directions missile can face |
|missile can hit the owner |
|missile width in pixels |
|object type (future extensions) |
|impact missile-type name |
|missile damage range |
|fired sound |
|number of sprite frames in graphic |
|const void *||OType|
|missile speed |
|missile start delay |
|missile sleep |
|missile produces an impact |
|missile height in pixels |
|missile class |
|missile sprite file |