// Argh's Standard Commands Script
// This script is released under the terms of the GNU license.
// It may be used by anyone, for any purpose, so long as you adhere to the GNU license.
#ifndef STANDARD_COMMANDS_GPL_H_
#define STANDARD_COMMANDS_GPL_H_
//
// Vector-based special effects
//
#define SFXTYPE_VTOL 1
#define SFXTYPE_THRUST 2
#define SFXTYPE_WAKE1 3
#define SFXTYPE_WAKE2 4
#define SFXTYPE_REVERSEWAKE1 5
#define SFXTYPE_REVERSEWAKE2 6
//
// Point-based (piece origin) special effects
//
#define SFXTYPE_POINTBASED 256
#define SFXTYPE_WHITESMOKE (SFXTYPE_POINTBASED | 1)
#define SFXTYPE_BLACKSMOKE (SFXTYPE_POINTBASED | 2)
#define SFXTYPE_SUBBUBBLES 256 | 3
//
#define SHATTER 1 // The piece will shatter instead of remaining whole
#define EXPLODE_ON_HIT 2 // The piece will explode when it hits the ground
#define FALL 4 // The piece will fall due to gravity instead of just flying off
#define SMOKE 8 // A smoke trail will follow the piece through the air
#define FIRE 16 // A fire trail will follow the piece through the air
#define BITMAPONLY 32 // The piece will just show the default explosion bitmap.
//
// Bitmap Explosion Types
//
#define BITMAP_GPL 10000001
//
// Indices for set/get value
#define ACTIVATION 1 // set or get
#define STANDINGMOVEORDERS 2 // set or get
#define STANDINGFIREORDERS 3 // set or get
#define HEALTH 4 // get (0-100%)
#define INBUILDSTANCE 5 // set or get
#define BUSY 6 // set or get (used by misc. special case missions like transport ships)
#define PIECE_XZ 7 // get
#define PIECE_Y 8 // get
#define UNIT_XZ 9 // get
#define UNIT_Y 10 // get
#define UNIT_HEIGHT 11 // get
#define XZ_ATAN 12 // get atan of packed x,z coords
#define XZ_HYPOT 13 // get hypot of packed x,z coords
#define ATAN 14 // get ordinary two-parameter atan
#define HYPOT 15 // get ordinary two-parameter hypot
#define GROUND_HEIGHT 16 // get
#define BUILD_PERCENT_LEFT 17 // get 0 = unit is built and ready, 1-100 = How much is left to build
#define YARD_OPEN 18 // set or get (change which plots we occupy when building opens and closes)
#define BUGGER_OFF 19 // set or get (ask other units to clear the area)
#define ARMORED 20 // SET or GET. Turns on the Armored state.
#define IN_WATER 28 // GET only. If unit position Y less than 0, then the unit must be in water (0 Y is the water level).
#define CURRENT_SPEED 29 // SET only, if I'm reading the code right. Gives us a new speed for the next frame ONLY.
#define VETERAN_LEVEL 32 // SET or GET. Can make units super-accurate, or keep them inaccurate.
#define MAX_ID 70 // GET only. Returns maximum number of units - 1
#define MY_ID 71 // GET only. Returns ID of current unit
#define UNIT_TEAM 72 // GET only. Returns team of unit given with parameter
#define UNIT_BUILD_PERCENT_LEFT 73 // GET only. BUILD_PERCENT_LEFT, but comes with a unit parameter.
#define UNIT_ALLIED 74 // GET only. Is this unit allied to the unit of the current COB script? 1=allied, 0=not allied
#define MAX_SPEED 75 // SET only. Alters MaxVelocity for the given unit.
//
//Special Commands, custom hacks
#define GPL_SPEED_CONSTANT 512
//
#endif // STANDARD_COMMANDS_GPL_H_