本節では移動モードから戦闘モードに移行する際のデータアクセスについて述べる。
遭遇する敵がどのような編成になるかを決定するためのオブジェクト型をいくつか述べる。 このような型はイベント戦と通常戦とに分類されており、後者の構造がやや複雑になっている。
アドレス $C8AC66
には次に示す型のオブジェクトが 30 程度配列されている。
この型はイベント戦一つの戦闘セッション自身の属性および敵陣の構成を表現するものだ。
表 5.75 構造体 $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 を値とする属性だ。
具体的には $C8AAE5
オブジェクトの ID を属性値とする。
戦闘背景については別の節で述べる。
戦闘中に BGM として再生されるサウンドの ID を値とする属性だ。 サウンドについては別の節で述べる。
この属性値については詳細が不明だ。 ただ、いずれのデータにおいても 1 でなければならないはずだ。
ブーリアン型属性であり、 値が 1 であれば、この戦闘において自陣側による「にげる」または「ルーラ」の実行が失敗することを意味する。
ブーリアン型属性であり、値が 1 であればこの戦闘がボス戦であることを意味する。 ボス戦では振る舞いが制限される戦闘コマンドが存在する。
モンスター ID を値とする属性であり、敵陣グループ k を構成するモンスターを指定する。
敵陣グループ k を構成する戦闘員数を値とする属性だ。
アドレス $C8ADD1
には次に示す型のオブジェクトが 100 程度配列されている。
この型は通常戦の戦闘セッション自身の属性および敵陣の構成を表現するものだ。
表 5.76 構造体 $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 の確率で奇襲が確定する。
頭数調整とはブーリアン型属性で、 この遭遇オブジェクトにより敵陣が複数グループから編成される場合に参照される属性だ。 詳細は後述する。
#$00
..#$0D
)
モンスター ID を値とする属性だ。 後述の確率変数オブジェクトの頻度属性の説明を参照して欲しい。
なお、k = #$0A
のモンスターは夜専用となる。
また、k = #$0C
..#$0D
の属性値はダミーだ。
この戦闘自体のレベルを表す数を取る属性だ。 戦闘地域を移動中に「せいすい」や「トヘロス」が有効であり、 パーティーの特定のキャラクターのレベルがこの値プラス 5 以上であれば、 遭遇カウンターから差し引く値がゼロになる。
この属性値は、敵陣の戦闘員数の総和の上限を指定するものだ。 敵陣構成処理の仕上げの部分では、この値を超えないように各グループの頭数を調整する。
アドレス $C8B6D8
には次に示す型のオブジェクトが 4 個配列されている。
これは、通常戦オブジェクトのどのモンスターが採用されやすいかを表現する離散型確率分布だ。
表 5.77 構造体 $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 |
各属性の意味を次に記す。
#$00
..#$0D
)
この属性値を 256 で割れば、各確率変数 k に対応する確率となる。
要するに #$00
から #$0D
までの値の出現確率を制御するためのものだ。
値が #$00
..#$04
に抽選されると、敵陣を複数グループで構成する。
その際、採用するモンスターは通常戦オブジェクトのモンスター #$00
..#$04
および #$0A
属性値から抽選する。
値が #$05
に抽選されると、
敵陣を単体グループ 1 と複数体グループ 1 で構成する。
その際、採用するモンスターは前者のグループには通常戦モンスター #$05
属性値を、
後者のグループには通常戦モンスター #$00
..#$04
属性値から抽選してそれぞれ割り当てる。
値が #$06
..#$0A
に抽選されると、
敵陣を単数グループで構成する。
その際、採用するモンスターは対応する通常戦モンスター k 属性値を割り当てる。
値が #$0B
に抽選されると、
敵陣をただ一体で構成し、そのモンスターは通常戦モンスター #$0B
属性値を割り当てる。
値が #$0C
..#$0D
に抽選されると、
通常戦オブジェクトからではなく、5.30.1.4 で述べる敵陣グループ固定戦闘オブジェクトから敵陣を構成する。
上述の確率変数が #$06
..#$0A
のときに、
唯一のグループを構成するモンスターの頭数範囲を指定する属性だ。
この値は配列 $C8B72C
の添字であり、その配列要素が頭数範囲の両端点を表現している。
上述の確率変数が #$00
..#$04
のときに、
敵陣にグループ k + 2 が存在するかどうかを与える確率(を 256 倍した値)だ。