5.20. 格闘場

5.20.1. 構造に関する構成要素
5.20.1.1. 構造体 $C30DC5: マッチメイク
5.20.2. 振る舞いに関する構成要素
5.20.2.1. サブルーチン $C3EC84: マッチメイク処理
5.20.2.2. サブルーチン $C3EE64: 格闘場処理
5.20.2.3. サブルーチン $C3EFBE: 予想屋処理

本節では格闘場について述べる。

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

格闘場に関する各種データ構造について述べる。

5.20.1.1. 構造体 $C30DC5: マッチメイク

アドレス $C30DC5 には下に示すような構造のオブジェクトが配列されている。 このそれぞれが格闘場での一試合を表現している。

表 5.41 構造体 $C30DC5

オフセット 属性
#$00 #$00FF モンスター 0
#$01 #$00FF オッズ 0
#$02 #$00FF モンスター 1
#$03 #$00FF オッズ 1
#$04 #$00FF モンスター 2
#$05 #$00FF オッズ 2
#$06 #$00FF モンスター 3
#$07 #$00FF オッズ 3

以下、このオブジェクト型の各属性の意味を記す。

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

この試合に出場するモンスターを表すモンスター ID を値に取る属性だ。 モンスターについては 5.5 モンスター で述べる。

オッズ k (k = 0..3)

モンスター k のオッズの基になる表す数を値に取る属性だ。

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

格闘場に関するさまざまな振る舞いについて述べる。

5.20.2.1. サブルーチン $C3EC84: マッチメイク処理

マッチメイクを担当するサブルーチンは $C3EC84 で定義されている。 これは画面が格闘場内に切り替わったときに呼び出される。 以下、処理の要点を列挙する。

  • マッチメイクオブジェクトを主人公のレベルに依存する乱数で決定する。 レベルと候補 ID との対応は次のようになっている。

    表 5.42 配列 $C3ED78

    レベル 試合 ID
    1..10 #$00..#$0A
    11..15 #$00..#$13
    16..21 #$00..#$18
    22..29 #$00..#$21
    30..99 #$00..#$26

  • 後述する予想屋の予想内容をこの時点で決めておく。出場選手数と乱数によって決まる。

  • マッチメイクオブジェクトのオッズ属性値により、 次の表で示す中間生成値を求め、それと 10 との商 Q や余り R を用いて最終的なオッズの整数部と小数部をそれぞれ決定する。

    表 5.43 格闘場オッズの計算方法

    属性値 中間生成値
    1..5 randint(0, 6) - 3
    6..10 randint(0, 14) - 7
    11..30 randint(0, 40) - 20
    31..100 randint(0, 100) - 50
    101..255 randint(0, 200) - 100

    例えば中間生成値が非負ならば、整数部は属性値と Q との和、小数部は R として決定する。 中間生成値が負であったり、剰余が 0 であったり、属性値と商との和がゼロ以下になるような場合についても適宜対処している。

5.20.2.2. サブルーチン $C3EE64: 格闘場処理

サブルーチン $C3EE64 は格闘場チケット屋の窓口処理を行う。 以下、処理の要点を列挙する。

  • 冒頭で賭け金を計算する。主人公のレベルと 10 の積とする。

  • 出場選手ウィンドウ表示時にキャンセルすると、「なんだ やめるのか」の後に支払い済みの賭け金が払い戻されることが確認できるようになっている。

  • 賭けが成立すると、$7E2011 の格闘場モードフラグを意味するビットをセットする。

5.20.2.3. サブルーチン $C3EFBE: 予想屋処理

サブルーチン $C3EFBE は格闘場内にある予想屋の台詞処理だ。 以下、処理の要点を列挙する。

  • 予想代は一律 5 ゴールドだ。

  • 予想を聞かないと答えたときと、予想を聞くが所持金が 5 ゴールド未満のときの処理は同じだ。

  • 予想内容は上述のマッチメイク処理で決定済みである。