/********************************************************* ▼ごーすとじてん模擬戦闘対応用テンプレート for 文・YAYA VERSION 2.0 (2007/09/09) 日野春鉄道人間工学研究所 http://hinoharu.s54.xrea.com/ ▼Don様のゴースト「ごーすとじてん」の模擬戦闘にセリフ対応するためのテンプレート(YAYA版)です。 手っ取り早くセリフを入力して喋らせたい方向け。 最低限、BATTLE.0.Property関数内のパラメータ入力すれば、\0による戦闘は可能です。 ▼使い方 【入力】と書いてある欄に台詞やパラメータを列挙してください。 ▼そのほか 各【入力】欄で、以下の引数を参照できます。 _argv[0] : 送信元「ごーすとじてん」 _argv[1] : 攻撃側キャラクタ名 _argv[2] : 防御側キャラクタ名 _argv[3] : 戦闘結果 (物理|精神)攻撃(成功|失敗|回避|ミス) 開始時「模擬戦闘開始」 _argv[4] : 攻撃により発生したダメージ _argv[5] : 攻撃側LIFE _argv[6] : 防御側LIFE ▼変更点 ・関数名に0、1を使い汎用化。 ・バグを除去(動作確認済み) ▼利用について 利用・改変は自由です。 *********************************************************/ /********************************************************* * ゴースト模擬戦闘 設定 *********************************************************/ BATTLE.0.Name { BATTLE.0.Property('name') } BATTLE.1.Name { BATTLE.1.Property('name') } /********************************************************* * ゴースト模擬戦闘 コア *********************************************************/ OnJitenBattle { _ref = (reference0,reference1,reference2,reference3,reference4,reference5,reference6) if reference1 == BATTLE.0.Name ; _repref1 = '0' if reference1 == BATTLE.1.Name ; _repref1 = '1' if reference2 == BATTLE.0.Name ; _repref2 = '0' if reference2 == BATTLE.1.Name ; _repref2 = '1' _func = 'BATTLE.' + _repref1 + '.' + reference3 if ISFUNC(_func) { _funcref = _func + '(_ref)' EVAL(_funcref ) return } _func = 'BATTLE.' + _repref1 + '.Attack' if ISFUNC(_func) { _funcref = _func + '(_ref)' EVAL(_funcref ) return } _func = 'BATTLE.' + _repref2 + '.Defense' if ISFUNC(_func) { _funcref = _func + '(_ref)' EVAL(_funcref ) return } } BATTLE.0.Attack { if TOINT(_argv[6]) <= 0 { BATTLE.0.Win(_argv) } else { _func = 'BATTLE.0.Attack.' + _argv[3] if ISFUNC(_func) { EVAL( _func + '(_argv)') } } } BATTLE.0.Defense { if TOINT(_argv[6]) <= 0 { BATTLE.0.Lose(_argv) } else { _func = 'BATTLE.0.Defense.' + _argv[3] if ISFUNC(_func) { EVAL( _func + '(_argv)') } } } BATTLE.1.Attack { if TOINT(_argv[6]) <= 0 { BATTLE.1.Win(_argv) } else { _func = 'BATTLE.1.Attack.' + _argv[3] if ISFUNC(_func) { EVAL( _func + '(_argv)') } } } BATTLE.1.Defense { if TOINT(_argv[6]) <= 0 { BATTLE.1.Lose(_argv) } else { _func = 'BATTLE.1.Defense.' + _argv[3] if ISFUNC(_func) { EVAL( _func + '(_argv)') } } } /********************************************************* * \0 *********************************************************/ BATTLE.0.模擬戦闘開始 { // 【入力】\0の戦闘開始時の挨拶 } ///////////////////// // \0の攻撃 ///////////////////// // 物理攻撃 BATTLE.0.Attack.物理攻撃成功 { // 【入力】\0の物理攻撃が成功したときの台詞 } BATTLE.0.Attack.物理攻撃失敗 { // 【入力】\0の物理攻撃が失敗したときの台詞 } BATTLE.0.Attack.物理攻撃回避 { // 【入力】\0の物理攻撃が回避されたときの台詞 } BATTLE.0.Attack.物理攻撃ミス { // 【入力】\0の物理攻撃が発動ミスしたときの台詞 } // 精神攻撃 BATTLE.0.Attack.精神攻撃成功 { // 【入力】\0の精神攻撃が成功したときの台詞 } BATTLE.0.Attack.精神攻撃失敗 { // 【入力】\0の精神攻撃が失敗したときの台詞 } BATTLE.0.Attack.精神攻撃回避 { // 【入力】\0の精神攻撃が回避されたときの台詞 } BATTLE.0.Attack.精神攻撃ミス { // 【入力】\0の物理攻撃が発動ミスしたときの台詞 } ///////////////////// // \0の防御 ///////////////////// // 物理攻撃防御 BATTLE.0.Defense.物理攻撃成功 { // 【入力】\0に対する物理攻撃の防御に失敗したときの台詞 } BATTLE.0.Defense.物理攻撃失敗 { // 【入力】\0に対する物理攻撃の防御に成功したときの台詞 // 原因:相手の攻撃失敗 } BATTLE.0.Defense.物理攻撃回避 { // 【入力】\0に対する物理攻撃の防御に成功したときの台詞 // 原因:回避成功 } BATTLE.0.Defense.物理攻撃ミス { // 【入力】\0に対する物理攻撃の防御に成功したときの台詞 // 原因:相手の攻撃発動ミス } // 精神攻撃防御 BATTLE.0.Defense.精神攻撃成功 { // 【入力】\0に対する精神攻撃の防御に失敗したときの台詞 } BATTLE.0.Defense.精神攻撃失敗 { // 【入力】\0に対する精神攻撃の防御に成功したときの台詞 // 原因:相手の攻撃失敗 } BATTLE.0.Defense.精神攻撃回避 { // 【入力】\0に対する精神攻撃の防御に成功したときの台詞 // 原因:回避成功 } BATTLE.0.Defense.精神攻撃ミス { // 【入力】\0に対する精神攻撃の防御に成功したときの台詞 // 原因:相手の攻撃発動ミス } ///////////////////// // \0・結末 ///////////////////// BATTLE.0.Win { // 【入力】\0の攻撃の結果、相手のLIFE<=0となり、勝利したときの台詞 } BATTLE.0.Lose { // 【入力】相手の攻撃の結果、自分のLIFE<=0となり、敗北したときの台詞 } /********************************************************* * \1 *********************************************************/ BATTLE.1.模擬戦闘開始 { // 【入力】\1の戦闘開始時の挨拶 } ///////////////////// // \1の攻撃 ///////////////////// //物理攻撃 BATTLE.1.Attack.物理攻撃成功 { // 【入力】\1の物理攻撃が成功したときの台詞 } BATTLE.1.Attack.物理攻撃失敗 { // 【入力】\1の物理攻撃が失敗したときの台詞 } BATTLE.1.Attack.物理攻撃回避 { // 【入力】\1の物理攻撃が回避されたときの台詞 } BATTLE.1.Attack.物理攻撃ミス { // 【入力】\1の物理攻撃が発動ミスしたときの台詞 } // 精神攻撃 BATTLE.1.Attack.精神攻撃成功 { // 【入力】\1の精神攻撃が成功したときの台詞 } BATTLE.1.Attack.精神攻撃失敗 { // 【入力】\1の精神攻撃が失敗したときの台詞 } BATTLE.1.Attack.精神攻撃回避 { // 【入力】\1の精神攻撃が回避されたときの台詞 } BATTLE.1.Attack.精神攻撃ミス { // 【入力】\1の物理攻撃が発動ミスしたときの台詞 } ///////////////////// // \1の防御 ///////////////////// // 物理攻撃防御 BATTLE.1.Defense.物理攻撃成功 { // 【入力】\1に対する物理攻撃の防御に失敗したときの台詞 } BATTLE.1.Defense.物理攻撃失敗 { // 【入力】\1に対する物理攻撃の防御に成功したときの台詞 // 原因:相手の攻撃失敗 } BATTLE.1.Defense.物理攻撃回避 { // 【入力】\1に対する物理攻撃の防御に成功したときの台詞 // 原因:回避成功 } BATTLE.1.Defense.物理攻撃ミス { // 【入力】\1に対する物理攻撃の防御に成功したときの台詞 // 原因:相手の攻撃発動ミス } // 精神攻撃防御 BATTLE.1.Defense.精神攻撃成功 { // 【入力】\1に対する精神攻撃の防御に失敗したときの台詞 } BATTLE.1.Defense.精神攻撃失敗 { // 【入力】\1に対する精神攻撃の防御に成功したときの台詞 // 原因:相手の攻撃失敗 } BATTLE.1.Defense.精神攻撃回避 { // 【入力】\1に対する精神攻撃の防御に成功したときの台詞 // 原因:回避成功 } BATTLE.1.Defense.精神攻撃ミス { // 【入力】\1に対する精神攻撃の防御に成功したときの台詞 // 原因:相手の攻撃発動ミス } ///////////////////// // \1・結末 ///////////////////// BATTLE.1.Win { // 【入力】\1の攻撃の結果、相手のLIFE<=0となり、勝利したときの台詞 } BATTLE.1.Lose { // 【入力】相手の攻撃の結果、自分のLIFE<=0となり、敗北したときの台詞 } /********************************************************* * ゴーストプロパティを返す *********************************************************/ ///////////////////// // プロパティ要求対応 ///////////////////// OnRequestProperty { _text = '' if TOINT(reference1) < 0 { //負の場合はキャラ数を返すでっちあげ仕様 _text = '2' } else { _text = EVAL('BATTLE.' + reference1 + '.Property' + "('" + reference2 + "')") } if STRLEN(_text) { "\C\![raiseother,%(reference0),OnGetProperty,%(BATTLE.0.Property('name')),%(reference1),%(reference2),%(_text)]" } } BATTLE.0.Property { case _argv[0] { // 以下、ゴーストプロパティ定義 when 'name','キャラクター名' { // 【入力】\0の名前 '和泉はるか' } when '年齢層','世代' { // 【入力】\0の年齢層・世代 (子供|若者|大人|老人|不明) } when '性別' { // 【入力】\0の性別 (男性|女性|雌雄同体|不明) } when '種族' { // 【入力】\0の種族 } when '種族タイプ' { // 【入力】\0の種族タイプ (人型|獣型|植物型|不定形型|無機物型) } when 'プロフィール' { // 【入力】\0のプロフィール文章 } // 以下、ゴースト模擬戦闘パラメータ // LIFE以外の平均が60で「ふつう」 when '行動タイプ' { // 【入力】\0の行動タイプ(属性?) (物理攻撃|精神攻撃) } when 'LIFE' { // 【入力】\0の体力。即値(int)。 } when 'STR' { // 【入力】\0の腕力。物理攻撃力。即値(int)。 } when 'DEX' { // 【入力】\0の器用さ。物理攻撃命中率。即値(int)。 } when 'AGL' { // 【入力】\0の敏捷さ。物理攻撃回避率。即値(int)。 } when 'MIN' { // 【入力】\0の精神緑。精神攻撃力。即値(int)。 } when 'INT' { // 【入力】\0の知力。精神攻撃命中率。即値(int)。 } when 'SEN' { // 【入力】\0の感性。精神攻撃回避率。即値(int)。 } } } BATTLE.1.Property { case _argv[0] { // 以下、ゴーストプロパティ定義 when 'name','キャラクター名' { // 【入力】\1の名前 } when '年齢層','世代' { // 【入力】\1の年齢層・世代 (子供|若者|大人|老人|不明) } when '性別' { // 【入力】\1の性別 (男性|女性|雌雄同体|不明) } when '種族' { // 【入力】\1の種族 } when '種族タイプ' { // 【入力】\1の種族タイプ (人型|獣型|植物型|不定形型|無機物型) } when 'プロフィール' { // 【入力】\1のプロフィール文章 } // 以下、ゴースト模擬戦闘パラメータ // LIFE以外の平均が60で「ふつう」 when '行動タイプ' { // 【入力】\1の行動タイプ(属性?) (物理攻撃|精神攻撃) } when 'LIFE' { // 【入力】\1の体力。即値(int)。 } when 'STR' { // 【入力】\1の腕力。物理攻撃力。即値(int)。 } when 'DEX' { // 【入力】\1の器用さ。物理攻撃命中率。即値(int)。 } when 'AGL' { // 【入力】\1の敏捷さ。物理攻撃回避率。即値(int)。 } when 'MIN' { // 【入力】\1の精神緑。精神攻撃力。即値(int)。 } when 'INT' { // 【入力】\1の知力。精神攻撃命中率。即値(int)。 } when 'SEN' { // 【入力】\1の感性。精神攻撃回避率。即値(int)。 } } }