TITLE SubAtkSubDef ; Timer 1 : TMA Leg timer ; Var 1 : Min firing range ; Var 2 : Store speed before changing it ; Var 3 : Closing speed calculation ; Var 4 : 0 = Closing target, 1 = Receding target ; Var 5 : Oblique approach angle ; Var 6 : priority of this action ; Var 7 : indicates if we did a shot already at active pinger RULE Randomize firing range IF INIT = 1 THEN VAR_SET 1 {3500,6000} VAR_SET 6 200 VAR_SET 7 0 ELSE RULE let sub attack sub IF VAR6 > 0 THEN ;if the guy is actively pinging us, then lets waste him! RULE attack active intercept IF SOURCE = "Active Intercept" AND VAR7 = 0 THEN DEBUG "Attacking Active Ping" ATTACK_BEST VAR_SET 7 1 ELSE PRIORITY VAR6 RULE Store current speed IF NEWTRACK = 1 THEN VAR_SET 2 SPD END RULE Avoid Friendly IF ID = FRIEND OR ID = UAF THEN DONE DEBUG "AVOID FRIENDLY!" TACTIC SubAvoidSub END RULE ID IF ID = UPD THEN DEBUG "UPD!" PRIORITY VAR6 VAR_SET 5 BRG RULE New Leg IF TIMER3 = -1 THEN DEBUG "Silos:" DEBUG SILOS RULE Approaching? IF SILOS > 0 THEN DEBUG "UPD Opening Pursuit" VAR_SET 4 1 VAR_SET 3 OWNSPD VAR_ADD 3 SILOS VAR_ADD 3 {3,5} ELSE DEBUG "UPD Approaching Leg" VAR_SET 4 0 VAR_SET 3 {6,8} VAR_SET 5 BRG RULE Compute oblique angle for leg IF AOB < 0 THEN VAR_SUB 5 {30,60} ELSE VAR_ADD 5 {30,60} END END SET_TIMER 3 {300,420} END RULE Proceed on leg, or pursue IF VAR4 = 0 THEN DEBUG "Proceed on Leg to UPD" PRIORITY VAR6 SETCRS VAR5 ELSE DEBUG "pursue to UPD" PRIORITY VAR6 STEER_TO END RULE Minimum speed IF VAR3 < 4 THEN VAR_SET 3 4 END PRIORITY VAR6 SETSPD VAR3 END RULE ID Hostile IF ID = HOSTILE OR ID = UAE THEN DEBUG "Hostile!" VAR_SET 5 BRG RULE New Closing Leg IF RNG > VAR1 AND TIMER1 = -1 THEN DEBUG "Silos:" DEBUG SILOS RULE Approaching? IF SILOS > 0 THEN DEBUG "Hostile Opening Pursuit" VAR_SET 4 1 VAR_SET 3 OWNSPD VAR_ADD 3 SILOS VAR_ADD 3 {3,5} ELSE DEBUG "Hostile Approaching Leg" VAR_SET 4 0 VAR_SET 3 {6,8} VAR_SET 5 BRG RULE Compute oblique angle for leg IF AOB < 0 THEN VAR_SUB 5 {30,60} ELSE VAR_ADD 5 {30,60} END END SET_TIMER 1 {480,600} END RULE Proceed on leg, or pursue IF VAR4 = 0 THEN DEBUG "Proceed on Leg to Hostile" PRIORITY VAR6 SETCRS VAR5 ELSE DEBUG "Pursue Hostile" PRIORITY VAR6 STEER_TO END RULE Minimum speed IF VAR3 < 4 THEN VAR_SET 3 4 END PRIORITY VAR6 SETSPD VAR3 RULE Attack IF ( RNG < 6000 AND CONF > 40 ) OR RNG < VAR1 OR ( CONF > 60 AND SILOS > 0 ) THEN DEBUG "Attack Best Hostile" PRIORITY VAR6 ATTACK_BEST END END RULE PostLaunch IF WEAPON_AWAY = 1 THEN DEBUG "Avoid after shooting" TACTIC SubAvoidSub END END ;if not active ping END ;let sub engage END