task PlayerShot01(x,y,speed,angle,r,g,b,damage){
let eff      = Obj_Create(OBJ_EFFECT);
let obj      = Obj_Create(OBJ_SHOT);
let alpha    = 150;

ObjEffect_SetTexture(eff,img2);
ObjEffect_SetRenderState(eff,ALPHA);
ObjEffect_SetPrimitiveType(eff,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetLayer(eff,2);
ObjEffect_CreateVertex(eff,4);
ObjEffect_SetVertexXY(eff,0,16/-2,30/-2);
ObjEffect_SetVertexXY(eff,1,16/-2,30/2);
ObjEffect_SetVertexXY(eff,2,16/2,30/-2);
ObjEffect_SetVertexXY(eff,3,16/2,30/2);
ObjEffect_SetVertexUV(eff,0,52,5);
ObjEffect_SetVertexUV(eff,1,52,34);
ObjEffect_SetVertexUV(eff,2,68,5);
ObjEffect_SetVertexUV(eff,3,68,34);
ObjEffect_SetVertexColor(eff,0,alpha,r,g,b);
ObjEffect_SetVertexColor(eff,1,alpha,r,g,b);
ObjEffect_SetVertexColor(eff,2,alpha,r,g,b);
ObjEffect_SetVertexColor(eff,3,alpha,r,g,b);
    
Obj_SetPosition(obj,x,y);
Obj_SetSpeed(obj,speed);
Obj_SetAngle(obj,angle);
Obj_SetAlpha(obj,0);
ObjShot_SetBombResist(obj,true);
ObjShot_SetGraphic(obj,1);
ObjShot_SetDamage(obj,damage);
ObjShot_SetPenetration(obj,1);
ObjShot_ToItem(obj,false);

loop{
Obj_SetPosition(eff,Obj_GetX(obj),Obj_GetY(obj));
ObjEffect_SetAngle(eff,0,0,90+Obj_GetAngle(obj));
if(Obj_BeDeleted(obj)==true){
Obj_Delete(eff);
break;
}

if(OnMissed==true){
Obj_Delete(obj);
Obj_Delete(eff);
break;
}

yield;
}
}

task PlayerShot02(x,y,speed,angle,r,g,b,damage){
let eff      = Obj_Create(OBJ_EFFECT);
let obj      = Obj_Create(OBJ_SHOT);
let alpha    = 150;

ObjEffect_SetTexture(eff,img2);
ObjEffect_SetRenderState(eff,ALPHA);
ObjEffect_SetPrimitiveType(eff,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetLayer(eff,2);
ObjEffect_CreateVertex(eff,4);
ObjEffect_SetVertexXY(eff,0,28/-2,12/-2);
ObjEffect_SetVertexXY(eff,1,28/-2,12/2);
ObjEffect_SetVertexXY(eff,2,28/2,12/-2);
ObjEffect_SetVertexXY(eff,3,28/2,12/2);
ObjEffect_SetVertexUV(eff,0,128,42);
ObjEffect_SetVertexUV(eff,1,128,54);
ObjEffect_SetVertexUV(eff,2,156,42);
ObjEffect_SetVertexUV(eff,3,156,54);
ObjEffect_SetVertexColor(eff,0,alpha,r,g,b);
ObjEffect_SetVertexColor(eff,1,alpha,r,g,b);
ObjEffect_SetVertexColor(eff,2,alpha,r,g,b);
ObjEffect_SetVertexColor(eff,3,alpha,r,g,b);
    
Obj_SetPosition(obj,x,y);
Obj_SetSpeed(obj,speed);
Obj_SetAngle(obj,angle);
Obj_SetAlpha(obj,0);
ObjShot_SetBombResist(obj,true);
ObjShot_SetGraphic(obj,1);
ObjShot_SetDamage(obj,damage);
ObjShot_SetPenetration(obj,1);
ObjShot_ToItem(obj,false);

loop{
Obj_SetPosition(eff,Obj_GetX(obj),Obj_GetY(obj));
ObjEffect_SetAngle(eff,0,0,90+Obj_GetAngle(obj));
if(Obj_BeDeleted(obj)==true){
Obj_Delete(eff);
break;
}

if(OnMissed==true){
Obj_Delete(obj);
Obj_Delete(eff);
break;
}

yield;
}
}

task PlayerShot03(type,angle,r,g,b,damage){
let eff      = Obj_Create(OBJ_EFFECT);
let eff2     = Obj_Create(OBJ_EFFECT);
let obj      = Obj_Create(OBJ_LASER);
let alpha    = 80;
let alpha2   = 50;
let cc       = 0;
let length   = 0;

ObjEffect_SetTexture(eff,img2);
ObjEffect_SetRenderState(eff,ADD);
ObjEffect_SetPrimitiveType(eff,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetLayer(eff,2);
ObjEffect_CreateVertex(eff,4);
ObjEffect_SetVertexColor(eff,0,alpha,r,g,b);
ObjEffect_SetVertexColor(eff,1,alpha,r,g,b);
ObjEffect_SetVertexColor(eff,2,alpha,r,g,b);
ObjEffect_SetVertexColor(eff,3,alpha,r,g,b);
ObjEffect_SetTexture(eff2,img2);
ObjEffect_SetRenderState(eff2,ADD);
ObjEffect_SetPrimitiveType(eff2,PRIMITIVE_TRIANGLESTRIP);
ObjEffect_SetLayer(eff2,5);
ObjEffect_CreateVertex(eff2,4);
ObjEffect_SetVertexColor(eff2,0,alpha2,r,g,b);
ObjEffect_SetVertexColor(eff2,1,alpha2,r,g,b);
ObjEffect_SetVertexColor(eff2,2,alpha2,r,g,b);
ObjEffect_SetVertexColor(eff2,3,alpha2,r,g,b);
    
Obj_SetAngle(obj,angle);
Obj_SetAlpha(obj,255);
ObjShot_SetBombResist(obj,true);
ObjShot_SetGraphic(obj,2);
ObjShot_SetDamage(obj,damage);
ObjShot_ToItem(obj,false);
ObjLaser_SetLength(obj,length);
ObjLaser_SetWidth(obj,10);
ObjLaser_SetSource(obj,false);

loop{
alternative(type)
case(0){
Obj_SetPosition(obj,GetPlayerX-20,GetPlayerY+0);}
case(1){
Obj_SetPosition(obj,GetPlayerX+20,GetPlayerY+0);}
case(2){
Obj_SetPosition(obj,GetPlayerX-40,GetPlayerY-20);}
case(3){
Obj_SetPosition(obj,GetPlayerX+40,GetPlayerY-20);}

Obj_SetPosition(eff,Obj_GetX(obj),Obj_GetY(obj));
Obj_SetPosition(eff2,Obj_GetX(obj),Obj_GetY(obj));
ObjEffect_SetAngle(eff,0,0,90+Obj_GetAngle(obj));
ObjEffect_SetAngle(eff2,0,0,90+Obj_GetAngle(obj));
if(Obj_BeDeleted(obj)==true){
Obj_Delete(eff);
Obj_Delete(eff2);
break;
}

ObjLaser_SetLength(obj,length);
if(length<500){length+=20;}

if(length>=500){cc+=20;}
ObjEffect_SetVertexXY(eff,0,20/-2,-length);
ObjEffect_SetVertexXY(eff,1,20/-2,0);
ObjEffect_SetVertexXY(eff,2,20/2,-length);
ObjEffect_SetVertexXY(eff,3,20/2,0);
ObjEffect_SetVertexUV(eff,0,161,0+cc);
ObjEffect_SetVertexUV(eff,1,161,length+cc);
ObjEffect_SetVertexUV(eff,2,181,0+cc);
ObjEffect_SetVertexUV(eff,3,181,length+cc);
ObjEffect_SetVertexXY(eff2,0,20/-2,-length);
ObjEffect_SetVertexXY(eff2,1,20/-2,0);
ObjEffect_SetVertexXY(eff2,2,20/2,-length);
ObjEffect_SetVertexXY(eff2,3,20/2,0);
ObjEffect_SetVertexUV(eff2,0,182,0+cc);
ObjEffect_SetVertexUV(eff2,1,182,length+cc);
ObjEffect_SetVertexUV(eff2,2,202,0+cc);
ObjEffect_SetVertexUV(eff2,3,202,length+cc);

if(OnMissed==true||GetKeyState(VK_SHOT)==KEY_FREE||GetKeyState(VK_SLOWMOVE)==KEY_FREE){
Obj_Delete(obj);
Obj_Delete(eff);
Obj_Delete(eff2);
break;
}

yield;
}
}