///////// ゴースト模擬戦闘 関連辞書
///////// written by C.Ponapalt


/*********************************************************
* ゴースト模擬戦闘 コア
* Special Thanks To hinoharu.
*********************************************************/

// 【入力】キャラクター名列挙。カンマ区切り。\p[2]以降があるならそれも。

#define PROPERTY_CHARACTER_NAME 'びー'

OnJitenBattle
{
	_carray = SPLIT(PROPERTY_CHARACTER_NAME,',')
	_charside1 = ASEARCH(reference[1],_carray)
	_charside2 = ASEARCH(reference[2],_carray)
	
	if _charside1 >= 0 {
		_ref = (reference[0],reference[2],reference[3],reference[4],reference[5],reference[6])
		
		_func = 'BATTLE.' + TOSTR(_charside1) + '.' + reference[3]
		if ISFUNC(_func) {
			_funcref = _func + '(_ref)' 
			EVAL(_funcref )
			return
		}
		
		_func = 'BATTLE.' + TOSTR(_charside1) + '.Attack'
		if ISFUNC(_func) {
			_funcref = _func + '(_ref)' 
			EVAL(_funcref )
			return
		}
	}
	
	if _charside2 >= 0 {
		_ref = (reference[0],reference[1],reference[3],reference[4],reference[6],reference[5])
		
		_func = 'BATTLE.' + TOSTR(_charside2) + '.Defense'
		if ISFUNC(_func) {
			_funcref = _func + '(_ref)' 
			EVAL(_funcref )
			return
		}
	}
}

BATTLE.0.Attack
{
	if TOINT(_argv[5]) <= 0
	{
		BATTLE.0.Win(_argv)
	}
	else
	{
		_func = 'BATTLE.0.Attack.' + _argv[2]
		if ISFUNC(_func) { EVAL( _func + '(_argv)') }
	}
}

BATTLE.0.Defense
{
	if TOINT(_argv[4]) <= 0
	{
		BATTLE.0.Lose(_argv)
	}
	else
	{
		_func = 'BATTLE.0.Defense.' + _argv[2]
		if ISFUNC(_func) { EVAL( _func + '(_argv)') }
	}
}

BATTLE.1.Attack
{
	if TOINT(_argv[5]) <= 0
	{
		BATTLE.1.Win(_argv)
	}
	else
	{
		_func = 'BATTLE.1.Attack.' + _argv[2]
		if ISFUNC(_func) { EVAL( _func + '(_argv)') }
	}
}


BATTLE.1.Defense
{
	if TOINT(_argv[4]) <= 0
	{
		BATTLE.1.Lose(_argv)
	}
	else
	{
		_func = 'BATTLE.1.Defense.' + _argv[2]
		if ISFUNC(_func) { EVAL( _func + '(_argv)') }
	}
}


////////////////////////////////////////////////////////////////////////
//// ここから編集する部分 //////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////

// 以下の変数が使えます。
// _argv[0] : 送信元「ごーすとじてん」
// _argv[1] : 相手のキャラクタ名
// _argv[2] : 戦闘結果 (物理|精神)攻撃(成功|失敗|回避|ミス) 開始時「模擬戦闘開始」
// _argv[3] : 攻撃により発生したダメージ
// _argv[4] : 自分のLIFE
// _argv[5] : 相手のLIFE

/*********************************************************
* \h
*********************************************************/

BATTLE.0.模擬戦闘開始
{
	// 【入力】\hの戦闘開始時の挨拶
	"\0\s[0]はい。\_w[500]\s[5]よろしくお願いします。\e"
}

/////////////////////
// \hの攻撃
/////////////////////

/* 物理攻撃 */

BATTLE.0.Attack.物理攻撃成功
{
	// 【入力】\hの物理攻撃が成功したときの台詞
	"\0\s[7]えいっ！\e"
	"\0\s[7]やっ！\e"
	"\0\s[7]うりゃーっ！\e"
}

BATTLE.0.Attack.物理攻撃失敗
{
	// 【入力】\hの物理攻撃が失敗したときの台詞
	"\0\s[3]あれー？\e"
}

BATTLE.0.Attack.物理攻撃回避
{
	// 【入力】\hの物理攻撃が回避されたときの台詞
	"\0\s[7]もうっ！\e"
}

BATTLE.0.Attack.物理攻撃ミス
{
	// 【入力】\hの物理攻撃が発動ミスしたときの台詞
	"\0\s[4]効いてない……。\e"
}

/* 精神攻撃 */

BATTLE.0.Attack.精神攻撃成功
{
	// 【入力】\hの精神攻撃が成功したときの台詞
	"\0\s[7]それっ！\e"
	"\0\s[7]逃がさないわっ！\e"
	"\0\s[7]これでもくらえっ！\e"
}

BATTLE.0.Attack.精神攻撃失敗
{
	// 【入力】\hの精神攻撃が失敗したときの台詞
	"\0\s[3]あれれ……？\e"
}

BATTLE.0.Attack.精神攻撃回避
{
	// 【入力】\hの精神攻撃が回避されたときの台詞
	"\0\s[3]逃げられちゃった……。\e"
}

BATTLE.0.Attack.精神攻撃ミス
{
	// 【入力】\hの物理攻撃が発動ミスしたときの台詞
	"\0\s[4]やっぱりだめです……。\e"
}


/////////////////////
// \hの防御
/////////////////////

/* 物理攻撃防御 */

BATTLE.0.Defense.物理攻撃成功
{
	// 【入力】\hに対する物理攻撃の防御に失敗したときの台詞
	"\0\s[4]あうう……。\e"
	"\0\s[4]痛い……。\e"
}

BATTLE.0.Defense.物理攻撃失敗
{
	// 【入力】\hに対する物理攻撃の防御に成功したときの台詞
	// 原因：相手の攻撃失敗
	"\0\s[5]どうかしましたか？\e"
}

BATTLE.0.Defense.物理攻撃回避
{
	// 【入力】\hに対する物理攻撃の防御に成功したときの台詞
	// 原因：回避成功
	"\0\s[5]当たらないですよっ！\e"
}

BATTLE.0.Defense.物理攻撃ミス
{
	// 【入力】\hに対する物理攻撃の防御に成功したときの台詞
	// 原因：相手の攻撃発動ミス
	"\0\s[1]手加減して頂かなくても、平気ですよ？\e"
}

/* 精神攻撃防御 */

BATTLE.0.Defense.精神攻撃成功
{
	// 【入力】\hに対する精神攻撃の防御に失敗したときの台詞
	"\0\s[4]ひどい……。\e"
	"\0\s[4]なんてことするんですか……。\e"
}

BATTLE.0.Defense.精神攻撃失敗
{
	// 【入力】\hに対する精神攻撃の防御に成功したときの台詞
	// 原因：相手の攻撃失敗
	"\0\s[2]落ち着いてください、%_argv[1]さん。\e"
}

BATTLE.0.Defense.精神攻撃回避
{
	// 【入力】\hに対する精神攻撃の防御に成功したときの台詞
	// 原因：回避成功
	"\0\s[6]そうはいきません。\e"
	"\0\s[5]無駄ですよっ！\e"
}

BATTLE.0.Defense.精神攻撃ミス
{
	// 【入力】\hに対する精神攻撃の防御に成功したときの台詞
	// 原因：相手の攻撃発動ミス
	"\0\s[0]……何かなさいましたか？\e"
}

/////////////////////
// \h・結末
/////////////////////

BATTLE.0.Win
{
	// 【入力】\hの攻撃の結果、相手のLIFE<=0となり、勝利したときの台詞
	"\0\s[5]またお相手しますよ、%_argv[1]さん。\e"
	"\0\s[5]いい勝負でしたね、%_argv[1]さん。\e"
}

BATTLE.0.Lose
{
	// 【入力】相手の攻撃の結果、自分のLIFE<=0となり、敗北したときの台詞
	"\0\s[3]次は負けませんよ……。\e"
	"\0\s[4]修行し直しですね……。\e"
}



/*********************************************************
* \u
*********************************************************/

BATTLE.1.模擬戦闘開始
{
	// 【入力】\uの戦闘開始時の挨拶
}

/////////////////////
// \uの攻撃
/////////////////////

/* 物理攻撃 */

BATTLE.1.Attack.物理攻撃成功
{
	// 【入力】\uの物理攻撃が成功したときの台詞
}

BATTLE.1.Attack.物理攻撃失敗
{
	// 【入力】\uの物理攻撃が失敗したときの台詞
}

BATTLE.1.Attack.物理攻撃回避
{
	// 【入力】\uの物理攻撃が回避されたときの台詞
}

BATTLE.1.Attack.物理攻撃ミス
{
	// 【入力】\uの物理攻撃が発動ミスしたときの台詞
}

/* 精神攻撃 */

BATTLE.1.Attack.精神攻撃成功
{
	// 【入力】\uの精神攻撃が成功したときの台詞
}

BATTLE.1.Attack.精神攻撃失敗
{
	// 【入力】\uの精神攻撃が失敗したときの台詞
}

BATTLE.1.Attack.精神攻撃回避
{
	// 【入力】\uの精神攻撃が回避されたときの台詞
}

BATTLE.1.Attack.精神攻撃ミス
{
	// 【入力】\uの物理攻撃が発動ミスしたときの台詞
}


/////////////////////
// \uの防御
/////////////////////

/* 物理攻撃防御 */

BATTLE.1.Defense.物理攻撃成功
{
	// 【入力】\uに対する物理攻撃の防御に失敗したときの台詞
}

BATTLE.1.Defense.物理攻撃失敗
{
	// 【入力】\uに対する物理攻撃の防御に成功したときの台詞
	// 原因：相手の攻撃失敗
}

BATTLE.1.Defense.物理攻撃回避
{
	// 【入力】\uに対する物理攻撃の防御に成功したときの台詞
	// 原因：回避成功
}

BATTLE.1.Defense.物理攻撃ミス
{
	// 【入力】\uに対する物理攻撃の防御に成功したときの台詞
	// 原因：相手の攻撃発動ミス
}

/* 精神攻撃防御 */

BATTLE.1.Defense.精神攻撃成功
{
	// 【入力】\uに対する精神攻撃の防御に失敗したときの台詞
}

BATTLE.1.Defense.精神攻撃失敗
{
	// 【入力】\uに対する精神攻撃の防御に成功したときの台詞
	// 原因：相手の攻撃失敗
}

BATTLE.1.Defense.精神攻撃回避
{
	// 【入力】\uに対する精神攻撃の防御に成功したときの台詞
	// 原因：回避成功
}

BATTLE.1.Defense.精神攻撃ミス
{
	// 【入力】\uに対する精神攻撃の防御に成功したときの台詞
	// 原因：相手の攻撃発動ミス
}

/////////////////////
// \u・結末
/////////////////////

BATTLE.1.Win
{
	// 【入力】\uの攻撃の結果、相手のLIFE<=0となり、勝利したときの台詞
}

BATTLE.1.Lose
{
	// 【入力】相手の攻撃の結果、自分のLIFE<=0となり、敗北したときの台詞
}

/*********************************************************
* ゴーストプロパティを返す
*********************************************************/

/////////////////////
// プロパティ要求対応 
/////////////////////

OnRequestValues
{
	_cname = PROPERTY_CHARACTER_NAME
	
	_n = ARRAYSIZE(reference)
	_return_script = ''
	
	for _i = 1 ; _i < _n ; _i++ {
		_param = 'プロパティ' + REPLACE(reference[_i], '-', '')
		if ISFUNC(_param) {
			_result = EVAL(_param)
			if STRLEN(_result) {
				_return_script += ',"'
				_return_script += reference[_i]
				_return_script += '='
				_return_script += _result
				_return_script += '"'
			}
		}
	}
	
	if STRLEN(_return_script) {
		"\C\![raiseother,%(reference[0]),OnGetValues,%(_cname[0,','])%(_return_script)]"
	}
}

OnRequestProperty
{
	_text = ''
	_cname = PROPERTY_CHARACTER_NAME
	
	if TOINT(reference[1]) < 0 { //負の場合はキャラ数を返すでっちあげ仕様
		_text = '1'
	}
	else {
		if ISFUNC('プロパティ' + reference[1] + reference[2]) {
			_text = EVAL('プロパティ' + reference[1] + reference[2])
		}
	}
	if STRLEN(_text) {
		"\C\![raiseother,%(reference[0]),OnGetProperty,%(_cname[0,',']),%(reference[1]),%(reference[2]),%(_text)]"
	}
}

//プロパティ-1
プロパティNOC
{
	1
}
プロパティNOB
{
	1
}
//for OnRequestProperty
プロパティ1NOC
{
	1
}
プロパティ1NOB
{
	1
}

//プロパティ0
プロパティ0name
{
	プロパティ0キャラクター名
}
プロパティ0キャラクター名
{
	PROPERTY_CHARACTER_NAME[0,',']
}
プロパティ0年齢層
{
	プロパティ0世代
}
プロパティ0世代
{
	// 【入力】\hの年齢層・世代 (子供|若者|大人|老人|不明)
	'子供'
}
プロパティ0性別
{
	// 【入力】\hの性別 (男性|女性|雌雄同体|不明)
	'女性'
}
プロパティ0種族
{
	// 【入力】\hの種族
	'人間'
}
プロパティ0種族タイプ
{
	// 【入力】\hの種族タイプ (人型|獣型|植物型|不定形型|無機物型)
	'人型'
}
プロパティ0プロフィール
{
	// 【入力】\hのプロフィール文章
	'\nゴーストの世界で通じる言葉を勉強中の女の子。'
}
プロパティ0カード画像パス
{
	'..\..\..\bee\shell\master\surface000.png'
}

//CyberSphere
//とりあえず基本的にLIFE以外を足して60前後になるように調整すると「ふつう」になる

プロパティ0行動タイプ
{
	// 【入力】\hの行動タイプ（属性？） (物理攻撃|精神攻撃)
	'物理攻撃' 
}
プロパティ0LIFE
{
	// 【入力】\hの体力。即値（int）。
	9
}
プロパティ0STR
{
	// 【入力】\hの腕力。物理攻撃力。即値（int）。
	8
}
プロパティ0DEX
{
	// 【入力】\hの器用さ。物理攻撃命中率。即値（int）。
	11
}
プロパティ0AGL
{
	// 【入力】\hの敏捷さ。物理攻撃回避率。即値（int）。
	10
}
プロパティ0MIN
{
	// 【入力】\hの精神力。精神攻撃力。即値（int）。
	10
}
プロパティ0INT
{
	// 【入力】\hの知力。精神攻撃命中率。即値（int）。
	12
}
プロパティ0SEN
{
	// 【入力】\hの感性。精神攻撃回避率。即値（int）。
	12
}

//プロパティ1
プロパティ1name
{
	プロパティ1キャラクター名
}
プロパティ1キャラクター名
{
	PROPERTY_CHARACTER_NAME[1,',']
}
プロパティ1年齢層
{
	プロパティ1世代
}
プロパティ1世代
{
	// 【入力】\uの年齢層・世代 (子供|若者|大人|老人|不明)
}
プロパティ1性別
{
	// 【入力】\uの性別 (男性|女性|雌雄同体|不明)
}
プロパティ1種族
{
	// 【入力】\uの種族
}
プロパティ1種族タイプ
{
	// 【入力】\uの種族タイプ (人型|獣型|植物型|不定形型|無機物型)
}
プロパティ1プロフィール
{
	// 【入力】\uのプロフィール文章
}
プロパティ1カード画像パス
{
	//
}

//CyberSphere
//とりあえず基本的にLIFE以外を足して60前後になるように調整すると「ふつう」になる

プロパティ1行動タイプ
{
	// 【入力】\uの行動タイプ（属性？） (物理攻撃|精神攻撃)
}
プロパティ1LIFE
{
	// 【入力】\uの体力。即値（int）。
}
プロパティ1STR
{
	// 【入力】\uの腕力。物理攻撃力。即値（int）。
}
プロパティ1DEX
{
	// 【入力】\uの器用さ。物理攻撃命中率。即値（int）。
}
プロパティ1AGL
{
	// 【入力】\uの敏捷さ。物理攻撃回避率。即値（int）。
}
プロパティ1MIN
{
	// 【入力】\uの精神力。精神攻撃力。即値（int）。
}
プロパティ1INT
{
	// 【入力】\uの知力。精神攻撃命中率。即値（int）。
}
プロパティ1SEN
{
	// 【入力】\uの感性。精神攻撃回避率。即値（int）。
}

