/*:
@target MV MZ
@plugindesc スキルツリーコンフィグ
@author うなぎおおとろ
@url https://raw.githubusercontent.com/unagiootoro/RPGMZ/master/SkillTreeConfig.js

@help
[概要]
スキルツリーを導入するプラグインです。
SPを使ってスキルを習得するスキルツリーを作成することができます。

[使用方法]
■ スキルツリーの設定
スキルツリーの設定は、「SkillTreeConfig.js」ファイルを編集することで行います。
基本的な設定としては、アクターごとにスキルツリーのタイプ(剣スキルや魔法スキルなど)を設定し、
そしてタイプごとにスキルツリーを構築します。
スキルツリーの構築は、スキルの派生設定(ファイアⅠを取得したらファイアⅡが取得可能になるなど)によって行います。

■ SPの入手設定
スキルの習得には、SPが必要となります。
SPの入手方法としては
・戦闘終了による獲得
・レベルアップによるSP獲得
の二通りの設定を行うことができます。

・戦闘終了時に得られるSPの設定方法
敵キャラのメモ欄に
<battleEndGainSp: SP>
の形式で記載します。

・レベルアップによるSP獲得方法の設定
コンフィグの「levelUpGainSp」によって設定を行います。

■ イベントでSPを獲得する方法
スクリプトで
skt_gainSp(アクターID, 獲得するSP値)
と記載することで、該当のアクターが指定したSPを獲得することができます。
例えば、アクターIDが1のアクターが5SPを獲得する場合、
skt_gainSp(1, 5);
と記載します。

■ スキルリセット
スクリプトで
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_loadMap(スキルツリーの対象アクターID, スキルツリーの対象タイプ名)
を実行します。
例えば、アクターID1のアクターで、タイプ"攻撃魔法"のスキルツリーを読み込む場合、
skt_loadMap(1, "攻撃魔法");
と記載します。
*/

const loadSkillTreeConfig = () => {
return {
// =============================================================
// ●Configuration starts here.
// =============================================================

// Configure skill tree types.
// skillTreeTypes: [ ～ ]の中にアクターの数だけタイプ設定を追加します。

// タイプ設定は、次の形式で設定します。
// { actorId: アクターのID, types: [タイプ情報1, タイプ情報2, ...] }

// タイプ情報は、次の形式で設定します。
// [タイプ種別, タイプ名, タイプの説明, タイプ有効/無効]
// タイプ種別...スキルの派生設定でタイプを識別するためのユニークな識別子を設定します。
// タイプ名...タイプ一覧のウィンドウに表示するタイプ名を設定します。
// タイプの説明...タイプ一覧のウィンドウに表示するタイプの説明を設定します。
// タイプ有効/無効...タイプを有効にする場合は、trueを、無効にする場合は、falseを指定します。
//                  この項目については、省略可能です。省略した場合、trueが指定されます。
skillTreeTypes: [
    {
        actorId: 1,
        types: [
            ["Attack Magic", "Attack Magic", "Acquire attack magic."],
            ["Support Magic", "Support Magic", "Acquire support magic."],
            ["Sea God's Blessing", "Sea God's Blessing", "Acquire Sea God's Blessings."],
        ]
    },
],



// 各スキルの情報を登録します。
// skillTreeInfo: [ ～ ]の中に登録するスキル数分のスキル情報の登録を行います。

// スキル情報の登録は次の形式で行います。
// [スキル名, スキルID, 必要SP, アイコン情報]
// スキル名...スキルツリーの派生設定でスキルを一意に識別するための識別子
//            識別子なので、実際のスキル名と一致していなくても問題はありません。
// スキルID...データベース上で該当するスキルのID
// 必要SP...スキルの習得に必要なSP
// アイコン情報については、アイコンを使用するか、任意の画像を使用するかに応じて次の形式で登録します。
//   アイコンを使用する場合 ["icon", iconIndex]
//   iconIndex...使用するアイコンのインデックス
//               iconIndexは省略可能です。省略した場合、スキルに設定されているアイコンが使用されます。
//   画像を使用する場合 ["img", fileName]
//   fileName...画像のファイル名。画像は、「img/pictures」フォルダにインポートしてください。
// なお、アイコン情報については省略可能です。省略した場合、["icon"]が適用されます。
skillTreeInfo: [
    // Attack Magic
    ["Ice Buckshot α", 302, 1, ["icon"]],
    ["Ice Buckshot β", 303, 18, ["icon"]],
    ["Ice Buckshot γ", 304, 24, ["icon"]],
    ["Ice Buckshot Ω", 305, 38, ["icon"]],

    ["Icicle Drop α", 306, 14, ["icon"]],
    ["Icicle Drop β", 307, 22, ["icon"]],
    ["Icicle Drop γ", 308, 30, ["icon"]],
    ["Icicle Drop Ω", 309, 42, ["icon"]],

    ["Water Bullet α", 311, 1, ["icon"]],
    ["Water Bullet β", 312, 18, ["icon"]],
    ["Water Bullet γ", 313, 24, ["icon"]],
    ["Water Bullet Ω", 314, 38, ["icon"]],

    ["Aqua Cutter α", 315, 14, ["icon"]],
    ["Aqua Cutter β", 316, 22, ["icon"]],
    ["Aqua Cutter γ", 317, 30, ["icon"]],
    ["Aqua Cutter Ω", 318, 42, ["icon"]],

    ["Aqua Jet α", 320, 12, ["icon"]],
    ["Aqua Jet β", 321, 22, ["icon"]],

    ["Aqua Break α", 323, 18, ["icon"]],
    ["Aqua Break β", 324, 32, ["icon"]],

    ["Absolute Zero", 326, 38, ["icon"]],
    ["Hydro Blast", 327, 38, ["icon"]],

    // Support Magic
    ["Attack Boost α", 351, 14, ["icon"]],
    ["Attack Boost Ω", 352, 26, ["icon"]],

    ["Guard Boost α", 354, 14, ["icon"]],
    ["Guard Boost Ω", 355, 26, ["icon"]],

    ["Quick Boost α", 357, 14, ["icon"]],
    ["Quick Boost Ω", 358, 26, ["icon"]],

    ["All-Rounder α", 360, 24, ["icon"]],
    ["All-Rounder Ω", 361, 32, ["icon"]],

    ["Heal α", 342, 0, ["icon"]],
    ["Heal β", 343, 16, ["icon"]],
    ["Heal γ", 344, 26, ["icon"]],
    ["Heal Ω", 345, 42, ["icon"]],

    ["Heal", 347, 8, ["icon"]],

    ["Water's Protection", 349, 22, ["icon"]],

    ["Sedation Magic", 337, 8, ["icon"]],

     ["Costume Restoration Magic", 370, 8, ["icon"]],

    // Sea God's Blessings
    ["Attack Enhancement Ⅰ", 382, 12, ["icon"]],
    ["Attack Enhancement Ⅱ", 383, 24, ["icon"]],
    ["Attack Enhancement Ⅲ", 384, 36, ["icon"]],

    ["Defense Enhancement Ⅰ", 387, 12, ["icon"]],
    ["Defense Enhancement Ⅱ", 388, 24, ["icon"]],
    ["Defense Enhancement Ⅲ", 389, 36, ["icon"]],

    ["Magic Attack Enhancement Ⅰ", 392, 12, ["icon"]],
    ["Magic Attack Enhancement Ⅱ", 393, 24, ["icon"]],
    ["Magic Attack Enhancement Ⅲ", 394, 36, ["icon"]],

    ["Magic Defense Enhancement Ⅰ", 397, 12, ["icon"]],
    ["Magic Defense Enhancement Ⅱ", 398, 24, ["icon"]],
    ["Magic Defense Enhancement Ⅲ", 399, 36, ["icon"]],

    ["Agility Enhancement Ⅰ", 402, 12, ["icon"]],
    ["Agility Enhancement Ⅱ", 403, 24, ["icon"]],
    ["Agility Enhancement Ⅲ", 404, 36, ["icon"]],

    ["Max HP Enhancement Ⅰ", 407, 12, ["icon"]],
    ["Max HP Enhancement Ⅱ", 408, 24, ["icon"]],
    ["Max HP Enhancement Ⅲ", 409, 36, ["icon"]],

    ["Max MP Enhancement Ⅰ", 412, 16, ["icon"]],
    ["Max MP Enhancement Ⅱ", 413, 32, ["icon"]],
    ["Max MP Enhancement Ⅲ", 414, 48, ["icon"]],

    ["HP Auto-Recovery Ⅰ", 417, 18, ["icon"]],
    ["HP Auto-Recovery Ⅱ", 418, 36, ["icon"]],
    ["HP Auto-Recovery Ⅲ", 419, 48, ["icon"]],

    ["MP Auto-Recovery Ⅰ", 421, 18, ["icon"]],
    ["MP Auto-Recovery Ⅱ", 422, 32, ["icon"]],
    ["MP Auto-Recovery Ⅲ", 423, 48, ["icon"]],

],


// スキルツリーの派生設定を行います。
// skillTreeDerivative: { ～ }の中にタイプ数分のスキルツリーの登録を行います。

// スキルツリーの派生設定は次のように行います。
// "タイプ名": [ [スキル1, [派生先スキル1, 派生先スキル2, ...]], [スキル2, [派生先スキル3, 派生先スキル4, ...] ]
// ※派生先スキルが存在しない終端スキルの場合、派生先スキルは省略可能です。
//
// 例えば、"様子を見る"と"連続攻撃"を取得すると、"２回攻撃"が取得できるようにするには、次の設定を行います。
// ["様子を見る", ["２回攻撃"]],
// ["連続攻撃", ["２回攻撃"]],
// ["２回攻撃"],
//
// また、"ヒール"を取得すると、"ファイア"と"スパーク"が取得できるようにするには、次の設定を行います。
// ["ヒール", ["ファイア"]],
// ["ヒール", ["スパーク"]],
// ["ファイア"],
// ["スパーク"],




skillTreeDerivative: {
    "Attack Magic": [

        ["Ice Buckshot β", ["Ice Buckshot γ"]],
        ["Ice Buckshot γ"],
        
 
 　　　 ["Icicle Drop α", ["Icicle Drop β"]],
        ["Icicle Drop β", ["Icicle Drop γ"]],
        ["Icicle Drop γ"],

        ["Water Bullet β", ["Water Bullet γ"]],
        ["Water Bullet γ"],

        ["Aqua Cutter α", ["Aqua Cutter β"]],
        ["Aqua Cutter β", ["Aqua Cutter γ"]],
        ["Aqua Cutter γ"],

        ["Aqua Jet α", ["Aqua Jet β"]],
        ["Aqua Jet β"],

        ["Aqua Break α", ["Aqua Break β"]],
        ["Aqua Break β"],

        ["Icicle Drop γ", ["Absolute Zero"]],
        ["Ice Buckshot γ", ["Absolute Zero"]],
        ["Absolute Zero"],

        ["Aqua Cutter γ", ["Hydro Blast"]],
        ["Water Bullet γ", ["Hydro Blast"]],
        ["Hydro Blast"],

    ],

    "Support Magic": [

        ["Heal β", ["Heal γ"]],
        ["Heal γ", ["Heal Ω"]],
        ["Heal Ω"],

        ["Heal"],

        ["Heal β", ["Water's Protection"]],
        ["Heal", ["Water's Protection"]],
        ["Water's Protection"],

        ["Sedation Magic"],

        ["Costume Restoration Magic"],

        ["Attack Boost α", ["Attack Boost Ω"]],
        ["Attack Boost Ω"],

        ["Guard Boost α", ["Guard Boost Ω"]],
        ["Guard Boost Ω"],

        ["Quick Boost α", ["Quick Boost Ω"]],
        ["Quick Boost Ω"],

        ["Attack Boost Ω", ["All-Rounder α"]],
        ["Guard Boost Ω", ["All-Rounder α"]],
        ["Quick Boost Ω", ["All-Rounder α"]],
        ["All-Rounder α"],

        ["All-Rounder α", ["All-Rounder Ω"]],
        ["All-Rounder Ω"],
    ],

    "Sea God's Blessing": [
        ["Attack Enhancement Ⅰ", ["Attack Enhancement Ⅱ"]],
        ["Attack Enhancement Ⅱ", ["Attack Enhancement Ⅲ"]],
        ["Attack Enhancement Ⅲ"],

        ["Defense Enhancement Ⅰ", ["Defense Enhancement Ⅱ"]],
        ["Defense Enhancement Ⅱ", ["Defense Enhancement Ⅲ"]],
        ["Defense Enhancement Ⅲ"],

        ["Magic Attack Enhancement Ⅰ", ["Magic Attack Enhancement Ⅱ"]],
        ["Magic Attack Enhancement Ⅱ", ["Magic Attack Enhancement Ⅲ"]],
        ["Magic Attack Enhancement Ⅲ"],

        ["Magic Defense Enhancement Ⅰ", ["Magic Defense Enhancement Ⅱ"]],
        ["Magic Defense Enhancement Ⅱ", ["Magic Defense Enhancement Ⅲ"]],
        ["Magic Defense Enhancement Ⅲ"],

        ["Max HP Enhancement Ⅰ", ["Max HP Enhancement Ⅱ"]],
        ["Max HP Enhancement Ⅱ", ["Max HP Enhancement Ⅲ"]],
        ["Max HP Enhancement Ⅲ"],

        ["Max MP Enhancement Ⅰ", ["Max MP Enhancement Ⅱ"]],
        ["Max MP Enhancement Ⅱ", ["Max MP Enhancement Ⅲ"]],
        ["Max MP Enhancement Ⅲ"],

        ["Max HP Enhancement Ⅱ", ["HP Auto-Recovery Ⅰ"]],
        ["HP Auto-Recovery Ⅰ", ["HP Auto-Recovery Ⅱ"]],
        ["HP Auto-Recovery Ⅱ", ["HP Auto-Recovery Ⅲ"]],
        ["HP Auto-Recovery Ⅲ"],

        ["Max MP Enhancement Ⅱ", ["MP Auto-Recovery Ⅰ"]],
        ["MP Auto-Recovery Ⅰ", ["MP Auto-Recovery Ⅱ"]],
        ["MP Auto-Recovery Ⅱ", ["MP Auto-Recovery Ⅲ"]],
        ["MP Auto-Recovery Ⅲ"],



    ],
},

// レベルアップによってSPを獲得する場合、レベルごとに得られるSP値を以下の形式で設定します。
// classId: 職業ID, default: デフォルト値, レベル: SP値, レベル: SP値, ...
// 下記の設定例では、レベル2では3SP取得、レベル3では4SP取得、それ以外のレベルでは5SPを獲得します。
levelUpGainSp: [
    {
        classId: 1,
        default: 5,
        2: 2,
        3: 3,
        4: 4,
        5: 5,
        6: 1,
        7: 2,
        8: 3,
        9: 4,
        10: 5,
        11: 6,
        12: 7,
        13: 8,
        14: 9,
        15: 10,
    },

]
// =============================================================
// ●Configuration ends here.
// =============================================================
};
};
