no.7.1 諏訪大戦コピー
>|c|
#東方弾幕風[Single]
#ScriptVersion[3]
#Title["諏訪大戦劣化コピー@黒の時代"]
#Text[""]
#include"script/default_system/Default_ShotConst.txt"
let imgExRumia = GetCurrentScriptDirectory~"ExRumia.png";
let objPlayer = GetPlayerObjectID();
let objEnemy;
let frame = 0;
let ex; let ey; let cx = GetStgFrameWidth() / 2;
let right = GetStgFrameWidth;
let bottom = GetStgFrameHeight;
@Event {
alternative(GetEventType())
case(EV_REQUEST_LIFE) { SetScriptResult(3000); }
}
@Initialize {
objEnemy = ObjEnemy_Create(OBJ_ENEMY_BOSS);
ObjEnemy_Regist(objEnemy);
ObjPrim_SetTexture(objEnemy, imgExRumia);
ObjSprite2D_SetSourceRect(objEnemy, 64, 1, 127, 64);
ObjSprite2D_SetDestCenter(objEnemy);
ObjMove_SetDestAtFrame(objEnemy, cx, 130, 60);
ObjEnemy_SetLife(OBJ_ENEMY_BOSS,3000);
MAIN;
}
@MainLoop {
ex = ObjMove_GetX(objEnemy);
ey = ObjMove_GetY(objEnemy);
ObjEnemy_SetIntersectionCircleToShot(objEnemy, ex, ey, 32);
ObjEnemy_SetIntersectionCircleToPlayer(objEnemy, ex, ey, 24);
frame++;
yield;
if(ObjEnemy_GetInfo(objEnemy, INFO_LIFE) <= 0) { Obj_Delete(objEnemy); CloseScript(GetOwnScriptID()); return; }
}
@Finalize { }
task MAIN {
let count = 0;
wait(120);
let a_rand = 40;
loop {
fuji(cx+70, a_rand);
fuji(cx-70, a_rand);
fuji(cx+130, a_rand);
fuji(cx-130, a_rand);
fuji(cx+190, a_rand);
fuji(cx-190, a_rand);
wait(400);
IRON(count%2);
wait(400);
count++;
a_rand+=40;
}
}
task fuji(X,a_rand) {
let Y = bottom; let r = 0; let a = rand(a_rand,-a_rand);
let time = 560;
while(Y>-15) {
fujishot(X-r*sin(a),Y,atan2(8,-(r-1)*sin(a-11)+r*sin(a)),time);
r+=1; a+=11; Y-=8; wait(4);
time-=7;
}
}
task fujishot(x,y,f_a,time) {
let obj = CreateShotA1(x, y, 0, f_a, DS_RICE_S_GREEN, 15);
wait(120);
let obj2 = CreateShotA2(x,y,0,f_a,0.02,2,DS_RICE_S_RED,8);
Obj_Delete(obj);
wait(time);
ObjShot_FadeDelete(obj2);
}
task IRON(i) {
if(i==0) {
loop(30) {
circle_1;
wait(10);
}
}
else {
loop(20) {
circle_2;
wait(15);
}
}
}
function circle_2 {
let fujiX = rand(0,right);
let fujiA = atan2(GetPlayerY-(-30), GetPlayerX-fujiX);
CreateShotA1(fujiX,-30, 4, fujiA, DS_BALL_M_RED,0);
ascent( i in 0..11) {
CreateShotA1(fujiX+20*cos(i*360/11),-30+20*sin(i*360/11), 4, fujiA, DS_BALL_S_RED,0);
}
}
function circle_1 {
let fujiX = rand(0,right);
let fujiA = 90+rand(-15,15); //角度
CreateShotA1(fujiX,-30, 4, fujiA, DS_BALL_M_ORANGE,0);
ascent( i in 0..11) {
CreateShotA1(fujiX+20*cos(i*360/11),-30+20*sin(i*360/11), 4, fujiA, DS_BALL_S_ORANGE,0);
}
}
function wait(time) {
loop(time) {yield;}
}
||<
※本当はcircleはIRONの中に入れた方がいいとかあるかもしれませんが割愛。よくわかんないし。