CODE:
//弾発射関数
void boss_bullet_on(int way,int knd,int col,int flag,double x,double y,double b_angle,double d_angle,double spd,int state,int till,int eff=0,int sflag=1){
int i,k;
for(i=0;i<way;i++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd = knd;//弾の種類
if(knd==7) boss_shot.bullet[k].kaiten=1;
else boss_shot.bullet[k].kaiten=0;
boss_shot.bullet[k].col = col;//弾の色
boss_shot.bullet[k].flag = flag;//1なら当たったりボムをうった時に消える、2は消えない、3は自機との当たり判定がない
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].x = x;//座標
boss_shot.bullet[k].y = y;
boss_shot.bullet[k].angle = b_angle+d_angle*(i - way/2);//角度:bが基準、dが間隔
boss_shot.bullet[k].spd = spd;//スピード
boss_shot.bullet[k].state = state;//弾の状態
boss_shot.bullet[k].till = till;//弾が画面外に出ても消えない時間
boss_shot.bullet[k].eff = eff;
if(sflag==1)se_flag[0]=1;
}
}
}
//弾幕関数
void boss_shot_bulletE219(){
int t=boss_shot.cnt%100;
double const R=160.0;//中央から基準点までの距離
double base_angle;//基準点の角度
double d;//列の長さ
double x,y;
if(t<80 && t%5==0){
for(int i=0;i<4;i++){
base_angle=PI2/4*i;
for(int j=0;j<4;j++){
v_angle=-PI*3/8+PI/4*j;
d=2*R*sin(v_angle);
x=R-d*t/80.0*sin(v_angle);
y=d*t/80.0*cos(v_angle);
boss_bullet_on(1,4,i,1,FMX/2+x*cos(base_angle)-y*sin(base_angle),
FMY/2+x*sin(base_angle)+y*cos(base_angle),v_angle+base_angle,0,0,0,0,0,1);
}
}
}
if(t==99){
for(int i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet[i].flag==1){
boss_shot.bullet[i].spd=2.0;
}
}
}
}