【きせきのつるぎが敵として出現するバグ】

Last-modified: 2024-03-11 (月) 01:28:06

DQ5(SFC版)

【きせきのつるぎ】が敵に呼ばれてモンスターとして出現するバグ。

出現方法

前提条件として、SFC版DQ5においてはモンスターの各種データはID順で格納された名前や各種パラメータ、行動パターンのデータを戦闘中にIDを指定して呼び出す形になっている。
そして、実際のモンスターデータは【没モンスター】【ダミーデータ】を含めて236種類格納されている。
また容量節約の都合上、モンスターデータのすぐ後ろのアドレスは空欄ではなく、別のデータが格納されている。
例えば名前データだと、人間の職業・肩書き名、【性別】、モンスター名、そしてアイテム名の順に隙間なく格納されている。
そこで、モンスターデータを呼び出すときに、0~255(1バイト分)の番号を指定できてしまうため、236~255の番号を指定するとモンスター名として下表に示すアイテムIDが0~19のアイテム名が格納されたアドレスのデータを呼び出してしまうことになる。

モンスターIDアイテムID名前
235-ミルドラース
236000ひのきのぼう
237001たけのやり
238002こんぼう
239003かしのつえ
240004くだものナイフ
241005ブロンズナイフ
242006どうのつるぎ
243007くさりがま
244008てつのつえ
245009いしのオノ
246010とがったホネ
247011どくがのナイフ
248012はがねのつるぎ
249013はじゃのつるぎ
250014ドラゴンキラー
251015ゆうわくのけん
252016まどろみのけん
253017はやぶさのけん
254018もろばのつるぎ
255019きせきのつるぎ

同様に、パラメータや行動パターンのデータも関係のない別の数値を参照してしまう。
 
通常の処理では236以降の番号が参照されることはないが、偶然の一致によって「きせきのつるぎ」だけがモンスター名として参照される条件がある。
きせきのつるぎを出す方法は以下の2種類ある。その原因も下で述べる。
アイテムIDが0~18までの19種類は【チート】を使わない限り呼び出されることはない。

1,【ドロヌーバ】【大声で仲間を呼ぶ】

まず、ドロヌーバ単一のグループでないことが第一条件。
「ドロヌーバ - 2ひき、ドロヌーバ - 1ひき」 のように、
他のモンスターと組んでいるか、グループが分かれていなくてはならない。
 
次に、ドロヌーバが仲間を呼んだ後に仲間を呼んだドロヌーバがいるグループを殲滅し、かつ戦闘を終わらせないようにする。
本来呼ばれたドロヌーバは呼んだドロヌーバと同一のグループになるのだが、この場合呼んだドロヌーバのグループは殲滅されて既に無い。
また、殲滅されたグループの種類は0xFF(255番目)に設定されるのだが、これが名前データにおける「きせきのつるぎ」のアドレスとたまたま一致してしまっている。
そのため、呼ばれて出てくるモンスターはドロヌーバではなくきせきのつるぎになってしまうのだ。
姿はドロヌーバのままだが、上述の通り行動パターンも関係のない数値を参照するので、行動が滅茶苦茶になっている。
ドロヌーバの素早さは20で出現時期としては非常に低いため、ドロヌーバの行動⇒味方キャラの行動 の順になることはほぼないが、【ブラウニー】【くさったしたい】など一部の極端に鈍足なキャラを使っていると偶然このバグが起きる可能性が高くなるため、大変危険。
 
ちなみに、【トンネラー】も「大声で仲間を呼ぶ」を使うが、呼び出すモンスターが別種の【どぐうせんし】であるため、呼ばれたどぐうせんしがトンネラーと同一グループにはならず、このバグは起きない。

2,同種の仲間を呼ぶ敵グループを【はぐれ毒針ハメ】の要領で殲滅

同種の仲間を呼ぶモンスターが、グループに2匹以上いることが条件。
2匹ちょうどにするのが一番やりやすいだろう。
ドロヌーバの場合とは違い単一のグループでも出来る。
 
道具欄からの【どくばり】【デーモンスピア】あるいは【せいすい】による攻撃で同一モンスターを複数回撃破して、画面上に敵が残っているが、敵表示が[ -ひき]という状態にする。
そして、残されたモンスターが仲間を呼ぶと、きせきのつるぎが出現する。
理屈としてはドロヌーバのときと同じ。
呼ばれたモンスターは呼んだモンスターと同一グループになるのだが、呼んだモンスターのグループは殲滅されて、種類が0xFFに設定されているためきせきのつるぎが出現するのだ。
見た目は呼んだモンスターと同じになる。
上記のドロヌーバの場合とは違い、意図して狙わない限りはこのバグを起こせないだろう。
これを【合体スライム】相手に行うと、大量のきせきのつるぎが出現して大変なことになる。
しかも、合体スライムと合わせて8匹になると合体する。

きせきのつるぎのデータ

HP:1000程度
MP:40程度
自然回復100
特技:メラ、ベギラゴン、ドラゴラム、リレミト(無駄行動)、ラナルータ(無駄行動)、ボーっとする(無駄行動)
特殊技能:2回行動
経験値:3892
ゴールド:476

解説

通常攻撃は行わず、行動は奇々怪々。
【リレミト】【ラナルータ】は戦闘中に使った場合の効果が定義されていないため何も起こらない(実質【無駄行動】)。
【ドラゴラム】はこちらのメンバーの誰かを強制的に竜に変身させてそのターンだけ味方に炎を吐かせるというもの。
竜にされた味方は次のターンからは通常通り敵に炎を吐くようになる。
これもドラゴラムを敵が使った時の効果が設定されていないためのカオスな動作の一つである。
なお、きせきのつるぎはギラや炎に完全耐性を持つため、竜になったキャラクターは役立たずになる。
【メラ】はともかく【ベギラゴン】を使う上に【複数回行動】するため、上記のドロヌーバのバグで早い時期に出会うと軽く全滅できる。
ただしMPは低く、すぐに枯渇するうえMPを使う行動以外は【無駄行動】しか取らないためベギラゴンさえ気をつければ怖くはない。ギラ、炎ブレスに完全耐性をもつ仲間モンスターならメラ以外でダメージを受けないし、防御等でMP切れまで待てば完全にサンドバッグにできる。
ただ、自動回復100を持つため、生半可なレベルと武器では永遠に倒せない。
報酬は裏ダンジョンの敵よりも多いが色々な意味で稼ぎには適していないだろう...。

余談

ちなみに、本作においてモンスターデータが236種類になっているのはただの偶然でも、容量節約のためでもない。
上述の通り、モンスターの名前データの手前には性別(おとこ、おんな、???の3種)を挟んで人間キャラの職業名のデータが並んでいる。
職業名の枠は17個あり、性別とモンスター名と合わせてちょうど256個(1バイト)になる。
本作には【仲間モンスター】システムがあり、仲間モンスターの職業名はそのままモンスター名のデータを参照する形になっている。
つまり、各キャラクターの職業名を参照するときに、人間の職業名に加えて全モンスターの名前データのIDが1バイト以内に収まるようにモンスターデータを236個に制限する必要があったのである。
出現モンスターを参照するときに237番目以降のアドレスが指定されるのはあくまでもイレギュラーな事態なのだ。
 
…というわけなのだが、実は各キャラクターデータには人間の仲間キャラと仲間モンスター(および命令できないNPCの仲間)を区別するフラグがあり、職業名をモンスターリストから参照するキャラに関してはモンスターIDが00のスライムを起点としてアドレスを参照する処理が行われている。
つまり、仮にモンスターリストが256種類あったとしてもちゃんと対応できるのである。
開発途中で方針が変わったのかもしれない。
 
なお、このフラグ管理の関係で、【パパス】と青年時代前半の【フローラ】の職業名は人間キャラの職業名のリストではなく、モンスター名のリストの中にある【ちちおや】【○○○○のつま】をそれぞれ参照している。