Elona改造講座 第3回補講(体液を飲めるようにする)

Elona改造講座、第3回の補講です。
MMAhでアイテムID:338 体液を飲めるようにしてみましょう。
飲んだ場合の効果は汚水やゲロゲロと同じものとします。
※ooでは悪食ありの場合のみ飲める仕様でしたが、ここでは常時飲める仕様とします。

①飲めるアイテムに体液を追加

MMAhのstart.hspを「invctrl == 8」で検索してください。次のような部分が見つかるはずです。何箇所かヒットしますが、一番最初にヒットしたところです(前回も編集した「invctrl == 5」のすぐ下です)。

if ( invctrl == 8 ) {
	if ( refitem(inv(3, cnt), 4, cnt) == 0 ) {
		continue
	}
}
飲めるアイテムの選択

ここのifは「飲めないアイテムの場合に真となる」条件です。アイテムID:338 体液を飲めるようにするには「338でない場合」をANDで繋ぎます。

if ( invctrl == 8 ) {
	if ( (refitem(inv(3, cnt), 4, cnt) == 0) & (inv(3, cnt) != 338) ) {
		continue
	}
}
体液が飲めるようになりました!

②飲んだ場合の効果を追加

体液を飲んだ場合に汚水やゲロゲロと同じ効果が発揮されるようにします。ほとんどのヴァリアントはアイテムデータをstart.hspで定義しています(dbid == 338で検索してみましょう)。
……が、MMAhではもっと分かりやすい構成になっており、itemdb.csvという別ファイルで定義されています。csvなのでテキストエディタでもExcelでも開けますね。
試しにExcelで開いてみましょう。アイテムのID・名前・フラグ・重量・分類・レア度・品質などなど、様々なデータが書かれているのが分かることかと思います。

itemdb.csvはアイテムのデータベースです

アイテムID:338 体液の、BK列「effecttype.」とBL列「effectid.」に注目。
これをアイテムID:26 汚水と同じ値に変更します。effecttype.を15、effectid.を1130にしてください。

体液を飲んだ時の効果を設定しました!

③コンパイルと実行

コンパイルして実行してみましょう。例によって「錬成素材 (NPC名)」で願って体液を入手します。飲むアイテムを選択すると、しっかり体液が表示されていますね。

本当に飲んでしまうのにゃ?

飲んでみましょう。MMAhの仕様により「(NPC名)の味がする」と表示されましたね(本来は樽エージングで作るジュースで使われる処理)。

無名の体液の場合は「*ごくっ* まずい!」になります

補足

Q.汚水やゲロゲロや体液を飲んだ場合の処理ってどこ?
A.「_switch_val == 1130」や「*ごくっ*」で検索してみましょう。

Q.ワイの遊んでるヴァリアント、「itemdb.csv」無いみたい……
A.start.hsp本体でアイテムデータを定義しているタイプのヴァリアントなのでしょう。start.hspを「efid = 1130」で検索してみてください。
(汚水とゲロゲロがヒットするはずなので、それらを参考にして体液にも同様の処理を追加しましょう。dbmode == 15の中にefid = 1130を追加すればいけるかな?)

Q.体液ってもしかしておし……
A.ミンチになった後に残ることや英語名から分かるように血液です!

いいなと思ったら応援しよう!