/*:ja * @plugindesc (v.1.1) イベントパズル等作成を簡単にする一連の関数を追加します。 * * @author Galv - galvs-scripts.com * * @help * 翻訳:ムノクラ * https://fungamemake.com/ * https://twitter.com/munokura/ * * Galv's Puzzle Functions * --------------------------------------------------------------------------- * このプラグインは、イベントパズルに役立つ関数を追加します。 * * 1.セルフスイッチ変更 * 任意のイベントから任意のイベントのセルフスイッチを変更する。 * 他のイベントに隣接するイベントのセルフスイッチを変更する。 * これらのセルフスイッチのオフ、オン、または反転を指定します。 * * 2.事前に制御変数を使用せずに場所を決定します。 * イベント/プレーヤーがX、Yの場所にあるかを確認。 * イベント/プレーヤーが別のイベントの場所にあるかを確認。 * * 3.グループスイッチ/セルフスイッチを確認 * 指定されたスイッチのグループがオン/オフを確認。 * イベントのグループに特定のセルフスイッチがオン/オフになっているかを確認。 * * 4.イベントのアクティブ化順序を確認 * コンボクリア条件を設定する。 * イベントにコンボ値を追加させる。 * プレーヤーが、指定されたクリア条件と同じ順序で * イベントをセットしているかを確認します。 * * 5.複数のアイテムの確認 * インベントリに複数のアイテム、防具、武器があるかを確認してください * 条件分岐が1つだけのコード。 * * --------------------------------------------------------------------------- * * --------------------------------------------------------------------------- * 1. スイッチ * --------------------------------------------------------------------------- * 'スクリプト'イベントコマンドで使用されます。 * 'switch'スクリプトコールにより、 * イベントに隣接するイベントのセルフスイッチをオン/オフにすることができます。 * * Galv.PUZ.switch(d,s,x,e); * // d = 方向 * // 2 下, 8 上, 4 左, 6 右, 0 足元 * // '4dir' 全方向 * // 'front' イベントが向いている方向 * // [d,d,d] 特定の方向 * // 'event' 指定されたイベントのみを変更する * // s = セルフスイッチ. 'A', 'B', 'C', 'D' * // x = 'on', 'off', 'flip' * // 'flip' オンからオフ、オフからオンへの変更 * // e = イベントIDを指定します。 * // 現在のイベントのイベントIDを使用するには省略 * * 例 * Galv.PUZ.switch(2,'B','on'); * // このイベントの下にあるイベントのセルフスイッチ'B'をオンにする * Galv.PUZ.switch(2,'B','on',7); * // イベント7の下にあるイベントのセルフスイッチ'B'をオンにする * Galv.PUZ.switch('4dir','A','off'); * // このイベントに隣接する全イベントのセルフスイッチ'A'をオフにする * Galv.PUZ.switch([8,0],'C','flip'); * // このイベントの上と足元にあるイベントのセルフスイッチ'C'を反転する * Galv.PUZ.switch('event','D','on',5); * // イベント5のセルフスイッチ'D'をオンにするには、 * // このイベントIDを指定する必要があります * * 上記のスクリプトコールは移動ルート内でも使用できますが、 * イベントIDを指定する必要があります。 * 現在のイベントのIDを取得するには、次を使用できます。 * * this._eventId * * 例 * Galv.PUZ.switch(2,'B','on',this._eventId); * // このイベントの下にあるイベントのセルフスイッチ'B'をオンにします * * イベントが別のイベントの隣接するスイッチの変更の影響を * 受けないようにするには、イベントのメモ欄に入力します。 * * * * --------------------------------------------------------------------------- * 2. IS AT * --------------------------------------------------------------------------- * 条件分岐の'スクリプト'で使用されます。 * 'isAt'関数を使用すると、 * プレーヤー/イベントが別のイベント(x,y位置)と同じ位置かを確認できます。 * * Galv.PUZ.isAt(t,e) * // t = 対象イベントID(プレーヤーの場合は0) * // または[x,y]で対象の x,y の位置を指定します * // e = 対象の位置にあるか確認するイベントID(プレーヤーの場合は0)。 * // 現在のイベントIDを使用するには、無入力にします。 * * 例: * Galv.PUZ.isAt([12,14]) // x12,y14に現在のイベントがある * Galv.PUZ.isAt([12,14],9) // x12,y14にイベント9がある * Galv.PUZ.isAt(0,5) // プレイヤーとイベント5は同位置にある * Galv.PUZ.isAt(4) // イベント4は現在のイベントと同位置にある * * --------------------------------------------------------------------------- * 3. グループスイッチ条件 * --------------------------------------------------------------------------- * 条件分岐の'スクリプト'で使用されます。 * これらの関数を使用すると、スイッチのグループのオン/オフを確認できます。 * * Galv.PUZ.selfSwitchesOn(s,x,x,x) * // s = セルフスイッチ'A', 'B', 'C', 'D' * // x = イベントID (イベントIDはいくつでも使用できます) * // 指定された全イベントのセルフスイッチがオンか確認します。 * * Galv.PUZ.selfSwitchesOff(s,x,x,x) * // 上記と同じですが、 * // 全イベントのセルフスイッチがオフかを確認します。 * * Galv.PUZ.switchesOn(x,x,x) * // xはスイッチIDです。 * // 指定された全スイッチがオンかを確認します。 * * Galv.PUZ.switchesOff(x,x,x) * // xはスイッチIDです。 * // 指定された全スイッチがオフかを確認します。 * * --------------------------------------------------------------------------- * 4. イベントの有効化の順序 - コンボ * --------------------------------------------------------------------------- * イベントが特定の順序でセットされているかどうかを確認して、 * パズルをやり直し/成功させます。 * これを行うには、まずパズルが始まる前にスクリプトコールを行い、 * コンボのIDとクリア条件を設定します。 * * Galv.PUZ.setComb(id,v,v,v) * // id = コンボID * // v = コンボのクリア条件を設定する値です。(任意の量を使えます) * // 値を任意の数/イベントIDにすることができます(詳細は以下を参照) * * 例 * Galv.PUZ.setComb(4,1,2,3) * // コンボID4のクリア条件のセットは 1,2,3 となり、 * // セットへ値を1,2,3の順に追加する必要があります。 * * 次に、イベントでコンボの値をセットに追加するには、 * イベントに追加させる時に次のスクリプトコールを使用します。 * * Galv.PUZ.addToComb(id,v) * // id = コンボID(上記で設定) * // v = プレーヤーがセットに追加する値。 * // イベントIDをセットに代入する場合、省略してください。 * * 例 * Galv.PUZ.addToComb(4,1) // コンボ4に1をセットに追加します * Galv.PUZ.addToComb(4) // コンボ4にイベントIDをセットに追加します * * 最後に、条件分岐で使用できるスクリプトを使用して、 * コンボが成功したかどうかを確認する必要があります。 * * Galv.PUZ.checkComb(id) * // プレーヤーがコンボIDのクリア条件と同じセットの場合、true * // クリア条件と違うセットの場合、セット内容が消去されます。 * * この例については、デモをご覧ください。 * * --------------------------------------------------------------------------- * 5. 複数のアイテムの確認 * --------------------------------------------------------------------------- * デフォルトのイベントでは、変数の操作を使用して、 * プレイヤーが持っている特定アイテムの数を確認する条件分岐を作成できます。 * 以下のコマンドは、複数のアイテムをより簡単に確認する関数を追加し、 * 条件分岐で全て使用できます。 * * Galv.PUZ.hasItems(x,x,x) * // xはアイテムIDです。必要な数だけ確認できます * * Galv.PUZ.hasWeapons(x,x,x) * // xは武器IDです。必要な数だけ確認できます * * Galv.PUZ.hasArmors(x,x,x) * // xは防具のIDであり、必要な数だけ確認できます * * Galv.PUZ.itemAmount(t,id) * // type = 'item', 'weapon', 'armor' * // id = アイテムID * // 下記はアイテムの数を返し、コードで数と比較できます * // == 等しい * // >= 以上 * // <= 以下 * // > より多い * // < より少ない * * これらは、&&で区切ることにより、同じ条件分岐で一緒に使用できます。 * * 例 * Galv.PUZ.hasItems(1,2,3) * // プレイヤーが各アイテムを少なくとも1つ持っているかどうかを確認 * Galv.PUZ.hasArmors(1,2) * // プレイヤーが各防具を少なくとも1つ持っているかどうかを確認 * Galv.PUZ.itemAmount('item',1) >= 10 * // 10個以上のアイテムID1があるかどうかを確認 * * そして、上記例の3つを同じ条件分岐内で一度に確認するには、 * 下記のように書きます。 * * Galv.PUZ.hasItems(1,2,3) && Galv.PUZ.hasArmors(1,2) && Galv.PUZ.itemAmount('item',1) >= 10 * */