RGSS3/エネミーレベル

Last-modified: 2020-01-26 (日) 18:08:34

敵キャラのレベルと職業を与えて、

  • ステータス
  • 経験値(エネミー側に設定することも可能)
  • 行動パターン
  • エネミー名
  • ドロップアイテム
  • グラフィック
  • 色相
  • 初期状態で付与されるステート(ステート超絶拡張にも搭載されている機能だが、便宜上こちらにも実装。レベル毎に特徴を設定する際などに使用)

を職業から取得してレベルに応じて設定するよ。
上手く扱えば、エネミーを作る手間を大幅に省けるかもね。気付いたら手間が逆に増えちゃってたけど、できることは結構増えるかも。というか既存のエネミーレベル系スクリプトに比べたら表現の幅が広いと思う。
かなり使い方が特殊だから、最初の説明をよーーーーーーーーーーーーーーく読んでおいてね。
戦闘開始時にステートを付与する機能を使う際は、本来想定している使い方を補助するために『ステート超絶拡張』との併用を推奨するよ。
『こんな風に設定したいけどやり方が分からない!』っていうのがあったらコメント欄で遠慮なく訊いてね。コメントを確認し次第対応するからね。

※注意※
ステート超絶拡張』を導入してる場合、それより下に導入してください。

スクリプト

スクリーンショット

20170830185839.png
やたらレベルの高いスライム。
bandicam 2017-08-31 18-11-29-708.jpg
低レベルだと即死級ダメージ。

設定方法(かなり長いので注意)

e-class.jpg
職業欄でレベル毎のステータス・経験値曲線・特徴を設定。
経験値曲線から取得した値に任意倍率を掛けた値を経験値として設定する。
ここで指定した特徴は無条件にエネミーに付与される。
習得スキルの欄にスキルを設定してやれば、メモ欄と習得レベルで指定した条件をもとに行動パターンに追加される。
習得レベルは『行動パターンに追加する最低レベル』
メモ欄は<最高レベル:優先度:使用条件>の形式で設定。
この場合は『レベルが51~99の時、"HPが25%~75%のときに優先度10で炎の息"を行動パターンに追加』となる。
それ以外の設定方法についてはスクリプト冒頭の説明を参照。
なお、使用条件を『常時』にしたい場合は、<最高レベル:優先度>の形式で設定する。
メモ欄には『ドロップアイテム』と『戦闘開始時に付与するステート』を設定できる。
ドロップアイテムは、<最低レベル-最高レベル:カテゴリ:ID,確率>または<最低レベル-最高レベル:Drop:アイテム名,確率>の書式で設定。
確率は自然数で指定。その逆数の確率でドロップする。
画像では、『レベルが25~50のとき、1/16の確率でエリクサー』『レベルが77のとき、1/128の確率で光のタリスマン』『レベルが90~99のとき、1/4096の確率で6番目の武器』を、エネミーデータで設定されているドロップアイテムに加えてドロップする。
この画像では設定していないが、<最低レベル-最高レベル:Name:名前>、<最低レベル-最高レベル:Graphic:ファイル名>、<最低レベル-最高レベル:Hue:色相>と記述することで、レベル毎にエネミー名やグラフィック、色相も変更可能。色相は0~360の整数で指定。
同じく画像内で設定していないが、<最低レベル-最高レベル:States:ステートID>の書式で戦闘開始時に一定のレベルの範囲でのみステートを付与可能。
また、<最低レベル-最高レベル:States:ステート名>の書式でも付与可能。仕様上、半角数字だけで構成されたステート名を使うことは非推奨。
特定のレベル間でのみ付与したい特徴などを実現したい場合に便利。

e-base.jpg
エネミーデータの設定。基本能力値は攻撃力以外は何を入れても無意味。
攻撃力に指定したIDの職業が設定される。
メモ欄に<ExpRate>任意式<ExpRate>と入れることで、経験値に掛ける倍率を指定可能。
同様に<Gold>任意式</Gold>と入れることで、所持金を設定できる。
どちらの式も、省略時はスクリプト内で指定した式が適用される。
画像における『@level』は、エネミーのレベルを参照する。
なお、設定によってはエネミーの名前の後ろにレベルを表記するが、レベルを表示したくないエネミーの場合は、エネミーのメモ欄に<Invisible>と記述することで、設定に関係なくレベルを非表示にすることが可能。

e-base2.jpg
経験値曲線から経験値を設定したくない場合は、メモ欄に<経験値手動設定>と記述した上で<Exp>任意式</Exp>と記述。
経験値の式も省略時はスクリプト内で指定した式が適用される。
なお、設定次第ではデフォルトで任意式から得た経験値を設定し、メモ欄に<経験値自動設定>と記述されている場合のみ経験値曲線に従って経験値を設定できるようにすることも可能。

e-base3.jpg
ボスエネミーなど、いちいち職業を設定するのが面倒くさい場合は、メモ欄に<Level:数値>と記述して強引にレベルを設定すると、職業が無い状態になってエネミーデータの基本能力値を参照するように変更可能。

なお、詳しい設定方法はスクリプト冒頭の説明を参照。

更新履歴

更新履歴

Ver 1.98

イベント戦闘時,個別にレベルを指定する機能を追加.

Ver 1.97

ようやく変身処理から抜け出せた。

Ver 1.96c

助けて

Ver 1.96b

変身処理対策が終わらない……

Ver 1.96a

変身処理に暫定的に対応。

Ver 1.96

RPG::EnemyからLv1時のステータスを取得できるように変更。

Ver 1.95

フィールドマップに設定するレベルテーブルを複数用意して複数のフィールドマップが存在しても対応できるように変更。

Ver 1.92

ステート超絶拡張』の不具合修正に対応。

Ver 1.91

$game_party.e_levelが1体目にしか反映されない不具合を修正。

Ver 1.90

ドロップアイテムと戦闘行動周りの致命的不具合を修正。

Ver 1.88

エネミーの名前もレベル毎に設定できるように変更。

Ver 1.86

レベルをメモ欄で固定しているエネミー(職業が設定されていないエネミー)との戦闘でエラーを吐く不具合を修正。

Ver 1.85

職業のメモ欄に指定した項目が2回目以降無効になる不具合を修正。

Ver 1.84

グラフィックや色相もレベル毎に設定できるように変更。

Ver 1.80

エネミーのレベルを強制設定している場合にエラーが出そうな感じになっていたのを修正。

Ver 1.78

初期付与ステートをステート名でも指定できるように変更。

Ver 1.76

ステート超絶拡張』併用時もエネミーのメモ欄に指定したステートを全てのレベルにおいて付与するように変更。
初期付与ステートが先頭のエネミーにしか反映されない不具合を修正。

Ver 1.74

ドロップアイテム設定で、アイテム名で指定した際にアイテムが見つからない場合及び、行動パターン設定で、HP・MP・ターン数で設定していて引数が足りない場合にエラーを吐くように変更。

Ver 1.73

説明の表記を一部変更。
内部処理を一部変更。(いずれも、動作内容そのものには影響ありません。)

Ver 1.72

メモ欄に式で指定する項目を改行を含んでも認識できるように変更。

Ver 1.70

職業に設定されている特徴も反映されるように変更。

Ver 1.69

職業で設定したエネミーの行動が1ターン目のみ反映されない不具合を修正。
範囲式・配列で出現レベルを指定していない場合にエラー落ちする不具合を修正。

Ver 1.68

エネミーの名前の後ろにレベルを表記する設定を追加。

Ver 1.65

戦闘テスト以外の時のエネミーのレベルを一定範囲or配列内の値からランダムに選べるように変更。
それに伴い、マップにエネミーレベルを設定する方法が変化。

Ver 1.55

イベントバトル時にエネミーレベルを指定できるように変更。

Ver 1.50

初期状態で付与されるステートをレベル毎に指定できる機能を追加。
行動パターンも最高レベルを指定できるように変更。

Ver 1.30

ドロップアイテムをレベル毎に指定できる機能を追加。
行動パターンをレベル毎に指定できる機能を追加。

Ver 1.07

経験値も任意式から手動設定できるように変更。
デフォルトで手動設定式を適用する設定を追加。
経験値曲線からの自動取得方法を『エネミーが次のレベルになった直後の経験値』に変更。(レベル100の経験値も計算する)
経験値・GoldがFloat型になったままだったのを修正。

Ver 1.00

公開。

  • 回答有難う御座います。 此方「BlueandRedzone」氏の「エンカウントイベント」を使用して、戦闘画面に遷移する前に -- A? 2019-01-23 (水) 11:58:41
  • 敵レベルによって、名前or色調or画像or戦闘モード(mitsu_evo氏のバトルレイアウト設定)を変更しようと思っていたので、コモンイベントから取得出来るか質問したのですが かなり説明不足で済みません… -- A(途切れました済みません…)? 2019-01-23 (水) 12:09:00
    • コモンイベントからでも同様の方法でレベルを取得することが可能であるはずです。 -- コミュ太郎? 2019-01-23 (水) 17:56:05
  • お久しぶりです、イベントバトルでエネミーの変身を行うと変身後のエネミーに職業の設定が適用されていないのですが解決法はありますでしょうか? -- トリ? 2019-01-26 (土) 00:50:52
    • おぉう……変身という概念をすっかり失念していました……今大慌てで変身時の処理を書き換えていますのでしばしお待ちを……(汗) -- コミュ太郎? 2019-01-26 (土) 01:50:10
    • お待たせいたしました。一応変身処理に対応させたVer1.96aを公開しました。正直変身処理を行うテストプレイ環境を構築するのが面倒困難であるため、正常に動作するかどうかは不明ですが、もし何かしらの問題が発生したら、お手数ですが再度ご報告お願いします。 -- コミュ太郎? 2019-01-26 (土) 02:11:07
  • 迅速な対応ありがとうございます。 早速、導入してみましたが「"Game_Interpreter"の1339行目でArgumentErrorが発生しました。 wrong number of arguments(1 of 2)」と表示されました。 -- トリ? 2019-01-26 (土) 18:28:36
    • かはっ……プリセットの方を直に書き換えて素材側に書き加え忘れる痛恨のミス……Ver1.96bに差し替えたので、そちらで上書きしてください。 -- コミュ太郎? 2019-01-26 (土) 22:50:22
      • Ver1.96bにしたところ「347行目で NoMethodError が発生しました。 undefined method ‘b_name‘ for#<RPG::Enemy:0x6802a54>」と表示が出てきました。 お手数かけますがよろしくお願いします。 -- トリ? 2019-01-26 (土) 23:14:35
      • ぐふっ……そ、その部分を修正したVer1.96cに…… -- コミュ太郎? 2019-01-27 (日) 01:02:17
      • ありがとうございます!ありがとうございます!無事に動作しました!お疲れ様でした<(_ _)> -- トリ? 2019-01-27 (日) 01:23:16
  • 失礼します。 イベント戦闘の際、エネミー一体ずつのレベル指定は出来ないのでしょうか? -- A? 2020-01-21 (火) 23:07:46
    • ご利用ありがとうございます.該当機能を追加したVer1.98を公開しました.$game_party.e_levelに『トループ内でのエネミーID(1~8)をキーとするHash』でレベルを整数で直接指定することで,個別にレベルを設定できるようになりました. -- コミュ太郎? 2020-01-22 (水) 01:48:59
  • 対応して頂き、有難う御座います。 当方スクリプトには不慣れなのですが 指定をする場合、$game_party.e_level = hash{1:1,2:3}の様に記述すれば宜しいのでしょうか? -- A? 2020-01-22 (水) 11:53:58
    • 例として、$game_party.e_level={1=>7,2=>4,3=>2}と指定すると、1番目の敵はLv7、2番目はLv4、3番目はLv2となります。ただし、イベントコマンドからスクリプトを入力する際に折り返されるとエラーが発生してしまうため、適当なカンマの直後に改行を入れることを推奨します。 -- コミュ太郎? 2020-01-22 (水) 12:09:48
  • 三度、回答有難う御座いますからの 三度失礼します。 条件分岐の件なのですが、一体目がlv1かの場合 条件分岐からのスクリプトで、$game_troop.members[0-1].level == 1 と入力すればよいのでしょうか? -- A? 2020-01-22 (水) 22:04:31
    • $game_troop.members[0].level == 1ですね. -- コミュ太郎? 2020-01-22 (水) 22:28:52
  • 失礼します。 新規プロジェクトで確認した所 -- A? 2020-01-25 (土) 21:24:54
  • 458行目でno methodエラーが発生しました。確認をお願いします。 -- A? 2020-01-25 (土) 21:25:44
    • 原因を調べるため,お手数ですが,エラー発生時のメッセージを記載してください. -- コミュ太郎? 2020-01-26 (日) 10:23:11
  • お騒がせしました。 新規プロジェクトに導入して直ぐだったので、職業を240(デフォ敵の最大攻撃力)まで増やしていなかったのが原因でした。すみません… -- A? 2020-01-26 (日) 15:08:40
    • ヽ(・ω・)/ズコー ……てかコレって微妙に分かりにくい仕様にしてしまった自分に責任があるのかも……何かスミマセン…… -- コミュ太郎? 2020-01-26 (日) 18:08:34