/*:ja * @plugindesc (v.1.1) パズルイベント作成を簡便化する追加スクリプト機能 * @url http://galvs-scripts.com * @target MZ * @author Galv * * @help * 翻訳:ムノクラ * https://fungamemake.com/ * https://twitter.com/munokura/ * * 元プラグイン: * https://galvs-scripts.com/2020/08/29/mz-puzzle-functions/ * * 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を指定 * 現在のイベントを対象とする場合 'this._eventId' を使用 * * * 例: * Galv.PUZ.switch(2,'B','on',this._eventId); * このイベントから下に位置するイベントのセルフスイッチ 'B' をオンにします。 * * Galv.PUZ.switch(2,'B','on',7); * イベント7から下に位置するイベントのセルフスイッチ「B」をオンにします。 * * Galv.PUZ.switch('4dir','A','off',2); * イベント2に隣接する全てのイベントの全てのセルフスイッチAをオフにします。 * * Galv.PUZ.switch([8,0],'C','flip',this_eventId); * 現在のイベントの下にあるイベントと上にあるイベントの * セルフスイッチ「C」を切り替えます * * Galv.PUZ.switch('event','D','on',5); * イベント 5 のためにセルフスイッチ 'D' をオンにします。 * このイベントにはイベントIDを指定する必要があります * * 上記のスクリプトは移動ルート内でも使用できますが、 * イベントIDを指定する必要があります。 * 現在のイベントのIDを取得するには、以下のようにします。 * this._eventId * * 例: * Galv.PUZ.switch(2,'B','on',this._eventId); * これより下に位置するイベントのセルフスイッチ'B'をオンにします。 * * 任意のマップのセルフスイッチを変更するためのデフォルトのスクリプト例。 * $gameSelfSwitches.setValue([mapId, eventID, 'A'], true); * * 他のイベントの隣接するスイッチ変更の影響を受けたくない場合、 * イベントのメモ欄に下記を入力します。 * * * * --------------------------------------------------------------------------- * 2. 「isAt」関数 * --------------------------------------------------------------------------- * 条件分岐の「スクリプト」で使用します。 * 「isAt」関数を使うと、あらかじめ変数を使わなくても、 * プレイヤーやイベントが他のイベントと同じ位置にあるか、 * x,y座標であるかを確認することができます。 * * Galv.PUZ.isAt(t,e) * t = 対象イベントID * (プレイヤーの場合は0)または[x,y]を指定して対象のx,yの場所を指定します。 * // e = 対象の位置にあるかどうかを確認したいイベントのイベントID。 * 現在のイベントのIDには'this._eventId'を使用します。 * プレイヤーには0を使用します。 * * 例: * 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,this._eventId) // イベント4と現在のイベントが同じ位置か * * --------------------------------------------------------------------------- * 3. 複数スイッチの条件分岐 * --------------------------------------------------------------------------- * 条件分岐の「スクリプト」で使用します。 * これらの機能を使用すると、スイッチのグループがオン/オフかを確認できます。 * * Galv.PUZ.selfSwitchesOn(s,x,x,x) * s = セルフスイッチ 'A', 'B', 'C' 'D' * x はイベントIDです。 * リストされている全てのイベントのセルフスイッチがONか確認します。 * (イベントIDは何個でも使用可能) * * Galv.PUZ.selfSwitchesOff(s,x,x,x) * 上記と同じですが、全てのイベントのセルフスイッチがOFFか確認します。 * * Galv.PUZ.switchesOn(x,x,x) * xはスイッチIDです。 * 指定されたスイッチが全てONか確認します。 * * Galv.PUZ.switchesOff(x,x,x) * xはスイッチIDです。 * 指定されたスイッチが全てOFFか確認します。 * * --------------------------------------------------------------------------- * 4. イベント実行の順序 - 組み合わせ * --------------------------------------------------------------------------- * パズルの進行や成功のためにイベントが特定の順番で起動されているかを * 簡単に確認できます。 * まず、パズルの前にスクリプトを呼び出して順番の組み合わせを設定します * (そして、それを参照するための ID を与えます)。 * * Galv.PUZ.setComb(id,v,v,v) * id(組み合わせの参照先) * vは組み合わせを作るときに使う値です。(任意の値を持つことができます) * 値の自動追加を使用している場合、 * 任意の数値やイベントIDを設定することができます(詳細は後述)。 * * 例: * Galv.PUZ.setComb(4,1,2,3) * 組み合わせ4は 1,2,3 * * 組み合わせに合わせてカウントするイベントが必要な場合、 * 有効化されたイベントでこのスクリプトを使用します。 * * Galv.PUZ.addToComb(id,v) * id は組み合わせ ID * (上記で設定した) v は、 * 組み合わせのイベントの正しい順番をプレイヤーが実行したかを確認するために * スクリプトに追加する値です。 * 代わりにイベントIDを自動値として追加する場合、この値を省略します。 * * * 例: * Galv.PUZ.addToComb(4,1) * 値1をコンボ4にカウントします。 * * Galv.PUZ.addToComb(4) * イベントIDをコンボ4にカウントします。 * * 最後に、 * 条件分岐のスクリプトで組み合わせが成功したかを確認する必要があります。 * * Galv.PUZ.checkComb(id) * プレイヤーがコンビネーション#idの正しいコンビネーションセットを * 満たしていればtrueを返します。 * * 例としてデモを見てください。 * https://galvs-scripts.com/rpgmaker/rmmz-plugins/ * * * --------------------------------------------------------------------------- * 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) * t = 'item', 'weapon' 'armor' * idはアイテムのIDで、アイテムの数を返し、コードで数値と比較できます。 * == に等しい * >= 大きいか等しい * <= 小さいか等しい * > 大きい * < 小さい * * これらは、&&で区切ることで、同じ条件分岐内で一緒に使うことができます。 * * 例: * Galv.PUZ.hasItems(1,2,3) * プレイヤーが各アイテムを1つ以上持っているかを確認します。 * * Galv.PUZ.hasArmors(1,2) * プレイヤーが各防具を1つ以上持っているかを確認します。 * * Galv.PUZ.itemAmount('item',1) >= 10 * アイテムID1のアイテムが10個以上持っているかを確認します。 * * 条件分岐で上記の3つをまとめて確認する場合、下記になります。 * * Galv.PUZ.hasItems(1,2,3) && Galv.PUZ.hasArmors(1,2) && Galv.PUZ.itemAmount('item',1) >= 10 */