5.19. 転職

5.19.1. 構造に関する構成要素
5.19.2. 振る舞いに関する構成要素
5.19.2.1. サブルーチン $C3E477: ダーマの神官との対話的処理
5.19.2.2. サブルーチン $C3E5F8: 性格によっては神官が一言加える
5.19.2.3. サブルーチン $C3E79C: 「さとりのしょ」を消費する
5.19.2.4. サブルーチン $C3E7CC: 装備を交換する
5.19.2.5. サブルーチン $C3E7ED: 最適な装備品を調べる

本節では転職について述べる。

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

転職において関係があるデータ構造について述べる。

まずは職業構造体だ。この構造体については 5.25.1.1 構造体 $C4179E: 職業 で述べる。 一部の属性がキャラクターのレベルを初期化する際に習得する呪文を参照するのに用いられる。

そして性格構造体だ。これについては 5.26.1.1 構造体 $C424BC: 性格 で述べる。 ダーマの神官の台詞を決定するためだけに存在する属性が参照される。

アイテム構造体も転職直後の装備品を決定する処理で間接的に参照される。 アイテムについては 5.24.1.1 構造体 $C40043: アイテム で述べる。

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

ダーマの神殿にいる神官が行う転職手続きを述べる。 転職したいキャラクターの性格によって神官が感想を漏らす処理と、 転職直後のキャラクターの装備を変更する処理がオリジナル版にはなかった機能だ。

5.19.2.1. サブルーチン $C3E477: ダーマの神官との対話的処理

サブルーチン $C3E477 がダーマの神殿の中央にいる神官に「はなす」と呼び出される処理である。 コードは大変長いもので、中身は台詞表示サブルーチン呼び出しと「はい・いいえ」メニューウィンドウの表示サブルーチンの呼び出しがほとんどを占めている。 以下、処理の要点を列挙する。

  • 転職希望者は生きている必要がある。

  • 転職希望者の現在の職業が勇者ではない必要がある。

  • 転職希望者のレベルが 20 以上である必要がある。

  • 転職希望者の現在の職業と異なる職業を選択する必要がある。

  • 転職者は経験値がゼロにリセットされ、仲間キャラクター属性値が半分になる。

  • 転職者は装備品が自動的に更新される(後述)。

  • 転職者は結果的に呪い状態ではなくなる。

この処理を表面的に見るだけでは「けんじゃ」が転職希望リストに表示される条件がわからない。 また、転職後のキャラクター属性値の計算は別バンクのサブルーチンが担当しているので、興味があればそこを調べればよい。

5.19.2.2. サブルーチン $C3E5F8: 性格によっては神官が一言加える

サブルーチン $C3E5F8 は転職するキャラクターの性格によっては、 神官が余計な一言をはなす処理である。 以下、処理の要点を列挙する。

ダーマの神官評価属性値を性格オブジェクトから参照する。 この属性値については 5.26.1.1 構造体 $C424BC: 性格 で述べる。 この値はジャンプテーブル $C3E6CF の行番号であり、 各ジャンプ先のコードはメッセージ表示を何回か実行する。 例えばダーマの神官評価属性値が 9 のときの処理は次のようなものだ。

C3/E784:    AD77BE      LDA $BE77           ; 文字列 ID
C3/E787:    48          PHA
C3/E788:    8C77BE      STY $BE77           ; 文字列 ID
C3/E78B:    222EA9C1    JSR $C1A92E         ; text #$0B2F: [D6][B2]の [C0]が[CE]
C3/E78F:    2F0B
C3/E791:    68          PLA
C3/E792:    8D77BE      STA $BE77           ; 文字列 ID
C3/E795:    222EA9C1    JSR $C1A92E         ; text #$0B30: [CD][D6][AD][B2]に なりたいとは[AD]ずいぶん 成長したものよのう。[CE][AF]
C3/E799:    300B
C3/E79B:    60          RTS

5.19.2.3. サブルーチン $C3E79C: 「さとりのしょ」を消費する

サブルーチン $C3E79C は必要に応じて、 転職するキャラクターの所持品から「さとりのしょ」を一つだけ消費する。 以下、処理の要点を列挙する。

  • 希望職業が「けんじゃ」でなければ戻る。

  • 転職希望者の現在の職業が「あそびにん」ならば戻る。

  • 転職希望者の所持品に「さとりのしょ」がなければ戻る。

  • 上のすべての判定をパスしたときのみ転職希望者の所持品から「さとりのしょ」を削除する。

5.19.2.4. サブルーチン $C3E7CC: 装備を交換する

サブルーチン $C3E7CC は装備品の交換を行う処理だ。 コードは A レジスターの値を変えつつ、後述の補助サブルーチンを呼び続けるという構造だ。 以下、処理の要点を列挙する。

  • 転職者の装備しているぶきを変更する。

  • 転職者の装備しているよろいを変更する。

  • 転職者の装備しているたてを変更する。

  • 転職者の装備しているかぶとを変更する。

5.19.2.5. サブルーチン $C3E7ED: 最適な装備品を調べる

サブルーチン $C3E7ED は、転職キャラクターに最適な装備品を検索し、可能ならば装備させる処理である。 まず、転職したいキャラクターの所持品から、 職業・性別・呪いを考慮した上で装備可能なアイテムをすべてチェックする。 そのうち値が最も上昇するものを検索する。 次に、パーティー全体のふくろから同様にして検索する。 最後に、どちらかの検索が成功していれば、そのアイテムを対象キャラクターに装備させる。 以下、処理の要点を列挙する。

  • まず転職者の所持品から、新職業に就いても装備可能かつ呪いにかからないアイテムのうち、最も属性値が上昇するものを検索する。

  • 次に、転職者の持ち物に空きがある場合に限り、パーティー全体のふくろにある全アイテムから、先ほどと同様に検索する。

  • 候補アイテムがふくろから検索された場合には、それをふくろから削除して転職者の持ち物に追加する。

  • 最終的に候補になったアイテムが転職者の持ち物に存在すれば、それを装備させる。