⑨k, I've made a few survival cards already, so I'm just gonna dump one here. I'm still an amateur at this, so feel free to kick me for it. [/tenshi]
EDIT: #TouhouDanmakufu
#Title[Koa⑨ma's Contest 3 Entry]
#Text[What does the scouter say about its idiocy level?]
#Image[]
#BackGround[IceMountain]
#Player[FREE]
#ScriptVersion[2]
script_enemy_main {
let BossImage = "script\img\ExRumia.png";
let CutInGraphic = GetCurrentScriptDirectory~"img\thK01_37cut.png";
let bossname = "ミカルゲ";
let Spell = 1;
let SpellName = "「7 Stars Bounded Field」";
@Initialize {
SetLife(630); SetDamageRate(0, 0); SetTimer(72);
SetEnemyMarker(true); MagicCircle(true); SetInvincibility(180);
LoadGraphic(BossImage);
SetText(SpellName); SetScore(10000000); SetDurableSpellCard;
TMain;
SetEffectForZeroLife(60, 55, 3); if(last) { LastSpell; }
SetShotAutoDeleteClip(200, 200, 200, 200);
}
@MainLoop {
if(OnBomb) { SetDamageRate(0, 0); } else { SetDamageRate(0, 0); if(Spell <= 1) { SetCollisionA(GetX, GetY, 536); /*SetCollisionB(GetX, GetY, 10);*/ } }
yield;
}
let animation = 0;
@DrawLoop {
SetFontColor(255, 255, 255, 155, 0, 155);
DrawText(bossname, 40, 36, 12, 255);
SetTexture(BossImage);
animation++; if(animation==600){animation=0;}
if(GetSpeedX()==0){
if(animation<=300){ SetGraphicRect(64,1,127,64); }
else if(animation>300 && animation<=600){ SetGraphicRect(0,1,63,64); }
}
else if(GetSpeedX()>0){SetGraphicRect(192,1,255,64);}
else if(GetSpeedX()<0){SetGraphicRect(128,1,191,64);}
SetGraphicAngle(0, 0, 0);
SetGraphicScale(1, 1);
SetRenderState(ALPHA);
SetAlpha(155);
SetColor(255, 255, 255);
if(!OnBomb) { DrawGraphic(GetX, GetY); }
}
@Finalize {
if(GotSpellCardBonus) {
let su = 60;
loop(30) { CreateItem(ITEM_SCORE, GetX+rand(-su, su), GetY+rand(-su, su)); }
} DeleteGraphic(BossImage);
}
task TMain {
SetMovePosition02(GetCenterX, GetCenterY, 20);
loop(60){yield;}
Concentration01(120); PlaySE("se\se_ch00.wav");
loop(120){yield;}
Attack1;
}
let graphic = [RED21, GREEN21, BLUE21, WHITE21];
task attack1 {
let a = 0; let b = 150; let num = 4;
loop(120) {
ascent(i in 0..num) {
CreateShot0(GetX+225*cos(a+i*360/num), GetY+225*sin(a+i*360/num), 0, i*360/num+a+200+b, 1/240, 3, graphic[i], 10);
ascent(j in -5..6) { CreateShot01(GetX+225*cos(a+i*360/num), GetY+225*sin(a+i*360/num), 5, i*360/num+a+j*5, graphic[i], 10); }
}
a+=9.5;
b-=150/75;
loop(1) { yield; }
}
loop(60) {
ascent(i in 0..num) { CreateShot0(GetX+225*cos(a+i*360/num), GetY+225*sin(a+i*360/num), 0, i*360/num+a+180+b, 1/240, 3, graphic[i], 10); }
a+=9.5;
loop(1) { yield; }
}
loop(300) { yield; }
attack2;
}
task attack2 {
let a = 0; let aa = 5; let b = 150; let radius = -120; let num = 4;
loop(180) {
ascent(i in 0..num) { CreateShot0(GetX+radius*cos(a+i*360/num), GetY+radius*sin(a+i*360/num), 0, 180+a+i*360/num+b, 1/180, 3, graphic[i], 10); }
radius+=3; a+=aa; b-=150/90;
loop(1) { yield; }
}
loop(360) { yield; }
Attack3;
}
task attack3 {
let a = 0; let b = 300; let radius = 225; let num = 4;
task ap { loop { a+=3; b-=3; yield; } } ap;
loop(300) {
ascent(i in 0..num) {
CreateShot0(GetX+radius*cos(a+i*360/num), GetY+radius*sin(a+i*360/num), 0, a+i*360/num+b, 1/300, 3, graphic[i], 10);
}
loop(1) { yield; }
}
loop(360) { yield; }
attack4;
}
task attack4 {
let a = 0; let b = 300; let radius = 225; let num = 3;
task ap { loop { a-=8; b-=2; yield; } } ap;
loop(300) {
ascent(i in 0..num) {
CreateShot0(GetX+radius*cos(a+i*360/num), GetY+radius*sin(a+i*360/num), -2, a+i*360/num+b, 1/30, 5, graphic[2], 10);
}
loop(1) { yield; }
}
loop(360) { yield; }
Attack4;
}
task CreateShot0(xa, ya, v, angle, va, v2, graphic, delay) {
let obj = Obj_Create(OBJ_SHOT);
Obj_SetPosition(obj, xa, ya);
Obj_SetAngle(obj, angle);
ObjShot_SetGraphic(obj, graphic);
ObjShot_SetDelay(obj, delay);
ObjShot_SetBombResist(obj, 1);
Obj_SetSpeed(obj, v);
while(!Obj_BeDeleted(obj)) {
if(v2 > v) {
if(Obj_GetSpeed(obj) < v2) { Obj_SetSpeed(obj, Obj_GetSpeed(obj)+va); }
if(Obj_GetSpeed(obj) >= v2) { Obj_SetSpeed(obj, v2); }
}
if(v2 < v) {
if(Obj_GetSpeed(obj) > v2) { Obj_SetSpeed(obj, Obj_GetSpeed(obj)+va); }
if(Obj_GetSpeed(obj) <= v2) { Obj_SetSpeed(obj, v2); }
}
yield;
}
}
task Attack1 {
let a = 0; let v = 1;
loop(5) {
loop(4) {
let t1 = rand_int(4, 9); let t2 = rand_int(4, 9);
loop(t1) {
CreateShot01(GetClipMinX, GetClipMinY, v, 0+a, RED12, 10);
CreateShot01(GetClipMaxX, GetClipMinY, v, 90+a, BLUE12, 10);
CreateShot01(GetClipMaxX, GetClipMaxY, v, 180+a, AQUA12, 10);
CreateShot01(GetClipMinX, GetClipMaxY, v, 270+a, PURPLE12, 10);
PlaySE("se\se_kira01.wav");
a+=90/t1;
yield;
}
loop(t2) {
CreateShot01(GetClipMinX, GetClipMinY, v, 0+a, RED12, 10);
CreateShot01(GetClipMaxX, GetClipMinY, v, 90+a, BLUE12, 10);
CreateShot01(GetClipMaxX, GetClipMaxY, v, 180+a, AQUA12, 10);
CreateShot01(GetClipMinX, GetClipMaxY, v, 270+a, PURPLE12, 10);
PlaySE("se\se_kira01.wav");
a-=90/t2;
yield;
}
}
PlaySE("se\se_tan02.wav");
CreateShot01(GetClipMinX, GetClipMinY, v/2, atan2(GetPlayerY-GetClipMinY, GetPlayerX-GetClipMinX), RED02, 10);
CreateShot01(GetClipMaxX, GetClipMinY, v/2, atan2(GetPlayerY-GetClipMinY, GetPlayerX-GetClipMaxX), BLUE02, 10);
CreateShot01(GetClipMaxX, GetClipMaxY, v/2, atan2(GetPlayerY-GetClipMaxY, GetPlayerX-GetClipMaxX), AQUA02, 10);
CreateShot01(GetClipMinX, GetClipMaxY, v/2, atan2(GetPlayerY-GetClipMaxY, GetPlayerX-GetClipMinX), PURPLE02, 10);
loop(10) { yield; }
}
loop(150) { yield; }
attack1;
}
task CreateIndShot01(x, y, v, ang, graphic, delay) {
let obj = Obj_Create(OBJ_SHOT); let c = 0;
Obj_SetPosition(obj, x, y);
Obj_SetSpeed(obj, v);
Obj_SetAngle(obj, ang);
ObjShot_SetGraphic(obj, graphic);
ObjShot_SetDelay(obj, delay);
ObjShot_SetBombResist(obj, true);
Obj_SetAutoDelete(obj, false);
while(!Obj_BeDeleted (obj)) {
c++;
if(c == 300) {
ObjShot_SetBombResist(obj, false);
Obj_SetAutoDelete(obj, true);
}
yield;
}
}
task Attack2 {
DeleteEnemyShot(ALL);
let a = 0; let num = 15;
task CreateIndClus(x, y, alt) { Explosion01(x, y, 255/10, 1/3, 30); loop(60) { yield; } loop(num) { CreateIndShot01(x+150*cos(a), y+150*sin(a), 3.5, atan2(y-(y+150*sin(a)), x-(x+150*cos(a)))+alt, ORANGE01, 30); a+=360/num; } loop(30) { yield; } PlaySE("se\se_tan02.wav"); }
CreateIndClus(GetCenterX, GetCenterY, 45); CreateIndClus(GetCenterX, GetCenterY, -45); loop(60) { yield; }
ascent(i in 0..2) { CreateIndClus(GetCenterX+50*cos(i*360/2), GetCenterY+50*sin(i*360/2), 45); CreateIndClus(GetCenterX+50*cos(i*360/2), GetCenterY+50*sin(i*360/2), -45); } loop(90) { yield; }
ascent(i in 0..16) { CreateIndClus(GetCenterX+20*cos(i*360/16), GetCenterY+20*sin(i*360/16), 20); } loop(30) { yield; }
ascent(i in 0..16) { CreateIndClus(GetCenterX+20*cos(i*360/16), GetCenterY+20*sin(i*360/16), 10); } loop(90) { yield; }
ascent(ring in 0..5) { ascent(i in 0..16) { CreateIndClus(GetCenterX+25*cos((i*360/16)+(ring*7)), GetCenterY+25*sin((i*360/16)+(ring*7)), 10+ring*3); } loop(10) { yield; } }
ascent(ring in 0..5) { ascent(i in 0..16) { CreateIndClus(GetCenterX+25*cos((i*360/16)-(ring*7)), GetCenterY+25*sin((i*360/16)-(ring*7)), 10-ring*3); } loop(10) { yield; } }
loop(240) { yield; } Attack3;
}
task Attack3 {
let b = 5; let c = 6; let space = 30;
task CreateShot00(x, y, v, ang, graphic, delay, stop, aim, nv) {
let obj = Obj_Create(OBJ_SHOT); let c = 0;
Obj_SetPosition(obj, x, y);
Obj_SetSpeed(obj, v);
Obj_SetAngle(obj, ang);
ObjShot_SetGraphic(obj, graphic);
ObjShot_SetDelay(obj, delay);
ObjShot_SetBombResist(obj, true);
Obj_SetAutoDelete(obj, false);
while(!Obj_BeDeleted (obj)) {
c++;
if(c == 50+stop) {
Obj_SetSpeed(obj, 0);
}
if(c == 170) { PlaySE("se\se_kira00.wav"); }
if(c == 180) {
ObjShot_SetBombResist(obj, false);
Obj_SetAutoDelete(obj, true);
if(aim) { Obj_SetAngle(obj, atan2(GetPlayerY-Obj_GetY(obj), GetPlayerX-Obj_GetX(obj))); }
Obj_SetSpeed(obj, nv);
}
yield;
}
}
task CreateShot000(x, y, v, ang, graphic, delay, stop, aim, nv) {
let obj = Obj_Create(OBJ_SHOT); let c = 0;
Obj_SetPosition(obj, x, y);
Obj_SetSpeed(obj, v);
Obj_SetAngle(obj, ang);
ObjShot_SetGraphic(obj, graphic);
ObjShot_SetDelay(obj, delay);
ObjShot_SetBombResist(obj, true);
Obj_SetAutoDelete(obj, false);
while(!Obj_BeDeleted (obj)) {
c++;
if(c == 50+stop) {
Obj_SetSpeed(obj, 0);
}
if(c == 170) { PlaySE("se\se_kira00.wav"); }
if(c == 180) {
ObjShot_SetBombResist(obj, false);
Obj_SetAutoDelete(obj, true);
if(aim) { Obj_SetAngle(obj, atan2(GetCenterY-Obj_GetY(obj), GetCenterX-Obj_GetX(obj))); }
Obj_SetSpeed(obj, nv);
}
yield;
}
}
ascent(i in 0..4) {
ascent(x in -b..b+1) { CreateShot00(GetCenterX+x*space, GetClipMinY, 2, atan2(GetCenterY-(GetClipMinY), GetCenterX-(GetCenterX+x*space)), RED01, 10, i*20, true, 4); }
ascent(y in -c..c+1) { CreateShot00(GetClipMaxX, GetCenterY+y*space, 2, atan2(GetCenterY-(GetCenterY+y*space), GetCenterX-(GetClipMaxX)), RED01, 10, i*20, true, 4); }
ascent(x in -b..b+1) { CreateShot00(GetCenterX+x*space, GetClipMaxY, 2, atan2(GetCenterY-(GetClipMaxY), GetCenterX-(GetCenterX+x*space)), RED01, 10, i*20, true, 4); }
ascent(y in -c..c+1) { CreateShot00(GetClipMinX, GetCenterY+y*space, 2, atan2(GetCenterY-(GetCenterY+y*space), GetCenterX-(GetClipMinX)), RED01, 10, i*20, true, 4); } PlaySE("se\se_tan00.wav");
loop(10) { yield; }
}
loop(300) { yield; } b=10; c=12; let vb = 3;
ascent(x in -b..b+1) {
CreateShot00(GetCenterX+x*space, GetClipMinY, vb, 90+11, BLUE01, 10, 60, false, -2);
CreateShot00(GetCenterX+x*space, GetClipMinY, vb , 90-11, BLUE01, 10, 60, false, -2);
}
ascent(y in -c..c+1) {
CreateShot00(GetClipMaxX, GetCenterY+y*space, vb, 180+11, BLUE01, 10, 60, false, -2);
CreateShot00(GetClipMaxX, GetCenterY+y*space, vb, 180-11, BLUE01, 10, 60, false, -2);
}
ascent(x in -b..b+1) {
CreateShot00(GetCenterX+x*space, GetClipMaxY, vb, 270+11, BLUE01, 10, 60, false, -2);
CreateShot00(GetCenterX+x*space, GetClipMaxY, vb, 270-11, BLUE01, 10, 60, false, -2);
}
ascent(y in -c..c+1) {
CreateShot00(GetClipMinX, GetCenterY+y*space, vb, 11, BLUE01, 10, 60, false, -2);
CreateShot00(GetClipMinX, GetCenterY+y*space, vb, -11, BLUE01, 10, 60, false, -2);
}
PlaySE("se\se_tan01.wav");
loop(360) { yield; } b=15; c=18; space=10;
ascent(i in 0..4) {
ascent(x in -b..b+1) { CreateShot000(GetCenterX+x*space, GetClipMinY, 2, atan2(GetCenterY-(GetClipMinY), GetCenterX-(GetCenterX+x*space))+5, YELLOW01, 10, -50, true, 4); }
ascent(y in -c..c+1) { CreateShot000(GetClipMaxX, GetCenterY+y*space, 2, atan2(GetCenterY-(GetCenterY+y*space), GetCenterX-(GetClipMaxX))+5, WHITE01, 10, -50, true, 4); } PlaySE("se\se_tan00.wav");
ascent(x in -b..b+1) { CreateShot000(GetCenterX+x*space, GetClipMaxY, 2, atan2(GetCenterY-(GetClipMaxY), GetCenterX-(GetCenterX+x*space))+5, YELLOW01, 10, -50, true, 4); } PlaySE("se\se_tan00.wav");
ascent(y in -c..c+1) { CreateShot000(GetClipMinX, GetCenterY+y*space, 2, atan2(GetCenterY-(GetCenterY+y*space), GetCenterX-(GetClipMinX))+5, ORANGE01, 10, -50, true, 4); } PlaySE("se\se_tan00.wav");
loop(10) { yield; }
}
loop(180) { yield; } Concentration01(90); PlaySE("se\se_ch00.wav"); loop(120) { yield; }
attack3;
}
task Attack4 {
task CreateShot22(x, y, graphic, delay) {
let obj = Obj_Create(OBJ_SHOT); let c = 0;
Obj_SetPosition(obj, x, y);
Obj_SetSpeed(obj, 0);
Obj_SetAngle(obj, atan2(GetCenterY-Obj_GetY(obj), GetCenterX-Obj_GetX(obj)));
ObjShot_SetGraphic(obj, graphic);
ObjShot_SetDelay(obj, delay);
ObjShot_SetBombResist(obj, true);
Obj_SetAutoDelete(obj, false);
while(!Obj_BeDeleted (obj)) {
c++;
if(c == 150) {
Obj_SetSpeed(obj, 1/4);
}
yield;
}
}
loop(1500) { CreateShot22(rand(GetClipMinX-100, GetClipMaxX+100), rand(GetClipMinY-100, GetClipMaxY+100), WHITE23, 20); } loop(20) { yield; } PlaySE("se\se_tan00.wav"); PlaySE("se\se_gun00.wav"); DeleteEnemyShotImmediatelyInCircle(ALL, GetPlayerX, GetPlayerY, 10);
loop(180) { yield; }
ascent(i in -70..71) { CreateIndShot01(GetX, GetY, 1.5, GetAngleToPlayer+i*4, ORANGE03, 0); } PlaySE("se\se_kira00.wav");
}
let last = true;
}
//IT'S OVER ⑨000!!!!!
EDIT: After I played this card, I realized I was off my chair.
EDIT: I know this will not win.
EDIT: My name will probably change before the 24th, so remember that I'm the one who is always a ⑨.