task UseCard
{
loop
{
if(CoolTime>0){CoolTime-=1+PennySaved*0.5;}
if(CoolTime<0 && OnEvent==false){CoolTime=0;}
if(GetKeyState(VK_SKIP)==KEY_PUSH && length(CardDeck)>0 && CoolTime==0 && !OnMissed && MissTime==0 && IsForbidBomb==false && OnEvent==false && !OnBomb)
{
		alternative(CardDeck[0])
		case(0)
		{//쌂
			if(CardPower>=1000)
			{
			SpiritualStrike;
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(1)
		{//}WbN|[V
			if(CardPower>=1000)
			{
			LevelDraw(ItemCollectLevel);
			ItemCollectLevel+=1;
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(2)
		{//XgbvEHb`
			if(CardPower>=1000)
			{
			StopWatch;
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(3)
		{//O
			if(CardPower>=1000)
			{
			Hakurouken;
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(4)
		{//gl`
			if(CardPower>=1000)
			{
			LevelDraw(BorderLevel);
			BorderLevel+=1;
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(5)
		{//O[
			if(CardPower>=1000)
			{
			LevelDraw(GrazeLevel);
			GrazeLevel+=1;
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(6)
		{//P
			if(CardPower>=1000)
			{
			CustomParasol;
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(7)
		{//l
			if(CardPower>=1000)
			{
			SoulTorch;
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(8)
		{//
			if(CardPower>=1000 && length(CardDeck)<=5)
			{
			LeftHandedFoldingFan;
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(9)
		{//ɐZ
			if(CardPower>=1000)
			{
			IbukiGourd;
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(10)
		{//Vc
			if(CardPower>=1000)
			{
			LevelDraw(SpeedLevel);
			SpeedLevel+=1;
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(11)
		{//I
			if(CardPower>=1000)
			{
			SpellBreakingDrug;
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(12)
		{//z̑K

		}
		case(13)
		{//̉H
			if(CardPower>=1000)
			{
			DivineRaimentoftheDragonFish;
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(14)
		{//ž
			if(CardPower>=1000)
			{
			LevelDraw(CardEffectLevel);
			CardEffectLevel+=1;
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(15)
		{//aC
			if(CardPower>=1000)
			{
			LifeRecoverLevel+=1;
			DeleteShotNumdraw(LifeRecoverLevel,GetPlayerX,GetPlayerY-40,1);
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(16)
		{//ⓀJG
			if(CardPower>=1000)
			{
			FrozenFrog;
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(17)
		{//
			if(CardPower>=1000)
			{
			DragonStar;
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(18)
		{//_
			if(CardPower>=1000)
			{
			LevelDraw(ShotLevel);
			ShotLevel+=1;
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(19)
		{//O̓VK
			if(CardPower>=1000)
			{
			LevelDraw(HeavenlyDropsCount);
			ThreeHeavenlyDrops;
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(20)
		{//i}Y̑nk
			if(CardPower>=1000)
			{
			UseSpellCard("CatfishsGreatEarthquake", CardEffectLevel);
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(200)
		{//}X^[Xp[N
			if(CardPower>=3000)
			{
			SpeedChange(345,0.4);
			UseSpellCard("MasterSpark", 0);
			loop(3)
			{
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			}
			CoolTime=600;
			}
		}
		case(202)
		{//t@CiXp[N
			if(CardPower>=5000)
			{
			SpeedChange(465,0.2);
			UseSpellCard("FinalSpark", 0);
			loop(5)
			{
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			}
			CoolTime=600;
			}
		}
		case(203)
		{//hSeI
			if(CardPower>=5000)
			{
			UseSpellCard("DragonMeteor", 0);
			loop(5)
			{
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			}
			CoolTime=600;
			}
		}
		case(204)
		{//mfBNVi[U[
			if(CardPower>=4000)
			{
			SpeedChange(330,0.5);
			UseSpellCard("NonDirectionalLaser", 0);
			loop(4)
			{
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			}
			CoolTime=600;
			}
		}
		case(205)
		{//X^[_Xg@G
			if(CardPower>=2000)
			{
			UseSpellCard("StardustReverie", 0);
			loop(2)
			{
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			}
			CoolTime=600;
			}
		}
		case(206)
		{//GXP[vxVeB
			if(CardPower>=3000)
			{
			UseSpellCard("EscapeVelocity", 0);
			loop(3)
			{
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			}
			CoolTime=600;
			}
		}
		case(207)
		{//uCWOX^[
			if(CardPower>=5000)
			{
				task Blazingtask
				{
					OnBlazingStar=true;
					SpeedChange(420,0);
					wait(420);
					SpeedChange(60,2);
					OnBlazingStar=false;
				}
			Blazingtask;
			UseSpellCard("BlazingStar", 0);
			loop(5)
			{
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			}
			CoolTime=600;
			}
		}
		case(208)
		{//eIjbNV[
			if(CardPower>=1000)
			{
			UseSpellCard("MeteornikShower", 0);
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			CoolTime=600;
			}
		}
		case(209)
		{//OreBr[g
			if(CardPower>=3000)
			{
			UseSpellCard("GravityBeat", 0);
			loop(3)
			{
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			}
			CoolTime=600;
			}
		}
		case(211)
		{//~lXXgCN
			if(CardPower>=2000)
			{
			UseSpellCard("LuminousStrike", 0);
			loop(2)
			{
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			}
			CoolTime=600;
			}
		}
		case(212)
		{//A[XCgC
			if(CardPower>=3000)
			{
			UseSpellCard("EarthLightLay", 0);
			loop(3)
			{
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			}
			CoolTime=600;
			}
		}
		case(214)
		{//fB[vGRWJ{
			if(CardPower>=4000)
			{
			UseSpellCard("DeepEcologicalBomb", 0);
			loop(4)
			{
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			}
			CoolTime=600;
			}
		}
		case(215)
		{//I[[YT
			if(CardPower>=2000)
			{
			OrrerysSun;
			loop(2)
			{
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			}
			CoolTime=600;
			}
		}
		case(219)
		{//₷}X^[Xp[N
			if(CardPower>=5000)
			{
			SpeedChange(525,0);
			UseSpellCard("SureFireMasterSpark", 0);
			loop(5)
			{
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			}
			CoolTime=600;
			}
		}
}
else if(GetKeyState(VK_SKIP)==KEY_PUSH && length(CardDeck)>0 && CardDeck[0]==215 && BitShotFlag==false && !OnMissed && MissTime==0 && IsForbidBomb==false && OnEvent==false && !OnBomb)
{
			if(CardPower>=2000)
			{
			OrrerysSun;
			loop(2)
			{
			CardPower-=1000;
			CardDeck=erase(CardDeck,0);
			}
			CoolTime=600;
			}
}

yield;
}
}



task SpiritualStrike
{
		let InTime=90*(1+CardEffectLevel*0.25);
		let SSTime=150*(1+CardEffectLevel*0.25);

		SetPlayerInvincibility(InTime);
		let Alpha=255;

		let obj0 = Obj_Create(OBJ_EFFECT);

		ObjEffect_SetTexture(obj0,csd~"img\Onmyou.png");

		ObjEffect_SetPrimitiveType(obj0, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj0, ADD); 
		ObjEffect_CreateVertex(obj0, 4);
		ObjEffect_SetVertexXY(obj0, 0, -120, -120);
		ObjEffect_SetVertexXY(obj0, 1, 120,  -120);
		ObjEffect_SetVertexXY(obj0, 2, 120, 120);
		ObjEffect_SetVertexXY(obj0, 3,  -120,  120);
		
		ObjEffect_SetVertexUV(obj0, 0,  0,  0);
		ObjEffect_SetVertexUV(obj0, 1,  128, 0);
		ObjEffect_SetVertexUV(obj0, 2, 128,  128);
		ObjEffect_SetVertexUV(obj0, 3, 0, 128);

		ascent(i in 0..4)
		{
			ObjEffect_SetVertexColor(obj0, i, Alpha, 255, 255, 255);
		}
		ObjEffect_SetLayer(obj0,3);

		let x=GetPlayerX;
		let y=GetPlayerY;
		Obj_SetPosition(obj0,x,y);

		let sc=0;
		let Zangle=0;
		loop(SSTime)
		{
			if(OnMissed && !OnBorderOfLife){break;}
			DeleteEnemyShotToItemInCircle(SHOT,x,y,120*sc);
			ObjEffect_SetAngle(obj0,0,0,Zangle);
			ObjEffect_SetScale(obj0, sc,sc);
			if(sc<1)
			{
			sc+=1/30;
			}
			Zangle+=6;
			yield;
		}
		loop(30)
		{
			DeleteEnemyShotToItemInCircle(SHOT,x,y,120*sc);
			ObjEffect_SetAngle(obj0,0,0,Zangle);
			ObjEffect_SetScale(obj0, sc,sc);
			ascent(i in 0..4)
			{
				ObjEffect_SetVertexColor(obj0, i, Alpha, 255, 255, 255);
			}
			sc-=1/30;
			Alpha-=255/30;
			Zangle+=6;
			yield;
		}
		Obj_Delete(obj0);
}

task StopWatch
{
	let Time=180*(1+CardEffectLevel*0.25);
	let count=0;
	if(StopWatchEffect==false)
	{
		StopWatchEffect=true;
		loop
		{
		if(OnMissed && !OnBorderOfLife){break;}
		Slow(1);
		if(count>=Time){break;}
		count+=1;
		if(DoubleStopWatch)
		{
			count-=180*(1+CardEffectLevel*0.25);
			DoubleStopWatch=false;
		}
		yield;
		}
		Slow(0);
	}
	else
	{
		DoubleStopWatch=true;
	}

}

task Hakurouken
{
	let Time=180*(1+CardEffectLevel*0.25);
	SetPlayerInvincibility(Time);
	let count=0;
	if(HakurouEffect==false)
	{
		HakurouEffect=true;
		loop
		{
			SetPlayerInvincibility(Time-count);
			if(count>=Time){break;}
			count+=1;
			if(DoubleHakurouEffect)
			{
				count-=180*(1+CardEffectLevel*0.25);
				DoubleHakurouEffect=false;
			}
			SetSpeed(10.0,5.0);
			yield;
		}
	
		HakurouEffect=false;
	}
	else
	{
		DoubleHakurouEffect=true;
	}
}

task CustomParasol
{
	let Radius=5*(1+CardEffectLevel*0.25);
	HigasaEffect=true;
	loop(600)
	{
		if(OnMissed && !OnBorderOfLife){break;}
		ascent(i in 0..4)
		{
		DeleteEnemyShotToItemInCircle(SHOT,opX[i],opY[i],Radius);
		}
		yield;
	}
	HigasaEffect=false;
}

task LeftHandedFoldingFan
{//fbL4ȉ̎TufbL5ɂȂ܂ŕ[B
	yield;
	let Time=3+CardEffectLevel*0.5;
	loop(floor(Time))
	{
	if(length(CardDeck)<5)
	{
		if(length(SubCardDeck)>0)
		{
		CardDeck=CardDeck~[SubCardDeck[0]];
		SubCardDeck=erase(SubCardDeck,0);
		}
	}
	}
}

task SoulTorch
{
let Time=3+CardEffectLevel*0.5;
loop(floor(Time))
{
SoulTorchShot;
}
}

task SoulTorchShot
{
		let Alpha=255;

		let obj0 = Obj_Create(OBJ_EFFECT);

		ObjEffect_SetTexture(obj0,csd~"img\Onmyou.png");

		ObjEffect_SetPrimitiveType(obj0, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj0, ADD); 
		ObjEffect_CreateVertex(obj0, 4);
		ObjEffect_SetVertexXY(obj0, 0, -20, -20);
		ObjEffect_SetVertexXY(obj0, 1, 20,  -20);
		ObjEffect_SetVertexXY(obj0, 2, 20,20);
		ObjEffect_SetVertexXY(obj0, 3,  -20,  20);
		
		ObjEffect_SetVertexUV(obj0, 0,  0,  0);
		ObjEffect_SetVertexUV(obj0, 1,  128, 0);
		ObjEffect_SetVertexUV(obj0, 2, 128,  128);
		ObjEffect_SetVertexUV(obj0, 3, 0, 128);

		ascent(i in 0..4)
		{
			ObjEffect_SetVertexColor(obj0, i, Alpha, 255, 255, 255);
		}
		ObjEffect_SetLayer(obj0,3);

		let x=GetPlayerX;
		let y=GetPlayerY;
		Obj_SetPosition(obj0,x,y);

		let Zangle=0;
		let Speed=rand(2,5);
		let SpeedMax=Speed;
		let angle=rand(0,360);

		DamageShot;

		loop(30)
		{
			Obj_SetSpeed(obj0,Speed);
			Obj_SetAngle(obj0,angle);
			Speed-=SpeedMax/30;
			ObjEffect_SetAngle(obj0,0,0,Zangle);
			Zangle+=6;
			yield;
		}
		let enemy;
		if(GetEnemyNum!=0)
		{
		let enemy=rand(EnumEnemyBegin,EnumEnemyEnd);
		let enemyID = EnumEnemyGetID(enemy);
		let enemyX=GetEnemyInfo(enemyID,ENEMY_X);
		let enemyY=GetEnemyInfo(enemyID,ENEMY_Y);
		angle=atan2(enemyY-Obj_GetY(obj0),enemyX-Obj_GetX(obj0));
		}
		else
		{
			angle=270;
		}
		loop(180)
		{
			Obj_SetSpeed(obj0,Speed);
			Obj_SetAngle(obj0,angle);
			Speed+=0.1;
			ObjEffect_SetAngle(obj0,0,0,Zangle);
			Zangle+=6;
			yield;
		}
		Obj_Delete(obj0);

	task DamageShot
	{
	let Damage=0.5;
	let obj = Obj_Create(OBJ_SHOT);
	Obj_SetPosition(obj,Obj_GetX(obj0),Obj_GetY(obj0));
	ObjShot_SetDamage(obj,Damage);
	ObjShot_SetPenetration(obj,10000);
	ObjShot_SetGraphic(obj,10);
	Obj_SetAlpha(obj,0);
	Obj_SetAutoDelete(obj,false);
	loop(30)
	{
		Obj_SetPosition(obj,Obj_GetX(obj0),Obj_GetY(obj0));
		yield;
	}
	while(!Obj_BeDeleted(obj0))
	{
		Damage+=0.125;
		ObjShot_SetDamage(obj,Damage);
		Obj_SetPosition(obj,Obj_GetX(obj0),Obj_GetY(obj0));
		yield;
	}
	Obj_Delete(obj);
	}

}

task IbukiGourd
{
let Time=60*(1+CardEffectLevel*0.125);
loop(floor(Time))
{
	if(OnMissed && !OnBorderOfLife){break;}
	CardPower+=2000/60;
	yield;
}
}

task SpellBreakingDrug
{

let C=2^0.5/2;
let SSTime=180*(1+CardEffectLevel*0.25);
let count=0;
if(PhantomFlag==false)
{
	PhantomFlag=true;
	PhantomX=GetPlayerX;
	PhantomY=GetPlayerY;
	RealX=GetPlayerX;
	RealY=GetPlayerY;
	let HiSpeed=GetPlayerInfo(PLAYER_SPEED_HIGH);
	let LowSpeed=GetPlayerInfo(PLAYER_SPEED_LOW);
	loop
	{
		if(count>=SSTime){break;}
		count+=1;
		if(DoublePhantomFlag)
		{
			count-=180*(1+CardEffectLevel*0.25);
			DoublePhantomFlag=false;
		}
		if(OnMissed && !OnBorderOfLife){break;}
		SetX(PhantomX);
		SetY(PhantomY);
		if(GetKeyState(VK_LEFT)==KEY_PUSH || GetKeyState(VK_LEFT)==KEY_HOLD)
		{
			if(GetKeyState(VK_UP)==KEY_PUSH || GetKeyState(VK_UP)==KEY_HOLD)
			{
				if(GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD)
				{
					RealX-=LowSpeed*C;
					RealY-=LowSpeed*C;
				}
				else
				{
					RealX-=HiSpeed*C;
					RealY-=HiSpeed*C;
				}
			}
			else if(GetKeyState(VK_DOWN)==KEY_PUSH || GetKeyState(VK_DOWN)==KEY_HOLD)
			{
				if(GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD)
				{
					RealX-=LowSpeed*C;
					RealY+=LowSpeed*C;
				}
				else
				{
					RealX-=HiSpeed*C;
					RealY+=HiSpeed*C;
				}
			}
			else
			{
				if(GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD)
				{
					RealX-=LowSpeed;
				}
				else
				{
					RealX-=HiSpeed;
				}
			}
		}
		else if(GetKeyState(VK_RIGHT)==KEY_PUSH || GetKeyState(VK_RIGHT)==KEY_HOLD)
		{
			if(GetKeyState(VK_UP)==KEY_PUSH || GetKeyState(VK_UP)==KEY_HOLD)
			{
				if(GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD)
				{
					RealX+=LowSpeed*C;
					RealY-=LowSpeed*C;
				}
				else
				{
					RealX+=HiSpeed*C;
					RealY-=HiSpeed*C;
				}
			}
			else if(GetKeyState(VK_DOWN)==KEY_PUSH || GetKeyState(VK_DOWN)==KEY_HOLD)
			{
				if(GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD)
				{
					RealX+=LowSpeed*C;
					RealY+=LowSpeed*C;
				}
				else
				{
					RealX+=HiSpeed*C;
					RealY+=HiSpeed*C;
				}
			}
			else
			{
				if(GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD)
				{
					RealX+=LowSpeed;
				}
				else
				{
					RealX+=HiSpeed;
				}
			}
		}
		else if(GetKeyState(VK_DOWN)==KEY_PUSH || GetKeyState(VK_DOWN)==KEY_HOLD)
		{
			if(GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD)
			{
				RealY+=LowSpeed;
			}
			else
			{
				RealY+=HiSpeed;
			}
		}
		else if(GetKeyState(VK_UP)==KEY_PUSH || GetKeyState(VK_UP)==KEY_HOLD)
		{
			if(GetKeyState(VK_SLOWMOVE)==KEY_PUSH || GetKeyState(VK_SLOWMOVE)==KEY_HOLD)
			{
				RealY-=LowSpeed;
			}
			else
			{
				RealY-=HiSpeed;
			}
		}
		if(RealX<44){RealX=44;}
		if(RealX>404){RealX=404;}
		if(RealY<32){RealY=32;}
		if(RealY>448){RealY=448;}
		yield;
	}
	SetX(RealX);
	SetY(RealY);
	PhantomFlag=false;
}
else
{
	DoublePhantomFlag=true;
}

}

task DivineRaimentoftheDragonFish
{

let SSTime=600*(1+CardEffectLevel*0.125);

if(AutoBomb){DoubleAutoBomb=true;}
else
{
DRtask(SSTime);
}

	task DRtask(time)
	{
		AutoBomb=true;
		let Alpha=50;

		let obj0 = Obj_Create(OBJ_EFFECT);

		ObjEffect_SetTexture(obj0,csd~"img\StarEffect.png");

		ObjEffect_SetPrimitiveType(obj0, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj0, ADD); 
		ObjEffect_CreateVertex(obj0, 4);
		ObjEffect_SetVertexXY(obj0, 0, -60, -60);
		ObjEffect_SetVertexXY(obj0, 1, 60,  -60);
		ObjEffect_SetVertexXY(obj0, 2, 60, 60);
		ObjEffect_SetVertexXY(obj0, 3,  -60,  60);
		
		ObjEffect_SetVertexUV(obj0, 0,  0,  0);
		ObjEffect_SetVertexUV(obj0, 1,  128, 0);
		ObjEffect_SetVertexUV(obj0, 2, 128,  128);
		ObjEffect_SetVertexUV(obj0, 3, 0, 128);

		ascent(i in 0..4)
		{
			ObjEffect_SetVertexColor(obj0, i, Alpha, 255, 255, 255);
		}
		ObjEffect_SetLayer(obj0,2);

		let x=GetPlayerX;
		let y=GetPlayerY;

		let sc=0;
		let Zangle=0;
		let count=0;

		loop
		{
			Obj_SetPosition(obj0,GetPlayerX,GetPlayerY);
			if(OnMissed && !OnBorderOfLife){break;}
			ObjEffect_SetAngle(obj0,0,0,Zangle);
			ObjEffect_SetScale(obj0, sc,sc);
			if(sc<1 && count<time-60)
			{
			sc+=1/30;
			}
			if(count>=time-60)
			{
			sc-=1/60;
			}
			Zangle+=3;
			count+=1;
			if(count>=time){break;}
			if(DoubleAutoBomb){count-=600*(1+CardEffectLevel*0.125); DoubleAutoBomb=false;}
			yield;
		}
		Obj_Delete(obj0);
		AutoBomb=false;
	}

}

task SwordofScarletPerception
{

}

task FrozenFrog
{
		let InTime=150*(1+CardEffectLevel*0.25);
		let SSTime=240*(1+CardEffectLevel*0.25);
		SpeedChange(SSTime+30,0.5);
		SetPlayerInvincibility(InTime);
		let Alpha=255;

		let obj0 = Obj_Create(OBJ_EFFECT);

		ObjEffect_SetTexture(obj0,csd~"img\Ice.png");

		ObjEffect_SetPrimitiveType(obj0, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj0, ADD); 
		ObjEffect_CreateVertex(obj0, 4);
		ObjEffect_SetVertexXY(obj0, 0, -120, -120);
		ObjEffect_SetVertexXY(obj0, 1, 120,  -120);
		ObjEffect_SetVertexXY(obj0, 2, 120, 120);
		ObjEffect_SetVertexXY(obj0, 3,  -120,  120);

		ObjEffect_SetVertexUV(obj0, 0,  0,  0);
		ObjEffect_SetVertexUV(obj0, 1,  512, 0);
		ObjEffect_SetVertexUV(obj0, 2, 512,  512);
		ObjEffect_SetVertexUV(obj0, 3, 0, 512);

		ascent(i in 0..4)
		{
			ObjEffect_SetVertexColor(obj0, i, Alpha, 255, 255, 255);
		}
		ObjEffect_SetLayer(obj0,3);

		let x=GetPlayerX;
		let y=GetPlayerY;
		Obj_SetPosition(obj0,x,y);

		let sc=0;
		let Zangle=0;
		loop(SSTime)
		{
			if(OnMissed && !OnBorderOfLife){break;}
			DeleteEnemyShotToItemInCircle(SHOT,x,y,120*sc);
			ObjEffect_SetAngle(obj0,0,0,Zangle);
			ObjEffect_SetScale(obj0, sc,sc);
			if(sc<1.25)
			{
			sc+=1/30;
			}
			Zangle+=6;
			yield;
		}
		loop(30)
		{
			DeleteEnemyShotToItemInCircle(SHOT,x,y,120*sc);
			ObjEffect_SetAngle(obj0,0,0,Zangle);
			ObjEffect_SetScale(obj0, sc,sc);
			ascent(i in 0..4)
			{
				ObjEffect_SetVertexColor(obj0, i, Alpha, 255, 255, 255);
			}
			sc-=1.25/30;
			Alpha-=255/30;
			Zangle+=6;
			yield;
		}
		Obj_Delete(obj0);
}


task DragonStar
{
	if(DragonStarEffect==true)
	{
		DoubleDragonStarEffect=true;
	}
	else
	{
		DragonStarEffect=true;
		let Alpha=255;

		let obj0 = Obj_Create(OBJ_EFFECT);

		ObjEffect_SetTexture(obj0,csd~"img\Onmyou.png");

		ObjEffect_SetPrimitiveType(obj0, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj0, ADD); 
		ObjEffect_CreateVertex(obj0, 4);
		ObjEffect_SetVertexXY(obj0, 0, -60, -60);
		ObjEffect_SetVertexXY(obj0, 1, 60,  -60);
		ObjEffect_SetVertexXY(obj0, 2, 60,60);
		ObjEffect_SetVertexXY(obj0, 3,  -60,  60);
		
		ObjEffect_SetVertexUV(obj0, 0,  0,  0);
		ObjEffect_SetVertexUV(obj0, 1,  128, 0);
		ObjEffect_SetVertexUV(obj0, 2, 128,  128);
		ObjEffect_SetVertexUV(obj0, 3, 0, 128);

		ascent(i in 0..4)
		{
			ObjEffect_SetVertexColor(obj0, i, Alpha, 255, 255, 255);
		}
		ObjEffect_SetLayer(obj0,3);

		let x=GetPlayerX;
		let y=GetPlayerY;
		Obj_SetPosition(obj0,x,y);

		let Zangle=0;
		let Speed=rand(2,5);
		let SpeedMax=Speed;
		let angle=rand(0,360);

		DamageShot;
		let sc=0;
		let SSTime=210*(1+CardEffectLevel*0.25);
		let count=0;
		loop
		{
			if(OnMissed && !OnBorderOfLife){break;}
			ObjEffect_SetScale(obj0, sc,sc);
			if(sc<1 && count<SSTime-30)
			{
			sc+=1/30;
			}
			if(count>=SSTime-30)
			{
			sc-=1/30;
			}
			Obj_SetPosition(obj0,GetPlayerX,GetPlayerY);
			ObjEffect_SetAngle(obj0,0,0,Zangle);
			Zangle+=6;
			if(count>=SSTime){break;}
			count+=1;
			if(DoubleDragonStarEffect)
			{
				count-=210*(1+CardEffectLevel*0.25);
				DoubleDragonStarEffect=false;
			}
			yield;
		}
		Obj_Delete(obj0);

	task DamageShot
	{
	let Damage=3.5;
	let obj = Obj_Create(OBJ_SHOT);
	Obj_SetPosition(obj,Obj_GetX(obj0),Obj_GetY(obj0));
	ObjShot_SetDamage(obj,Damage);
	ObjShot_SetPenetration(obj,10000);
	ObjShot_SetGraphic(obj,12);
	Obj_SetAlpha(obj,0);
	Obj_SetAutoDelete(obj,false);

	while(!Obj_BeDeleted(obj0))
	{
		if(GetKeyState(VK_SHOT)==KEY_PUSH || GetKeyState(VK_SHOT)==KEY_HOLD)
		{
			ObjShot_SetDamage(obj,Damage);
		}
		else
		{
			ObjShot_SetDamage(obj,0);
		}
		Obj_SetPosition(obj,Obj_GetX(obj0),Obj_GetY(obj0));
		yield;
	}
	Obj_Delete(obj);
	}

	}
}

task ThreeHeavenlyDrops
{
HeavenlyDropsCount+=1;
if(HeavenlyDropsCount==3)
{
	SetPlayerInvincibility(480);
	let count=0;
	loop(480)
	{
		if(HeavenlyDropsCount==4)
		{
			SetPlayerInvincibility(480-count+600);
		}
		count+=1;
		yield;
	}
}

}

task CatfishsGreatEarthquake
{

}

task Reload
{

}

task DeckChange
{

}

task OrrerysSun
{
	if(!OrrerysSunEffect)
	{
	ascent(i in 0..4)
	{
	OrrerysBit(i*90);
	}
	}
	else
	{
		BitShotFlag=true;
	}

task OrrerysBit(angle)
{
		let Alpha=255;

		let obj0 = Obj_Create(OBJ_EFFECT);

		ObjEffect_SetTexture(obj0,csd~"img\Onmyou.png");

		ObjEffect_SetPrimitiveType(obj0, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj0, ADD); 
		ObjEffect_CreateVertex(obj0, 4);
		ObjEffect_SetVertexXY(obj0, 0, -16, -16);
		ObjEffect_SetVertexXY(obj0, 1, 16,  -16);
		ObjEffect_SetVertexXY(obj0, 2, 16,16);
		ObjEffect_SetVertexXY(obj0, 3,  -16,  16);
		
		ObjEffect_SetVertexUV(obj0, 0,  0,  0);
		ObjEffect_SetVertexUV(obj0, 1,  128, 0);
		ObjEffect_SetVertexUV(obj0, 2, 128,  128);
		ObjEffect_SetVertexUV(obj0, 3, 0, 128);

		ascent(i in 0..4)
		{
			ObjEffect_SetVertexColor(obj0, i, Alpha, 255, 255, 255);
		}
		ObjEffect_SetLayer(obj0,3);

		let x=GetPlayerX;
		let y=GetPlayerY;
		Obj_SetPosition(obj0,x,y);

		let Radius=0;
		let Zangle=0;
		let Speed=rand(2,5);
		let SpeedMax=Speed;

		DamageShot;
		
		OrrerysSunEffect=true;
		x=0;
		y=0;
		let yspeed=-6;
		let count=0;
		loop
		{
		loop
		{
			Obj_SetPosition(obj0,GetPlayerX+Radius*cos(angle),GetPlayerY+Radius*sin(angle));
			ObjEffect_SetAngle(obj0,0,0,Zangle);
			if(Radius<75)
			{
				Radius+=75/30;
			}
			angle+=4.5;
			Zangle+=6;
			if(BitShotFlag){break;}
			if(count>=600){break;}
			count+=1;
			yield;
		}
		if(BitShotFlag)
		{
		x=GetPlayerX;
		y=GetPlayerY;
		loop(120)
		{
			BitBlur(Obj_GetX(obj0),Obj_GetY(obj0),Zangle);
			Obj_SetPosition(obj0,x+Radius*cos(angle),y+Radius*sin(angle));
			ObjEffect_SetAngle(obj0,0,0,Zangle);
			angle+=6;
			Zangle+=7.5;
			if(y>120)
			{
			y+=yspeed;
			}
			yspeed+=6/120;
			yield;
		}
		loop(120)
		{
			BitBlur(Obj_GetX(obj0),Obj_GetY(obj0),Zangle);
			Obj_SetPosition(obj0,x+Radius*cos(angle),y+Radius*sin(angle));
			ObjEffect_SetAngle(obj0,0,0,Zangle);
			angle+=6;
			Zangle+=7.5;
			y+=yspeed;
		//	yspeed+=6/120;
			yield;
		}
		loop(120)
		{
			BitBlur(Obj_GetX(obj0),Obj_GetY(obj0),Zangle);
			Obj_SetPosition(obj0,x+Radius*cos(angle),y+Radius*sin(angle));
			ObjEffect_SetAngle(obj0,0,0,Zangle);
			angle+=6;
			Zangle+=7.5;
			x+=yspeed*cos(atan2(GetPlayerY-y,GetPlayerX-x));
			y+=yspeed*sin(atan2(GetPlayerY-y,GetPlayerX-x));
			yspeed+=8/120;
			yield;
		}
		}
		else{break;}
		yspeed=-6;
		BitShotFlag=false;
		count-=120;
		}

		OrrerysSunEffect=false;
		loop(30)
		{
		ascent(i in 0..4)
		{
			ObjEffect_SetVertexColor(obj0, i, Alpha, 255, 255, 255);
		}
			Obj_SetPosition(obj0,GetPlayerX+Radius*cos(angle),GetPlayerY+Radius*sin(angle));
			ObjEffect_SetAngle(obj0,0,0,Zangle);
			Radius-=75/30;
			angle+=4.5;
			Zangle+=6;
			Alpha-=255/30;
			yield;
		}
		Obj_Delete(obj0);

	task DamageShot
	{
	let Damage=3.5;
	let obj = Obj_Create(OBJ_SHOT);
	Obj_SetPosition(obj,Obj_GetX(obj0),Obj_GetY(obj0));
	ObjShot_SetDamage(obj,Damage);
	ObjShot_SetPenetration(obj,10000);
	ObjShot_SetGraphic(obj,11);
	Obj_SetAlpha(obj,0);
	Obj_SetAutoDelete(obj,false);

	while(!Obj_BeDeleted(obj0))
	{	
		if(BitShotFlag)
		{
		DeleteEnemyShotToItemInCircle(SHOT,Obj_GetX(obj),Obj_GetY(obj),16);
		ObjShot_SetDamage(obj,Damage*2.0);	
		}
		else
		{
		ObjShot_SetDamage(obj,Damage);	
		}
		Obj_SetPosition(obj,Obj_GetX(obj0),Obj_GetY(obj0));
		yield;
	}
	Obj_Delete(obj);
	}
}

}

task BitBlur(x,y,Zangle)
{
		let Alpha=255;

		let obj0 = Obj_Create(OBJ_EFFECT);

		ObjEffect_SetTexture(obj0,csd~"img\Onmyou.png");

		ObjEffect_SetPrimitiveType(obj0, PRIMITIVE_TRIANGLEFAN);
		ObjEffect_SetRenderState(obj0, ADD); 
		ObjEffect_CreateVertex(obj0, 4);
		ObjEffect_SetVertexXY(obj0, 0, -16, -16);
		ObjEffect_SetVertexXY(obj0, 1, 16,  -16);
		ObjEffect_SetVertexXY(obj0, 2, 16,16);
		ObjEffect_SetVertexXY(obj0, 3,  -16,  16);
		
		ObjEffect_SetVertexUV(obj0, 0,  0,  0);
		ObjEffect_SetVertexUV(obj0, 1,  128, 0);
		ObjEffect_SetVertexUV(obj0, 2, 128,  128);
		ObjEffect_SetVertexUV(obj0, 3, 0, 128);

		ascent(i in 0..4)
		{
			ObjEffect_SetVertexColor(obj0, i, Alpha, 255, 255, 255);
		}
		ObjEffect_SetLayer(obj0,3);

		Obj_SetPosition(obj0,x,y);

		//let sc=0;
		//ObjEffect_SetScale(obj0, sc,sc);
		ObjEffect_SetAngle(obj0,0,0,Zangle);
		loop(10)
		{
			ascent(i in 0..4)
			{
				ObjEffect_SetVertexColor(obj0, i, Alpha, 255, 255, 255);
			}
			Alpha-=255/10;
			yield;
		}
		Obj_Delete(obj0);
}