/*:ja * @plugindesc v1.01 (Lunatic Pack) 詳細な条件付きパッシブステートを作ります。 * @author Yanfly Engine Plugins * * @help * 翻訳:ムノクラ * https://fungamemake.com/ * https://twitter.com/munokura/ * * =========================================================================== * 導入 * =========================================================================== * * このプラグインは以下のプラグインを必要とします。 * - YEP_AutoPassiveStates * * パッシブステートはゲームに強力に影響する場合がありますが、 * 戦闘中ずっと有効である場合、少し強力すぎる場合があります。 * パッシブステートに条件付きのケースを課すことによって * パッシブになる範囲を制限したいと思うこともあるでしょう。 * パッシブの条件付きケースが全て満たされた場合、 * パッシブは有効になります。 * このプラグインは特定のパッシブステートの効果が * 常に有効であることを制限するための多数の条件付きケースを追加します。 * * *注意*:このプラグインはRPGツクールMVバージョン1.5.0以降でよく使われます。 * まだより低いバージョンでこのプラグインを使用することができます、 * しかし、プラグインパラメータを変更することはずっと困難になるでしょう。 * * =========================================================================== * メモタグ * =========================================================================== * * 次のようなメモタグをステートのメモ欄に挿入して、パッシブステートにします。 * * ステートのメモタグ * * * condition * condition * * - パッシブステートに条件を追加するために * 上記のフォーマットを使用してください。 * のメモタグの間にある * 'condition'のテキストを、 * 以下のいずれかの条件に置き換えて条件タイプを入力します。 * 複数の条件を挿入して、 * パッシブステートが有効になる前に、満たすべき条件を必要にできます。 * * =-=-=-= 条件リスト =-=-=-= * * --- スイッチのオン/オフ --- * * Switch x On * Switch x Off * - 'x'を数値で置き換えます。 * イベントスイッチxがオンかオフかを条件付きでチェックします。 * 条件付きチェックが満たされると、パッシブが有効になります。 * 提案者:Yanfly * * --- 数値比較チェック --- * * x >= y * x <= y * x > y * x < y * x != y * x = y * - xとyの単純な比較チェックをするための条件を必要とします。 * これらの数の比較は'>='、'<='、'>'、'<'、'!='、'=' * となります。 * 'x'と'y'を数字、パーセント、'HP'、'MP'、'TP'、'HP%'、'MP%'、'TP%'、 * 'MAXHP'、'MAXMP'で置き換えます。 * 比較に'ATK'、'DEF'、'MAT'、'MDF'、'AGI'、'LUK'、'VARIABLEX'を指定します。 * パーセントがチェックされている場合、 * %が省略されたようにチェックされます。 * 例えば、'50%'は'50'になります。 * 提案者:Yanfly * * --- ステートの有無 --- * * Has State x * - 'x'を確認したいステートのIDに置き換えます。 * 使用者がそのステートの影響を受けている場合、 * 他の全ての条件が満たされている限り、 * この条件付きパッシブは有効になります。 * 提案者:Goldschuss * * Not State x * - 'x'を確認したいステートのIDに置き換えます。 * 使用者がそのステートの影響を受けていない場合、 * 他の全ての条件が満たされている限り、 * この条件付きパッシブは有効になります。 * 提案者:Goldschuss * * --- バフ/デバフの有無 --- * * Has x Buff * - 'x'を'MAXHP'、'MAXMP'、'ATK'、'DEF'、'MAT'、'MDF'、 * 'AGI'、'LUK'に置き換えます。 * 使用者が現在そのパラメータでバフされているかどうかを確認します。 * 使用者がいる場合、他の全ての条件が満たされている限り、 * 条件付きパッシブは有効になります。 * 提案者:Yanfly * * Has x Debuff * - 'x'を'MAXHP'、'MAXMP'、'ATK'、'DEF'、'MAT'、'MDF'、 * 'AGI'、'LUK'に置き換えます。 * 使用者が現在そのパラメータでデバフされているかどうかを確認します。 * 使用者がいる場合、他の全ての条件が満たされている限り、 * 条件付きパッシブは有効になります。 * 提案者:Yanfly * * Not x Buff * - 'x'を'MAXHP'、'MAXMP'、'ATK'、'DEF'、'MAT'、'MDF'、 * 'AGI'、'LUK'に置き換えます。 * 使用者が現在そのパラメータでバフされていないかどうかを確認します。 * 使用者がいる場合、他の全ての条件が満たされている限り、 * 条件付きパッシブは有効になります。 * 提案者:Yanfly * * Not x Debuff * - 'x'を'MAXHP'、'MAXMP'、'ATK'、'DEF'、'MAT'、'MDF'、 * 'AGI'、'LUK'に置き換えます。 * 使用者がそのパラメータで現在デバフされていないかどうかを確認します。 * 使用者がいる場合、他の全ての条件が満たされている限り、 * 条件付きパッシブは有効になります。 * 提案者:Yanfly * * --- 合計バフ/デバフ --- * * Total Buffs >= x * Total Buffs <= x * Total Buffs > x * Total Buffs < x * Total Buffs != x * Total Buffs = x * - 'x'を、使用者が現在影響を受けているバフの数を * 確認したい数値に置き換えます。 * ターンチェックをパスした場合、他の条件が満たされると、 * 条件付きパッシブは有効になります。 * 提案者:AlejandroSQ * * Total Debuffs >= x * Total Debuffs <= x * Total Debuffs > x * Total Debuffs < x * Total Debuffs != x * Total Debuffs = x * - 'x'を、使用者が現在影響を受けているデバフの数を * 確認したい数値に置き換えます。 * ターンチェックをパスした場合、他の条件が満たされると、 * 条件付きパッシブは有効になります。 * 提案者:AlejandroSQ * * --- 生死 --- * * Alive Actors/Enemies/Allies/Foes >= x * Alive Actors/Enemies/Allies/Foes <= x * Alive Actors/Enemies/Allies/Foes > x * Alive Actors/Enemies/Allies/Foes < x * Alive Actors/Enemies/Allies/Foes != x * Alive Actors/Enemies/Allies/Foes = x * - 'x'をパーティで生きているアクターの数、 * 敵グループ、仲間、敵と比較して調べたい数値に置き換えてください。 * 上記の4つのキーワード('actors'、'enemies'、'allies'、'foes')のうち * 1つだけを使用してください。 * メンバー数チェックをパスすると、他の全ての条件が満たされている限り、 * 条件付きパッシブは有効になります。 * 提案者:Yanfly * * Dead Actors/Enemies/Allies/Foes >= x * Dead Actors/Enemies/Allies/Foes <= x * Dead Actors/Enemies/Allies/Foes > x * Dead Actors/Enemies/Allies/Foes < x * Dead Actors/Enemies/Allies/Foes != x * Dead Actors/Enemies/Allies/Foes = x * - 'x'を死んでいるアクター、敵グループ、仲間、敵と比較して * 確認したい数値に置き換えてください。 * 上記の4つのキーワード('actors'、'enemies'、'allies'、'foes')のうち * 1つだけを使用してください。 * メンバー数チェックをパスすると、他の全ての条件が満たされている限り、 * 条件付きパッシブは有効になります。 * 提案者:Yanfly * * --- ターン数 --- * * Battle Turns >= x * Battle Turns <= x * Battle Turns > x * Battle Turns < x * Battle Turns != x * Battle Turns = x * - 'x'を戦闘で経過ターンの数に関連してチェックしたい数値で置き換えます。 * ターンチェックをパスすると、他の全ての条件が満たされている限り、 * 条件付きパッシブは有効になります。 * 提案者:Yanfly * * --- 武器/防具所持 --- * * Has Weapon x * - 使用者はアクターでなければなりません。 * そうでなければ、この条件はfalseを返します。 * 使用者が持っているかどうかを確認したい武器IDで'x'を置き換えます。 * 使用者がそれを装備している場合、条件は合格し、 * 他の全ての条件が満たされている限り有効になります。 * 提案者:Yanfly * * Not Weapon x * - 使用者はアクターでなければなりません。 * そうでなければ、この条件はfalseを返します。 * 使用者が持っているかをチェックしたい武器IDで'x'を置き換えてください。 * 使用者がそれを装備していない場合、条件は合格し、 * 他の全ての条件が満たされている限り有効になります。 * 提案者:Yanfly * * Has Armor x * - 使用者はアクターでなければなりません。 * そうでなければ、この条件はfalseを返します。 * 使用者が持っているかチェックしたい防具IDと'x'を取り替えてください。 * 使用者がそれを装備している場合、条件をパスし、 * 他の全ての条件が満たされている限り有効になります。 * 提案者:Yanfly * * Not Armor x * - 使用者はアクターでなければなりません。 * そうでなければ、この条件はfalseを返します。 * 使用者が持っているかをチェックしたい防具IDで'x'を置き換えてください。 * 使用者がそれを装備していない場合、条件をパスし、 * 他の全ての条件が満たされている限り有効になります。 * 提案者:Yanfly * * =========================================================================== * ルナティックモード - 効果コード * =========================================================================== * * RPGツクールMV1.5.0+を使用しているJavaScript経験豊富な使用者に、 * プラグインで使用できる新しいメモタグ効果を追加するか、 * プラグインパラメーターから現在存在するメモタグ効果の効果を変更できます。 * 次のようになります。 * * --- * * // ------------- * // Switch On/Off * // ------------- * if (data.match(/SWITCH[ ](\d+)[ ]ON/i)) { * var switchId = parseInt(RegExp.$1); * condition = $gameSwitches.value(switchId); * * } else if (data.match(/SWITCH[ ](\d+)[ ]OFF/i)) { * var switchId = parseInt(RegExp.$1); * condition = !$gameSwitches.value(switchId); * * ... * * // ------------------------------- * // Add new effects above this line * // ------------------------------- * } else { * skip = true; * } * * --- * * このコードビットで使用されている各変数は、次のとおりです。 * * -------------------- -------------------------------------------------- * 変数: 参照: * -------------------- -------------------------------------------------- * condition 現在の条件設定でtrueが返されると、 * 現在の条件のケースは成功します。 * パッシブステートが有効になるには、 * その全ての条件が必要です。 * * * a アクション使用者を返す * user アクション使用者を返す * subject アクション使用者を返す * * s[x] スイッチxを返す(true / false) * v[x] 変数xの現在値を返す * * skip デフォルト:false trueの場合、前のレートを返す * * --- * * 効果コードを元のステートに戻す必要がある場合、 * プラグイン管理からプラグインを削除してから、もう一度追加してください。 * コードはデフォルトに戻ります。 * * =========================================================================== * Changelog * =========================================================================== * * Version 1.01: * - Bypass the isDevToolsOpen() error when bad code is inserted into a script * call or custom Lunatic Mode code segment due to updating to MV 1.6.1. * * Version 1.00: * - Finished Plugin! * * =========================================================================== * End of Helpfile * =========================================================================== * * @param Effect Code * @text 効果コード * @type note * @desc 各メモタグ効果のコードです。 * @default "// -------------\n// Switch On/Off\n// -------------\nif (data.match(/SWITCH[ ](\\d+)[ ]ON/i)) {\n var switchId = parseInt(RegExp.$1);\n condition = $gameSwitches.value(switchId);\n\n} else if (data.match(/SWITCH[ ](\\d+)[ ]OFF/i)) {\n var switchId = parseInt(RegExp.$1);\n condition = !$gameSwitches.value(switchId);\n\n// -------------\n// Has/Not State\n// -------------\n} else if (data.match(/HAS[ ]STATE[ ](\\d+)/i)) {\n var stateId = parseInt(RegExp.$1);\n condition = user.isStateAffected(stateId);\n\n} else if (data.match(/NOT[ ]STATE[ ](\\d+)/i)) {\n var stateId = parseInt(RegExp.$1);\n condition = !user.isStateAffected(stateId);\n\n// -------------------\n// Has/Not Buff/Debuff\n// -------------------\n} else if (data.match(/HAS[ ](.*)[ ]BUFF/i)) {\n var str = String(RegExp.$1);\n var paramId = DataManager.getParamId(str);\n condition = user.isBuffAffected(paramId);\n\n} else if (data.match(/HAS[ ](.*)[ ]DEBUFF/i)) {\n var str = String(RegExp.$1);\n var paramId = DataManager.getParamId(str);\n condition = user.isDebuffAffected(paramId);\n\n// --------------------\n// Has/Not Weapon/Armor\n// --------------------\n} else if (data.match(/HAS[ ]WEAPON[ ](\\d+)/i)) {\n if (user.isActor()) {\n var id = parseInt(RegExp.$1);\n var item = $dataWeapons[id];\n condition = user.hasWeapon(item);\n } else {\n condition = false;\n }\n\n} else if (data.match(/NOT[ ]WEAPON[ ](\\d+)/i)) {\n if (user.isActor()) {\n var id = parseInt(RegExp.$1);\n var item = $dataWeapons[id];\n condition = !user.hasWeapon(item);\n } else {\n condition = false;\n }\n\n} else if (data.match(/HAS[ ]ARMOR[ ](\\d+)/i)) {\n if (user.isActor()) {\n var id = parseInt(RegExp.$1);\n var item = $dataArmors[id];\n condition = user.hasArmor(item);\n } else {\n condition = false;\n }\n\n} else if (data.match(/NOT[ ]ARMOR[ ](\\d+)/i)) {\n if (user.isActor()) {\n var id = parseInt(RegExp.$1);\n var item = $dataArmors[id];\n condition = !user.hasArmor(item);\n } else {\n condition = false;\n }\n\n// ----------------------\n// Param Above/Below Stat\n// ----------------------\n} else if (data.match(/(.*)[ ](?:>|<|>=|<=|=|!=)[ ](.*)/i)) {\n var check1 = String(RegExp.$1);\n var check2 = String(RegExp.$2);\n var value1 = DataManager.numberParameterCheck(check1, user);\n var value2 = DataManager.numberParameterCheck(check2, user);\n if (value1 !== null && value2 !== null) {\n if (data.match(/>=/i)) {\n condition = value1 >= value2;\n } else if (data.match(//i)) {\n condition = value1 > value2;\n } else if (data.match(/