@pikaguy9001
#TouhouDanmakufu
#Title[Ansatusya 8S]
#Text[Reikisoku no Ansatusya's 8th Spell]
#Image[]
#BackGround[IceMountain]
#Player[FREE]
#ScriptVersion[2]
script_enemy_main {
let BossImage = "script\img\ExRumia.png";
let CutInGraphic = GetCurrentScriptDirectory~"img\ansatucut.png";
let bossname = "Reikisoku no Ansatusya";
let Spell = 1;
let SpellName = "「Burning Red Aura of Phoenix」";
#include_function ".\include\cutin\cutin.txt";
@Initialize {
if(GetCommonDataDefault("CollectLifePiece", false)) {
CreateEnemyFromFile(GetCurrentScriptDirectory~"point.txt", GetX, GetY, 0, 0, 0);
DeleteCommonData("CollectLifePiece");
}
SetLife(630); SetDamageRate(12, 0); SetTimer(93);
SetEnemyMarker(true); MagicCircle(true); SetInvincibility(180);
LoadGraphic(BossImage);
SetText(SpellName); SetScore(10000000); cutin(CutInGraphic, 0, 0, 275, 275); //SetDurableSpellCard;
TMain;
SetEffectForZeroLife(60, 55, 3); //LastSpell;
SetShotAutoDeleteClip(200, 200, 200, 200);
}
@MainLoop {
if(OnBomb) { SetDamageRate(0, 0); } else { SetDamageRate(12, 0); if(Spell <= 1) { SetCollisionA(GetX, GetY, 36); 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(255);
SetColor(255, 255, 255);
if(!OnBomb) { DrawGraphic(GetX, GetY); }
}
@Finalize {
if(GotSpellCardBonus) {
let su = 20;
loop(10) { CreateItem(ITEM_SCORE, GetX+rand(-su, su), GetY+rand(-su, su)); }
}
if(GetMissCountInThisSpell==0) {
PlaySE("se\se_bonus2.wav");
SetCommonData("CollectLifePiece", true);
} else { SetCommonData("CollectLifePiece", false); }
DeleteGraphic(BossImage);
}
task TMain {
SetMovePosition02(GetCenterX, GetCenterY-100, 20);
loop(60){yield;}
Concentration01(120); PlaySE("se\se_ch00.wav");
loop(120){yield;}
attack1;
loop {
MotionBlurEx(SHOT, 3, 200, ALPHA); yield;
}
}
function mokou(x, y, v, angle) {
ascent(i in 1..5) { CreateShot02(x+(i*10)*cos(angle), y+(i*10)*sin(angle), 0, angle, 1/10, v, RED01, 10); }
ascent(i in 1..7) {
CreateShot02(x+(i*15)*cos(angle+115), y+(i*15)*sin(angle+115), 0, angle, 1/10, v, RED01, 10);
CreateShot02(x+(i*15)*cos(angle-115), y+(i*15)*sin(angle-115), 0, angle, 1/10, v, RED01, 10);
}
ascent(i in 1..4) {
CreateShot02(x+(15*2)*cos(angle+115)+(i*15)*cos(angle+145), y+(15*2)*sin(angle+115)+(i*15)*sin(angle+145), 0, angle, 1/10, v, RED01, 10);
CreateShot02(x+(15*2)*cos(angle-115)+(i*15)*cos(angle-145), y+(15*2)*sin(angle-115)+(i*15)*sin(angle-145), 0, angle, 1/10, v, RED01, 10);
}
ascent(i in 1..4) {
CreateShot02(x+(15*2)*cos(angle+115)+(i*15)*cos(angle+145)+(i*7)*cos(angle+200), y+(15*2)*sin(angle+115)+(i*15)*sin(angle+145)+(i*7)*sin(angle+200), 0, angle, 1/10, v, RED01, 10);
CreateShot02(x+(15*2)*cos(angle-115)+(i*15)*cos(angle-145)+(i*7)*cos(angle-200), y+(15*2)*sin(angle-115)+(i*15)*sin(angle-145)+(i*7)*sin(angle-200), 0, angle, 1/10, v, RED01, 10);
}
CreateShot02(x+(0)*cos(angle), y+(0)*sin(angle), 0, angle, 1/10, v, RED02, 10);
CreateShot02(x+30*cos(angle), y+30*sin(angle), 0, angle, 1/10, v, RED03, 10);
}
task attack1 {
loop {
loop(3) {
let a = GetAngleToPlayer; let num = 360;
PlaySE("se\se_tan01.wav");
mokou(GetX, GetY, 5, a);
loop(num) { CreateShot01(GetX, GetY, 3+rand(-2, 1), a+rand(-3, 3), RED23, 10); a+=360/num; }
loop(90) { yield; }
}
loop(120) { yield; }
loop(5) {
let a = GetAngleToPlayer;
PlaySE("se\se_tan01.wav");
mokou(GetX, GetY, 5, a);
ascent(i in 0..5) { loop(60) { CreateShot01(GetX, GetY, 3+rand(0, 2), a+i*360/5+rand(-20, 20), RED23, 10); } }
loop(20) { yield; }
}
loop(60) { yield; }
}
}
task attack2 {
loop {
loop(2) {
loop(10) {
let a = GetAngleToPlayer; let num = 40;
PlaySE("se\se_tan01.wav");
mokou(GetX, GetY, 5, a);
loop(num) { CreateShot01(GetX, GetY, 3+rand(-1, 1), a+rand(-3, 3), RED23, 10); a+=360/num; }
loop(10) { yield; }
}
loop(60) { yield; }
}
let b = GetAngleToPlayer; let side = 1;
loop(2) {
loop(10) {
let num = 40;
PlaySE("se\se_tan01.wav");
mokou(GetX, GetY, 5, b);
loop(num) { CreateShot01(GetX, GetY, 3+rand(-1, 1), b+rand(-3, 3), RED23, 10); b+=360/num; }
b+=360/10*side;
loop(5) { yield; }
}
side*=-1;
loop(30) { yield; }
}
}
}
}
Is this possible? Does it cause slowdown? (Somewhat.) Just before I go on with making the rest of the boss, I need feedback for this particular spell.
EDIT: Unused task is unused wwww
SURVIVAL SPELL CARD!! Ansatsusha's 9th spell.
#TouhouDanmakufu
#Title[Ansatusya 9S]
#Text[Reikisoku no Ansatusya's 9th Spell]
#Image[]
#BackGround[IceMountain]
#Player[FREE]
#ScriptVersion[2]
script_enemy_main {
let BossImage = "script\img\ExRumia.png";
let CutInGraphic = GetCurrentScriptDirectory~"img\ansatucut.png";
let bossname = "Reikisoku no Ansatusya";
let Spell = 1;
let SpellName = "「Aura Bounded Field -Anger, Jealousy, Peace-」";
@Initialize {
if(GetCommonDataDefault("CollectLifePiece", false)) {
CreateEnemyFromFile(GetCurrentScriptDirectory~"point.txt", GetX, GetY, 0, 0, 0);
DeleteCommonData("CollectLifePiece");
}
SetLife(630); SetDamageRate(0, 0); SetTimer(37);
SetEnemyMarker(true); MagicCircle(true); SetInvincibility(180);
LoadGraphic(BossImage);
SetText(SpellName); SetScore(10000000); SetDurableSpellCard;
TMain;
SetEffectForZeroLife(60, 55, 3); //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 = 20;
loop(10) { CreateItem(ITEM_SCORE, GetX+rand(-su, su), GetY+rand(-su, su)); }
}
if(GetMissCountInThisSpell==0) {
PlaySE("se\se_bonus2.wav");
SetCommonData("CollectLifePiece", true);
} else { SetCommonData("CollectLifePiece", false); }
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) {
CreateShot02(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) { CreateShot02(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) { CreateShot02(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) {
CreateShot02(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-=4; b-=3/2; yield; } } ap;
loop(300) {
ascent(i in 0..num) {
CreateShot02(GetX+radius*cos(a+i*360/num), GetY+radius*sin(a+i*360/num), 5, a+i*360/num+b, -1/30, -5, graphic[2], 10);
}
loop(1) { yield; }
}
loop(360) { yield; }
}
}
ARG!! I CAN NEVER CAPTURE THIS SPELL CARD!! But it's so fun and addictive to play! ^^ But I know somewhere in the world, there will be a first person to capture this spell... And it won't be me... Now I'm just gonna curl up in this corner and whimper...
EDIT:
Ansatsuhell! Really messy code stuff!
#TouhouDanmakufu
#Title[Ansatusya 10S]
#Text[Reikisoku no Ansatusya's 10th Spell]
#Image[]
#BackGround[IceMountain]
#Player[FREE]
#ScriptVersion[2]
script_enemy_main {
let BossImage = "script\img\ExRumia.png";
let CutInGraphic = GetCurrentScriptDirectory~"img\ansatucut.png";
let bossname = "Reikisoku no Ansatusya";
let Spell = 1;
let SpellName = "「Wave Guiding Hero」";
//include_function ".\include\cutin\cutin.txt";
@Initialize {
if(GetCommonDataDefault("CollectLifePiece", false)) {
CreateEnemyFromFile(GetCurrentScriptDirectory~"point.txt", GetX, GetY, 0, 0, 0);
DeleteCommonData("CollectLifePiece");
}
SetLife(750); SetDamageRate(12, 0); SetTimer(93);
SetEnemyMarker(true); MagicCircle(true); SetInvincibility(420);
LoadGraphic(BossImage);
SetText(SpellName); SetScore(10000000); //cutin(CutInGraphic, 0, 0, 275, 275); //SetDurableSpellCard;
TMain;
SetEffectForZeroLife(60, 55, 3); //LastSpell;
SetShotAutoDeleteClip(200, 200, 200, 200);
}
@MainLoop {
if(OnBomb) { SetDamageRate(0, 0); } else { SetDamageRate(12, 0); if(Spell <= 1) { SetCollisionA(GetX, GetY, 36); 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(255);
SetColor(255, 255, 255);
if(!OnBomb) { DrawGraphic(GetX, GetY); }
}
@Finalize {
if(GotSpellCardBonus) {
let su = 20;
loop(10) { CreateItem(ITEM_SCORE, GetX+rand(-su, su), GetY+rand(-su, su)); }
}
if(GetMissCountInThisSpell==0) {
PlaySE("se\se_bonus2.wav");
SetCommonData("CollectLifePiece", true);
} else { SetCommonData("CollectLifePiece", false); }
DeleteGraphic(BossImage);
}
task TMain {
SetMovePosition02(GetCenterX, GetCenterY-100, 20);
loop(60){yield;}
loop(3) { Concentration01(120); PlaySE("se\se_ch00.wav"); loop(120){yield;} }
border;
}
let num = 0; let radius = 100; let v = 2;
let a1 = 0; let aa1 = 0; let b1 = 0;
let a2 = 0; let aa2 = 0; let b2 = 0;
let a3 = 0; let aa3 = 0; let b3 = 0;
let a4 = 0; let aa4 = 0; let b4 = 0;
let a5 = 0; let aa5 = 0; let b5 = 0;
task border {
loop {
if(GetEnemyLife <= 750/5*5 && GetTimer > 30) {
num = 1; radius = 100;
PlaySE("se\se_kira01.wav");
loop(num) {
CreateShot01(GetX+radius*cos(a1), GetY+radius*sin(a1), v, a1+b1, RED01, 10);
a1+=360/num;
}
}
if(GetEnemyLife <= 750/5*4 && GetTimer > 30) {
let graphic = [ORANGE12, YELLOW12];
num = 1; radius = 50;
PlaySE("se\se_kira00.wav");
loop(num) {
CreateShot01(GetX+radius*cos(a2), GetY+radius*sin(a2), v, a2+b2, graphic[rand_int(0, 1)], 10);
a2+=360/num;
}
}
if(GetEnemyLife <= 750/5*3 && GetTimer > 30) {
num = 2; radius = 75;
PlaySE("se\se_kira00.wav");
loop(num) {
CreateShot01(GetX+radius*cos(a3), GetY+radius*sin(a3), v, a3+b3, GREEN12, 10);
a3+=360/num;
}
}
if(GetEnemyLife <= 750/5*2 && GetTimer > 30) {
num = 1; radius = 150;
PlaySE("se\se_kira02.wav");
CreateShot01(GetX+radius*cos(a4), GetY+radius*sin(a4), v, a4+b4, AQUA21, 10);
CreateShot01(GetX+radius*cos(a4+180), GetY+radius*sin(a4+180), v, a4+180+b4, BLUE21, 10);
}
if(GetEnemyLife <= 750/5*1 && GetTimer > 30) {
num = 1; radius = 150;
PlaySE("se\se_kira02.wav");
CreateShot01(GetX+radius*cos(a5), GetY+radius*sin(a5), v, a5+b5, PURPLE22, 10);
CreateShot01(GetX+radius*cos(a5+90), GetY+radius*sin(a5+90), v, a5+90+b5, WHITE22, 10);
CreateShot01(GetX+radius*cos(a5-90), GetY+radius*sin(a5-90), v, a5-90+b5, WHITE22, 10);
}
a1+=aa1; aa1+=1/5; b1+=1;
a2+=aa2; aa2+=1/5; b2-=3;
a3+=aa3; aa3+=1/5; b3+=7;
a4+=aa4; aa4-=1/5; b4-=5;
a5+=aa5; aa5-=1/5; b5-=9;
if(a1 >= 360) { a1-=360; } if(aa1 >= 360) { aa1-=360; } if(b1 >= 360) { b1-=360; }
if(a2 >= 360) { a2-=360; } if(aa2 >= 360) { aa2-=360; } if(b2 >= 360) { b2-=360; }
if(a3 >= 360) { a3-=360; } if(aa3 >= 360) { aa3-=360; } if(b3 >= 360) { b3-=360; }
if(a4 >= 360) { a4-=360; } if(aa4 >= 360) { aa4-=360; } if(b4 >= 360) { b4-=360; }
if(a5 >= 360) { a5-=360; } if(aa5 >= 360) { aa5-=360; } if(b5 >= 360) { b5-=360; }
loop(1) { yield; }
}
}
}
If you are not Naut and you try this script, you will cry in horror!
EDIT: Only thing left to make is Ansatsusha's 8th pre-spell!