1 /*----------------Patrick 15/11/96------------------- 2 Header for NPC generators 3 ----------------------------------------------------*/ 4 5 #ifndef _bhgenerator_h_ 6 #define _bhgenerator_h_ 1 7 8 #ifdef __cplusplus 9 extern "C" { 10 #endif 11 12 13 /*----------------Patrick 15/11/96------------------- 14 Generator behaviour data block. NB generators 15 have their own module ptr, as they are not included 16 in the visibility system. 17 ----------------------------------------------------*/ 18 typedef struct generatorblock 19 { 20 int PulseMarine_Wt; 21 int FlameMarine_Wt; 22 int SmartMarine_Wt; 23 int SadarMarine_Wt; 24 int GrenadeMarine_Wt; 25 int MinigunMarine_Wt; 26 int ShotgunCiv_Wt; 27 int PistolCiv_Wt; 28 int FlameCiv_Wt; 29 int UnarmedCiv_Wt; 30 int MolotovCiv_Wt; 31 32 int Alien_Wt; 33 int PredAlien_Wt; 34 int Praetorian_Wt; 35 36 int PistolMarine_Wt; 37 38 int WeightingTotal; 39 40 /* Pathfinder parameters */ 41 /* If these values aren't -1 , then the generator produces path following creatures*/ 42 int path; 43 int stepnumber; 44 45 46 struct vectorch Position; 47 int Timer; 48 /* generator can be switched on and off via the request state function */ 49 int Active; 50 51 int GenerationRate; //scaled up by 100 52 int GenerationRateIncrease; //scaled up by 100 53 int RateIncreaseTimer; 54 int MaxGenNPCs;//limit for this generator 55 56 /*if use_own_rate_values is false then the generator will use the global 57 generation rates*/ 58 unsigned int use_own_rate_values :1; 59 unsigned int use_own_max_npc :1; 60 } GENERATOR_BLOCK; 61 62 63 /*----------------Patrick 22/1/97------------------- 64 Hive enums and data structure. 65 Note that only one hive exists in the game. 66 ----------------------------------------------------*/ 67 typedef enum hive_state 68 { 69 HS_Attack, 70 HS_Regroup, 71 72 }HIVE_STATE; 73 74 typedef struct hive_data 75 { 76 HIVE_STATE currentState; 77 int numGenerators; 78 int hiveStateTimer; 79 int genRateTimer; 80 int maxGeneratorNPCs; 81 int generatorNPCsPerMinute; 82 int deltaGeneratorNPCsPerMinute; 83 84 BOOL AliensCanBeGenerated; 85 BOOL PredAliensCanBeGenerated; 86 BOOL PraetoriansCanBeGenerated; 87 88 } HIVE_DATA; 89 90 typedef struct hivelevelparams 91 { 92 int maxGeneratorNPCs; 93 int generatorNPCsPerMinute; 94 int deltaGeneratorNPCsPerMinute; 95 int hiveStateBaseTime; 96 } HIVELEVELPARAMS; 97 98 extern int ShowSlack; 99 /* prototypes */ 100 extern void InitGenerator(void *posn, STRATEGYBLOCK *sbPtr); 101 extern void GeneratorBehaviour(STRATEGYBLOCK *sbPtr); 102 extern void InitHive(void); 103 extern void DoHive(void); 104 extern int NumGeneratorNPCsInEnv(void); 105 extern int NumGeneratorNPCsVisible(void); 106 extern void ForceAGenerator(void); 107 extern void ActivateHive(void); 108 109 /* defines */ 110 #define DEFAULTHIVESTATETIME (60*ONE_FIXED) 111 112 #define MAXGENNPCS_MAX (255) 113 #define MAXGENNPCS_MIN (0) 114 #define GENSPERMINUTE_MAX (255) 115 #define GENSPERMINUTE_MIN (0) 116 #define INCREASEGENSPERMINUTE_MAX (255) 117 #define INCREASEGENSPERMINUTE_MIN (0) 118 119 #define GENERATORTIME_MAX (120*ONE_FIXED) 120 #define GENERATORTIME_MIN (3*ONE_FIXED) 121 122 /* globals */ 123 extern HIVE_DATA NPCHive; 124 125 #ifdef __cplusplus 126 } 127 #endif 128 129 extern void GeneratorBalance_NoteAIDeath(); 130 extern void GeneratorBalance_NotePlayerDeath(); 131 #endif 132