変愚ソースを読む6

racial.cの次はmind.cとmindtips.hだ。魔法以外でmで使う能力のうち独立ファイルになっていないものが記述されている。要するに超能力や錬気術など。
mindtips.hは各能力の説明を格納している。あまり特筆すべきことはない。mind.cはまずmind_powers変数に各能力の名前や習得レベル、コスト、難易度をテーブルとして格納している。使わない枠はレベルを99にするのが作法らしい。

関数 説明
void mindcraft_info(char *p, int use_mind, int power) 各能力の説明を取り出す
int get_mind_power(int *sn, bool only_browse) 能力の選択
bool cast_mindcrafter_spell(int spell) 超能力を使う
bool cast_force_spell(int spell) 錬気術を使う
bool cast_mirror_spell(int spell) 鏡魔法を使う
bool cast_berserk_spell(int spell) 狂戦士技を使う
bool cast_ninja_spell(int spell) 忍術を使う
void do_cmd_mind(void) get_mind_power()で能力を選んでcast〜で実行する
void do_cmd_mind_browse(void) 能力表を見る

ここではクラスによって分岐する箇所が多い。超能力はクラスに固有のものとして書かれているためだ。超能力を使うクラスを作る際にはそれらの分岐全てに書き足さなくてはならない。
ちなみに魔法は複数のクラスにまたがることを前提に書かれている分だけ抽象度が高い(なので超能力を先に説明した)。