Challenge:
Version:
(Version B)
Winner?:
No
Code Snippet:
Rem Project: AI Tank Rem Created: 3/17/2005 3:15:05 PM Rem Created by Patrick Lewis Rem ***** Main Source File ***** Sync On:Sync Rate 60:Autocam Off Global MaxCodes MaxCodes=55 Type Coordinates x as FLoat y as Float z as Float Endtype Global Object as Coordinates Global Target as Coordinates Type Menu ObjectNum as DWord MenuText as String Rotate As Float Pos as Coordinates Endtype MI=MaxCodes+20 Dim Menu(MI) as Menu Type Commands Menu_ID as Integer Com_ID as Integer Com_Text as String Value as Integer EndType Dim Command_Menu(20) as Commands Dim Code_List(MaxCodes) as Commands Global MouseRate Global m_Select as Integer Global Select_Menu as Integer Global Last_Menu as Integer Global Code Global IfCount Type Players Com_Line as Integer Com_Delay as Integer N as Integer A as Integer B as Integer Hull as Integer Armor as Integer Treads as Integer Turret as Integer Weapon as Integer Scanner as Integer Tank_Angle as Float Scanner_Angle as Float Turret_Angle as Float Shield_On as Integer Shield as Integer Position as Coordinates Tank_Object as Integer Repair_Kits as Integer Temp_Damage as Integer Temp_Object as Integer Temp_Range as Integer Temp_Enemy as Integer BulletID as Integer Bullet_Range as Integer IfDoIt as Integer IfDeep as Integer HitMe as Integer Rep as Integer Rep_Count as Integer EndType Dim Player(2) as Players Dim Player_Code(2,MaxCodes) as Commands Dim Bullets(50) Make_Field() Make_Tank(10) Make_Tank(11) Position Object 10,15,2,15 Position Object 11,185,2,185 Position Camera 100,20,10 Restore R_Main_Menu i=0 Do Read ID If ID=999 Then Exit Command_Menu(i).Com_ID=ID Read Command_Menu(i).Com_Text Read Flag Make_Menu_Box(100+i,Command_Menu(i).Com_Text,Command_Menu(i).Com_ID,45,45-(i*5),80) i=i+1 Loop Select_Menu=0 Last_Menu=0 Code=0 Do Turn Object Left 10,1 Turn Object Right 11,1 Select Select_Menu Case 0:Main_Menu():EndCase Case 1,2,3,4,5,6:Sub_Menu():EndCase Case 7:System_Menu():EndCase EndSelect If m_Select=Code+19 and Code>0 Code=Code-1 If Code_List(Code).Com_Text="End If" Then IfCount=IfCount+1 If Left$(Code_List(Code).Com_Text,2)="If" Then IfCount=IfCount-1 Code_List(Code).Menu_ID=0 Code_List(Code).Com_ID=0 Code_List(Code).Value=0 Code_List(Code).Com_Text="" Delete_Menu_Box(m_Select) Endif Turn Camera Left LeftKey()-RightKey() Move Camera Upkey()-DownKey() Sync Loop Function Main_Menu() Select_Menu=0 If Last_Menu<>Select_Menu For i = 0 to 19 Delete_Menu_Box(i) Next i Restore R_Main_Menu i=0 Do Read ID If ID=999 Then Exit Command_Menu(i).Com_ID=ID Read Command_Menu(i).Com_Text Read Flag Make_Menu_Box(100+i,Command_Menu(i).Com_Text,Command_Menu(i).Com_ID,45,45-(i*5),80) i=i+1 Loop Last_Menu=Select_Menu Endif m_Select=Menu_Wrangler() If M_Select>-1 and M_select<20 Select_Menu=M_select+1 Endif EndFunction Function Sub_Menu() If Last_Menu<>Select_Menu For i = 0 to 19 Delete_Menu_Box(i) Next i Select Select_Menu Case 1:Restore R_Move_Menu:EndCase Case 2:Restore R_Scan_Menu:EndCase Case 3:Restore R_Weapon_Menu:EndCase Case 4:Restore R_Conditions_Menu:EndCase Case 5:Restore R_Var_Menu:EndCase Case 6:Restore R_Misc_Menu:EndCase EndSelect i=0 Do Read ID If ID=999 Then Exit Command_Menu(i).Com_ID=ID Read Command_Menu(i).Com_Text Read Command_Menu(i).Value Make_Menu_Box(100+i,Command_Menu(i).Com_Text,Command_Menu(i).Com_ID,45,45-(i*5),80) i=i+1 Loop Last_Menu=Select_Menu Endif m_Select=Menu_Wrangler() If m_Select<0 then ExitFunction If m_Select=0 Select_Menu=0 ExitFunction Else If Menu(M_Select).MenuText="End If" and IfCount=0 Then ExitFunction If M_select<20 and Code<=MaxCodes Code_List(Code).Menu_ID=Select_Menu Code_List(Code).Com_ID=M_Select offset=Int(Code/19) If Menu(M_Select).MenuText="End If" Then IfCount=IfCount-1 horz=-50+(offset*30)+IfCount*3:vert=45+(Offset*19*5)-(code*5) If Command_Menu(M_Select).Value=1 Make_Menu_Box(200+Code,"Enter Value:",20+Code,horz,vert,80) Do Set Cursor Object Screen X(200+Code)+45,Object Screen Y(200+Code)-10 Input "",v$ If Val(v$)<51 OR Select_Menu<>5 Or M_select<>5 Then Exit Loop Code_List(Code).Value=Val(v$) Code_List(Code).Com_Text=Menu(M_Select).MenuText+v$ Else Code_List(Code).Value=0 Code_List(Code).Com_Text=Menu(M_Select).MenuText Endif Make_Menu_Box(200+Code,Str$(Code+1)+": "+Code_List(Code).Com_Text,20+Code,horz,vert,80) Code=Code+1 If Left$(Menu(M_Select).MenuText,2)="If" Then IfCount=IfCount+1 Endif Endif EndFunction Function System_Menu() If Last_Menu<>Select_Menu For i = 0 to 19 Delete_Menu_Box(i) Next i Restore R_Syst_Menu i=0 Do Read ID If ID=999 Then Exit Command_Menu(i).Com_ID=ID Read Command_Menu(i).Com_Text Read Command_Menu(i).Value Make_Menu_Box(100+i,Command_Menu(i).Com_Text,Command_Menu(i).Com_ID,45,45-(i*5),80) i=i+1 Loop Last_Menu=Select_Menu Endif m_Select=Menu_Wrangler() if m_Select<0 Then ExitFunction Select m_Select Case 0 Select_Menu=0 ExitFunction EndCase Case 1 Make_Menu_Box(101,"Enter File Name:",1,45,40,80) Set Cursor Object Screen X(101)-45,Object Screen Y(101)+15 Input "",fs$ If File Exist(fs$) Make_Menu_Box(101,"File Exists. Delete (Y=Yes)?",1,45,40,80) Set Cursor Object Screen X(101)-45,Object Screen Y(101)+15 Input "",a$:If lower$(a$)="y" Then Delete File fs$ Endif Save_Code_List(fs$) Last_Menu=0 EndCase Case 2 Make_Menu_Box(102,"Enter File Name:",2,45,35,80) Set Cursor Object Screen X(102)-45,Object Screen Y(102)+15 Input "",fs$ If File Exist(fs$) For i = 20 to 20+MaxCodes Delete_Menu_Box(i) Next i Load_Code_List(fs$) IfCount=0 For i = 0 to MaxCodes If Code_List(i).Com_ID>0 If Code_List(i).Com_Text="End If" Then IfCount=IfCount-1 offset=Int(i/19) horz=-50+(offset*30)+IfCount*3:vert=45+(Offset*19*5)-(i*5) Make_Menu_Box(200+i,Str$(i+1)+": "+Code_List(i).Com_Text,20+i,horz,vert,80) If Left$(Code_List(i).Com_Text,2)="If" Then IfCount=IfCount+1 Code=i Endif Next i Last_Menu=0 Else Set Cursor Screen Width()/2-20,100 Print "File Name does not exist." Sync Wait Key Endif EndCase Case 3 Test() EndCase Case 4 Rem Load 2nd player code Endcase Endselect EndFunction Function Test() Kill=0:Win=0 Position Object 10,15,2,15 Position Object 11,185,2,185 Rotate Object 10,0,0,0 Rotate Object 11,0,180,0 For i = 0 to MaxCodes+20 Delete_Menu_Box(i) Next i For j = 1 to 2 For i = 0 to MaxCodes Player_Code(j,i).Menu_ID=Code_List(i).Menu_ID Player_Code(j,i).Com_ID=Code_List(i).Com_ID Player_Code(j,i).Com_Text=Code_List(i).Com_Text Player_Code(j,i).Value=Code_List(i).Value Next i Player(j).Com_Line = 0 Player(j).Com_Delay = 1 Player(j).N = 0 Player(j).A = 0 Player(j).B = 0 Player(j).Hull = 100 Player(j).Armor = 100 Player(j).Treads = 100 Player(j).Turret = 100 Player(j).Weapon = 100 Player(j).Scanner = 100 Player(j).Tank_Angle = 0 Player(j).Scanner_Angle = 0 Player(j).Turret_Angle = 0 Player(j).Shield_On = 0 Player(j).Shield = 1000 Player(j).Tank_Object = 9+j Player(j).Repair_Kits = 3 Player(j).Temp_Damage = 0 Player(j).Temp_Object = 0 Player(j).Temp_Range = 0 Player(j).Temp_Enemy = 0 Player(j).BulletID = 0 Player(j).Bullet_Range = 0 Player(j).IfDoIt=0 Player(j).IfDeep=0 Player(j).HitMe=Timer() Player(j).Rep=0 Next j Player(2).Tank_Angle=180 Do Wrangle_Code() Wrangle_Bullets() If Player(1).Com_Line>0 Then Center Text Screen Width()/2,0,Player_Code(1,Player(1).Com_Line-1).Com_Text If Player(1).Hull<1 And Player(2).Hull<1 Kill=0:Win=0 Exit Endif If Player(1).Hull<1 Kill=1:Win=2 Exit Endif If Player(2).Hull<1 Kill=2:Win=1 Exit Endif Turn Camera Left LeftKey()-RightKey() Move Camera Upkey()-DownKey() Set Cursor 0,0:Print "Enemy Found: ";Player(1).Temp_Enemy Print "Press [Space] To Exit Test" If Inkey$()=" " Then Exit Sync Loop If Kill=1 Then Center Text Screen Width()/2,100,"Player 2 Wins!" If Kill=2 Then Center Text Screen Width()/2,100,"Player 1 Wins!" If Kill=0 Then Center Text Screen Width()/2,100,"It's a tie!" Sync Wait Key For i = 0 to MaxCodes If Code_List(i).Com_ID>0 If Code_List(i).Com_Text="End If" Then IfCount=IfCount-1 offset=Int(i/19) horz=-50+(offset*30)+IfCount*3:vert=45+(Offset*19*5)-(i*5) Make_Menu_Box(200+i,Str$(i+1)+": "+Code_List(i).Com_Text,20+i,horz,vert,80) If Left$(Code_List(i).Com_Text,2)="If" Then IfCount=IfCount+1 Code=i Endif Next i Select_Menu=0:Last_Menu=1 EndFunction Function Wrangle_Code() For i = 1 to 2 If Player(i).Com_Delay<1 If Player(i).Com_Line>MaxCodes Then Player(i).Com_Line=0 If Player_Code(i,Player(i).Com_Line).Com_Text="" Then Player(i).Com_Line=0 Code$=Player_Code(i,Player(i).Com_Line).Com_text Menu=Player_Code(i,Player(i).Com_Line).Menu_ID Code=Player_Code(i,Player(i).Com_Line).Com_ID Valu=Player_Code(i,Player(i).Com_Line).Value Select Menu Case 1 If Player(i).IfDeep=Player(i).IfDoIt Select Code Case 1:C_Move_Forward(i):EndCase Case 2:C_Move_Back(i):EndCase Case 3:C_Set_N_To_Px(i):EndCase Case 4:C_Set_N_To_Py(i):EndCase Case 5:C_Turn_Right(i):EndCase Case 6:C_Turn_Left(i):EndCase Case 7:C_Set_N_To_Pa(i):EndCase Case 8:C_Check_Treads(i):EndCase Case 9:C_Repair_Treads(i):EndCase EndSelect Endif EndCase Case 2 If Player(i).IfDeep=Player(i).IfDoIt Select Code Case 1:C_Scan_For_Obst(i):EndCase Case 2:C_Set_N_To_Or(i):EndCase Case 3:C_Set_N_to_Ox(i):EndCase Case 4:C_Set_N_To_Oy(i):EndCase Case 5:C_Scan_For_Enemy(i):EndCase Case 6:C_Set_N_To_Er(i):EndCase Case 7:C_Set_N_To_Ex(i):EndCase Case 8:C_Set_N_To_Ey(i):EndCase Case 9:C_Set_N_To_Ea(i):EndCase Case 10:C_Turn_Scanner_Right(i):EndCase Case 11:C_Turn_Scanner_Left(i):EndCase Case 12:C_Set_N_To_Sa(i):EndCase Case 13:C_Check_Scanner(i):Endcase Case 14:C_Repair_Scanner(i):EndCase Case 15:C_Set_Scanner_Angle_To_N(i):EndCase EndSelect Endif EndCase Case 3 If Player(i).IfDeep=Player(i).IfDoIt Select Code Case 1:C_Fire_Weapon(i):EndCase Case 2:C_Turn_Turret_Right(i):EndCase Case 3:C_Turn_Turret_Left(i):EndCase Case 4:C_Set_N_To_Wa(i):EndCase Case 5:C_Check_Weapon(i):EndCase Case 6:C_Repair_Weapon(i):EndCase Case 7:C_Check_Turret(i):EndCase Case 8:C_Repair_Turret(i):EndCase Case 9:C_Set_Turret_Angle_To_N(i):EndCase EndSelect EndIf EndCase Case 4 Select Code Case 1:N_LessThan_Val(i,Valu):EndCase Case 2:N_GreaterThan_Val(i,Valu):EndCase Case 3:N_Equals_Val(i,Valu):EndCase Case 4:N_NotEqual_Val(i,Valu):EndCase Case 5:N_LessThan_A(i):EndCase Case 6:N_GreaterThan_A(i):EndCase Case 7:N_Equals_A(i):EndCase Case 8:N_NotEqual_A(i):EndCase Case 9:N_LessThan_B(i):EndCase Case 10:N_GreaterThan_B(i):EndCase Case 11:N_Equals_B(i):EndCase Case 12:N_NotEqual_B(i):EndCase Case 13:C_End_If(i):EndCase EndSelect EndCase Case 5 If Player(i).IfDeep=Player(i).IfDoIt Select Code Case 1:Player(i).A=Player(i).N:EndCase Case 2:Player(i).A=Player(i).B:EndCase Case 3:Player(i).B=Player(i).A:EndCase Case 4:Player(i).B=Player(i).N:EndCase Case 5:Player(i).N=Player(i).A:EndCase Case 6:Player(i).N=Player(i).B:EndCase Case 7:Player(i).N=Rnd(Player(i).A):EndCase Case 8:Player(i).A=Valu:EndCase Case 9:Player(i).B=Valu:EndCase Case 10:Player(i).N=Valu:EndCase Case 11:Player(i).N=Player(i).N+Valu:EndCase Case 12:Player(i).N=Player(i).N-Valu:EndCase Case 13:Player(i).N=Player(i).N+Player(i).A:EndCase Case 14:Player(i).N=Player(i).N-Player(i).A:EndCase Case 15:Player(i).N=Player(i).Temp_Damage:EndCase EndSelect EndIf EndCase Case 6 If Player(i).IfDeep=Player(i).IfDoIt Select Code Case 1:C_Goto(i,Valu):EndCase Case 2:C_Wait(i,Valu):EndCase Case 3:C_Repeat(i,Valu):EndCase Case 4:C_Loop(i):EndCase Case 5:C_Check_Hit(i):EndCase Case 6:C_Check_Armor(i):EndCase Case 7:C_Repair_Armor(i):EndCase Case 8:C_Check_Hull(i):EndCase Case 9:C_Repair_Hull(i):EndCase Case 10:C_Raise_Shield(i):EndCase Case 11:C_Lower_Shield(i):EndCase Case 12:C_Set_N_To_Se(i):EndCase EndSelect EndIf EndCase EndSelect Player(i).Com_Line=Player(i).Com_Line+1 Endif Player(i).Com_delay=Player(i).Com_Delay-1 Next i EndFunction Function Make_Field() If Matrix Exist(1) Then Delete Matrix 1 Make Matrix 1,200,200,20,20 If Bitmap Exist(1) Then Delete Bitmap 1 Create Bitmap 1,128,128 Set Current Bitmap 1 Ink RGB(0,128,0),0 Box 0,0,127,127 For i=1 to 200 Dot rnd(127),rnd(127),Rgb(10,Rnd(255),10) Next i Get Image 999,0,0,127,127 Prepare Matrix Texture 1,999,1,1 Update Matrix 1 Make Object Box 901,200,10,2 Offset Limb 901,0,100,0,0 Clone Object 902,901 Clone Object 903,901 Clone Object 904,901 Turn Object Left 902,90 Move Object 903,200 Move Object Right 904,200 Turn Object Left 904,90 Make Object Sphere 601,7,8,8 Make Object Cylinder 602,5 Scale Object 602,30,100,30 Make Mesh From Object 602,602 Add Limb 601,1,602 Delete Object 602 Delete Mesh 602 Offset Limb 601,1,0,2.5,0 Offset Limb 601,0,0,7,0 Texture Limb 601,0,999 Color Limb 601,1,RGB(128,64,64) Make Object Sphere 602,8,8,8 Color Object 602,RGB(109,103,78) For i = 1 to rnd(50)+rnd(50)+rnd(50)+rnd(50) cln=rnd(1)+1 Clone Object 602+i,600+cln Position Object 602+i,rnd(180)+10,0,rnd(180)+10 Set Object Collision To Boxes 602+i Next i Position Object 601,rnd(180)+10,0,rnd(180)+10 Set Object Collision To Boxes 601 Position Object 602,rnd(180)+10,0,rnd(180)+10 Set Object Collision To Boxes 602 EndFunction Function Make_Tank(ObjectID) If Object Exist (ObjectID) Then Delete Object ObjectID `Body Make Object Box ObjectID,7,2.5,5 `Turret If Object Exist(2) Then Delete Object 2 If Mesh Exist(2) Then Delete Mesh 2 Make Object Cylinder 2,5 Scale Object 2,100,40,100 Make Mesh From Object 2,2 Add Limb ObjectID,1,2 Offset Limb ObjectID,1,0,2,0 Delete Mesh 2 Delete Object 2 `Cannon Make Object Cylinder 2,4 Scale Object 2,25,120,25 Offset Limb 2,0,0,2,0 Roll Object Right 2,90 Fix Object Pivot 2 Make Mesh From Object 2,2 Add Limb ObjectID,2,2 Offset Limb ObjectID,2,0,2,0 Color Limb ObjectID,2,RGB(128,128,128) `Treads Delete Mesh 2 Delete Object 2 Make Object Cylinder 2,10 Scale Object 2,100,20,20 Pitch Object Down 2,90 Fix Object Pivot 2 Make Mesh From Object 2,2 Add Limb ObjectID,3,2 Add Limb ObjectID,4,2 Offset Limb ObjectID,3,0,-1.5,-3 Offset Limb ObjectID,4,0,-1.5,3 `Tread Panels Delete Object 2 Delete Mesh 2 Make Object Sphere 2,10 Scale Object 2,100,20,1 Make Mesh from Object 2,2 Add Limb ObjectID,5,2 Add Limb ObjectID,6,2 Offset Limb ObjectID,5,0,-1.5,-3.9 Offset Limb ObjectID,6,0,-1.5,3.9 Delete Object 2 Delete Mesh 2 `Scanner Make Object Box 2,2,.4,1 Offset Limb 2,0,1,0,0 Make Mesh From Object 2,2 Add Limb ObjectID,7,2 Offset Limb ObjectID,7,0,3.2,0 Delete Object 2 Delete Mesh 2 `Lid Make Object Sphere 2,5 Scale Object 2,100,.1,100 Make Mesh From Object 2,2 Add Limb ObjectID,8,2 Offset Limb ObjectID,8,0,2.9,0 Delete Object 2 Delete Mesh 2 `Object settings Set Object Cull ObjectID,0 Turn Object Left ObjectID,90 Fix Object Pivot ObjectID Color Object ObjectID,RGB(192,192,192) `Treads image If Bitmap Exist(1) Then Delete Bitmap 1 Create Bitmap 1,100,20 Set Current Bitmap 1 Ink RGB(210,210,210),0 Box 0,0,99,19 Ink Rgb(40,40,40),0 For i = 0 to 90 step 10 Box i,0,i+1,19 Next i Get Image 1,0,0,99,19 Delete Bitmap 1 Texture Limb ObjectID,3,1 Texture Limb ObjectID,4,1 Set Object Collision On ObjectID Set Object Collision to Boxes ObjectID EndFunction Function Make_Menu_Box(ObjectID,txt$,MenuID,x#,y#,z#) If MenuID>Array Count(Menu()) Or MenuID<0 Then ExitFunction If Object Exist(ObjectID) Then Delete Object ObjectID If Image Exist(ObjectID) Then Delete Image ObjectID If Menu(MenuID).ObjectNum>0 If Object Exist(Menu(MenuID).ObjectNum) then Delete Object Menu(MenuID).ObjectNum Endif Make Object Box ObjectID,25,4,4 If Bitmap Exist(1) Then Delete Bitmap 1 w=Text Width(txt$)*1.2:h=Text Height(txt$)*2 Create Bitmap 1,w+1,h+1 Set Current Bitmap 1 Ink RGB(0,0,128),0 Box 0,0,w,h Ink RGB(255,255,255),0 Center Text w/2,h*.33,txt$ Get Image ObjectID,0,0,w,h,1 Texture Object ObjectID,ObjectID Set Current Bitmap 0 Delete Bitmap 1 Menu(MenuID).ObjectNum=ObjectID Menu(MenuID).MenuText=txt$ Menu(MenuID).Pos.x=x# Menu(MenuID).Pos.y=y# Menu(MenuID).Pos.z=z# Position Object ObjectID,Camera Position X(),Camera Position Y(),Camera Position Z() Set Object To Camera Orientation ObjectID Move Object ObjectID,z# Move Object Right ObjectID,x# Move Object Up ObjectID,y# `Lock Object On ObjectID Set Object Collision Off ObjectID Set Object Collision To Boxes ObjectID Endfunction Function Menu_Wrangler() Menu_Item=-1 For i = 0 to Array Count(Menu()) ObjectID=Menu(i).ObjectNum If ObjectID>0 Position Object ObjectID,Camera Position X(),Camera Position Y(),Camera Position Z() Set Object To Camera Orientation ObjectID Move Object ObjectID,Menu(i).Pos.z Move Object Right ObjectID,Menu(i).Pos.x Move Object Up ObjectID,Menu(i).Pos.y If Pick Object(MouseX(),MouseY(),ObjectID,ObjectID)=ObjectID Menu(i).Rotate=Menu(i).Rotate+1 Menu_Item=i Else Menu(i).Rotate=0 Endif If Menu(i).Rotate>89 Then Menu(i).Rotate=0 Pitch Object Down ObjectID,Menu(i).Rotate Endif Next i If MouseClick()=1 And MouseRate=0 MouseRate=1 Else If MouseClick()=0 Then MouseRate=0 Menu_Item=-1 Endif EndFunction Menu_Item Function Delete_Menu_Box(MenuID) ObjectID=Menu(MenuID).ObjectNum If ObjectID>0 If Object Exist(ObjectID) Delete Object ObjectID Delete Image ObjectID Endif Endif Menu(MenuID).ObjectNum=0 Menu(MenuID).MenuText="" Menu(MenuID).Rotate=0 EndFunction R_Main_Menu: Data 0,"Movement Menu",0 Data 1,"Scanner Menu",0 Data 2,"Weapon Menu",0 Data 3,"Conditions Menu",0 Data 4,"Variables Menu",0 Data 5,"Misc. Menu",0 Data 6,"System Menu",0 Data 999,"999",999 R_Move_Menu: Data 0,"Main Menu",0 Data 1,"Move Forward 1",0 Data 2,"Move Back 1",0 Data 3,"Set N=Tank_X",0 Data 4,"Set N=Tank_Y",0 Data 5,"Turn Tank Right 45",0 Data 6,"Turn Tank Left 45",0 Data 7,"Set N=Tank_Angle",0 Data 8,"Check Treads",0 Data 9,"Repair Treads",0 Data 999,"999",999 R_Scan_Menu: Data 0,"Main Menu",0 Data 1,"Scan For Obstical",0 Data 2,"Set N=Object_Range",0 Data 3,"Set N=Object_X",0 Data 4,"Set N=Object_Y",0 Data 5,"Scan For Enemy",0 Data 6,"Set N=Enemy_Range",0 Data 7,"Set N=Enemy_X",0 Data 8,"Set N=Enemy_Y",0 Data 9,"Set N=Enemy_Angle",0 Data 10,"Turn Scanner Right 45",0 Data 11,"Turn Scanner Left 45",0 Data 12,"Set N=Scanner_Angle",0 Data 13,"Check Scanner",0 Data 14,"Repair Scanner",0 Data 15,"Set Scanner_Angle=N",0 Data 999,"999",999 R_Weapon_Menu: Data 0,"Main Menu",0 Data 1,"Fire Weapon",0 Data 2,"Turn Turret Right 45",0 Data 3,"Turn Turret Left 45",0 Data 4,"Set N=Turret_Angle",0 Data 5,"Check Weapon",0 Data 6,"Repair Weapon",0 Data 7,"Check Turret",0 Data 8,"Repair Turret",0 Data 9,"Set Turret_Angle=N",0 Data 999,"999",999 R_Conditions_Menu: Data 0,"Main Menu",0 Data 1,"If N < ",1 Data 2,"If N > ",1 Data 3,"If N = ",1 Data 4,"If N <> ",1 Data 5,"If N < A",0 Data 6,"If N > A",0 Data 7,"If N = A",0 Data 8,"If N <> A",0 Data 9,"If N < B",0 Data 10,"If N > B",0 Data 11,"If N = B",0 Data 12,"If N <> B",0 Data 13,"End If",0 Data 999,"999",999 R_Var_Menu: Data 0,"Main Menu",0 Data 1,"Set A = N",0 Data 2,"Set A = B",0 Data 3,"Set B = A",0 Data 4,"Set B = N",0 Data 5,"Set N = A",0 Data 6,"Set N = B",0 Data 7,"Set N=Random(A)",0 Data 8,"Set A = ",1 Data 9,"Set B = ",1 Data 10,"Set N = ",1 Data 11,"Set N = N + ",1 Data 12,"Set N = N - ",1 Data 13,"Set N = N + A",0 Data 14,"Set N = N - A",0 Data 15,"Set N = Damage",0 Data 999,"999",999 R_Misc_Menu: Data 0,"Main Menu",0 Data 1,"Goto ",1 Data 2,"Wait ",1 Data 3,"Repeat ",1 Data 4,"Loop ",0 Data 5,"Set N = Tank_Hit",0 Data 6,"Check Armor",0 Data 7,"Repair Armor",0 Data 8,"Check Hull",0 Data 9,"Repair Hull",0 Data 10,"Raise Shield",0 Data 11,"Lower Shield",0 Data 12,"Set N = Shield Energy",0 Data 999,"999",999 R_Syst_Menu: Data 0,"Main Menu",0 Data 1,"Save Code",1 Data 2,"Load Code",1 Data 3,"Test Code",0 Data 4,"Play Code",0 Data 999,"999",999 Function C_Move_Forward(P) If Player(P).Treads<1 Or Player(P).Shield_on=1 Then ExitFunction Move Object Player(P).Tank_Object,5 If Object Collision (Player(P).Tank_Object,0)>0 Then Move Object Player(P).Tank_Object,-5 Player(P).Com_Delay=50 EndFunction Function C_Move_Back(P) If Player(P).Treads<1 Or Player(P).Shield_on=1 Then ExitFunction Move Object Player(P).Tank_Object,-5 If Object Collision (Player(P).Tank_Object,0)>0 Then Move Object Player(P).Tank_Object,5 Player(P).Com_Delay=50 EndFunction Function C_Set_N_To_Px(P) Player(P).N=Object Position X(Player(P).Tank_Object) Player(P).Com_Delay=1 EndFunction Function C_Set_N_To_Py(P) Player(P).N=Object Position Z(Player(P).Tank_Object) Player(P).Com_Delay=1 EndFunction Function C_Turn_Right(P) If Player(P).Treads<1 Or Player(P).Shield_on=1 Then ExitFunction Player(P).Tank_Angle=Player(P).Tank_Angle+45 If Player(P).Tank_Angle>360 Then Player(P).Tank_Angle=Player(P).Tank_Angle-360 If Player(P).Tank_Angle<0 Then Player(P).Tank_Angle=Player(P).Tank_Angle+360 Rotate Object Player(P).Tank_Object,0,Player(P).Tank_Angle,0 Player(P).Com_Delay=50 EndFunction Function C_Turn_Left(P) If Player(P).Treads<1 Or Player(P).Shield_on=1 Then ExitFunction Player(P).Tank_Angle=Player(P).Tank_Angle-45 If Player(P).Tank_Angle>359 Then Player(P).Tank_Angle=Player(P).Tank_Angle-360 If Player(P).Tank_Angle<0 Then Player(P).Tank_Angle=Player(P).Tank_Angle+360 Rotate Object Player(P).Tank_Object,0,Player(P).Tank_Angle,0 Player(P).Com_Delay=50 EndFunction Function C_Set_N_To_Pa(P) Player(P).N=Player(P).Tank_Angle Player(P).Com_Delay=1 EndFunction Function C_Check_Treads(P) Player(P).Temp_Damage=Player(P).Treads Player(P).Com_Delay=10 EndFunction Function C_Repair_Treads(P) If Player(P).Repair_Kits>0 Player(P).Repair_Kits=Player(P).Repair_Kits-1 Player(P).Treads=100 Player(P).Com_Delay=100 Else Player(P).Com_Delay=1 EndIf EndFunction Function C_Scan_For_Obst(P) If Player(P).Scanner<1 Or Player(P).Shield_on=1 Then ExitFunction If Object Exist(2) Then Delete Object 2 Make Object Cube 2,5 Return_Object(Player(P).Tank_Object) Rotate Object 2,0,Player(P).Scanner_Angle+Player(P).Tank_Angle,0 For i = 1 to 10 Scale Object 2,i*100,100,100 Position Object 2,Object.x,Object.y,Object.z Move Object 2,5*i If Object Collision(2,0)>600 Player(P).Temp_Object=Object Collision(2,0) Player(P).Temp_Range=i Exit Else Player(P).Temp_Object=0 Player(P).Temp_Range=999 Endif Next i Delete Object 2 Player(P).Com_Delay=20 Endfunction Function C_Set_N_To_Or(P) Player(P).N=Player(P).Temp_Range Player(P).Com_Delay=1 EndFunction Function C_Set_N_To_Ox(P) Return_Object(Player(P).Temp_Object) Player(P).N=Object.x Player(P).Com_Delay=1 EndFunction Function C_Set_N_To_Oy(P) Return_Object(Player(P).Temp_Object) Player(P).N=Object.z Player(P).Com_Delay=1 EndFunction Function C_Scan_For_Enemy(P) If Player(P).Scanner<1 Or Player(P).Shield_on=1 Then ExitFunction If Object Exist(2) Then Delete Object 2 Make Object Cube 2,5 Set Object Collision To Boxes 2 Return_Object(Player(P).Tank_Object) Rotate Object 2,0,Player(P).Scanner_Angle+Player(P).Tank_Angle,0 For i = 1 to 10 Scale Object 2,i*100,100,100 Position Object 2,Object.x,Object.y,Object.z Move Object 2,5*i oc=Object Collision(2,0) If oc>9 And oc<21 And oc<>Player(P).Tank_Object Player(P).Temp_Enemy=oc Player(P).Temp_Range=i Exit Else Player(P).Temp_Enemy=0 Player(P).Temp_Range=999 Endif Next i Delete Object 2 Player(P).Com_Delay=20 Endfunction Function C_Set_N_To_Er(P) Player(P).N=Player(P).Temp_Range Player(P).Com_Delay=1 EndFunction Function C_Set_N_To_Ex(P) Return_Object(Player(P).Temp_Enemy) Player(P).N=Object.x Player(P).Com_Delay=1 EndFunction Function C_Set_N_To_Ey(P) Return_Object(Player(P).Temp_Enemy) Player(P).N=Object.z Player(P).Com_Delay=1