
function SetSpellCard(let text,let number)
{
	SetText(text);
	SetCommonData("SpellFlg",true);
	spellbonus=GetCommonDataDefault("ItemPoint",10000)*point;
	SetScore(spellbonus/3);
	SetDurableSpellCard;
	Draw_SpellBackGround(tex_spellbg,bg_rect[0],bg_rect[1],bg_rect[2],bg_rect[3]);
	
	spell_number=number;
	
	let data_total=GetCommonData("SpellResult_TotalCount");
	let data_get=GetCommonData("SpellResult_GetCount");
	
	spell_totalcount=data_total[number]+1;
	spell_getcount=data_get[number];
}

function GetSpellCard
{
	let score=GetCommonData("Score");
	let rate=GetCommonDataDefault("Rate",1);
	score+=spellbonus*(rate*rate);
	spell_getcount++;
	SetCommonData("Score",score);
//	RaiseError("",score);
}

function SetMove(let x,let y,let w)
{
	SetMovePositionHermite(x,y,0,0,0,0,w);
	SetAction(ACT_MOVE,w);
}

function ReflectShot(
	let x,			// 発射点x座標
	let y,			// 発射点y座標
	let speed,		// 速度（大きすぎると、画面端より前で反射する場合がある）
	let angle,		// 角度
	let reflect,	// 反射回数
	let L,			// 画面左端で反射 true/false
	let U,			// 画面上端で反射 true/false
	let R,			// 画面右端で反射 true/false
	let D,			// 画面下端で反射 true/false
	let graphic,	// 画像
	let delay		// 遅延フレーム数
){
	let totalFrame=0;
	let reflectEdge=[U,D,L,R];
	SetShotDirectionType(ABSOLUTE);
	CreateShotA(0,x,y,delay);
	SetShotDataA(0,0,speed,angle,0,0,0,graphic);
	while(reflect>=1){
		while(angle<0){angle+=360;}
		if(angle>=360){angle%=360;}
		let angleLU=atan2(y-GetClipMinY,x-GetClipMinX)+180;
		let angleRU=atan2(y-GetClipMinY,x-GetClipMaxX)+180;
		let angleLD=atan2(y-GetClipMaxY,x-GetClipMinX)+180;
		let angleRD=atan2(y-GetClipMaxY,x-GetClipMaxX)+180;
		if(angleRU==0){angleRU=360;}
		if(angleRD==360){angleRD=0;}
		let rLength=0;
		let rFrame=0;
		let rx=0;
		let ry=0;
		let rAngle=0;
		let rEdge=0;
		if(angle>=angleRU||angle<angleRD){
			rLength=(GetClipMaxX-x)/cos(angle);
			rFrame=rLength/speed;
			rx=GetClipMaxX;
			ry=y+rLength*sin(angle);
			rAngle=180-angle;
			rEdge=3;
		}
		else if(angle>=angleLD&&angle<angleLU){
			rLength=(GetClipMinX-x)/cos(angle);
			rFrame=rLength/speed;
			rx=GetClipMinX;
			ry=y+rLength*sin(angle);
			rAngle=180-angle;
			rEdge=2;
		}
		else if(angle>=angleLU&&angle<angleRU){
			rLength=(GetClipMinY-y)/sin(angle);
			rFrame=rLength/speed;
			rx=x+rLength*cos(angle);
			ry=GetClipMinY;
			rAngle=-angle;
			rEdge=0;
		}
		else{
			rLength=(GetClipMaxY-y)/sin(angle);
			rFrame=rLength/speed;
			rx=x+rLength*cos(angle);
			ry=GetClipMaxY;
			rAngle=-angle;
			rEdge=1;
		}
		if(!reflectEdge[rEdge]){break;}
		x=rx;
		y=ry;
		angle=rAngle;
		totalFrame+=rFrame;
		SetShotDataA(0,totalFrame,NULL,angle,0,0,0,graphic);
		reflect--;
	}
	FireShot(0);
}


function GravityShot(
	let x,			// 発射点x座標
	let y,			// 発射点y座標
	let speed,		// 速度
	let angle,		// 角度（絶対角度）
	let gravSpeed,	// 重力加速度
	let gravAngle,	// 重力角度（絶対角度）
	let graphic,	// 画像
	let delay		// 遅延フレーム数
){                  
	let xSpeed=speed*cos(angle);
	let ySpeed=speed*sin(angle);
	let accXSpeed=gravSpeed*cos(gravAngle);
	let accYSpeed=gravSpeed*sin(gravAngle);
	let maxXSpeed=99;
	let maxYSpeed=99;
	if(accXSpeed<0){maxXSpeed=-99;}
	if(accYSpeed<0){maxYSpeed=-99;}
	CreateShot12(x,y,xSpeed,ySpeed,accXSpeed,accYSpeed,maxXSpeed,maxYSpeed,graphic,delay);
}

