Skip to content

Commit 91f315c

Browse files
committed
2.1.0 sus69
1 parent 3733e5b commit 91f315c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+2468
-2127
lines changed

Gamemodes/BaseWarsGamemode.cs

Lines changed: 50 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -150,11 +150,11 @@ public override void OnSelectRolesPostfix()
150150
while (AllPlayers.Count > blueTeamSize)
151151
{
152152
var player = AllPlayers[rand.Next(0, AllPlayers.Count)];
153-
player.RpcSetBaseWarsTeam(BaseWarsTeams.Red);
153+
SendRPC(player, BaseWarsTeams.Red, IsDead[player.PlayerId], CanTeleport[player.PlayerId]);
154154
AllPlayers.Remove(player);
155155
}
156156
foreach (var player in AllPlayers)
157-
player.RpcSetBaseWarsTeam(BaseWarsTeams.Blue);
157+
SendRPC(player, BaseWarsTeams.Blue, IsDead[player.PlayerId], CanTeleport[player.PlayerId]);
158158
foreach (var pc in PlayerControl.AllPlayerControls)
159159
{
160160
if (GetTeam(pc) == BaseWarsTeams.Red)
@@ -212,7 +212,7 @@ public override void OnPet(PlayerControl pc)
212212
{
213213
SpawnPlayer(pc);
214214
TeleportCooldown[pc.PlayerId] = Options.TeleportCooldown.GetFloat();
215-
pc.RpcSetCanTeleport(false);
215+
SendRPC(pc, GetTeam(pc), IsDead[pc.PlayerId], false);
216216
}
217217
}
218218

@@ -265,7 +265,7 @@ public override bool OnCheckShapeshift(PlayerControl shapeshifter, PlayerControl
265265
return false;
266266
}
267267

268-
public override bool OnReportDeadBody(PlayerControl __instance, NetworkedPlayerInfo target)
268+
public override bool OnReportDeadBody(PlayerControl __instance, NetworkedPlayerInfo target, bool force)
269269
{
270270
return false;
271271
}
@@ -283,7 +283,7 @@ public override void OnFixedUpdate()
283283
if (RespawnCooldown[pc.PlayerId] <= 0f)
284284
{
285285
RespawnCooldown[pc.PlayerId] = 0f;
286-
pc.RpcSetIsDead(false);
286+
SendRPC(pc, GetTeam(pc), false, CanTeleport[pc.PlayerId]);
287287
PlayerHealth[pc.PlayerId] = Options.StartingHealth.GetFloat() + (Options.HealthIncrease.GetFloat() * GetLevel(pc));
288288
SpawnPlayer(pc);
289289
pc.SyncPlayerSettings();
@@ -301,7 +301,7 @@ public override void OnFixedUpdate()
301301
{
302302
TeleportCooldown[pc.PlayerId] = 0f;
303303
if (!CanTeleport[pc.PlayerId])
304-
pc.RpcSetCanTeleport(true);
304+
SendRPC(pc, GetTeam(pc), IsDead[pc.PlayerId], true);
305305
}
306306
}
307307
if (Options.TurretSlowEnemies.GetBool())
@@ -411,6 +411,49 @@ public override string BuildPlayerName(PlayerControl player, PlayerControl seer,
411411
return name;
412412
}
413413

414+
public void SendRPC(PlayerControl player, BaseWarsTeams team, bool isDead, bool canTeleport)
415+
{
416+
if (PlayerTeam[player.PlayerId] == team && IsDead[player.PlayerId] == isDead && (!Options.CanTeleportToBase.GetBool() || CanTeleport[player.PlayerId] == canTeleport)) return;
417+
PlayerTeam[player.PlayerId] = team;
418+
IsDead[player.PlayerId] = isDead;
419+
if (Options.CanTeleportToBase.GetBool())
420+
CanTeleport[player.PlayerId] = canTeleport;
421+
if (player.AmOwner)
422+
HudManager.Instance.TaskPanel.SetTaskText("");
423+
MessageWriter writer = AmongUsClient.Instance.StartRpc(player.NetId, (byte)CustomRPC.SyncGamemode, SendOption.Reliable);
424+
writer.Write((int)team);
425+
writer.Write(isDead);
426+
if (Options.CanTeleportToBase.GetBool())
427+
writer.Write(canTeleport);
428+
writer.EndMessage();
429+
}
430+
431+
public override void ReceiveRPC(PlayerControl player, MessageReader reader)
432+
{
433+
PlayerTeam[player.PlayerId] = (BaseWarsTeams)reader.ReadInt32();
434+
IsDead[player.PlayerId] = reader.ReadBoolean();
435+
if (Options.CanTeleportToBase.GetBool())
436+
CanTeleport[player.PlayerId] = reader.ReadBoolean();
437+
if (player.AmOwner)
438+
HudManager.Instance.TaskPanel.SetTaskText("");
439+
}
440+
441+
public void SendRPC(GameManager manager, SystemTypes room)
442+
{
443+
if (!AllTurretsPosition.Contains(room)) return;
444+
AllTurretsPosition.Remove(room);
445+
MessageWriter writer = AmongUsClient.Instance.StartRpc(manager.NetId, (byte)CustomRPC.SyncGamemode, SendOption.Reliable);
446+
writer.Write((byte)room);
447+
writer.EndMessage();
448+
}
449+
450+
public override void ReceiveRPC(GameManager manager, MessageReader reader)
451+
{
452+
SystemTypes room = (SystemTypes)reader.ReadByte();
453+
if (AllTurretsPosition.Contains(room))
454+
AllTurretsPosition.Remove(room);
455+
}
456+
414457
public BaseWarsTeams GetTeam(PlayerControl player)
415458
{
416459
if (player == null) return BaseWarsTeams.None;
@@ -440,7 +483,7 @@ public void Damage(PlayerControl player, float damage, PlayerControl attacker)
440483
{
441484
PlayerHealth[player.PlayerId] = 0f;
442485
player.RpcTeleport(Utils.GetOutsideMapPosition());
443-
player.RpcSetIsDead(true);
486+
SendRPC(player, GetTeam(player), true, CanTeleport[player.PlayerId]);
444487
RespawnCooldown[player.PlayerId] = Options.BwRespawnCooldown.GetFloat();
445488
player.SyncPlayerSettings();
446489
if (attacker != null)

Gamemodes/BattleRoyaleGamemode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ public override bool OnCheckMurder(PlayerControl killer, PlayerControl target)
8686
}
8787
}
8888

89-
public override bool OnReportDeadBody(PlayerControl __instance, NetworkedPlayerInfo target)
89+
public override bool OnReportDeadBody(PlayerControl __instance, NetworkedPlayerInfo target, bool force)
9090
{
9191
return false;
9292
}

Gamemodes/BombTagGamemode.cs

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ public override void OnSelectRolesPostfix()
122122
for (int i = 0; i < bombs; ++i)
123123
{
124124
var player = AllPlayers[rand.Next(0, AllPlayers.Count)];
125-
player.RpcSetBomb(true);
125+
SendRPC(player, true);
126126
AllPlayers.Remove(player);
127127
}
128128
foreach (var pc in PlayerControl.AllPlayerControls)
@@ -152,8 +152,8 @@ public override bool OnCheckMurder(PlayerControl killer, PlayerControl target)
152152
{
153153
if (HasBomb(killer) && !HasBomb(target))
154154
{
155-
killer.RpcSetBomb(false);
156-
target.RpcSetBomb(true);
155+
SendRPC(killer, false);
156+
SendRPC(target, true);
157157
killer.RpcSetColor(2);
158158
foreach (var pc in PlayerControl.AllPlayerControls)
159159
Main.NameColors[(killer.PlayerId, pc.PlayerId)] = Color.green;
@@ -171,7 +171,7 @@ public override bool OnCheckShapeshift(PlayerControl shapeshifter, PlayerControl
171171
return false;
172172
}
173173

174-
public override bool OnReportDeadBody(PlayerControl __instance, NetworkedPlayerInfo target)
174+
public override bool OnReportDeadBody(PlayerControl __instance, NetworkedPlayerInfo target, bool force)
175175
{
176176
return false;
177177
}
@@ -216,7 +216,7 @@ public override void OnFixedUpdate()
216216
for (int i = 0; i < bombs; ++i)
217217
{
218218
var player = AllPlayers[rand.Next(0, AllPlayers.Count)];
219-
player.RpcSetBomb(true);
219+
SendRPC(player, true);
220220
player.RpcSetColor(6);
221221
foreach (var pc in PlayerControl.AllPlayerControls)
222222
Main.NameColors[(player.PlayerId, pc.PlayerId)] = Color.black;
@@ -277,6 +277,24 @@ public override string BuildPlayerName(PlayerControl player, PlayerControl seer,
277277
return name;
278278
}
279279

280+
public void SendRPC(PlayerControl player, bool hasBomb)
281+
{
282+
if (PlayerHasBomb[player.PlayerId] == hasBomb) return;
283+
PlayerHasBomb[player.PlayerId] = hasBomb;
284+
if (player.AmOwner)
285+
HudManager.Instance.TaskPanel.SetTaskText("");
286+
MessageWriter writer = AmongUsClient.Instance.StartRpc(player.NetId, (byte)CustomRPC.SyncGamemode, SendOption.Reliable);
287+
writer.Write(hasBomb);
288+
writer.EndMessage();
289+
}
290+
291+
public override void ReceiveRPC(PlayerControl player, MessageReader reader)
292+
{
293+
PlayerHasBomb[player.PlayerId] = reader.ReadBoolean();
294+
if (player.AmOwner)
295+
HudManager.Instance.TaskPanel.SetTaskText("");
296+
}
297+
280298
public bool HasBomb(PlayerControl player)
281299
{
282300
if (player == null) return false;

Gamemodes/ClassicGamemode.cs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -688,20 +688,24 @@ public override void OnShapeshift(PlayerControl shapeshifter, PlayerControl targ
688688
addOn.OnShapeshift(target);
689689
}
690690

691-
public override bool OnReportDeadBody(PlayerControl __instance, NetworkedPlayerInfo target)
691+
public override bool OnReportDeadBody(PlayerControl __instance, NetworkedPlayerInfo target, bool force)
692692
{
693-
if (RoleblockTimer[__instance.PlayerId] > 0f)
693+
if (!force && RoleblockTimer[__instance.PlayerId] > 0f)
694694
{
695695
return false;
696696
}
697-
if (!Trapster.OnGlobalReportDeadBody(__instance, target)) return false;
698-
bool report = __instance.GetRole().OnReportDeadBody(target);
699-
if (report)
697+
if (!force && !Trapster.OnGlobalReportDeadBody(__instance, target)) return false;
698+
bool report = true;
699+
if (!force)
700700
{
701-
foreach (var addOn in __instance.GetAddOns())
701+
report = __instance.GetRole().OnReportDeadBody(target);
702+
if (report)
702703
{
703-
if (!addOn.OnReportDeadBody(target))
704-
report = false;
704+
foreach (var addOn in __instance.GetAddOns())
705+
{
706+
if (!addOn.OnReportDeadBody(target))
707+
report = false;
708+
}
705709
}
706710
}
707711
if (report)

Gamemodes/ColorWarsGamemode.cs

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public override void OnSelectRolesPostfix()
124124
while (AllPlayers.Any() && leaders < Options.LeadersAmount.GetInt())
125125
{
126126
var player = AllPlayers[rand.Next(0, AllPlayers.Count)];
127-
player.RpcSetColorWarsTeam(leaders, true);
127+
SendRPC(player, leaders, true, IsDead[player.PlayerId]);
128128
player.RpcSetColor(leaders);
129129
foreach (var pc in PlayerControl.AllPlayerControls)
130130
Main.NameColors[(player.PlayerId, pc.PlayerId)] = Palette.PlayerColors[leaders];
@@ -152,7 +152,7 @@ public override bool OnCheckMurder(PlayerControl killer, PlayerControl target)
152152
return false;
153153
if (GetTeam(target) == byte.MaxValue)
154154
{
155-
target.RpcSetColorWarsTeam(GetTeam(killer), false);
155+
SendRPC(target, GetTeam(killer), false, IsDead[target.PlayerId]);
156156
target.RpcSetColor(GetTeam(killer));
157157
foreach (var pc in PlayerControl.AllPlayerControls)
158158
Main.NameColors[(target.PlayerId, pc.PlayerId)] = Palette.PlayerColors[GetTeam(killer)];
@@ -171,7 +171,7 @@ public override bool OnCheckMurder(PlayerControl killer, PlayerControl target)
171171
{
172172
if (IsDead[pc.PlayerId])
173173
{
174-
pc.RpcSetIsDead(false);
174+
SendRPC(pc, GetTeam(pc), IsLeader(pc), false);
175175
pc.RpcTeleport(PositionBeforeDeath[pc.PlayerId]);
176176
}
177177
pc.RpcSetDeathReason(DeathReasons.Suicide);
@@ -188,7 +188,7 @@ public override bool OnCheckMurder(PlayerControl killer, PlayerControl target)
188188
{
189189
PositionBeforeDeath[target.PlayerId] = target.transform.position;
190190
target.RpcTeleport(Utils.GetOutsideMapPosition());
191-
target.RpcSetIsDead(true);
191+
SendRPC(target, GetTeam(target), IsLeader(target), true);
192192
RespawnCooldown[target.PlayerId] = Options.CwRespawnCooldown.GetFloat();
193193
target.SyncPlayerSettings();
194194
++Main.PlayerKills[killer.PlayerId];
@@ -198,7 +198,7 @@ public override bool OnCheckMurder(PlayerControl killer, PlayerControl target)
198198
return true;
199199
}
200200

201-
public override bool OnReportDeadBody(PlayerControl __instance, NetworkedPlayerInfo target)
201+
public override bool OnReportDeadBody(PlayerControl __instance, NetworkedPlayerInfo target, bool force)
202202
{
203203
return false;
204204
}
@@ -216,7 +216,7 @@ public override void OnFixedUpdate()
216216
if (RespawnCooldown[pc.PlayerId] <= 0f)
217217
{
218218
RespawnCooldown[pc.PlayerId] = 0f;
219-
pc.RpcSetIsDead(false);
219+
SendRPC(pc, GetTeam(pc), IsLeader(pc), false);
220220
pc.RpcTeleport(PositionBeforeDeath[pc.PlayerId]);
221221
pc.SyncPlayerSettings();
222222
}
@@ -248,7 +248,7 @@ public override void OnDisconnect(PlayerControl player)
248248
{
249249
if (pc != player && GetTeam(pc) == GetTeam(player))
250250
{
251-
pc.RpcSetColorWarsTeam(byte.MaxValue, false);
251+
SendRPC(pc, byte.MaxValue, false, IsDead[pc.PlayerId]);
252252
pc.RpcSetColor(15);
253253
foreach (var ar in PlayerControl.AllPlayerControls)
254254
Main.NameColors[(pc.PlayerId, ar.PlayerId)] = Color.gray;
@@ -308,6 +308,30 @@ public override string BuildPlayerName(PlayerControl player, PlayerControl seer,
308308
return name;
309309
}
310310

311+
public void SendRPC(PlayerControl player, byte team, bool isLeader, bool isDead)
312+
{
313+
if (Team[player.PlayerId] == team && PlayerIsLeader[player.PlayerId] == isLeader && IsDead[player.PlayerId] == isDead) return;
314+
Team[player.PlayerId] = team;
315+
PlayerIsLeader[player.PlayerId] = isLeader;
316+
IsDead[player.PlayerId] = isDead;
317+
if (player.AmOwner)
318+
HudManager.Instance.TaskPanel.SetTaskText("");
319+
MessageWriter writer = AmongUsClient.Instance.StartRpc(player.NetId, (byte)CustomRPC.SyncGamemode, SendOption.Reliable);
320+
writer.Write(team);
321+
writer.Write(isLeader);
322+
writer.Write(isDead);
323+
writer.EndMessage();
324+
}
325+
326+
public override void ReceiveRPC(PlayerControl player, MessageReader reader)
327+
{
328+
Team[player.PlayerId] = reader.ReadByte();
329+
PlayerIsLeader[player.PlayerId] = reader.ReadBoolean();
330+
IsDead[player.PlayerId] = reader.ReadBoolean();
331+
if (player.AmOwner)
332+
HudManager.Instance.TaskPanel.SetTaskText("");
333+
}
334+
311335
public byte GetTeam(PlayerControl player)
312336
{
313337
if (player == null) return byte.MaxValue;

Gamemodes/CustomGamemode.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ public virtual void OnShapeshift(PlayerControl shapeshifter, PlayerControl targe
157157

158158
}
159159

160-
public virtual bool OnReportDeadBody(PlayerControl __instance, NetworkedPlayerInfo target)
160+
public virtual bool OnReportDeadBody(PlayerControl __instance, NetworkedPlayerInfo target, bool force)
161161
{
162162
return true;
163163
}
@@ -237,6 +237,16 @@ public virtual string BuildPlayerName(PlayerControl player, PlayerControl seer,
237237
return name;
238238
}
239239

240+
public virtual void ReceiveRPC(PlayerControl player, MessageReader reader)
241+
{
242+
243+
}
244+
245+
public virtual void ReceiveRPC(GameManager manager, MessageReader reader)
246+
{
247+
248+
}
249+
240250
public static CustomGamemode Instance;
241251
public Gamemodes Gamemode;
242252
public bool PetAction;

Gamemodes/DeathrunGamemode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public override void OnIntroDestroy()
6969
}, 2f);
7070
}
7171

72-
public override bool OnReportDeadBody(PlayerControl __instance, NetworkedPlayerInfo target)
72+
public override bool OnReportDeadBody(PlayerControl __instance, NetworkedPlayerInfo target, bool force)
7373
{
7474
return !Options.DisableMeetings.GetBool();
7575
}

Gamemodes/FreezeTagGamemode.cs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ public override bool OnCheckMurder(PlayerControl killer, PlayerControl target)
166166
{
167167
if (Main.Timer < Options.FtImpostorsBlindTime.GetFloat() && !Options.ImpostorsCanFreezeDuringBlind.GetBool()) return false;
168168
if (IsFrozen(target)) return false;
169-
target.RpcSetFrozen(true);
169+
SendRPC(target, true);
170170
target.RpcSetColor(10);
171171
foreach (var pc in PlayerControl.AllPlayerControls)
172172
Main.NameColors[(target.PlayerId, pc.PlayerId)] = Color.cyan;
@@ -197,7 +197,7 @@ public override void OnShapeshift(PlayerControl shapeshifter, PlayerControl targ
197197
}
198198
}
199199

200-
public override bool OnReportDeadBody(PlayerControl __instance, NetworkedPlayerInfo target)
200+
public override bool OnReportDeadBody(PlayerControl __instance, NetworkedPlayerInfo target, bool force)
201201
{
202202
return false;
203203
}
@@ -239,7 +239,7 @@ public override void OnFixedUpdate()
239239
if (UnfreezeTimer[pc.PlayerId] >= Options.UnfreezeDuration.GetFloat())
240240
{
241241
UnfreezeTimer[pc.PlayerId] = 0f;
242-
pc.RpcSetFrozen(false);
242+
SendRPC(pc, false);
243243
pc.RpcSetColor(11);
244244
foreach (var ar in PlayerControl.AllPlayerControls)
245245
Main.NameColors[(pc.PlayerId, ar.PlayerId)] = Color.green;
@@ -332,6 +332,20 @@ public override string BuildPlayerName(PlayerControl player, PlayerControl seer,
332332
return name;
333333
}
334334

335+
public void SendRPC(PlayerControl player, bool frozen)
336+
{
337+
if (PlayerIsFrozen[player.PlayerId] == frozen) return;
338+
PlayerIsFrozen[player.PlayerId] = frozen;
339+
MessageWriter writer = AmongUsClient.Instance.StartRpc(player.NetId, (byte)CustomRPC.SyncGamemode, SendOption.Reliable);
340+
writer.Write(frozen);
341+
writer.EndMessage();
342+
}
343+
344+
public override void ReceiveRPC(PlayerControl player, MessageReader reader)
345+
{
346+
PlayerIsFrozen[player.PlayerId] = reader.ReadBoolean();
347+
}
348+
335349
public bool IsFrozen(PlayerControl player)
336350
{
337351
if (player == null) return false;

Gamemodes/HideAndSeekGamemode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ public override bool OnCheckMurder(PlayerControl killer, PlayerControl target)
159159
return true;
160160
}
161161

162-
public override bool OnReportDeadBody(PlayerControl __instance, NetworkedPlayerInfo target)
162+
public override bool OnReportDeadBody(PlayerControl __instance, NetworkedPlayerInfo target, bool force)
163163
{
164164
return false;
165165
}

0 commit comments

Comments
 (0)