注釈―――――――――― $pat_boss3+0 〜 7 レベル3まで $pat_boss3+8 〜 11 弾 $pat_boss3+12 〜 18 レベル4 d$pat_boss3+19 〜 28 薙刀の回転 ―――――――――――――――――――― プログラム ボス3――――――― extends SpriteChar; timer=80; hp=50; sx; sy; timerB=20; Stama; tama=0; k1=100; // 行動@ 歩く k2=80; // 行動A 回復 k3=75; // 行動B 弾発射 k4=50; // 行動C 薙刀 k5=5; // 行動D 必殺技(瞬間移動。今のところそれだけです。) anim=newAnimation(); function onDie(){ $blockT.kaijo=1; } while(1){ if(start==1){ if($map.getAt(x,y+11)!=$pat_bl+11)sy=0; else sy+=0.1; if(hp<=50){level=1; Stama=1;} if(hp<=40){level=2; Stama=2;} if(hp<=20){level=3; Stama=3;} if(hp<=10){level=4; Stama=7;} if(timer==0){ Bkou=koudou; koudou=rnd(100); //確率変動 timer=100; //初期化 if(koudou>=k2 && koudou=1) anim.swing($pat_boss3+3,$pat_boss3+4,15); if(level==4) anim.swing($pat_boss3+14,$pat_boss3+15,15); sx=0; tama=0; once=0; warp=15; Pwarp=0; } else timer--; //歩く if(koudou>=k2 && koudou0) f=1; if($map.getAt(x+11,y)!=$pat_bl+11 || $map.getAt(x-11,y)!=$pat_bl+11){ sx=-sx; } } } //回復 if(koudou>=k3 && koudou=k3 && Bkou=1) anim.swing($pat_boss3+1,$pat_boss3+2,15); if(level==4) anim.swing($pat_boss3+12,$pat_boss3+13,15); } } //弾発射 if(koudou>=k4 && koudou=k4 && Bkou=1) anim.play($pat_boss3+6,$pat_boss3+7,5); if(level==4) anim.play($pat_boss3+17,$pat_boss3+18,5); if(timerB==0){ if(tama=k5 && koudou=k5 && Bkou=1) p=$pat_boss3+5; else if(level==4) anim.play($pat_boss3+16,$pat_boss3+16,50); if(once==0){ appear(new b3tama(x,y,$pat_boss3+17)); once=1; } } } //必殺技 if(koudou>=0 && koudou=0 && Bkou=1){ die++; if(die==60)die=0; } if(die==0){ $syu.hp-=5; $mplayer.play($se_damage,0,40); die=1; } } } else die=0; for(b in $chars){ if(b is bullet && crashTo(b)){ hp--; b.die(); $syu.wepon--; } } x+=sx; y+=sy; if(hp==0){ wait(50); appear(new effect(x+2,y,$pat_effect+0)); wait(5); appear(new effect(x-6,y+8,$pat_effect+0)); wait(5); appear(new effect(x-4,y-7,$pat_effect+0)); die(); } } if($blockT.tozikome==1) start=1; update(); } ――――――――――――――― プログラム 薙刀 ($3tama)―――――――――― extends SpriteChar; anim=newAnimation(); death=100; while(1){ anim.loop($pat_boss3+19,$pat_boss3+28,5); if(crashTo($syu)){ a=angle($syu.x-x,$syu.y-y); $syu.x+=cos(a)*20; $syu.gy=-3.5; if($syu.muteki==0){ if(die>=1){ die++; if(die==60)die=0; } if(die==0){ $syu.hp-=8; $mplayer.play($se_damage,0,40); die=1; } } } else die=0; for(b in $chars){ if(b is bullet && crashTo(b)){ if(b.f==1) b.f=0; else b.f=1; b.fx=-1*b.fx; b.teki=1; b.time=70; } } death--; if(death<=0) die(); update(); } ――――――――――――――― プログラム 弾 ($boss3tama)―――――――――― extends SpriteChar; block=1; hansya=-1; speed=$B3.level; if($B3.level==4){ speed=1.2; } a=angle($syu.x-x,$syu.y-y); sx=cos(a)*speed; sy=sin(a)*speed; if($B3.level==2) p=$pat_boss3+9; if($B3.level==3) p=$pat_boss3+10; if($B3.level==4) p=$pat_boss3+11; while(1){ if(screenOut()) die(); if(block==1){ a=angle($syu.x-x,$syu.y-y); sx=cos(a)*speed; sy=sin(a)*speed; block=0; timer=3; } if(timer==0){ hansya++; timer=-1; } else timer--; if(hansya>$B3.level) die(); if($map.getAt(x+2,y)!=$pat_bl+11 || $map.getAt(x-2,y)!=$pat_bl+11){ block=1; } if($map.getAt(x,y+2)!=$pat_bl+11 || $map.getAt(x,y-2)!=$pat_bl+11){ block=1; } if(crashTo($syu)){ $syu.hp-=1; die(); } x+=sx; y+=sy; update(); } ――――――――――――――― 長々と失礼しました。