LNS112 強くてニューゲーム

任意のセーブデータからステータスなどを引き継ぐ「強くてニューゲーム」の機能を追加します。






基本情報

前提スクリプト


拡張タイプ

○ 要設定 (このスクリプトで設定すると機能する)


説明

概要

  • ゲーム中、イベントコマンド [スクリプト] などから
$game_commondata.set_newgame_flag
を呼ぶと、タイトル画面から「強くてニューゲーム」が選択可能になります。
  • 「強くてニューゲーム」を選ぶと、セーブデータを選択する画面に移り、選択するとそのデータから各種ゲームオブジェクトの内容を引き継いでゲームを始めます。
  • 「強くてニューゲーム」をした場合、周回数が $game_system に記録されます。
    • $game_system.lap で取得できます。

◆ パーティ/システム引き継ぎ設定

Inherit_Contents = {
  :items     => {1..999 => true},
  :weapons   => {1..999 => true},
  :armors    => {1..999 => true},
  :gold      => true,
  :switches  => [],
  :variables => [],
  :self_switches => [],
}
  • パーティとシステム(変数など)の引き継ぎ設定は Inherit_Contents で定義します。

  • :items / :weapons / :armors
    • それぞれ、パーティが持つアイテム / 武器 / 防具の引き継ぎ設定です。
    • アイテムの ID をキーとするハッシュで指定します。
      • ID は連番(1..10 など)で指定することも可能です。
    • 値が false の場合、引き継ぎません。true の場合、全て引き継ぎます。
    • 数値を指定すると、その値を上限として引き継ぎます。
      • 1 以上の場合、その値がそのまま上限になります。
      • 1 未満の場合、所持数をその割合分だけ引き継ぎます。
(例)
:items => { 1 => true, 2 => 0.5, 4..10 => 50 }
       # - ID 1 番のアイテムを全て引き継ぐ
       # - ID 2 番のアイテムを半分だけ引き継ぐ
       # - ID 4 番から 10 番までのアイテムを最大 50 個ずつ引き継ぐ
       # - 指定されていない 3 番と 11 番以降のアイテムは引き継がない
  • :weapons や :armors の場合も同様です。

  • :gold
    • 所持金の引き継ぎ設定です。
    • false の場合、引き継ぎません。true の場合、全額引き継ぎます。
    • 数値を指定すると、その値を上限として引き継ぎます。
      • 1 以上の場合、その値がそのまま上限になります。
      • 1 未満の場合、所持金をその割合分だけ引き継ぎます。
(例)
:gold => 10000  #=> 最大で 10000 まで所持金を引き継ぐ
:gold => 0.5    #=> 所持金を半分だけ引き継ぐ

  • :switches / :variables / :self_switches
    • スイッチ / 変数 / セルフスイッチの引き継ぎ設定です。
    • ID を値とする配列で指定します。
      • 配列に含まれない番号の内容は引き継ぎません。
      • セルフスイッチの ID は [(マップID),(イベントID),(タイプ)] で指定します。
(例)
:switches  => [1, 2, 3]  #=> スイッチ 1 番から 3 番まで(のみ)を引き継ぐ
:variables => [5..10, 2] #=> 変数 2 番と 5 番から 10 番までを引き継ぐ
:self_switches => [[1, 3, "A"], [2, 5, "B"]]
           # - ID 1 番のマップにある ID 3 番のイベントのセルフスイッチ A と
           # - ID 2 番のマップにある ID 5 番のイベントのセルフスイッチ B を引き継ぐ

◆ アクター引き継ぎ設定

Inherit_Actors = {
  # 共通指定
  :exp   => true,
  :skill => false,
  :class => false,
  :equip => true,
  :plus  => true,
  # 個別指定
  # (ID) => {(ステータスごとの指定)}
  # 1    => {:exp => {1 => 0.5, 2 => false, 3 => 0.5}, :skill => true },
}
  • アクターの引き継ぎ内容は Inherit_Actors で定義します。
※イベントコマンド [アクターの入れ替え] で、「初期化」にチェックを入れた場合ここでの設定に関わらず加入するアクターは初期化されます。

  • シンボルをキーにすると全アクター共通での設定になります。
  • 数値をキーにするとその ID のアクターへの個別設定になります。
    • 数値をキーとする場合、その値はハッシュにします。
  • 指定可能なキーは以下のとおりです。
:exp
経験値(クラスごとの経験値)
:skill
スキル習得状況
:class
現在のクラス
:plus
ステータスの強化状態(アイテムなどによる強化)
:equip
装備

  • :exp
    • 経験値の引き継ぎ状況を指定します。
    • 値が false の場合、引き継ぎません。true の場合、全て引き継ぎます。
    • 値が数値の場合、その値を上限として引き継ぎます。
      • 1 以上の場合、その値がそのまま上限になります。
      • 1 未満の場合、経験値をその割合分だけ引き継ぎます。
    • 値がハッシュの場合、クラス ID をキーとして個別に設定することになります。
      • ID 0 のキーは、指定されていないクラスがこれに従います。
(例)
:exp => true  #=> 全クラスの経験値を引き継ぐ
:exp => 0.5   #=> 全クラスの経験値を半分だけ引き継ぐ
:exp => { 1 => true, 2 => false, 3 => 0.5 }
        # - ID 1 番のクラスの経験値は引き継ぐ
        # - ID 2 番のクラスの経験値は引き継がない
        # - ID 3 番のクラスの経験値は半分だけ引き継ぐ
        # - それ以外のクラスの経験値は引き継がない
:exp => { 0 => 0.5, 1 => true, 2 => false }
        # - ID 1 番のクラスの経験値は引き継ぐ
        # - ID 2 番のクラスの経験値は引き継がない
        # - それ以外のクラスの経験値は半分だけ引き継ぐ

  • :skill
    • スキルの引き継ぎ状況を指定します。
      • 「現在のクラス」による習得スキルは、引き継いだレベルで覚えているならここでの設定に関わらず引き継ぐことになります。
    • 値が false の場合、引き継ぎません。true の場合、全て引き継ぎます。
    • 値が配列の場合、引き継ぐスキルの ID を個別指定することになります。
(例)
:skill => true  #=> 全て引き継ぐ
:skill => false #=> 全て引き継がない(全て忘れる)
:skill => [1, 3..10, 23]
                #=> ID 1 番、3 番から 10 番、及び 23 番のスキルだけを引き継ぐ

  • :class
    • クラスの引き継ぎ状況を指定します。
    • 値が true の場合、選んだセーブデータでなっていたクラスを引き継ぎます。
    • false や未指定の場合、データベースで設定された初期クラスになります。

  • :equip
    • 装備の引き継ぎ状況を指定します。
    • 値が true の場合、選んだセーブデータで装備していたものを引き継ぎます。
    • false や未指定の場合、データベースで設定された初期装備になります。
    • 配列の場合、スロットごとに引き継ぎ可否を指定します。
    • 引き継ぎ時点で装備できないものは装備せずパーティのアイテムに追加されます。

  • :plus
    • アイテムなどによるステータスの成長値を引き継ぎます。
    • 値が false の場合、引き継ぎません。true の場合、全て引き継ぎます。
    • 値が数値の場合、その値を上限として引き継ぎます。
      • 1 以上の場合、その値がそのまま上限になります。
      • 1 未満の場合、成長値をその割合分だけ引き継ぎます。
    • 値が配列の場合、ステータスごとに引き継ぐかどうかを指定します。
      • 標準では [最大HP, 最大MP, 攻撃力, 防御力, 魔法力, 魔法防御, 敏捷性, 運] の順です。
(例)
:plus => true   #=> 全て引き継ぐ
:plus => [true, false, 0.5, 0.5, 0.5, 0.5, true, false]
      # - 最大HP、敏捷性の成長値はそのまま引き継ぐ
      # - 攻撃力、防御力、魔法力、魔法防御の成長値は半分だけ引き継ぐ
      # - 最大MP、運の成長値は引き継がない


備考

再定義されるメソッド

なし

設定項目

Command_NGP <既定値 "強くてニューゲーム" >
「強くてニューゲーム」コマンド名
Inherit_Contents
パーティ/システムの引き継ぎ設定
Inherit_Actors
アクター引き継ぎ設定


更新履歴


  • こんにちは。不具合を発見したのでご報告いたします。 LNS000 組み込み拡張 LNS010 Input拡張 LNS100 プリセット拡張 LNS102 マウス操作 LNS140 マップ/キャラ拡張 の5つを導入した状態で、マップ画面でマウスカーソルをゲームウインドウの外側で大きく動かすなどすると、「 スクリプト 'LNS 140 マップ/キャラ拡張' の 980 行目で IndexError が発生しました。 index -1 too small for array; minimum: 0 」というエラーメッセージが表示され、ゲームが終了してしまいます。 スクリプトは全て最新で、内容は改変していません。 -- 2022-07-26 01:29:40
  • 確認が遅れましたが、対応修正しました。正確には「既に対応済みであったがアップロードを忘れていた」という状態でした…… -- 2022-11-01 15:39:07
  • 対応ありがとうございます!しかし LNS000, 010, 100, 102, 140 の5つを入れた状態で起動直後に「スクリプト 'LNS140 マップ/キャラ拡張' の 1719 行目で NameError が発生しました。 undefined method 'lns102_dash?' for class 'Game_Player'」と表示され、終了します。 -- 2022-12-24 16:39:35
コメント:

すべてのコメントを見る
最終更新:2020年12月29日 04:10