ゴーストロール - yukieiji/ExtremeRoles GitHub Wiki

追加幽霊役職一覧

クルー インポスター ニュートラル
ファウヌス サボり魔 ウィスプ
ポルターガイスト ベントガイスト
  • 公式の幽霊役職(守護天使)とも併用が可能です

幽霊役職の全体仕様

  • 幽霊役職と通常役職は別管理
    • 例としてマーリン + スーパーバイザーが死亡して、守護天使にアサインされたとする
      • MOD内ではその人はマーリンとスーパーバイザー、守護天使の役職を持つ人として管理されます
  • 同じ陣営の幽霊役職にしかアサインされない
    • 例:元インポスター => クルーの幽霊役職にアサインされない
  • 役職表示及び投票先は全陣営一括で見えない(クライアントオプションで有効化してても無効化されます)
  • アサインされた人は会議中に天使のアイコンが付く(ゲームオプションで切り替え化)
  • アサインされる元役職の指定がある場合があります
    • コンビ役職で複数の役職にアサインされている場合、一番上の物を参照します
      • 例:ラバーズ + サイドキックの場合、ラバーズを参照します
  • 生存役職と幽霊役職のコンビ役職も存在します
  • 名前の色表示は幽霊役職と生存時の色を混ぜた色になります
  • 役職名は「幽霊役職名(生存時の役職名)」になります

幽霊役職の能力の仕様

  • 能力のクールタイムは基本的に60秒、最小15~最大120秒で設定可
  • コミュサボ中は能力が全陣営一括で使用できない
  • 幽霊役職の能力発動後の会議でどの役職がどんな能力を使ったのかを報告される v3.0.0.0以降各幽霊役職に能力発動の報告のオンオフのオプションが実装され切り替えが可能になりました(デフォルトは報告されるようになっています)

幽霊役職の割り当てロジック

  1. 生存時の役職を確認
  2. ニュートラル等でオプションにブロックされている場合、バニラの幽霊役職のアサインをスキップ
  3. バニラの幽霊役職割り当て
  4. バニラの幽霊役職にアサインされている人をバニラの幽霊役職をラップする幽霊役職にアサインする(それ以外は4へ)
  5. コンビ役職の人をそのコンビ役職の幽霊役職にアサインする(それ以外は6へ)
  6. ExRの幽霊役職の割り当てを行う
  • 各種アサインに使用されるデータは通常役職のアサイン時に作成される
  • 割り当て時にスポーン数、スポーン率、生存時の役職がその幽霊役職になるかどうかもチェックされます
  • 幽霊役職のスポーン数の上限に引っかかってる場合はコンビ役職でもアサインされないです
  • 幽霊役職の割り当ては生存役職のキルされた時の処理より先にアサインされます
    • 以下処理例です
    1. ラバーズの片割れキル
    2. その人の死亡処理
    3. 幽霊役職アサイン処理(クルーの幽霊役職にアサインされます)
    4. ラバーズの同時キル処理(ラバーズのニュートラルに覚醒する場合はここで実行される)

幽霊役職のオプションの仕様

共通設定事項として以下のオプションがあります。

  • 役職のアサイン数
  • 能力のクールタイム(デフォルト60秒)
  • 能力の発動時間(発動時間があるもののみ) これらのオプションは各役職ごとそれぞれコード上に記載されているわけではなく、自動生成されるオプションです

開発者向けの幽霊役職の実装仕様

デザイン

  • 幽霊役職
    • オブジェクト指向
    • デザインパターン:NVI(None Virtual Interface) + インターフェースパターン
      • 基本的に幽霊役職へのアクセスは非仮想関数のメソッドとインターフェースによる共通実装によるアクセスを行っています
      • 呼び出し側は基本的に幽霊役職の内部を気にしない実装になっております
  • 幽霊役職の管理
    • デザインパターン:シングルトンパターン
      • 幽霊役職の管理用のクラスに実際にゲーム内に使用されてる役職やアクセス用のメソッドを用意しています

クラスダイアグラム

  • 黒矢印がHas、白矢印がExtrendです

ClassDiagram