protected:
int numOnBoard[wcNoWpn+1];
char flash;
int rippleInterval,
pair, rippleCount, curRippleCount;
float burstHeight;
unsigned long
nextDrop;
void ReleaseCurWeapon(int
stationUnderTest);
void JettisonStation (int stationNum,
int rippedOff = FALSE);
void SetCurrentWeapon(int station, SimWeaponClass
*weapon);
public:
int curWpnNum;
int lastWpnStation,
lastWpnNum;
WeaponType curWeaponType;
WeaponDomain curWeaponDomain;
WeaponClass curWeaponClass;
SmsDrawable* drawable;
SimWeaponClass*
curWeapon;
short curWeaponId;
SMSClass(SimVehicleClass *newOwnship,
uchar *weapId, uchar *weapCnt);
virtual ~SMSClass();
virtual void AddWeaponGraphics
(void);
virtual void FreeWeaponGraphics
(void);
virtual SimWeaponClass*
GetCurrentWeapon (void) {return curWeapon;};
void SetWeaponType (WeaponType newMode);
void IncrementStores (WeaponClass wClass,
int count);
void DecrementStores (WeaponClass wClass,
int count);
void SelectiveJettison (void);
void EmergencyJettison (void);
void JettisonWeapon (int hardpoint);
void RemoveWeapon (int hardpoint);
void AGJettison (void);
int DidEmergencyJettison (void)
{ return flags & EmergencyJettisonFlag; }
void WeaponStep (int symFlag = FALSE);
int FindWeapon (int indexDesired);
int FindWeaponClass (WeaponClass
weaponDesired, int needWeapon = TRUE);
int FindWeaponType (WeaponType
weaponDesired);
int DropBomb (int allowRipple
= TRUE);
int LaunchMissile (void);
int LaunchRocket (void);
void SetUnlimitedGuns (int flag);
int UnlimitedAmmo
(void) {return flags & UnlimitedAmmoFlag;};
void SetUnlimitedAmmo (int newFlag);
int HasHarm
(void) {return (flags & HTSOnBoard ? TRUE : FALSE);};
int HasLGB
(void) {return (flags & LGBOnBoard ? TRUE : FALSE);};
int HasTrainable (void);
int HasSPJammer
(void) {return (flags & SPJamOnBoard ? TRUE : FALSE);};
int HasWeaponClass (WeaponClass
classDesired);
void FreeWeapons (void);
void Exec (void);
void SetPlayerSMS (int flag);
void SetPair (int flag);
void IncrementRippleCount(void);
void DecrementRippleCount(void);
void IncrementRippleInterval(void);
void DecrementRippleInterval(void);
void IncrementBurstHeight(void);
void DecrementBurstHeight(void);
void ResetCurrentWeapon(void);
void SetRippleCount
(int newVal) {rippleCount = newVal;};
int RippleCount(void) {return
rippleCount;};
int RippleInterval(void) {return
rippleInterval;};
int Pair(void) {return pair;};
WeaponType GetNextWeapon (WeaponDomain);
void RemoveStore(int station, int storeId);
void AddStore(int station, int storeId,
int visible);
void ChooseLimiterMode(int hardpoint);
void RipOffWeapons( float noseAngle
);
friend SmsDrawable;