#define Max_Marine_Names	12
#define Max_Weapon_Types	53 // This must always be 2 more than the total

// Entity Type
#define Marine 			0	// The squad members
#define Civilian			1  // Some innocent bystander
#define Enemy				2  // Some definite enemy type
#define Rocket				3  //
#define Explosion   		4	// Individual Explosion
#define Splat				5  // Gunfire, Blood & Ricochet splats
#define Offsite 			6  // Offsite arrow
#define Enemy2				7  // The other enemy!
#define Turret				8  // A Gun Turret!
#define CPU		 			9  // A Computer
#define Prisoner			10 // A prisoner that needs to be rescued!
#define Laser				11 // This is like a rocket, except it looks different
#define Grenade			12 // An arcing grenade
#define Flame				13 // Flames for flame thrower
#define Land_Mine			14 // land mines to step or drive onto!
#define Spye_Ball			15 // They can see and alert!
#define Container			16 // They can hold stuff!
#define Enemy3				17 // this is the Sp2 Normal limited enemy!
#define Planet				18 // This is a planet type that points to a map!
#define Flying_Merc		19 // You bet!
#define Flying_Vehicle	20 //
#define Driving_Vehicle	21
#define Scentity1			22
#define Scentity2			23
#define Scentity3			24
#define Scentity4			25
#define Scentity5			26
#define Scentity6			27
#define Scentity7			28
#define Scentity8			29
#define Scentity9			30
#define Scentity10		31
#define Scentity11		32
#define Scentity12		33
#define Scentity13		34
#define Scentity14		35
#define Scentity15		36
#define Scentity16		37
#define Flying_Civilian 38
#define Flying_Enemy		39
#define Simple_Object 	40
#define Big_Explosion 	41
#define Dead_Body			42
#define Box					43
#define Trapped_Person	44
#define Skeletal_Merc	45

#define Max_Entity_Types 46
#define Max_Chroma_Colors 35

// Objects or Weapons   This must match WEAPONS.TXT!!!!
#define OW_Empty				0
#define OW_Rocket_Launcher 1
#define OW_Laser_Gun			2
#define OW_Flamethrower    3
#define OW_Grenade			4
#define OW_Holdout			5
#define OW_Demo_Charge     6
#define OW_Red_Card        7
#define OW_Black_Card      8
#define OW_Heavy_Armor     9
#define OW_Med_Armor      	10
#define OW_Light_Armor		11
#define OW_Spye_Ball			12
#define OW_Bomb_Detector 	13
#define OW_Rockets			14
#define OW_Flame_Fuel 		15
#define OW_Energy_Pack		16
#define OW_6Pk_Launcher		17
#define OW_Halo_Assault_Rkt 18
#define OW_Napalm_Hurler   19
#define OW_Balrog_Flamegun 20
#define OW_Delaser_Rifle   21
#define OW_Pulse_Rifle     22
#define OW_Machine_Pistol  23
#define OW_Spartan_Shotgun 24
#define OW_MPMG_14         25
#define OW_APS554_pistol   26
#define OW_Q5_Bull_Pistol  27
#define OW_Blister_Charge  28
#define OW_Explosive_Charge 29
#define OW_Plasma_Rifle    30
#define OW_Fussion_Cannon  31
#define OW_Medic_Kit		 	32
#define OW_Prism_Cloak	   33
#define OW_Paralyzer_Bomb  34
#define OW_Tool_Kit			35
#define OW_Data_Disk			36
#define OW_Nav_Chip			37
#define OW_Holo_Disk			38
#define OW_Halo_Charge		39
#define OW_Blister_Bomb		40
#define OW_No_Pest_Strip	41
#define OW_Flies				42
#define OW_Pet					43
#define OW_Shovel				44
#define OW_Metal_Detector	45
#define OW_Hover_Engine		46
#define OW_Money				47
#define OW_Digger_Fuel		48
#define OW_Sceptre			49
#define OW_Battery			50
#define OW_Trans_Belt 		51

#ifdef ENTITY_H
#define entxt_

// ----MARINE
int Marine_Speed_Delay[] = { 5,4,3,2,2,1,1,0,0,0,0 };

// Entity Que Orders Sizes
unsigned char Que_Order_Size[] = {
	0, // Que_Size_None						 0
	3, // Que_Size_Go_To                 1
	3, // Que_Size_Circular_To           2
	2, // Que_Size_Fire_Rocket           3
	3, // Que_Size_Stealth_Go_To         4
	1, // Que_Size_Orders_Connector      5
	2, // Que_Size_Say_Something         6
	4, // Que_Size_Say_Random_3          7
	3, // Que_Target_Rocket					 8
	2, // Que_Size_Open_Door             9
	3, // Que_Target_Flamethrower        10
	2, // Que_Size_Follow_Order          11
	2, // Que_Size_Flame_Thrower_Shot	 12
	3, // Que_Size_Give_Order          	 13
	2, // Que_Rnd_T_Strings				 	 14
	3, // Que_Size_Take_Order          	 15
	3, // Que_Grenade_Target_Order		 16
	4, // Que_XY_Target_Grenade_Order	 17
	4, // Que_XY_Target_Rocket_Order		 18
	4, // Que_XY_Target_Flame_Order	 	 19
	2, // Que_Heal_Order						 20
	3, // Que_Target_Gun						 21
	4, // Que_XY_Target_Gun					 22
	1	// Que_Pause_Until_Attacked		 23
	};

// *************** ENTITY TYPE STRINGS *************************
// Entity Type Data Strings must be indexed into by Entity Type!!!!
unsigned char Entity_Distance_Per_Anim_Frame[Max_Entity_Types] = {
	4, // Marine
	4, // Civilian
	4, // Enemy
	8, // Rocket
	1, // Explosion
	1, // Splat
	4, // Offsite
	4, // Enemy2
	0, // Turret
	0, // CPU
	2, // Prisoner
	8, // Laser
	3, // Grenade 			Multiplier for XY_Offset moves!!!
	4, // Flame
	0, // Land_Mine
	1, // Spye_Ball
	0, // Container
	4, // Enemy3
	4, // Planet
	4, // Flying_Merc
	4, // Flying_Vehicle
	4, // Driving_Vehicle
	0, // Scentity1
	0, // Scentity2
	0, // Scentity3
	0, // Scentity4
	0, // Scentity5
	0, // Scentity6
	0, // Scentity7
	0, // Scentity8
	0, // Scentity9
	0, // Scentity10
	0, // Scentity11
	0, // Scentity12
	0, // Scentity13
	0, // Scentity14
	0, // Scentity15
	0, // Scentity16
	4, // Flying_Civilian
	4,  // Flying_Enemy
	1,	// Simple Object
	1, //Big Explosion
	0,  // Dead Body
	0, // Box
	0,  // Trapped_Person
	0 // Skeletal_Merc
	};

int Entity_Foot_Width[Max_Entity_Types] = {
	15, // Marine
	15, // Civilian
	15, // Enemy
	7, // Rocket
	23, // Explosion
	15, // Splat
	15, // Offsite
	15, // Enemy2
	15, // Turret
	15, // CPU
	15, // Prisoner
	7, // Laser
	7, // Grenade
	7, // Flame
	7, // Land_Mine
	7, // Spye_Ball
	15, // Container
	15, // Enemy3
	15, // Planet
	15, // Flying_Merc
	15, // Flying_Vehicle
	15, // Driving_Vehicle
	0, // Scentity1
	0, // Scentity2
	0, // Scentity3
	0, // Scentity4
	0, // Scentity5
	0, // Scentity6
	0, // Scentity7
	0, // Scentity8
	0, // Scentity9
	0, // Scentity10
	0, // Scentity11
	0, // Scentity12
	0, // Scentity13
	0, // Scentity14
	0, // Scentity15
	0, // Scentity16
	15, // Flying_Civilian
	15, // Flying_Enemy
	15,	// Simple Object
	31, // Big Explosion
	7,  // Dead Body
	15, // Box
	15,  // Trapped_Person
	15 // Skeletal_Merc
	};

int Entity_Foot_Height[Max_Entity_Types] = {
	15, // Marine
	15, // Civilian
	15, // Enemy
	7, // Rocket
	23, // Explosion
	15, // Splat
	7, // Offsite
	15, // Enemy2
	15, // Turret
	15, // CPU
	15, // Prisoner
	7, // Laser
	7, // Grenade
	7, // Flame
	7, // Land_Mine
	7, // Spye_Ball
	15, // Container
	15, // Enemy3
	15, // Planet
	15, // Flying_Merc
	15, // Flying_Vehicle
	15, // Driving_Vehicle
	0, // Scentity1
	0, // Scentity2
	0, // Scentity3
	0, // Scentity4
	0, // Scentity5
	0, // Scentity6
	0, // Scentity7
	0, // Scentity8
	0, // Scentity9
	0, // Scentity10
	0, // Scentity11
	0, // Scentity12
	0, // Scentity13
	0, // Scentity14
	0, // Scentity15
	0, // Scentity16
	15, // Flying_Civilian
	15,  // Flying_Enemy
	15, // Simple Object
	31, // Big Explosion
	7,  // Dead Body
	15, // Box
	15,  // Trapped_Person
	15 // Skeletal_Merc
	};

int Entity_Height[Max_Entity_Types] = {
	24, // Marine
	24, // Civilian
	24, // Enemy
	8, // Rocket
	16, // Explosion
	16, // Splat
	9, // Offsite
	24, // Enemy2
	24, // Turret
	24, // CPU
	24, // Prisoner
	8, // Laser
	8, // Grenade
	8, // Flame
	8, // Land_Mine
	16, // Spye_Ball
	13, // Container
	24, // Enemy3
	24, // Planet
	24, // Flying_Merc
	24, // Flying_Vehicle
	24, // Driving_Vehicle
	0, // Scentity1
	0, // Scentity2
	0, // Scentity3
	0, // Scentity4
	0, // Scentity5
	0, // Scentity6
	0, // Scentity7
	0, // Scentity8
	0, // Scentity9
	0, // Scentity10
	0, // Scentity11
	0, // Scentity12
	0, // Scentity13
	0, // Scentity14
	0, // Scentity15
	0, // Scentity16
	24, // Flying_Civilian
	24,  // Flying_Enemy
	24,	// Simple Object
	32, // Big Explosion
	24,  // Dead Body
	16, // Box
	24,  // Trapped_Person
	24  // Skeletal_Merc
	};

int Entity_Width[Max_Entity_Types] = {
	24, // Marine
	24, // Civilian
	24, // Enemy
	8, // Rocket
	16, // Explosion
	16, // Splat
	16, // Offsite
	24, // Enemy2
	24, // Turret
	24, // CPU
	24, // Prisoner
	8, // Laser
	8, // Grenade
	8, // Flame
	8, // Land_Mine
	8, // Spye_Ball
	16, // Container
	24, // Enemy3
	24, // Planet
	24, // Flying_Merc
	24, // Flying_Vehicle
	24, // Driving_Vehicle
	0, // Scentity1
	0, // Scentity2
	0, // Scentity3
	0, // Scentity4
	0, // Scentity5
	0, // Scentity6
	0, // Scentity7
	0, // Scentity8
	0, // Scentity9
	0, // Scentity10
	0, // Scentity11
	0, // Scentity12
	0, // Scentity13
	0, // Scentity14
	0, // Scentity15
	0, // Scentity16
	24, // Flying_Civilian
	24,  // Flying_Enemy
	24,	// Simple Object
	32, // Big Explosion
	24,  // Dead Body
	16, // Box
	24,  // Trapped_Person
	24  // Skeletal_Merc
	};

unsigned char Entity_Feet_X_Start_Offset[Max_Entity_Types] = {
	16, // Marine
	16, // Civilian
	16, // Enemy
	8, // Rocket
	0, // Explosion
	0, // Splat
	0, // Offsite
	16, // Enemy2
	8, // Turret
	8, // CPU
	16, // Prisoner
	8, // Laser
	8, // Grenade
	8, // Flame
	8, // Land_Mine
	0, // Spye_Ball
	8, // Container
	16, // Enemy3
	16, // Planet
	16, // Flying_Merc
	16, // Flying_Vehicle
	16, // Driving_Vehicle
	0, // Scentity1
	0, // Scentity2
	0, // Scentity3
	0, // Scentity4
	0, // Scentity5
	0, // Scentity6
	0, // Scentity7
	0, // Scentity8
	0, // Scentity9
	0, // Scentity10
	0, // Scentity11
	0, // Scentity12
	0, // Scentity13
	0, // Scentity14
	0, // Scentity15
	0, // Scentity16
	16, // Flying_Civilian
	16,  // Flying_Enemy
	16,	// Simple Object
	0, // Big Explosion
	8,  // Dead Body
	0, // Box
	16,  // Trapped_Person
	16  // Skeletal_Merc
	};

unsigned char Entity_Feet_Y_Start_Offset[Max_Entity_Types] = {
	16, // Marine
	16, // Civilian
	16, // Enemy
	8, // Rocket
	0, // Explosion
	0, // Splat
	8, // Offsite
	16, // Enemy2
	8, // Turret
	8, // CPU
	16, // Prisoner
	8, // Laser
	8, // Grenade
	8, // Flame
	8, // Land_Mine
	16, // Spye_Ball
	8, // Container
	16,  // Enemy3
	16, // Planet
	16, // Flying_Merc
	16, // Flying_Vehicle
	16, // Driving_Vehicle
	0, // Scentity1
	0, // Scentity2
	0, // Scentity3
	0, // Scentity4
	0, // Scentity5
	0, // Scentity6
	0, // Scentity7
	0, // Scentity8
	0, // Scentity9
	0, // Scentity10
	0, // Scentity11
	0, // Scentity12
	0, // Scentity13
	0, // Scentity14
	0, // Scentity15
	0, // Scentity16
	16, // Flying_Civilian
	16,  // Flying_Enemy
	16,	// Simple Object
	0, // Big Explosion
	8,  // Dead Body
	8, // Box
	16,  // Trapped_Person
	16  // Skeletal_Merc
	};

unsigned char Entity_Sight_Width[Max_Entity_Types] = {
	2, // Marine
	2, // Civilian
	2, // Enemy
	2, // Rocket
	2, // Explosion
	2, // Splat
	2, // Offsite
	2, // Enemy2
	2, // Turret
	2, // CPU
	2, // Prisoner
	2, // Laser
	2, // Grenade
	2, // Flame
	2, // Land_Mine
	2, // Spye_Ball
	2, // Container
	2, // Enemy3
	2, // Planet
	2, // Flying_Merc
	2, // Flying_Vehicle
	2, // Driving_Vehicle
	0, // Scentity1
	0, // Scentity2
	0, // Scentity3
	0, // Scentity4
	0, // Scentity5
	0, // Scentity6
	0, // Scentity7
	0, // Scentity8
	0, // Scentity9
	0, // Scentity10
	0, // Scentity11
	0, // Scentity12
	0, // Scentity13
	0, // Scentity14
	0, // Scentity15
	0, // Scentity16
	2,  // Flying_Civilian
	2,  // Flying_Enemy
	2,	// Simple Object
	0, // Big Explosion
	0,  // Dead Body
	0, // Box
	0,  // Trapped_Person
	0 // Skeletal_Merc
	};

unsigned char Entity_Sight_Distance[Max_Entity_Types] = {
	40, // Marine
	40, // Civilian
	40, // Enemy
	40, // Rocket
	40, // Explosion
	40, // Splat
	40, // Offsite
	40, // Enemy2
	40, // Turret
	40, // CPU
	40, // Prisoner
	40, // Laser
	40, // Grenade
	40, // Flame
	40, // Land_Mine
	40, // Spye_Ball
	40, // Container
	40,  // Enemy3
	40, // Planet
	40, // Flying_Merc
	40, // Flying_Vehicle
	40, // Driving_Vehicle
	0, // Scentity1
	0, // Scentity2
	0, // Scentity3
	0, // Scentity4
	0, // Scentity5
	0, // Scentity6
	0, // Scentity7
	0, // Scentity8
	0, // Scentity9
	0, // Scentity10
	0, // Scentity11
	0, // Scentity12
	0, // Scentity13
	0, // Scentity14
	0, // Scentity15
	0, // Scentity16
	4,  // Flying_Civilian
	4,  // Flying_Enemy
	4,	// Simple Object
	0, // Big Explosion
	0,  // Dead Body
	0, // Box
	0,  // Trapped_Person
	0 // Skeletal_Merc
	};

int Inventory_Icon_Type_Loc_X[] = {
// Objects or Weapons   This must match WEAPONS.TXT!!!!
4, //#define OW_Rocket_Launcher 1
5, //#define OW_Laser_Gun			2
10, //#define OW_Flamethrower    3
6, //#define OW_Grenade			4
1, //#define OW_Holdout			5
9, //#define OW_Demo_charge     6
10, //#define OW_Red_Card        7
1, //#define OW_Black_Card      8
4, //#define OW_Heavy_Armor     9
3, //#define OW_Med_Armor      	10
2, //#define OW_Light_Armor		11
5, //#define OW_Spye_Ball			12
6, //#define OW_Bomb_Detector 	13
7, //#define OW_Rockets			14
8,  //#define OW_Flame_Fuel 		15
9, //#define OW_Energy_Pack	16
3, //#define OW_6Pk_Launcher		17
5, //#define OW_Halo-Assault-Rkt 18
1, //#define OW_Napalm-Hurler   19
2, //#define OW_Balrog-Flamegun 20
5, //#define OW_Delaser-Rifle   21
6, //#define OW_Pulse-Rifle     22
7, //#define OW_Machine-Pistol  23
8, //#define OW_Spartan-Shotgun 24
9, //#define OW_MPMG-14         25
3, //#define OW_APS554-pistol   26
7, //#define OW_Q5-Bull-Pistol  27
7, //#define OW_Blister-Charge  28
8, //#define OW_Explosive-Charge 29
1, //#define OW_Plasma-Rifle    30
10, //#define OW_Fussion-Cannon  31
2, //#define OW_Medic-Kit		 32
1, //#define OW_Prism-Cloak	 33
6, //#define OW_Paralyzer-Bomb  34
5, //#define OW_Tool_Kit			35
1, //#define OW_Data_Disk			36
7,  //#define OW_Nav_Chip			37
10, //#define OW_Holo_Disk			38
1, //#define OW_Halo_Charge		39
1, //#define OW_Blister_Bomb		40
1, //#define OW_No_Pest_Strip	41
1, //#define OW_Flies				42
1, //#define OW_Pet					43
1, //#define OW_Shovel				44
1, //#define OW_Metal_Detector	45
1, //#define OW_Hover_Engine		46
1, //#define OW_Money				47
1, //#define OW_Digger_Fuel		48
1, //#define OW_Sceptre			49
1 //#define OW_Battery			50
};

int Inventory_Icon_Type_Loc_Y[] = {
// Objects or Weapons   This must match WEAPONS.TXT!!!!
2, //#define OW_Rocket_Launcher 1
1, //#define OW_Laser_Gun			2
1, //#define OW_Flamethrower    3
2, //#define OW_Grenade			4
1, //#define OW_Holdout			5
2, //#define OW_Demo_charge     6
2, //#define OW_Red_Card        7
3, //#define OW_Black_Card      8
3, //#define OW_Heavy_Armor     9
3, //#define OW_Med_Armor      	10
3, //#define OW_Light_Armor		11
3, //#define OW_Spye_Ball			12
3, //#define OW_Bomb_Detector 	13
3, //#define OW_Rockets			14
3,  //#define OW_Flame_Fuel 		15
3, // #define OW_Energy_Pack	16
2, // #define OW_6Pk_Launcher		17
2, // #define OW_Halo-Assault-Rkt 18
2, // #define OW_Napalm-Hurler   19
2, // #define OW_Balrog-Flamegun 20
1, // #define OW_Delaser-Rifle   21
1, // #define OW_Pulse-Rifle     22
1, // #define OW_Machine-Pistol  23
1, // #define OW_Spartan-Shotgun 24
1, // #define OW_MPMG-14         25
1, // #define OW_APS554-pistol   26
1, // #define OW_Q5-Bull-Pistol  27
2, // #define OW_Blister-Charge  28
2, // #define OW_Explosive-Charge 29
4, // #define OW_Plasma-Rifle    30
3, // #define OW_Fussion-Cannon  31
4, //#define OW_Medic-Kit		 32
1, //#define OW_Prism-Cloak	 33
2, //#define OW_Paralyzer-Bomb  34
4, //#define OW_Tool_Kit			35
3, //#define OW_Data_Disk			36
2,  //#define OW_Nav_Chip			37
2, //#define OW_Holo_Disk			38
1, //#define OW_Halo_Charge		39
1, //#define OW_Blister_Bomb		40
1, //#define OW_No_Pest_Strip	41
1, //#define OW_Flies				42
1, //#define OW_Pet					43
1, //#define OW_Shovel				44
1, //#define OW_Metal_Detector	45
1, //#define OW_Hover_Engine		46
1, //#define OW_Money				47
1, //#define OW_Digger_Fuel		48
1, //#define OW_Sceptre			49
1 //#define OW_Battery			50
};

unsigned char Weapon_Type_Colors[] = {
	0, // Nothing
	16, // #define OW_Rocket_Launcher 1
	48, // #define OW_Laser_Gun		 2
	16, // #define OW_Flamethrower    3
	16, // #define OW_Grenade			4
	0, // #define OW_Holdout			5
	0, // #define OW_Demo_charge     6
	0, // #define OW_Red_Card        7
	0, // #define OW_Black_Card      8
	0, // #define OW_Heavy_Armor     9
	0, // #define OW_Med_Armor      	10
	0, // #define OW_Light_Armor		11
	0, // #define OW_Spye_Ball			12
	0, // #define OW_Bomb_Detector 	13
	0, // #define OW_Rockets			14
	0, // #define OW_Flame_Fuel 		15
	0, // #define OW_Energy_Pack		16
	48, // #define OW_6Pk_Launcher	17
	0, // #define OW_Halo_Assault_Rkt 18
	48, // #define OW_Napalm_Hurler   19
	64, // #define OW_Balrog_Flamegun 20
	0, // #define OW_Delaser_Rifle   21
	0, // #define OW_Pulse_Rifle     22
	0, // #define OW_Machine_Pistol  23
	0, // #define OW_Spartan_Shotgun 24
	0, // #define OW_MPMG_14         25
	0, // #define OW_APS554_pistol   26
	0, // #define OW_Q5_Bull_Pistol  27
	0, // #define OW_Blister_Charge  28
	0, // #define OW_Explosive_Charge 29
	0, // #define OW_Plasma_Rifle    30
	0, // #define OW_Fussion_Cannon  31
	0, // #define OW_Medic_Kit		 	32
	0, // #define OW_Prism_Cloak	   33
	64, // #define OW_Paralyzer_Bomb  34
	0, // #define OW_Tool_Kit			35
	0, // #define OW_Data_Disk			36
	0, // #define OW_Nav_Chip			37
	0, // #define OW_Holo_Disk			38
	0, // #define OW_Halo_Charge		39
	0, // #define OW_Blister_Bomb		40
	0, // #define OW_No_Pest_Strip	41
	0, // #define OW_Flies				42
	0, // #define OW_Pet					43
	0, // #define OW_Shovel				44
	0, // #define OW_Metal_Detector	45
	0, // #define OW_Hover_Engine		46
	0, // #define OW_Money				47
	0, // #define OW_Digger_Fuel		48
	0, // #define OW_Sceptre			49
	0 // #define OW_Battery			50
	};

#else
#define entxt_ extern

entxt_ unsigned char Weapon_Type_Colors[Max_Weapon_Types];
entxt_ unsigned char Que_Order_Size[23];

//---Marine
entxt_ int Marine_Speed_Delay[10];

// *************** ENTITY TYPE STRINGS *************************
// Entity Type Data Strings must be indexed into by Entity Type!!!!
entxt_ unsigned char Entity_Distance_Per_Anim_Frame[Max_Entity_Types];
entxt_ int Entity_Foot_Width[Max_Entity_Types];
entxt_ int Entity_Foot_Height[Max_Entity_Types];
entxt_ int Entity_Height[Max_Entity_Types];
entxt_ int Entity_Width[Max_Entity_Types];
entxt_ unsigned char Entity_Feet_X_Start_Offset[Max_Entity_Types];
entxt_ unsigned char Entity_Feet_Y_Start_Offset[Max_Entity_Types];
entxt_ unsigned char Entity_Sight_Width[Max_Entity_Types];
entxt_ unsigned char Entity_Sight_Distance[Max_Entity_Types];

entxt_ int Inventory_Icon_Type_Loc_X[Max_Weapon_Types];
entxt_ int Inventory_Icon_Type_Loc_Y[Max_Weapon_Types];

#endif ENTITY_H

entxt_ char Entity_Type_Names[Max_Entity_Types][17];
entxt_ char Weapon_Names[Max_Weapon_Types][17];

//---Entity Group_Command
#define GROUP_Nothing 			0
#define GROUP_Random_Moves 	1

// Entity Movement codes
#define Cannot_Stand_Here 			0 // This entity cannot stand here!
#define Location_OK 					1 // This entity can stand here
#define Cannot_Stand_On_Entity 	2 // This entity cannot stand on another

// Entity Speeds
#define Stopped 0 // No speed at all
#define Fast 10  // Maximum speed

// Entity Action
#define Free_Entity			0 // This entity location is free!
#define Clear_Entity			1 // We need to clear this entity only!
#define Walking   			2
#define Running				3
#define Up_Through_Door		4
#define Down_Through_Door 	5
#define Right_Through_Door 6
#define Left_Through_Door	7
#define Fire_Rocket			8
#define Exploding				9
#define Fire_Bullet			10
#define Getting_Shot			11
#define Random_Moves			12
#define Rail_Path				13 // For garbage truck!
#define Ghost_Mode			14 // Does location check without handling!
#define Rotating				15 // Entity is rotating to es->new_dir!
										// This uses .movevara as the delay!
#define Hide					16 //
#define Throw_Grenade		17
#define Flame_Thrower_Shot	18
#define Dying					19
#define Dead					20
#define Just_Looking			21

// What the entity can injure or kill
#define Kill_Everything		0
#define Kill_Only_Entity	1
#define Kill_Everything_Furniture 2

// Entity Health
#define Healthy	100

// Single Orders
#define None 						0
#define Go_To						1

// Entity Que Orders
#define Que_None 						0
#define Que_Go_To						1
#define Que_Circular_To				2
#define Que_Fire_Rocket				3
#define Que_Stealth_Go_To			4
#define Que_Orders_Connector		5
#define Que_Say_Something			6
#define Que_Say_Random_3			7
#define Que_Target_Rocket			8
#define Que_Open_Door				9
#define Que_Target_Flamethrower	10
#define Que_Follow_Order			11
#define Que_Flame_Thrower_Shot   12
#define Que_Give_Order				13
#define Que_Rnd_T_Strings			14
#define Que_Take_Order          	15
#define Que_Target_Grenade			16
#define Que_XY_Target_Grenade		17
#define Que_XY_Target_Rocket		18
#define Que_XY_Target_Flamethrower	19
#define Que_Heal_Order				20
#define Que_Target_Gun				21
#define Que_XY_Target_Gun			22
#define Que_Pause_Until_Attacked 23
#define Que_No_More_Orders			255

// Sight Values
#define In_Line			0	// We can hit it with diagonals or straights
#define V_Sight			1  // It's in V Sight but not In_Line

//---------------------------------------------------------------------------
// Explosion INFORMATION

// .movevara -
//		Only one order: how long entity should explode and move!
// .movevarb -
//		Whether the explosion can: Kill_Only_Entity, Kill_Everything

// Explosion functions
entxt_ void Handle_Explosion_Move_Based_On_Orders( ENTITY_STRUCT *es, int ret1 );

// Explosion/System Font Dpaint screen format of animations x,y starts
#define Explosion_Walk_X 83
#define Explosion_Walk_Y 78

#define Explosion_Changed_Direction_Pause 1 // Pause whenever changes direction

#define Explosion_Damage 75 // Can take away 25 out of max 100
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Explosion INFORMATION

// .movevara -
//		Only one order: how long entity should explode and move!
// .movevarb -
//		Whether the explosion can: Kill_Only_Entity, Kill_Everything

// Explosion functions
entxt_ void Handle_Big_Explosion_Move_Based_On_Orders( ENTITY_STRUCT *es, int ret1 );

// Explosion/System Font Dpaint screen format of animations x,y starts
#define Big_Explosion_Walk_X 32 // was 32
#define Big_Explosion_Walk_Y 120 // was 120

#define Big_Explosion_Changed_Direction_Pause 1 // Pause whenever changes direction

#define Big_Explosion_Damage 75 // Can take away 25 out of max 100
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// MARINE INFORMATION

// .movevara -
// 	Random_Moves: 	for the number of steps
//		Go_To:         for the vector count
//		Fire_Rocket:	for the delay time posing holding the gun.
// 	Fire_Bullet:	for the delay time posing holding the gun.
//		Getting_Shot:	for the delay time posing while getting shot.

// .movevarb -
//		Go_To:			for the number of steps to take!

// Marine functions
entxt_ void Handle_Marine_Move_Based_On_Orders( ENTITY_STRUCT *es, int ret1 );

// Marine/System Font Dpaint screen format of animations x,y starts
#define Marine_Bump_Dn_X 224
#define Marine_Bump_Dn_Y 56
#define Marine_Bump_Lt_X 224 + 24*1
#define Marine_Bump_Lt_Y 56
#define Marine_Bump_Up_X 224 + 24*2
#define Marine_Bump_Up_Y 56
#define Marine_Bump_Rt_X 224 + 24*3
#define Marine_Bump_Rt_Y 56

#define Marine_Reach_X 128
#define Marine_Reach_Y 80

#define Marine_Shoot_Up_X 128
#define Marine_Shoot_Up_Y 104
#define Marine_Shoot_Up_Rt_X 128 + 24*1
#define Marine_Shoot_Up_Rt_Y 104
#define Marine_Shoot_Rt_X 128 + 24*2
#define Marine_Shoot_Rt_Y 104
#define Marine_Shoot_Dn_Rt_X 128 + 24*3
#define Marine_Shoot_Dn_Rt_Y 104
#define Marine_Shoot_Dn_X 128 + 24*4
#define Marine_Shoot_Dn_Y 104
#define Marine_Shoot_Dn_Lt_X 128 + 24*5
#define Marine_Shoot_Dn_Lt_Y 104
#define Marine_Shoot_Lt_X 128 + 24*6
#define Marine_Shoot_Lt_Y 104
#define Marine_Shoot_Up_Lt_X 128 + 24*7
#define Marine_Shoot_Up_Lt_Y 104

#define Marine_Walk_Up_X 128
#define Marine_Walk_Up_Y 128
#define Marine_Walk_Up_Rt_X 224
#define Marine_Walk_Up_Rt_Y 128
#define Marine_Walk_Rt_X 32
#define Marine_Walk_Rt_Y 152
#define Marine_Walk_Dn_Rt_X 128
#define Marine_Walk_Dn_Rt_Y 152
#define Marine_Walk_Dn_X 224
#define Marine_Walk_Dn_Y 152
#define Marine_Walk_Dn_Lt_X 32
#define Marine_Walk_Dn_Lt_Y 176
#define Marine_Walk_Lt_X 128
#define Marine_Walk_Lt_Y 176
#define Marine_Walk_Up_Lt_X 224
#define Marine_Walk_Up_Lt_Y 176

#define Marine_Hand_Up_X 128
#define Marine_Hand_Up_Y 80
#define Marine_Hand_Up_Rt_X 128+(24*1)
#define Marine_Hand_Up_Rt_Y 80
#define Marine_Hand_Rt_X 128+(24*2)
#define Marine_Hand_Rt_Y 80
#define Marine_Hand_Dn_Rt_X 128+(24*3)
#define Marine_Hand_Dn_Rt_Y 80
#define Marine_Hand_Dn_X 128+(24*4)
#define Marine_Hand_Dn_Y 80
#define Marine_Hand_Dn_Lt_X 128+(24*5)
#define Marine_Hand_Dn_Lt_Y 80
#define Marine_Hand_Lt_X 128+(24*6)
#define Marine_Hand_Lt_Y 80
#define Marine_Hand_Up_Lt_X 128+(24*7)
#define Marine_Hand_Up_Lt_Y 80

#define Marine_Death_1_X 176
#define Marine_Death_1_Y 56

#define Marine_Dist_Rnd_Plus 4 // Added to the above for more real walking!

#define Marine_Changed_Direction_Pause 5 // Pause whenever changes direction

//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Enemy INFORMATION

// .movevara -
// 	Random_Moves: 	for the number of steps
//		Go_To:         for the vector count
//		Fire_Rocket:	for the delay time posing holding the gun.
// 	Fire_Bullet:	for the delay time posing holding the gun.
//		Getting_Shot:	for the delay time posing while getting shot.

// .movevarb -
//		Go_To:			for the number of steps to take!

// Enemy functions
entxt_ void Handle_Enemy_Move_Based_On_Orders( ENTITY_STRUCT *es, int ret1 );

// Enemy/System Font Dpaint screen format of animations x,y starts
#define Enemy_Bump_Up_X 48
#define Enemy_Bump_Up_Y 120
#define Enemy_Bump_Rt_X 72
#define Enemy_Bump_Rt_Y 120
#define Enemy_Bump_Dn_X 96
#define Enemy_Bump_Dn_Y 120
#define Enemy_Bump_Lt_X 120
#define Enemy_Bump_Lt_Y 120

#define Enemy_Reach_X 264
#define Enemy_Reach_Y 96

#define Enemy_Shoot_Up_X 144
#define Enemy_Shoot_Up_Y 120
#define Enemy_Shoot_Up_Rt_X 168
#define Enemy_Shoot_Up_Rt_Y 120
#define Enemy_Shoot_Rt_X 168
#define Enemy_Shoot_Rt_Y 120
#define Enemy_Shoot_Dn_Rt_X 168
#define Enemy_Shoot_Dn_Rt_Y 120
#define Enemy_Shoot_Dn_X 192
#define Enemy_Shoot_Dn_Y 120
#define Enemy_Shoot_Dn_Lt_X 216
#define Enemy_Shoot_Dn_Lt_Y 120
#define Enemy_Shoot_Lt_X 216
#define Enemy_Shoot_Lt_Y 120
#define Enemy_Shoot_Up_Lt_X 216
#define Enemy_Shoot_Up_Lt_Y 120

#define Enemy_Walk_Up_X 0
#define Enemy_Walk_Up_Y 72
#define Enemy_Walk_Up_Rt_X 72
#define Enemy_Walk_Up_Rt_Y 72
#define Enemy_Walk_Rt_X 144
#define Enemy_Walk_Rt_Y 72
#define Enemy_Walk_Dn_Rt_X 216
#define Enemy_Walk_Dn_Rt_Y 72
#define Enemy_Walk_Dn_X 288
#define Enemy_Walk_Dn_Y 72
#define Enemy_Walk_Dn_Lt_X 48
#define Enemy_Walk_Dn_Lt_Y 96
#define Enemy_Walk_Lt_X 120
#define Enemy_Walk_Lt_Y 96
#define Enemy_Walk_Up_Lt_X 192
#define Enemy_Walk_Up_Lt_Y 96

#define Enemy_Death_1_X 240
#define Enemy_Death_1_Y 48
#define Enemy_Death_2_X 264
#define Enemy_Death_2_Y 48
#define Enemy_Death_3_X 288
#define Enemy_Death_3_Y 48

#define Enemy_Dist_Rnd_Plus 4 // Added to the above for more real walking!

#define Enemy_Changed_Direction_Pause 5 // Pause whenever changes direction

//---------------------------------------------------------------------------
// Enemy2 INFORMATION

// .movevara -
// 	Random_Moves: 	for the number of steps
//		Go_To:         for the vector count
//		Fire_Rocket:	for the delay time posing holding the gun.
// 	Fire_Bullet:	for the delay time posing holding the gun.
//		Getting_Shot:	for the delay time posing while getting shot.

// .movevarb -
//		Go_To:			for the number of steps to take!

// Enemy2 functions
entxt_ void Handle_Enemy2_Move_Based_On_Orders( ENTITY_STRUCT *es, int ret1 );

// Enemy2/System Font Dpaint screen format of animations x,y starts
#define Enemy2_Bump_Up_X 48
#define Enemy2_Bump_Up_Y 48
#define Enemy2_Bump_Rt_X 72
#define Enemy2_Bump_Rt_Y 48
#define Enemy2_Bump_Dn_X 96
#define Enemy2_Bump_Dn_Y 48
#define Enemy2_Bump_Lt_X 120
#define Enemy2_Bump_Lt_Y 48

#define Enemy2_Reach_X 264
#define Enemy2_Reach_Y 24

#define Enemy2_Shoot_Up_X 144
#define Enemy2_Shoot_Up_Y 48
#define Enemy2_Shoot_Up_Rt_X 168
#define Enemy2_Shoot_Up_Rt_Y 48
#define Enemy2_Shoot_Rt_X 168
#define Enemy2_Shoot_Rt_Y 48
#define Enemy2_Shoot_Dn_Rt_X 192
#define Enemy2_Shoot_Dn_Rt_Y 48
#define Enemy2_Shoot_Dn_X 192
#define Enemy2_Shoot_Dn_Y 48
#define Enemy2_Shoot_Dn_Lt_X 216
#define Enemy2_Shoot_Dn_Lt_Y 48
#define Enemy2_Shoot_Lt_X 216
#define Enemy2_Shoot_Lt_Y 48
#define Enemy2_Shoot_Up_Lt_X 144
#define Enemy2_Shoot_Up_Lt_Y 48

#define Enemy2_Walk_Up_X 0
#define Enemy2_Walk_Up_Y 0
#define Enemy2_Walk_Up_Rt_X 72
#define Enemy2_Walk_Up_Rt_Y 0
#define Enemy2_Walk_Rt_X 144
#define Enemy2_Walk_Rt_Y 0
#define Enemy2_Walk_Dn_Rt_X 216
#define Enemy2_Walk_Dn_Rt_Y 0
#define Enemy2_Walk_Dn_X 288
#define Enemy2_Walk_Dn_Y 0
#define Enemy2_Walk_Dn_Lt_X 48
#define Enemy2_Walk_Dn_Lt_Y 24
#define Enemy2_Walk_Lt_X 120
#define Enemy2_Walk_Lt_Y 24
#define Enemy2_Walk_Up_Lt_X 192
#define Enemy2_Walk_Up_Lt_Y 24

#define Enemy2_Death_1_X 240
#define Enemy2_Death_1_Y 120
#define Enemy2_Death_2_X 264
#define Enemy2_Death_2_Y 120
#define Enemy2_Death_3_X 288
#define Enemy2_Death_3_Y 120

#define Enemy2_Dist_Rnd_Plus 4 // Added to the above for more real walking!

#define Enemy2_Changed_Direction_Pause 5 // Pause whenever changes direction

//---------------------------------------------------------------------------
// Enemy3 INFORMATION

// Enemy3 functions
entxt_ void Handle_Enemy3_Move_Based_On_Orders( ENTITY_STRUCT *es, int ret1 );

// Enemy3/System Font Dpaint screen format of animations x,y starts
#define Enemy3_Bump_Up_X 72
#define Enemy3_Bump_Up_Y 168
#define Enemy3_Bump_Rt_X 96
#define Enemy3_Bump_Rt_Y 168
#define Enemy3_Bump_Dn_X 120
#define Enemy3_Bump_Dn_Y 168
#define Enemy3_Bump_Lt_X 144
#define Enemy3_Bump_Lt_Y 168

#define Enemy3_Reach_X_Up 288
#define Enemy3_Reach_Y_Up 144
#define Enemy3_Reach_X_Rt 0
#define Enemy3_Reach_Y_Rt 168
#define Enemy3_Reach_X_Dn 24
#define Enemy3_Reach_Y_Dn 168
#define Enemy3_Reach_X_Lt 48
#define Enemy3_Reach_Y_Lt 168

#define Enemy3_Shoot_Up_X 168
#define Enemy3_Shoot_Up_Y 168
#define Enemy3_Shoot_Rt_X 192
#define Enemy3_Shoot_Rt_Y 168
#define Enemy3_Shoot_Dn_X 216
#define Enemy3_Shoot_Dn_Y 168
#define Enemy3_Shoot_Lt_X 240
#define Enemy3_Shoot_Lt_Y 168

#define Enemy3_Walk_Up_X 0
#define Enemy3_Walk_Up_Y 144
#define Enemy3_Walk_Rt_X 72
#define Enemy3_Walk_Rt_Y 144
#define Enemy3_Walk_Dn_X 144
#define Enemy3_Walk_Dn_Y 144
#define Enemy3_Walk_Lt_X 216
#define Enemy3_Walk_Lt_Y 144

#define Enemy3_Death_1_X 264
#define Enemy3_Death_1_Y 168
#define Enemy3_Death_2_X 288
#define Enemy3_Death_2_Y 168

#define Enemy3_Dist_Rnd_Plus 4 // Added to the above for more real walking!

#define Enemy3_Changed_Direction_Pause 5 // Pause whenever changes direction

//---------------------------------------------------------------------------
// BULLET INFORMATION
#define Bullet_Damage 20 //
//---------------------------------------------------------------------------
// ROCKET INFORMATION

// .movevara -
//		Only one order: the entity number that fired it!

// Rocket functions
entxt_ void Handle_Rocket_Move_Based_On_Orders( ENTITY_STRUCT *es, int ret1 );

// Rocket/System Font Dpaint screen format of animations x,y starts
#define Rocket_Walk_Up_X 192
#define Rocket_Walk_Up_Y 28
#define Rocket_Walk_Up_Rt_X 192 + 8*1
#define Rocket_Walk_Up_Rt_Y 28
#define Rocket_Walk_Rt_X 192 + 8*2
#define Rocket_Walk_Rt_Y 28
#define Rocket_Walk_Dn_Rt_X 192 + 8*3
#define Rocket_Walk_Dn_Rt_Y 28
#define Rocket_Walk_Dn_X 192 + 8*4
#define Rocket_Walk_Dn_Y 28
#define Rocket_Walk_Dn_Lt_X 192 + 8*5
#define Rocket_Walk_Dn_Lt_Y 28
#define Rocket_Walk_Lt_X 192 + 8*6
#define Rocket_Walk_Lt_Y 28
#define Rocket_Walk_Up_Lt_X 192 + 8*7
#define Rocket_Walk_Up_Lt_Y 28

#define Rocket_Changed_Direction_Pause 1 // Pause whenever changes direction

#define Rocket_Safe_Distance 48 // Minimum Safe Distance to fire a rocket (pixels)
#define Rocket_Damage 75
#define Rocket_Armor 0
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// FLAME INFORMATION

// .movevara -
//		Only one order: the entity number that fired it!

// FLAME functions
entxt_ void Handle_Flame_Move_Based_On_Orders( ENTITY_STRUCT *es, int ret1 );

// Flame/System Font Dpaint screen format of animations x,y starts
#define Flame_Walk_Up_X 208
#define Flame_Walk_Up_Y 56
#define Flame_Walk_Up_Rt_X 216
#define Flame_Walk_Up_Rt_Y 56
#define Flame_Walk_Rt_X 216
#define Flame_Walk_Rt_Y 64
#define Flame_Walk_Dn_Rt_X 216
#define Flame_Walk_Dn_Rt_Y 72
#define Flame_Walk_Dn_X 208
#define Flame_Walk_Dn_Y 72
#define Flame_Walk_Dn_Lt_X 200
#define Flame_Walk_Dn_Lt_Y 72
#define Flame_Walk_Lt_X 200
#define Flame_Walk_Lt_Y 64
#define Flame_Walk_Up_Lt_X 200
#define Flame_Walk_Up_Lt_Y 56

#define Flame_Changed_Direction_Pause 1 // Pause whenever changes direction

#define Flame_Safe_Distance 48 // Minimum Safe Distance to fire a Flame (pixels)
#define Flame_Damage 75
#define Flame_Armor 0
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
// Grenade INFORMATION

// .movevara -
//		Only one order: the entity number that fired it!
// .movevarb - has the distance the grenade should travel before exploding!

// Grenade functions
entxt_ void Handle_Grenade_Move_By_Orders( ENTITY_STRUCT *es, int ret1 );

// Grenade/System Font Dpaint screen format of animations x,y starts
#define Grenade_Low_X 129
#define Grenade_Low_Y 27
#define Grenade_Med_X 138
#define Grenade_Med_Y 27
#define Grenade_High_X 145
#define Grenade_High_Y 27

#define Grenade_Changed_Direction_Pause 1 // Pause whenever changes direction

#define Grenade_Safe_Distance 48 // Minimum Safe Distance to fire a Grenade (pixels)
#define Grenade_Damage 75
#define Grenade_Armor 0
//---------------------------------------------------------------------------
// Spye-Ball INFORMATION

#define Spye_Ball_X1 144
#define Spye_Ball_Y1 48
#define Spye_Ball_X2 153
#define Spye_Ball_Y2 48
#define Spye_Ball_X3 160
#define Spye_Ball_Y3 48
#define Spye_Ball_X4 168
#define Spye_Ball_Y4 48
#define Spye_Ball_X5 112
#define Spye_Ball_Y5 48
#define Spye_Ball_X6 120
#define Spye_Ball_Y6 48
#define Spye_Ball_X7 128
#define Spye_Ball_Y7 48
#define Spye_Ball_X8 136
#define Spye_Ball_Y8 48
//---------------------------------------------------------------------------
// Laser INFORMATION A laser is just like a rocket, except it looks different

// .movevara -
//		Only one order: the entity number that fired it!

// Laser functions
//entxt_ void Handle_Rocket_Move_Based_On_Orders( ENTITY_STRUCT *es, int ret1 );

// Laser/System Font Dpaint screen format of animations x,y starts
#define Laser_Walk_Up_X 192
#define Laser_Walk_Up_Y 44
#define Laser_Walk_Up_Rt_X 192 + 8*1
#define Laser_Walk_Up_Rt_Y 44
#define Laser_Walk_Rt_X 192 + 8*2
#define Laser_Walk_Rt_Y 44
#define Laser_Walk_Dn_Rt_X 192 + 8*3
#define Laser_Walk_Dn_Rt_Y 44
#define Laser_Walk_Dn_X 192 + 8*4
#define Laser_Walk_Dn_Y 44
#define Laser_Walk_Dn_Lt_X 192 + 8*5
#define Laser_Walk_Dn_Lt_Y 44
#define Laser_Walk_Lt_X 192 + 8*6
#define Laser_Walk_Lt_Y 44
#define Laser_Walk_Up_Lt_X 192 + 8*7
#define Laser_Walk_Up_Lt_Y 44

#define Laser_Changed_Direction_Pause 1 // Pause whenever changes direction

#define Laser_Safe_Distance 48 // Minimum Safe Distance to fire a Laser (pixels)
#define Laser_Damage 80
#define Laser_Armor 0
//---------------------------------------------------------------------------
// Splat INFORMATION

// .movevara -
//		How long the splat should live
// .movevarb -
//		The entity number that the splat is attached to
// .color -
//		Defined as below
#define Splat_Gunfire	55 // Color 55 Yellow
#define Splat_Blood		39 // Color 39 Red
#define Splat_Ricochet	18  // Color 18 Blue

// Splat functions
entxt_ void Handle_Splat_Move_Based_On_Orders( ENTITY_STRUCT *es, int ret1 );

// Splat/System Font Dpaint screen format of animations x,y starts
#define Splat_Walk_Up_X 32
#define Splat_Walk_Up_Y 45
#define Splat_Walk_Up_Rt_X 32
#define Splat_Walk_Up_Rt_Y 45
#define Splat_Walk_Rt_X 32
#define Splat_Walk_Rt_Y 45
#define Splat_Walk_Dn_Rt_X 32
#define Splat_Walk_Dn_Rt_Y 45
#define Splat_Walk_Dn_X 32
#define Splat_Walk_Dn_Y 45
#define Splat_Walk_Dn_Lt_X 32
#define Splat_Walk_Dn_Lt_Y 45
#define Splat_Walk_Lt_X 32
#define Splat_Walk_Lt_Y 45
#define Splat_Walk_Up_Lt_X 32
#define Splat_Walk_Up_Lt_Y 45

#define Splat_Changed_Direction_Pause 1 // Pause whenever changes direction

#define Splat_Safe_Distance 0 // Minimum Safe Distance to fire a Splat (pixels)
//---------------------------------------------------------------------------

