Well, they did use a "proper" method. Although, it's such a shitstorm I can't figure out how exactly it was done. If you want you can take a look, but jesus.
task Spell_CircleA{
let e_r_flag = true;
let e_r = 0;
let e_r_d = 15;
let e_r_dd = -0.3;
let e_ang = 0;
let e_ang_d = 3.5;
let e_ang_sub = 360/24;
let e_x = [GetEnemyX];
let e_y = [GetEnemyY];
let obj = Obj_Create(OBJ_EFFECT);
Obj_SetPosition(obj, e_x[0], e_y[0]);
Obj_SetAngle(obj, 0);
Obj_SetSpeed(obj, 0);
Obj_SetAutoDelete(obj, false);
ObjEffect_SetTexture(obj, effect_img_cir);
ObjEffect_SetRenderState(obj, ADD);
ObjEffect_SetLayer(obj, 1);
ObjEffect_SetAngle(obj, 0, 0, e_ang);
//???_????
ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLESTRIP);
ObjEffect_CreateVertex(obj, 54);
ascent(let i in 0..3){
ascent(let j in 0..9){
ObjEffect_SetVertexUV(obj, i*2*9+2*j, 80, j/8*127);
ObjEffect_SetVertexUV(obj, i*2*9+2*j+1, 95, j/8*127);
ObjEffect_SetVertexXY(obj, i*2*9+2*j, (e_r+16)*cos(120*i+e_ang_sub*j), (e_r+16)*sin(120*i+e_ang_sub*j));
ObjEffect_SetVertexXY(obj, i*2*9+2*j+1, e_r*cos(120*i+e_ang_sub*j), e_r*sin(120*i+e_ang_sub*j));
}
}
ascent(let i in 0..54){
ObjEffect_SetVertexColor(obj, i, 255, 127, 127, 127);
}
yield;
//?x????????
task e_move{
let e_M_delay_t = 15;//?????x??????
loop(e_M_delay_t){
e_x = e_x ~ [GetEnemyX];
e_y = e_y ~ [GetEnemyY];
yield;
}
loop{
e_x = e_x ~ [GetEnemyX];
e_y = e_y ~ [GetEnemyY];
e_x = erase(e_x, 0);
e_y = erase(e_y, 0);
Obj_SetPosition(obj, e_x[0], e_y[0]);
yield;
}
}
e_move;
loop{
e_r += e_r_d;
e_r_d += e_r_dd;
if((e_r <= S_Circle_r)&&(e_r_d < 0)&&(e_r_flag)){
e_r = S_Circle_r;
e_r_d = -(S_Circle_r-16)/(GetTimer*60);
e_r_dd = 0;
e_r_flag = false;
}
ascent(let i in 0..3){
ascent(let j in 0..9){
ObjEffect_SetVertexXY(obj, i*2*9+2*j, (e_r+16)*cos(120*i+e_ang_sub*j), (e_r+16)*sin(120*i+e_ang_sub*j));
ObjEffect_SetVertexXY(obj, i*2*9+2*j+1, e_r*cos(120*i+e_ang_sub*j), e_r*sin(120*i+e_ang_sub*j));
}
}
e_ang += e_ang_d;
if(e_ang > 360){e_ang += -360;}
if(e_ang < -360){e_ang += 360;}
ObjEffect_SetAngle(obj, 0, 0, e_ang);
if(!OnEnemySpellChirei){break;}
yield;
}
Obj_Delete(obj);
}
//?????????v???????~?uSpell Card Attack of Little Girl...?v?{???O????????
task Spell_CircleB{
let e_r = 0;
let e_ang_d = -3.5;
let e_ang = 0;
let e_ang_sub = 360/24;
let e_x = [GetEnemyX];
let e_y = [GetEnemyY];
let obj = Obj_Create(OBJ_EFFECT);
Obj_SetPosition(obj, e_x[0], e_y[0]);
Obj_SetAngle(obj, 0);
Obj_SetSpeed(obj, 0);
Obj_SetAutoDelete(obj, false);
ObjEffect_SetTexture(obj, effect_img_cir);
ObjEffect_SetRenderState(obj, ADD);
ObjEffect_SetLayer(obj, 1);
ObjEffect_SetAngle(obj, 0, 0, e_ang);
//???_????
ObjEffect_SetPrimitiveType(obj, PRIMITIVE_TRIANGLESTRIP);
ObjEffect_CreateVertex(obj, 54);
ascent(let i in 0..3){
ascent(let j in 0..9){
ObjEffect_SetVertexUV(obj, i*2*9+2*j, 49, j/8*127);
ObjEffect_SetVertexUV(obj, i*2*9+2*j+1, 64, j/8*127);
ObjEffect_SetVertexXY(obj, i*2*9+2*j, e_r*cos(120*i+e_ang_sub*j), e_r*sin(120*i+e_ang_sub*j));
ObjEffect_SetVertexXY(obj, i*2*9+2*j+1, (e_r-16)*cos(120*i+e_ang_sub*j), (e_r-16)*sin(120*i+e_ang_sub*j));
}
}
ascent(let i in 0..54){
ObjEffect_SetVertexColor(obj, i, 255, 127, 127, 127);
}
yield;
//???_???P2n???O
task e_vt_1{
let e_r_sub = 0;
let e_r_sub_ang = 0;
let e_r_sub_ang_d = 180/30;
loop(30){
e_r_sub_ang += e_r_sub_ang_d;
e_r_sub = (S_Circle_r+6)/2 - (S_Circle_r+6)/2*cos(e_r_sub_ang);
ascent(let i in 0..3){
ascent(let j in 0..5){
ObjEffect_SetVertexXY(obj, i*2*9+4*j, e_r_sub*cos(120*i+e_ang_sub*j*2), e_r_sub*sin(120*i+e_ang_sub*j*2));
}
}
yield;
}
}
//???_???Q2n+1???O
task e_vt_2{
let e_r_sub = 0;
let e_r_sub_ang = 0;
let e_r_sub_ang_d = 180/45;
loop(45){
e_r_sub_ang += e_r_sub_ang_d;
e_r_sub = (S_Circle_r+6)/2 - (S_Circle_r+6)/2*cos(e_r_sub_ang);
ascent(let i in 0..3){
ascent(let j in 0..4){
ObjEffect_SetVertexXY(obj, i*2*9+4*j+2, e_r_sub*cos(120*i+e_ang_sub*(2*j+1)), e_r_sub*sin(120*i+e_ang_sub*(2*j+1)));
}
}
yield;
}
}
//???_???R??
task e_vt_3{
let e_r_sub = 0;
let e_r_sub_ang = 0;
let e_r_sub_ang_d = 180/30;
ef_wait(15);
loop(30){
e_r_sub_ang += e_r_sub_ang_d;
e_r_sub = (S_Circle_r+6)/2 - (S_Circle_r+6)/2*cos(e_r_sub_ang) - 16;
ascent(let i in 0..3){
ascent(let j in 0..5){
ObjEffect_SetVertexXY(obj, i*2*9+4*j+1, e_r_sub*cos(120*i+e_ang_sub*2*j), e_r_sub*sin(120*i+e_ang_sub*2*j));
}
ascent(let j in 0..4){
ObjEffect_SetVertexXY(obj, i*2*9+4*j+3, e_r_sub*cos(120*i+e_ang_sub*(2*j+1)), e_r_sub*sin(120*i+e_ang_sub*(2*j+1)));
}
}
yield;
}
}
//???????X?????a?????????B
task e_vt_4{
e_r = S_Circle_r+6;
let e_r_d = -(S_Circle_r-16)/(GetTimer*60);
ef_wait(60);
loop{
e_r += e_r_d;
ascent(let i in 0..3){
ascent(let j in 0..9){
ObjEffect_SetVertexXY(obj, i*2*9+2*j, e_r*cos(120*i+e_ang_sub*j), e_r*sin(120*i+e_ang_sub*j));
ObjEffect_SetVertexXY(obj, i*2*9+2*j+1, (e_r-16)*cos(120*i+e_ang_sub*j), (e_r-16)*sin(120*i+e_ang_sub*j));
}
}
yield;
}
}
task e_move{
let e_M_delay_t = 15;//?????x??????
loop(e_M_delay_t){
e_x = e_x ~ [GetEnemyX];
e_y = e_y ~ [GetEnemyY];
yield;
}
loop{
e_x = e_x ~ [GetEnemyX];
e_y = e_y ~ [GetEnemyY];
e_x = erase(e_x, 0);
e_y = erase(e_y, 0);
Obj_SetPosition(obj, e_x[0], e_y[0]);
yield;
}
}
//???_????
e_vt_1;//?????^?X?N?????o??
e_vt_2;
e_vt_3;
e_vt_4;
//?x????????
e_move;
//???????????]
loop{
e_ang += e_ang_d;
if(e_ang > 360){e_ang += -360;}
if(e_ang < -360){e_ang += 360;}
ObjEffect_SetAngle(obj, 0, 0, e_ang);
if(!OnEnemySpellChirei){break;}
yield;
}
Obj_Delete(obj);
}
//???????d???????^?X?N?????o??
SetSpellCardAttack(Spell_Num, flag_Durable);
BossSpellBG(bosnum); //?w?i
yield;
PlaySE("se\seUseSpellCard.wav");
DrawCutInGraphic; //?J?b?g?C??
DrawSCA; //SpellCardAtack!
Spell_CircleA; //??????
Spell_CircleB;
DrawSpellName; //?X?y????
}