
-- 外部関数：拡張アニメーション
function ExAnimation()

	-- 関数：定期型アニメーションの末尾文字を決定
	function TeikiAnimation(Bangou,Moji,Type,Kaishi,Kankaku,Jikan,Chukan,FolderPass)

		Matsubi = "" -- 末尾を初期化

		-- 浮遊と同期指定で、浮遊してない場合は、アニメーションなし
		if Jikan == 0 or Kankaku == 0 then
			if BaseFuyuudo <= 0 then return Matsubi end 
		end

		-- 前後判別文字の決定
		Zengo = ""
		FilePass = FolderPass..string.format("%02d",Bangou)..Moji.."01.png"
		if os.rename(FilePass,FilePass) == nil then
			for Count = 1,5 do
				FilePass = FolderPass..string.format("%02d",Bangou).."m"..Count..Moji.."01.png"
				if os.rename(FilePass,FilePass) ~= nil then
					Zengo = "m"..Count
					break
				end
				FilePass = FolderPass..string.format("%02d",Bangou).."u"..Count..Moji.."01.png"
				if os.rename(FilePass,FilePass) ~= nil then
					Zengo = "u"..Count
					break
				end
			end
		end

		-- 分割数を決定
		BunkatsuSuu = 0
		while 1 do
			FilePass = FolderPass..string.format("%02d",Bangou)..Zengo..Moji..string.format("%02d",BunkatsuSuu+1)..".png"
			if os.rename(FilePass,FilePass) == nil then break end
			BunkatsuSuu = BunkatsuSuu + 1
		end

		if BunkatsuSuu > 0 then

			if Type == "往復" then

				if Jikan == 0 or Kankaku == 0 then

					-- 分割時間を設定
					BunkatsuTime = BaseFS/(2*BunkatsuSuu+Chukan)

					-- 余り時間を設定
					AmariTime = (BaseFuyuuStart + ObjTime) % BaseFS

				else

					-- 分割時間を設定
					BunkatsuTime = Jikan/(2*BunkatsuSuu+Chukan)

					-- 余り時間を設定
					KaishiTime = (Kankaku * (BaseMS % BaseMK) / BaseMK + Kaishi + Kankaku) % Kankaku
					AmariTime = ObjTime % Kankaku - KaishiTime
				end

				-- 余り時間から、体画像を決定
				Count = 1
				while (Count-1)*BunkatsuTime <= AmariTime and Count <= (2*BunkatsuSuu+Chukan) + 1 do
					if Count <= BunkatsuSuu then
						Matsubi = Moji..string.format("%02d",Count)
					elseif Count <= BunkatsuSuu + Chukan then
						Matsubi = Moji..string.format("%02d",BunkatsuSuu)
					elseif Count <= 2*BunkatsuSuu + Chukan then
						Matsubi = Moji..string.format("%02d",(2*BunkatsuSuu+Chukan)-Count+1)
					else
						Matsubi = ""
					end
					Count = Count + 1
				end

			elseif Type == "片道" then

				if Jikan == 0 or Kankaku == 0 then

					-- 分割時間を設定
					BunkatsuTime = BaseFS/BunkatsuSuu

					-- 余り時間を設定
					AmariTime = (BaseFuyuuStart + ObjTime) % BaseFS

				else

					-- 分割時間を設定
					BunkatsuTime = Jikan/BunkatsuSuu

					-- 余り時間を設定
					KaishiTime = (Kankaku*(BaseMS%BaseMK)/ BaseMK + Kaishi) % Kankaku
					AmariTime = (KaishiTime + ObjTime) % Kankaku

				end

				-- 余り時間から、画像を決定
				Count = 1
				while (Count-1)*BunkatsuTime <= AmariTime and Count <= BunkatsuSuu + 1 do
					if Count <= BunkatsuSuu then
						Matsubi = Moji..string.format("%02d",Count)
					else
						Matsubi = ""
					end
					Count = Count + 1
				end

			end

		end

		return Matsubi -- 末尾を返す

	end

	-- 拡張アニメーション用文字列の初期化
	KaoString = ""
	MayuString = ""
	KaradaString = ""
	HokaString = ""
	UshiroString = ""
	AryMaeString = {"","","","","",""}
	AryUshiroString = {"","","","","",""}
	MarkString = ""

	----------------------------------------------------------------------
	-- 拡張アニメーション
	----------------------------------------------------------------------

	-- きつねさんのゆっくり、耳アニメ（体の定期往復型）km01〜

	if ZT == "" or ZT == "きつねゆっくり" then

		MOJI = "km" -- アニメーションを判別する文字列
		TYPE = "往復" -- アニメーションのタイプ（往復or片道）

		KAISHI = 0.0 -- アニメーションの開始のタイミング
		KANKAKU = 5.5 -- アニメーションの間隔
		JIKAN = 0.65 -- アニメーションする時間
		CHUKAN = 2 -- 往復アニメーションの中間の割合（例：abcde-ee-edcbaなら-ee-の部分で2）

		FP = KaradaPass..string.format("%02d",KaradaNumber)..MOJI.."01.png"
		if os.rename(FP,FP) ~= nil then
			KaradaString = TeikiAnimation(KaradaNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,KaradaPass) -- 定期アニメーション関数を適用
		end

	end

	-- きつねさんのキャラ素材、耳アニメ（他の定期往復型）ky01〜

	if ZT == "" or ZT == "きつねキャラ素材" then

		MOJI = "ky" -- アニメーションを判別する文字列
		TYPE = "往復" -- アニメーションのタイプ（往復or片道）

		KAISHI = 0.0 -- アニメーションの開始のタイミング
		KANKAKU = 5.5 -- アニメーションの間隔
		JIKAN = 0.65 -- アニメーションする時間
		CHUKAN = 2 -- 往復アニメーションの中間の割合（例：abcde-ee-edcbaなら-ee-の部分で2）

		FP = HokaPass..string.format("%02d",HokaNumber)..MOJI.."01.png"
		if os.rename(FP,FP) ~= nil then
			HokaString = TeikiAnimation(HokaNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,HokaPass) -- 定期アニメーション関数を適用
		end

	end

	-- きつねさんのゆっくり、さとりの赤玉の目アニメ（他の定期往復型）ke01〜

	if CN == "さとり" then

		MOJI = "ke" -- アニメーションを判別する文字列
		TYPE = "往復" -- アニメーションのタイプ（往復or片道）

		KAISHI = 1.0 -- アニメーションの開始のタイミング
		KANKAKU = 5.0 -- アニメーションの間隔
		JIKAN = 0.60 -- アニメーションする時間
		CHUKAN = 5 -- 往復アニメーションの中間の割合（例：abcde-ee-edcbaなら-ee-の部分で2）

		FP = HokaPass..string.format("%02d",HokaNumber)..MOJI.."01.png"
		if os.rename(FP,FP) ~= nil then
			HokaString = TeikiAnimation(HokaNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,HokaPass) -- 定期アニメーション関数を適用
		end

	end

	-- きつねさんのゆっくり、すわこの帽子の目アニメ（体の定期片道型）kp01〜

	if CN == "すわこ" then

		MOJI = "kp" -- アニメーションを判別する文字列
		TYPE = "片道" -- アニメーションのタイプ（往復or片道）

		KAISHI = 0.0 -- アニメーションの開始のタイミング
		KANKAKU = 8.0 -- アニメーションの間隔
		JIKAN = 1.15 -- アニメーションする時間
		CHUKAN = 0 -- 往復アニメーションの中間の割合（片道の場合は0）

		FP = KaradaPass..string.format("%02d",KaradaNumber)..MOJI.."01.png"
		if os.rename(FP,FP) ~= nil then
			KaradaString = TeikiAnimation(KaradaNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,KaradaPass) -- 定期アニメーション関数を適用
		end

	end

	-- きつねさんのゆっくり、しっぽアニメ（後の定期片道型）kt01〜

	if ZT == "" or ZT == "きつねゆっくり" or string.find(ZT,"尾") ~= nil then

		MOJI = "kt" -- アニメーションを判別する文字列
		TYPE = "片道" -- アニメーションのタイプ（往復or片道）

		KAISHI = -1.0 -- アニメーションの開始のタイミング
		KANKAKU = 5.5 -- アニメーションの間隔
		JIKAN = 0.57 -- アニメーションする時間
		CHUKAN = 0 -- 往復アニメーションの中間の割合（片道の場合は0）


		FP = UshiroPass..string.format("%02d",UshiroNumber).."m1"..MOJI.."01.png"
		if os.rename(FP,FP) ~= nil then
			AryMaeString[1] = TeikiAnimation(UshiroNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,UshiroPass) -- 定期アニメーション関数を適用
		end

	end

	-- きつねさんのゆっくり、まみぞう用しっぽアニメ（後の定期往復型）ks01〜

	if CN == "まみぞう" then

		MOJI = "ks" -- アニメーションを判別する文字列
		TYPE = "往復" -- アニメーションのタイプ（往復or片道）

		KAISHI = 2.5 -- アニメーションの開始のタイミング
		KANKAKU = 5.5 -- アニメーションの間隔
		JIKAN = 0.7 -- アニメーションする時間
		CHUKAN = 2 -- 往復アニメーションの中間の割合（片道の場合は0）

		FP = UshiroPass..string.format("%02d",UshiroNumber).."u1"..MOJI.."01.png"
		if os.rename(FP,FP) ~= nil then
			AryUshiroString[1] = TeikiAnimation(UshiroNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,UshiroPass) -- 定期アニメーション関数を適用
		end

	end

	-- きつねさんのゆっくり、羽アニメ（後の定期片道型）kw01〜

	if ZT == "" or ZT == "きつねゆっくり" or string.find(ZT,"羽") ~= nil then

		MOJI = "kw" -- アニメーションを判別する文字列
		TYPE = "片道" -- アニメーションのタイプ（往復or片道）

		KAISHI = 0.0 -- アニメーションの開始のタイミング
		KANKAKU = 0 -- アニメーションの間隔
		JIKAN = 0 -- アニメーションする時間
		CHUKAN = 0 -- 往復アニメーションの中間の割合（片道の場合は0）

		FP = UshiroPass..string.format("%02d",UshiroNumber).."u1"..MOJI.."01.png"
		if os.rename(FP,FP) ~= nil then
			AryUshiroString[1] = TeikiAnimation(UshiroNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,UshiroPass) -- 定期アニメーション関数を適用
		end

	end

	-- きつねさんの新ゆっくり、もみじの耳アニメ（後の定期往復型）tm01〜

	if CN == "新もみじ" then

		MOJI = "km" -- アニメーションを判別する文字列
		TYPE = "往復" -- アニメーションのタイプ（往復or片道）

		KAISHI = 0.0 -- アニメーションの開始のタイミング
		KANKAKU = 5.5 -- アニメーションの間隔
		JIKAN = 0.65 -- アニメーションする時間
		CHUKAN = 2 -- 往復アニメーションの中間の割合（例：abcde-ee-edcbaなら-ee-の部分で2）

		FP = UshiroPass..string.format("%02d",UshiroNumber).."m1"..MOJI.."01.png"
		if os.rename(FP,FP) ~= nil then
			AryMaeString[1] = TeikiAnimation(UshiroNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,UshiroPass) -- 定期アニメーション関数を適用
		end

	end

	-- きつねさんの新ゆっくり、なずーりんの耳アニメ（後の定期片道型）tn01〜

	if CN == "新なずーりん" then

		MOJI = "tn" -- アニメーションを判別する文字列
		TYPE = "片道" -- アニメーションのタイプ（往復or片道）

		KAISHI = 0.0 -- アニメーションの開始のタイミング
		KANKAKU = 4.0 -- アニメーションの間隔
		JIKAN = 0.65 -- アニメーションする時間
		CHUKAN = 0 -- 往復アニメーションの中間の割合（片道の場合は0）

		FP = UshiroPass..string.format("%02d",UshiroNumber).."m2"..MOJI.."01.png"
		if os.rename(FP,FP) ~= nil then
			AryMaeString[2] = TeikiAnimation(UshiroNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,UshiroPass) -- 定期アニメーション関数を適用
		end

	end

	-- きつねさんの新ゆっくり、汗アニメ（他の定期往復型）ka01〜

	if string.find(ZT,"新きつねゆっくり") ~= nil then

		MOJI = "ka" -- アニメーションを判別する文字列
		TYPE = "片道" -- アニメーションのタイプ（往復or片道）

		KAISHI = 0.0 -- アニメーションの開始のタイミング
		KANKAKU = 1.0 -- アニメーションの間隔
		JIKAN = 1.0 -- アニメーションする時間
		CHUKAN = 0 -- 往復アニメーションの中間の割合（例：abcde-ee-edcbaなら-ee-の部分で2）

		FP = HokaPass..string.format("%02d",HokaNumber)..MOJI.."01.png"
		if os.rename(FP,FP) ~= nil then
			HokaString = TeikiAnimation(HokaNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,HokaPass) -- 定期アニメーション関数を適用
		end

	end

	-- 私です。さんのゆっくり、オーラ演出アニメ（後の定期片道型）wa01〜

	if ZT == "" or ZT == "私式。ゆっくり" then

		MOJI = "wa" -- アニメーションを判別する文字列
		TYPE = "片道" -- アニメーションのタイプ（往復or片道）

		KAISHI = 0 -- アニメーションの開始のタイミング
		KANKAKU = 0.1 -- アニメーションの間隔
		JIKAN = 0.26 -- アニメーションする時間
		CHUKAN = 0 -- 往復アニメーションの中間の割合（片道の場合は0）

		FP = UshiroPass..string.format("%02d",UshiroNumber)..MOJI.."01.png"
		if os.rename(FP,FP) ~= nil then
			UshiroString = TeikiAnimation(UshiroNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,UshiroPass) -- 定期アニメーション関数を適用
		end
		for Count = 1,5 do
			FP = UshiroPass..string.format("%02d",UshiroNumber).."m"..Count..MOJI.."01.png"
			if os.rename(FP,FP) ~= nil then
				AryMaeString[Count] = TeikiAnimation(UshiroNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,UshiroPass) -- 定期アニメーション関数を適用
			end
			FP = UshiroPass..string.format("%02d",UshiroNumber).."u"..Count..MOJI.."01.png"
			if os.rename(FP,FP) ~= nil then
				AryUshiroString[Count] = TeikiAnimation(UshiroNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,UshiroPass) -- 定期アニメーション関数を適用
			end
		end

	end

	-- ランゴさんのゆっくり、魔方陣アニメ（後の定期片道型）rc01〜

	if ZT == "" or CN == "蜂うさぱちぇ" then

		MOJI = "rc" -- アニメーションを判別する文字列
		TYPE = "片道" -- アニメーションのタイプ（往復or片道）

		KAISHI = 0 -- アニメーションの開始のタイミング
		KANKAKU = 0.2 -- アニメーションの間隔
		JIKAN = 0.2 -- アニメーションする時間
		CHUKAN = 0 -- 往復アニメーションの中間の割合（片道の場合は0）

		FP = UshiroPass..string.format("%02d",UshiroNumber)..MOJI.."01.png"
		if os.rename(FP,FP) ~= nil then
			UshiroString = TeikiAnimation(UshiroNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,UshiroPass) -- 定期アニメーション関数を適用
		end
		for Count = 1,5 do
			FP = UshiroPass..string.format("%02d",UshiroNumber).."m"..Count..MOJI.."01.png"
			if os.rename(FP,FP) ~= nil then
				AryMaeString[Count] = TeikiAnimation(UshiroNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,UshiroPass) -- 定期アニメーション関数を適用
			end
			FP = UshiroPass..string.format("%02d",UshiroNumber).."u"..Count..MOJI.."01.png"
			if os.rename(FP,FP) ~= nil then
				AryUshiroString[Count] = TeikiAnimation(UshiroNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,UshiroPass) -- 定期アニメーション関数を適用
			end
		end

	end

	-- ランゴさんのゆっくり、人魂アニメ（後の定期片道型）rs01〜

	if ZT == "" or ZT == "東方旧作ゆっくり" then

		MOJI = "rs" -- アニメーションを判別する文字列
		TYPE = "片道" -- アニメーションのタイプ（往復or片道）

		KAISHI = 0 -- アニメーションの開始のタイミング
		KANKAKU = 0.6 -- アニメーションの間隔
		JIKAN = 0.6 -- アニメーションする時間
		CHUKAN = 0 -- 往復アニメーションの中間の割合（片道の場合は0）

		FP = UshiroPass..string.format("%02d",UshiroNumber)..MOJI.."01.png"
		if os.rename(FP,FP) ~= nil then
			UshiroString = TeikiAnimation(UshiroNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,UshiroPass) -- 定期アニメーション関数を適用
		end
		for Count = 1,5 do
			FP = UshiroPass..string.format("%02d",UshiroNumber).."m"..Count..MOJI.."01.png"
			if os.rename(FP,FP) ~= nil then
				AryMaeString[Count] = TeikiAnimation(UshiroNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,UshiroPass) -- 定期アニメーション関数を適用
			end
			FP = UshiroPass..string.format("%02d",UshiroNumber).."u"..Count..MOJI.."01.png"
			if os.rename(FP,FP) ~= nil then
				AryUshiroString[Count] = TeikiAnimation(UshiroNumber,MOJI,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN,UshiroPass) -- 定期アニメーション関数を適用
			end
		end

	end

end
