1 2 /***** bh_weap.h *****/ 3 4 #include "particle.h" 5 6 extern void FireProjectileAmmo(enum AMMO_ID AmmoID); 7 extern void FrisbeeBehaviour(STRATEGYBLOCK *sbPtr); 8 extern void RocketBehaviour(STRATEGYBLOCK *sbPtr); 9 extern void GrenadeBehaviour(STRATEGYBLOCK *sbPtr); 10 extern void MolotovBehaviour(STRATEGYBLOCK *sbPtr); 11 extern void PulseGrenadeBehaviour(STRATEGYBLOCK *sbPtr); 12 extern void ProximityGrenadeBehaviour(STRATEGYBLOCK *sbPtr); 13 extern void FlareGrenadeBehaviour(STRATEGYBLOCK *sbPtr); 14 extern void ClusterGrenadeBehaviour(STRATEGYBLOCK *sbPtr); 15 extern void XenoborgEnergyBoltBehaviour(STRATEGYBLOCK *sbPtr); 16 extern void PredatorEnergyBoltBehaviour(STRATEGYBLOCK *sbPtr); 17 extern void AlienSpitBehaviour(STRATEGYBLOCK *sbPtr); 18 extern void NPCDiscBehaviour(STRATEGYBLOCK *sbPtr); 19 extern void DiscBehaviour_SeekTrack(STRATEGYBLOCK *sbPtr); 20 extern void PPPlasmaBoltBehaviour(STRATEGYBLOCK *sbPtr); 21 extern void SpeargunBoltBehaviour(STRATEGYBLOCK *sbPtr); 22 extern void FireFlameThrower(VECTORCH *position,VECTORCH *base_offset,MATRIXCH *orientmat, int player, int *timer); 23 extern void FireNetGhostFlameThrower(VECTORCH *positionPtr, MATRIXCH *orientMatPtr); 24 extern DISPLAYBLOCK *SpawnMolotovCocktail(SECTION_DATA *root, MATRIXCH *master_orient); 25 void Convert_Disc_To_Pickup(STRATEGYBLOCK *sbPtr); 26 void FirePredPistolFlechettes(VECTORCH *base_position,VECTORCH *base_offset,MATRIXCH *orientmat,int player,int *timer,BOOL damaging); 27 extern void FrisbeeEnergyBoltBehaviour(STRATEGYBLOCK *sbPtr); 28 29 extern int SBIsEnvironment(STRATEGYBLOCK *sbPtr); 30 int ValidTargetForProxMine(STRATEGYBLOCK *obstaclePtr); 31 32 typedef struct OneShotBehaviourType 33 { 34 int counter; 35 } ONE_SHOT_BEHAV_BLOCK; 36 37 typedef struct PredPistolBehaviourType 38 { 39 int counter; 40 int player; 41 } PREDPISTOL_BEHAV_BLOCK; 42 43 typedef struct GrenadeBehaviourType 44 { 45 int counter; 46 int bouncelastframe; 47 } GRENADE_BEHAV_BLOCK; 48 49 typedef struct 50 { 51 int LifeTimeRemaining; 52 int ParticleGenerationTimer; 53 int SoundHandle; 54 55 /* 56 becomeStuck set when flare hits wall. 57 gets reset once a network message about it has been sent 58 */ 59 unsigned int becomeStuck:1; 60 61 } FLARE_BEHAV_BLOCK; 62 63 typedef struct 64 { 65 int LifeTimeRemaining; 66 int SoundGenerationTimer; 67 int SoundHandle; 68 69 } PROX_GRENADE_BEHAV_BLOCK; 70 71 typedef struct CasterBoltBehaviourType 72 { 73 int counter; 74 DAMAGE_PROFILE damage; 75 int blast_radius; 76 int player; 77 int soundHandle; 78 } CASTER_BOLT_BEHAV_BLOCK; 79 80 typedef struct MolotovBehaviourType { 81 int counter; 82 HMODELCONTROLLER HModelController; 83 } MOLOTOV_BEHAV_BLOCK; 84 85 typedef struct FrisbeeBehaviourType 86 { 87 int counter; 88 HMODELCONTROLLER HModelController; 89 int soundHandle; 90 int Bounced :1; 91 int bounces; 92 93 LASER_BEAM_DESC Laser; 94 95 } FRISBEE_BEHAV_BLOCK; 96 97 typedef struct PCPredDiscBehaviourType 98 { 99 int counter; 100 STRATEGYBLOCK *Target; 101 char Target_SBname[SB_NAME_LENGTH]; 102 char Prev_Target_SBname[SB_NAME_LENGTH]; 103 char Prev_Damaged_SBname[SB_NAME_LENGTH]; 104 HMODELCONTROLLER HModelController; 105 int soundHandle; 106 int Destruct:1; 107 int Stuck :1; 108 int Bounced :1; 109 int bounces; 110 111 112 } PC_PRED_DISC_BEHAV_BLOCK; 113 114 typedef struct SpearBehaviourType 115 { 116 int counter; 117 MATRIXCH Orient; 118 VECTORCH Position; 119 HMODELCONTROLLER HierarchicalFragment; 120 int Android; 121 122 /* behaviour type of parent object, e.g. I_BehaviourAlien */ 123 AVP_BEHAVIOUR_TYPE Type; 124 int SubType; 125 126 unsigned int SpearThroughFragment; 127 unsigned int Stuck :1; 128 129 } SPEAR_BEHAV_BLOCK; 130 131 #define FLARE_LIFETIME 16 132 #define FLARE_PARTICLE_GENERATION_TIME (ONE_FIXED/120) 133 134 #define FRAG_LIFETIME 65536 135 136 #define NO_OF_FRAGS_IN_CLUSTER_BOMB 6 137 138 #define PROX_GRENADE_TRIGGER_TIME (ONE_FIXED/4) 139 #define PROX_GRENADE_RANGE (4000) 140 #define PROX_GRENADE_SOUND_GENERATION_TIME 65536 141 #define PROX_GRENADE_LIFETIME (20) 142 143 STRATEGYBLOCK* CreateGrenadeKernel(AVP_BEHAVIOUR_TYPE behaviourID, VECTORCH *position, MATRIXCH *orient,int fromplayer); 144 145 146 /* KJL 17:46:30 02/24/97 - below is some old stuff I'll leave for reference */ 147 #if 0 148 extern void FlameProjectileFunction(STRATEGYBLOCK *sptr); 149 extern void GrenadeBehaviour(STRATEGYBLOCK *sptr); 150 extern void TOWMissileBehaviour(STRATEGYBLOCK *sptr); 151 extern void PredatorDiscBehaviour(STRATEGYBLOCK *sptr); 152 153 typedef struct OneShotBehaviourType { 154 155 AVP_BEHAVIOUR_TYPE bhvr_type; 156 VECTORCH ObWorld; 157 int counter; 158 159 } ONE_SHOT_BEHAV_BLOCK; 160 161 typedef struct FlameProjectileBehaviourType { 162 163 AVP_BEHAVIOUR_TYPE bhvr_type; 164 VECTORCH ObWorld; 165 int counter; 166 #if SupportMorphing 167 MORPHCTRL *FPmctrl; 168 #endif 169 170 } FLAME_PROJ_BEHAV_BLOCK; 171 172 typedef struct TowMissileBehaviourType { 173 174 AVP_BEHAVIOUR_TYPE bhvr_type; 175 VECTORCH ObWorld; 176 VECTORCH Target; 177 int counter; 178 179 } TOW_MISSILE_BEHAV_BLOCK; 180 181 typedef struct PredatorDiscBehaviourType { 182 183 AVP_BEHAVIOUR_TYPE bhvr_type; 184 VECTORCH ObWorld; 185 VECTORCH Target; 186 STRATEGYBLOCK *MovingTarget; 187 int counter; 188 int retargetcounter; 189 int phase; 190 191 } PRED_DISC_BEHAV_BLOCK; 192 193 #endif 194