; +----------- ; | Hideaway 3 by Chris King ("PiGuy") ctk314@yahoo.com ; Hideaway 3 is perhaps my best reincarnation of Hideaway yet... ; The Hideaway concept is pretty much to sit in the corner and fire alot. ; That's what the first Hideaway did, and he did it even better after I ; fiddled around with the configs... he then almost *always* got the ; "Most Trigger Happy" award in tournaments. ; However, to accomplish this, he had to have a relatively crummy weapon. ; Therefore, he never won the "Best Marksman" award... To improve on this, ; I made Hideaway 2, with a stronger weapon and a "rapid-fire" technique ; first tested on Fire Alot!. However, he *still* wasn't hitting his target ; as much as I'd like him to be... ; Looking at the first Hideaway, I thought, "It would be really gnarly ; for every single one of those shots to hit its target... I wish I could ; give him a table!" ; And with five percent inspiration and ninety-five percent inspiration, ; Hideaway 3 is my dream come true! #config scanner=4 #config weapon=2 #config armor=5 #config engine=0 #config heatsinks=1 #config shield=0 #config mines=0 #def scanarc #def scanarcs #def tgtx #def tgty ;opo 19,314 ;change transponder ID to 314 ;opo 24,1 ;shield on opo 22,10 opo 22,10 int 2 ;what is the closest corner? cmp ex,500 jls !cv mov tgtx,1000 !cv cmp fx,500 jls !ca mov tgty,1000 !ca mov ex,tgtx ;find angle to corner mov fx,tgty int 7 sub ax,@1 opo 14,ax ;turn mov ax,1 ;overburn int 4 opo 11,95 ;go fast ;sines begin, table is built while he's going to the corner mov @385,0 mov @386,2 mov @387,3 mov @388,5 mov @389,6 mov @390,8 mov @391,9 mov @392,10 mov @393,11 mov @394,12 mov @395,13 mov @396,14 mov @397,15 mov @398,15 mov @399,16 mov @400,16 mov @401,16 mov @402,16 mov @403,16 mov @404,15 mov @405,15 mov @406,14 mov @407,13 mov @408,12 mov @409,11 mov @410,10 mov @411,9 mov @412,8 mov @413,6 mov @414,5 mov @415,3 mov @416,2 mov @417,0 mov @418,-2 mov @419,-3 mov @420,-5 mov @421,-6 mov @422,-8 mov @423,-9 mov @424,-10 mov @425,-11 mov @426,-12 mov @427,-13 mov @428,-14 mov @429,-15 mov @430,-15 mov @431,-16 mov @432,-16 mov @433,-16 mov @434,-16 mov @435,-16 mov @436,-15 mov @437,-15 mov @438,-14 mov @439,-13 mov @440,-12 mov @441,-11 mov @442,-10 mov @443,-9 mov @444,-8 mov @445,-6 mov @446,-5 mov @447,-3 mov @448,-2 ;sines end opo 17,64 ;set scan-arc to 64 mov scanarc,64 mov scanarcs,5 !cloop opo 11,95 ;go fast ipo 7,ax ;check scanner cmp ax,1500 ;if not in range, then increase range jgr !cbigarc ;cmp @5,314 ;if a friend ;jeq !cbigarc ;then ignore mov ax,@3 ;get accuracy cmp scanarcs,0 ;adjust for scanner size jeq !ctrack shl ax,scanarcs dec scanarcs ;shrink scanner size shr scanarc,1 opo 17,scanarc !ctrack opo 12,ax ;follow enemy ipo 2,ax ;check heat shl ax,scanarcs cmp ax,280 ;if cool, then fire jae !checkforwall mov ax,0 int 4 ;table calculations ipo 7,cx ;cx holds distance to target cmp cx,1500 jgr !cloop shr cx,4 ;divide it by 16 ;add cx,? ;this will eventually compensate for the calc time (for the weapon) mov bx,@13 ;bx holds speed of target shr bx,4 ;divide it by 16 mov ax,@6 ;ax holds direction of target shr ax,2 ;divide it by 4 add ax,385 ;align ax to table location mpy bx,[ax] ;multiply speed by sine of ax div bx,cx ;err bx opo 12,bx ;end calcs opo 15,0 ;fire! ;opo 15,0 mov ax,1 int 4 !checkforwall cmp @8,0 jeq !cloop int 13 int 2 cmp ex,tgtx ;check what it was jeq !hitwall cmp fx,tgty jeq !hitwall opo 15,0 ;if an enemy, then fire opo 15,0 opo 15,0 jne !cloop !hitwall ;opo 24,0 ;if wall, then shield off mov ax,0 ;overburn off int 4 mov ax,@1 ;turn around shr ax,6 shl ax,6 sub ax,96 sub ax,@1 opo 14,ax opo 17,32 ;set scan-arc to 32 mov scanarc,32 mov scanarcs,4 !loop ipo 7,cx ;check scanner cmp cx,1500 ;if not in range, then increase range jgr !bigarc ;cmp @5,314 ;if a friend ;jeq !bigarc ;then ignore mov ax,@3 ;get accuracy cmp scanarcs,0 ;adjust for scanner size jeq !track shl ax,scanarcs dec scanarcs ;shrink scanner size shr scanarc,1 opo 17,scanarc !track opo 12,ax ;follow enemy ipo 2,ax ;check heat cmp ax,280 ;if cool, then fire jae !loop ;table calculations ipo 7,cx ;cx holds distance to target cmp cx,1500 jgr !loop shr cx,4 ;divide it by 16 ;add cx,? ;this will eventually compensate for the calc time (for the weapon) mov bx,@13 ;bx holds speed of target shr bx,4 ;divide it by 16 mov ax,@6 ;ax holds direction of target shr ax,2 ;divide it by 4 add ax,385 ;align ax to table location mpy bx,[ax] ;multiply speed by sine of ax div bx,cx ;err bx opo 12,bx ;end calcs opo 15,0 ;fire! ;opo 15,0 jbe !loop !bigarc cmp scanarcs,4 jeq !aimstr inc scanarcs shl scanarc,1 opo 17,scanarc jne !loop !aimstr opo 13,0 jeq !loop !cbigarc cmp scanarcs,5 jeq !caimstr inc scanarcs shl scanarc,1 opo 17,scanarc jne !checkforwall !caimstr opo 12,128 jeq !checkforwall