<?xml version="1.0" ?>
<!DOCTYPE bulletml SYSTEM "../barrage.dtd">

<barrage>

<barrageInfo>
	<filename>cranberry-trap</filename>
	<group>Toho</group>
	<title>東方紅魔郷より禁忌「クランベリートラップ」</title>
	<description>東方紅魔郷のフランドール・スカーレットが使うスペル禁忌「クランベリートラップ」風。あまり似てません。これぐらいなら書けるだろうと思った事自体が間違っていました。</description>
	<capture>「一発目の交点くらいまで上がって、その後下がりながら避けていく。隙間があったらまた上がるって感じ。」でさけられるそうです。</capture>
</barrageInfo>

<barrageStyles>
	<!-- bulletml か lua が使えます。 -->
	<bulletLanguage name="lua" />
</barrageStyles>

<!-- CDATA とかいうのは大事なおまじないです。 -->
<lua>
<![CDATA[

-- ------------------------------------  グローバル変数
speed_ = 2
flag = {}

-- ------------------------------------  関数
--[[
function tableToStr(table) 
	str = ""
end

function strToTable(str) 
	list = {}
	chars = ""
	
	for i = 1 , string.len(str) >= i , 1 do
		c = sring.byte( str , i )
		
		if not(c == string.byte(" ")) then
			chars = chars .. c
		else
			table.insert(list ,  chars)
			chars = ""
		end
	end
	table.insert(list ,  chars)
	return list
end
]]

-- 中央に弾を撃ちます
function center( speed ) 
	px = getMaxX()/2 - getX()
	py = getMaxY()/2 - getY()
	r = math.sqrt(px * px + py * py)

	fire(px/r * speed , py/r * speed)
end

--自機に弾を撃ちます
function aimLead( speed )
	x = getPlayerX() - getX()
	y = getPlayerY() - getY()
	r = math.sqrt(x * x + y * y)

	fire(x/r * speed , y/r * speed)
end

--0 3
--1 2
function setPosition(pos)
	s = math.mod( pos,4)

	if(s == 0) then
		setPos(5 , 5)
		setSpeed(0 , speed_)
	elseif (s == 1) then
		setPos(5 , getMaxY()-5)
		setSpeed(speed_ , 0)
	elseif (s == 2) then
		setPos(getMaxX()-5 , getMaxY()-5)
		setSpeed(0 , -speed_)
	elseif (s == 3) then
		setPos(getMaxX()-5 , 5)
		setSpeed(-speed_ , 0)
	end
end

--0 1
--3 2
function setPositionBack(pos)
	s = math.mod( pos,4)

	if(s == 0) then
		setPos(5 , 5)
		setSpeed(speed_ , 0)
	elseif (s == 1) then
		setPos(getMaxX()-5 , 5)
		setSpeed(0 , speed_)
	elseif (s == 2) then
		setPos(getMaxX()-5 , getMaxY()-5)
		setSpeed(-speed_ , 0)
	elseif (s == 3) then
		setPos(5 , getMaxY()-5)
		setSpeed(0 , -speed_)
	end
end

-- ------------------------------------  弾の定義

function fixedBack(id)
	turn = getTurn()
	s = math.mod( id,4)
	
	if(turn == 0) then 
		setPosition(id)
	else
		if( math.mod( turn , 7) == 0 ) then
			center(speed_ /2)
		end
	end
end

function fixed(id)
	turn = getTurn()
	s = math.mod( id,4)
	
	if(turn == 0) then 
		setPosition(id)
	else
		if( math.mod( turn , 7) == 0 ) then
			center(speed_ /2)
		end
	end
end

function leadBack(id)
	turn = getTurn()
	s = math.mod( id,4)
	
	if(turn == 0) then 
		setPositionBack(id)
	else
		if( math.mod( turn , 7) == 0 ) then
			aimLead(speed_ /2)
		end
	end
end

function lead(id)
	turn = getTurn()
	s = math.mod( id,4)
	
	if(turn == 0) then 
		setPosition(id)
	else
		if( math.mod( turn , 7) == 0 ) then
			aimLead(speed_ /2)
		end
	end
end

-- ------------------------------------  トップ
function top()
	turn = getTurn()
	sp = getMaxX() / speed_ 
	count = 6
	
	if( turn < sp*2 ) then 
		if( math.mod( turn , sp*3) == 0 ) then
			fire(0, 0, "fixed" ,0)
			fire(0, 0, "fixed" ,2)
		elseif( math.mod( turn , sp*3) == sp * 1 ) then
			fire(0, 0, "fixed" ,1)
			fire(0, 0, "fixed" ,3)
			fire(0, 0, "leadBack" ,1)
			fire(0, 0, "leadBack" ,3)
		elseif( math.mod( turn , sp*3) == sp * 2 ) then
			fire(0, 0, "fixed" ,0)
			fire(0, 0, "fixed" ,2)
			fire(0, 0, "leadBack" ,0)
			fire(0, 0, "leadBack" ,2)
		end
	else
		if( math.mod( turn , sp*count)/sp  == 0 ) then
			fire(0, 0, "fixed" ,0)
			fire(0, 0, "fixed" ,2)
			fire(0, 0, "fixedBack" ,1)
			fire(0, 0, "fixedBack" ,3)
		elseif( math.mod( turn , sp*count)/sp  == 1 ) then
			fire(0, 0, "lead" ,0)
			fire(0, 0, "lead" ,2)
			fire(0, 0, "leadBack" ,1)
			fire(0, 0, "leadBack" ,3)
		elseif( math.mod( turn , sp*count)/sp  == 2 ) then
			fire(0, 0, "fixed" ,0)
			fire(0, 0, "fixed" ,2)
			fire(0, 0, "fixedBack" ,1)
			fire(0, 0, "fixedBack" ,3)
		elseif( math.mod( turn , sp*count)/sp  == 3 ) then
			fire(0, 0, "fixed" ,1)
			fire(0, 0, "fixed" ,3)
			fire(0, 0, "leadBack" ,1)
			fire(0, 0, "leadBack" ,3)
		elseif( math.mod( turn , sp*count)/sp  == 4 ) then
			fire(0, 0, "fixed" ,0)
			fire(0, 0, "fixed" ,2)
			fire(0, 0, "leadBack" ,0)
			fire(0, 0, "leadBack" ,2)
		elseif( math.mod( turn , sp*count)/sp  == 5 ) then
			fire(0, 0, "fixed" ,1)
			fire(0, 0, "fixed" ,3)
			fire(0, 0, "fixedBack" ,1)
			fire(0, 0, "fixedBack" ,3)
		end
	end
end

]]>
</lua>

</barrage>