1 /* Patrick 18/2/97 ------------------------------------------------ 2 Header file for alien queen and predator-alien support functions 3 -----------------------------------------------------------------*/ 4 5 #ifndef _bhpaq_h_ 6 #define _bhpaq_h_ 1 7 8 #ifdef __cplusplus 9 extern "C" { 10 #endif 11 12 #include "bh_pred.h" 13 14 /* Patrick 18/2/97 ------------------------------------------------ 15 Some enumerations 16 -----------------------------------------------------------------*/ 17 typedef enum PaqSequence 18 { 19 PaqSQ_Run, 20 PaqSQ_Attack, 21 PaqSQ_Stand, 22 PaqSQ_Dying, 23 PaqSQ_Dead, 24 PaqSQ_Attack2, 25 }PAQ_SEQUENCE; 26 27 typedef enum paq_far_bhstate 28 { 29 PAQFS_Wait, 30 PAQFS_Hunt, 31 PAQFS_Wander, 32 PAQFS_Dying, 33 }PAQ_FAR_BHSTATE; 34 35 typedef enum paq_near_bhstate 36 { 37 PAQNS_Wait, 38 PAQNS_Approach, 39 PAQNS_Attack, 40 PAQNS_Wander, 41 PAQNS_Avoidance, 42 PAQNS_Dying, 43 }PAQ_NEAR_BHSTATE; 44 45 /* Patrick 18/2/97 ------------------------------------------------ 46 Some structures 47 -----------------------------------------------------------------*/ 48 typedef struct paqStatusBlock 49 { 50 signed int health; 51 signed int nearSpeed; 52 signed int damageInflicted; 53 PAQ_FAR_BHSTATE FarBehaviourState; 54 PAQ_NEAR_BHSTATE NearBehaviourState; 55 int stateTimer; 56 SHAPEANIMATIONCONTROLLER ShpAnimCtrl; 57 HMODELCONTROLLER HModelController; 58 NPC_MOVEMENTDATA moveData; 59 NPC_WANDERDATA wanderData; 60 }PAQ_STATUS_BLOCK; 61 62 typedef struct tools_data_paq 63 { 64 struct vectorch position; 65 int shapeIndex; 66 char nameID[SB_NAME_LENGTH]; 67 }TOOLS_DATA_PAQ; 68 69 /* Patrick 18/2/97 ------------------------------------------------ 70 Some defines 71 -----------------------------------------------------------------*/ 72 #define PRAL_STARTING_HEALTH 700 73 #define QUEEN_STARTING_HEALTH 1400 74 #define NO_OF_FRAGMENTS_FROM_DEAD_PAQ 10 75 #define PRAL_NEAR_SPEED 10000 /* mm/s */ 76 #define QUEEN_NEAR_SPEED 12000 /* mm/s */ 77 #define PRAL_NEAR_DAMAGE 20 /* mm/s */ 78 #define QUEEN_NEAR_DAMAGE 40 /* mm/s */ 79 #define PAQ_CLOSE_ATTACK_RANGE 1500 /* mm */ 80 #define PAQ_NEAR_VIEW_WIDTH 500 /* mm */ 81 /* 1-1.5 seconds in 16ths of a second */ 82 #define PAQ_FAR_MOVE_TIME ((16+(FastRandom()&0x07))*(ONE_FIXED>>4)) 83 #define PAQ_NEAR_CLOSEATTACK_TIME (ONE_FIXED>>1) /* 1/2 second */ 84 /* random time between 1 and 2 seconds,in fixed point,with granularity 1/8th second */ 85 #define PAQ_NEARWAITTIME (ONE_FIXED+((FastRandom()&0x7)*(ONE_FIXED>>3))) 86 #define PAQ_DIETIME (ONE_FIXED<<4) 87 88 /* Patrick 18/2/97 ------------------------------------------------ 89 Some prototypes 90 -----------------------------------------------------------------*/ 91 void InitPredAlBehaviour(void* bhdata, STRATEGYBLOCK *sbPtr); 92 void InitQueenBehaviour(void* bhdata, STRATEGYBLOCK *sbPtr); 93 void PAQBehaviour(STRATEGYBLOCK *sbPtr); 94 void MakePAQNear(STRATEGYBLOCK *sbPtr); 95 void MakePAQFar(STRATEGYBLOCK *sbPtr); 96 void PAQIsDamaged(STRATEGYBLOCK *sbPtr, DAMAGE_PROFILE *damage, int multiple); 97 98 99 #ifdef __cplusplus 100 } 101 #endif 102 103 #endif 104