本節ではメダルおじさんについて述べる。
メダルおじさんに関わるデータおよびその構造について述べる。
メダルおじさんの振る舞いについて述べる。
サブルーチン $C3F076
は、メダルおじさんに「はなす」とすぐに始まる処理だ。
以下に要点を挙げる。
最初にメダルおじさんに譲渡済のメダル枚数を参照する。
アドレス $7E3538
の #$03FC
部分がその値だ。
最終景品の枚数を確認する。 5.22.2.5 参照。
パーティーの所持品とふくろからメダルを適宜回収する。 5.22.2.3 参照。
回収したばかりの枚数分と献上済みメダル枚数の和をアドレス $7E3538
の #$03FC
部分に上書きする。
次回報酬を参照する。 5.22.2.2 参照。 もし全ての報酬が果たされていれば、おじさんの台詞だけで本処理を終了する。
ここで初めておじさんの台詞が入る。
献上済み枚数がゼロの場合は初回説明処理のようなものをする。
おじさんが現在の献上済み枚数を教える。
今回回収枚数がゼロの場合は、現在献上済み枚数告知まで処理をスキップする。
今回回収枚数+献上済み枚数が次回報酬に必要な枚数未満ならば、 次回の報酬を予告するところまで処理をスキップする。
今回回収枚数+献上済み枚数が次回報酬に必要な枚数以上ならば、 報酬アイテムをパーティーの所持品に追加する。
受け取りメッセージの表示後、 次の報酬 ID が上限に達していない限り、 報酬と必要枚数を参照して枚数を判定する処理( 5.22.2.4 および 5.22.2.5 参照) を実行する。
さらにパーティー所持品追加処理を実行する。 これを累計枚数が次回報酬枚数未満になるまでループする。 ループ中に全ての報酬が果たされれば、おじさんの台詞で本処理を終了する。
おじさんが現在の献上済み枚数を教える。
おじさんが次回の報酬を予告する。
サブルーチン $C3F199
は、メダルおじさんに譲渡済みのメダル枚数を基に、
次の褒美に対応するメダル必要累積枚数と、報酬のアイテム ID を検索するコードだ。
内容はループで 5.22.2.5 で述べる処理の出力を判定するというものだ。
サブルーチン $C3F1BD
は、持参したメダル枚数を献上枚数が 100 を超えない分だけ回収する処理だ。
以下に要点を挙げる。
パーティー各キャラクターの所持品からちいさなメダルを一枚ずつ回収しながら回収枚数をカウントし続ける。 このとき、カウンターと献上済み枚数の和が最終枚数 (100) 以上となれば、 その時点でこの回収枚数を呼び出し元に返す。 そうでなければ、カウンターの増加とキャラクター所持品の更新を行い反復処理を続行する。
次にふくろ内のちいさなメダル枚数を参照する。 先程と同様に、ちいさなメダルを一枚ずつ回収しながら回収枚数をカウントし続ける。 このとき、カウンターと献上済み枚数の和が最終枚数以上となれば、 その時点でこの回収枚数を呼び出し元に返す。 そうでなければ、カウンターの増加とふくろのちいさなメダル枚数更新を行い反復処理を続行する。
最終的なカウンターの値が、メダルおじさんの手許にあるメダル枚数を表す。
サブルーチン $C3F21E
は、報酬 ID を入力として、
対応するメダルおじさん報酬オブジェクトのアイテム属性値を参照するだけの小さなコードだ。