=MaxCreature;End;functionTForm1.NewSBullet:SmallInt;vari:SmallInt;Oke:Boolean;Temp:PSBullet;BeginOke:=False;i:=0;Repeatinc(i );If(AllPtrSBullet[i]<>nil)and(notAllPtrSBullet[i]^.Exist)thenOke:=True;IfAllPtrSBullet[i]=nilthenBeginNew(Temp);Fillchar(Te mp^,Sizeof(Temp^),0);AllPtrSBullet[i]:=Temp;Oke:=True;End;Until(i=MaxSBullet)or(Oke);IfOkethenNewSBullet:=ielseNewSBullet:=M axSBullet;End;FunctionTForm1.NewSPEffect:SmallInt;vari:SmallInt;Oke:Boolean;Temp:PtrSPEffect;BeginOke:=False;i:=0;Repeatinc( i);If(AllPtrSPEffect[i]<>nil)and(notAllPtrSPEffect[i]^.Exist)thenOke:=True;IfAllPtrSPEffect[i]=nilthenBeginNew(Temp);Fillcha r(Temp^,Sizeof(Temp^),0);AllPtrSPEffect[i]:=Temp;Oke:=True;End;Until(i=MaxSPEffect)or(Oke);IfOkethenNewSPEffect:=ielseNewSPE ffect:=MaxSPEffect;End;procedureTform1.NewSpecialEffect(Idx:Byte;x,y:SmallInt);varn:SmallInt;Beginn:=NewSPEffect;AllPtrSPEff ect[n]^.Exist:=True;AllPtrSPEffect[n]^.TileX:=x;AllPtrSPEffect[n]^.TileY:=Y;WithAllPtrSPEffect[n]^.EffectdoBeginExist:=True; SpdEffect:=1+Random(3);MakeSound(4,xdiv40,ydiv40);CaseIdxof1:BeginIDEffect:=21;CurEffect:=21;MaxEffect:=1;CtrLoop:=1;TxEffec t:=-25;TyEffect:=-22;End;2:BeginIDEffect:=15;CurEffect:=15;CtrLoop:=1;MaxEffect:=1;TxEffect:=-45;TyEffect:=-35;End;3:BeginID Effect:=17;CurEffect:=17;CtrLoop:=1;MaxEffect:=5;TxEffect:=-25;TyEffect:=-22;End;4:BeginIDEffect:=11;CurEffect:=11;CtrLoop:= 1;MaxEffect:=5;TxEffect:=-45;TyEffect:=-35;End;5:BeginIDEffect:=3;CurEffect:=3;CtrLoop:=1+Random(20);MaxEffect:=2;TxEffect:= -17;TyEffect:=-40;End;6:BeginIDEffect:=23;CurEffect:=23;CtrLoop:=1;MaxEffect:=2;TxEffect:=-30;TyEffect:=-28;End;End;End;End; ProcedureTForm1.NewSpecialBullet(Ptr:PObjCreature;x,y:SmallInt);varn,i:SmallInt;Beginn:=NewSBullet;move(AllSBulet[Ptr^.Bull. Ammomod20],AllPtrSBullet[n]^,sizeof(AllSBulet[1]));AllPtrSBullet[n]^.ExplodeRange:=Ptr^.Bull.Ammodiv20;AllPtrSBullet[n]^.Exi st:=True;AllPtrSBullet[n]^.Target:=Ptr^.Target;AllPtrSBullet[n]^.From:=Ptr;AllPtrSBullet[n]^.Ammo:=Ptr^.Bull.Ammo-10;AllPtrS Bullet[n]^.Power:=Ptr^.Bull.Power;AllPtrSBullet[n]^.Speed:=Ptr^.Bull.Speed;Fori:=1toAllPtrSBullet[n]^.OmnidoBeginAllPtrSBull et[n]^.TileX[i]:=X-AllPtrSBullet[n]^.Widthdiv2;AllPtrSBullet[n]^.TileY[i]:=Y-AllPtrSBullet[n]^.Heightdiv2;IfAllPtrSBullet[n] ^.TileY[i]<>0thenAllCreature[n]^.CurBlood:=BloodelseAllCreature[n]^.CurBlood:=AllCreature[n]^.MaxBlood;Tiles[AllCreature[n]^ .MapX,AllCreature[n]^.MapY]:=AllCreature[n];ToBigMap(AllCreature[n],True);BigMap.Map.Canvas.Release;End;procedureTForm1.NewD elivery(Side:Byte);varn,x,y:SmallInt;L1,L2:real;BeginDelAppear[Side]:=0;n:=NewCreature;AllCreature[n]^.Infinite.UnTouchable: =True;AllCreature[n]^.TypeCreature:=7;AllCreature[n]^.ClassCreature:=3;AllCreature[n]^.BelongTo:=Side;AllCreature[n]^.Genera lTask:=0;AllCreature[n]^.Idx:=1;AllCreature[n]^.Id:=9999;AllCreature[n]^.Armor:=255;AllCreature[n]^.CurBlood:=20;AllCreature [n]^.MaxBlood:=20;AllCreature[n]^.Moving:=True;AllCreature[n]^.ActTask1:=0;AllCreature[n]^.ActTask2:=0;AllCreature[n]^.ActTa sk3:=MaxDelayDelivery-25;AllCreature[n]^.Speed:=3;AllCreature[n]^.Active:=False;AllCreature[n]^.TileX:=-10;AllCreature[n]^.T ileY:=-13;AllCreature[n]^.UseAs:=0;AllCreature[n]^.Prior:=0;y:=-1;L1:=3500;RepeatInc(y);L2:=Distance(SiloX[Side],SiloY[Side] ,TileSize,y*TileSize);If(L21200thenRepeatInc(x);L2:=Distance(SiloX[Side],SiloY[Side],x*TileSize,TileSize);If(L2<>0thenAllCre ature[n]^.CurBlood:=BloodelseAllCreature[n]^.CurBlood:=AllCreature[n]^.MaxBlood;ifPtrzzz=nilthenPtrzzz:=AllCreature[n];End;p rocedureTForm1.Scr1Initialize(Sender:TObject);ProcedureInitPicture;vari,j,k,l,x,y,w,z,x1,y1,x2,y2,a,b,c,whonow,u:SmallInt;s1 ,s2,s3,stemp:string;_who,idxRep:array[1..2]ofbyte;Fz:Fileofchar;ch:char;Seen:MapPosition;f,f2:textfile;Ptr:Array[1..3]ofPObj Creature;PtrDummy:PObjCreature;BeginMM.MenuVisible:=False;EnemyRetreat:=False;PlayerRetreat:=False;PlayerQuit:=False;EnemyLo ose:=False;PlayerLoose:=False;TimeExpired:=0;PtrZZZ:=Nil;zzz:=0;Debugers:=False;EnemyTurn:=5;EnemyWait:=0;OtherTime:=0;PtrTa rgetUnit:=Nil;PtrTarget:=Nil;PtrDummy:=Nil;Forj:=1toMaxMosGroupdoFori:=1to10doMosGroup[j].ArrMos[i]:=Nil;Fori:=1to30doBeginM M.BtMenu[i].Visible:=False;MM.BtMenu[i].Enable:=True;End;MM.BtMenu[1].Title:='[MainBattleMenu]';MM.BtMenu[1].PosX:=230;MM.Bt Menu[1].PosY:=145;MM.BtMenu[2].Title:='[ExitProgram]';MM.BtMenu[2].PosX:=250;MM.BtMenu[2].PosY:=145;MM.BtMenu[3].Title:='Exi tProgram';MM.BtMenu[3].PosX:=250;MM.BtMenu[3].PosY:=175;MM.BtMenu[4].Title:='[CancelAttack]';MM.BtMenu[4].PosX:=245;MM.BtMen u[4].PosY:=145;MM.BtMenu[5].Title:='CancelAttack';MM.BtMenu[5].PosX:=250;MM.BtMenu[5].PosY:=195;MM.BtMenu[6].Title:='[Retrea t]';MM.BtMenu[6].PosX:=265;MM.BtMenu[6].PosY:=145;MM.BtMenu[7].Title:='Retreat';MM.BtMenu[7].PosX:=250;MM.BtMenu[7].PosY:=19 5;MM.BtMenu[21].Title:='Areyousure?';MM.BtMenu[21].PosX:=250;MM.BtMenu[21].PosY:=205;MM.BtMenu[22].Title:='Yes';MM.BtMenu[22 ].PosX:=235;MM.BtMenu[22].PosY:=265;MM.BtMenu[23].Title:='No!';MM.BtMenu[23].PosX:=365;MM.BtMenu[23].PosY:=265;MM.BtMenu[24] .Title:='Ok';MM.BtMenu[24].PosX:=365;MM.BtMenu[24].PosY:=265;Fori:=1to30doBeginMM.BtMenu[i].PosX2:=MM.BtMenu[i].PosX+Length( MM.BtMenu[i].Title)*9;MM.BtMenu[i].PosY2:=MM.BtMenu[i].PosY+13;End;fori:=1to3doBeginSilox[i]:=0;CreaCount[i]:=0;FillChar(Upg rade[i],SizeOf(Upgrade[i]),0);End;fori:=1toMaxTaskBuilddoTaskBuild[i].BelongTo:=0;TempImage:=TImage.Create(Self);Scr1.Create Surface(TempSurf,800,480);Scr1.CreateSurface(BigMap.Map,MapMaxX,MapMaxY);BigMap.Map.Canvas.Brush.Color:=ClBlack;BigMap.Map.C anvas.FillRect(Rect(0,0,MapMaxX,MapMaxY));BigMap.Map.Canvas.Release;Scr1.CreateSurface(BigMap.ShadowMap,MapMaxX,MapMaxY);Big Map.ShadowMap.Canvas.Brush.Color:=$101010;BigMap.ShadowMap.Canvas.FillRect(Rect(0,0,MapMaxX,MapMaxY));BigMap.ShadowMap.Canva s.Release;Scr1.CreateSurface(Text1,170,18);Text1.Canvas.Brush.Color:=0;Text1.Canvas.Font.Color:=ClWhite;Text1.Canvas.Font.Na me:='Verdana';Text1.Canvas.Font.Size:=10;Text1.Canvas.Release;Scr1.CreateSurface(Text2,230,18);Text2.Canvas.Brush.Color:=0;T ext2.Canvas.Font.Color:=ClWhite;Text2.Canvas.Font.Name:='Verdana';Text2.Canvas.Font.Size:=10;Text2.Canvas.Release;Scr1.Creat eSurface(Text3,200,18);Text3.Canvas.Brush.Color:=0;Text3.Canvas.Font.Color:=$cc0000;Text3.Canvas.Font.Name:='Verdana';Text3. Canvas.Font.Size:=10;Text3.Canvas.Release;Scr1.CreateSurface(BackLayer,ScrX*TileSize+3,ScrY*TileSize+3);BackLayer.Canvas.Bru sh.Color:=0;BackLayer.Canvas.FillRect(Rect(0,0,ScrX*TileSize,ScrY*TileSize));BackLayer.Canvas.Release;Scr1.CreateSurface(Sha dow,TileSize,TileSize);Shadow.Canvas.Brush.Color:=0;Shadow.Canvas.FillRect(Rect(0,0,TileSize,TileSize));Forj:=0toTileSizedoF ori:=0toTileSizedoIf(j+i)mod2=0thenShadow.Canvas.Pixels[i,j]:=$101010;Shadow.Canvas.Release;TempImage.Picture.LoadFromFile(A pplication.Getnamepath+'Picture\HVBar.bmp');Scr1.CreateSurface(MainMenu,320,250);MainMenu.Canvas.Draw(0,0,TempImage.Picture. Graphic);MainMenu.Canvas.Release;TempImage.Canvas.Brush.Color:=0;TempImage.Canvas.FillRect(Rect(0,0,800,200));TempImage.Pict ure.LoadFromFile(Application.Getnamepath+'Picture\HorBar.bmp');Scr1.CreateSurface(HBar,800,200);HBar.Canvas.Brush.Color:=0;H Bar.Canvas.FillRect(Rect(0,0,800,200));HBar.Canvas.Draw(0,0,TempImage.Picture.Graphic);HBar.Canvas.Release;TempImage.Picture .LoadFromFile(Application.Getnamepath+'Picture\VerBar.bmp');Scr1.CreateSurface(VBar,160,460);VBar.Canvas.Brush.Color:=0;VBar .Canvas.FillRect(Rect(0,0,160,460));VBar.Canvas.Draw(0,0,TempImage.Picture.Graphic);VBar.Canvas.Release;TempImage.Picture.Lo adFromFile(Application.Getnamepath+'Picture\com.bmp');TempSurf.Canvas.Draw(0,0,TempImage.Picture.Graphic);TempSurf.Canvas.Re lease;Scr1.CreateSurface(Commands[1],500,20);Commands[1].Surface.BltFast(0,0,TempSurf.Surface,rect(4,5,499,23),0);Scr1.Creat eSurface(Commands[2],85,26);Commands[2].Surface.BltFast(0,0,TempSurf.Surface,rect(25,73,102,93),0);Scr1.CreateSurface(Comman ds[3],90,30);Commands[3].Surface.BltFast(0,0,TempSurf.Surface,rect(23,37,104,59),0);TempImage.Picture.LoadFromFile(Applicati on.Getnamepath+'Picture\mpointer.bmp');TempSurf.Canvas.Draw(0,0,TempImage.Picture.Graphic);TempSurf.Canvas.Release;fory:=1to 6doBeginScr1.CreateSurface(MPointer[1,y],30,30);MPointer[1,y].Surface.BltFast(0,0,TempSurf.Surface,rect(27+(y-1)*60+1,10,57+ (y-1)*60+1,40),0);Scr1.CreateSurface(MPointer[2,y],30,30);MPointer[2,y].Surface.BltFast(0,0,TempSurf.Surface,rect(27+(y-1)*6 0+1,70,57+(y-1)*60+1,100),0);Scr1.CreateSurface(MPointer[3,y],TileSize,TileSize);MPointer[3,y].Surface.BltFast(0,0,TempSurf. Surface,rect(25+(y-1)*60+1,127,65+(y-1)*60+1,167),0);End;Scr1.CreateSurface(MPointer[4,1],41,41);MPointer[4,1].Surface.BltFa st(0,0,TempSurf.Surface,rect(31,189,72,230),0);Scr1.CreateSurface(MPointer[4,2],41,41);MPointer[4,2].Surface.BltFast(0,0,Tem