Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

SkillSwitch

RPG Developer Bakin 用プラグイン キャスト別のスキル装備切替機能を提供します。習得済みスキルの中から装備するものを選び、コスト上限内で装備セットを組む JRPG 風のシステムをコモンイベントから構築できます。

  • バージョン: v0.1.0
  • カテゴリ: Common Event Script
  • 動作環境: RPG Developer Bakin

何ができるか

  • キャストごとに、習得スキルの装備 ON/OFF を切り替える
  • スキル毎にコストを設定 (#cost:N タグ)
  • キャストごとに装備可能な最大コスト上限を設定 (#base:N #perlevel:N タグ、レベル連動)
  • 装備状態を Bakin 変数 (SS_*) に書き出し、レイアウトツールで自由に UI を構築
  • レベルアップで新規習得したスキルは自動で非装備状態 (コスト上限を意図せず超えない)
  • 新規加入キャストの初期スキルも自動で非装備状態

このプラグインは「機能提供」に徹しており、装備画面 UI そのものは含みません。UI は Bakin レイアウトツールで自由に構築してください (末尾のサンプル参照)。

インストール

  1. SkillSwitch.cs を Bakin プロジェクトの script フォルダに配置
  2. Bakin エディタを起動 (プラグインが自動コンパイルされる)
  3. コモンイベントの「指定の関数を実行」から SkillSwitch.* の CE 群が呼び出せることを確認

タグ設定

スキルへの #cost:N タグ

Bakin エディタの「データベース > スキル」で各スキルの管理タグ欄に記述:

#cost:3

スキルタグの設定例

  • N は非負整数 (例: #cost:0, #cost:1, #cost:5)
  • タグ未設定なら cost = 0 として扱う (コスト機能を使わないなら何も書かなくて OK)
  • 他のタグと混在可能 (スペース区切り)

キャストへの #base:N #perlevel:N タグ

Bakin エディタの「データベース > キャスト」で各キャストの管理タグ欄に記述:

#base:3 #perlevel:1

キャストタグの設定例

装備可能な最大コストの計算式:

MaxCost = base + perLevel × cast.level
  • 例: #base:3 #perlevel:1 → Lv1 で 4、Lv10 で 13
  • #base / #perlevel どちらも未設定なら cap = 0 として扱う (base=0、perLevel=0)。この状態ではコスト > 0 のスキルは装備不可

#base / #perlevel の組合せパターン

設定 挙動
両方未設定 MaxCost = 0 (#cost:0 のスキルのみ装備可)
#base:3 のみ MaxCost = 3 (レベル非連動)
#perlevel:1 のみ MaxCost = 1 × level
#base:3 #perlevel:1 MaxCost = 3 + 1 × level

コスト機能を使わないなら: スキル・キャストどちらもタグを一切書かなければ、#cost:0 × MaxCost:0 で全スキル装備し放題 (足し合わせても 0 が上限に触れない)。

提供する CE (コモンイベント関数)

装備操作 (mutator、返り値なし)

失敗時は画面下部にトーストで理由を表示します。ユーザー側で戻り値を Bakin 変数に代入する必要はありません。

CE 引数 説明
Toggle(string) "castIdx:skillName" (例 "0:ファイアボール") 装備状態を反転
Equip(string) 同上 装備 (既装備は何もしない)
Unequip(string) 同上 未装備 (既未装備は何もしない)
ResetAll(int) castIndex 指定キャストの全スキルを未装備に
ToggleAt(string) "castIdx:listIndex" 習得スキル一覧の listIndex 番目をトグル (レイアウトのサブメニュー選択結果から呼ぶ用)
ToggleAtCurrent(int) listIndex 直近 WriteState の castIndex を再利用、引数 1 個でトグル可能な ToggleAt の簡易版
WriteState(int) castIndex 指定キャストの装備状態一式を SS_* 変数群に書き出す (レイアウト表示前に呼ぶ)

引数の識別子:

  • 通常はスキル名を指定 ("0:ファイアボール")
  • スキル名にコロン : は含めないでください (パースの都合)
  • 同名スキルが複数ある場合は最初にマッチしたものを操作

castIndex について: パーティメンバーの並び順 (主人公 = 0、2 番目 = 1、...)。控えメンバーは対象外。

値取得 (getter、int 返り値)

CE 引数 戻り値 説明
IsEquipped(string) "castIdx:skillName" 1=装備 / 0=未装備 / -1=不明 装備状態判定
GetCurrentCost(int) castIndex ≥0 (合計コスト) / -1=失敗 現在装備中の合計コスト
GetMaxCost(int) castIndex ≥0 (最大コスト) / -1=失敗 装備可能な最大コスト
GetSkillCount(int) castIndex ≥0 (スキル数) / -1=失敗 習得スキル数

プラグインが書き出す Bakin 変数

WriteState(castIndex) を呼ぶと、以下の変数が自動的に書き込まれます。ユーザー側で事前に変数を定義する必要はありません (ランタイム生成、セーブ/ロード保持)。

エディタで事前定義した場合の利点

同名の変数を Bakin エディタの「データベース > 変数ボックス」で事前定義しておくと、通常の Bakin 変数と同じように扱えます:

  • 「変数の値で分岐」等のイベントコマンドで変数選択ドロップダウンに出現する
  • 他のコモンイベントや条件式から変数名を直接参照できる (プラグインの外でも SS_CurrentCost で装備コストを取得、等)
  • レイアウトツールの特殊書式挿入ダイアログの「変数」カテゴリに出現

事前定義しなくてもレイアウトツールでは $[SS_SkillNames][i] の形式で参照可能なので、レイアウトだけで完結するなら定義不要。他イベントから値を参照したい場合は定義しておくと便利です。

単一変数 (キャスト情報)

レイアウトのテキストで $[SS_HeroName] のように参照できます。

変数名 型 中身
SS_HeroName 文字列 キャスト名
SS_HeroLevel 数値 現在レベル
SS_CurrentCost 数値 現在装備中の合計コスト
SS_MaxCost 数値 装備可能な最大コスト (#base + #perlevel × Lv、両タグ未設定は 0)
SS_SkillCount 数値 習得スキル数
SS_EquipCount 数値 装備中スキル数

全習得スキル一覧 (配列変数)

レイアウトで $[SS_SkillNames][i] のように参照。i は 0 から SS_SkillCount - 1 まで。

変数名 型 中身
SS_SkillNames[i] 文字列配列 スキル名
SS_SkillCosts[i] 数値配列 スキルのコスト
SS_SkillMarks[i] 文字列配列 "★" (装備中) / " " (未装備) — テキスト内混合表示用
SS_SkillEquipped[i] 数値配列 1=装備中 / 0=非装備 — ★アイコンの表示条件変数用
SS_SkillFlags[i] 数値配列 1=有効スロット (未定義 index=0) — サブメニューコンテナの表示条件変数用

装備中スキル一覧 (配列変数)

SS_EquipCount で件数を取得、$[SS_EquipNames][i] で参照。

変数名 型 中身
SS_EquipNames[i] 文字列配列 装備中スキル名
SS_EquipCosts[i] 数値配列 装備中スキルのコスト
SS_EquipFlags[i] 数値配列 1=装備スロット有効 (未定義=0) — 表示条件変数用

プラグイン内部管理変数 (ユーザーは触らないこと)

変数名 型 用途
SS_KnownCasts 文字列 一度でも party に現れたキャスト Guid のリスト (カンマ区切り)。未知キャスト初回目撃時の自動 disable 判定に使用

典型的な使い方

装備画面の実装例は末尾の サンプルレイアウトの作成手順 を参照してください。

自動 disable の挙動

以下の場合、対象スキルは自動的に非装備 (enabled=false) にされます:

  • 未知キャストの初回目撃時: 主人公の新規ゲーム開始、仲間キャストの加入イベント直後 → 全習得スキルを非装備に
  • レベルアップで新規スキル習得時: 新しく覚えたスキルのみ非装備に (既存装備は保持)
  • 忘却→再習得時: 忘れたスキルを覚え直した場合、非装備状態で復元

ロード時は自動 disable が発火しません (セーブ状態尊重)。

既知の制約

  • バトル中の装備切替は非対応 (v0.1)。バトル中にプラグイン CE を呼ばないでください
  • 未加入キャストへの操作不可 (パーティ加入後のキャストのみ)
  • スキルアイコンの表示: Bakin ネイティブの \skillimage[n] は主人公固定のため、パーティメンバー個別のスキルアイコン表示は非対応。v0.1 サンプルではテキスト表示のみ
  • スキル名にコロン : を含めないこと (CE 引数のパース都合)
  • 既存セーブ (v0.1 未導入時のセーブ) を初回ロードすると、既存パーティキャストは全て「未知」扱いになるため、初期スキルが自動 disable されます。装備し直しが必要

サンプルレイアウトの作成手順

装備画面 UI の実装例として、「スキル発動者選択 → 装備画面」の 2 段フローを構築する手順です。

📺 動画チュートリアル (準備中): セットアップ手順を分かりやすくまとめた YouTube 横長動画を後日公開予定です。テキストと画像だけでは伝えにくい部分をカバーします。公開されたら本 README にリンクを追記します。

1. レイアウトツールを開く

左タブの「レイアウトツール」をクリック。

レイアウトツール

2. イベント用フリーレイアウトを作成

「ゲーム内演出」>「イベント用フリーレイアウト」を選択し、新規レイアウトを 1 つ作成する。

  • 選択結果を代入する変数: skill_index を設定
  • キャンセルボタンで非表示: ON

フリーレイアウト設定

3. コモンイベントを準備

3-1. スキル装備者選択

  1. C# スクリプトに SkillSwitch.cs を設定
  2. C# プログラム呼出コマンドから SkillSwitch.WriteState を呼出、引数に Bakin 変数 cast_index を指定
  3. イベント用フリーレイアウトの表示コマンドを追加、先ほど作成したフリーレイアウトを指定
  4. 「閉じるまで待つ」にチェックを入れる

スキル装備者選択 CE

3-2. スキル装備・非装備切替

  1. C# スクリプトに SkillSwitch.cs を設定
  2. C# プログラム呼出コマンドから SkillSwitch.ToggleAtCurrent を呼出、引数に Bakin 変数 skill_index を指定

スキル装備切替 CE

4. スキル発動者選択レイアウトの準備

  1. デフォルトの SkillUserSelect をコピー&ペースト。「インデックスを 1 から始める」がオンならオフにする

  2. コピーしたレイアウトを選択、「選択結果を代入する変数」に cast_index を設定

    cast_index の設定

  3. レイアウトパーツの「スキル発動者選択」のフォルダマークをクリックして中を開く

  4. キャスト 1 を選択、アクションに「閉じて共通イベントを呼び出す」・共通イベントに「スキル装備者選択」を設定

    キャストのアクション設定

  5. キャスト 2〜4 も同様に設定

5. イベント用フリーレイアウトの調整

5-1. スキル発動者選択コンテナ (全習得スキル一覧)

  1. レイアウトパーツでメニューコンテナを追加

    メインコンテナ

  2. コンテナ設定:

    • 選択枠画像 = なし
    • 選択用画像 = なし
    • 選択カーソルスプライトセット = DefaultCursor
    • カーソルオフセット: X=-30, Y=10 程度を推奨

    レイアウトデザイン

  3. メインコンテナのフォルダマークを開き、サブメニューコンテナを追加

    • オフセット: X=30, Y=5 程度を推奨
  4. サブメニューコンテナのアクションに「共通イベントを呼び出す」・共通イベントに「スキル装備・非装備切替」を設定

    サブコンテナのアクション

  5. サブメニューコンテナの表示条件スイッチをクリック → 変数ボックスの条件追加

    • 配列変数 SS_SkillFlags を選択、ポインタを 0 に設定、値が 1 と等しい 条件にする

    表示条件 1 表示条件 2

  6. サブメニューコンテナの配下にテキストを追加: $[SS_SkillMarks][0] $[SS_SkillNames][0]

  7. もう 1 つテキストを追加: $[SS_SkillCosts][0]

    サブコンテナのテキスト

  8. 同じ構造のサブコンテナを必要数複製、表示条件のポインタとテキストのインデックスを 1 ずつ増やす ([0] → [1] → [2] ...)

  9. 「すべてのスキル」等のタイトルテキストを追加

5-2. 装備中スキルリスト

  1. 描画コンテナを追加、画像/アイコンに DefaultWindow_2 を設定

    装備スキルコンテナ

  2. その配下にもう 1 つ描画コンテナを作成

    • 画像/アイコン = なし
    • 「子供のテキストが空の時に非表示」を ON

    装備スキル名コンテナ

  3. 描画コンテナの配下にテキストを追加: $[SS_EquipNames][0]

    装備スキル名

  4. 同じ構造を必要数複製、SS_EquipNames のインデックスを 1 ずつ加算

  5. 「装備中のスキル」等のタイトルテキストを追加

5-3. ヘッダー

  1. 描画コンテナを追加、画像/アイコンに DefaultWindow_2 を設定

    ヘッダー

  2. 描画コンテナ内に以下のテキストを追加:

    • キャスト名: $[SS_HeroName]
    • レベル: $[SS_HeroLevel]
    • 現在の装備コスト: $[SS_CurrentCost]
    • 最大コスト: $[SS_MaxCost]

    ヘッダーテキスト

6. 装備画面の呼び出し

装備画面を開きたいイベントで、「レイアウト画面を表示」コマンドを追加し、「スキル発動者選択」を選び、上記で作成したスキル発動者選択レイアウトを指定する。

完成イメージ

完成イメージ 1

完成イメージ 2

完成イメージ 3


ライセンス

MIT License

商用/非商用問わず報告なしで自由にご利用頂けます。


作者

Bakin プラグインを継続的に作っていく予定です。フォローしてくれると嬉しいです。

About

RPG Developer Bakin 用プラグイン。キャスト別のスキル装備切替をコモンイベントから実現。コスト上限付きの JRPG 風装備システムを UI ごとレイアウトツールで自由に構築できます。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages