piece base, BODY, flamers1, flamers2, smokers, turbine1, turbine2, gun, flare1, flare2, flare3, rack1, missileA1, missileA2, rack2, missileB1, missileB2, rack3, missileC1, missileC2, rack4, missileD1, missileD2; static-var restore_delay, gun_1, SIG_AIM1, SIG_AIM3; #define SMOKEPIECE1 turbine1 #define SMOKEPIECE2 turbine2 #include "smokeunit.h" #include "exptype.h" missiles() { show missileA1; show missileA2; show missileB1; show missileB2; show missileC1; show missileC2; show missileD1; show missileD2; } Create() { restore_delay = 5000; gun_1 = 0; spin turbine1 around z-axis speed <400.000000>; spin turbine2 around z-axis speed <400.000000>; start-script SmokeUnit(); } SetMaxReloadTime(time) { restore_delay = time * 2; } RestoreAfterDelay() { sleep restore_delay; show missileA1; show missileA2; show missileB1; show missileB2; show missileC1; show missileC2; show missileD1; show missileD2; gun_1 = 0; return 0; } SweetSpot (piecenum) { piecenum = body; } QueryPrimary (piecenum) { if( gun_1 == 0 ) { piecenum = missileA1; } if( gun_1 == 1 ) { piecenum = missileA2; } if( gun_1 == 2 ) { piecenum = missileB1; } if( gun_1 == 3 ) { piecenum = missileB2; } if( gun_1 == 4 ) { piecenum = missileC1; } if( gun_1 == 5 ) { piecenum = missileC2; } if( gun_1 == 6 ) { piecenum = missileD1; } if( gun_1 == 7 ) { piecenum = missileD2; } } AimFromPrimary (piecenum) { piecenum = body; } /* AimPrimary(heading, pitch) { signal SIG_AIM1; set-signal-mask SIG_AIM1; start-script RestoreAfterDelay(); return(TRUE); } */ FirePrimary() { ++gun_1; if( gun_1 == 0 ) { hide missileA1; emit-sfx SFXTYPE_VTOL from missileA1; return (0); } if( gun_1 == 1 ) { hide missileA2; emit-sfx SFXTYPE_VTOL from missileA2; return (0); } if( gun_1 == 2 ) { hide missileB1; emit-sfx SFXTYPE_VTOL from missileB1; return (0); } if( gun_1 == 3 ) { hide missileB2; emit-sfx SFXTYPE_VTOL from missileB2; return (0); } if( gun_1 == 4 ) { hide missileC1; emit-sfx SFXTYPE_VTOL from missileC1; return (0); } if( gun_1 == 5 ) { hide missileC2; emit-sfx SFXTYPE_VTOL from missileC2; return (0); } if( gun_1 == 6 ) { hide missileD1; emit-sfx SFXTYPE_VTOL from missileD1; return (0); } if( gun_1 == 7 ) { hide missileD2; emit-sfx SFXTYPE_VTOL from missileD2; gun_1 = 0; start-script missiles(); return (0); } } QueryTertiary (piecenum) { piecenum = gun; } AimFromTertiary (piecenum) { piecenum = gun; } /* AimTertiary(heading, pitch) { signal SIG_AIM3; set-signal-mask SIG_AIM3; start-script RestoreAfterDelay(); return(TRUE); } */ FireTertiary() { spin gun around z-axis speed <500>; hide flare1; sleep 10; show flare1; hide flare2; sleep 10; show flare2; hide flare3; sleep 10; show flare3; sleep 10; hide flare1; sleep 10; show flare1; hide flare2; sleep 10; show flare2; hide flare3; sleep 10; show flare3; sleep 10; stop-spin gun around z-axis decelerate <10>; return (0); } Killed(severity, corpsetype) { if (severity <= 25) { corpsetype = 1; return(0); } if (severity <= 50) { corpsetype = 2; return(0); } if (severity <= 99) { corpsetype = 3; return(0); } corpsetype = 3; return(0); }