/*: @target MV MZ @plugindesc スキルツリーコンフィグ v1.0.1 @author うなぎおおとろ @url https://raw.githubusercontent.com/unagiootoro/RPGMZ/master/SkillTreeConfig.js @help [概要] スキルツリーを導入するプラグインです。 SPを使ってスキルを習得するスキルツリーを作成することができます。 [使用方法] ■ スキルツリーの設定 スキルツリーの設定は、「SkillTreeConfig.js」ファイルを編集することで行います。 基本的な設定としては、アクターごとにスキルツリーのタイプ(剣スキルや魔法スキルなど)を設定し、 そしてタイプごとにスキルツリーを構築します。 スキルツリーの構築は、スキルの派生設定(ファイアⅠを取得したらファイアⅡが取得可能になるなど)によって行います。 ■ SPの入手設定 スキルの習得には、SPが必要となります。 SPの入手方法としては ・戦闘終了による獲得 ・レベルアップによるSP獲得 の二通りの設定を行うことができます。 ・戦闘終了時に得られるSPの設定方法 敵キャラのメモ欄に の形式で記載します。 ・レベルアップによるSP獲得方法の設定 コンフィグの「levelUpGainSp」によって設定を行います。 ■ イベントでSPを獲得する方法 スクリプトで skt_gainSp(アクターID, 獲得するSP値) と記載することで、該当のアクターが指定したSPを獲得することができます。 例えば、アクターIDが1のアクターが5SPを獲得する場合、 skt_gainSp(1, 5); と記載します。 ■ 割り振った累計SPの取得 skt_totalSp(アクターID, 累計SP格納先変数ID) と記載することで、該当のアクターが今までに割り振ったSPを指定した変数に代入することができます。 例えば、アクターIDが1のアクターの累計SPをID2の変数に代入する場合、 skt_totalSp(1, 2); と記載します。 ■ スキルリセット スクリプトで skt_skillReset(アクターID); と記載することで、一度習得したスキルをリセットすることができます。 例えば、アクターIDが1のアクターのスキルリセットを行う場合、 skt_skillReset(1); と記載します。 ■ スキルツリータイプの有効/無効 スクリプトで skt_enableType(アクターID, "タイプ名"); と記載することで、タイプを有効にします。 無効にする場合は、 skt_disableType(アクターID, "タイプ名") と記載します。 無効にしたタイプは、スキルツリーのタイプ一覧には表示されません。 ■ タイプの引継ぎ 特定の条件を満たすとスキルツリーに新たなスキルが追加されるようにしたい場合、「タイプの引継ぎ」を使用します。 例えば、タイプ「下位魔法」を「上位魔法」に変更したい場合、あらかじめ両方のタイプをコンフィグに登録した上で、 「上位魔法」は無効化しておきます。そして、タイプの引継ぎ機能を用いて、「下位魔法」を「上位魔法」に引き継がせます。 タイプの引継ぎを行う場合、スクリプトで skt_migrationType(アクターID, "引継ぎ元タイプ名", "引継ぎ先タイプ名", リセット有無); と記載します。リセット有無については、引継ぎ後、引継ぎ元のタイプのスキルツリーをリセットする場合、trueを、 リセットしない場合、falseを指定します。 例えば、アクターIDが1のアクターが、タイプ「下位魔法」を「上位魔法」に引き継がせ、さらにスキルリセットを行う場合、 skt_migrationType(アクターID, "下位魔法", "上位魔法", true); と記載します。 ■ マップからスキルツリーを読み込む マップからスキルツリーの各スキルの配置座標を読み込むことで、ある程度自由なレイアウトのスキルツリーを 作成することができます。この機能によって設定可能なのはスキルの座標のみであり、スキル間の線はプラグイン側で描画します。 ・スキル座標の設定 マップ上のイベントにて、設定を行います。 例えば、"ファイア"というスキルがある場合、スキルを配置したい座標に空のイベントを作成し、 イベントのメモ欄に ファイア と記載します。すると、"ファイア"とメモ欄に記載したイベントのXY座標がスキルのXY座標として使用されます。 ■ スクリプトからスキルツリーを起動 スクリプトで skt_open(アクターID); と記載することで、指定したアクターのスキルツリーを起動することができます。 ■ スクリプトからスキルツリーのスキルを取得する スクリプトで skt_learn(アクターID, "タイプ名", スキル名, 強制取得有無(省略可)); と記載することで、指定したスキルを取得することができます。 スキル名は「skillTreeInfo」で指定したものを使用してください。 強制取得有無にtrueを設定した場合、習得可能か否かの判定を無視して強制的にスキルを取得します。 また、この場合SPは消費されません。 強制取得有無にfalseを設定した場合は通常通りの方法でスキルを取得します。この場合はSPも消費されます。 なおこの項目については省略可能です。省略した場合はfalseが適用されます。 例: アクターID1のキャラクターで、タイプ「剣技」のスキルツリーの「強撃」を取得する場合 skt_learn(1, "剣技", "強撃", false); */ const loadSkillTreeConfig = () => { return { // ============================================================= // ●ここからは設定項目です。 // ============================================================= // スキルツリーのタイプの設定を行います。 // skillTreeTypes: [ ~ ]の中にアクターの数だけタイプ設定を追加します。 // タイプ設定は、次の形式で設定します。 // { actorId: アクターのID, types: [タイプ情報1, タイプ情報2, ...] } // タイプ情報は、次の形式で設定します。 // [タイプ種別, タイプ名, タイプの説明, タイプ有効/無効] // タイプ種別...スキルの派生設定でタイプを識別するためのユニークな識別子を設定します。 // タイプ名...タイプ一覧のウィンドウに表示するタイプ名を設定します。 // タイプの説明...タイプ一覧のウィンドウに表示するタイプの説明を設定します。 // タイプ有効/無効...タイプを有効にする場合は、trueを、無効にする場合は、falseを指定します。 // この項目については、省略可能です。省略した場合、trueが指定されます。 skillTreeTypes: [ { actorId: 1, types: [ ["剣技", "剣技", "剣技を取得します。", true, 76], ["格闘技", "格闘技", "格闘技を取得します。", true, 77], ] }, { actorId: 2, types: [ ["剣技", "剣技", "剣技を取得します。", true, 76], ["格闘技", "格闘技", "格闘技を取得します。", true, 77], ] }, { actorId: 3, types: [ ["剣技", "剣技", "剣技を取得します。", true, 76], ["格闘技", "格闘技", "格闘技を取得します。", true, 77], ] }, { actorId: 4, types: [ ["剣技", "剣技", "剣技を取得します。", true, 76], ["格闘技", "格闘技", "格闘技を取得します。", true, 77], ] }, { actorId: 5, types: [ ["下位攻撃魔法", "攻撃魔法", "攻撃魔法を取得します。", true, 79], ["上位攻撃魔法", "攻撃魔法", "攻撃魔法を取得します。", false, 79], ["回復魔法", "回復魔法", "回復魔法を取得します。", true, 72], ] }, { actorId: 6, types: [ ["下位攻撃魔法", "攻撃魔法", "攻撃魔法を取得します。", true, 79], ["上位攻撃魔法", "攻撃魔法", "攻撃魔法を取得します。", false, 79], ["回復魔法", "回復魔法", "回復魔法を取得します。", true, 72], ] }, { actorId: 7, types: [ ["下位攻撃魔法", "攻撃魔法", "攻撃魔法を取得します。", true, 79], ["上位攻撃魔法", "攻撃魔法", "攻撃魔法を取得します。", false, 79], ["回復魔法", "回復魔法", "回復魔法を取得します。", true, 72], ] }, { actorId: 8, types: [ ["下位攻撃魔法", "攻撃魔法", "攻撃魔法を取得します。", true, 79], ["上位攻撃魔法", "攻撃魔法", "攻撃魔法を取得します。", false, 79], ["回復魔法", "回復魔法", "回復魔法を取得します。", true, 72], ] }, ], // スキルツリーのマップ読み込み設定を行います。 // 読み込むマップは以下の形式で指定します。 // skillTreeMapId: { skillTreeName1: mapID1, skillTreeName2: mapID2, ... } // skillTreeName...スキルツリーのタイプ名を指定します。 // mapID...読み込むマップIDを指定します。0の場合は読み込みを行いません。 skillTreeMapId: { "下位攻撃魔法": 2, "上位攻撃魔法": 2, "回復魔法": 3, "剣技": 4, "格闘技": 5, }, // 各スキルの情報を登録します。 // skillTreeInfo: [ ~ ]の中に登録するスキル数分のスキル情報の登録を行います。 // スキル情報の登録は次の形式で行います。 // [スキル名, スキルID, 必要SP, アイコン情報] // スキル名...スキルツリーの派生設定でスキルを一意に識別するための識別子 // 識別子なので、実際のスキル名と一致していなくても問題はありません。 // スキルID...データベース上で該当するスキルのID // 必要SP...スキルの習得に必要なSP // アイコン情報については、アイコンを使用するか、任意の画像を使用するかに応じて次の形式で登録します。 // アイコンを使用する場合 ["icon", iconIndex] // iconIndex...使用するアイコンのインデックス // iconIndexは省略可能です。省略した場合、スキルに設定されているアイコンが使用されます。 // 画像を使用する場合 ["img", fileName] // fileName...画像のファイル名。画像は、「img/pictures」フォルダにインポートしてください。 // なお、アイコン情報については省略可能です。省略した場合、["icon"]が適用されます。 skillTreeInfo: [ // 剣技 ["強撃", 172, 1, ["icon_ex", "back-blue"]], ["薙ぎ払い", 173, 1, ["icon_ex", "back-blue"]], ["連続攻撃", 174, 1, ["icon_ex", "back-blue"]], ["気合い", 175, 1, ["icon_ex", "back-blue"]], ["応急処置", 176, 1, ["icon_ex", "back-blue"]], ["乙女の構え", 177, 1, ["icon_ex", "back-blue"]], ["スピンクラッシュ", 178, 1, ["icon_ex", "back-blue"]], // 格闘技 ["足払い", 216, 1, ["icon_ex", "back-green"]], ["気孔術", 217, 1, ["icon_ex", "back-green"]], ["回し蹴り", 218, 1, ["icon_ex", "back-green"]], ["猛虎乱舞", 219, 1, ["icon_ex", "back-green"]], // 攻撃魔法 ["ファイアⅠ", 99, 1, ["icon_ex", "back-red"]], ["ファイアⅡ", 100, 1, ["icon_ex", "back-red"]], ["ファイアⅢ", 101, 1, ["icon_ex", "back-red"]], ["フレイムⅠ", 103, 1, ["icon_ex", "back-red"]], ["フレイムⅡ", 104, 1, ["icon_ex", "back-red"]], ["フレイムⅢ", 105, 1, ["icon_ex", "back-red"]], ["アイスⅠ", 107, 1, ["icon_ex", "back-blue"]], ["アイスⅡ", 108, 1, ["icon_ex", "back-blue"]], ["アイスⅢ", 109, 1, ["icon_ex", "back-blue"]], ["ブリザードⅠ", 111, 1, ["icon_ex", "back-blue"]], ["ブリザードⅡ", 112, 1, ["icon_ex", "back-blue"]], ["ブリザードⅢ", 113, 1, ["icon_ex", "back-blue"]], ["サンダーⅠ", 115, 1, ["icon_ex", "back-yellow"]], ["サンダーⅡ", 116, 1, ["icon_ex", "back-yellow"]], ["サンダーⅢ", 117, 1, ["icon_ex", "back-yellow"]], ["スパークⅠ", 119, 1, ["icon_ex", "back-yellow"]], ["スパークⅡ", 120, 1, ["icon_ex", "back-yellow"]], ["スパークⅢ", 121, 1, ["icon_ex", "back-yellow"]], ["ニュークリアⅠ", 156, 1, ["icon_ex", "back-gray"]], ["ニュークリアⅡ", 157, 1, ["icon_ex", "back-gray"]], // 回復魔法 ["ヒールⅠ", 52, 1, ["icon_ex", "back-green"]], ["ヒールⅡ", 53, 1, ["icon_ex", "back-green"]], ["ヒールⅢ", 54, 1, ["icon_ex", "back-green"]], ["リカバーⅠ", 56, 1, ["icon_ex", "back-green"]], ["リカバーⅡ", 57, 1, ["icon_ex", "back-green"]], ["リカバーⅢ", 58, 1, ["icon_ex", "back-green"]], ["キュアーⅠ", 60, 1, ["icon_ex", "back-green"]], ["キュアーⅡ", 61, 1, ["icon_ex", "back-green"]], ["キュアーⅢ", 62, 1, ["icon_ex", "back-green"]], ["レイズⅠ", 64, 1, ["icon_ex", "back-green"]], ["レイズⅡ", 65, 1, ["icon_ex", "back-green"]], ], // スキルツリーの派生設定を行います。 // skillTreeDerivative: { ~ }の中にタイプ数分のスキルツリーの登録を行います。 // スキルツリーの派生設定は次のように行います。 // "タイプ名": [ [スキル1, [派生先スキル1, 派生先スキル2, ...]], [スキル2, [派生先スキル3, 派生先スキル4, ...] ] // ※派生先スキルが存在しない終端スキルの場合、派生先スキルは省略可能です。 // // 例えば、"様子を見る"と"連続攻撃"を取得すると、"2回攻撃"が取得できるようにするには、次の設定を行います。 // ["様子を見る", ["2回攻撃"]], // ["連続攻撃", ["2回攻撃"]], // ["2回攻撃"], // // また、"ヒール"を取得すると、"ファイア"と"スパーク"が取得できるようにするには、次の設定を行います。 // ["ヒール", ["ファイア"]], // ["ヒール", ["スパーク"]], // ["ファイア"], // ["スパーク"], skillTreeDerivative: { "剣技": [ ["強撃", ["連続攻撃"]], ["薙ぎ払い", ["連続攻撃"]], ["気合い", ["応急処置"]], ["連続攻撃", ["乙女の構え"]], ["応急処置", ["スピンクラッシュ"]], ["乙女の構え", ["スピンクラッシュ"]], ["スピンクラッシュ"], ], "格闘技": [ ["足払い", ["回し蹴り"]], ["気孔術", ["猛虎乱舞"]], ["回し蹴り", ["猛虎乱舞"]], ["猛虎乱舞"], ], "下位攻撃魔法": [ ["ファイアⅠ", ["ファイアⅡ", "フレイムⅠ"]], ["ファイアⅡ", ["ファイアⅢ", "フレイムⅡ"]], ["フレイムⅠ", ["フレイムⅡ"]], ["ファイアⅢ"], ["フレイムⅡ"], ["アイスⅠ", ["アイスⅡ", "ブリザードⅠ"]], ["アイスⅡ", ["アイスⅢ", "ブリザードⅡ"]], ["ブリザードⅠ", ["ブリザードⅡ"]], ["アイスⅢ"], ["ブリザードⅡ"], ["サンダーⅠ", ["サンダーⅡ", "スパークⅠ"]], ["サンダーⅡ", ["サンダーⅢ", "スパークⅡ"]], ["スパークⅠ", ["スパークⅡ"]], ["サンダーⅢ"], ["スパークⅡ"], ], "上位攻撃魔法": [ ["ファイアⅠ", ["ファイアⅡ", "フレイムⅠ"]], ["ファイアⅡ", ["ファイアⅢ", "フレイムⅡ"]], ["フレイムⅠ", ["フレイムⅡ"]], ["ファイアⅢ", ["フレイムⅢ"]], ["フレイムⅡ", ["フレイムⅢ"]], ["フレイムⅢ", ["ニュークリアⅠ"]], ["アイスⅠ", ["アイスⅡ", "ブリザードⅠ"]], ["アイスⅡ", ["アイスⅢ", "ブリザードⅡ"]], ["ブリザードⅠ", ["ブリザードⅡ"]], ["アイスⅢ", ["ブリザードⅢ"]], ["ブリザードⅡ", ["ブリザードⅢ"]], ["ブリザードⅢ", ["ニュークリアⅠ"]], ["サンダーⅠ", ["サンダーⅡ", "スパークⅠ"]], ["サンダーⅡ", ["サンダーⅢ", "スパークⅡ"]], ["スパークⅠ", ["スパークⅡ"]], ["サンダーⅢ", ["スパークⅢ"]], ["スパークⅡ", ["スパークⅢ"]], ["スパークⅢ", ["ニュークリアⅠ"]], ["ニュークリアⅠ", ["ニュークリアⅡ"]], ["ニュークリアⅡ"], ], "回復魔法": [ ["キュアーⅠ", ["キュアーⅡ"]], ["キュアーⅡ", ["キュアーⅢ"]], ["キュアーⅢ", ["レイズⅠ"]], ["ヒールⅠ", ["ヒールⅡ", "リカバーⅠ"]], ["ヒールⅡ", ["ヒールⅢ"]], ["リカバーⅠ", ["リカバーⅡ"]], ["ヒールⅢ", ["リカバーⅢ"]], ["リカバーⅡ", ["リカバーⅢ"]], ["レイズⅠ", ["レイズⅡ"]], ["リカバーⅢ", ["レイズⅡ"]], ["レイズⅡ"], ], "回復魔法2": [ ["キュアーⅠ", ["キュアーⅡ"]], ["キュアーⅡ", ["キュアーⅢ"]], ["キュアーⅢ", ["レイズⅠ"]], ["ヒールⅠ", ["ヒールⅡ", "リカバーⅠ"]], ["ヒールⅡ", ["ヒールⅢ"]], ["リカバーⅠ", ["リカバーⅡ"]], ["ヒールⅢ", ["リカバーⅢ"]], ["リカバーⅡ", ["リカバーⅢ"]], ["レイズⅠ", ["レイズⅡ"]], ["リカバーⅢ", ["レイズⅡ"]], ["レイズⅡ"], ], }, // レベルアップによってSPを獲得する場合、レベルごとに得られるSP値を以下の形式で設定します。 // classId: 職業ID, default: デフォルト値, レベル: SP値, レベル: SP値, ... // 下記の設定例では、レベル2では3SP取得、レベル3では4SP取得、それ以外のレベルでは5SPを獲得します。 levelUpGainSp: [ { classId: 1, default: 5, 2: 3, 3: 4, }, { classId: 2, default: 5, 2: 3, 3: 4, }, { classId: 3, default: 5, 2: 3, 3: 4, }, { classId: 4, default: 5, 2: 3, 3: 4, }, { classId: 5, default: 5, 2: 3, 3: 4, }, { classId: 6, default: 5, 2: 3, 3: 4, }, { classId: 7, default: 5, 2: 3, 3: 4, }, { classId: 8, default: 5, 2: 3, 3: 4, }, ] // ============================================================= // ●設定項目はここまでです。 // ============================================================= }; };