I have a player script(ReimuA) (based on Naut SanaeB) that have for basic shots :
task amulet(x, y, ang, v, d){
let obj = Obj_Create(OBJ_SHOT);
let angleBOOM = ang;
Obj_SetPosition(obj, x, y);
Obj_SetAngle(obj, ang);
Obj_SetSpeed(obj, v);
let xx = x;
let yy = y;
let xc = xx;
let yc = yy;
ObjShot_SetGraphic(obj, 7);
ObjShot_SetDamage(obj, d);
ObjShot_SetBombResist(obj, true);
ObjShot_SetPenetration(obj, 2);
while(! Obj_BeDeleted(obj)){
xc = Obj_GetX(obj);
yc = Obj_GetY(obj);
}
let amul=Obj_Create(OBJ_EFFECT);
let Yvar = 8;
ObjEffect_SetTexture(amul,GetCurrentScriptDirectory~"reimu.png");
ObjEffect_SetRenderState(amul,ALPHA);
ObjEffect_SetPrimitiveType(amul,PRIMITIVE_TRIANGLEFAN);
ObjEffect_CreateVertex(amul,4);
ObjEffect_SetVertexColor(amul, 0, 205, 200, 255, 255);
ObjEffect_SetVertexColor(amul, 1, 205, 200, 255, 255);
ObjEffect_SetVertexColor(amul, 2, 205, 200, 255, 255);
ObjEffect_SetVertexColor(amul, 3, 205, 200, 255, 255);
loop(2){
ObjEffect_SetVertexUV(amul,0,49,143);
ObjEffect_SetVertexUV(amul,1,61,143);
ObjEffect_SetVertexUV(amul,2,61,161);
ObjEffect_SetVertexUV(amul,3,49,161);
ObjEffect_SetVertexXY(amul,0,xc,yc - Yvar);
ObjEffect_SetVertexXY(amul,1,xc,yc - Yvar);
ObjEffect_SetVertexXY(amul,2,xc,yc + Yvar);
ObjEffect_SetVertexXY(amul,3,xc,yc + Yvar);
Yvar+=8;
yield;}
loop(2){
ObjEffect_SetVertexUV(amul,0,49,161);
ObjEffect_SetVertexUV(amul,1,61,161);
ObjEffect_SetVertexUV(amul,2,61,179);
ObjEffect_SetVertexUV(amul,3,49,179);
ObjEffect_SetVertexXY(amul,0,xc,yc - Yvar);
ObjEffect_SetVertexXY(amul,1,xc,yc - Yvar);
ObjEffect_SetVertexXY(amul,2,xc,yc + Yvar);
ObjEffect_SetVertexXY(amul,3,xc,yc + Yvar);
Yvar+=8;
yield;}
loop(2){
ObjEffect_SetVertexUV(amul,0,49,179);
ObjEffect_SetVertexUV(amul,1,61,179);
ObjEffect_SetVertexUV(amul,2,61,197);
ObjEffect_SetVertexUV(amul,3,49,197);
ObjEffect_SetVertexXY(amul,0,xc,yc - Yvar);
ObjEffect_SetVertexXY(amul,1,xc,yc - Yvar);
ObjEffect_SetVertexXY(amul,2,xc,yc + Yvar);
ObjEffect_SetVertexXY(amul,3,xc,yc + Yvar);
Yvar+=8;
yield;}
loop(2){
ObjEffect_SetVertexUV(amul,0,36,143);
ObjEffect_SetVertexUV(amul,1,48,143);
ObjEffect_SetVertexUV(amul,2,48,161);
ObjEffect_SetVertexUV(amul,3,36,161);
ObjEffect_SetVertexXY(amul,0,xc,yc - Yvar);
ObjEffect_SetVertexXY(amul,1,xc,yc - Yvar);
ObjEffect_SetVertexXY(amul,2,xc,yc + Yvar);
ObjEffect_SetVertexXY(amul,3,xc,yc + Yvar);
Yvar+=8;
yield;}
Obj_Delete(amul);
}
task amuletbreak(xc,yc) {
let amul=Obj_Create(OBJ_EFFECT);
let Yvar = 8;
ObjEffect_SetTexture(amul,GetCurrentScriptDirectory~"sanae.png");
ObjEffect_SetRenderState(amul,ADD);
ObjEffect_SetLayer(amul, 8);
ObjEffect_SetPrimitiveType(amul,PRIMITIVE_TRIANGLEFAN);
ObjEffect_CreateVertex(amul,4);
ObjEffect_SetVertexColor(amul, 0, 255, 200, 255, 255);
ObjEffect_SetVertexColor(amul, 1, 255, 200, 255, 255);
ObjEffect_SetVertexColor(amul, 2, 255, 200, 255, 255);
ObjEffect_SetVertexColor(amul, 3, 255, 200, 255, 255);
loop(2){
ObjEffect_SetVertexUV(amul,0,49,143);
ObjEffect_SetVertexUV(amul,1,61,143);
ObjEffect_SetVertexUV(amul,2,61,161);
ObjEffect_SetVertexUV(amul,3,49,161);
ObjEffect_SetVertexXY(amul,0,xc,yc - 17);
ObjEffect_SetVertexXY(amul,1,xc,yc - 17);
ObjEffect_SetVertexXY(amul,2,xc,yc + 16);
ObjEffect_SetVertexXY(amul,3,xc,yc + 16);
Yvar+=8;
yield;}
loop(2){
ObjEffect_SetVertexUV(amul,0,49,161);
ObjEffect_SetVertexUV(amul,1,61,161);
ObjEffect_SetVertexUV(amul,2,61,179);
ObjEffect_SetVertexUV(amul,3,49,179);
ObjEffect_SetVertexXY(amul,0,xc,yc - Yvar);
ObjEffect_SetVertexXY(amul,1,xc,yc - Yvar);
ObjEffect_SetVertexXY(amul,2,xc,yc + Yvar);
ObjEffect_SetVertexXY(amul,3,xc,yc + Yvar);
Yvar+=8;
yield;}
loop(2){
ObjEffect_SetVertexUV(amul,0,49,179);
ObjEffect_SetVertexUV(amul,1,61,179);
ObjEffect_SetVertexUV(amul,2,61,197);
ObjEffect_SetVertexUV(amul,3,49,197);
ObjEffect_SetVertexXY(amul,0,xc,yc - Yvar);
ObjEffect_SetVertexXY(amul,1,xc,yc - Yvar);
ObjEffect_SetVertexXY(amul,2,xc,yc + Yvar);
ObjEffect_SetVertexXY(amul,3,xc,yc + Yvar);
Yvar+=8;
yield;}
loop(2){
ObjEffect_SetVertexUV(amul,0,36,143);
ObjEffect_SetVertexUV(amul,1,48,143);
ObjEffect_SetVertexUV(amul,2,48,161);
ObjEffect_SetVertexUV(amul,3,36,161);
ObjEffect_SetVertexXY(amul,0,xc,yc - Yvar);
ObjEffect_SetVertexXY(amul,1,xc,yc - Yvar);
ObjEffect_SetVertexXY(amul,2,xc,yc + Yvar);
ObjEffect_SetVertexXY(amul,3,xc,yc + Yvar);
Yvar+=8;
yield;}
Obj_Delete(amul);
}
But amulet break does not work...