倒した敵の報酬をまとめてゲットする方法まとめ(ツクールMV)

セルフメモです。

発端となった独り言
「今は雑魚モンスター倒すと即お金が入るんだけど
世界観的には『モンスターの討伐依頼を出した近隣住民か傭兵ギルドが、
討伐数に応じて報酬を支払ってくれてる』設定なので、
面倒にならない程度にシステムに落とし込みたい。
雑魚マップ出る時、一括で払う方式にすべきか?」

と、いうことで、最初に考えた対策法
・全モンスターが「魔物の遺物」というアイテムを100%落とす
(隠しアイテムにする)
・マップを出る際に報酬を計算し、「魔物の討伐に対して傭兵ギルドから(報酬)Gが支払われた!」と表示し、所持金up &魔物の遺物全没収

ところが、この方法だと以下の問題が……。

・マップ内で100体以上の魔物を倒した場合、その数は加算されない(アイテムの上限が99だから)

解決方法はいくつかあるのですが
・アイテムじゃなくて変数で管理するとなると、戦闘終了時に動作するプラグインが必要そう
・できればプラグイン導入無しで解決したい(すでに多数導入済みで競合が怖い)

このつぶやきに対して、様々なツクラーさんからアイデアをいただきました(多謝!)
そのうち「1戦闘ごとに『魔物の遺物』を変数に落とし込む」方法を採用させていただくことに。

※自分はシンボルエンカウント使用してたので、雑魚敵との戦闘イベント後に判定イベントを挿入しましたが、ランダムエンカウントの場合は「並列処理」で常時判定イベントを発動しておく方法が有効です。

ということで、アイテム設定&戦闘イベントに判定式を導入。

すべてのザコ敵が隠しアイテムを必ず1個ずつ落とすように「敵キャラ」でも設定しておきます
敵との戦闘後に入手した魔物の遺物を変数に加算してから、入手したアイテム数はリセットします


マップ退出時の処理。最後に「魔物の遺物」の変数をリセットしておくのを忘れずに。
本当はスクリプトで計算したほうが楽なんですが、2000世代としては変数の無駄遣いとわかってても、ひたすらイベントコマンドを連ねる手法が落ち着くのです^^;

※今回は雑魚敵とボス敵、それぞれの討伐数に応じて報酬を計算したかったので「魔物の遺物」「大型魔物の遺物」と2つのアイテム&変数を用意してますが、処理としては基本的に同じようなことを2回やってるだけです。

これで無事導入できた!……と思ったのですが、テストプレーしたところ

ファッ!?

思わぬ伏兵がここに。
戦闘のたびにこのメッセージが出るのは想定外でした。
(っていうか、隠しアイテムにしてても「ドロップアイテム入手メッセージ」は出るんかーい!)

ということで、次なる対策。
他のドロップアイテム入手メッセージも表示できなくなってしまう、という欠点はありますが、コアスクリプトをいじって、戦闘終了後のアイテム入手メッセージ自体が出ないように改造することにします。
具体的にはrpg_managers.jsをいじりました。

rpg_managers.jsの2735行目をコメントアウトします。

これで無事、ドロップアイテム入手メッセージは出なくなりました。
該当マップからの退出時にちゃんと報酬が表示されたのを確認。
これで目的の処理は達成できました。

通貨単位はジャラですが、特に深い意味はないです(強いて言うなら小銭の音)