倒した敵の報酬をまとめてゲットする方法まとめ(ツクールMV)
セルフメモです。
発端となった独り言
「今は雑魚モンスター倒すと即お金が入るんだけど
世界観的には『モンスターの討伐依頼を出した近隣住民か傭兵ギルドが、
討伐数に応じて報酬を支払ってくれてる』設定なので、
面倒にならない程度にシステムに落とし込みたい。
雑魚マップ出る時、一括で払う方式にすべきか?」
![](https://assets.st-note.com/img/1659985604777-c4nMb9NL7w.jpg?width=1200)
と、いうことで、最初に考えた対策法
・全モンスターが「魔物の遺物」というアイテムを100%落とす
(隠しアイテムにする)
・マップを出る際に報酬を計算し、「魔物の討伐に対して傭兵ギルドから(報酬)Gが支払われた!」と表示し、所持金up &魔物の遺物全没収
ところが、この方法だと以下の問題が……。
・マップ内で100体以上の魔物を倒した場合、その数は加算されない(アイテムの上限が99だから)
解決方法はいくつかあるのですが
・アイテムじゃなくて変数で管理するとなると、戦闘終了時に動作するプラグインが必要そう
・できればプラグイン導入無しで解決したい(すでに多数導入済みで競合が怖い)
このつぶやきに対して、様々なツクラーさんからアイデアをいただきました(多謝!)
そのうち「1戦闘ごとに『魔物の遺物』を変数に落とし込む」方法を採用させていただくことに。
※自分はシンボルエンカウント使用してたので、雑魚敵との戦闘イベント後に判定イベントを挿入しましたが、ランダムエンカウントの場合は「並列処理」で常時判定イベントを発動しておく方法が有効です。
ということで、アイテム設定&戦闘イベントに判定式を導入。
![](https://assets.st-note.com/img/1659985863538-f12PhjPVXn.jpg?width=1200)
![](https://assets.st-note.com/img/1659985902382-U4XfoFaT63.jpg?width=1200)
![](https://assets.st-note.com/img/1659985780785-2SksUDgboC.jpg?width=1200)
本当はスクリプトで計算したほうが楽なんですが、2000世代としては変数の無駄遣いとわかってても、ひたすらイベントコマンドを連ねる手法が落ち着くのです^^;
※今回は雑魚敵とボス敵、それぞれの討伐数に応じて報酬を計算したかったので「魔物の遺物」「大型魔物の遺物」と2つのアイテム&変数を用意してますが、処理としては基本的に同じようなことを2回やってるだけです。
これで無事導入できた!……と思ったのですが、テストプレーしたところ
![](https://assets.st-note.com/img/1659986138475-lAe7M5mDT5.jpg?width=1200)
思わぬ伏兵がここに。
戦闘のたびにこのメッセージが出るのは想定外でした。
(っていうか、隠しアイテムにしてても「ドロップアイテム入手メッセージ」は出るんかーい!)
ということで、次なる対策。
他のドロップアイテム入手メッセージも表示できなくなってしまう、という欠点はありますが、コアスクリプトをいじって、戦闘終了後のアイテム入手メッセージ自体が出ないように改造することにします。
具体的にはrpg_managers.jsをいじりました。
![](https://assets.st-note.com/img/1659986356462-PA9PeQFTiN.png)
これで無事、ドロップアイテム入手メッセージは出なくなりました。
該当マップからの退出時にちゃんと報酬が表示されたのを確認。
これで目的の処理は達成できました。
![](https://assets.st-note.com/img/1659986515525-35ASFnHqnL.jpg?width=1200)