モンスタータイプ、モンスタータイプ別ビットマスクについて。また、これらに 関連するバグについても触れる。
モンスタータイプは以下の16種類(ただし値4, 14, 15に該当するモンスターは存 在しない):
値 | 名称 |
---|---|
0 | 戦士 |
1 | 魔術師 |
2 | 僧侶 |
3 | 盗賊 |
4 | 小人・忍者(存在しない) |
5 | 巨人 |
6 | 神話 |
7 | 竜 |
8 | 動物 |
9 | 獣人 |
10 | 不死 |
11 | 悪魔 |
12 | 昆虫 |
13 | 魔法生物 |
14 | (存在しない) |
15 | (存在しない) |
どのモンスタータイプに対して打撃防御や倍打が有効かを示すために2Byteのビッ トマスクが使われる。形式は「本来は」以下の通り:
bit | タイプ |
---|---|
bit15 | (タイプ15に対応。該当モンスターなし) |
bit14 | (タイプ14に対応。該当モンスターなし) |
bit13 | 魔法生物 |
bit12 | 昆虫 |
bit11 | 悪魔 |
bit10 | 不死 |
bit9 | 獣人 |
bit8 | 動物 |
bit7 | 竜 |
bit6 | 神話 |
bit5 | 巨人 |
bit4 | 小人・忍者(該当モンスターなし) |
bit3 | 盗賊 |
bit2 | 僧侶 |
bit1 | 魔術師 |
bit0 | 戦士 |
なのだが、後述のバグのため、1Byte目と2Byte目が入れ替わり、以下のようにな る:
bit | タイプ |
---|---|
bit15 | 竜 |
bit14 | 神話 |
bit13 | 巨人 |
bit12 | 小人・忍者(該当モンスターなし) |
bit11 | 盗賊 |
bit10 | 僧侶 |
bit9 | 魔術師 |
bit8 | 戦士 |
bit7 | (タイプ15に対応。該当モンスターなし) |
bit6 | (タイプ14に対応。該当モンスターなし) |
bit5 | 魔法生物 |
bit4 | 昆虫 |
bit3 | 悪魔 |
bit2 | 不死 |
bit1 | 獣人 |
bit0 | 動物 |
タイプ別倍打判定のコードにはバグがあり、タイプ別倍打とは全く別のアドレス の値を参照してしまう。また、モンスタータイプ別ビットマスクを処理するためのデー タも間違っており、1Byte目と2Byte目が入れ替わって処理されてしまう。推測だが、 タイプ別倍打のバグに対して誤った修正を加えたために二重のバグを生む結果になっ たのではないかと思われる。
ビットマスクのByteが入れ替わってしまうのは、データ
$DC97-$DCA6
と$DCA7-$DCB6
が逆になっているのが原因
なので、これらのデータを入れ替えれば解決するはず。タイプ別倍打のバグについて
は敵への打撃攻撃の項目を参照。