マイトアンドマジック (FC) 攻略/解析 - お宝

戦闘勝利時のお宝追加処理

戦闘に勝利するとお宝の追加処理が行われる (注: 「にげる」や魔ML4「離脱」で逃げた場合はお宝の内容が全てクリアされる)。

追加されるお宝の内容は倒した敵たちに依存する。なお、本作は逃げた敵の管理がバグっているため、逃げた敵がいる場合は倒した敵リストが必ずしも正しくないことに注意。

以下、GOLD, GEM, アイテムの追加処理およびお宝ランクの決定処理について個別に述べる。

GOLDの追加

モンスターは種類ごとに「GOLDドロップ値」という 0..=3 の値を持ち、その値によりGOLDのドロップ量が決まる:

GOLD量
00
1rand(1..=15)
2rand(1..=100)
3256 * rand(1..=4)

倒した全ての敵について上記のドロップ量がお宝内のGOLDに加算される。

GEMの追加

モンスターは種類ごとにGEMを落とすかどうかが決まっている。

倒した全ての敵について、その敵がGEMを落とすならば rand(1..=6) がお宝内のGEMに加算される。

アイテムの追加

敵からのドロップアイテムには 0..=4 のランクがあり、モンスターごとにどのランクのアイテムを落とすかのマスクが設定されている。 このマスクは 5bit 値で、下位 bit から順にランク 0, 1, 2, 3, 4 のアイテムを落とすことを示す。

戦闘勝利時は、まず今回のお宝追加処理におけるアイテムランクマスクを決定する。これは全ての敵のドロップアイテムマスクを 5bit 値と見たときの最大値となる。

次に、対象のアイテムランクたちについて降順でドロップ判定を行う。ランク i のアイテムは 10 * (5 - i) (%) の確率でドロップが発生する。 ドロップが発生した場合、そのランク内でアイテム抽選を行い、結果のアイテムをお宝に追加する。ただし既にお宝内のアイテムが満杯の場合は何もしない。

ドロップが発生したアイテムランクに対するアイテム抽選

まずアイテムカテゴリをランダムに選ぶ。アイテムカテゴリおよびアイテムID範囲の表を以下に示す:

カテゴリID範囲ID個数備考
片手近接武器1..=6060
射撃武器61..=8525
両手近接武器86..=12035
121..=15535
156..=17025
その他171..=23060イベントアイテムを含まない

そして、(カテゴリ内最小アイテムID) + (アイテムランク)*(カテゴリ内ID個数)/5 + rand(0..=(カテゴリ内ID個数)/5-1) を実際にドロップするアイテムIDとする。これはカテゴリ内ID範囲を 5 分割し、ランクに応じた範囲から抽選していることを意味する。たとえば、両手近接武器のIDは 86..=92, 93..=99, 100..=106, 107..=113, 114..=120 に 5 分割され、ランク 2 に対応するID範囲は 100.=106 となる (どのカテゴリもID個数は 5 の倍数であることに注意)。

ただし、射撃武器だけは上式の (カテゴリ内最小アイテムID) が誤って 5 と設定されている(本来は 61 が正しい)。よって、射撃武器が選ばれた場合の実際のID範囲は 5..=29となる。つまり、戦闘勝利時に射撃武器がドロップすることは決してない。

お宝ランクの決定

まずお宝内のアイテムによる判定を試みる。これは「ドロップが発生したかどうか」のみに依存する(お宝内のアイテムが満杯で追加できなかった場合も発生した扱いとする)。判定はアイテムランクの降順で行う。

お宝内にアイテムがない場合、お宝内にGEMがあればお宝ランクを rand(2..=5) とする。

お宝内にアイテムもGEMもない場合、GOLDによりお宝ランクを決定する: