----##### th105_ai_lib_20090203WaitExの代わり(追加変更点は最下部) #####
--damaged , waitEx , waitEx2 , waitTachi , waitMotion

--機能：自分が被ダメ中かどうか判定する
--		function my_damaged()
--
--機能：指定フレームだけyieldを繰り返す
--		function waitEx(waitCount, exception, ...)
--
--機能：waitExを実行し、中断されたらキーリセットする
--		function waitEx2(waitCount, exception, ...)
--
--機能：キーリセットし、立ち状態になるまでyieldを繰り返す
--		function waitTachi()
--
--機能：引数のモーションになるまでyieldを繰り返す
--		function waitMotion(motion)



--定数
MOTION_TACHI = 0	--立ち

--機能：自分が被ダメ中かどうか判定する
function my_damaged()
	return my_act>=50 and my_act<200
end

--機能：指定フレームだけyieldを繰り返す
--戻り値：引数で与えられた関数exceptionの戻り値
--exception(...)の戻り値が真(true)の場合、その時点でwaitを中断して偽(false)を返す
--中断せずに最後までwaitした場合、真(true)を返す
function waitEx(waitCount, exception, ...)
	local excCode = 0	--引数で与えられた関数exceptionの戻り値を格納
	local counter		--yield繰り返し用カウンタ
	
	for counter = 1, waitCount do
		if exception and exception(...) then
			return false
		end
		yield()
	end
	return true
end

--機能：waitExを実行し、中断されたらキーリセットする
--戻り値：実行したwaitExの戻り値
function waitEx2(waitCount, exception, ...)
	--完遂……そのまま真を返す
	if waitEx(waitCount, exception, ...) then
		return true;
	--中断……キーリセットしてから偽を返す
	else
		key_reset();
		yield();
		return false;
	end
end

--機能：キーリセットし、立ち状態になるまでyieldを繰り返す
function waitTachi()
	--とりあえずキーリセットしてから
	key_reset();
	while my_act ~= MOTION_TACHI do
		--被ダメしたら強制終了
		if my_damaged() then
			return false;
		end
		yield()
	end
	--完了
	return true;
end

--機能：引数のモーションになるまでyieldを繰り返す
function waitMotion(motion,_times)
	--_timesで最大ループ回数を指定できる。指定しない場合は適当な値で。
	--ループ回数を制限したのは安全のため。じゃないと一生ループとか普通に有り得る。
	local times=_times or 60
	for i=1,times do
		--指定したモーションになったら完了
		if my_act == motion then
			return true
		--被ダメしたら強制終了
		elseif my_damaged() then
			return false
		end
		yield();
	end
	--最大ループ回数を超えても指定したモーションにならない
	return waitTachi();	--立ち状態(又は被ダメ)になるまで待機
end



----##### 追加変更点 #####
----[変更]
----waitEX
----・関数exceptionに任意の引数を渡せるよう変更
----・戻り値をtrue(完遂)又はfalse(中断)に変更
----waitTachi
----・実行前にキーリセットするよう変更
----・実行中に被ダメ等があったらすぐに中断するよう変更
----・戻り値をtrue(完遂)又はfalse(中断)に変更
----[追加]
----waitEX2
----・waitExとほぼ同様
----・中断した場合にキーリセットを行うところが異なる
----waitMotion
----・waitTachiの任意モーション版
----・waitTachiと異なり、開始前のキーリセットは行わない
----	↑そのためwaitTachi()とwaitMotion(0)は、キーリセットするかしないかで異なる
----・一定時間が経過するとwaitTachi()に切り替わる
