5.30. 敵との遭遇

5.30.1. 構造に関する構成要素
5.30.1.1. 構造体 $C8AC66: イベント戦
5.30.1.2. 構造体 $C8ADD1: 通常戦
5.30.1.3. 構造体 $C8B6D8: 通常戦確率分布
5.30.1.4. 構造体 $C8B736: 通常戦レア
5.30.2. 振る舞いに関する構成要素

本節では移動モードから戦闘モードに移行する際のデータアクセスについて述べる。

5.30.1. 構造に関する構成要素

遭遇する敵がどのような編成になるかを決定するためのオブジェクト型をいくつか述べる。 このような型はイベント戦と通常戦とに分類されており、後者の構造がやや複雑になっている。

5.30.1.1. 構造体 $C8AC66: イベント戦

アドレス $C8AC66 には次に示す型のオブジェクトが 30 程度配列されている。 この型はイベント戦一つの戦闘セッション自身の属性および敵陣の構成を表現するものだ。

表 5.74 構造体 $C8AC66

オフセット 属性
#$00 #$FFFF 名前
#$02 #$007F 背景セット
#$02 #$FF80 サウンド
#$04 #$0001 (未使用)
#$04 #$0002 画面更新
#$04 #$0004 (不明)
#$04 #$0008 逃走禁止/ルーラ禁止
#$04 #$0010 (不明)
#$04 #$0020 ボス戦
#$04 #$3FC0 モンスター 0
#$05 #$01C0 モンスター頭数 0
#$06 #$01FE モンスター 1
#$07 #$000E モンスター頭数 1
#$07 #$0FF0 モンスター 2
#$08 #$0070 モンスター頭数 2
#$08 #$7F80 モンスター 3
#$09 #$0380 モンスター頭数 3

各属性の意味を次に記す。

名前

名前とは文字列 ID を値とする属性であり、 罠である「しらべる」オブジェクトがイベント戦を引き起こす際に、 メッセージウィンドウに記される文言の一部として表示される性質がある。 そうでない場合の名前は表に出てくることはない。

背景セット

戦闘モードの背景を指示するオブジェクトの ID を値とする属性だ。 戦闘背景については別の節で述べる。

サウンド

戦闘中に BGM として再生されるサウンドの ID を値とする属性だ。 サウンドについては別の節で述べる。

画面更新

この属性値については詳細が不明だ。 ただ、いずれのデータにおいても 1 でなければならないはずだ。

逃走禁止/ルーラ禁止

ブーリアン型属性であり、 値が 1 であれば、この戦闘において自陣側による「にげる」または「ルーラ」の実行が失敗することを意味する。

ボス戦

ブーリアン型属性であり、値が 1 であればこの戦闘がボス戦であることを意味する。 ボス戦では振る舞いが制限される戦闘コマンドが存在する。

モンスター k (k = 0..3)

モンスター ID を値とする属性であり、敵陣グループ k を構成するモンスターを指定する。

モンスター頭数 k (k = 0..3)

敵陣グループ k を構成する戦闘員数を値とする属性だ。

5.30.1.2. 構造体 $C8ADD1: 通常戦

アドレス $C8ADD1 には次に示す型のオブジェクトが 100 程度配列されている。 この型は通常戦の戦闘セッション自身の属性および敵陣の構成を表現するものだ。

表 5.75 構造体 $C8ADD1

オフセット 属性
#$00 #$00FF 遭遇係数
#$02 #$0007 確率分布
#$02 #$0038 先制発生
#$02 #$0040 頭数調整 0
#$02 #$0080 頭数調整 1
#$03 #$0001 頭数調整 2
#$03 #$0002 頭数調整 3
#$03 #$0004 頭数調整 4
#$03 #$0008 (未使用)
#$04 #$00FF モンスター #$00
#$05 #$00FF モンスター #$01
#$06 #$00FF モンスター #$02
#$07 #$00FF モンスター #$03
#$08 #$00FF モンスター #$04
#$09 #$00FF モンスター #$05
#$0A #$00FF モンスター #$06
#$0B #$00FF モンスター #$07
#$0C #$00FF モンスター #$08
#$0D #$00FF モンスター #$09
#$0E #$00FF モンスター #$0A
#$0F #$00FF モンスター #$0B
#$10 #$00FF モンスター #$0C
#$11 #$00FF モンスター #$0D
#$12 #$00FF レベル
#$13 #$00FF 頭数上限

各属性の意味を次に記す。

遭遇係数

遭遇係数とは、配列 $C6902F の添字を値とする属性だ。 この値から決まる係数と、パーティーの現在位置に依存する数の積によって、 遭遇カウンター $7EF796 から差し引く値(の初期値)が定まる。

敵遭遇決定のアルゴリズムについては後述する。

確率分布

確率分布とは、このオブジェクトが参照する確率分布オブジェクトの ID を値とする属性だ。

先制発生

先制発生とは、ある配列ペアの添字を値とする属性だ。 それら配列の要素は、この戦闘開始時点で自陣か敵陣のどちらか一方が先制を取れるかどうかを抽選するのに用いられる。

自陣が先制を取れるかどうかの抽選は配列 $C68175 に依存する。 この配列要素を x とすると、x / 256 の確率で先制が確定する。

敵陣が奇襲するかどうかの抽選は、自陣が先制を取らない条件の下で配列 $C68185 に依存する。 この配列要素を y とすると、y / 256 の確率で奇襲が確定する。

頭数調整 k (k = 0..4)

頭数調整とはブーリアン型属性で、 この遭遇オブジェクトにより敵陣が複数グループから編成される場合に参照される属性だ。 詳細は後述する。

モンスター k (k = #$00..#$0D)

モンスター ID を値とする属性だ。 後述の確率変数オブジェクトの頻度属性の説明を参照して欲しい。

なお、k = #$0A のモンスターは夜専用となる。 また、k = #$0C..#$0D の属性値はダミーだ。

レベル

この戦闘自体のレベルを表す数を取る属性だ。 戦闘地域を移動中に「せいすい」や「トヘロス」が有効であり、 パーティーの特定のキャラクターのレベルがこの値プラス 5 以上であれば、 遭遇カウンターから差し引く値がゼロになる。

頭数上限

この属性値は、敵陣の戦闘員数の総和の上限を指定するものだ。 敵陣構成処理の仕上げの部分では、この値を超えないように各グループの頭数を調整する。

5.30.1.3. 構造体 $C8B6D8: 通常戦確率分布

アドレス $C8B6D8 には次に示す型のオブジェクトが 4 個配列されている。 これは、通常戦オブジェクトのどのモンスターが採用されやすいかを表現する離散型確率分布だ。

表 5.76 構造体 $C8B6D8

オフセット 属性
#$00 #$00FF 頻度 #$00
#$01 #$00FF 頻度 #$01
#$02 #$00FF 頻度 #$02
#$03 #$00FF 頻度 #$03
#$04 #$00FF 頻度 #$04
#$05 #$00FF 頻度 #$05
#$06 #$00FF 頻度 #$06
#$07 #$00FF 頻度 #$07
#$08 #$00FF 頻度 #$08
#$09 #$00FF 頻度 #$09
#$0A #$00FF 頻度 #$0A
#$0B #$00FF 頻度 #$0B
#$0C #$00FF 頻度 #$0C
#$0D #$00FF 頻度 #$0D
#$0E #$00FF 単数グループ用頭数決定 0
#$0F #$00FF 単数グループ用頭数決定 1
#$10 #$00FF 単数グループ用頭数決定 2
#$11 #$00FF 単数グループ用頭数決定 3
#$12 #$00FF 単数グループ用頭数決定 4
#$13 #$00FF 複数グループ用追加グループ確率 0
#$14 #$00FF 複数グループ用追加グループ確率 1

各属性の意味を次に記す。

頻度 k (k = #$00..#$0D)

この属性値を 256 で割れば、各確率変数 k に対応する確率となる。 要するに #$00 から #$0D までの値の出現確率を制御するためのものだ。

値が #$00..#$04 に抽選されると、敵陣を複数グループで構成する。 その際、採用するモンスターは通常戦オブジェクトのモンスター #$00..#$04 および #$0A 属性値から抽選する。

値が #$05 に抽選されると、 敵陣を単体グループ 1 と複数体グループ 1 で構成する。 その際、採用するモンスターは前者のグループには通常戦モンスター #$05 属性値を、 後者のグループには通常戦モンスター #$00..#$04 属性値から抽選してそれぞれ割り当てる。

値が #$06..#$0A に抽選されると、 敵陣を単数グループで構成する。 その際、採用するモンスターは対応する通常戦モンスター k 属性値を割り当てる。

値が #$0B に抽選されると、 敵陣をただ一体で構成し、そのモンスターは通常戦モンスター #$0B 属性値を割り当てる。

値が #$0C..#$0D に抽選されると、 通常戦オブジェクトからではなく、後述するレア戦闘オブジェクトから敵陣を構成する。

単数グループ用頭数決定 k (k = 0..4)

上述の確率変数が #$06..#$0A のときに、 唯一のグループを構成するモンスターの頭数範囲を指定する属性だ。 この値は配列 $C8B72C の添字であり、その配列要素が頭数範囲の両端点を表現している。

表 5.77 配列 $C8B72C

ID 頭数
#$00 0
#$01 8..8
#$02 4..5
#$03 2..3
#$04 3..7

複数グループ用追加グループ確率 k (k = 0..1)

上述の確率変数が #$00..#$04 のときに、 敵陣にグループ k + 2 が存在するかどうかを与える確率(を 256 倍した値)だ。

5.30.1.4. 構造体 $C8B736: 通常戦レア

アドレス $C8B736 には次の表に示される構造体オブジェクトが配列されている。 これらは通常戦のうち、敵陣の構成を固定化して定義されているものを表現している。

表 5.78 構造体 $C8B736

オフセット 属性
#$00 #$000F 頭数範囲 0
#$00 #$00F0 頭数範囲 1
#$01 #$000F 頭数範囲 2
#$02 #$00FF モンスター 0
#$03 #$00FF モンスター 1
#$04 #$00FF モンスター 2

各属性の意味を次に記す。

頭数範囲 k (k = 0..2)

敵陣グループ k を構成するモンスターの頭数範囲を指定する属性だ。 この値は配列 $C8B7E5 の添字であり、その配列要素が頭数範囲の両端点を表現している。

表 5.79 配列 $C8B7E5

ID 範囲
#$00 0
#$01 8
#$02 4..7
#$03 1..3
#$04 1..8
#$05 1
#$06 2
#$07 3
#$08 0..2
#$09 5
#$0A 4
#$0B 6

モンスター k (k = 0..2)

敵陣グループ k を構成するモンスターのモンスター ID を値とする属性だ。

5.30.2. 振る舞いに関する構成要素

戦闘地域移動中の戦闘発生および敵陣構成のそれぞれの仕組みについて述べる。