function FShootShape (spawnX, spawnY, v, angle, num, bside, graphic, delay) { //Function belongs to Mewkyuu (?)- ive just cleaned it up a little

	ascent (i in 0..num) {
		let sx = spawnX + cos(angle + i * 360 / num);
		let sy = spawnY + sin(angle + i * 360 / num);
		let sxN = spawnX + cos(angle + ( i + 1 ) * 360 / num);
		let syN = spawnY + sin(angle + (i + 1) * 360 / num);
		CreateShotA1(spawnX, spawnY, v * (((sx - spawnX)^2 + (sy - spawnY)^2)^0.5), atan2(sy - spawnY, sx - spawnX), graphic, delay);
		
		ascent (j in 0..bside) {
			let toAngle = atan2(syN - sy,sxN - sx);
			let toDist = (((sxN - sx)^2 + (syN - sy)^2)^0.5);
			let sx2 = sx + toDist / bside * j * cos(toAngle);
			let sy2 = sy + toDist / bside * j * sin(toAngle);
			CreateShotA1(spawnX, spawnY, v * (((sx2 - spawnX)^2 + (sy2 - spawnY)^2)^0.5), atan2(sy2 - spawnY,sx2 - spawnX), graphic, delay);
		}
		
	}
	
}

function FGravityShot (x, y, speed, angle, grvSpeed, grvAngle, graphic, delay) { //Function belongs to www.danmakufu.net - ive just cleaned it up a little
	let xSpeed = speed * cos(angle);
	let ySpeed = speed * sin(angle);
	let accXSpeed = grvSpeed * cos(grvAngle);
	let accYSpeed = grvSpeed * sin(grvAngle);
	let maxXSpeed = [99, -99][accXSpeed < 0];
	let maxYSpeed = [99, -99][accYSpeed < 0];
	let gs = CreateShotB2(x, y, xSpeed, ySpeed, accXSpeed, accYSpeed, maxXSpeed, maxYSpeed, graphic, delay);
	return gs;
}