Files
TheTree_mock/docs/data/CHARACTER_CATALOG.md
T

6.8 KiB

MVP人物・来客カタログ

この文書は14日MVPで使用する静的な人物データの索引である。ゲームルールの正本は GAME_SPECIFICATION.md、機械処理の正本は SYSTEM_SPECIFICATION.md とし、実データは data/characters/ のJSONを正本とする。

データ境界

  • 客クラスと種族は別データとし、8クラス×4種族の32組合せを生成できる。
  • 自由雇用候補20人は固定ID、成人確認済み年齢、役割、日給、契約金、4技能、許可業務を持つ。
  • MVPのユニーク人物はアンリとライの2人とし、相互のcounterpart_idを必須にする。
  • 全IDは表示名から独立したlowercase snake_caseとする。セーブやイベント参照にはIDだけを使う。
  • JSONはSchema 1として厳密検証する。不明フィールド、不明タグ、重複ID、不足技能、18歳未満、成人未確認、孤児参照が一件でもあればカタログ全体を公開しない。
  • 14日MVPで参照されるID集合は固定する。同数の別IDへ差し替えて既存セーブ・イベント参照をすり替えることも許可しない。
  • JSONは1文書1 MiB、深さ64、10万値までとし、同一Object内の重複KeyはUnicode escape表現を含めて構文解析前に拒否する。検証エラーは最大256件で打ち切りを明示し、不正データによるメモリ増幅を防ぐ。
  • IDは64文字、表示名は80文字までとし、表示名の制御文字、経路の..、非有限数、JSONで正確に往復できない巨大数を受け入れない。
  • 倍率は浮動小数ではなくbasis pointで保持する。10000が1.00倍、9000が0.90倍である。
  • 客クラスのneed_ratesはhunger、sleep、hygiene、medical、leisure、intimacyの6 Keyを必須とする。種族のneed_rate_modifiersもこの6 Key以外を許可しない。
  • Hygieneは汚れ、Medicalは負傷・病気、Intimacyは成人確認と昼夜Contextで変化させるため、MVP静的データの基礎値は0とする。安全はrisk_toleranceと候補Risk、交流は選好・GroupFit・関係Eventへ分離する。

客クラス8種

ID 表示 主な需要・判断特性
warrior 戦士 忍耐と危険許容が高く、食事・酒場を優先
mage 魔法使い Manaと静かな施設を好み、騒音を忌避
rogue 盗賊 夜・地下を好み、警備を避ける
cleric 聖職者 信仰と清潔を重視し、違法・地下への感度が高い
noble 貴族 高予算・低忍耐・高品質要求・VIP需要
merchant 商人 交易と価格差を重視
outsider 亜人・魔族客 夜行性傾向と地下嗜好を持つ来客枠
diplomat 外交官 高品質・安全・VIP対応を要求

outsiderは種族そのものではない。たとえばoutsider_humanも生成可能だが、通常の需要構成では獣人・魔族の出現重みを高くする。種族と職業を同一軸に戻さないための互換クラス名である。

種族4種

ID 表示 成人基準 主な補正
human 人間 18 基準値
elf エルフ 20 Mana・静穏嗜好、忍耐増、危険許容減
beastfolk 獣人 18 食事需要、忍耐、危険許容がやや高い
demonfolk 魔族 20 夜・地下嗜好、危険許容が高い

種族は所持金、忍耐、危険許容、嗜好、欲求増加率だけを補正する。性別や種族を破産結果、基本能力、成人契約の可否へ直結させない。

自由雇用候補20人

ID 表示 年齢 役割 希望番 日給G
staff_akane アカネ 24 受付 昼 120
staff_bardo バルド 38 受付 夜 135
staff_chika チカ 27 調理 昼 145
staff_doran ドラン 44 調理 夜 160
staff_eri エリ 22 清掃 昼 90
staff_fugo フゴ 31 清掃 夜 100
staff_gina ジーナ 29 運搬 昼 110
staff_haru ハル 21 運搬 夜 95
staff_iris イリス 26 接客 昼 130
staff_juno ユノ 33 接客 夜 140
staff_klaus クラウス 36 警備 昼 155
staff_lina リナ 30 警備 夜 150
staff_marc マルク 41 警備 任意 170
staff_nadia ナディア 28 酒場 夜 145
staff_otto オットー 35 酒場 夜 150
staff_petra ペトラ 25 施術 昼 145
staff_quinn クイン 32 施術 夜 160
staff_rika リカ 23 事務 昼 105
staff_sven スヴェン 39 保守 任意 125
staff_tessa テッサ 34 医療 任意 165

雇用時には静的データからrole_id、4技能、許可業務、日給、通常雇用種別を実行時従業員へ投影する。希望番はSchedule作成側へ、年齢・成人確認・契約金は雇用Commandの検証境界へ渡し、コンテンツ条件を実行時の暗黙知にしない。これにより、カタログから生成した従業員の日給が実行時に0へ脱落することを防ぐ。

ユニーク人物

ID 表示 種別 年齢 役割 対応人物 初期機械効果
heroine_anri アンリ ヒロイン 25 女将 rival_rai 配置階の忍耐減少を0.90倍
rival_rai ライ ライバル 29 影響者 heroine_anri Shield攻撃8、夜間+4

両者はuniqueかつunsellableであり、通常の売却・自由雇用解雇へ流さない。関係値50・80の境界は静的効果だけでは越えず、予告付きの明示イベントを必要とする。

ユニーク人物の機械効果Keyは既知の効果だけを許可し、ヒロイン用とライバル用を相互に流用しない。倍率は0.25~3.00、MVPのShield攻撃値は0~100へ制限する。自由雇用候補へuniqueまたはunsellableを付与することも、ユニーク人物から両タグを外すことも拒否する。

実装上の次境界

静的カタログは、内容の欠落や危険な人物データを起動時に検出するところまでを担当する。自動来客でのクラス・種族出現重み、雇用画面、アンリとライの同一施設・同一シフト接触判定は、運営Coordinatorと実行環境を接続した後に行う。

客個体の年齢、性別、社会ランク、危険度はアーキタイプではなく生成個体の責務である。現在のGuestDefinitionは成人確認済みフラグまでを受け取るため、個体生成を接続する際は、選択種族のadult_age以上の実年齢を生成・保存し、年齢不詳の個体を成人向け判定へ流さない検証を追加する。