//RPGシステム
class MyRPGSystem{
	//コンストラクタ
	constructor(){
		//RPG機能有効/無効
		this.FunctionFlg = false;
		//キャラ用データ
		this.Charctor = {
			Name:null,
			Type:0,//データタイプ 0:キャラ,1:敵
			ImgID:-1,//0以上で敵
			MarginType:"S",//0以上で敵
			LV:0,//レベル
			HP:0,//体力
			MP:0,//マジックポイント
			AP:0,//攻撃力
			DP:0,//防御力
			SP:0,//素早さ
			IP:0,//知力
			EXE:0,//経験値
			GOLD:0,//お金
			Item:[],
		}
		//キャラクターデータ配列
		this.CharArray = [];
		//敵データ配列
		this.AreaEnemyArray = [];
		this.EnemyArray = [];
		this.EnemyPatturn = [
			//1体のみ
			[["S",[0,180]]],
			[["M",[0,180]]],
			[["L",[0,180]]],
			//2体
			[["S",[0,150]],["S",[0,270]]],
			[["S",[0,150]],["M",[0,270]]],
			[["S",[0,200]],["L",[0,30]]],
			[["M",[0,150]],["M",[0,270]]],
			[["M",[0,100]],["L",[0,240]]],
			[["L",[0,100]],["L",[0,240]]],
			//3体
			[["S",[0,180]],["S",[0,300]],["S",[0,40]]],
			[["S",[0,180]],["S",[0,300]],["M",[0,40]]],
			[["S",[0,180]],["S",[0,300]],["L",[0,30]]],
			[["S",[0,180]],["M",[0,300]],["M",[0,40]]],
			[["M",[0,180]],["M",[0,300]],["L",[0,20]]],
			[["M",[0,150]],["M",[0,270]],["M",[0,30]]],
		];
		//Item用データ
		this.Item = {
			ItemId:0,//アイテムID
			Name:null,//アイテム名
			Type:0,//アイテム種別
			Msg:null,//アイテム説明
			Value:0,//アイテム効果の値
			GOLD:0,//価格
		};
		//アイテムデータ配列
		this.ItemArray = [];
		//魔法用データ
		this.Magic = {
			MagicId:0,//魔法ID
			ImgId:0,//魔法用描画ID
			Count:0,//アニメーション用画像枚数
			Type:0,//発動タイプ(0:通常攻撃,1:通常回復,2:常時発動)
			Name:null,//魔法名
			Msg:null,//魔法説明
			Value:0,//基本効力（ダメージor回復量）
			UseMp:0,//基本消費魔法力
		};
		//魔法データ配列
		this.Magics = [];
		this.MagicAnimiton = false;
		this.MagicCount = 0;
		//メニュー保持
		this.MenuSave = [];
		//戦闘用/メニュー等
		this.BattleFlg = false;
		this.BattleEnemy = [];
		this.AttackMenu = "AttackMenu";
		this.DecisionMenu = "DecisionMenu";
		this.MagicSelect = 0;
		this.MagicAdd = 0;
		this.TargetEnemy = [-1,-1,-1];
		this.TargetBoxFunc = [];
		this.MagicAnimitonNext = [];
		this.MagicAttackCount = 0;
		this.UseMpCheck = 0;
		this.BattleTurn = [];
		this.BattleAnimition = false;
		this.BattleCount = 0;
		this.BattleLose = false;
		this.BattleAnimitonNext = [];
		this.BattleAttackCount = 0;
		//店舗フラグ
		this.StoreFlg = false;
		//フィールドフラグ
		this.FieldFlg = false;
		//休みフラグ
		this.RestFlg = false;
		//戦闘回数
		this.EventBattleCount = false;
		//防御
		this.ActionGurad = false;
		//拘束
		this.BindStatus = false;
		//触手破損
		this.ShokushuBreak = false;
		//オナニーフラグ
		this.OnaniFlg = false;
}
	
	//キャラ生成
	CreateChar(){
		var charData = new myRpg.Charctor;
		return charData;
	}
	
	//キャラデータ取得
	GetChara(Idx){
		if(myRpg.CharArray.length==0)return false;
		return myRpg.CharArray[Idx];
	}
	
	//キャラデータ設定
	SetChara(Data,Idx=-1){
		if(Idx==-1)Idx = myRpg.CharArray.length;
		myRpg.CharArray[Idx] = Data;
	}
	
	//敵データ取得
	GetEnemy(Idx){
		if(myRpg.CharArray.length==0)return false;
		return myRpg.CharArray[Idx];
	}
	
	//敵データ設定
	SetEnemy(Data,Idx=-1){
		if(Idx==-1)Idx = myRpg.CharArray.length;
		myRpg.CharArray[Idx] = Data;
	}
	
	//魔法データ全体設定
	SetMagicItemData(){
		this.Magics = [
			{
				MagicId:-1,//魔法ID
				ImgId:1,//魔法用描画ID
				Count:16,//アニメーション用画像枚数
				Type:0,//発動タイプ(0:通常攻撃,1:通常回復,2:常時発動)
				Name:"即時発動",//魔法名
				Msg:"即時発動",//魔法説明
				Value:50,//基本効力（ダメージor回復量）
				UseMp:1,//基本消費魔法力
			},
			{
				MagicId:-2,//魔法ID
				ImgId:17,//魔法用描画ID
				Count:16,//アニメーション用画像枚数
				Type:0,//発動タイプ(0:通常攻撃,1:通常回復,2:常時発動)
				Name:"詠唱",//魔法名
				Msg:"威力を高める少し長めの詠唱",//魔法説明
				Value:50,//基本効力（ダメージor回復量）
				UseMp:3,//基本消費魔法力
			},
			{
				MagicId:-3,//魔法ID
				ImgId:33,//魔法用描画ID
				Count:16,//アニメーション用画像枚数
				Type:0,//発動タイプ(0:通常攻撃,1:通常回復,2:常時発動)
				Name:"詠唱・長",//魔法名
				Msg:"更に威力を高める長めの詠唱",//魔法説明
				Value:50,//基本効力（ダメージor回復量）
				UseMp:5,//基本消費魔法力
			},
			{
				MagicId:0,//魔法ID
				ImgId:49,//魔法用描画ID
				Count:15,//アニメーション用画像枚数
				Type:0,//発動タイプ(0:通常攻撃,1:通常回復,2:常時発動)
				Name:"ファイア",//魔法名
				Msg:"基本的な炎の攻撃魔法。それだけに使い手次第で威力も異なる。",//魔法説明
				Value:50,//基本効力（ダメージor回復量）
				UseMp:2,//基本消費魔法力
			},
			{
				MagicId:1,//魔法ID
				ImgId:64,//魔法用描画ID
				Count:15,//アニメーション用画像枚数
				Type:0,//発動タイプ(0:通常攻撃,1:通常回復,2:常時発動)
				Name:"サンダーボルト",//魔法名
				Msg:"基本的な雷撃の攻撃魔法。それだけに使い手次第で威力も異なる。",//魔法説明
				Value:80,//基本効力（ダメージor回復量）
				UseMp:4,//基本消費魔法力
			},
			{
				MagicId:3,//魔法ID
				ImgId:79,//魔法用描画ID
				Count:15,//アニメーション用画像枚数
				Type:0,//発動タイプ(0:通常攻撃,1:通常回復,2:常時発動)
				Name:"ホーリーバースト",//魔法名
				Msg:"聖なる力を使った爆裂攻撃魔法。威力は強い",//魔法説明
				Value:500,//基本効力（ダメージor回復量）
				UseMp:20,//基本消費魔法力
			},			
			{
				MagicId:2,//魔法ID
				ImgId:94,//魔法用描画ID
				Count:25,//アニメーション用画像枚数
				Type:1,//発動タイプ(0:通常攻撃,1:通常回復,2:常時発動)
				Name:"ケア",//魔法名
				Msg:"基本的な治癒魔法。それだけに使い手次第で回復力も異なる。",//魔法説明
				Value:100,//基本効力（ダメージor回復量）
				UseMp:3,//基本消費魔法力
			},
		];
		//アイテム
		//Item用データ
		this.Items = [
			{
				ItemId:0,//アイテムID
				Name:"薬草",//アイテム名
				Type:0,//アイテム種別 0:回復,1:攻撃,2:装備,3:特殊
				Msg:"わずかにHPを回復する",//アイテム説明
				Value:50,//アイテム効果の値
				GOLD:5,//価格
			},
			{
				ItemId:1,//アイテムID
				Name:"傷薬",//アイテム名
				Type:0,//アイテム種別 0:回復,1:攻撃,2:装備,3:特殊
				Msg:"薬草よりHPを回復する",//アイテム説明
				Value:100,//アイテム効果の値
				GOLD:10,//価格
			},
			{
				ItemId:2,//アイテムID
				Name:"ポーション",//アイテム名
				Type:0,//アイテム種別 0:回復,1:攻撃,2:装備,3:特殊
				Msg:"ある程度のダメージを瞬時に回復する魔法の薬",//アイテム説明
				Value:200,//アイテム効果の値
				GOLD:50,//価格
			},
			{
				ItemId:3,//アイテムID
				Name:"ハイポーション",//アイテム名
				Type:0,//アイテム種別 0:回復,1:攻撃,2:装備,3:特殊
				Msg:"大きなダメージも瞬時に回復する魔法の薬",//アイテム説明
				Value:600,//アイテム効果の値
				GOLD:150,//価格
			},
			{
				ItemId:4,//アイテムID
				Name:"ケアの封玉",//アイテム名
				Type:0,//アイテム種別 0:回復,1:攻撃,2:装備,3:特殊
				Msg:"中級魔導士が込めたケアが封じられている。<br>かなりHPを回復できる。",//アイテム説明
				Value:800,//アイテム効果の値
				GOLD:300,//価格
			},
			{
				ItemId:5,//アイテムID
				Name:"ケアの高級封玉",//アイテム名
				Type:0,//アイテム種別 0:回復,1:攻撃,2:装備,3:特殊
				Msg:"上級魔導士が込めたケアが封じられている。<br>大抵のダメージなら瞬時に回復できる。",//アイテム説明
				Value:1500,//アイテム効果の値
				GOLD:600,//価格
			},
			{
				ItemId:6,//アイテムID
				Name:"ケアの絶品封玉",//アイテム名
				Type:0,//アイテム種別 0:回復,1:攻撃,2:装備,3:特殊
				Msg:"上級魔導士が込めたケアをさらに増幅して封じられている。<br>瀕死なダメージでも瞬時に回復できる。",//アイテム説明
				Value:3000,//アイテム効果の値
				GOLD:1200,//価格
			},
			{
				ItemId:7,//アイテムID
				Name:"ファイアの封玉",//アイテム名
				Type:1,//アイテム種別 0:回復,1:攻撃,2:装備,3:特殊
				Msg:"中級魔導士が込めたファイアが封じられている。<br>敵に150前後のダメージを与える事が出来る。",//アイテム説明
				Value:150,//アイテム効果の値
				GOLD:300,//価格
			},
			{
				ItemId:8,//アイテムID
				Name:"サンダーボルトの封玉",//アイテム名
				Type:1,//アイテム種別 0:回復,1:攻撃,2:装備,3:特殊
				Msg:"中級魔導士が込めたサンダーボルトが封じられている。<br>敵に250前後のダメージを与える事が出来る。",//アイテム説明
				Value:250,//アイテム効果の値
				GOLD:500,//価格
			},
			{
				ItemId:9,//アイテムID
				Name:"ホーリーバーストの封玉",//アイテム名
				Type:1,//アイテム種別 0:回復,1:攻撃,2:装備,3:特殊
				Msg:"中級魔導士が込めたホーリーバーストが封じられている。<br>敵に500前後のダメージを与える事が出来る。",//アイテム説明
				Value:500,//アイテム効果の値
				GOLD:1000,//価格
			},
			{
				ItemId:10,//アイテムID
				Name:"魔力の薬",//アイテム名
				Type:3,//アイテム種別 0:回復,1:攻撃,2:装備,3:MP回復,4:破損度回復,5:特殊
				Msg:"魔導士必須アイテム。MPを100回復させる。",//アイテム説明
				Value:100,//アイテム効果の値
				GOLD:200,//価格
			},
			{
				ItemId:11,//アイテムID
				Name:"高級・魔力の薬",//アイテム名
				Type:3,//アイテム種別 0:回復,1:攻撃,2:装備,3:MP回復,4:破損度回復,5:特殊
				Msg:"高品質な魔力の薬。MPを300回復させる。",//アイテム説明
				Value:300,//アイテム効果の値
				GOLD:1000,//価格
			},
			{
				ItemId:12,//アイテムID
				Name:"絶品・魔力の薬",//アイテム名
				Type:3,//アイテム種別 0:回復,1:攻撃,2:装備,3:MP回復,4:破損度回復,5:特殊
				Msg:"匠の技で生成された希少な魔力の薬。MPを全開回復させる。",//アイテム説明
				Value:100,//アイテム効果の値
				GOLD:5000,//価格
			},
			{
				ItemId:13,//アイテムID
				Name:"ソーイングセット",//アイテム名
				Type:4,//アイテム種別 0:回復,1:攻撃,2:装備,3:MP回復,4:破損度回復,5:特殊
				Value:20,//アイテム効果の値
				Msg:function(Value){return "ちょっとした衣服の破損を回復させる。破損が大きいと使用できない。<br>破損率:"+(100-Value)+"％以上で使用不可。";},//アイテム説明
				Limit:35,//回復できる値これを下回ると使用不可
				GOLD:100,//価格
			},
			{
				ItemId:14,//アイテムID
				Name:"裁縫箱",//アイテム名
				Type:4,//アイテム種別 0:回復,1:攻撃,2:装備,3:MP回復,4:破損度回復,5:特殊
				Msg:function(Value){return "衣服の破損を回復させる。ある程度修復可能。<br>破損率:"+(100-Value)+"％以上で使用不可。";},//アイテム説明
				Value:40,//アイテム効果の値
				Limit:20,//回復できる値これを下回ると使用不可
				GOLD:300,//価格
			},
			{
				ItemId:15,//アイテムID
				Name:"魔導士の制服",//アイテム名
				Type:4,//アイテム種別 0:回復,1:攻撃,2:装備,3:MP回復,4:破損度回復,5:特殊
				Msg:"修復不能なら新しい制服は如何ですか？",//アイテム説明
				Value:100,//アイテム効果の値
				Limit:0,//回復できる値これを下回ると使用不可
				GOLD:600,//価格
			},
			{
				ItemId:16,//アイテムID
				Name:"魔封石",//アイテム名
				Type:3,//アイテム種別 0:回復,1:攻撃,2:装備,3:MP回復,4:破損度回復,5:特殊
				Msg:"装備することで知力が100上がる",//アイテム説明
				Value:100,//アイテム効果の値
				Limit:0,//回復できる値これを下回ると使用不可
				GOLD:1000,//価格
			},
			{
				ItemId:17,//アイテムID
				Name:"賢者の石",//アイテム名
				Type:3,//アイテム種別 0:回復,1:攻撃,2:装備,3:MP回復,4:破損度回復,5:特殊
				Msg:"装備することで知力が500上がる",//アイテム説明
				Value:100,//アイテム効果の値
				Limit:0,//回復できる値これを下回ると使用不可
				GOLD:10000,//価格
			},		
		];
	}
	
	//キャラ/敵データ全体設定
	SetCharactors(){
		//キャラ設定
		this.CharArray = [
			{		
				Name:"リリィ",
				Type:0,//データタイプ 0:キャラ,1:敵
				ImgID:-99,//0以上で敵
				MarginType:"-",//0以上で敵
				LV:5,//レベル
				HP:1000,//体力(値はレベル1)
				MAXHP:1000,//体力(値はレベル1)
				MP:200,//マジックポイント(値はレベル1)
				MAXMP:200,//マジックポイント(値はレベル1)
				WP:100,//服耐久力(値はレベル1)
				MAXWP:100,//服耐久力(値はレベル1)
				AP:50,//攻撃力(値はレベル1)
				DP:50,//防御力(値はレベル1)
				SP:50,//素早さ(値はレベル1)
				IP:100,//知力(値はレベル1)
				EXE:0,//経験値
				GOLD:500,//お金		
				INRAN:0,//淫乱ポイント
				SHUCHI:100,//羞恥心
			},
		];		
		//敵データ設定
		this.EnemyArray　= [
			{		
				Name:"スライム",//0
				Type:1,//データタイプ 0:キャラ,1:敵
				ImgID:1,//0以上で敵
				MarginType:"S",//0以上で敵
				BattleImgID:1,
				Count:10,
				LV:5,//レベル
				HP:100,//体力
				MP:0,//マジックポイント
				AP:100,//攻撃力
				DP:50,//防御力
				SP:30,//素早さ
				IP:25,//知力
				EXE:5,//経験値
				GOLD:5,//お金
			},
			{		
				Name:"デス・スライム",//1
				Type:1,//データタイプ 0:キャラ,1:敵
				ImgID:2,//0以上で敵
				MarginType:"S",//0以上で敵
				BattleImgID:1,
				Count:10,
				LV:8,//レベル
				HP:200,//体力
				MP:0,//マジックポイント
				AP:150,//攻撃力
				DP:80,//防御力
				SP:80,//素早さ
				IP:30,//知力
				EXE:10,//経験値
				GOLD:10,//お金
			},
			{		
				Name:"ゴブリン",//2
				Type:1,//データタイプ 0:キャラ,1:敵
				ImgID:10,//0以上で敵
				MarginType:"S",//0以上で敵
				BattleImgID:1,
				Count:10,
				LV:5,//レベル
				HP:300,//体力
				MP:0,//マジックポイント
				AP:150,//攻撃力
				DP:50,//防御力
				SP:300,//素早さ
				IP:20,//知力
				EXE:16,//経験値
				GOLD:20,//お金
			},
			{		
				Name:"ノーム",//3
				Type:1,//データタイプ 0:キャラ,1:敵
				ImgID:5,//0以上で敵
				MarginType:"S",//0以上で敵
				BattleImgID:1,
				Count:10,
				LV:5,//レベル
				HP:350,//体力
				MP:0,//マジックポイント
				AP:150,//攻撃力
				DP:50,//防御力
				SP:100,//素早さ
				IP:100,//知力
				EXE:20,//経験値
				GOLD:20,//お金
			},
			{		
				Name:"ビッグ・イーター",//4
				Type:1,//データタイプ 0:キャラ,1:敵
				ImgID:3,//0以上で敵
				MarginType:"M",//0以上で敵
				BattleImgID:1,
				Count:10,
				LV:10,//レベル
				HP:500,//体力
				MP:0,//マジックポイント
				AP:300,//攻撃力
				DP:150,//防御力
				SP:150,//素早さ
				IP:50,//知力
				EXE:30,//経験値
				GOLD:20,//お金
			},
			{		
				Name:"エクスプローラ",//5
				Type:1,//データタイプ 0:キャラ,1:敵
				ImgID:7,//0以上で敵
				MarginType:"S",//0以上で敵
				BattleImgID:1,
				Count:10,
				LV:18,//レベル
				HP:500,//体力
				MP:0,//マジックポイント
				AP:200,//攻撃力
				DP:250,//防御力
				SP:500,//素早さ
				IP:200,//知力
				EXE:40,//経験値
				GOLD:50,//お金
			},
			{		
				Name:"プロデューサー",//6
				Type:1,//データタイプ 0:キャラ,1:敵
				ImgID:8,//0以上で敵
				MarginType:"M",//0以上で敵
				BattleImgID:1,
				Count:10,
				LV:18,//レベル
				HP:800,//体力
				MP:0,//マジックポイント
				AP:350,//攻撃力
				DP:150,//防御力
				SP:300,//素早さ
				IP:200,//知力
				EXE:50,//経験値
				GOLD:60,//お金
			},
			{		
				Name:"エグゼアマナ―",//7
				Type:1,//データタイプ 0:キャラ,1:敵
				ImgID:9,//0以上で敵
				MarginType:"L",//0以上で敵
				BattleImgID:1,
				Count:10,
				LV:20,//レベル
				HP:1000,//体力
				MP:0,//マジックポイント
				AP:600,//攻撃力
				DP:200,//防御力
				SP:200,//素早さ
				IP:250,//知力
				EXE:70,//経験値
				GOLD:100,//お金
			},
			{		
				Name:"デーモン・コマンダー",//8
				Type:1,//データタイプ 0:キャラ,1:敵
				ImgID:18,//0以上で敵
				MarginType:"L",//0以上で敵
				BattleImgID:1,
				Count:10,
				LV:60,//レベル
				HP:15000,//体力
				MP:0,//マジックポイント
				AP:600,//攻撃力
				DP:300,//防御力
				SP:300,//素早さ
				IP:300,//知力
				EXE:1000,//経験値
				GOLD:1000,//お金
			},
			{		
				Name:"デーモン・ホーネット",//9
				Type:1,//データタイプ 0:キャラ,1:敵
				ImgID:12,//0以上で敵
				MarginType:"S",//0以上で敵
				BattleImgID:1,
				Count:10,
				LV:18,//レベル
				HP:500,//体力
				MP:0,//マジックポイント
				AP:200,//攻撃力
				DP:250,//防御力
				SP:500,//素早さ
				IP:200,//知力
				EXE:80,//経験値
				GOLD:100,//お金
			},
			{		
				Name:"デーモン・スパイダー",//10
				Type:1,//データタイプ 0:キャラ,1:敵
				ImgID:13,//0以上で敵
				MarginType:"M",//0以上で敵
				BattleImgID:1,
				Count:10,
				LV:25,//レベル
				HP:1000,//体力
				MP:0,//マジックポイント
				AP:300,//攻撃力
				DP:500,//防御力
				SP:300,//素早さ
				IP:230,//知力
				EXE:120,//経験値
				GOLD:80,//お金
			},
			{		
				Name:"デーモン・ビートル",//11
				Type:1,//データタイプ 0:キャラ,1:敵
				ImgID:19,//0以上で敵
				MarginType:"L",//0以上で敵
				BattleImgID:1,
				Count:10,
				LV:30,//レベル
				HP:2000,//体力
				MP:0,//マジックポイント
				AP:300,//攻撃力
				DP:800,//防御力
				SP:250,//素早さ
				IP:250,//知力
				EXE:200,//経験値
				GOLD:150,//お金
			},
			{		
				Name:"山賊",//12
				Type:1,//データタイプ 0:キャラ,1:敵
				ImgID:20,//0以上で敵
				MarginType:"S",//0以上で敵
				BattleImgID:1,
				Count:10,
				LV:20,//レベル
				HP:500,//体力
				MP:0,//マジックポイント
				AP:200,//攻撃力
				DP:300,//防御力
				SP:200,//素早さ
				IP:150,//知力
				EXE:50,//経験値
				GOLD:150,//お金
			},
			{		
				Name:"山賊・サブリーダー",//13
				Type:1,//データタイプ 0:キャラ,1:敵
				ImgID:22,//0以上で敵
				MarginType:"S",//0以上で敵
				BattleImgID:1,
				Count:10,
				LV:25,//レベル
				HP:800,//体力
				MP:0,//マジックポイント
				AP:250,//攻撃力
				DP:350,//防御力
				SP:200,//素早さ
				IP:200,//知力
				EXE:75,//経験値
				GOLD:150,//お金
			},
			{		
				Name:"下位ハーフデーモン",//14
				Type:1,//データタイプ 0:キャラ,1:敵
				ImgID:21,//0以上で敵
				MarginType:"S",//0以上で敵
				BattleImgID:1,
				Count:10,
				LV:30,//レベル
				HP:1000,//体力
				MP:0,//マジックポイント
				AP:300,//攻撃力
				DP:500,//防御力
				SP:300,//素早さ
				IP:200,//知力
				EXE:100,//経験値
				GOLD:150,//お金
			},
			{		
				Name:"中位ハーフデーモン",//15
				Type:1,//データタイプ 0:キャラ,1:敵
				ImgID:23,//0以上で敵
				MarginType:"S",//0以上で敵
				BattleImgID:1,
				Count:10,
				LV:30,//レベル
				HP:1500,//体力
				MP:0,//マジックポイント
				AP:300,//攻撃力
				DP:800,//防御力
				SP:250,//素早さ
				IP:250,//知力
				EXE:200,//経験値
				GOLD:150,//お金
			},
			{		
				Name:"山賊リーダー・ハーフデーモン",//16
				Type:1,//データタイプ 0:キャラ,1:敵
				ImgID:26,//0以上で敵
				MarginType:"L",//0以上で敵
				BattleImgID:1,
				Count:10,
				LV:30,//レベル
				HP:15000,//体力
				MP:0,//マジックポイント
				AP:300,//攻撃力
				DP:800,//防御力
				SP:300,//素早さ
				IP:300,//知力
				EXE:3000,//経験値
				GOLD:2000,//お金
			},
		];
	}
	
	//レベルアップ経験値取得
	GetLevelUpEXE(init=false){
		var UpEXE = 0;
		var LV = myRpg.Charctor.LV;
		if(init)LV--;
		for(var loop=0;loop<LV;loop++){
			UpEXE = UpEXE+parseInt(loop+1)*100+parseInt(loop+1)*10;
			console.log("LV:"+parseInt(loop+1)+"..."+UpEXE);
		}
		return UpEXE;
	}
	
	//レベルアップ時処理
	LevelUpProc(Msg){
		var EXE = myRpg.GetLevelUpEXE();
		if(myRpg.Charctor.EXE>=EXE){
			Msg = myRpg.Charctor.Name;
			Msg += "はレベルが上がった！<br>";
			//ステータスアップ処理
			var data = {
				LV:1,//体力
				MAXHP:(Math.random()*10+50),//体力
				MAXMP:(Math.random()*10+25),//マジックポイント
				AP:(Math.random()*10+20),//攻撃力
				DP:(Math.random()*10+10),//防御力
				SP:(Math.random()*10+10),//素早さ
				IP:(Math.random()*10+8),//知力
			};
			for(var loop in data){
				myRpg.Charctor[loop] += parseInt(data[loop]);
				console.log(loop+":"+myRpg.Charctor[loop]);
			}
			var Msg2;
			this.LevelUpProc(Msg2);
		}
		return Msg;
	}
	
	//ステータス機能
	StatusFunction(){
		if(!myRpg.FunctionFlg)return;
		myRpg.StatusMenu = "statusMenu";		
		myBT.setCommandProcessing(myBT.CommandStatus,function(){
			//通常メニュー非表示
			myBT.MenuHidden();
			var MenuItemMax = 5;
			var MenuItemIndex = 0;
			var MenuStatusPage = 0;			
			var data = myRpg.Charctor;
			//初回メニュー生成
			var StatusMenu = _self.Elm(myRpg.StatusMenu,_self.TypeID);
			if((StatusMenu == undefined)||(StatusMenu == null)){
				//メニュー枠生成
				var parent = _self.Elm("operation",_self.TypeID);
				myBT.setCommonBox(parent,myRpg.StatusMenu,"10px");
				_self.Elm(myRpg.StatusMenu,_self.TypeID).style.width = "300px";
				//魔法ステータス
				myRpg.MagicStatus = function(){
					var MagicData = myRpg.Magics;
					var index = 0;
					_self.Elm(myRpg.StatusMenu,_self.TypeID).innerHTML = "";
					for(index in MagicData){
						_self.Elm(myRpg.StatusMenu,_self.TypeID).innerHTML += "<center><span id='magic"+index+"'>"+MagicData[index].Name+"</span><br></center>";
					}
					_self.Elm(myRpg.StatusMenu,_self.TypeID).innerHTML += "<br><center><span id='magicUse'>使う</span></center>";
					_self.Elm(myRpg.StatusMenu,_self.TypeID).innerHTML += "<center><span id='magicEnd'>閉じる</span></center>";
					_self.Elm("magicEnd",_self.TypeID).onmousedown = function(){
						_self.HiddenBox(myRpg.StatusMenu);
					}
					for(index in MagicData){
						_self.Elm("magic"+index,_self.TypeID).onmousedown = function(){
							var Index = this.id.substr(String("magic").length,this.id.length-String("magic").length);
							var Msg = "消費MP:"+MagicData[Index].UseMp+"<br>";
							var MagicType = ["攻撃","回復","常時発動"];
							var typeIndex = MagicData[Index].Type;
							Msg += "魔法タイプ:";
							Msg +=((MagicData[Index].MagicId<=-1)?"詠唱":MagicType[typeIndex])+"<br>";
							Msg += "基本威力:"+MagicData[Index].Value+"<br>";
							Msg += MagicData[Index].Msg+"<br>";
							myBT.showMessage(Msg);
							//使う
							MenuItemIndex = Index;
						}
					}
					//魔法を使う
					_self.Elm("magicUse",_self.TypeID).onmousedown = function(){
						var MagicData = myRpg.Magics;				
						//タイプチェック
						if(MagicData[MenuItemIndex].Type!=1){
							myBT.showMessage("回復魔法を選択してください。");
							return;
						}				
						var parent = _self.Elm("operation",_self.TypeID);
						var length = this.id.length;
						var index = MenuItemIndex;
						var Msg = MagicData[index].Name+"を使いますか？<br>";
						Msg += MagicData[index].Msg+"<br>";
						myBT.yesNoBox(parent,Msg,
							function(){
								var useFlg = false;
								//回復
								if(MagicData[index].Type==1){
									var Msg = "MPが足りません。";
									if(myRpg.Charctor.MP>=MagicData[index].UseMp){
										Msg = MagicData[index].Name+"を使いました。<br>";
										var CorrectValue = (Math.random()+0.4);
										if(CorrectValue>=1.1)CorrectValue = 1.1;									
										Msg += "HPが"+Math.floor(myRpg.Charctor.IP*CorrectValue+MagicData[index].Value)+"回復しました。<br>MP"+MagicData[index].UseMp+"消費しました。";
										myRpg.Charctor.HP += Math.floor(myRpg.Charctor.IP*CorrectValue+MagicData[index].Value);
										myRpg.Charctor.MP -= MagicData[index].UseMp;
										if(myRpg.Charctor.HP>=myRpg.Charctor.MAXHP)myRpg.Charctor.HP = myRpg.Charctor.MAXHP;
									}
									myBT.showMessage(Msg);
								}
								_self.ViewBox(myRpg.StatusMenu);
							},
							function(){
								_self.ViewBox(myRpg.StatusMenu);
							},
						);
						_self.HiddenBox(myRpg.StatusMenu);
					}			

					
				}
			}else{
				_self.ViewBox(myRpg.StatusMenu);
			}
			_self.Elm(myRpg.StatusMenu,_self.TypeID).innerText = data.Name+"\n";
			_self.Elm(myRpg.StatusMenu,_self.TypeID).innerText += "LV:"+data.LV+"\n";
			_self.Elm(myRpg.StatusMenu,_self.TypeID).innerText += "HP:"+data.HP+"/"+data.MAXHP+"\n";
			_self.Elm(myRpg.StatusMenu,_self.TypeID).innerText += "MP:"+data.MP+"/"+data.MAXMP+"\n";
			_self.Elm(myRpg.StatusMenu,_self.TypeID).innerText += "攻撃力:"+data.AP+",";
			_self.Elm(myRpg.StatusMenu,_self.TypeID).innerText += "防御力:"+data.DP+"\n";
			_self.Elm(myRpg.StatusMenu,_self.TypeID).innerText += "素早さ:"+data.SP+",";
			_self.Elm(myRpg.StatusMenu,_self.TypeID).innerText += "知力:"+data.IP+"\n";
			_self.Elm(myRpg.StatusMenu,_self.TypeID).innerText += "衣服破損率:"+(100-(data.WP/data.MAXWP)*100).toFixed(2)+"％\n";
			_self.Elm(myRpg.StatusMenu,_self.TypeID).innerText += "淫乱度:"+data.INRAN+"\n";
			_self.Elm(myRpg.StatusMenu,_self.TypeID).innerText += "EXE:"+data.EXE+"/"+myRpg.GetLevelUpEXE()+"\n";
			_self.Elm(myRpg.StatusMenu,_self.TypeID).innerText += "GOLD:"+data.GOLD+"\n";
			_self.Elm(myRpg.StatusMenu,_self.TypeID).innerText += "\n※ステータス画面タッチで次へ\n";			
			_self.Elm(myRpg.StatusMenu,_self.TypeID).onmousedown = myRpg.MagicStatus;			
		});
	}
	
	//寝る機能
	SleepFunction(parent_name="operation"){
		myBT.setCommandProcessing(myBT.CommandSleep,function(){
			myRpg.RestMenu = "restMenu";
			//通常メニュー非表示
			myBT.MenuHidden();
			var RestMenu = _self.Elm(myRpg.RestMenu,_self.TypeID);
			if((RestMenu == undefined)||(RestMenu == null)){
				//メニュー枠生成
				var parent = _self.Elm(parent_name,_self.TypeID);
				myBT.setCommonBox(parent,myRpg.RestMenu,"10px");
				_self.Elm(myRpg.RestMenu,_self.TypeID).style.width = "200px";
				_self.AddCommand(myRpg.RestMenu,"rest1","寝る（翌日）");
				_self.AddCommand(myRpg.RestMenu,"rest2","休暇（時間経過）");
				_self.AddCommand(myRpg.RestMenu,"restEnd","戻る");
				myBT.setCommandProcessing("rest1",function(){
					_self.HiddenBox(myBT.IDDayTime);
					//自宅ならネグリジェ
					var func = myProc.GetmoveDataFunc();
					var data = func(myProc.moveIndex,true);					
					if(data[0]==73){
						myBT.showMessage("リリィ<br>「自宅だしネグリジェに着替えて寝ようっと」");
						myProc.changeImage(12,true,false,false);
					}else{
						myBT.showMessage("リリィ<br>「疲れたから休もうっと」");
					}
					myRpg.Charctor.HP = myRpg.Charctor.MAXHP;
					myRpg.Charctor.MP = myRpg.Charctor.MAXMP;
					myProc.Day++;
					myImg.backCorrect = 0;
					myProc.music(-2,myST.BGM_ALLOFF);
					myProc.SESound(6,myST.BGM_ON);
					_self.ViewBox("anmaku");
					myImg.AllImageView(true,false,false);
					_self.setTimer(function(){
						_self.HiddenBox("anmaku");				
						myBT.showMessage("リリィ<br>「うーん、良く寝た！」");
						document.onmousedown = function(){
							myBT.showMessage("HP、MPが回復しました！");
							document.onmousedown = function(){
								myBT.chgDayTime();
								myBT.showMessage("");
								_self.ViewBox(myBT.IDDayTime);								
								_self.HiddenBox(myRpg.RestMenu);
								myBT.MenuView();
								myRpg.WearBreak(myRpg.Charctor);
								myProc.moveBefore(myProc.moveIndex);
								document.onmousedown = null;
								/*document.onmousedown = function(){
									document.onmousedown = null;

								}*/
							}
						}
					},7000);
				});
				myBT.setCommandProcessing("rest2",function(){
					if(myImg.backCorrect<myImg.back_sinya){
						_self.HiddenBox(myBT.IDDayTime);
						myBT.showMessage("リリィ<br>「少し休憩しましょう」");
						myRpg.Charctor.HP = myRpg.Charctor.HP + myRpg.Charctor.MAXHP*0.25;
						myRpg.Charctor.MP = myRpg.Charctor.MP + myRpg.Charctor.MAXMP*0.25;
						if(myRpg.Charctor.HP>=myRpg.Charctor.MAXHP)myRpg.Charctor.HP = myRpg.Charctor.MAXHP;
						if(myRpg.Charctor.MP>=myRpg.Charctor.MAXMP)myRpg.Charctor.MP = myRpg.Charctor.MAXMP;
						myRpg.Charctor.HP = parseInt(myRpg.Charctor.HP);
						myRpg.Charctor.MP = parseInt(myRpg.Charctor.MP);
						myImg.backCorrect++;
						_self.ViewBox("anmaku");
						myImg.AllImageView(true,false,false);
						_self.setTimer(function(){
							_self.HiddenBox("anmaku");				
							myBT.showMessage("リリィ<br>「少し疲れが取れたわ」");
							document.onmousedown = function(){
								myBT.showMessage("HP、MPが回復しました！");
								document.onmousedown = function(){
									document.onmousedown = null;
									myBT.chgDayTime();
									myBT.showMessage("");
									_self.ViewBox(myBT.IDDayTime);
									_self.HiddenBox(myRpg.RestMenu);
									myBT.MenuView();
								}
							}
						},1000);
					}else{
						myBT.showMessage("リリィ<br>「ちゃんと寝ましょう」");
					}
				});
				myBT.setCommandProcessing("restEnd",function(){
					_self.HiddenBox(myRpg.RestMenu);
				});
			}else{
				_self.ViewBox(myRpg.RestMenu);
			}
		});
	}
	
	//アイテム機能
	ItemFunction(parent_name="operation"){
		myRpg.itmeMenu = "itmeMenu";
		myRpg.ItemUseIndex = -1;	
		//使う
		myBT.setCommandProcessing(myBT.CommandItem,function(){
			//アイテムチェック
			if((myRpg.Charctor.Item==undefined)||(myRpg.Charctor.Item.length<=0)){
				myBT.showMessage("道具を持っていません。");
				return;
			}
			//通常メニュー非表示
			myBT.MenuHidden();
			var MenuItemMax = 5;
			var MenuPage = 0;			//初回メニュー生成
			var itmeMenu = _self.Elm(myRpg.itmeMenu,_self.TypeID);
			//メニュー枠生成
			var parent = _self.Elm(parent_name,_self.TypeID);
			var x_pos = "10px";
			var y_pos = "0px";
			if(myRpg.BattleFlg){
				x_pos = "100px";
				y_pos = "130px";
			}
			if((itmeMenu===undefined)||(itmeMenu==null))myBT.setCommonBox(parent,myRpg.itmeMenu,x_pos,y_pos);
			_self.ViewBox(myRpg.itmeMenu);	
			_self.Elm(myRpg.itmeMenu,_self.TypeID).innerHTML = "";
			_self.Elm(myRpg.itmeMenu,_self.TypeID).style.width = "250px";
			var Items = myRpg.Charctor.Item;
			for(var loop=0;loop<Items.length;loop++){
				var id = "item_use_"+loop;
				_self.AddCommand(myRpg.itmeMenu,id,Items[loop].Name);
				if(loop>(MenuItemMax-1))_self.HiddenBox(id);
			}
			//ページ操作、購入、メニュー終了ボタンの生成
			_self.Elm(myRpg.itmeMenu,_self.TypeID).innerHTML += "<center><span id='itemMenuNext'>次へ</span><span id='itemMenuBack'>　前へ</span></center>";
			_self.Elm(myRpg.itmeMenu,_self.TypeID).innerHTML += "<br><center><span id='itemUse'>使う</span></center>";
			_self.Elm(myRpg.itmeMenu,_self.TypeID).innerHTML += "<center><span id='itemMenuEnd'>やめる</span></center>";
			//次のページ処理
			myBT.setCommandProcessing("itemMenuNext",function(){
				MenuPage++;
				var index = MenuItemMax*MenuPage;
				var backIndex = MenuItemMax*(MenuPage-1);
				if((index+MenuItemMax)>=Items.length)_self.HiddenBox("itemMenuNext");
				if(MenuPage>=1)_self.ViewBox("itemMenuBack");
				for(var loop=backIndex;loop<index;loop++){
					if(_self.Elm("item_use_"+loop,_self.TypeID)==undefined)continue;
					_self.HiddenBox("item_use_"+loop);
				}
				for(var loop=index;loop<(index+MenuItemMax);loop++){
					if(_self.Elm("item_use_"+loop,_self.TypeID)==undefined)continue;
					_self.ViewBox("item_use_"+loop);
				}					
			});
			//前のページ処理
			myBT.setCommandProcessing("itemMenuBack",function(){
				MenuPage--;
				var index = MenuItemMax*MenuPage;
				var backIndex = MenuItemMax*(MenuPage+2);
				if((index+MenuItemMax)<=Items.length)_self.ViewBox("itemMenuNext");
				if(backIndex>=Items.length)backIndex=Items.length-1;
				if(MenuPage<=0)_self.HiddenBox("itemMenuBack");
				for(var loop=backIndex;loop>index;loop--){
					if(_self.Elm("item_use_"+loop,_self.TypeID)==undefined)continue;
					_self.HiddenBox("item_use_"+loop);
				}
				for(var loop=index;loop<(index+MenuItemMax);loop++){
					if(_self.Elm("item_use_"+loop,_self.TypeID)==undefined)continue;
					_self.ViewBox("item_use_"+loop);
				}
			});
			//使う
			myBT.setCommandProcessing("itemUse",function(){
				if(myRpg.ItemUseIndex==-1){
					myBT.showMessage("アイテムを選んでください。");
					return;
				}				
				var parent = _self.Elm(parent_name,_self.TypeID);
				var startPos = String("item_use_").length;
				var length = this.id.length;
				var index = myRpg.ItemUseIndex;
				var Msg = myRpg.Charctor.Item[index].Name+"を使いますか？<br>";
				if(myRpg.BattleFlg)_self.HiddenBox("menu1");
				Msg += myRpg.Charctor.Item[index].Msg+"<br>";
				Msg += "所持数："+myRpg.Charctor.Item[index].count;
				myBT.yesNoBox(parent,Msg,
					function(){
						var useFlg = false;
						//回復
						if(myRpg.Charctor.Item[index].Type==0){
							var Msg = myRpg.Charctor.Item[index].Name+"使いました。<br>";
							Msg += "HPが"+myRpg.Charctor.Item[index].Value+"回復しました。";
							myRpg.Charctor.HP += myRpg.Charctor.Item[index].Value;
							if(myRpg.Charctor.HP>=myRpg.Charctor.MAXHP)myRpg.Charctor.HP=myRpg.Charctor.MAXHP;
							myBT.showMessage(Msg);
							myRpg.Charctor.Item[index].count--;
							if(myRpg.Charctor.Item[index].count==0)myRpg.Charctor.Item.slice(index,1);
							useFlg = true;							
						}
						//MP回復
						if(myRpg.Charctor.Item[index].Type==3){
							var Msg = myRpg.Charctor.Item[index].Name+"使いました。<br>";
							Msg += "MPが"+myRpg.Charctor.Item[index].Value+"回復しました。";
							myRpg.Charctor.MP += myRpg.Charctor.Item[index].Value;
							if(myRpg.Charctor.MP>=myRpg.Charctor.MAXMP)myRpg.Charctor.MP=myRpg.Charctor.MAXMP;
							myBT.showMessage(Msg);
							myRpg.Charctor.Item[index].count--;
							if(myRpg.Charctor.Item[index].count==0)myRpg.Charctor.Item.slice(index,1);
							useFlg = true;							
						}						
						//服破損修復
						if(myRpg.Charctor.Item[index].Type==4){
							if(myRpg.Charctor.Item[index].Limit<=myRpg.Charctor.WP){
								var Msg = myRpg.Charctor.Item[index].Name+"使いました。<br>";
								Msg += "破損状態を"+(myRpg.Charctor.Item[index].Value/myRpg.Charctor.MAXWP)*100+"%修復させました。";
								myRpg.Charctor.WP += myRpg.Charctor.Item[index].Value;
								if(myRpg.Charctor.WP>=myRpg.Charctor.MAXWP){
									myRpg.Charctor.WP=myRpg.Charctor.MAXWP;
								}
								myRpg.ShokushuBreak = false;
								myBT.showMessage(Msg);
								myRpg.Charctor.Item[index].count--;
								myRpg.WearBreak(myRpg.Charctor);
								//画像描画
								_self.setTimer(function(){
									myImg.AllImageView(true,true,false);
								},100);									
								useFlg = true;							
							}else{
								var Msg = "この破損状態では使用できません。<br>";
								myRpg.Charctor.Item[index].WP += myRpg.Charctor.Item[index].Value;
								myBT.showMessage(Msg);
							}
						}
						//メニュー出す
						if(myRpg.BattleFlg)_self.ViewBox("menu1");						
						//使用した場合
						if(useFlg){
							//アイテムを使い切ったなら
							if(myRpg.Charctor.Item[index].count<=0){
								//並び替えを行う
								//var delData = myRpg.Charctor.Item[index];
								for(var loop = index;loop<myRpg.Charctor.Item.length;loop++){
									myRpg.Charctor.Item[loop] = myRpg.Charctor.Item[parseInt(loop)+1];
								}
								//配列から消す
								myRpg.Charctor.Item.pop();
								_self.Elm(myBT.CommandItem,_self.TypeID).onmousedown();
								return;
							}							
						}
						_self.ViewBox(myRpg.itmeMenu);
						_self.HiddenBox(myRpg.itmeMenu);
					},
					function(){
						_self.ViewBox(myRpg.itmeMenu);
						if(myRpg.BattleFlg)_self.ViewBox("menu1");						
					},
				);
				if(myRpg.BattleFlg)myRpg.ShowParam();
				_self.HiddenBox(myRpg.itmeMenu);				
			});			
			//店舗メニュー終了
			myBT.setCommandProcessing("itemMenuEnd",function(){
				if(!myRpg.BattleFlg)myBT.MenuView();
				_self.HiddenBox(myRpg.itmeMenu);				
			});
			//アイテムイベント設定			
			for(var loop=0;loop<Items.length;loop++){
				var id = "item_use_"+loop;
				myBT.setCommandProcessing(id,function(){
					var startPos = String("item_use_").length;
					var length = this.id.length;
					var index = this.id.substr(startPos,length-startPos);
					var tmpMsg = Items[index].Msg;
					var Msg = "商品名："+Items[index].Name+"<br>";
					Msg += "所持数："+Items[index].count+"<br>";
					Msg += (typeof tmpMsg === "function")?tmpMsg(Items[index].Limit):tmpMsg;
					myBT.showMessage(Msg);
					myRpg.ItemUseIndex = index;
				});
			}
			if(Items.length<=MenuItemMax)_self.HiddenBox("itemMenuNext");	
			if(MenuPage>=1)_self.ViewBox("itemMenuBack");		
			if(MenuPage==0)_self.HiddenBox("itemMenuBack");					
		});
		//アイテム検索
		myRpg.ItemFind = function(Name,mode="find"){
			var ItemData = myRpg.Charctor.Item;
			var flg = false;
			for(var loop in ItemData){
				if(ItemData[loop].Name == Name){
					if(ItemData[loop].count==undefined)ItemData[loop].count = 0;
					if(mode=="buy")ItemData[loop].count++;
					flg = true;
				}
			}
			return flg;
		}
	}
		
	//店舗機能
	StoreFunction(parent_name="operation"){
		myRpg.StoreMenu = "storeMenu";
		myRpg.ItemBuyIndex = -1;
		myRpg.ItemBuyList = [];
		//買う
		myBT.setCommandProcessing(myBT.CommandStore,function(){
			//通常メニュー非表示
			myBT.MenuHidden();
			var MenuItemMax = 5;
			var MenuPage = 0;			//初回メニュー生成
			var StoreMenu = _self.Elm(myRpg.StoreMenu,_self.TypeID);
			//メニュー枠生成
			var parent = _self.Elm(parent_name,_self.TypeID);
			myBT.setCommonBox(parent,myRpg.StoreMenu,"10px");
			_self.Elm(myRpg.StoreMenu,_self.TypeID).innerHTML = "";
			_self.Elm(myRpg.StoreMenu,_self.TypeID).style.width = "250px";
			//村行商人
			if((myProc.moveIndex==37)&&(myProc.Day%5==0)&&(_self.product_flg)){
				myBT.showMessage("行商人<br>「いらっしゃい！そこそこ物がそろってるよ～」");
			}
			//アイテム追加
			var ItemCount = 0;
			for(var loop=0;loop<myRpg.Items.length;loop++){
				var id = "item_"+myRpg.Items[loop].ItemId;
				if(myRpg.ItemBuyList.indexOf(myRpg.Items[loop].ItemId)==-1)continue;
				_self.AddCommand(myRpg.StoreMenu,id,myRpg.Items[loop].Name);
				ItemCount++;
				if(ItemCount>(MenuItemMax-1))_self.HiddenBox(id);
			}
			//ページ操作、購入、メニュー終了ボタンの生成
			_self.Elm(myRpg.StoreMenu,_self.TypeID).innerHTML += "<center><span id='itemNext'>次へ</span><span id='itemBack'>　前へ</span></center>";
			_self.Elm(myRpg.StoreMenu,_self.TypeID).innerHTML += "<br><center><span id='itemBuy'>購入する</span></center>";
			_self.Elm(myRpg.StoreMenu,_self.TypeID).innerHTML += "<center><span id='itemEnd'>やめる</span></center>";
			//次のページ処理
			myBT.setCommandProcessing("itemNext",function(){
				MenuPage++;
				var index = MenuItemMax*MenuPage;
				var backIndex = MenuItemMax*(MenuPage-1);
				if((index+MenuItemMax)>=myRpg.Items.length)_self.HiddenBox("itemNext");
				if(MenuPage>=1)_self.ViewBox("itemBack");
				for(var loop=backIndex;loop<index;loop++){
					if(_self.Elm("item_"+myRpg.ItemBuyList[loop],_self.TypeID)==undefined)continue;
					_self.HiddenBox("item_"+myRpg.ItemBuyList[loop]);
				}
				for(var loop=index;loop<(index+MenuItemMax);loop++){
					if(_self.Elm("item_"+myRpg.ItemBuyList[loop],_self.TypeID)==undefined)continue;
					_self.ViewBox("item_"+myRpg.ItemBuyList[loop]);
				}					
			});
			//前のページ処理
			myBT.setCommandProcessing("itemBack",function(){
				MenuPage--;
				var index = MenuItemMax*MenuPage;
				var backIndex = MenuItemMax*(MenuPage+2);
				if((index+MenuItemMax)<=myRpg.Items.length)_self.ViewBox("itemNext");
				if(backIndex>=myRpg.Items.length)backIndex=myRpg.Items.length-1;
				if(MenuPage<=0)_self.HiddenBox("itemBack");
				for(var loop=backIndex;loop>index;loop--){
					if(_self.Elm("item_"+myRpg.ItemBuyList[loop],_self.TypeID)==undefined)continue;
					_self.HiddenBox("item_"+myRpg.ItemBuyList[loop]);
				}
				for(var loop=index;loop<(index+MenuItemMax);loop++){
					if(_self.Elm("item_"+myRpg.ItemBuyList[loop],_self.TypeID)==undefined)continue;
					_self.ViewBox("item_"+myRpg.ItemBuyList[loop]);
				}
			});
			//購入処理
			myBT.setCommandProcessing("itemBuy",function(){
				if(myRpg.ItemBuyIndex==-1){
					myBT.showMessage("商品を選んでください。");
					return;
				}
				var parent = _self.Elm(parent_name,_self.TypeID);
				var startPos = String("item_").length;
				var length = this.id.length;
				var index = myRpg.ItemBuyIndex;
				var Msg = myRpg.Items[index].Name+"を購入しますか？<br>";
				Msg += "価格："+myRpg.Items[index].GOLD+"<br>";
				Msg += "所持金："+myRpg.Charctor.GOLD;
				myBT.yesNoBox(parent,Msg,
					function(){
						if(myRpg.Charctor.GOLD>=myRpg.Items[index].GOLD){
							myBT.showMessage(myRpg.Items[index].Name+"を購入しました。");
							if(!myRpg.ItemFind(myRpg.Items[index].Name,"buy")){
								var Item = [];
								if(myRpg.Charctor.Item==undefined)myRpg.Charctor.Item = Item;
								var index2 = myRpg.Charctor.Item.length;
								myRpg.Charctor.Item[index2] = JSON.parse(JSON.stringify(myRpg.Items[index]));
								myRpg.Charctor.Item[index2].count = 1;
							}
							//---メッセージを設定するアイテムを検索---
							var ItemData = myRpg.Items[index];
							var SetIndex = 0;
							for(var idx in myRpg.Charctor.Item){
								if(myRpg.Charctor.Item[idx].ItemId == ItemData.ItemId){
									SetIndex = idx;
								}
							}
							if(ItemData.Type==4)myRpg.Charctor.Item[SetIndex].Msg = ItemData.Msg(ItemData.Limit);
							//---メッセージを設定するアイテムを検索---
							myRpg.Charctor.GOLD = myRpg.Charctor.GOLD - myRpg.Items[index].GOLD;
							_self.ViewBox(myRpg.StoreMenu);
						}else{
							myBT.showMessage("お金がありません...。");
						}
					},
					function(){
						_self.ViewBox(myRpg.StoreMenu);
					},
				);
				_self.HiddenBox(myRpg.StoreMenu);
			});
			//店舗メニュー終了
			myBT.setCommandProcessing("itemEnd",function(){
				_self.HiddenBox(myRpg.StoreMenu);					
				myBT.MenuView();					
			});				
			_self.ViewBox(myRpg.StoreMenu);
			//アイテムイベント設定
			for(var loop=0;loop<myRpg.ItemBuyList.length;loop++){
				var id = "item_"+myRpg.Items[myRpg.ItemBuyList[loop]].ItemId;
				myBT.setCommandProcessing(id,function(){
					var startPos = String("item_").length;
					var length = this.id.length;
					var index = this.id.substr(startPos,length-startPos);
					var tmpMsg = myRpg.Items[index].Msg;
					var Msg = "商品名："+myRpg.Items[index].Name+"<br>";
					Msg += "価格："+myRpg.Items[index].GOLD+"<br>";
					Msg += (typeof tmpMsg === "function")?tmpMsg(myRpg.Items[index].Limit):tmpMsg;
					myBT.showMessage(Msg);
					myRpg.ItemBuyIndex = index;
				});
			}
			if(ItemCount<=MenuItemMax)_self.HiddenBox("itemNext");
			if(MenuPage>=1)_self.ViewBox("itemBack");		
			if(MenuPage==0)_self.HiddenBox("itemBack");		
		});
	}
	
	
	//戦闘描画設定
	SetBattleMode(){
		myRpg.BreakBar = "BreakBar";//衣服破損メーター
		myRpg.BattleEndFlg = false;//戦闘終了フラグ
		myRpg.VictoryFlg = false;//戦闘終了フラグ
		myImg.GraphStrokeRect = [155,10,10,55];
		myImg.GraphFillRect = [156,11,8,54];
		myImg.CreateGraph(myRpg.BreakBar,true);
		myImg.ViewGraphDec(myRpg.BreakBar,myRpg.Charctor.WP,myRpg.Charctor.MAXWP);
		myST.ImageMagnChange(0.3,[210,80]);
		if(_self.width_hi<400)myST.ImageMagnChange(0.25,[195,100]);
		myImg.SetImageMagn("monster1",0.5);
		if(_self.width_hi<400)myImg.SetImageMagn("monster1",0.45);
		myImg.SetImgPos("monster1",[0,180]);
		myImg.SetImageMagn("monster2",0.5);
		if(_self.width_hi<400)myImg.SetImageMagn("monster2",0.45);
		myImg.SetImgPos("monster2",[0,30]);
		myImg.SetImageMagn("monster3",0.5);
		if(_self.width_hi<400)myImg.SetImageMagn("monster3",0.45);
		myImg.SetImgPos("monster3",[0,330]);
		myImg.SetImageMagn("MagicEffect",0.4);
		if(_self.width_hi<400)myImg.SetImageMagn("MagicEffect",0.35);
		myImg.SetImgPos("MagicEffect",[100,0]);
		myImg.SetImageMagn("BattleEffect",0.4);
		if(_self.width_hi<400)myImg.SetImageMagn("BattleEffect",0.35);
		myImg.SetImgPos("BattleEffect",[100,0]);
		//メッセージボックスサイズ変更
		var elm = _self.Elm(myBT.MsgBox,_self.TypeID);
		elm.style.height = "100px";
		elm.style.top = "400px";
		//日付と時間非表示
		_self.HiddenBox(myBT.IDDayTime);
	}
	//戦闘描画設定
	ClearBattleMode(){
		myST.AntenImageView(function(){		
			myST.ImageMagnChange(0.6,[0,0]);
			myImg.AllClearImage();
			myImg.ClearGraph(myRpg.BreakBar);
			myRpg.AllClearEnemy();
			//メッセージボックスサイズ変更
			var elm = _self.Elm(myBT.MsgBox,_self.TypeID);
			var boxWidth = (_self.width_hi-350)>=50?350:325;
			var x_pos = (_self.width_hi-boxWidth)/2+"px";			
			var y_pos = _self.height_hi<500?"325px":"350px";
			elm.style.height = "150px";
			elm.style.width = boxWidth;
			elm.style.top = y_pos;
			myRpg.WearBreak(myRpg.Charctor);
			//myImg.AllImageView(true,true,false);
		});
	}

	//拘束イベント処理
	BindEvent(){
		var bindsts = false;
		var randomVal = 0;
		var getVal = 0;
		var msgdata = _self.Elm(myBT.MsgBox,_self.TypeID).innerHTML;
		msgdata = msgdata.substr(1,msgdata.length-6);
		randomVal = myRpg.Charctor.INRAN;
		if(randomVal<=0)randomVal = 0;
		getVal = Math.random()*randomVal;
		console.log("getVal(触手イベント):"+getVal+"/"+(myRpg.Charctor.INRAN/2));

		//拘束判定
		if(!myRpg.BindStatus){
			if((myRpg.Charctor.INRAN/2)<=getVal)myRpg.BindStatus = 1;
			if(myRpg.BindStatus){
				myBT.showMessage(msgdata+"<br>どこからか現れたスライムがリリィを拘束した！");
				if(myRpg.BindStatus>=2)myRpg.ShokushuBreak = true;
				myRpg.WearBreak(myRpg.Charctor);
			}
		}else{
			if((myRpg.Charctor.INRAN/2)<=getVal){
				myRpg.BindStatus++;
				myBT.showMessage(msgdata+"<br>リリィは拘束を振りほどこうとする。<br>しかしスライムから逃れられない！");
			}else{
				myRpg.BindStatus = false;
				myBT.showMessage(msgdata+"<br>リリィは拘束を振りほどこうとする。<br>スライムの拘束から逃れた！");
			}
			if(myRpg.BindStatus>=2)myRpg.ShokushuBreak = true;
			myRpg.WearBreak(myRpg.Charctor);
		}
	}
	
	//戦闘処理
	BattleProcessing(){
		//メニュー操作用
		var elm = _self.Elm("menu1",_self.TypeID);
		var flg = false;
		//ターゲットチェック
		for(var loop in myRpg.TargetEnemy){
			flg += typeof(myRpg.TargetEnemy[loop])!="string"?-1:0;
		}
		if(flg>=-2){
			flg = true;
		}else{
			flg = false;
		}		
		//戦闘準備処理
		if(!myRpg.BattleFlg){
			//戦闘ミュージック
			_self.setTimer(function(){
				myProc.music(-2,myST.BGM_ALLOFF);
				if(	(!myBE.Flg[4])&&(((myProc.moveIndex==85)&&(myBE.Flg[3]==2)&&(!myBE.EndFlg[6]))||
					((myProc.moveIndex==85)&&(myBE.Flg[3]!=2)&&(!myBE.EndFlg[10])))){
					//中ボス用
					myProc.music(13,myST.BGM_ON);
				}else if((myProc.moveIndex==109)&&(myBE.Flg[16].select!==undefined)){
					//中ボス用
					myProc.music(13,myST.BGM_ON);
				}else{
					//通常戦闘用
					myProc.music(3,myST.BGM_ON);
				}
			},500);
			myST.TempIdx = 1;
			myRpg.BattleTurn.length = 0;
			myRpg.TargetBoxFunc.length = 0;
			myRpg.BattleLose = false;
			myRpg.MagicAttackCount = 0;
			myRpg.BattleAttackCount = 0;
			myRpg.BattleEnemy.length = 0;
			myRpg.BattleAnimitonNext.length = 0;
			myRpg.MagicAnimitonNext.length = 0;
			myRpg.TargetEnemy = [-1,-1,-1];;
			//クリアオール
			myST.AntenImageView(function(){
				//画像描画
				myImg.AllClearImage();
				myRpg.ShowEnemyPatturn();
				myRpg.SetBattleMode();
				myImg.AllImageView(true,true,false);
				//戦闘フラグON
				myRpg.BattleFlg = true;
				//戦闘時メニュー
				if(elm.style.left != "150px"){
					myRpg.MenuSave['left'] = elm.style.left.concat();
					myRpg.MenuSave['top'] = elm.style.top.concat();
				}
				elm.style.left = "150px";
				elm.style.top = "130px";
				myBT.BattleMenuView();
				myRpg.ShowParam();
				_self.setTimer(function(){
					var msg = "";
					for(var loop in myRpg.BattleEnemy){
						msg += myRpg.BattleEnemy[loop].Name+"<br>";
					}
					msg += "が現れた！！";
					myBT.showMessage(msg);
				},100);
			});
		}else{
			//ターゲッティング解除
			for(var index in myRpg.TargetBoxFunc){
				var key = myRpg.TargetBoxFunc[index].id;
				myImg.ImageView(key,true,true);
			}
			//魔法設定
			var Index = parseInt(myRpg.MagicSelect);
			//ターゲットゼロの場合
			if((!flg)&&(myRpg.Magics[Index].MagicId!=2)&&(!myRpg.ActionGurad)){
				myBT.showMessage("ターゲットが選択されていません。");
				//ターゲットフラグ解除
				myRpg.TargetEnemy = [-1,-1,-1];
				//メニュー再表示
				myRpg.BattleMenuReView();
				return;
			}else{
				//回復/防御時のみ
				if((myRpg.Magics[Index].MagicId==2)||(myRpg.ActionGurad))myRpg.TargetEnemy = [1,-1,-1];
			}
			//素早さ設定
			var AttackArray = [];
			var ArrayIndex = 0;
			AttackArray[ArrayIndex++] = myRpg.Charctor;
			if(myRpg.BattleEnemy[0]!=undefined){
				if(myRpg.BattleEnemy[0].HP>=1)AttackArray[ArrayIndex++]=myRpg.BattleEnemy[0];
			}
			if(myRpg.BattleEnemy[1]!=undefined){
				if(myRpg.BattleEnemy[1].HP>=1)AttackArray[ArrayIndex++]=myRpg.BattleEnemy[1];
			}
			if(myRpg.BattleEnemy[2]!=undefined){
				if(myRpg.BattleEnemy[2].HP>=1)AttackArray[ArrayIndex++]=myRpg.BattleEnemy[2];
			}
			//データ
			for(var loop=0;loop<AttackArray.length-1;loop++){
				for(var loop2=1;loop2<AttackArray.length;loop2++){
					if(AttackArray[loop].SP<=AttackArray[loop2].SP){
						var Buff = AttackArray[loop];
						var Buff2 = AttackArray[loop2];
						AttackArray[loop2] = Buff;
						AttackArray[loop] = Buff2;
					}
				}
			}
			//攻撃処理セット
			for(var loop in AttackArray){
				if(AttackArray[loop].Type==1){
					for(var loop2 in myRpg.BattleEnemy){
						if(AttackArray[loop].imgId == myRpg.BattleEnemy[loop2].imgId){
							if(AttackArray[loop].HP>=1){
								console.log("Enemy:"+loop2);
								myRpg.AttacPhase2(loop2);
								break;
							}
						}
					}
				}else{
					if((AttackArray[loop].Type==0)&&(!myRpg.BattleLose)&&(!myRpg.ActionGurad))myRpg.AttacPhase();
					//身を守る
					if(myRpg.ActionGurad){
						myRpg.Charctor.MP = myRpg.Charctor.MP+10;
						if(myRpg.Charctor.MP>=myRpg.Charctor.MAXMP)myRpg.Charctor.MP=myRpg.Charctor.MAXMP;
						myBT.showMessage("リリィは身を守っている。MPをわずかに回復した。");
					}
				}
			}
			//攻撃アニメーション
			//myRpg.AttacPhase();
			//メニュー再表示
			_self.setTimer(function(){
				myRpg.BattleMenuReView();
			},100);
		}
	}
	
	//パラメータ表示
	ShowParam(view=true){
		var elm = _self.Elm("ParamView",_self.TypeID);
		if((elm==undefined)||(elm==null)){
			var parent = _self.Elm("operation",_self.TypeID);
			myBT.setCommonBox(parent,"ParamView","225px","10px");
			var setElm = _self.Elm("ParamView",_self.TypeID);
			setElm.innerHTML+='<span id="ParamViewLV">'+"LV:"+myRpg.Charctor.LV+'</span>&nbsp;';
			setElm.innerHTML+='<span id="ParamViewName">'+myRpg.Charctor.Name+'</span><br>';
			setElm.innerHTML+='<span id="ParamViewHP">'+"HP:"+myRpg.Charctor.HP+'</span><br>';
			setElm.innerHTML+='<span id="ParamViewMP">'+"MP:"+myRpg.Charctor.MP+'</span><br>';
		}else{
			_self.Elm("ParamViewLV",_self.TypeID).innerText = "LV:"+myRpg.Charctor.LV;
			_self.Elm("ParamViewHP",_self.TypeID).innerText = "HP:"+myRpg.Charctor.HP;
			_self.Elm("ParamViewMP",_self.TypeID).innerText = "MP:"+myRpg.Charctor.MP;
		}
		_self.ViewBox("ParamView");
		if(!view)_self.HiddenBox("ParamView");
	}
	
	//服破損判定/破損処理
	WearBreak(Chr){
		//破損なし
		var IndexVal = 0;
		if(Chr.WP>=95){
			if(!myRpg.BindStatus){
				IndexVal = 0;
				if(myRpg.ShokushuBreak)IndexVal = 64;
			}else{
				IndexVal = 12+myRpg.BindStatus;
				if(IndexVal>=17)IndexVal=17;
			}
			myProc.changeImage(IndexVal,true,false,false);
		}
		//破損なし
		else if(Chr.WP>=90){
			if(!myRpg.BindStatus){
				IndexVal = 1;
				if(myRpg.ShokushuBreak)IndexVal = 65;
			}else{
				IndexVal = 17+myRpg.BindStatus;
				if(IndexVal>=22)IndexVal=22;
			}
			myProc.changeImage(IndexVal,true,false,false);
		}
		//破損なし
		else if(Chr.WP>=80){
			if(!myRpg.BindStatus){
				IndexVal = 2;
				if(myRpg.ShokushuBreak)IndexVal = 66;
			}else{
				IndexVal = 17+myRpg.BindStatus;
				if(IndexVal>=27)IndexVal=27;
			}
			myProc.changeImage(IndexVal,true,false,false);
		}
		//破損なし
		else if(Chr.WP>=70){
			if(!myRpg.BindStatus){
				IndexVal = 3;
				if(myRpg.ShokushuBreak)IndexVal = 67;				
			}else{
				IndexVal = 27+myRpg.BindStatus;
				if(IndexVal>=31)IndexVal=31;
			}			
			myProc.changeImage(IndexVal,true,false,false);
		}
		//破損なし
		else if(Chr.WP>=60){
			if(!myRpg.BindStatus){
				IndexVal = 4;
				if(myRpg.ShokushuBreak)IndexVal = 68;				
			}else{
				IndexVal = 31+myRpg.BindStatus;
				if(IndexVal>=35)IndexVal=35;
			}			
			myProc.changeImage(IndexVal,true,false,false);
		}
		//破損なし
		else if(Chr.WP>=50){
			if(!myRpg.BindStatus){
				IndexVal = 5;
			}else{
				IndexVal = 35+myRpg.BindStatus;
				if(IndexVal>=39)IndexVal=39;
			}			
			myProc.changeImage(IndexVal,true,false,false);
		}
		//破損なし
		else if(Chr.WP>=40){
			if(!myRpg.BindStatus){
				IndexVal = 6;
			}else{
				IndexVal = 39+myRpg.BindStatus;
				if(IndexVal>=43)IndexVal=43;
			}			
			myProc.changeImage(IndexVal,true,false,false);
		}
		//破損なし
		else if(Chr.WP>=30){
			if(!myRpg.BindStatus){
				IndexVal = 7;
			}else{
				IndexVal = 43+myRpg.BindStatus;
				if(IndexVal>=47)IndexVal=47;
			}			
			myProc.changeImage(IndexVal,true,false,false);
		}//体験版はブラウス破れ、下着まで
		else if(_self.product_flg){
			//破損なし
			if(Chr.WP>=20){
				if(!myRpg.BindStatus){
					IndexVal = 8;
				}else{
					IndexVal = 47+myRpg.BindStatus;
					if(IndexVal>=51)IndexVal=51;
				}			
				myProc.changeImage(IndexVal,true,false,false);
			}
			//破損なし
			else if(Chr.WP>=10){
				if(!myRpg.BindStatus){
					IndexVal = 9;
				}else{
					IndexVal = 51+myRpg.BindStatus;
					if(IndexVal>=55)IndexVal=55;
				}			
				myProc.changeImage(IndexVal,true,false,false);
			}
			//破損なし
			else if(Chr.WP>=5){
				if(!myRpg.BindStatus){
					IndexVal = 10;
				}else{
					IndexVal = 55+myRpg.BindStatus;
					if(IndexVal>=59)IndexVal=59;
				}			
				myProc.changeImage(IndexVal,true,false,false);
			}
			//破損なし
			else if(Chr.WP>=0){
				if(!myRpg.BindStatus){
					IndexVal = 11;
				}else{
					IndexVal = 59+myRpg.BindStatus;
					if(IndexVal>=63)IndexVal=63;
				}			
				myProc.changeImage(IndexVal,true,false,false);
			}
			else if(Chr.WP<=0){
				Chr.WP=0;
			}
		}else{
			if(Chr.WP<=20)Chr.WP = 21;
			if(!myRpg.BindStatus){
				IndexVal = 7;
			}else{
				IndexVal = 43+myRpg.BindStatus;
				if(IndexVal>=47)IndexVal=47;
			}			
			myProc.changeImage(IndexVal,true,false,false);
		}
		if(myRpg.BattleFlg)myImg.ViewGraphDec(this.BreakBar,Chr.WP,Chr.MAXWP);	
	}
		
	//攻撃フェーズ
	AttacPhase(){
		if(myRpg.BattleAnimition||(myRpg.BattleAttackCount!=0)){
			_self.setTimer(myRpg.AttacPhase,1000);
			return;
		}
		if(myRpg.MagicAnimiton||(myRpg.MagicAttackCount!=0)||myRpg.BattleLose)return;
		//攻撃アニメーション
		for(var loop=-1;loop<myRpg.TargetEnemy.length;loop++){
			if(loop!=-1){
				if(myRpg.TargetEnemy[loop]==-1)continue;
			}
			//詠唱時のみ
			var index = myRpg.MagicAnimitonNext.length;
			if(loop==-1){
				_self.setTimer(function(){
					myRpg.AttacPhaseTimer();
				},100);				
			}
			myRpg.MagicAnimitonNext[index] = loop;
		}
	}
	
	//攻撃フェーズ用タイマー
	AttacPhaseTimer(){
		if(myRpg.MagicAnimiton||(myRpg.BattleAttackCount!=0)){
			_self.setTimer(function(){
				myRpg.AttacPhaseTimer();
			},1000);
			return;
		}
		var idx = myRpg.MagicAnimitonNext.shift();
		console.log("AttackAct1:"+idx);
		if(idx!=undefined)myRpg.AttackAct1(idx);		
	}
	
	//攻撃フェーズ
	AttacPhase2(index){
		if(myRpg.MagicAnimiton||(myRpg.MagicAttackCount!=0)){
			_self.setTimer(myRpg.AttacPhase2,1000,index);
			return;
		}
		if(myRpg.BattleAnimition){
			_self.setTimer(myRpg.AttacPhase2,1000);
			return;
		}
		//攻撃アニメーション
		if(myRpg.BattleEnemy[index]==-1)return;
		_self.setTimer(function(idx){
			myRpg.AttackAct2(idx);
		},parseInt(index)*1000,index);				
	}
	
	//戦闘アニメーション１
	AttackAct1(loop){
		if(myRpg.MagicAnimiton||(myRpg.BattleAttackCount!=0)){
			return;
		}
		//詠唱切り替え
		var EfIndx = 0;
		var EnemyIdx = loop;
		//魔法設定
		var Index = parseInt(myRpg.MagicSelect);
		var Heel = myRpg.Magics[Index].MagicId!=2	
		if((loop!=-1)&&Heel){
			EfIndx = myRpg.MagicSelect;
			EnemyIdx = myRpg.TargetEnemy[loop];
			if(EnemyIdx==-1)return;			
			console.log("idx:"+loop);
		}else{
			EfIndx = myRpg.MagicAdd;
			if((loop!=-1)&&(!Heel)){
				EfIndx = myRpg.MagicSelect;
			}
		}
		myRpg.MagicAttackCount++;
		myRpg.ShowMagicEffect(EfIndx,loop,true);
	}
	
	//戦闘アニメーション2
	AttackAct2(loop){
		if(myRpg.BattleAnimition||(myRpg.MagicAttackCount!=0)){
			var index = myRpg.BattleAnimitonNext.length;
			myRpg.BattleAnimitonNext[index] = loop;
			return;
		}
		console.log("idx2:"+loop);
		//詠唱切り替え
		//var EfIndx = myRpg.BattleEnemy[loop].BattleImgID;
		//魔法設定
		myRpg.BattleAttackCount++;
		myRpg.ShowBattleEffect(loop,true);
	}

	//守る
	Guard(){
		myBT.setCommandProcessing(myBT.CommandGuard,function(){
			myRpg.ActionGurad = true;
			myRpg.TargetLock();
			_self.HiddenBox("menu1");
			myRpg.BattleProcessing();
		});
	}

	//メニュー表示
	BattleMenuReView(){
		var flg1 =((myRpg.MagicAttackCount!=0)&&(myRpg.MagicAnimitonNext.length>=0));
		var flg2 =((myRpg.BattleAttackCount!=0)&&(myRpg.BattleAnimitonNext.length>=0));
		if(flg1||flg2){			
			_self.setTimer(myRpg.BattleMenuReView,100);
			return;
		}
		//敵全滅判定
		myRpg.VictoryFlg = true;
		myRpg.ActionGurad = false;//守るコマンドの終了
		var ExeTotal = 0;//経験値
		var GoldTotal = 0;//お金
		for(var loop in myRpg.BattleEnemy){
			if(myRpg.BattleEnemy[loop].HP>=0){
				myRpg.VictoryFlg = false;
			}else{
				ExeTotal += myRpg.BattleEnemy[loop].EXE;
				GoldTotal += myRpg.BattleEnemy[loop].GOLD;
			}
		}
		//ターゲットフラグ解除
		myRpg.TargetEnemy = [-1,-1,-1];
		//戦闘が終わっているならここで終了		
		if(myRpg.BattleEndFlg)return;
		//敵が全滅しているなら分岐
		if(myRpg.VictoryFlg){
			_self.setTimer(function(){
				var msg = "";
				msg = myRpg.Charctor.Name+"は戦いに勝利した！<br>";
				msg += ExeTotal+"の経験値、"+GoldTotal+"枚の硬貨"+"を手に入れた！<br>";
				myRpg.Charctor.EXE += ExeTotal;
				myRpg.Charctor.GOLD += GoldTotal;
				msg = myRpg.LevelUpProc(msg);
				myBT.showMessage(msg);
				myProc.music(3,myST.BGM_OFF);
				//_self.setTimer(function(){
				myProc.music(4,myST.BGM_ON);
				//},1000);
				//クリックで終了
				document.onmousedown = function(){
					document.onmousedown = null;
					myProc.music(4,myST.BGM_OFF);
					//イベントじゃなければ
					if(myRpg.EventBattleCount===false){
						//バトル終了
						myRpg.BattleEndProc();
						//メニュー
						_self.ViewBox("menu1");
					}else{
						//イベント繰り返し戦闘を行う。
						myRpg.BattleFlg = false;
						myRpg.BattleEndFlg = false;
						myRpg.EventBattleCount--;
						if(myRpg.EventBattleCount!=0){
							_self.ViewBox("menu1");							
							myRpg.BattleProcessing();
						}else{
							//バトル終了
							myRpg.BattleEndProc();
							//メニュー
							_self.ViewBox("menu1");							
						}
					}
				}
			},500);
			return;
		}
		myRpg.BindEvent();
		//メニュー
		_self.ViewBox("menu1");
	}
	
	//ダメージ計算
	DamgeProc(Atc,Dfn){
		var msg = "";
		var damge = 0;
		//敵キャラ/味方キャラ判定
		if(Atc.Type == 0){
			//味方キャラ
			var MIdx = myRpg.MagicSelect;
			var addIdx = myRpg.MagicAdd;
			var CorrectValue = (Math.random()+0.4);
			if(CorrectValue>=1.1)CorrectValue = 1.1;
			var AP = Math.floor((Atc.IP+myRpg.Magics[MIdx].Value)*myRpg.Magics[addIdx].UseMp*CorrectValue);
			var DP = Dfn.DP*(Dfn.IP/Atc.IP);
			damge = Math.floor(AP-DP);
			if(damge<=-1)damge = 0;
			Atc.MP = Atc.MP-(myRpg.Magics[MIdx].UseMp*myRpg.Magics[addIdx].UseMp);
		}else{
			//敵キャラ
			if(Atc.HP<=0)return;//HPがないなら攻撃しない			
			//var AP = Math.floor(Dfn.AP*(Math.random()+0.3));
			var AP = Math.floor(Atc.AP*(Math.random()+0.3));
			var DPCorrectValue = (Math.random()+0.3);
			var DP = Math.floor(Dfn.DP*(DPCorrectValue>=1?1.1:DPCorrectValue)*(myRpg.ActionGurad?1.5:1));
			damge = AP-DP;
			if(damge<=-1)damge = 0;
			if(damge!=0)Dfn.WP -= (damge/10)>=5?5:(damge/10);
		}
		if(Atc.Type != 0)myRpg.WearBreak(Dfn);		
		Dfn.HP = Dfn.HP-damge;
		msg += Atc.Name + "の攻撃！<br>";
		if(damge>=1)msg += Dfn.Name + "に" + damge +"のダメージを与えた！";
		if(damge==0)msg += Dfn.Name + "に" + "ダメージを与えられない！";
		if(!_self.product_flg){
			if((Atc.Type != 0)&&(Dfn.WP==20))myBT.showMessage("※体験版はこれ以上衣服の破損はありません。");
		}
		if((Dfn.HP<=0)&&(Atc.Type == 0))msg += "<br>"+Dfn.Name + "を倒した！";
		if((Dfn.HP<=0)&&(Dfn.Type == 0))msg += "<br>"+Dfn.Name + "は戦いに敗れてしまった！";
		myBT.showMessage(msg);
		//HPゼロ処理
		if(Dfn.HP<=0){
			//敵の場合
			if(Dfn.Type != 0){
				//敵の絵を消す
				_self.HiddenBox(Dfn.imgId);
				if(myBE.Flg[16]!==undefined){
					if(myBE.Flg[16].select!==undefined){
						var flg = (myBE.Flg[16].select == 1);
						if(flg)myBE.Flg[16].value++;
					}
				}
			}
			//味方キャラの場合
			else{
				//戦闘を終了にさせる
				myRpg.BattleEndFlg = true;
				myRpg.BattleLose = true;
				myRpg.Charctor.HP = 1;
				document.onmousedown = function(){
					myRpg.BattleEndProc();
					//メニュー
					_self.ViewBox("menu1");
				}
			}
		}
		//パラメータ修正
		myRpg.ShowParam();
	}
	
	//回復処理
	RecoveryProc(target){
		var msg = "";
		var MIdx = myRpg.MagicSelect;
		var addIdx = myRpg.MagicAdd;
		var IPCorrectValue = (Math.random()+0.3);
		var RecoveryValue = 0;
		if(IPCorrectValue>=1.1)IPCorrectValue=1.1;
		RecoveryValue = Math.floor((target.IP+myRpg.Magics[MIdx].Value)*myRpg.Magics[addIdx].UseMp*IPCorrectValue);
		target.MP = target.MP - (myRpg.Magics[MIdx].UseMp*myRpg.Magics[addIdx].UseMp);
		target.HP += RecoveryValue;
		if(target.HP >= target.MAXHP)target.HP = target.MAXHP;
		msg += target.Name + "は" + RecoveryValue+"回復した。";
		myBT.showMessage(msg);
		myRpg.ShowParam();
	}
	
	//攻撃
	Attack(){
		myBT.setCommandProcessing(myBT.CommandBtlAttack,function(){
			//消費MPクリア
			myRpg.UseMpCheck = 0;
			
			//初回メニュー生成
			var attackMenu = _self.Elm(myRpg.AttackMenu,_self.TypeID);
			if((attackMenu == undefined)||(attackMenu == null)){
				var parent = _self.Elm("operation",_self.TypeID);
				myBT.setCommonBox(parent,myRpg.AttackMenu,"50px","100px");
				var elm = _self.Elm(myRpg.AttackMenu,_self.TypeID);
				elm.style.width = "300px";
				for(var loop in myRpg.Magics){
					var MagicId = myRpg.Magics[loop].MagicId;
					var data = myRpg.Magics[loop];
					if(MagicId>=0){
						//各魔法コマンド
						_self.AddCommand(myRpg.AttackMenu,"MagicId"+loop,data.Name+"：消費MP"+data.UseMp);
						myBT.setCommandProcessing("MagicId"+loop,function(){
							//魔法コマンドメニュー非表示
							myRpg.MagicReturn();
							//魔法コマンド設定
							myRpg.MagicSelect = this.id.replace("MagicId","");
							//詠唱コマンド初回生成
							var addMenu = _self.Elm("addMenu",_self.TypeID);
							if((addMenu == undefined)||(addMenu == null)){
								var parent = _self.Elm("operation",_self.TypeID);
								myBT.setCommonBox(parent,"addMenu","50px","100px");
								var elm2 = _self.Elm("addMenu",_self.TypeID);
								elm2.style.width = "300px";
								//詠唱コマンド
								for(var loop in myRpg.Magics){
									var MagicId = myRpg.Magics[loop].MagicId;
									var data = myRpg.Magics[loop];
									if(MagicId<0){
										//各コマンド生成
										_self.AddCommand(elm2.id,"MagicId"+loop,data.Name+"：消費MP×"+data.UseMp);
										//コマンド毎処理生成
										myBT.setCommandProcessing("MagicId"+loop,function(){
											myRpg.MagicAdd = this.id.replace("MagicId","");
											myRpg.MagicAddReturn();
											var selctIdx = myRpg.MagicSelect;
											var addIdx = myRpg.MagicAdd;
											var SelectMagic = myRpg.Magics[selctIdx].Name;
											var SelectAdd = myRpg.Magics[addIdx].UseMp;
											myRpg.UseMpCheck += (myRpg.Magics[selctIdx].UseMp*myRpg.Magics[addIdx].UseMp);
											if(myRpg.Charctor.MP >= myRpg.UseMpCheck){
												if(myRpg.Magics[selctIdx].MagicId!=2)myBT.showMessage("選択魔法＆威力："+SelectMagic+"×"+SelectAdd+"\r\nターゲットを選んでください。");
												if(myRpg.Magics[selctIdx].MagicId==2)myBT.showMessage("選択魔法＆威力："+SelectMagic+"×"+SelectAdd+"\r\n回復魔法はこのまま決定してください。");
												myRpg.TargetLock();
												myRpg.Decision();
											}else{
												myRpg.MagicAddReturn();
												myRpg.MagicMenuView();
												myBT.showMessage("MPが足りません。選択しなおしてください。");
											}
										});
									}
								}
								//詠唱コマンド・戻る生成
								_self.AddCommand(elm2.id,"MagicAddReturn","戻る");
								//詠唱コマンド非表示処理
								myRpg.MagicAddReturn = function(){
									for(var loop in myRpg.Magics){
										var MagicId = myRpg.Magics[loop].MagicId;
										if(MagicId<0){
											_self.HiddenBox("MagicId"+loop);
										}
									}
									_self.HiddenBox("MagicAddReturn");					
									_self.HiddenBox("addMenu");
								}
								//詠唱コマンド・戻る処理
								myBT.setCommandProcessing("MagicAddReturn",function(){
									myRpg.MagicAddReturn();
									myRpg.MagicMenuView();
								});								
								myBT.showMessage("詠唱タイプをクリック（タップ）で選択。\r\n消費MPの倍率で威力も変わります。");
							}else{
								//表示
								_self.ViewBox("addMenu");					
								for(var loop in myRpg.Magics){
									var MagicId = myRpg.Magics[loop].MagicId;
									if(MagicId<0){
										_self.ViewBox("MagicId"+loop);
									}
								}
								_self.ViewBox("MagicAddReturn");
								myBT.showMessage("詠唱タイプをクリック（タップ）で選択。\r\n消費MPの倍率で威力も変わります。");
							}
						});
					}
				}
				//魔法コマンドメニュー・戻る
				_self.AddCommand(myRpg.AttackMenu,"MagicReturn","戻る");
				//魔法コマンド非表示処理
				myRpg.MagicReturn = function(){
					for(var loop in myRpg.Magics){
						var MagicId = myRpg.Magics[loop].MagicId;
						if(MagicId>=0){
							_self.HiddenBox("MagicId"+loop);
						}
					}
					_self.HiddenBox("MagicReturn");					
					_self.HiddenBox(myRpg.AttackMenu);
				}
				//魔法コマンドメニュー・戻る処理
				myBT.setCommandProcessing("MagicReturn",function(){
					myRpg.MagicReturn();				
					myBT.showMessage("");
				});
				//魔法コマンドメニュー表示
				myRpg.MagicMenuView = function(){
					//表示
					_self.ViewBox(myRpg.AttackMenu);					
					for(var loop in myRpg.Magics){
						var MagicId = myRpg.Magics[loop].MagicId;
						if(MagicId>=0){
							_self.ViewBox("MagicId"+loop);
						}
					}
					_self.ViewBox("MagicReturn");
					myBT.setCommandProcessing("MagicReturn",function(){
						myRpg.MagicReturn();
						myBT.showMessage("");
					});					
					myBT.showMessage("魔法をクリック（タップ）で選択。");
				}
				myBT.showMessage("魔法をクリック（タップ）で選択。");				
			}else{
				myRpg.MagicMenuView();
			}
			return;
		});
	}
	
	//決定画面
	Decision(){
		//初回メニュー生成
		var DecisionMenu = _self.Elm(myRpg.DecisionMenu,_self.TypeID);
		_self.HiddenBox("menu1");
		if((DecisionMenu == undefined)||(DecisionMenu == null)){
			var parent = _self.Elm("operation",_self.TypeID);
			myBT.setCommonBox(parent,myRpg.DecisionMenu,"150px","130px");
			var elm = _self.Elm(myRpg.DecisionMenu,_self.TypeID);
			elm.style.width = "100px";
			//決定
			_self.AddCommand(myRpg.DecisionMenu,"Decision1","決定");
			myBT.setCommandProcessing("Decision1",function(){
				//消費MP最終チェック
				var count = 0;
				for(var loop in myRpg.TargetEnemy){
					if(myRpg.TargetEnemy[loop]!=-1)count++;
				}
				if(myRpg.Charctor.MP >= myRpg.UseMpCheck*count){
					var Index = parseInt(myRpg.MagicSelect);
					var Heel = myRpg.Magics[Index].MagicId!=2
					if(!Heel)myRpg.TargetEnemy[0]=1;
					_self.HiddenBox(myRpg.DecisionMenu);
					myRpg.BattleProcessing();
				}else{
					_self.Elm("Decision2",_self.TypeID).onmousedown();
					myRpg.TargetEnemy = [-1,-1,-1];
					myBT.showMessage("MPが足りません。選択しなおしてください。");
				}
			});
			//キャンセル
			_self.AddCommand(myRpg.DecisionMenu,"Decision2","キャンセル");
			myBT.setCommandProcessing("Decision2",function(){
				for(var index in myRpg.TargetBoxFunc){
					var key = myRpg.TargetBoxFunc[index].id;
					myImg.ImageView(key,true,true);					
				}
				_self.HiddenBox(myRpg.DecisionMenu);
				_self.ViewBox("menu1");
			});
		}else{
			_self.ViewBox(myRpg.DecisionMenu);
		}			
	}
	
	//枠消す
	BattleItem(){
		myBT.setCommandProcessing(myBT.CommandBtlItem,function(){
			_self.Elm(myBT.CommandItem,_self.TypeID).onmousedown();
		});
	}
	//逃げる
	Escape(){
		myBT.setCommandProcessing(myBT.CommandBtlEscape,function(){
			document.onmousedown = function(){
				if((myRpg.EventBattleCount===false)&&(myRpg.BattleEnemy[0].Name!="デーモン・コマンダー")&&(myRpg.BattleEnemy[0].Name!="山賊リーダー・ハーフデーモン")){
					myRpg.BattleEndProc();
					myBT.showMessage("リリィは逃げ出した！");
				}else{
					myBT.showMessage("逃げられない！");
				}
			}
		});
	}
	
	//戦闘終了処理
	BattleEndProc(){
		myBT.showMessage("");
		myRpg.BindStatus　= false;
		myRpg.ClearBattleMode();
		var elm = _self.Elm("menu1",_self.TypeID);
		elm.style.left = myRpg.MenuSave['left'];
		elm.style.top = myRpg.MenuSave['top'];
		myRpg.BattleFlg = false;
		myBT.MenuHidden();
		myBT.MenuView();
		//戦闘ミュージック停止
		myProc.music(3,myST.BGM_OFF);				
		myRpg.ShowParam(false);
		document.onmousedown = null;
		myProc.moveBefore(myProc.moveIndex);
		//日付と時間非表示
		_self.ViewBox(myBT.IDDayTime);
		//村イベントの場合
		var mvIdx = myProc.moveIndex;
		if(mvIdx==37){
			myBE.excuteEvent(7);
		}
		//遺跡ボス終了時
		else if(mvIdx==85){
			var exc = myBE.serchExecuteEvent();
			myBE.excuteEvent(exc);			
		}
		//山賊討伐終了時
		else if(myRpg.BattleEnemy[0].Name=="山賊リーダー・ハーフデーモン"){
			myRpg.BattleFlg = true;
			myBE.excuteEvent(18);
		}
		//通常戦闘敗北
		else if(myRpg.BattleLose){
			myRpg.BattleFlg = true;
			myBE.excuteEvent((myST.GetEvent().length-1));
		}
	}

	//敵出現パターン
	ShowEnemyPatturn(){
		myRpg.AreaEnemyPattern = function(){
			var mvIdx = myProc.moveIndex;
			//森/街入り口
			if((mvIdx==25)||(mvIdx==29)||(mvIdx==57)){
				myRpg.AreaEnemyArray.length = 0;
				for(var idx=0;idx<=4;idx++){
					myRpg.AreaEnemyArray[myRpg.AreaEnemyArray.length] = myRpg.EnemyArray[idx];
				}
			}
			//村イベント用
			if(mvIdx==37){
				myRpg.AreaEnemyArray.length = 0;
				for(var idx=0;idx<=4;idx++){
					myRpg.AreaEnemyArray[myRpg.AreaEnemyArray.length] = myRpg.EnemyArray[idx];
				}
			}
			//遺跡
			if((mvIdx==41)||(mvIdx==81)||(mvIdx==85)){
				myRpg.AreaEnemyArray.length = 0;
				for(var idx=5;idx<8;idx++){
					myRpg.AreaEnemyArray[myRpg.AreaEnemyArray.length] = myRpg.EnemyArray[idx];
				}
			}
			//北の村
			if((mvIdx==97)){
				myRpg.AreaEnemyArray.length = 0;
				for(var idx=9;idx<16;idx++){
					myRpg.AreaEnemyArray[myRpg.AreaEnemyArray.length] = myRpg.EnemyArray[idx];
				}
			}			
			//遺跡・イベント
			var eventNo1 = 3;
			var eventNo2 = 6;
			var eventNo3 = 10;
			var event_boss = 8;
			if((!myBE.Flg[4])||(myBE.Flg[4]===undefined)){
				if((mvIdx==85)&&(myBE.Flg[eventNo1]==2)&&(!myBE.EndFlg[eventNo2])){
					var event = myBE.getBaseEvent(eventNo2);
					event[myBE.End] = true;
					myRpg.AreaEnemyArray.length = 0;
					myRpg.AreaEnemyArray[myRpg.AreaEnemyArray.length] = myRpg.EnemyArray[event_boss];
				}else if((mvIdx==85)&&(myBE.Flg[eventNo1]!=2)&&(!myBE.EndFlg[eventNo3])){
					var event = myBE.getBaseEvent(eventNo3);
					event[myBE.End] = true;
					myRpg.AreaEnemyArray.length = 0;
					myRpg.AreaEnemyArray[myRpg.AreaEnemyArray.length] = myRpg.EnemyArray[event_boss];
				}
			}
			//山賊討伐
			if((myBE.Flg[16]!==undefined)&&(myBE.Flg[16]!=false)){
				if(((mvIdx==109)&&(myBE.EndFlg[21]))||((mvIdx==97)&&(myBE.EndFlg[17]))){
					myRpg.AreaEnemyArray.length = 0;
					myRpg.AreaEnemyArray[myRpg.AreaEnemyArray.length] = myRpg.EnemyArray[16];//山賊リーダー・ハーフデーモン				
				}
			}
		}
		_self.setTimer(function(){
			//出現パターン設定
			var ptr1 = Math.floor(Math.random() * myRpg.EnemyPatturn.length);
			var patturn = myRpg.EnemyPatturn[ptr1];
			//遺跡イベント用/パターン固定
			if((myProc.moveIndex==85)&&(myBE.Flg[3]==2)&&(!myBE.EndFlg[6])){
				patturn = myRpg.EnemyPatturn[2];
			}else if((myProc.moveIndex==85)&&(myBE.Flg[3]!=2)&&(!myBE.EndFlg[10])){
				patturn = myRpg.EnemyPatturn[2];
			}
			//山賊討伐用・パターン固定
			if((myBE.Flg[16]!==undefined)&&(myBE.Flg[16]!=false)){
				if((myBE.Flg[16].select==1)&&(myProc.moveIndex==97)){
					patturn = myRpg.EnemyPatturn[2];
				}
				if((myBE.Flg[16].select==2)&&(myProc.moveIndex==109)){
					patturn = myRpg.EnemyPatturn[2];
				}
			}
			//表示設定
			do{
				myRpg.AreaEnemyPattern();
				myRpg.BattleEnemy.length = 0;
				for(var loop in patturn){
					var enemy = 0;
					var Count = 10;
					if(loop>patturn.length)continue;
					while(1){
						//出現敵設定
						enemy = Math.floor(Math.random() * myRpg.AreaEnemyArray.length);
						//ループ値が超えるようなら
						if(loop>=patturn.length){
							//処理から抜ける
							console.log("ShowEnemyPatturn...breakOut");
							break;
						}
						//出現する敵のタイプがパターンと異なるなら繰り返す。
						if(myRpg.AreaEnemyArray[enemy].MarginType == patturn[loop][0]){
							var index = (parseInt(loop)+1);
							myImg.SetImgPos("monster"+index,patturn[loop][1]);
							myRpg.ShowEnemy("monster"+index,enemy,false);
							myRpg.BattleEnemy[myRpg.BattleEnemy.length] = JSON.parse(JSON.stringify(myRpg.AreaEnemyArray[enemy]));
							myRpg.BattleEnemy[myRpg.BattleEnemy.length-1].MonsterID = "monster"+index;
							break;
						}					
						//どうしてもパターンが一致しない場合。
						Count--;
						if(Count <= 0){
							//画像設定クリア
							myImg.SetIndexPos("monster1",0);
							myImg.SetIndexPos("monster2",0);
							myImg.SetIndexPos("monster3",0);
							//パターン再設定
							ptr1 = Math.floor(Math.random() * myRpg.EnemyPatturn.length);
							patturn = myRpg.EnemyPatturn[ptr1];
							Count = 10;
							loop = 0;
							enemy = "";
							//戦闘敵データクリア
							myRpg.BattleEnemy.length = 0;
							console.log("ShowEnemyPatturn...reset");
							continue;
						}
					}
				}
				console.log("ShowEnemyPatturn...End patturn:"+patturn.length+",BattleEnemy:"+myRpg.BattleEnemy.length);
			}while(!(patturn.length == myRpg.BattleEnemy.length));
			console.log("------BattleEnemy-------");
			console.log(myRpg.BattleEnemy);									
			myImg.AllImageView(true,true,false);
		},100);
	}
	
	//敵非表示
	AllClearEnemy(){
		//表示クリア設定
		for(var loop=1;loop<=3;loop++){
			myImg.SetIndexPos("monster"+loop,0);
			myImg.ClearImage("monster"+loop);
		}
	}
	
	//敵表示
	ShowEnemy(posIdx,EmIndx,viewFlg=true,clearFlg=true){
		if(clearFlg)myImg.ClearImage(posIdx);
		var Enemy = this.AreaEnemyArray[EmIndx];
		var Mrgin = 0.5;
		if(Enemy.MarginType=="M")Mrgin = 0.4;
		if(Enemy.MarginType=="L")Mrgin = 0.35;
		myImg.SetIndexPos(posIdx,Enemy.ImgID);
		myImg.SetImageMagn(posIdx,Mrgin);
		var id = myImg.GetCanvasTarget(posIdx);
		_self.ViewBox(id);
		if(viewFlg)myImg.ImageView(posIdx,true,clearFlg);
	}
	
	//魔法効果描画表示
	ShowMagicEffect(EfIndx,EnemyIdx,viewFlg=true,clearFlg=true){
		var idx = "MagicEffect";
		var Magic = myRpg.Magics[EfIndx];
		var Mrgin = 0.5;
		if(!myRpg.MagicAnimiton)myRpg.MagicCount = 0;
		//アニメーションカウントチェック
		if(myRpg.MagicCount>Magic.Count||(myRpg.Charctor.HP<0)){
			if(EnemyIdx!=-1){
				if(Magic.Type == 0)myRpg.DamgeProc(myRpg.Charctor,myRpg.BattleEnemy[EnemyIdx]);
				if(Magic.Type == 1)myRpg.RecoveryProc(myRpg.Charctor);
			}
			//超えていたら最後にアニメーション消去
			myImg.SetIndexPos(idx,0);
			if(viewFlg)myImg.ImageView(idx,true,clearFlg);			
			//アニメーションフラグ停止
			myRpg.MagicAnimiton = false;
			//次のアニメーションがあるなら
			if(myRpg.MagicAnimitonNext.length!=0){
				//次のアニメーションを再生
				var data = myRpg.MagicAnimitonNext.shift();
				console.log("NextMagic:"+data);
				if(data!=undefined)myRpg.AttackAct1(data);
			}
			//アニメーションカウントを減算しておく
			myRpg.MagicAttackCount--;
			//魔法アニメーションがないなら
			if((myRpg.MagicAnimitonNext.length==0)&&(myRpg.MagicAttackCount<=0)&&(Magic.MagicId>=0)){
				//敵攻撃アニメーションをチェック
				if(myRpg.BattleAnimitonNext.length!=0){
					//あるなら再生
					var data = myRpg.BattleAnimitonNext.shift();
					myRpg.AttackAct2(data);
				}
			}
			return;
		}
		var Option = [
			EfIndx,EnemyIdx,viewFlg,clearFlg,idx,Magic
		];
		var time = 100;
		if(Magic.MagicId <= -1){
			myImg.SetImgPos(idx,[60,150]);
			if(_self.width_hi<400)myImg.SetImgPos(idx,[30,140]);
			myImg.SetImageMagn(idx,1);
		}else if(Magic.Type==0){
			var x_pos = myRpg.TargetBoxFunc[EnemyIdx].x1;
			var y_pos = myRpg.TargetBoxFunc[EnemyIdx].y1;
			var Magn = 0.5;
			if(myRpg.MagicAdd==0){
				x_pos = x_pos-50;
				y_pos = y_pos-50;
				if(myRpg.BattleEnemy[EnemyIdx].MarginType=="L"){
					y_pos = y_pos+50;
				}
			}			
			if(myRpg.MagicAdd==1){
				Magn = 0.6;
				x_pos = x_pos-80;
				y_pos = y_pos-60;
				if(myRpg.BattleEnemy[EnemyIdx].MarginType=="L"){
					x_pos = x_pos+20;
					y_pos = y_pos+10;
				}
			}
			if(myRpg.MagicAdd==2){
				Magn = 0.8;
				x_pos = x_pos-140;
				y_pos = y_pos-120;
				if(myRpg.BattleEnemy[EnemyIdx].MarginType=="L"){
					x_pos = x_pos+20;
					y_pos = y_pos+30;
				}
			}
			//敵サイズで表示
			var EnemyPos = [x_pos,y_pos];
			myImg.SetImgPos(idx,EnemyPos);
			myImg.SetImageMagn(idx,Magn);
		}else if(Magic.Type==1){
			var axisBox = [240,140];
			if(_self.width_hi<400)axisBox = [200,140];
			var Magn = 0.5;
			if(myRpg.MagicAdd==1){
				Magn = 0.6;
				axisBox[0] = axisBox[0] -50;
				axisBox[1] = axisBox[1] -50;
			}
			if(myRpg.MagicAdd==2){
				Magn = 0.8;
				axisBox[0] = axisBox[0] -80;
				axisBox[1] = axisBox[1] -60;
			}			
			myImg.SetImgPos(idx,axisBox);
			myImg.SetImageMagn(idx,Magn);
		}
		if(myRpg.MagicCount==0)time = 0;
		if(!myRpg.MagicAnimiton){
			var index = 0;
			if(Magic.MagicId<=-1)index = 1;
			if(Magic.MagicId==0)index = 2;
			if(Magic.MagicId==1)index = 3;
			if(Magic.MagicId==2)index = 5;
			if(Magic.MagicId==3)index = 4;
			//二重再生防止
			if(((myProc.musSEBackIndex==index)&&(index!=1))||(myProc.musSEBackIndex!=index)){
				myProc.SESound(index,1);//初回のみ効果音
				myProc.SESound(index,0);//初回のみ効果音
				myProc.musSEBackIndex = index;
			}else{
				myProc.musSEBackIndex = 0;
			}
		}
		myRpg.MagicAnimiton = true;		
		_self.setTimer(function(arg){
			var ImgIdx = myImg.GetIndexPos(arg[4]);
			var EfIdx = myRpg.MagicCount++;
			if(!myRpg.MagicAnimiton)return;
			myImg.SetIndexPos(arg[4],arg[5].ImgId+EfIdx);
			if(viewFlg)myImg.ImageView(arg[4],true,clearFlg);
			myRpg.ShowMagicEffect(arg[0],arg[1],arg[2],arg[3]);
		},time,Option);
	}
	
	//戦闘効果描画表示
	ShowBattleEffect(EfIndx,viewFlg=true,clearFlg=true){
		var idx = "BattleEffect";
		var BattleData = myRpg.BattleEnemy[EfIndx];
		if(!myRpg.BattleAnimition)myRpg.BattleCount = 0;	
		if(BattleData.Count==undefined)return;
		if((myRpg.BattleCount>BattleData.Count)||(BattleData.HP<=0)||(myRpg.Charctor.HP<0)){
			myRpg.DamgeProc(BattleData,myRpg.Charctor);
			//攻撃描写後始末
			myImg.SetIndexPos(idx,0);
			if(viewFlg)myImg.ImageView(idx,true,clearFlg);			
			//敵攻撃位置から戻す
			var xpos = myRpg.TargetBoxFunc[EfIndx].x1;
			var width = myRpg.TargetBoxFunc[EfIndx].x2;
			var ypos = myRpg.TargetBoxFunc[EfIndx].y1
			var height = myRpg.TargetBoxFunc[EfIndx].y2;
			myImg.SetImgPos(BattleData.MonsterID,[xpos,ypos]);
			if(viewFlg)myImg.ImageView(BattleData.MonsterID,viewFlg,clearFlg);
			myImg.ClearImage(BattleData.MonsterID,[width,0,width+30,height]);
			myRpg.BattleAnimition = false;
			if(myRpg.BattleAnimitonNext.length!=0){
				var data = myRpg.BattleAnimitonNext.shift();
				if(!myRpg.BattleLose)myRpg.AttackAct2(data);
			}
			myRpg.BattleAttackCount--;
			if((myRpg.BattleAnimitonNext.length==0)&&(myRpg.BattleAttackCount<=0)){
				if(myRpg.MagicAnimitonNext.length!=0){
					var data = myRpg.MagicAnimitonNext.shift();
					if(!myRpg.BattleLose)myRpg.AttackAct1(data);
				}
			}			
			return;
		}		
		var Option = [
			EfIndx,viewFlg,clearFlg,idx,BattleData
		];
		var time = 100;
		//敵攻撃位置へ移動
		var xpos = myRpg.TargetBoxFunc[EfIndx].x1+30;
		var ypos = myRpg.TargetBoxFunc[EfIndx].y1
		myImg.SetImgPos(BattleData.MonsterID,[xpos,ypos]);
		if(viewFlg)myImg.ImageView(BattleData.MonsterID,true,true);
		myImg.ClearImage(BattleData.MonsterID,[0,0,xpos,_self.height_hi]);
		//攻撃アニメーション位置設定
		myImg.SetImgPos(idx,[240,140]);
		if(_self.width_hi<400)myImg.SetImgPos(idx,[220,140]);
		if(myRpg.BattleCount==0)time = 0;
		_self.setTimer(function(arg){
			var EfIdx = myRpg.BattleCount++;
			if(!myRpg.BattleAnimition){
				myProc.SESound(0,1);//初回のみ効果音
				myProc.SESound(0,0);//初回のみ効果音
			}				
			myRpg.BattleAnimition = true;		
			myImg.SetIndexPos(arg[3],arg[4].BattleImgID+EfIdx);
			if(viewFlg)myImg.ImageView(arg[3],arg[1],arg[2]);
			myRpg.ShowBattleEffect(arg[0],arg[1],arg[2]);
		},time,Option);		
	}
	
	//敵選択
	TargetLock(){
		//表示クリア設定
		var ShowId = "";
		myRpg.TargetBoxFunc.length = 0;
		var Index = parseInt(myRpg.MagicSelect);
		var Heel = myRpg.Magics[Index].MagicId!=2	
		for(var loop=1;loop<=3;loop++){
			if(myRpg.BattleEnemy.length<loop)return;
			//クリック座標取得
			var id = myImg.GetCanvasTarget("monster"+loop);
			var Data = _self.GetImage("monster"+loop);
			var Mrgin = myImg.GetImageMagn("monster"+loop);
			var xpos = myImg.GetImgPos("monster"+loop,0);
			var ypos = myImg.GetImgPos("monster"+loop,1);
			//座標設定
			myRpg.BattleEnemy[loop-1].imgId = id;
			myRpg.TargetBoxFunc[myRpg.TargetBoxFunc.length] = {id:"monster"+loop}
			myRpg.TargetBoxFunc[myRpg.TargetBoxFunc.length-1].x1 = xpos;
			myRpg.TargetBoxFunc[myRpg.TargetBoxFunc.length-1].x2 = xpos+Data.Buff.width*Mrgin;
			myRpg.TargetBoxFunc[myRpg.TargetBoxFunc.length-1].y1 = ypos;
			myRpg.TargetBoxFunc[myRpg.TargetBoxFunc.length-1].y2 = ypos+Data.Buff.height*Mrgin;
			//回復時はここまで
			if((!Heel)||(myRpg.ActionGurad))continue;
			//クリック時判定
			myRpg.TargetBoxFunc[myRpg.TargetBoxFunc.length-1].func = function(e,index){
				var canvas = _self.Elm(this.id,_self.TypeID);
				if((e.x>=myRpg.TargetBoxFunc[index].x1)&&(e.x<=myRpg.TargetBoxFunc[index].x2)){
					if((e.y>=myRpg.TargetBoxFunc[index].y1)&&(e.y<=myRpg.TargetBoxFunc[index].y2)){
						var id = myRpg.BattleEnemy[index].imgId;
						if(myRpg.TargetEnemy[index]==-1){
							var canvas = _self.Elm(id,_self.TypeID);
							var ctx = canvas.getContext('2d'); 
							ctx.strokeStyle   = 'red'; 
							var xpos = myRpg.TargetBoxFunc[index].x1+25;
							var ypos = myRpg.TargetBoxFunc[index].y1+25;
							var width = (myRpg.TargetBoxFunc[index].x2 - myRpg.TargetBoxFunc[index].x1)/2;
							var height = (myRpg.TargetBoxFunc[index].y2 - myRpg.TargetBoxFunc[index].y1)/2;
							ctx.strokeRect(xpos,ypos,width,height);
							myRpg.TargetEnemy[index] = id;
							var count = 0;
							for(var loop in myRpg.TargetEnemy){
								if(myRpg.TargetEnemy[loop]!=-1)count++;
							}
							if(myRpg.Charctor.MP < myRpg.UseMpCheck*count){
								myBT.showMessage("MPが足りません。選択しなおしてください。");
								myRpg.TargetEnemy[index] = [-1,-1,-1];
							}
						}else{
							var key = myRpg.TargetBoxFunc[index].id;
							myImg.ImageView(key,true,true);
							myRpg.TargetEnemy[index] = -1;
						}
					}
				}
			}
		}		
	}
}
myRpg = new MyRPGSystem();