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

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

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

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

		-- マークかそれ以外化によってフォルダパスを場合分け
		if Parts == "マーク" then
			FolderPass = SOZAI_FOLDER.."小道具\\マーク\\"
		else
			FolderPass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..Parts.."\\"
		end

		-- 前後判別文字の決定
		Zengo = ""
		FilePass = FolderPass..string.format("%02d",Bangou)..Moji.."01.png"
		if os.rename(FilePass,FilePass) == nil then
			for Count = 1,9 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 Parts == "マーク" then

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

					-- 余り時間を設定
					AmariTime = ObjTime % Kankaku

				elseif 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 Parts == "マーク" then

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

					-- 余り時間を設定
					AmariTime = ObjTime % Kankaku

				elseif 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 = ""
	AryMaeKumiString = {"","","","","","","","","",""}
	AryUshiroKumiString = {"","","","","","","","","",""}
	MarkString = ""

	----------------------------------------------------------------------
	-- 拡張アニメーション（キャラオブジェクト専用）
	----------------------------------------------------------------------

	if CharaObjectFlag == 1 then 

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

		if KaradaString == "" then

			BANGOU = KaradaNumber  -- ベースのトラックバーの番号
			MOJI = "km" -- アニメーションを判別する文字列
			PARTS= "体" -- アニメーションするパーツ
			TYPE = "往復" -- アニメーションのタイプ（往復or片道）

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

			FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU)..MOJI.."01.png"
			if os.rename(FilePass,FilePass) ~= nil then
				KaradaString = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
			end

		end

		-- きつねさんのキャラ素材、耳アニメ（他の定期往復型）ky01〜
		-- （英語で耳はearでしたねｗ "e"は既に使っているとは言え、なんで"y"にしてしまったかな・・・）

		if HokaString == "" then

			BANGOU = HokaNumber  -- ベースのトラックバーの番号
			MOJI = "ky" -- アニメーションを判別する文字列
			PARTS= "他" -- アニメーションするパーツ
			TYPE = "往復" -- アニメーションのタイプ（往復or片道）

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

			FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU)..MOJI.."01.png"
			if os.rename(FilePass,FilePass) ~= nil then
				HokaString = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
			end

		end

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

		if HokaString == "" then

			BANGOU = HokaNumber  -- ベースのトラックバーの番号
			MOJI = "ke" -- アニメーションを判別する文字列
			PARTS= "他" -- アニメーションするパーツ
			TYPE = "往復" -- アニメーションのタイプ（往復or片道）

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

			FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU)..MOJI.."01.png"
			if os.rename(FilePass,FilePass) ~= nil then
				HokaString = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
			end

		end

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

		if KaradaString == "" then

			BANGOU = KaradaNumber  -- ベースのトラックバーの番号
			MOJI = "kp" -- アニメーションを判別する文字列
			PARTS= "体" -- アニメーションするパーツ
			TYPE = "片道" -- アニメーションのタイプ（往復or片道）

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

			FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU)..MOJI.."01.png"
			if os.rename(FilePass,FilePass) ~= nil then
				KaradaString = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
			end

		end

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

		BANGOU = KumiNumber -- ベースのトラックバーの番号
		MOJI = "kt" -- アニメーションを判別する文字列
		PARTS= "後" -- アニメーションするパーツ
		TYPE = "片道" -- アニメーションのタイプ（往復or片道）

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

		FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU)..MOJI.."01.png"
		if os.rename(FilePass,FilePass) == nil then
			AryUshiroKumiString[0] = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
		end
		for Count = 1,9 do
			FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU).."m"..Count..MOJI.."01.png"
			MaeFlag = os.rename(FilePass,FilePass)
			if MaeFlag ~= nil then
				AryMaeKumiString[Count] = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
			end
			FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU).."u"..Count..MOJI.."01.png"
			UshiroFlag = os.rename(FilePass,FilePass)
			if UshiroFlag ~= nil then
				AryUshiroKumiString[Count] = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
			end
			if MaeFlag == nil and UshiroFlag == nil then break end
		end

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

		BANGOU = KumiNumber -- ベースのトラックバーの番号
		MOJI = "ks" -- アニメーションを判別する文字列
		PARTS= "後" -- アニメーションするパーツ
		TYPE = "往復" -- アニメーションのタイプ（往復or片道）

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

		FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU)..MOJI.."01.png"
		if os.rename(FilePass,FilePass) == nil then
			AryUshiroKumiString[0] = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
		end
		for Count = 1,9 do
			FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU).."m"..Count..MOJI.."01.png"
			MaeFlag = os.rename(FilePass,FilePass)
			if MaeFlag ~= nil then
				AryMaeKumiString[Count] = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
			end
			FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU).."u"..Count..MOJI.."01.png"
			UshiroFlag = os.rename(FilePass,FilePass)
			if UshiroFlag ~= nil then
				AryUshiroKumiString[Count] = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
			end
			if MaeFlag == nil and UshiroFlag == nil then break end
		end

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

		BANGOU = KumiNumber  -- ベースのトラックバーの番号
		MOJI = "kw" -- アニメーションを判別する文字列
		PARTS= "後" -- アニメーションするパーツ
		TYPE = "片道" -- アニメーションのタイプ（往復or片道）

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

		FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU)..MOJI.."01.png"
		if os.rename(FilePass,FilePass) == nil then
			AryUshiroKumiString[0] = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
		end
		for Count = 1,9 do
			FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU).."m"..Count..MOJI.."01.png"
			MaeFlag = os.rename(FilePass,FilePass)
			if MaeFlag ~= nil then
				AryMaeKumiString[Count] = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
			end
			FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU).."u"..Count..MOJI.."01.png"
			UshiroFlag = os.rename(FilePass,FilePass)
			if UshiroFlag ~= nil then
				AryUshiroKumiString[Count] = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
			end
			if MaeFlag == nil and UshiroFlag == nil then break end
		end

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

		BANGOU = KumiNumber  -- ベースのトラックバーの番号
		MOJI = "wa" -- アニメーションを判別する文字列
		PARTS= "後" -- アニメーションするパーツ
		TYPE = "片道" -- アニメーションのタイプ（往復or片道）

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

		FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU)..MOJI.."01.png"
		if os.rename(FilePass,FilePass) == nil then
			AryUshiroKumiString[0] = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
		end
		for Count = 1,9 do
			FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU).."m"..Count..MOJI.."01.png"
			MaeFlag = os.rename(FilePass,FilePass)
			if MaeFlag ~= nil then
				AryMaeKumiString[Count] = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
			end
			FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU).."u"..Count..MOJI.."01.png"
			UshiroFlag = os.rename(FilePass,FilePass)
			if UshiroFlag ~= nil then
				AryUshiroKumiString[Count] = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
			end
			if MaeFlag == nil and UshiroFlag == nil then break end
		end

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

		BANGOU = KumiNumber  -- ベースのトラックバーの番号
		MOJI = "rc" -- アニメーションを判別する文字列
		PARTS= "後" -- アニメーションするパーツ
		TYPE = "片道" -- アニメーションのタイプ（往復or片道）

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

		FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU)..MOJI.."01.png"
		if os.rename(FilePass,FilePass) == nil then
			AryUshiroKumiString[0] = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
		end
		for Count = 1,9 do
			FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU).."m"..Count..MOJI.."01.png"
			MaeFlag = os.rename(FilePass,FilePass)
			if MaeFlag ~= nil then
				AryMaeKumiString[Count] = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
			end
			FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU).."u"..Count..MOJI.."01.png"
			UshiroFlag = os.rename(FilePass,FilePass)
			if UshiroFlag ~= nil then
				AryUshiroKumiString[Count] = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
			end
			if MaeFlag == nil and UshiroFlag == nil then break end
		end

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

		BANGOU = KumiNumber  -- ベースのトラックバーの番号
		MOJI = "rs" -- アニメーションを判別する文字列
		PARTS= "後" -- アニメーションするパーツ
		TYPE = "片道" -- アニメーションのタイプ（往復or片道）

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

		FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU)..MOJI.."01.png"
		if os.rename(FilePass,FilePass) == nil then
			AryUshiroKumiString[0] = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
		end
		for Count = 1,9 do
			FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU).."m"..Count..MOJI.."01.png"
			MaeFlag = os.rename(FilePass,FilePass)
			if MaeFlag ~= nil then
				AryMaeKumiString[Count] = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
			end
			FilePass = SOZAI_FOLDER.."キャラ素材\\"..CN.."\\"..PARTS.."\\"..string.format("%02d",BANGOU).."u"..Count..MOJI.."01.png"
			UshiroFlag = os.rename(FilePass,FilePass)
			if UshiroFlag ~= nil then
				AryUshiroKumiString[Count] = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
			end
			if MaeFlag == nil and UshiroFlag == nil then break end
		end

	end

	----------------------------------------------------------------------
	-- マークの拡張アニメーション（キャラオブジェクト以外も可）
	----------------------------------------------------------------------

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

	if MarkString == "" then

		BANGOU = MarkNumber  -- ベースのトラックバーの番号
		MOJI = "rc" -- アニメーションを判別する文字列
		PARTS= "マーク" -- アニメーションするパーツ
		TYPE = "片道" -- アニメーションのタイプ（往復or片道）

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

		FilePass = SOZAI_FOLDER.."小道具\\マーク\\"..string.format("%02d",BANGOU)..MOJI.."01.png"
		if os.rename(FilePass,FilePass) ~= nil then
			MarkString = TeikiAnimation(BANGOU,MOJI,PARTS,TYPE,KAISHI,KANKAKU,JIKAN,CHUKAN) -- 定期アニメーション関数を適用
		end

	end

end
