4.12. 職業

4.12.1. 構造体 $C41C3E: 職業構造体
4.12.2. 職業に就いていることによる特典
4.12.2.1. ぶとうか
4.12.2.2. おどりこ
4.12.2.3. とうぞく
4.12.2.4. まものつかい
4.12.2.5. しょうにん
4.12.2.6. あそびにん
4.12.2.7. バトルマスター
4.12.2.8. パラディン
4.12.2.9. けんじゃ
4.12.2.10. レンジャー
4.12.2.11. スーパースター
4.12.2.12. ゆうしゃ
4.12.2.13. ドラゴン
4.12.2.14. はぐれメタル

この節では職業構造体を中心に説明する。 いつものように、オブジェクトを CSV 形式でダンプしたテキストファイルを 付録 B データ に収録した。

4.12.1. 構造体 $C41C3E: 職業構造体

職業構造体とは、サイズが #$77 バイトであり、オブジェクトのメモリレイアウトが次の表で示されるような構造体だ。 この型のオブジェクトがアドレス $C41C3E から 21 個直列している。

表 4.38 構造体 $C41C3E

オフセット 属性
#$00 #$FFFF 名前
#$02 #$FFFF 職業経験値構造体オフセット
#$04 #$FFFF 職業経験値構造体マスク
#$06 #$00FF
#$07 #$FFFF 職業経験値構造体シフトビット
#$09 #$FFFF 経験値上限
#$0B #$FFFF 経験値 0
#$0D #$FFFF 経験値 1
#$0F #$FFFF 経験値 2
#$11 #$FFFF 経験値 3
#$13 #$FFFF 経験値 4
#$15 #$FFFF 経験値 5
#$17 #$FFFF 経験値 6
#$19 #$FFFF 等級名 0
#$1B #$FFFF 等級名 1
#$1D #$FFFF 等級名 2
#$1F #$FFFF 等級名 3
#$21 #$FFFF 等級名 4
#$23 #$FFFF 等級名 5
#$25 #$FFFF 等級名 6
#$27 #$FFFF 等級名 7
#$29 #$FFFF コマンド習得経験値 00
#$2B #$00FF 習得コマンド 00
#$2C #$FFFF コマンド習得経験値 01
#$2E #$00FF 習得コマンド 01
#$2F #$FFFF コマンド習得経験値 02
#$31 #$00FF 習得コマンド 02
#$32 #$FFFF コマンド習得経験値 03
#$34 #$00FF 習得コマンド 03
#$35 #$FFFF コマンド習得経験値 04
#$37 #$00FF 習得コマンド 04
#$38 #$FFFF コマンド習得経験値 05
#$3A #$00FF 習得コマンド 05
#$3B #$FFFF コマンド習得経験値 06
#$3D #$00FF 習得コマンド 06
#$3E #$FFFF コマンド習得経験値 07
#$40 #$00FF 習得コマンド 07
#$41 #$FFFF コマンド習得経験値 08
#$43 #$00FF 習得コマンド 08
#$44 #$FFFF コマンド習得経験値 09
#$46 #$00FF 習得コマンド 09
#$47 #$FFFF コマンド習得経験値 0A
#$49 #$00FF 習得コマンド 0A
#$4A #$FFFF コマンド習得経験値 0B
#$4C #$00FF 習得コマンド 0B
#$4D #$FFFF コマンド習得経験値 0C
#$4F #$00FF 習得コマンド 0C
#$50 #$FFFF コマンド習得経験値 0D
#$52 #$00FF 習得コマンド 0D
#$53 #$FFFF コマンド習得経験値 0E
#$55 #$00FF 習得コマンド 0E
#$56 #$FFFF コマンド習得経験値 0F
#$58 #$00FF 習得コマンド 0F
#$59 #$FFFF さいだい HP ボーナス
#$5B #$FFFF さいだい MP ボーナス
#$5D #$FFFF ちからボーナス
#$5F #$FFFF すばやさボーナス
#$61 #$FFFF かしこさボーナス
#$63 #$FFFF みのまもりボーナス
#$65 #$FFFF かっこよさボーナス
#$67 #$00FF ちからに対する係数
#$68 #$00FF (未使用)
#$69 #$00FF すばやさに対する係数
#$6A #$00FF (未使用)
#$6B #$00FF みのまもりに対する係数
#$6C #$00FF (未使用)
#$6D #$00FF かしこさに対する係数
#$6E #$00FF (未使用)
#$6F #$00FF かっこよさに対する係数
#$70 #$00FF (未使用)
#$71 #$00FF さいだい HP に対する係数
#$72 #$00FF (未使用)
#$73 #$00FF さいだい MP に対する係数
#$74 #$00FF (未使用)
#$75 #$FFFF 説明

上の表で(未使用)等の括弧付きの属性はプログラムからの参照がない。 付録の CSV ファイルではこのような項目について記載を省略する。 以下に各属性の概要を記す。

名前

名前とは、この職業の名前を表す文字列の ID を値とする属性だ。 職業名は各キャラクターの「つよさ」ウィンドウや転職時の職業選択ウィンドウ等に表示されるものだ。

ROM に定義されているデータを確認すると、ヌル職業と無職のときとで値が異なっている。 前者と後者の職業名はそれぞれ「なし」と空文字列だ。

文字列については 4.2 文字列 で述べる。

職業経験値構造体オフセット, 職業経験値構造体マスク, 職業経験値構造体シフトビット

職業経験値構造体オフセットとは、職業経験値オブジェクトにおいて、 この職業に関する職業経験値がそのオブジェクトのベースアドレスから数えて何バイト目から開始するのかを意味する値の属性だ。

職業経験値構造体マスクとは、さらに職業経験値構造体オフセット属性値で示されるバイト中の何ビット目から 当該職業データが格納されているのかを意味する値の属性だ。

職業経験値構造体シフトビットとは、さらにそのマスクされたビット列を値として解釈するために必要な右シフト回数を意味する値の属性だ。 ただし、この属性はプログラムから利用されていない可能性がある(マスクだけで適当なシフト数が判明するため)。

例えば「とうぞく」のこれらの属性値は (#$0004, #$007F80, #$0007) と読める。 これが意味するのは、「とうぞく」の職業経験値が職業経験値オブジェクトの 4 バイト目の最上位ビットから 5 バイト目の最上位ビットの一つ手前までに亘ることだ。

経験値上限

経験値上限とは、この職業を極めた時点での職業経験値を示す属性だ。

経験値 k (k = 0..6)

経験値 k とは、この職業の等級(仲間キャラクターの「つよさ」ウィンドウで確認できる星の数)が k + 2 になるのに必要な職業経験値を示す属性だ。 最後の経験値 6 属性値と経験値上限属性値は等しい。

言い忘れたが、本節で言う職業経験値とは戦闘勝利回数に対応するほうの概念だ。

等級名 k (k = 0..7)

等級名 k とは、この職業の等級 k + 1 の呼び名を指定する文字列 ID を値とする属性だ。

コマンド習得経験値 k (k = #$00..#$0F)

コマンド習得経験値 k とは、習得コマンド k を習得するのに必要な職業経験値を取る属性だ。 最小値が 2 となっていることに注意を要する。

習得コマンド k (k = #$00..#$0F)

習得コマンド k とは、職業に就いている者が規定の職業経験値を得ると習得するコマンドを意味する属性だ。 ただし、型はコマンド ID ではなく、コマンドウィンドウ内の項目位置を指示するオブジェクト配列の添字という、馴染みのないものになっている。 このオブジェクトはアドレス $FFC96D にある配列の要素であり、 構造としてはコマンド ID の値、移動コマンドウィンドウでの項目位置、戦闘コマンドウィンドウでの項目位置の三つ組の配列とみなせる。 詳しくは付録のデータを参照して欲しい。

この属性値が #$9A であれば、それも含むそこから先の習得コマンド属性値は全て無効値であることを示している。

さいだい HP ボーナス, さいだい MP ボーナス, ちからボーナス, すばやさボーナス, かしこさボーナス, みのまもりボーナス, かっこよさボーナス

各キャラクター属性ボーナスとは、職業レベルが最大のときに、 この職業に就いている者の対応属性値がこの属性値分だけ加算されるというものだ。

ちからに対する係数, すばやさに対する係数, みのまもりに対する係数, かしこさに対する係数, かっこよさに対する係数, さいだい HP に対する係数, さいだい MP に対する係数

各キャラクター属性に対する係数とは、この職業に就いている者のキャラクター属性値を乗算によって変化する処理におけるそれを示す属性だ。 係数属性値を 128 で除算した値が実質的な係数と考えたほうがよい。 ただし値 255 は厳密に言えばマジックナンバーであり、このときには正確に 2 倍を意味する。

良い機会なので、仲間キャラクターの各属性値の補正手順をここで簡単にまとめておく:

  1. 仲間キャラクターの素(無職かつ装備品なしの状態)の属性値を取得する

  2. 就いている職業が指定する各キャラクター属性に対する係数(から一意に決まる定数)を乗算する

  3. 職業レベルが最大であれば、各キャラクター属性ボーナス属性値を加算する

  4. 仲間キャラクターの装備品から決まる属性値変動を適用する

  5. 以上の結果、キャラクター属性値がゼロと評価されれば最終的な値を 1 に、 属性固有の上限値を超えていたら、その上限値を値とする

説明

説明とはメッセージ ID を取る属性であり、ダーマの神殿にいる職業説明係の台詞を指定するものだ。

4.12.2. 職業に就いていることによる特典

仲間キャラクターが何かの職業に就いていると、どのような良いことが起こるのかを以下に説明する。 これらの特典は基本的には戦闘モードにおいて有利に働くことが多いようだ。

以下の各表で列が ID とあるのは、つよさウィンドウで表示さえる星の数から 1 を引いた値と等しい。

4.12.2.1. ぶとうか

職業がぶとうかである仲間キャラクターは、戦闘中に会心痛恨属性が 1 の戦闘コマンドを実行すると、 次の表の確率で会心の一撃が発生する:

表 4.39 ぶとうかが会心の一撃を発生する確率

ID 確率
0 0
1 0
2 1/64
3 1/48
4 1/32
5 1/24
6 1/16
7 1/8

抽選が外れると、通常の職業キャラクターと同様の抽選を行う。

4.12.2.2. おどりこ

職業がおどりこであるである仲間キャラクターは、戦闘中にみかわし考慮属性が 1 の戦闘コマンドを受け、 通常のみかわし判定処理が失敗すると次の表の確率で身をかわす:

表 4.40 おどりこが身をかわす確率

ID 確率
0 0
1 0
2 1/64
3 1/32
4 1/16
5 1/16
6 1/16
7 1/8

4.12.2.3. とうぞく

職業がとうぞくである仲間キャラクターが戦闘後に馬車外にいると、 倒した敵陣戦闘員から宝箱を盗んでいたことになることがある。 モンスターのアイテム確率属性から決まる乱数と職業レベル(ここでは星の数)を比較して、大きければ盗み確定となる。

とうぞくが複数いる場合は、その人数分だけこのような判定が実行される。

4.12.2.4. まものつかい

職業がまものつかいである仲間キャラクターが戦闘後に馬車外にいると、 倒した敵陣戦闘員が起き上がって仲間になりたそうにすることがある。 これには、その敵陣戦闘員のモンスターレベルよりも職業レベル(ここでは星の数) * 8 + 1 のほうが大きい(等しいのはダメ)必要がある。

まものつかいが複数いる場合は、そのうちのもっとも高い職業レベルが採用される。

4.12.2.5. しょうにん

職業がしょうにんである仲間キャラクターが戦闘後に馬車外にいると、 戦闘後に敵から得られるゴールドが増える。 追加分は本来の額面に対する割合で次の表のように与えられている:

表 4.41 しょうにんが獲得するゴールドの正規獲得額に対する割合

ID 割合
0 1/15
1 1/14
2 1/13
3 1/12
4 1/11
5 1/10
6 1/9
7 1/4

しょうにんが複数いる場合は、その人数分だけこのような判定が実行される。

4.12.2.6. あそびにん

職業があそびにんである仲間キャラクターは、命令に関わらず 1/5 の確率で「あそび」コマンドを実行する。 このとき、実行コマンドの抽選は職業レベルに依存する。 選択肢はどのキャラクターも最大 8 個あり、ちょうど職業レベルの取り得る範囲と一致するので乱数は自然に取る。 「あそび」の選択肢は $C22D54 に定義されている。 このデータは 付録 B データ に収録した。

4.12.2.7. バトルマスター

職業がバトルマスターである仲間キャラクターは、みかわし考慮属性が 1 の戦闘コマンドを受け、 通常のみかわし判定処理が失敗すると次の表の確率で相手の攻撃を打ち払う:

表 4.42 バトルマスターが敵からの攻撃を打ち払う確率

ID 確率
0 0
1 1/64
2 1/48
3 1/32
4 1/16
5 1/16
6 1/16
7 1/8

4.12.2.8. パラディン

職業がパラディンである仲間キャラクターは、パラディン考慮属性が 1 の戦闘コマンドを実行するときに次の表の確率でコマンド対象を即死させる:

表 4.43 パラディンが対象を即死させる確率

ID 確率
0 0
1 1/64
2 1/48
3 1/32
4 1/32
5 1/16
6 1/16
7 1/8

4.12.2.9. けんじゃ

職業がけんじゃである仲間キャラクターは、移動モード戦闘モードを問わず、コマンド実行時の必要 MP 消費量が緩和される。 コマンドが規定する消費量がゼロ以外の定数であるようなものについては、次の表で示す量か 1 のどちらかになる:

表 4.44 けんじゃの MP 消費

ID 消費量
0 規定量と同じ
1 規定量と同じ
2 規定量の 7/8
3 規定量の 7/8
4 規定量の 3/4
5 規定量の 3/4
6 規定量の 5/8
7 規定量の 1/2

4.12.2.10. レンジャー

職業がレンジャーである仲間キャラクターがいると、戦闘コマンド「にげる」の成功率が次の表のようになる:

表 4.45 レンジャーによる逃走成功確率

ID 確率
0 1/8
1 1/8
2 3/8
3 3/8
4 5/8
5 5/8
6 5/8
7 1

レンジャーが複数いる場合は、そのうちのもっとも高い職業レベルが採用される。

4.12.2.11. スーパースター

職業がスーパースターである仲間キャラクターがいると、 戦闘中に敵陣戦闘員が次の確率で見とれて休み状態になることがある:

表 4.46

ID 確率
0 0
1 0
2 1/64
3 1/64
4 1/48
5 1/48
6 1/32
7 1/8

4.12.2.12. ゆうしゃ

職業がゆうしゃである仲間キャラクターは、戦闘中の各ターン終了時に HP が次の表に示す値だけ自動回復する:

表 4.47 ゆうしゃの自動回復

ID 回復量
0 0
1 0
2 0
3 30
4 40
5 50
6 60
7 80

4.12.2.13. ドラゴン

職業がドラゴンである仲間キャラクターがいると、戦闘開始時に先制を取りやすくなる。 ドラゴンでないときの確率の何倍だけ先制を取りやすいかを次の表で示す:

表 4.48 ドラゴンの先制しやすさ

ID 倍率
0 2
1 2
2 2
3 3
4 3
5 3
6 3
7 4

ドラゴンが複数いる場合は、そのうちのもっとも高い職業レベルが採用される。

4.12.2.14. はぐれメタル

職業がはぐれメタルである仲間キャラクターは、 職業レベルが上限に達していると、すべてのコマンド耐性の属性値が 3 であるかのように扱われる。