/*:ja
* @plugindesc v1.02 (要YEP_ItemCore) アイテムの使用条件を詳細に設定できます。
* @author Yanfly Engine Plugins
*
* @help
* 翻訳:ムノクラ
* https://fungamemake.com/
* https://twitter.com/munokura/
*
* ===========================================================================
* 導入
* ===========================================================================
*
* このプラグインはYEP_ItemCoreを必要とします。
* プラグイン管理のYEP_ItemCoreの下に
* このプラグインがあることを確認してください。
*
* RPGツクールMVでは、アイテムは、デフォルトで、
* それらが戦闘中であってもなくても使用できるかどうかにかかわらず、
* いくつかの制限しかありません。
* 他にアイテムを使用できるかどうかを決定する条件はありません。
* このプラグインは、スイッチ、変数、使用するアクター、職業、
* ステート要件等に基づいて、
* アイテムの使用を制限するより多くの方法を提供します。
*
* ===========================================================================
* メモタグ
* ===========================================================================
*
* アイテムを使用する前に、
* 以下のメモタグを使用してアイテムの要件を強制します。
*
* アイテムのメモタグ
*
*
* condition
* condition
*
* - 'condition'を目的の条件設定に置き換えます。
* メモタグの中に条件をいくつでも挿入することができます。
* アイテムを使用する前に、全ての条件を満たす必要があります。
* 使用可能な条件の一覧については、以下を参照してください。
*
* ---
*
* Conditions:
*
* ---
*
* Eval: code
* - 'code'を、アイテムを有効にするチェックを入れたい
* JavaScriptコードに置き換えます。
* チェックがfalseを返すと、
* 他の条件に関係なくアイテムは無効になります。
*
* 例:
* Eval: $gameActors.actor(1).name() === 'Harold'
* Eval: $gameActors.leader().name() !== 'Ralph'
*
* ---
*
* Actor: x
* Actor: x, x, x
* - アイテムを使用するには、
* アクターID'x'が必要です。
* アクターが当該アイテムを使用しているのではない場合、
* そのアイテムは無効になり、
* 他の条件に関係なく使用することはできません。
*
* Not Actor: x
* Not Actor: x, x, x
* - アイテムを使用しているアクターがアクターID'x'ではないことを要求します。
* アクターのIDがリストされている'x'のいずれかと一致すると、
* そのアイテムは無効になり、
* 他の条件に関係なく使用できなくなります。
*
* 例:
* Actor: 1
* Actor: 2, 3, 4, 5, 6
* Not Actor: 7
* Not Actor: 8, 9, 10
*
* ---
*
* Armor: x
* Armor: x, x, x
* - アクターに、
* アイテムを使用するための防具ID'x'を明確に持たせることを要求します。
* 複数の'x'が使用されている場合、
* アクターはそれらのどれでも装備することができます。
* アクターに防具'x'が装備されていない場合、
* そのアイテムは無効になり、
* 他の条件に関係なく使用できません。
*
* Not Armor: x
* Not Armor: x, x, x
* - アイテムを使用するために防具ID'x'を装備していないアクターを要求します。
* 複数の'x'が使用されている場合、
* アクターはそれらのどれも装備することはできません。
* アクターに防具'x'が装備されている場合、
* そのアイテムは無効になり、
* 他の条件に関係なく使用することはできません。
*
* 例:
* Armor: 1
* Armor: 2, 3, 4, 5, 6
* Not Armor: 7
* Not Armor: 8, 9, 10
*
* ---
*
* Class: x
* Class: x, x, x
* - アイテムを使用するには、
* 職業ID'x'が必要です。
* アクターの職業がアイテムの要件と一致しない場合、
* そのアイテムは無効になり、
* 他の条件に関係なく使用できなくなります。
*
* Not Class: x
* Not Class: x, x, x
* - アイテムを使用するには、
* 職業ID'x'が必要です。
* アクターの職業がアイテムの要件と一致しない場合、
* そのアイテムは無効になり、
* 他の条件に関係なく使用できなくなります。
*
* 例:
* Class: 1
* Class: 2, 3, 4, 5, 6
* Not Class: 7
* Not Class: 8, 9, 10
*
* ---
*
* Subclass: x
* Subclass: x, x, x
* - YEP_X_Subclass.jsが必要
* - アイテムを使用するにはサブ職業ID'x'が必要です。
* アクターの職業がアイテムの要件と一致しない場合、
* そのアイテムは無効になり、
* 他の条件に関係なく使用できなくなります。
*
* Not Subclass: x
* Not Subclass: x, x, x
* - YEP_X_Subclass.jsが必要
* - アイテムを使用しているアクターがサブ職業ID'x'ではないことを要求します。
* アクターのサブ職業IDがリストされている'x'の1つと一致すると、
* その項目は無効になり、他の条件に関係なく使用できなくなります。
*
* 例:
* Subclass: 1
* Subclass: 2, 3, 4, 5, 6
* Not Subclass: 7
* Not Subclass: 8, 9, 10
*
* ---
*
* Either Class: x
* Either Class: x, x, x
* - YEP_X_Subclass.jsが必要
* - アクターの主職業・サブ職業IDは'x'と一致しなければなりません。
* 少なくとも1つが一致すれば、
* 条件は満たされます。
* それ以外の場合、項目は無効になり、
* 他の条件に関係なく使用できなくなります。
*
* Neither Class: x
* Neither Class: x, x, x
* - YEP_X_Subclass.jsが必要
* - アクターの主職業・サブ職業IDは'x'と一致してはいけません。
* 少なくとも1つが一致すると、アイテムは無効になり、
* 他の条件に関係なく使用できなくなります。
*
* 例:
* Either Class: 1
* Either Class: 2, 3, 4, 5, 6
* Neither Class: 7
* Neither Class: 8, 9, 10
*
* ---
*
* State: x
* State: x, x, x
* - アイテムを使用しているアクターがステート'x'の影響を
* 受けることを要求します。
* 複数の'x'が使用されている場合、
* アクターはそれらのいずれかの影響を受ける可能性があります。
* アクターがステート'x'の影響を受けない場合、
* アイテムは無効になり、他の条件に関係なく使用できなくなります。
*
* Not State: x
* Not State: x, x, x
* - アイテムを使用しているアクターがステート'x'の影響を
* 受けないことを要求します。
* 複数の'x'が使用されている場合、
* アクターはそれらのいずれの影響も受けてはいけません。
* アクターがステート'x'の影響を受ける場合、
* アイテムは無効になり、他の条件に関係なく使用できなくなります。
*
* 例:
* State: 10
* State: 11, 12, 13, 14, 15
* Not State: 16
* Not Stage: 17, 18, 19, 20
*
* ---
*
* Switch Off: x
* Switch Off: x, x, x
* - アイテムを使用する前に、
* スイッチxをオフにする必要があります。
* スイッチがオンの場合、その項目は無効になり、
* 他の条件に関係なく使用できなくなります。
*
* 例:
* Switch Off: 1
* Switch Off: 2, 3, 4, 5, 6
*
* ---
*
* Switch On: x
* Switch On: x, x, x
* - アイテムを使用する前に、
* スイッチxをオンにする必要があります。
* スイッチがオフの場合、その項目は無効になり、
* 他の条件に関係なく使用できなくなります。
*
* 例:
* Switch On: 1
* Switch On: 2, 3, 4, 5, 6
*
* ---
*
* Variable x eval
* - 変数xに対してチェックを行います。
* 'x'を整数値に、'eval'を実行したいコードチェックに置き換えます。
*
* 例:
* Variable 1 >= 5
* Variable 2 < 6
* Variable 3 === 7
* Variable 4 !== 8
*
* ---
*
* Weapon: x
* Weapon: x, x, x
* - アイテムを使用するために武器ID'x'をアクターに装備させる必要があります。
* 複数の'x'が使用されている場合、
* アクターはそれらのどれでも装備することができます。
* アクターに武器'x'が装備されていない場合、
* そのアイテムは無効になり、
* 他の条件に関係なく使用できません。
*
* Not Weapon: x
* Not Weapon: x, x, x
* - アイテムを使用するために武器ID'x'を装備していないことを
* アクターに要求します。
* 複数の'x'が使用されている場合、
* アクターはそれらのどれも装備することはできません。
* アクターが武器'x'を装備していない場合、
* そのアイテムは無効になり、
* 他の条件に関係なく使用できません。
*
* 例:
* Weapon: 1
* Weapon: 2, 3, 4, 5, 6
* Not Weapon: 7
* Not Weapon: 8, 9, 10
*
* ---
*
* Weapon Type: x
* Weapon Type: x, x, x
* - アクターに武器タイプ'x'を装備させる必要があります。
* 複数の'x'が使用されている場合、
* アクターは装備されている'x'武器タイプのいずれかを持つことができます。
* アクターが一致する武器タイプを持っていない場合、
* そのアイテムは無効になり、
* 他の条件に関係なく使用できません。
*
* Not Weapon Type: x
* Not Weapon Type: x, x, x
* - アクターに武器タイプ'x'を装備させないように要求します。
* 複数の'x'が使用されている場合、
* アクターは装備されている'x'武器の種類を持つことはできません。
* アクターが一致する武器タイプを持っている場合、
* そのアイテムは無効になり、
* 他の条件に関係なく使用することはできません。
*
* 例:
* Weapon Type: 1
* Weapon Type: 2, 3, 4, 5, 6
* Not Weapon Type: 7
* Not Weapon Type: 8, 9, 10
*
* ===========================================================================
* ルナティックモード - カスタム有効化要件
* ===========================================================================
*
* JavaScriptと次のメモタグ設定を使って
* アイテムを使用できるかどうかについて独自のカスタム要件を作成できます。
*
* アイテムのメモタグ
*
*
* condition = battler.level >= item.price;
*
* - 'condition'変数はアイテムが有効化/無効化されるかどうかを決定します。
* 'condition'変数がtrueを返す場合、
* 他の全ての条件(もしあれば)も満たされていれば、
* その項目は有効になります。
* それ以外の場合、
* アイテムは無効になり使用できません。
* 'battler'変数はアイテムを使用しているバトラーを表します。
* 'item'変数はチェックされているアイテムを参照します。
*
* ===========================================================================
* Changelog
* ===========================================================================
*
* Version 1.02:
* - 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.01:
* - Updated for RPG Maker MV version 1.5.0.
*
* Version 1.00:
* - Finished Plugin!
*/