5.19. 命名神

5.19.1. 構造に関する構成要素
5.19.1.1. 配列 $C30AF5: ふざけた名前
5.19.1.2. 配列 $C31368: 予約名
5.19.2. 振る舞いに関する構成要素
5.19.2.1. サブルーチン $C3E8D3: 命名神メイン
5.19.2.2. サブルーチン $C3EB2B: 名前がふざけた名前かどうか
5.19.2.3. サブルーチン $C3EB3F: 入力が予約名かどうか
5.19.2.4. サブルーチン $C3EB53: 名前テスト共通
5.19.2.5. サブルーチン C3EBAB: 名前が同一文字の連続形かどうか
5.19.2.6. サブルーチン $C3EBCD: 現在の名前が怒りに触れているかどうか

本節では命名神について述べる。

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

命名神が参照するデータおよびそのの構造について述べる。

5.19.1.1. 配列 $C30AF5: ふざけた名前

アドレス $C30AF5 に命名神の怒りに触れる名前を表す文字列 ID が配列している。 文字列データ自体は基本的に平仮名をベースとした形式で配列している。 濁点・半濁点が関係しない文字については、対応する平仮名と片仮名同士のコードポイント差が定数となることからこういう形式になっている。 濁点・半濁点が関係する文字については、平仮名と片仮名それぞれをリストしなければならない。

表 5.39 配列 $C30AF5

文字列 ID 文字列
#$02F6 ちんこ
#$02F7 きんたま
#$02F8 ちんちん
#$02F9 あほ
#$02FA ちんぽこ
#$02FB ちんポこ
#$02FC へんたい
#$02FD ちんぼ
#$02FE ちんボ
#$02FF ちかん
#$0300 おめこ
#$0301 まんこ
#$0302 おまんこ
#$0303 あそこ
#$0304 うんこ
#$0305 でべそ
#$0306 デべそ
#$0307 うんち
#$0308 はなたれ
#$0309 おしっこ
#$030A せっくす
#$030B ばか
#$030C バか
#$030D おしり
#$030E まぬけ
#$030F あなる
#$0310 きちがい
#$0311 すけべ
#$0312 きちガい
#$0313 すけべ

5.19.1.2. 配列 $C31368: 予約名

アドレス $C31368 には予約名を表す文字列 ID が配列している。 物語の登場人物で厳選した者で編成されたものと考えられる。

表 5.40 配列 $C31368

文字列 ID 文字列
#$0324 おるてが
#$0325 かんだた
#$0326 がらい
#$0327 おるてガ
#$0328 かんダた
#$0329 ガらい
#$032A えりっく
#$032B おりびあ
#$032C ばらもす
#$032D ぞーま
#$032E おりビあ
#$032F バらもす
#$0330 ゾーま
#$0331 ひみこ
#$0332 るびす
#$0333 のるど
#$0334 ばこた
#$0335 ぜにす
#$0336 るビす
#$0337 のるド
#$0338 バこた
#$0339 ゼにす

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

命名神に仕える神官の振る舞いについて述べる。

5.19.2.1. サブルーチン $C3E8D3: 命名神メイン

ダーマの神殿の西側にいる婆サンに「はなす」とサブルーチン $C3E8D3 が実行される。 以下、要点を列挙する。

  • 対象はパーティー内の任意のキャラクターまたはパーティー共有のふくろのうちから選べる。

  • 対象の現在の名前が怒りに触れているときは、まず呪いの効果音を再生する。

  • 怒りを解くのに 5,000 ゴールドが必要となる。 この支払い判定はサブルーチン $C45B66 で行う。

  • 入力内容によって神官の反応が違ってくる。このうち最後の二つについては命名神の怒りに触れる。

    • 入力文字列が現在の名前と全く同じ場合はキャンセル時と同じ扱いとする。

    • 入力文字列が文字列「ロト」とマッチする場合。 これは登録所の処理で行う判定処理と同じものを用いる。

    • 入力文字列が予約名とマッチする場合。 5.19.2.3 を参照。 これは登録所の処理で行う判定処理と同じだ。

    • 入力文字列が既存の仲間キャラクターの名前と全く同じ場合。 これは登録所の処理で行う判定処理と同じものを用いる。

    • 入力文字列がふざけた名前となる場合。 5.19.2.2 を参照。

    • 入力文字列が同一文字の連続形となる場合。 5.19.2.5 を参照。

  • 命名神の怒りに触れると、画面がフラッシュして呪いの効果音を再生する。

5.19.2.2. サブルーチン $C3EB2B: 名前がふざけた名前かどうか

プレイヤーが入力した名前がふざけたものであるかどうかをテストする。 これは後述するサブルーチン $C3EB53 にブラックリストを指定する形式で実行される。 5.19.1.1 および 5.19.2.4 を参照。

5.19.2.3. サブルーチン $C3EB3F: 入力が予約名かどうか

プレイヤーが入力した名前が、ゲームにより予約された名前であるかどうかをテストする。 これは後述するサブルーチン $C3EB53 に予約名リストを指定する形式で実行される。 5.19.1.2 および 5.19.2.4 を参照。

5.19.2.4. サブルーチン $C3EB53: 名前テスト共通

サブルーチン $C3EB53 は呼び出し元が指定する文字列型配列から、文字列を検索する。

処理としては二重ループによる線形探索だ。 対応する平仮名と片仮名同士を同じ文字として比較することにより、名前同士が「同じ」かどうかを判定する。 濁点・半濁点の付かない文字は、文字コードの差が一定であることを利用しての比較となるが、 付く文字はそうとも言えないので、リストの方に平仮名と片仮名を重複して定義しておく必要がある。 具体的には掲載データを参照して欲しい。

5.19.2.5. サブルーチン C3EBAB: 名前が同一文字の連続形かどうか

サブルーチン C3EBAB は名前が任意の一文字 4 個が連続する文字列であるかどうかをテストする。 処理内容は十数個の命令からなる単純な配列検索に過ぎない。

5.19.2.6. サブルーチン $C3EBCD: 現在の名前が怒りに触れているかどうか

サブルーチン $C3EBCD は、指定したキャラクターの現在の名前が、 命名神の怒りにふれているものかどうかをテストする。 以下、要点を列挙する。

  • 現在の対象者の名前がふざけた名前かどうかを判定する。 5.19.2.3 参照。

  • 現在の対象者の名前が同一文字の連続形かどうかを判定する。 5.19.2.5 参照。

  • どちらかに判定された名前が怒りに触れているものとする。