Sorry for the unfortunate delay... :blush:
Here it is...
#include "./functions.dnh"
#include "./shotfunctions.dnh"
#include "./soundfunctions.dnh"
task shoot{
let count = 0;
loop{
if(GetVirtualKeyState(VK_SHOT) != KEY_FREE && count%2 == 0){
if(CanShoot && !IsPlayerSpellActive){
//Regular shots
PlaySoundA1(9, 70, 0);
TShotRegular(GetPlayerX + 8, GetPlayerY, 20, 270, 1, damage*1.5);
TShotRegular(GetPlayerX - 8, GetPlayerY, 20, 270, 1, damage*1.5);
}
}
count++;
yield;
}
}
task option(rads, rads2, starta, aplus){
let objOption = ObjPrim_Create(OBJ_SPRITE_2D);
Obj_SetRenderPriorityI(objOption, 31);
ObjRender_SetBlendType(objOption, BLEND_ALPHA);
ObjPrim_SetTexture(objOption, GetCurrentScriptDirectory ~ "./....shot.png");
ObjSprite2D_SetSourceRect(objOption, 40, 45, 61, 67);
ObjSprite2D_SetDestCenter(objOption);
ObjRender_SetPosition(objOption, GetPlayerX, GetPlayerY, 0);
let destX;
let destY;
let dist;
let dir;
let a = starta;
let count = 0;
let shotAngle = -90;
while(!Obj_IsDeleted(objOption)){
if(!optionAlive){Obj_Delete(objOption);}
if(GetVirtualKeyState(VK_SLOWMOVE) == KEY_FREE){
destX = GetPlayerX + rads[0]*cos(a);
destY = GetPlayerY + rads[1]*sin(a);
}else{
destX = GetPlayerX + rads2[0]*cos(a);
destY = GetPlayerY - 32 + rads2[1]*sin(a);
}
let opX = ObjRender_GetX(objOption);
let opY = ObjRender_GetY(objOption);
dist = GetDist(opX, opY, destX, destY);
dir = GetAngle(opX, opY, destX, destY);
opX += 0.25 * dist * cos(dir);
opY += 0.25 * dist * sin(dir);
ObjRender_SetPosition(objOption, opX, opY, 0);
ObjRender_SetAngleZ(objOption, count * 2);
if(GetVirtualKeyState(VK_SHOT) != KEY_FREE && count%2 == 0){
if(CanShoot && !IsPlayerSpellActive){
PlaySoundA1(6, 60, 0);
if(GetVirtualKeyState(VK_SLOWMOVE) == KEY_FREE){
TShotRegular(opX, opY, 20, 270, 3, damage*1.5);
TShotRegular(opX, opY, 10, 270, 3, damage*1.5);
}else{
TShotRegular(opX, opY, 20, 270, 3, damage*2.5);
TShotRegular(opX, opY, 20, 270, 3, damage*2.5);
}
}
}
count++;
a += aplus;
yield;
}
}