home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ring.yamanashi.ac.jp/pub/pc/freem/action/
/
action.zip
/
TQAP.zip
/
Usr
/
Enemy.tonyu
< prev
next >
Wrap
Text File
|
2007-06-09
|
17KB
|
761 lines
extends DxChar;
x=trunc(x/32)*32+16;
y=trunc(y/32)*32+16;
vx=0;
vy=0;
zOrder=2;
before=0;
//âüâCâô---------------------------------------------------------------
for (jiki in $chars){
if (jiki is Mychar) break;
}
wait(1);
if (p==$pat_enemy+6) x_trap();
if (p==$pat_enemy+7) y_trap();
if (p==$pat_enemy+8) rotate_trap();
if (p==$pat_enemy+9) refrection();
if (p==$pat_enemy+12) hopping();
if (p==$pat_enemy+15) ghost();
if (p==$pat_enemy+18) wolf();
if (p==$pat_enemy+21) bubels();
if (p==$pat_block+6) fall_brick();
//ôGìsô«âpâ^ü[âôÉ▌ÆΦü@--------------------------------------------------------
function x_trap(){
var move01,move02,move03,move04,move05;
var anim01,anim02,anim03,anim04,anim05;
wsp=2;
while(1){
while(1) {if (jiki.pause==0) break;update();}
WallHit_chk();
atarihantei();
block_sound();
magma();
move01=(wX!=0);
move02=(abs(jiki.y-y)<15 && (jiki.x-x)>0 && vx==0 && Block_exist_x()==0 && (jiki.isout()!=1 || jiki.opening==1));
move03=(abs(jiki.y-y)<15 && (jiki.x-x)<0 && vx==0 && Block_exist_x()==0 && (jiki.isout()!=1 || jiki.opening==1));
anim01=(vx==0);
anim02=(vx< 0);
anim03=(vx> 0);
if (move01==1) vx=0;
if (move02==1) vx= wsp;
if (move03==1) vx=-wsp;
if (anim01==1) angle= 0;
if (anim02==1) {
if ($map.getAt(x,y)==$pat_block+5) angle-=wsp*3;
else angle-=wsp*5;
}
if (anim03==1) {
if ($map.getAt(x,y)==$pat_block+5) angle+=wsp*3;
else angle+=wsp*5;
}
x=x+vx;
update();
}
}
function y_trap(){
var move01,move02,move03,move04,move05;
var anim01,anim02,anim03,anim04,anim05;
wsp=2;
while(1){
while(1) {if (jiki.pause==0) break;update();}
WallHit_chk();
atarihantei();
block_sound();
magma();
move01=(wY!=0);
move02=(abs(jiki.x-x)<15 && (jiki.y-y)>0 && vy==0 && Block_exist_y()==0 && (jiki.isout()!=1 || jiki.opening==1));
move03=(abs(jiki.x-x)<15 && (jiki.y-y)<0 && vy==0 && Block_exist_y()==0 && (jiki.isout()!=1 || jiki.opening==1));
anim01=(vy==0);
anim02=(vy< 0);
anim03=(vy> 0);
if (move01==1) vy=0;
if (move02==1) vy= wsp;
if (move03==1) vy=-wsp;
if (anim01==1) angle= 0;
if (anim02==1) {
if ($map.getAt(x,y)==$pat_block+5) angle-=wsp*3;
else angle-=wsp*5;
}
if (anim03==1){
if ($map.getAt(x,y)==$pat_block+5) angle+=wsp*3;
else angle+=wsp*5;
}
y=y+vy;
update();
}
}
function rotate_trap(){
rotate;
wsp=2;
wX=0;
wY=0;
if(isblock($map.getAt(x-24,y))) wX=-1;
if(isblock($map.getAt(x+24,y))) wX= 1;
if(isblock($map.getAt(x,y-24))) wY=-1;
if(isblock($map.getAt(x,y+24))) wY= 1;
if (wY==1) y+=3;
if (wX==1) x+=3;
if (wY==-1) y-=3;
if (wX==-1) x-=3;
while(1){
while(1) {if (jiki.pause==0) break;update();}
if (rotate==0){
if (wX== 1 && wY== 0) vy= wsp;
if (wX== 1 && wY== 1) vx=-wsp;
if (wX== 0 && wY== 1) vx=-wsp;
if (wX==-1 && wY== 1) vy=-wsp;
if (wX==-1 && wY== 0) vy=-wsp;
if (wX==-1 && wY==-1) vx= wsp;
if (wX== 0 && wY==-1) vx= wsp;
if (wX== 1 && wY==-1) vy= wsp;
if (wX== 0 && wY== 0) {
if(isblock($map.getAt(x+14,y+14))) vy= wsp;
if(isblock($map.getAt(x+14,y-14))) vx= wsp;
if(isblock($map.getAt(x-14,y-14))) vy=-wsp;
if(isblock($map.getAt(x-14,y+14))) vx=-wsp;
}
if ($map.getAt(x,y)==$pat_block+5) angle-=wsp*3;
else angle-=wsp*5;
}
if (rotate==1){
if (wX== 1 && wY== 0) vy=-wsp;
if (wX== 1 && wY== 1) vy=-wsp;
if (wX== 0 && wY== 1) vx= wsp;
if (wX==-1 && wY== 1) vx= wsp;
if (wX==-1 && wY== 0) vy= wsp;
if (wX==-1 && wY==-1) vy= wsp;
if (wX== 0 && wY==-1) vx=-wsp;
if (wX== 1 && wY==-1) vx=-wsp;
if (wX== 0 && wY== 0) {
if(isblock($map.getAt(x+14,y-14))) vy=-wsp;
if(isblock($map.getAt(x+14,y+14))) vx= wsp;
if(isblock($map.getAt(x-14,y+14))) vy= wsp;
if(isblock($map.getAt(x-14,y-14))) vx=-wsp;
}
if ($map.getAt(x,y)==$pat_block+5) angle+=wsp*3;
else angle+=wsp*5;
}
x=x+vx;
y=y+vy;
update();
if (abs(angle)>=360) angle=0;
vx=0;
vy=0;
WallHit_chk2();
atarihantei();
block_sound();
}
}
function hopping(){
var move01,move02,move03,move04,move05;
var anim01,anim02,anim03,anim04,anim05;
var anim ;
p=$pat_enemy+3;
wsp=1;
vx=wsp;
anim=newAnimation();
anim.swing($pat_enemy+12,$pat_enemy+14,8);
while(1){
while(1) {if (jiki.pause==0) break;update();}
WallHit_chk();
atarihantei();
magma();
move01=(wY== 1);
move02=(wY== 0);
move03=(wX== 1);
move04=(wX==-1);
move05=(wY==-1);
anim01=(vx==0);
anim02=(vx< 0);
anim03=(vx> 0);
if (move01==1) vy=-6;
if (move02==1) vy+=0.2;
if (move03==1) vx=-wsp;
if (move04==1) vx= wsp;
if (move05==1) vy=0.3;
x=x+vx;
y=y+vy;
update();
}
}
function ghost(){
var move01,move02,move03,move04,move05;
var anim01,anim02,anim03,anim04,anim05;
var anim,i,angle;
anim=newAnimation();
anim.swing($pat_enemy+15,$pat_enemy+17,8);
while(1){
while(1) {if (jiki.pause==0) break;update();}
atarihantei();
angle=angle(jiki.x-x,jiki.y-y);
vx=0.3*cos(angle);
vy=0.3*sin(angle);
if ($map.getAt(x,y)==$pat_block+7){
vx=0;
vy=0;
if (before==0) {
$mplayer.play($se_shoot03);
before=1;
}
}
else before=0;
x+=vx;
y+=vy;
update();
}
}
function refrection(){
wsp=1;
vx= wsp;
vy=-wsp;
anim=newAnimation();
//hit=0;
size=10;
while(1){
while(1) {if (jiki.pause==0) break;update();}
WallHit_chk2();
atarihantei();
block_sound();
if (wX==1 || wX==-1) {vx=-vx;x+=vx;}
if (wY==1 || wY==-1) {vy=-vy;y+=vy;}
while(1){
stop=0;
if(isblock($map.getAt(x+size,y+size))) stop=1;
if(isblock($map.getAt(x+size,y-size))) stop=1;
if(isblock($map.getAt(x-size,y+size))) stop=1;
if(isblock($map.getAt(x-size,y-size))) stop=1;
if (stop==0) break;
update();
}
anim.swing($pat_enemy+9,$pat_enemy+11,8);
if (vx<0) f=-1;
if (vx>0) f= 1;
if (wX!=2){
x+=vx;
y+=vy;
}
update();
}
}
function wolf(){
wsp=1;
f=1;
anim=newAnimation();
touchlever=0;
while(1){
WallHit_chk();
Ladder();
block_sound();
magma();
while(1) {if (jiki.pause==0) break;update();}
//anim.swing($pat_enemy+18,$pat_enemy+20,12);
//âîâoü[é╔ÉGéΩé╜éτâXâCâbâ`âIâô
for (e in $chars){
if (e is Lever && crashTo(e) && touchlever==0) {
if (e.p==$pat_lever+6){
e.p=$pat_lever+8;
e.switchSPCtoNOG();
}
else if (e.p==$pat_lever+8){
e.p=$pat_lever+6;
e.switchSPCtoNOG();
}
else if (e.p==$pat_lever+0){
e.p=$pat_lever+2;
e.switchBBRtoHBR();
}
else if (e.p==$pat_lever+2){
e.p=$pat_lever+0;
e.switchBBRtoHBR();
}
else if (e.p==$pat_lever+9){
e.p=$pat_lever+11;
e.Upsidedown();
}
else if (e.p==$pat_lever+11){
e.p=$pat_lever+9;
e.Upsidedown();
}
touchlever=1;
break;
}
if (e is Lever && !crashTo(e) && touchlever==1) touchlever=0;
}
while(wX==2){
WallHit_chk();
Ladder();
atarihantei();
update();
}
if (wY== 0 || ld==1 || wY==-1) {
if ($map.getAt(x,y)==$pat_block+5) vy+=0.04;
else vy+=0.4;
}
if (wY>= 1 || ld==2) {vy=0;y=trunc(y/32)*32+16;}
ashimoto1=isback($map.getAt(x+8,y+17)) || ($map.getAt(x+8,y+17)==$pat_block+5);
ashimoto2=isback($map.getAt(x-8,y+17)) || ($map.getAt(x-8,y+17)==$pat_block+5);
if (wX==1 || wX==-1){
for(i=0;i<50;i++){
atarihantei();
WallHit_chk();
//if (wY==0 && ld!=2) break;
while(1) {if (jiki.pause==0) break;update();}
anim.pause();
update();
}
f=-f;
if ($map.getAt(x,y)==$pat_block+5) anim.swing($pat_enemy+18,$pat_enemy+20,24);
else anim.swing($pat_enemy+18,$pat_enemy+20,12);
}
if (wY==1 || ld==2 || wY==2 || (wX!=0 && ld==1)) vx=f*wsp;
if (ld==1) vy=0;
if (wY==0 && ld==0) {
atarihantei();
vx=0;
anim.pause();
}
atarihantei();
if (wY!=0){
if ($map.getAt(x,y)==$pat_block+5) anim.swing($pat_enemy+18,$pat_enemy+20,24);
else anim.swing($pat_enemy+18,$pat_enemy+20,12);
}
if (vy>9) vy=9;
x+=vx;
y+=vy;
update();
}
}
function bubels(){
wsp=1;
f=1;
anim=newAnimation();
while(1){
WallHit_chk();
Ladder();
block_sound();
magma();
while(1) {if (jiki.pause==0) break;update();}
while(wX==2){
WallHit_chk();
Ladder();
atarihantei();
update();
}
if (wY== 0 || ld==1 || wY==-1) {
if ($map.getAt(x,y)==$pat_block+5) vy+=0.04;
else vy+=0.4;
}
if (wY>= 1 || ld==2) {vy=0;y=trunc(y/32)*32+16;}
//ashimoto1=isback($map.getAt(x+8,y+17)) || ($map.getAt(x+8,y+17)==$pat_block+5);
//ashimoto2=isback($map.getAt(x-8,y+17)) || ($map.getAt(x-8,y+17)==$pat_block+5);
ashimoto1=isback($map.getAt(x+1,y+17)) || ($map.getAt(x+8,y+17)==$pat_block+5);
ashimoto2=isback($map.getAt(x-1,y+17)) || ($map.getAt(x-8,y+17)==$pat_block+5);
if (wX==1 || wX==-1 || ((ashimoto1==1 || ashimoto2==1) && (wY==1 || ld==2 || wY==2))){
if (ashimoto1==1 || ashimoto2==1) appear(new Enemy(x+f*32,y,$pat_block+6));
for(i=0;i<50;i++){
atarihantei();
WallHit_chk();
if (wY==0 && ld!=2) {rakka=1;break;}
while(1) {if (jiki.pause==0) break;update();}
anim.pause();
update();
}
f=-f;
anim.swing($pat_enemy+21,$pat_enemy+23,12);
}
if(rakka==1){
x+=f*3;
rakka=0;
}
if (ashimoto1==1 && ashimoto2==1 && wY==1) x=trunc(x/32)*32+16;
if (wY==1 || ld==2 || wY==2) vx=f*wsp;
if (wX==2 && ($map.getAt(x,y)!=$pat_block+7)) x=trunc(x/32)*32+16;
if (wY==0 && ld!=2) {
atarihantei();
vx=0;
anim.pause();
}
if ($map.getAt(x,y)==$pat_block+5) anim.swing($pat_enemy+21,$pat_enemy+23,24);
else anim.swing($pat_enemy+21,$pat_enemy+23,12);
if (vy>9) vy=9;
x+=vx;
y+=vy;
atarihantei();
update();
}
}
function fall_brick(){
$mplayer.play($se_swing27);
while(1){
while(1) {if (jiki.pause==0) break;update();}
WallHit_chk();
Ladder();
p=$pat_block+6;
if ($map.getAt(x,y+vy)==$pat_block+1) die();
if (wY==0 || wY==-1) {
if ($map.getAt(x,y+vy)==$pat_block+5) vy+=0.08;
else vy+=0.4;
}
if (wY==1) {
y=trunc(y/32)*32+16;
$map.set(x/32,y/32,$pat_block+6);
$mplayer.play($se_hit52);
die();
}
atarihantei();
if (vy>9) vy=9;
x+=vx;
y+=vy;
update();
}
}
//ö╗ÆΦâüâ\âbâh---------------------------------------------------------------
function WallHit_chk(){
//ì╢é╠ò╟é╔É┌é╡é─éóéΘü@ü@üFwX=-1ü@ëEé╠ò╟é╔É┌é╡é─éóéΘü@ü@ü@ü@üFwX= 1
//ì╢ëEé╞éαò╟é╔É┌é╡é─é╚éóüFwX= 0
//Åπé╠ò╟é╔É┌é╡é─éóéΘü@ü@üFwY=-1ü@ë║é╠ò╟é╔É┌é╡é─éóéΘü@ü@ü@ü@üFwY= 1
//Åπë║é╞éαò╟é╔É┌é╡é─é╚éóüFwY= 0ü@Åπë║é╠ò╟é╔ô»Ä₧é╔É┌é╡é─éóéΘüFwY= 2
var left1 ,left2 ,right1 ,right2 ;
var up1 ,up2 ,down1 ,down2 ;
var center1,center2,center3 ;
left1 =$map.getAt(x-8+vx,y-12);
left2 =$map.getAt(x-8+vx,y+12);
right1 =$map.getAt(x+8+vx,y-12);
right2 =$map.getAt(x+8+vx,y+12);
up1 =$map.getAt(x-8,y-17 );
up2 =$map.getAt(x+8,y-17 );
down1 =$map.getAt(x-8,y+16+vy);
down2 =$map.getAt(x+8,y+16+vy);
center1=$map.getAt(x ,y );
center2=$map.getAt(x+8,y );
center3=$map.getAt(x-8,y );
wX=0;wY=0;
//isblock(left1);
//ì╢
if(isblock(left1 )) wX=-1;
if(isblock(left2 )) wX=-1;
//ëE
if(isblock(right1 ) && wX==0) wX=1;
if(isblock(right2 ) && wX==0) wX=1;
//Åπ
if(isblock(up1 )) wY=-1;
if(isblock(up2 )) wY=-1;
//ë║
if(isblock(down1 ) && wY== 0) wY=1;
if(isblock(down1 ) && wY==-1) wY=2;
if(isblock(down2 ) && wY== 0) wY=1;
if(isblock(down2 ) && wY==-1) wY=2;
//Æåë¢
if(isblock(center1)) wX=2;
if(isblock(center2)) wX=2;
if(isblock(center3)) wX=2;
}
function WallHit_chk2(){
var up1,down1,right1,left1,center1;
var up2,down2,right2,left2,center2;
var up3,down3,right3,left3,center3;
var m1,m2;
m1=10;
m2=12;
wX=0;wY=0;
up1 =$map.getAt(x+m1,y-m2);
up2 =$map.getAt(x-m1,y-m2);
up3 =$map.getAt(x ,y-m2);
down1 =$map.getAt(x+m1,y+m2);
down2 =$map.getAt(x-m1,y+m2);
down3 =$map.getAt(x ,y+m2);
left1 =$map.getAt(x-m2,y+m1);
left2 =$map.getAt(x-m2,y-m1);
left3 =$map.getAt(x-m2,y );
right1=$map.getAt(x+m2,y+m1);
right2=$map.getAt(x+m2,y-m1);
right3=$map.getAt(x+m2,y );
center1=$map.getAt(x ,y );
center2=$map.getAt(x+8,y );
center3=$map.getAt(x-8,y );
if(isblock(left1 )) wX=-1;
if(isblock(left2 )) wX=-1;
if(isblock(left3 )) wX=-1;
if(isblock(right1)) wX= 1;
if(isblock(right2)) wX= 1;
if(isblock(right3)) wX= 1;
if(isblock(up1 )) wY=-1;
if(isblock(up2 )) wY=-1;
if(isblock(up3 )) wY=-1;
if(isblock(down1 )) wY= 1;
if(isblock(down2 )) wY= 1;
if(isblock(down3 )) wY= 1;
if(isblock(center1)) wX=2;
if(isblock(center2)) wX=2;
if(isblock(center3)) wX=2;
}
function Ladder(){
ld=0;
if($map.getAt(x,y )==$pat_block+12) ld=1;
if($map.getAt(x,y+15 )==$pat_block+12) ld=1;
if($map.getAt(x,y+16+vy)==$pat_block+12 && ld==0) ld=2;
if($map.getAt(x+10+vx,y+16+vy)==$pat_block+12 && ld==0) ld=2;
if($map.getAt(x-10-vx,y+16+vy)==$pat_block+12 && ld==0) ld=2;
}
function atarihantei(){
if (crashTo(jiki)) jiki.enemytouch=1;
}
function Block_exist_x(){
var x1,y1,obj_x;
var i,count;
x1=x;
y1=y;
obj_x=jiki.x;
count=0;
if (x1<obj_x){
for (i=x1;i<obj_x;i+=32){
if (isblock($map.getAt(i,y1))==1) count++;
}
}
if (x1>obj_x){
for (i=x1;i>obj_x;i-=32){
if (isblock($map.getAt(i,y1))==1) count++;
}
}
return count;
}
function Block_exist_y(){
var x1,y1,obj_y;
var i,count;
x1=x;
y1=y;
obj_y=jiki.y;
count=0;
if (y1<obj_y){
for (i=y1;i<obj_y;i+=32){
if (isblock($map.getAt(x1,i))==1) count++;
}
}
if (y1>obj_y){
for (i=y1;i>obj_y;i-=32){
if (isblock($map.getAt(x1,i))==1) count++;
}
}
return count;
}
function isblock(tile){
var tile_bk1,tile_bk2;
var value;
tile_bk1=$pat_block+6;
tile_bk2=$pat_block+11;
value=(tile>=tile_bk1 && tile<=tile_bk2);
return value;
}
function isback(tile){
var tile_bg1,tile_bg2;
var value;
tile_bg1=$pat_block+0;
tile_bg2=$pat_block+4;
value=(tile>=tile_bg1 && tile<=tile_bg2);
return value;
}
function block_sound(){
var p1,p2,p;
var flag,tile;
p1=$map.getAt(x ,y);
p2=$map.getAt(x+8,y);
p3=$map.getAt(x-8,y);
tile=$pat_block+7;
flag=((p1==tile || p2==tile || p3==tile) && before==0);
if (flag==1) {
$mplayer.play($se_shoot03);
before=1;
}
if ((p1==tile || p2==tile || p3==tile)==0) before=0;
}
function magma(){
if ($map.getAt(x,y)==$pat_block+1) {
$mplayer.play($se_fm007);
/*
p=$pat_effect01+3;
updateEx(10);
p=$pat_effect01+4;
updateEx(10);
p=$pat_effect01+5;
updateEx(10);
*/
die();
}
}