Skip to content

Future/Secom#9

Open
Kihi1120 wants to merge 16 commits intoKYMario:mainfrom
Kihi1120:future/Secom
Open

Future/Secom#9
Kihi1120 wants to merge 16 commits intoKYMario:mainfrom
Kihi1120:future/Secom

Conversation

@Kihi1120
Copy link

@Kihi1120 Kihi1120 commented Jul 12, 2025

Observer(オブザーバー)

 ※名前修正していますSecom→Observer

陣営:クルーメイト陣営
判定:クルーメイト
_______________
<役職説明>
 会議中に自分が投票したPlayerを
 「監視対象」として登録し、
 そのPlayerが死亡した時に全員に
 Kill フラッシュを発生させるクルーメイト役職。

_______________
<仕様説明>
会議中にObserver が投票した相手が「監視対象(ObserverTarget)」になる
監視対象が死亡すると、1.5秒間隔で最大3回 Killフラッシュを全員に表示
その後、監視対象をリセットし、監視回数(RemainingMonitoring)を1減少
監視回数が 0 の場合、それ以降は新たな監視対象を設定できなくなる

_______________
<今後の拡張案>
 フラッシュ回数/フラッシュ間隔の設定
 死亡者の部屋を会議中に通知
 複数人監視可能にする

_______________
お手すきの際にご確認のほど、よろしくお願いいたします!!

Kihi1120 added 6 commits July 12, 2025 16:31
 Secom.csの追加。
 CustomRoleManeにSecomを追加。
 翻訳を追加。
 →※カラーを指定してます。
 Secomのベース構造の追加
 MaxMonitoring-監視可能回数
 翻訳の追加
 投票先を「Secom_Target」に指定。
 OnFixedUpdateを使い、投票先のTargetを死亡を検知
 →今回はとりあえず、仮でメッセージ処理
 1.5秒ごとのインターバルで全員へのフラッシュ処理
 回数カウントを減少させる処理
 
@yurinakira
Copy link

 そもそもSecomという名前がセーフなのか....?
 Secomの名前の前に「*」が入る。(・_・)ハ?
 名前の色も少し悩んでます。Stringで一応指定しちゃってます....

アウトでしょ…商標登録されてますし…

名前の前に*は翻訳の日本語が不足してるから英語翻訳を表示してるからです

@Yoran-Furan
Copy link
Collaborator

・キルフラッシュは複数回鳴らすとややこしくなると思うので1回のみに
・自視点だれが監視対象か分かるマークの追加
・ベイト等にある"一定タスクを完了させないと自覚できない"設定の追加
は必要かなと思います。

@Yoran-Furan
Copy link
Collaborator

https://github.com/KYMario/TownOfHost-K/pull/9/files#r2202814343 で言及されてる部分の修正だけお願いします。
修正が終わり次第入れれそうなタイミングで追加すると思います。

Copy link

@yurinakira yurinakira left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

以下も合わせて変更しましょう。
ブランチ名変えるのは少し手間になるのでPR本文に名称変更の旨記載しておけば変更漏れはないかなと
・PRタイトル
・PR本文(名称変更の記載をする)
・ファイル名(Roles/Crewmate/Secom.cs)

OptionMaxMonitoring = FloatOptionItem.Create(RoleInfo, 10, Option.MaxMonitoring, new(0f, 99f, 1f), 1f, false)
.SetValueFormat(OptionFormat.Times);
OptAwakening = BooleanOptionItem.Create(RoleInfo, 10, GeneralOption.TaskAwakening, false, false);
OptAwakeningTaskCount = FloatOptionItem.Create(RoleInfo, 11, GeneralOption.AwakeningTaskcount, new(0f, 255f, 1f), 5f, false, OptAwakening);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IntegerOptionItemを使うべきでは?(引数の数字の後ろの"f"も取り忘れずに)

@Yoran-Furan
以下既存実装箇所で、IntegerOptionItemではなくFloatOptionItemを使っている理由ってありますか?

Optioncantaskcount = FloatOptionItem.Create(RoleInfo, 11, Option.cantaskcount, new(0, 99, 1), 5, false);

OptAwakeningTaskCount = FloatOptionItem.Create(RoleInfo, 11, GeneralOption.AwakeningTaskcount, new(0f, 255f, 1f), 5f, false, OptAwakening);

時間やスピード系は小数点以下があるからFloatで
タスク数は現状整数のみの認識なので、今後小数点で管理される予定とか?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OptAwakeningで覚醒ON/OFFできるならOptAwakeningTaskCountの最低値は0じゃなくて1でいいのでは?

)
{
ObserverTarget = byte.MaxValue;
RemainingMonitoring = (int)OptionMaxMonitoring.GetFloat(); // 初期回数設定(float→int)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

46lで指摘していますが、元々のOptionMaxMonitoringをIntegerで受け取ってしまえば良いのと、
キャスト型変換はよろしくないので、
GetFloat()ではなくGetInt()で素直に取ってきましょう。

CustomRoles.Observer,
() => RoleTypes.Crewmate,
CustomRoleTypes.Crewmate,
999999, //(仮)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Yoran-Furan
ここのID指定してあげてください

@Yoran-Furan
Copy link
Collaborator

id重複など結構問題ありましたが、こちら側でなんとかしたので次バージョンで実装いたします。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants