#config scanner=5 #config weapon=0 #config armor=4 #config engine=3 #config heatsinks=0 #def ArcType #def ChangeIn MOV FX, 500 MOV EX, 500 INT I_ANGLE IN P_COMPASS, BX SUB AX, BX OUT P_STEERING, AX OUT P_THROTTLE, 100 Set ChangeIn, meters SET ArcType, 1 OUT P_SCANARC, 64 MOV AX, 1 INT I_KEEPSHIFT ; ArcType/ScanArc ; 1 64 ; 2 16 ; 3 4 ; 4 2 !scan !scanLoop OUT P_STEERING, 4 IN P_SCAN, AX MOV DX, AX SHR AX, 11 ADD AX, ArcType JE AX JNE AX :16 ; No target in scan arc and ArcType = 1 OUT P_OFS_TURRET, 128 JE !scanLoop JNE !scanLoop :17 ; No target in scan arc and ArcType = 2 OUT P_SCANARC, 64 ; Set to ArcType 1 (Arc of 64) SET ArcType, 1 ; ... JE !scanLoop JNE !scanLoop :18 ; No target in scan arc and ArcType = 3 OUT P_SCANARC, 16 ; Set to ArcType 2 (Arc of 16) SET ArcType, 2 ; ... JE !scanLoop JNE !scanLoop :19 ; No target in scan arc and ArcType = 4 OUT P_SCANARC, 4 ; Set to ArcType 3 (Arc of 4) SET ArcType, 3 ; ... JE !scanLoop JNE !scanLoop :1 ; Target in scan arc and ArcType = 1 OUT P_SCANARC, 16 ; Set to ArcType 2 (Arc of 14) SET ArcType, 2 MOV AX, @3 ADD AX, 1002 JE AX JNE AX :2 ; Target in scan arc and ArcType = 2 OUT P_SCANARC, 4 ; Set to ArcType 3 (Arc of 4) SET ArcType, 3 MOV AX, @3 ADD AX, 2002 JE AX JNE AX :3 ; Target in scan arc and ArcType = 3 OUT P_THROTTLE, 100 OUT P_SCANARC, 2 ; Set to ArcType 4 (Arc of 2) SET ArcType, 4 MOV AX, @3 ADD AX, 3002 JE AX JNE AX :4 ; Target in scan arc and ArcType = 4 OUT P_THROTTLE, 100 CMP DX, 120 JGR !farEnough OUT P_THROTTLE, @7 !farEnough OUT P_OFS_TURRET, @3 IN P_HEAT, AX SHR AX, 7 ADD AX, 4000 JE AX JNE AX :4000 OUT P_OVERBURN, 1 :4001 MOV AX, @3 MOV BX, @6 AND BX, 127 CMP BX, 6 JLE !sittingTarget CMP BX, 121 JGE !sittingTarget CMP @7, 5 JLE !sittingTarget SHL AX, 1 !sittingTarget OUT P_FIRE, AX OUT P_OVERBURN, 0 :4002 OUT P_STEERING, 4 CMP @8, 0 JE !scanLoop SET @8, 0 OUT P_THROTTLE, 100 OUT P_STEERING, -96 JE !scanLoop JNE !scanLoop :1000 ; Arc of 64 and accuracy of -2 OUT P_OFS_TURRET, -48 JE !scanLoop JNE !scanLoop :1001 ; Arc of 64 and accuracy of -1 OUT P_OFS_TURRET, -16 JE !scanLoop JNE !scanLoop :1003 ; Arc of 64 and accuracy of 1 OUT P_OFS_TURRET, 16 JE !scanLoop JNE !scanLoop :1004 ; Arc of 64 and accuracy of 2 OUT P_OFS_TURRET, 48 JE !scanLoop JNE !scanLoop :2000 ; Arc of 16 and accuracy of -2 OUT P_OFS_TURRET, -10 JE !scanLoop JNE !scanLoop :2001 ; Arc of 16 and accuracy of -1 OUT P_OFS_TURRET, -6 JE !scanLoop JNE !scanLoop :2003 ; Arc of 16 and accuracy of 1 OUT P_OFS_TURRET, 6 JE !scanLoop JNE !scanLoop :2004 ; Arc of 16 and accuracy of 2 OUT P_OFS_TURRET, 10 JE !scanLoop JNE !scanLoop :3000 ; Arc of 4 and accuracy of -2 OUT P_OFS_TURRET, -4 JE !scanLoop JNE !scanLoop :3001 ; Arc of 4 and accuracy of -1 OUT P_OFS_TURRET, -2 JE !scanLoop JNE !scanLoop :3003 ; Arc of 4 and accuracy of 1 OUT P_OFS_TURRET, 2 JE !scanLoop JNE !scanLoop :3004 ; Arc of 4 and accuracy of 2 OUT P_OFS_TURRET, 4 JE !scanLoop JNE !scanLoop :1002 ; Arc of 64 and accuracy of 0 :2002 ; Arc of 14 and accuracy of 0 :3002 ; Arc of 4 and accuracy of 0 JE !scanLoop JNE !scanLoop