📄 kota43b.pas
字号:
end;
6: //儗僨傿傾儞僪僔儖僶亅僈儞偭傐偄
begin
if (a4 = 1)then begin a4 := AL.Rnd(15); y1 := -40; end;
a1 := 1;
if ((a4 > 35) and (a4 < 49)) then a1 := (a4-35) div 2 + 1;
if (a4 > 48)then a1 := 7;
if (a4 > 65)then
begin
if (x > 150)then x1 := x1 + 2
else x1 := x1 - 2;
a1 := 10 + x1 div 30;
y1 := y1 + 2;
end;
y := y + y1 div 10;
x := x + x1 div 10;
if ((DIF<>-1) and (a4 = 60))then AutoEnemyShot(x,y,attk,-1);
if (a4 = 65)then AutoEnemyShot(x,y,3,-1);
if ((DIF=1)and(a4 = 75))then AutoEnemyShot(x,y,3,-1);
if ((x < -30) or (x > 330)) then Empty := False;
end;
7 : //挘傝晅偒朇戜
begin
if (a4 = 1)then begin y1 := y*10; a2 := 180; end;
y1 := y1 + PSpeed;
y := y1 div 10;
if (y > 325)then Empty := False;
//峌寕張棟
if ((y<PD[0].y+50)and(100<PlayerLong(x,y)))then
if ((a4 mod (45-DIF*15)) = 1)then AutoEnemyShot(x,y,attk,a2);
//朇戜夞揮
aa1 := keisan1(PD[0].x - x ,PD[0].y - y); //夞揮寁嶼
if (abs(aa1-a2)<360)then
if (aa1>a2)then a2 := a2 + 4
else a2 := a2 - 4
else
if (360>a2)then a2 := a2 - 4
else a2 := a2 + 4;
if (abs(aa1-a2)<5)then a2 := aa1; //峴偒夁偓杊巭
a2 := (a2 + 720) mod 720;
a1 := ((a2+20) mod 720) div 40 + 1;
if (y > 325) then Empty := False;
end;
8 : //愴幵
begin
if (a4 = 1)then
begin
y1 := y*10;
if (x > 150)then x := 200 + x
else x := -50 - (150-x);
a2 := 180;
end;
y1 := y1 + PSpeed;
y := y1 div 10;
if (a4 = 105)then a4 := 105 + AL.Rnd(45);
if ((a4 > 5) and (a4 < 105))then
if (x > 150)then x := x - 2
else x := x + 2;
if (y > 325)then Empty := False;
//峌寕
if (100<PlayerLong(x,y))then
if ((a4 mod (52-DIF*15)) = 1)then AutoEnemyShot(x,y,attk,a2);
//朇戜夞揮
aa1 := keisan1(PD[0].x - x ,PD[0].y - y); //夞揮寁嶼
if (abs(aa1-a2)<360)then
if (aa1>a2)then a2 := a2 + 4
else a2 := a2 - 4
else
if (360>a2)then a2 := a2 - 4
else a2 := a2 + 4;
if (abs(aa1-a2)<5)then a2 := aa1; //峴偒夁偓杊巭
a2 := (a2 + 720) mod 720;
a1 := ((a2+20) mod 720)div 40 + 1;
if (y > 325) then Empty := False;
end;
9 : //儘働僢僩朇戜
begin
if (a4 = 1)then begin y1 := y*10; a2 := 180; end;
y1 := y1 + PSpeed;
y := y1 div 10;
if (y > 325)then Empty := False;
//峌寕
aa1 := keisan1(PD[0].x - x ,PD[0].y - y); //夞揮寁嶼
if ((y<PD[0].y)and(100<PlayerLong(x,y)))then
if ((abs(aa1-a2)<3)and((a4 mod 5)=1))then
begin
EntrySound(6);
EntryEnemyShot(x*100+SC[(a2+360)mod 720]*(AL.Rnd(20)-10)
,y*100+SC[(a2+180)mod 720]*(AL.Rnd(20)-10)
,SC[(a2+180)mod 720]*6
,SC[a2]*6
,0,0,8,8,
((a2+22) mod 720) div 45 + 1, 1);
end;
//朇戜夞揮
if (abs(aa1-a2)<360)then
if (aa1>a2)then a2 := a2 + (2+Dif)
else a2 := a2 - (2+Dif)
else
if (360>a2)then a2 := a2 - (2+Dif)
else a2 := a2 + (2+Dif);
if (abs(aa1-a2)<2+Dif)then a2 := aa1; //峴偒夁偓杊巭
a2 := (a2 + 720) mod 720;
a1 := ((a2+20) mod 720)div 40 + 1;
if (y > 325) then Empty := False;
end;
10 : //拞儃僗
begin
if (a4 = 1)then begin y := 350; x1 := x; a2 := 0; end;
if (a4 < 45)then y := 375 + SC[720-a4*4]*3;
x := x1 + SC[a4*4 mod 720] div 3;
if (a4 > 700)then y := y - 1;
if (y < -50)then Empty := False;
if (a4 > 45)then
begin
aa1 := (a4-45) mod 360;
case (aa1 div 72 + 1) of
1 : if ((aa1 mod (4-DIF))=0)then AutoEnemyShot(x,y,5,-1);
2,5 :if ((aa1 mod (5-DIF))=0)then
begin
AutoEnemyShot(x-35,y+10,10,(aa1 * 10)mod 720);
AutoEnemyShot(x+35,y+10,10,((360 - aa1 * 10)+7200)mod 720);
end;
3 : if ((aa1 mod (16-DIF*4))=0)then AutoEnemyShot(x,y,8,aa1);
end;
end;
a1 := 1;
end;
11 : //塹惎宆
begin
if (a4 = 1)then if (x > 150)then x1 := -1 //堏摦曽岦偺愝掕
else x1 := 1;
y := y + 1;
x := x + x1;
aa1 := a4;
if (aa1 mod (6-dif) = 1)then AutoEnemyShot(x,y,attk,(aa1 * 30) mod 720);
if (y > 350)then Empty := False;
if (abs(x-150) > 200)then Empty := False;
end;
12 : //偔傞偭偲慁夞
begin
if (a4 = 1)then
begin y1 := -30; y := 325; a4 := AL.Rnd(20)+1; end;
if ((a4 > 105) and (a4 < 160))then y1 := y1 + 2;
y := y + y1 div 10;
if (a4 = 130)then z := z + 100;//崅偝傪曄峏
if (a4 > 400)then Empty := False;
case (a4 div 50) of
0,1 : a3 := 1;
2 : a3 := (a4-100) div 5 + 1;
else a3 := 10;
end;
if (a4 = 140)then
begin
AutoEnemyShot(x,y,attk,-1);
if (Dif = 1)then AutoEnemyShot(x,y,14,-1);
end;
end;
13 : //彫宆塹惎 墌廃婳摴
begin
if (a4 = 1)then
begin a2 := x * 720 div 300; end;
a1 := (a4 mod 9) + 1;
case a4 div 50 of
0,1,2,3 :
begin
a2 := (a2 + 4) mod 720;
x := 150 + (SC[a2] * ((240-a4)) div 100);
y := 100 + (SC[(a2+180) mod 720] * ((240-a4)) div 100);
end;
4 : begin
a2 := (a2 + 4) mod 720;
x := 150 + (SC[a2] * 4) div 10;
y := 100 + (SC[(a2+180) mod 720] * 4) div 10;
end;
5,6 : y := y - 3;
7 : Empty := False;
end;
if ((a4 = 140) and (Dif > -1))then AutoEnemyShot(x,y,attk,180);
if (a4 = 180)then AutoEnemyShot(x,y,attk,180);
if ((a4 = 220) and (Dif > 0))then AutoEnemyShot(x,y,attk,-1);
end;
14 : //彫宆塹惎 墌廃婳摴乮塃偐傜嵍乯
begin
if (a4 = 1)then
begin a2 := 720 + x div 2; a4 := 75 - x div 4 ; end;
a1 := (a4 mod 9) + 1;
if ((a2 < 540)and(a2 > 500)) then y := y - 2
else
begin
a2 := (a2 + 718) mod 720;
x := 25 + SC[(a2+180) mod 720] * 3;
y := 350 + SC[a2] * 3;
end;
if (y < 0)then Empty := False;
if (a4 = 120)then AutoEnemyShot(x,y,attk,-1);
if ((a4 = 160)and(Dif > -1))then AutoEnemyShot(x,y,attk,-1);
end;
15 : //彫宆塹惎 墌廃婳摴乮嵍偐傜塃乯
begin
if (a4 = 1)then
begin a2 := 360 - x div 2; a4 := 75 - x div 4; end;
a1 := (a4 mod 9) + 1;
if ((a2 < 580)and(a2 > 540)) then y := y - 2
else
begin
a2 := (a2 + 2) mod 720;
x := 275 + SC[(a2+180) mod 720] * 3;
y := 350 + SC[a2] * 3;
end;
if (y < 0)then Empty := False;
if (a4 = 120)then AutoEnemyShot(x,y,attk,-1);
if ((a4 = 160)and(Dif > -1))then AutoEnemyShot(x,y,attk,-1);
end;
16 : //夞揮朇戜
begin
if (a4 = 1)then begin y1 := y*10; a2 := 180; end;
y1 := y1 + PSpeed;
y := y1 div 10;
a2 := (a2 + 1) mod 575;
aaa := a2 mod 72;
if (aaa mod (9-Dif*3) = 1)then
case (a2 div 72) of
0,3 : AutoEnemyShot(x,y,10,aaa*5);
1,5 : AutoEnemyShot(x,y,8,aaa);
2,7 : AutoEnemyShot(x,y,3,aaa*5);
4,6 : AutoEnemyShot(x,y,13,aaa*5);
end;
a1 := (a1 + 1) mod 5 + 1;
if (y > 332) then Empty := False;
end;
end;
if (a3 > 0)then a1 := a3;
end;
end;
end;
end;
procedure TSTG.AutoEnemy(x,y : smallInt; kind : Byte);
begin
case kind of
// 昞帵
// HitArea a3 4 HP M A B No Sc
10 : EntryEnemy(x,y,150, 0,0,50,30, 0,0, 10, 0,0,3, 0,200); //椢偺僓僐
11 : EntryEnemy(x,y,150, 0,0,50,30, 0,0, 10, 0,3,3, 0,200);
20 : EntryEnemy(x,y,150, 0,0,50,30, 0,0, 15, 1,1,3, 0,150); //椢偺僓僐婲摦偪傖偆
21 : EntryEnemy(x,y,150, 0,0,50,30, 0,0, 15, 1,3,3, 0,150);
30 : EntryEnemy(x,y,140, 0,0,80,80, 0,1, 100, 1,8,2, 1,800); //123 拞宆偺儎僣
31 : EntryEnemy(x,y,140, 0,0,80,80, 0,2, 100, 1,9,2, 1,800);
32 : EntryEnemy(x,y,140, 0,0,80,80, 0,3, 80, 1,0,2, 1,700);
40 : EntryEnemy(x,y,150, 0,0,50,30, 0,0, 10, 2,5,9, 2,400);
41 : EntryEnemy(x,y,150, 0,0,50,30, 0,0, 10, 2,6,9, 2,400);
50 : EntryEnemy(x,y,150, 0,0,140,30,0,0, 75, 3,7,2, 3,500);
51 : EntryEnemy(x,y,150, 0,0,140,30,0,0, 75, 3,4,2, 3,500);
60 : EntryEnemy(x,y,150, 0,0,50,50, 0,0, 5 , 4,0,6, 4,150);
70 : EntryEnemy(x,y,150, 0,0,50,50, 0,0, 15, 5,0,3, 5,550); //僋儕僗僞儖
80 : EntryEnemy(x,325,130,0,0,40,50, 0,0, 25, 6,0,9, 6,250); //僔儖僶亅僈儞
81 : EntryEnemy(x,325,130,0,0,40,50, 0,0, 25, 6,3,9, 6,250);
82 : EntryEnemy(x,325,130,0,0,40,50, 0,0, 25, 6,8,9, 6,250);
90 : EntryEnemy(x,y,100, 0,0,40,40, 0,0, 80, 7,3,8, 7,300); //朇戜
91 : EntryEnemy(x,y,100, 0,0,40,40, 0,0, 80, 7,4,8, 7,300);
100: EntryEnemy(x,y,100, 0,0,40,40, 0,0, 35, 8,1,8, 8,200); //愴幵
101: EntryEnemy(x,y,100, 0,0,40,40, 0,0, 35, 8,10,8,8,200);
110: EntryEnemy(x,y,100, 0,0,40,40, 0,0,100, 9,1,8, 9,400); //儘働僢僩朇
120: EntryEnemy(x,y,170, 0,0,120,120,0,0,2500,10,1,7,10,2000); //拞儃僗
130: EntryEnemy(x,y,170, 0,0,80,70, 0,5, 300, 11,13,2,1,800); //塹惎宆(廲)
131: EntryEnemy(x,y,170, 0,0,80,70, 0,5, 300, 11,11,2,1,800); //塹惎宆(愵)
132: EntryEnemy(x,y,170, 0,0,80,70, 0,5, 300, 11,12,2,1,800); //塹惎宆(愵戝)
140: EntryEnemy(x,y,60, 0,0,40,40, 0,0, 15, 12,0,3,11,650); //慁夞宆
141: EntryEnemy(x,y,60, 0,0,40,40, 0,0, 15, 12,3,3,11,650); //慁夞宆
142: EntryEnemy(x,y,60, 0,0,40,40, 0,0, 15, 12,13,3,11,650); //慁夞宆
150: EntryEnemy(x,y,150, 0,0,40,40, 0,0, 50, 13,0,3,12,400); //彫宆塹惎(墌廃)
151: EntryEnemy(x,y,150, 0,0,40,40, 0,0, 50, 13,3,3,12,400); //彫宆塹惎
152: EntryEnemy(x,y,150, 0,0,40,40, 0,0, 50, 13,13,3,12,400); //彫宆塹惎
153: EntryEnemy(x,y,150, 0,0,40,40, 0,0, 50, 13,8,3,12,400); //彫宆塹惎
160: EntryEnemy(x,y,150, 0,0,40,40, 0,0, 50, 14,0,3,12,300); //彫宆塹惎(<<敿墌)
161: EntryEnemy(x,y,150, 0,0,40,40, 0,0, 50, 14,3,3,12,300);
162: EntryEnemy(x,y,150, 0,0,40,40, 0,0, 50, 14,13,3,12,300);
165: EntryEnemy(x,y,150, 0,0,40,40, 0,0, 50, 15,0,3,12,300); //彫宆塹惎(>>敿墌)
166: EntryEnemy(x,y,150, 0,0,40,40, 0,0, 50, 15,3,3,12,300);
167: EntryEnemy(x,y,150, 0,0,40,40, 0,0, 50, 15,13,3,12,300);
170: EntryEnemy(x,y,100, 0,0,60,60, 0,0, 800,16,0,8, 13,1500); //夞揮朇戜
//boss
255:EntryBoss;
end;
end;
//揋偺抏偺張棟--------------------------
procedure TSTG.EntryEnemyShot(x,y,ax,ay,h1,h2,h3,h4,a2 : SmallInt;
Kind : Byte);
var
iii : Integer;
begin
iii := 0;
while ((ESD[iii].Empty = True) and (iii<201))do iii := iii + 1;
ESD[iii].Empty := True;
ESD[iii].x := x;
ESD[iii].y := y;
ESD[iii].x1 := ax;
ESD[iii].y1 := ay;
ESD[iii].a1 := 0;
ESD[iii].a2 := a2;
ESD[iii].a3 := 0;
ESD[iii].h1 := h1;
ESD[iii].h2 := h2;
ESD[iii].h3 := h3;
ESD[iii].h4 := h4;
ESD[iii].kind := kind;
end;
procedure TSTG.MoveEnemyShot;
var
iii : Integer;
begin
for iii := 0 to 200 do
begin
if (ESD[iii].Empty = True)then
begin
with ESD[iii] do
begin
case kind of
0 :begin
a2 := (a2 + 1) mod 6;
a1 := a2 + 17;
end;
1 : a1 := a2 + 0;
2 :begin
a2 := (a2 + 1) mod 6;
a1 := a2 + 23;
end;
3 :begin
a1 := a2 + 29;
end;
4 :begin
a2 := (a2 + 1) mod 6;
a1 := a2 + 23;
x1 := trunc(x1 * 0.97); y1 := trunc(y1 * 0.97);
a3 := a3 + 1;
if (a3 > 40)then
begin Empty := False; AutoEnemyShot(x div 100,y div 100,3,-1); end;
end;
5 :begin
a3 := a3 + 1;
a1 := 255; //椺奜丗儗亅僓亅梡
case (a3 div 40) of
0,3 : begin
h2 := -100;
h3 := 0;
h4 := 0;
end;
1,2 : begin
h1 := 0;
h2 := abs(300 - (y div 100)) div 2;
h3 := 20;
h4 := abs(300- y div 100);
end;
4 : Empty := False;
end;
end;
end;
x := x + x1; y := y + y1;
if ((x<0) or (x>30000))then Empty := False;
if ((y<0) or (y>30000))then Empty := False;
end;
end;
end;
end;
//揋偺抏偺娙棯搊榐梡-----------------------
procedure TSTG.AutoEnemyShot(x,y : SmallInt; Kind : Byte; opt : Integer);
var
k1,k2,k3,ax,ay,iii,aaa : Integer;
begin
if (abs(x-150)>150)then exit;
if (abs(y-150)>160)then exit;
if (opt < 0)then k1 := keisan1(PD[0].x-x ,PD[0].y-y)
else k1 := opt;
k1 := k1 mod 720;
ay := SC[k1];
ax := SC[(k1+180) mod 720];
k2 := ((k1+22) mod 720) div 45 + 1;
case Kind of
0 : begin
EntryEnemyShot(x*100,y*100,ax*3,ay*3, 0,0,8,8, 0, 0);
EntrySound(5);
end;
1 : begin
EntryEnemyShot(x*100,y*100,ax*4,ay*4, 0,0,8,8, k2, 1);
EntrySound(6);
end;
2 : begin
EntryEnemyShot(x*100,y*100,ax*5,ay*5, 0,0,8,8, 0, 2);
EntrySound(5);
end;
3 : begin
EntrySound(6);
for iii := 0 to 2 do
begin
k3 := (k1 +660 + iii*60) mod 720;
ay := SC[k3]; ax := SC[(k3+180) mod 720];
k2 := ((k3+22) mod 720) div 45 + 1;
EntryEnemyShot(x*100,y*100,ax*4,ay*4, 0,0,8,8, k2, 1);
end;
EntryEffect(x,y,0,0,1);
end;
4 : begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -