Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

merge 5.1.5 #44

Merged
merged 39 commits into from
Mar 16, 2024
Merged
Changes from 1 commit
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
28fb41b
ロールベースにCheckShapeshiftのフックを追加
Hyz-sui Nov 5, 2023
1a74bb1
CheckShapeshiftのパッチを作成
Hyz-sui Nov 5, 2023
b6253dd
Merge branch 'develop' into feature/CheckShapeshift
kou-hetare Nov 6, 2023
6d44d07
desyncシェイプシフターの変身が弾かれないためのチェックを追加
Hyz-sui Nov 7, 2023
a1de5c2
イビルトラッカーの変身をキャンセル
kou-hetare Nov 21, 2023
0b09dbb
Merge branch 'feature/CheckShapeshift' of https://github.com/tukasa00…
kou-hetare Dec 5, 2023
4df5b41
自視点のみシェイプシフトの機能を追加
kou-hetare Dec 6, 2023
5ab0202
CanDesyncShapeshiftのvirtual指定漏れ
kou-hetare Dec 7, 2023
bcfc282
OnCheckShapeshiftでanimateを操作できるよう変更
kou-hetare Dec 9, 2023
81e53e9
役職用RPCをCustomRoleSyncに一本化
kou-hetare Jan 13, 2024
a90cd4f
ModによるSnapToRPCを,ラグを考慮し十分にシーケンスIDを大きくして飛ばすよう変更
Hyz-sui Jan 15, 2024
b61fe51
PlayerStateにHasSpawnedプロパティを追加
Hyz-sui Jan 16, 2024
8788455
会議開始時に湧いてない状態にする処理と,エアシップ以外での湧き処理を追加
Hyz-sui Jan 16, 2024
b2836ef
エアシップのスポーン判定をリワーク
Hyz-sui Jan 16, 2024
c89be2c
古いコードを削除
Hyz-sui Jan 16, 2024
7921d36
RpcSnapToForced内のコールIDのマジックナンバーを解消
Hyz-sui Jan 16, 2024
3af2501
RoleTypes.Engineer can use vent
Tommy-XL Jan 18, 2024
1506ee6
Use pc.Role.CanUse()
Tommy-XL Jan 23, 2024
bbd5a0f
Merge pull request #1306 from Tommy-XL/BugFix/RolesBasedEngineerCanBe…
Hyz-sui Jan 24, 2024
77ea56e
Merge pull request #458 from tukasa0001/fetch/1306
Hyz-sui Jan 28, 2024
966e632
Merge pull request #456 from tukasa0001/feature/RoleRpcIntegration
kou-hetare Jan 28, 2024
a7179d3
起動時にユーザ環境変数に現在のディレクトリを設定する機能を追加
Hyz-sui Feb 1, 2024
c770dc8
Merge pull request #459 from tukasa0001/feature/SetTOHDirToEnvVar
Hyz-sui Feb 2, 2024
b852636
Merge pull request #451 from tukasa0001/feature/CheckShapeshift
kou-hetare Feb 3, 2024
d42a765
会議後にWarlock.IsCursedがリセットされていない問題を修正
schwKatz Feb 2, 2024
00d5dd6
Merge branch 'develop' into fix/RandomSpawnTeleport
Hyz-sui Mar 2, 2024
0082fc3
Merge pull request #457 from tukasa0001/fix/RandomSpawnTeleport
Hyz-sui Mar 5, 2024
cebf583
バニラアプデによるビルドエラーを解消
Hyz-sui Mar 5, 2024
c263375
バージョンを5.1.5に変更
yurinakira Mar 6, 2024
da7a3ef
update readme AmongUsVersion
yurinakira Mar 6, 2024
5ed5617
Merge pull request #461 from tukasa0001/fix/UpdateFor202435
Hyz-sui Mar 6, 2024
efb1791
Merge pull request #462 from tukasa0001/verUp/5.1.5
yurinakira Mar 6, 2024
eb22d38
Merge pull request #463 from tukasa0001/doc/ReadMe5.1.5
yurinakira Mar 6, 2024
75ef8d3
Merge pull request #460 from tukasa0001/fetch/1307
Hyz-sui Mar 6, 2024
af2b593
Crowdinの翻訳をインポート
tanakanira0118 Mar 6, 2024
3519b4d
消された翻訳を追加
yurinakira Mar 6, 2024
8883be1
Merge pull request #464 from tukasa0001/crowdin-import-20240306
Hyz-sui Mar 6, 2024
24fd73d
Merge pull request #1308 from tukasa0001/develop-5.1.5
Hyz-sui Mar 6, 2024
92c70b2
Merge branch 'main' into work/5.1.5H
Hyz-sui Mar 16, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
役職用RPCをCustomRoleSyncに一本化
kou-hetare committed Jan 13, 2024
commit 81e53e9fb1c926bfe25d806781bd74a9deaf02c2
20 changes: 3 additions & 17 deletions Modules/RPC.cs
Original file line number Diff line number Diff line change
@@ -19,24 +19,10 @@ public enum CustomRPC
EndGame,
PlaySound,
SetCustomRole,
SetBountyTarget,
WitchSync,
SetSheriffShotLimit,
SetDousedPlayer,
SetNameColorData,
SniperSync,
SetLoversPlayers,
SetExecutionerTarget,
SetCurrentDousingTarget,
SetEvilTrackerTarget,
SetRealKiller,
SyncPuppet,
SetSchrodingerCatTeam,
StealthDarken,
EvilHackerCreateMurderNotify,
PenguinSync,
MareSync,
SyncPlagueDoctor,
CustomRoleSync,
}
public enum Sounds
{
@@ -153,8 +139,8 @@ public static void Postfix(PlayerControl __instance, [HarmonyArgument(0)] byte c
byte killerId = reader.ReadByte();
RPC.SetRealKiller(targetId, killerId);
break;
default:
CustomRoleManager.DispatchRpc(reader, rpcType);
case CustomRPC.CustomRoleSync:
CustomRoleManager.DispatchRpc(reader);
break;
}
}
5 changes: 2 additions & 3 deletions Roles/Core/CustomRoleManager.cs
Original file line number Diff line number Diff line change
@@ -237,11 +237,10 @@ public static void OtherRolesAdd(PlayerControl pc)
/// 受信したRPCから送信先を読み取ってRoleClassに配信する
/// </summary>
/// <param name="reader"></param>
/// <param name="rpcType"></param>
public static void DispatchRpc(MessageReader reader, CustomRPC rpcType)
public static void DispatchRpc(MessageReader reader)
{
var playerId = reader.ReadByte();
GetByPlayerId(playerId)?.ReceiveRPC(reader, rpcType);
GetByPlayerId(playerId)?.ReceiveRPC(reader);
}
//NameSystem
public static HashSet<Func<PlayerControl, PlayerControl, bool, string>> MarkOthers = new();
11 changes: 5 additions & 6 deletions Roles/Core/RoleBase.cs
Original file line number Diff line number Diff line change
@@ -86,9 +86,9 @@ public virtual void OnDestroy()
protected class RoleRPCSender : IDisposable
{
public MessageWriter Writer;
public RoleRPCSender(RoleBase role, CustomRPC rpcType)
public RoleRPCSender(RoleBase role)
{
Writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)rpcType, SendOption.Reliable, -1);
Writer = AmongUsClient.Instance.StartRpcImmediately(PlayerControl.LocalPlayer.NetId, (byte)CustomRPC.CustomRoleSync, SendOption.Reliable, -1);
Writer.Write(role.Player.PlayerId);
}
public void Dispose()
@@ -102,17 +102,16 @@ public void Dispose()
/// </summary>
/// <param name="rpcType">送信するCustomRPC</param>
/// <returns>送信に使用するRoleRPCSender</returns>
protected RoleRPCSender CreateSender(CustomRPC rpcType)
protected RoleRPCSender CreateSender()
{
return new RoleRPCSender(this, rpcType);
return new RoleRPCSender(this);
}
/// <summary>
/// RPCを受け取った時に呼ばれる関数
/// RoleRPCSenderで送信されたPlayerIdは削除されて渡されるため意識しなくてもよい。
/// </summary>
/// <param name="reader">届いたRPCの情報</param>
/// <param name="rpcType">届いたCustomRPC</param>
public virtual void ReceiveRPC(MessageReader reader, CustomRPC rpcType)
public virtual void ReceiveRPC(MessageReader reader)
{ }
/// <summary>
/// 能力ボタンを使えるかどうか
6 changes: 2 additions & 4 deletions Roles/Crewmate/Sheriff.cs
Original file line number Diff line number Diff line change
@@ -122,13 +122,11 @@ public override void Add()
}
private void SendRPC()
{
using var sender = CreateSender(CustomRPC.SetSheriffShotLimit);
using var sender = CreateSender();
sender.Writer.Write(ShotLimit);
}
public override void ReceiveRPC(MessageReader reader, CustomRPC rpcType)
public override void ReceiveRPC(MessageReader reader)
{
if (rpcType != CustomRPC.SetSheriffShotLimit) return;

ShotLimit = reader.ReadInt32();
}
public float CalculateKillCooldown() => CanUseKillButton() ? CurrentKillCooldown : 0f;
6 changes: 2 additions & 4 deletions Roles/Impostor/BountyHunter.cs
Original file line number Diff line number Diff line change
@@ -75,14 +75,12 @@ public override void Add()
}
private void SendRPC(byte targetId)
{
using var sender = CreateSender(CustomRPC.SetBountyTarget);
using var sender = CreateSender();
sender.Writer.Write(targetId);
}

public override void ReceiveRPC(MessageReader reader, CustomRPC rpcType)
public override void ReceiveRPC(MessageReader reader)
{
if (rpcType != CustomRPC.SetBountyTarget) return;

byte targetId = reader.ReadByte();

Target = Utils.GetPlayerById(targetId);
9 changes: 3 additions & 6 deletions Roles/Impostor/EvilHacker.cs
Original file line number Diff line number Diff line change
@@ -144,16 +144,13 @@ private void RpcCreateMurderNotify(SystemTypes room)
CreateMurderNotify(room);
if (AmongUsClient.Instance.AmHost)
{
using var sender = CreateSender(CustomRPC.EvilHackerCreateMurderNotify);
using var sender = CreateSender();
sender.Writer.Write((byte)room);
}
}
public override void ReceiveRPC(MessageReader reader, CustomRPC rpcType)
public override void ReceiveRPC(MessageReader reader)
{
if (rpcType == CustomRPC.EvilHackerCreateMurderNotify)
{
CreateMurderNotify((SystemTypes)reader.ReadByte());
}
CreateMurderNotify((SystemTypes)reader.ReadByte());
}
/// <summary>
/// 名前の下にキル発生通知を出す
10 changes: 4 additions & 6 deletions Roles/Impostor/EvilTracker.cs
Original file line number Diff line number Diff line change
@@ -122,10 +122,8 @@ public bool CheckKillFlash(MurderInfo info) // IKillFlashSeeable
}
public bool CanMakeSidekick() => CanCreateMadmate; // ISidekickable

public override void ReceiveRPC(MessageReader reader, CustomRPC rpcType)
public override void ReceiveRPC(MessageReader reader)
{
if (rpcType != CustomRPC.SetEvilTrackerTarget) return;

var operation = (TargetOperation)reader.ReadByte();

switch (operation)
@@ -141,7 +139,7 @@ private void ReEnableTargeting()
CanSetTarget = true;
if (AmongUsClient.Instance.AmHost)
{
using var sender = CreateSender(CustomRPC.SetEvilTrackerTarget);
using var sender = CreateSender();
sender.Writer.Write((byte)TargetOperation.ReEnableTargeting);
}
}
@@ -150,7 +148,7 @@ private void RemoveTarget()
TargetId = byte.MaxValue;
if (AmongUsClient.Instance.AmHost)
{
using var sender = CreateSender(CustomRPC.SetEvilTrackerTarget);
using var sender = CreateSender();
sender.Writer.Write((byte)TargetOperation.RemoveTarget);
}
}
@@ -164,7 +162,7 @@ private void SetTarget(byte targetId)
TargetArrow.Add(Player.PlayerId, targetId);
if (AmongUsClient.Instance.AmHost)
{
using var sender = CreateSender(CustomRPC.SetEvilTrackerTarget);
using var sender = CreateSender();
sender.Writer.Write((byte)TargetOperation.SetTarget);
sender.Writer.Write(targetId);
}
6 changes: 2 additions & 4 deletions Roles/Impostor/Mare.cs
Original file line number Diff line number Diff line change
@@ -83,13 +83,11 @@ private void ActivateKill(bool activate)
}
public void SendRPC()
{
using var sender = CreateSender(CustomRPC.MareSync);
using var sender = CreateSender();
sender.Writer.Write(IsActivateKill);
}
public override void ReceiveRPC(MessageReader reader, CustomRPC rpcType)
public override void ReceiveRPC(MessageReader reader)
{
if (rpcType != CustomRPC.MareSync) return;

IsActivateKill = reader.ReadBoolean();
}

6 changes: 2 additions & 4 deletions Roles/Impostor/Penguin.cs
Original file line number Diff line number Diff line change
@@ -63,15 +63,13 @@ public override void Add()
public override void ApplyGameOptions(IGameOptions opt) => AURoleOptions.ShapeshifterCooldown = AbductVictim != null ? AbductTimer : 255f;
private void SendRPC()
{
using var sender = CreateSender(CustomRPC.PenguinSync);
using var sender = CreateSender();

sender.Writer.Write(AbductVictim?.PlayerId ?? 255);
}

public override void ReceiveRPC(MessageReader reader, CustomRPC rpcType)
public override void ReceiveRPC(MessageReader reader)
{
if (rpcType != CustomRPC.PenguinSync) return;

var victim = reader.ReadByte();
if (victim == 255)
{
6 changes: 2 additions & 4 deletions Roles/Impostor/Puppeteer.cs
Original file line number Diff line number Diff line change
@@ -42,15 +42,13 @@ public override void OnDestroy()

private void SendRPC(byte targetId, byte typeId)
{
using var sender = CreateSender(CustomRPC.SyncPuppet);
using var sender = CreateSender();

sender.Writer.Write(typeId);
sender.Writer.Write(targetId);
}
public override void ReceiveRPC(MessageReader reader, CustomRPC rpcType)
public override void ReceiveRPC(MessageReader reader)
{
if (rpcType != CustomRPC.SyncPuppet) return;

var typeId = reader.ReadByte();
var targetId = reader.ReadByte();

5 changes: 2 additions & 3 deletions Roles/Impostor/Sniper.cs
Original file line number Diff line number Diff line change
@@ -91,7 +91,7 @@ public override void Add()
private void SendRPC()
{
Logger.Info($"{Player.GetNameWithRole()}:SendRPC", "Sniper");
using var sender = CreateSender(CustomRPC.SniperSync);
using var sender = CreateSender();

var snList = ShotNotify;
sender.Writer.Write(snList.Count);
@@ -101,9 +101,8 @@ private void SendRPC()
}
}

public override void ReceiveRPC(MessageReader reader, CustomRPC rpcType)
public override void ReceiveRPC(MessageReader reader)
{
if (rpcType != CustomRPC.SniperSync) return;
ShotNotify.Clear();
var count = reader.ReadInt32();
while (count > 0)
11 changes: 4 additions & 7 deletions Roles/Impostor/Stealth.cs
Original file line number Diff line number Diff line change
@@ -121,16 +121,13 @@ private void RpcDarken(SystemTypes? roomType)
{
logger.Info($"暗転させている部屋を{roomType?.ToString() ?? "null"}に設定");
darkenedRoom = roomType;
using var sender = CreateSender(CustomRPC.StealthDarken);
using var sender = CreateSender();
sender.Writer.Write((byte?)roomType ?? byte.MaxValue);
}
public override void ReceiveRPC(MessageReader reader, CustomRPC rpcType)
public override void ReceiveRPC(MessageReader reader)
{
if (rpcType == CustomRPC.StealthDarken)
{
var roomId = reader.ReadByte();
darkenedRoom = roomId == byte.MaxValue ? null : (SystemTypes)roomId;
}
var roomId = reader.ReadByte();
darkenedRoom = roomId == byte.MaxValue ? null : (SystemTypes)roomId;
}
/// <summary>発生している暗転効果を解除</summary>
private void ResetDarkenState()
6 changes: 2 additions & 4 deletions Roles/Impostor/Witch.cs
Original file line number Diff line number Diff line change
@@ -68,7 +68,7 @@ public override void Add()
}
private void SendRPC(bool doSpell, byte target = 255)
{
using var sender = CreateSender(CustomRPC.WitchSync);
using var sender = CreateSender();
sender.Writer.Write(doSpell);
if (doSpell)
{
@@ -80,10 +80,8 @@ private void SendRPC(bool doSpell, byte target = 255)
}
}

public override void ReceiveRPC(MessageReader reader, CustomRPC rpcType)
public override void ReceiveRPC(MessageReader reader)
{
if (rpcType != CustomRPC.WitchSync) return;

var doSpel = reader.ReadBoolean();
if (doSpel)
{
30 changes: 18 additions & 12 deletions Roles/Neutral/Arsonist.cs
Original file line number Diff line number Diff line change
@@ -86,24 +86,30 @@ public override void ApplyGameOptions(IGameOptions opt)
{
opt.SetVision(false);
}
public void SendRPC(CustomRPC rpcType, byte targetId = byte.MaxValue, bool isDoused = false)
enum RPC_type
{
using var sender = CreateSender(rpcType);
SetDousedPlayer,
SetCurrentDousingTarget
}
private void SendRPC(RPC_type rpcType, byte targetId = byte.MaxValue, bool isDoused = false)
{
using var sender = CreateSender();
sender.Writer.Write(targetId);

if (rpcType == CustomRPC.SetDousedPlayer)
sender.Writer.Write((byte)rpcType);
if (rpcType == RPC_type.SetDousedPlayer)
sender.Writer.Write(isDoused);
}
public override void ReceiveRPC(MessageReader reader, CustomRPC rpcType)
public override void ReceiveRPC(MessageReader reader)
{
var targetId = reader.ReadByte();
var rpcType = (RPC_type)reader.ReadByte();
switch (rpcType)
{
case CustomRPC.SetDousedPlayer:
case RPC_type.SetDousedPlayer:
bool doused = reader.ReadBoolean();
IsDoused[targetId] = doused;
break;
case CustomRPC.SetCurrentDousingTarget:
case RPC_type.SetCurrentDousingTarget:
TargetInfo = new(targetId, 0f);
break;
}
@@ -118,7 +124,7 @@ public void OnCheckMurderAsKiller(MurderInfo info)
{
TargetInfo = new(target.PlayerId, 0f);
Utils.NotifyRoles(SpecifySeer: killer);
SendRPC(CustomRPC.SetCurrentDousingTarget, target.PlayerId);
SendRPC(RPC_type.SetCurrentDousingTarget, target.PlayerId);
}
info.DoKill = false;
}
@@ -136,7 +142,7 @@ public override void OnFixedUpdate(PlayerControl player)
{
TargetInfo = null;
Utils.NotifyRoles(SpecifySeer: Player);
SendRPC(CustomRPC.SetCurrentDousingTarget);
SendRPC(RPC_type.SetCurrentDousingTarget);
}
else
{
@@ -151,9 +157,9 @@ public override void OnFixedUpdate(PlayerControl player)
Player.SetKillCooldown();
TargetInfo = null;//塗が完了したのでTupleから削除
IsDoused[ar_target.PlayerId] = true;//塗り完了
SendRPC(CustomRPC.SetDousedPlayer, ar_target.PlayerId, true);
SendRPC(RPC_type.SetDousedPlayer, ar_target.PlayerId, true);
Utils.NotifyRoles();//名前変更
SendRPC(CustomRPC.SetCurrentDousingTarget);
SendRPC(RPC_type.SetCurrentDousingTarget);
}
else
{
@@ -167,7 +173,7 @@ public override void OnFixedUpdate(PlayerControl player)
{
TargetInfo = null;
Utils.NotifyRoles(SpecifySeer: Player);
SendRPC(CustomRPC.SetCurrentDousingTarget);
SendRPC(RPC_type.SetCurrentDousingTarget);

Logger.Info($"Canceled: {Player.GetNameWithRole()}", "Arsonist");
}
4 changes: 2 additions & 2 deletions Roles/Neutral/Executioner.cs
Original file line number Diff line number Diff line change
@@ -104,10 +104,10 @@ public void SendRPC()
{
if (!AmongUsClient.Instance.AmHost) return;

using var sender = CreateSender(CustomRPC.SetExecutionerTarget);
using var sender = CreateSender();
sender.Writer.Write(TargetId);
}
public override void ReceiveRPC(MessageReader reader, CustomRPC rpcType)
public override void ReceiveRPC(MessageReader reader)
{
byte targetId = reader.ReadByte();
TargetId = targetId;
6 changes: 2 additions & 4 deletions Roles/Neutral/PlagueDoctor.cs
Original file line number Diff line number Diff line change
@@ -138,14 +138,12 @@ public static bool CanInfect(PlayerControl player)
}
public void SendRPC(byte targetId, float rate)
{
using var sender = CreateSender(CustomRPC.SyncPlagueDoctor);
using var sender = CreateSender();
sender.Writer.Write(targetId);
sender.Writer.Write(rate);
}
public override void ReceiveRPC(MessageReader reader, CustomRPC rpcType)
public override void ReceiveRPC(MessageReader reader)
{
if (rpcType != CustomRPC.SyncPlagueDoctor) return;

var targetId = reader.ReadByte();
var rate = reader.ReadSingle();
InfectInfos[targetId] = rate;
Loading