Skip to content

Commit 4f393c0

Browse files
committed
v5.1.0 Source Code
1 parent 768fcb1 commit 4f393c0

File tree

302 files changed

+6245
-5058
lines changed

Some content is hidden

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

302 files changed

+6245
-5058
lines changed

Images/Roles.png

1.17 MB
Loading

NuGet.Config

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<packageSources>
55
<add key="BepInEx" value="https://nuget.bepinex.dev/v3/index.json" />
66
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
7-
<add key="Samboy" value="https://nuget.samboy.dev/v3/index.json" />
7+
<add key="Reactor" value="https://nuget.reactor.gg/v3/index.json" />
8+
<add key="Samboy063" value="https://nuget.samboy.dev/v3/index.json" />
89
</packageSources>
910
</configuration>

README.md

Lines changed: 176 additions & 121 deletions
Large diffs are not rendered by default.

TownOfUs.sln

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio Version 16
4-
VisualStudioVersion = 16.0.31424.327
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.10.35122.118
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TownOfUs", "source\TownOfUs.csproj", "{7B91EF68-B9BB-4138-9DEF-79C91FA554D6}"
77
EndProject
@@ -20,6 +20,6 @@ Global
2020
HideSolutionNode = FALSE
2121
EndGlobalSection
2222
GlobalSection(ExtensibilityGlobals) = postSolution
23-
SolutionGuid = {F2C2A857-F42E-4331-B220-4439B2FCA645}
23+
SolutionGuid = {F2C2A857-F42E-4331-B220-4439B2FCA645}
2424
EndGlobalSection
2525
EndGlobal

source/Extensions/AmongUsExtensions.cs

Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -26,24 +26,6 @@ public static KeyValuePair<byte, int> MaxPair(this Dictionary<byte, int> self, o
2626
return result;
2727
}
2828

29-
public static KeyValuePair<byte, int> MaxPair(this byte[] self, out bool tie)
30-
{
31-
tie = true;
32-
var result = new KeyValuePair<byte, int>(byte.MaxValue, int.MinValue);
33-
for (byte i = 0; i < self.Length; i++)
34-
if (self[i] > result.Value)
35-
{
36-
result = new KeyValuePair<byte, int>(i, self[i]);
37-
tie = false;
38-
}
39-
else if (self[i] == result.Value)
40-
{
41-
tie = true;
42-
}
43-
44-
return result;
45-
}
46-
4729
public static VisualAppearance GetDefaultAppearance(this PlayerControl player)
4830
{
4931
return new VisualAppearance();
@@ -67,23 +49,17 @@ public static VisualAppearance GetAppearance(this PlayerControl player)
6749
else
6850
return player.GetDefaultAppearance();
6951
}
70-
public static bool IsImpostor(this GameData.PlayerInfo playerinfo)
52+
public static bool IsImpostor(this NetworkedPlayerInfo playerinfo)
7153
{
7254
return playerinfo?.Role?.TeamType == RoleTeamTypes.Impostor;
7355
}
7456

75-
public static void SetImpostor(this GameData.PlayerInfo playerinfo, bool impostor)
76-
{
77-
if (playerinfo.Role != null)
78-
playerinfo.Role.TeamType = impostor ? RoleTeamTypes.Impostor : RoleTeamTypes.Crewmate;
79-
}
80-
81-
public static GameData.PlayerOutfit GetDefaultOutfit(this PlayerControl playerControl)
57+
public static NetworkedPlayerInfo.PlayerOutfit GetDefaultOutfit(this PlayerControl playerControl)
8258
{
8359
return playerControl.Data.DefaultOutfit;
8460
}
8561

86-
public static void SetOutfit(this PlayerControl playerControl, CustomPlayerOutfitType CustomOutfitType, GameData.PlayerOutfit outfit)
62+
public static void SetOutfit(this PlayerControl playerControl, CustomPlayerOutfitType CustomOutfitType, NetworkedPlayerInfo.PlayerOutfit outfit)
8763
{
8864
playerControl.Data.SetOutfit((PlayerOutfitType)CustomOutfitType, outfit);
8965
playerControl.SetOutfit(CustomOutfitType);

source/Extensions/CustomPlayerOutfitType.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ public enum CustomPlayerOutfitType
77
Morph,
88
Camouflage,
99
Swooper,
10-
Aurial,
1110
PlayerNameOnly
1211

1312
}

source/Patches/AmongUsClient_OnGameEnd.cs

Lines changed: 72 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@
77

88
namespace TownOfUs
99
{
10-
[HarmonyPatch(typeof(EndGameManager), nameof(EndGameManager.Start))]
11-
public class EndGameManager_SetEverythingUp
10+
[HarmonyPatch(typeof(AmongUsClient), nameof(AmongUsClient.OnGameEnd))]
11+
public class AmongUsClientGameEnd
1212
{
13-
public static void Prefix()
13+
public static void Postfix()
1414
{
1515
List<int> losers = new List<int>();
1616
foreach (var role in Role.GetRoles(RoleEnum.Amnesiac))
@@ -48,6 +48,11 @@ public static void Prefix()
4848
var phan = (Phantom)role;
4949
losers.Add(phan.Player.GetDefaultOutfit().ColorId);
5050
}
51+
foreach (var role in Role.GetRoles(RoleEnum.SoulCollector))
52+
{
53+
var sc = (SoulCollector)role;
54+
losers.Add(sc.Player.GetDefaultOutfit().ColorId);
55+
}
5156
foreach (var role in Role.GetRoles(RoleEnum.Arsonist))
5257
{
5358
var arso = (Arsonist)role;
@@ -84,25 +89,25 @@ public static void Prefix()
8489
losers.Add(ww.Player.GetDefaultOutfit().ColorId);
8590
}
8691

87-
var toRemoveWinners = TempData.winners.ToArray().Where(o => losers.Contains(o.ColorId)).ToArray();
88-
for (int i = 0; i < toRemoveWinners.Count(); i++) TempData.winners.Remove(toRemoveWinners[i]);
92+
var toRemoveWinners = EndGameResult.CachedWinners.ToArray().Where(o => losers.Contains(o.ColorId)).ToArray();
93+
for (int i = 0; i < toRemoveWinners.Count(); i++) EndGameResult.CachedWinners.Remove(toRemoveWinners[i]);
8994

9095
if (Role.NobodyWins)
9196
{
92-
TempData.winners = new List<WinningPlayerData>();
97+
EndGameResult.CachedWinners = new List<CachedPlayerData>();
9398
return;
9499
}
95100
if (Role.SurvOnlyWins)
96101
{
97-
TempData.winners = new List<WinningPlayerData>();
102+
EndGameResult.CachedWinners = new List<CachedPlayerData>();
98103
foreach (var role in Role.GetRoles(RoleEnum.Survivor))
99104
{
100105
var surv = (Survivor)role;
101106
if (!surv.Player.Data.IsDead && !surv.Player.Data.Disconnected)
102107
{
103-
var survData = new WinningPlayerData(surv.Player.Data);
108+
var survData = new CachedPlayerData(surv.Player.Data);
104109
if (PlayerControl.LocalPlayer != surv.Player) survData.IsYou = false;
105-
TempData.winners.Add(new WinningPlayerData(surv.Player.Data));
110+
EndGameResult.CachedWinners.Add(survData);
106111
}
107112
}
108113

@@ -120,11 +125,11 @@ public static void Prefix()
120125
var jester = (Jester)role;
121126
if (jester.VotedOut)
122127
{
123-
TempData.winners = new List<WinningPlayerData>();
124-
var jestData = new WinningPlayerData(jester.Player.Data);
128+
EndGameResult.CachedWinners = new List<CachedPlayerData>();
129+
var jestData = new CachedPlayerData(jester.Player.Data);
125130
jestData.IsDead = false;
126131
if (PlayerControl.LocalPlayer != jester.Player) jestData.IsYou = false;
127-
TempData.winners.Add(jestData);
132+
EndGameResult.CachedWinners.Add(jestData);
128133
return;
129134
}
130135
}
@@ -133,10 +138,10 @@ public static void Prefix()
133138
var executioner = (Executioner)role;
134139
if (executioner.TargetVotedOut)
135140
{
136-
TempData.winners = new List<WinningPlayerData>();
137-
var exeData = new WinningPlayerData(executioner.Player.Data);
141+
EndGameResult.CachedWinners = new List<CachedPlayerData>();
142+
var exeData = new CachedPlayerData(executioner.Player.Data);
138143
if (PlayerControl.LocalPlayer != executioner.Player) exeData.IsYou = false;
139-
TempData.winners.Add(exeData);
144+
EndGameResult.CachedWinners.Add(exeData);
140145
return;
141146
}
142147
}
@@ -145,10 +150,22 @@ public static void Prefix()
145150
var doom = (Doomsayer)role;
146151
if (doom.WonByGuessing)
147152
{
148-
TempData.winners = new List<WinningPlayerData>();
149-
var doomData = new WinningPlayerData(doom.Player.Data);
153+
EndGameResult.CachedWinners = new List<CachedPlayerData>();
154+
var doomData = new CachedPlayerData(doom.Player.Data);
150155
if (PlayerControl.LocalPlayer != doom.Player) doomData.IsYou = false;
151-
TempData.winners.Add(doomData);
156+
EndGameResult.CachedWinners.Add(doomData);
157+
return;
158+
}
159+
}
160+
else if (type == RoleEnum.SoulCollector)
161+
{
162+
var sc = (SoulCollector)role;
163+
if (sc.CollectedSouls)
164+
{
165+
EndGameResult.CachedWinners = new List<CachedPlayerData>();
166+
var scData = new CachedPlayerData(sc.Player.Data);
167+
if (PlayerControl.LocalPlayer != sc.Player) scData.IsYou = false;
168+
EndGameResult.CachedWinners.Add(scData);
152169
return;
153170
}
154171
}
@@ -157,10 +174,10 @@ public static void Prefix()
157174
var phantom = (Phantom)role;
158175
if (phantom.CompletedTasks)
159176
{
160-
TempData.winners = new List<WinningPlayerData>();
161-
var phantomData = new WinningPlayerData(phantom.Player.Data);
177+
EndGameResult.CachedWinners = new List<CachedPlayerData>();
178+
var phantomData = new CachedPlayerData(phantom.Player.Data);
162179
if (PlayerControl.LocalPlayer != phantom.Player) phantomData.IsYou = false;
163-
TempData.winners.Add(phantomData);
180+
EndGameResult.CachedWinners.Add(phantomData);
164181
return;
165182
}
166183
}
@@ -177,27 +194,27 @@ public static void Prefix()
177194
if (lover.LoveCoupleWins)
178195
{
179196
var otherLover = lover.OtherLover;
180-
TempData.winners = new List<WinningPlayerData>();
181-
var loverOneData = new WinningPlayerData(lover.Player.Data);
182-
var loverTwoData = new WinningPlayerData(otherLover.Player.Data);
197+
EndGameResult.CachedWinners = new List<CachedPlayerData>();
198+
var loverOneData = new CachedPlayerData(lover.Player.Data);
199+
var loverTwoData = new CachedPlayerData(otherLover.Player.Data);
183200
if (PlayerControl.LocalPlayer != lover.Player) loverOneData.IsYou = false;
184201
if (PlayerControl.LocalPlayer != otherLover.Player) loverTwoData.IsYou = false;
185-
TempData.winners.Add(loverOneData);
186-
TempData.winners.Add(loverTwoData);
202+
EndGameResult.CachedWinners.Add(loverOneData);
203+
EndGameResult.CachedWinners.Add(loverTwoData);
187204
return;
188205
}
189206
}
190207
}
191208

192209
if (Role.VampireWins)
193210
{
194-
TempData.winners = new List<WinningPlayerData>();
211+
EndGameResult.CachedWinners = new List<CachedPlayerData>();
195212
foreach (var role in Role.GetRoles(RoleEnum.Vampire))
196213
{
197214
var vamp = (Vampire)role;
198-
var vampData = new WinningPlayerData(vamp.Player.Data);
215+
var vampData = new CachedPlayerData(vamp.Player.Data);
199216
if (PlayerControl.LocalPlayer != vamp.Player) vampData.IsYou = false;
200-
TempData.winners.Add(vampData);
217+
EndGameResult.CachedWinners.Add(vampData);
201218
}
202219
}
203220

@@ -210,65 +227,65 @@ public static void Prefix()
210227
var glitch = (Glitch)role;
211228
if (glitch.GlitchWins)
212229
{
213-
TempData.winners = new List<WinningPlayerData>();
214-
var glitchData = new WinningPlayerData(glitch.Player.Data);
230+
EndGameResult.CachedWinners = new List<CachedPlayerData>();
231+
var glitchData = new CachedPlayerData(glitch.Player.Data);
215232
if (PlayerControl.LocalPlayer != glitch.Player) glitchData.IsYou = false;
216-
TempData.winners.Add(glitchData);
233+
EndGameResult.CachedWinners.Add(glitchData);
217234
}
218235
}
219236
else if (type == RoleEnum.Juggernaut)
220237
{
221238
var juggernaut = (Juggernaut)role;
222239
if (juggernaut.JuggernautWins)
223240
{
224-
TempData.winners = new List<WinningPlayerData>();
225-
var juggData = new WinningPlayerData(juggernaut.Player.Data);
241+
EndGameResult.CachedWinners = new List<CachedPlayerData>();
242+
var juggData = new CachedPlayerData(juggernaut.Player.Data);
226243
if (PlayerControl.LocalPlayer != juggernaut.Player) juggData.IsYou = false;
227-
TempData.winners.Add(juggData);
244+
EndGameResult.CachedWinners.Add(juggData);
228245
}
229246
}
230247
else if (type == RoleEnum.Arsonist)
231248
{
232249
var arsonist = (Arsonist)role;
233250
if (arsonist.ArsonistWins)
234251
{
235-
TempData.winners = new List<WinningPlayerData>();
236-
var arsonistData = new WinningPlayerData(arsonist.Player.Data);
252+
EndGameResult.CachedWinners = new List<CachedPlayerData>();
253+
var arsonistData = new CachedPlayerData(arsonist.Player.Data);
237254
if (PlayerControl.LocalPlayer != arsonist.Player) arsonistData.IsYou = false;
238-
TempData.winners.Add(arsonistData);
255+
EndGameResult.CachedWinners.Add(arsonistData);
239256
}
240257
}
241258
else if (type == RoleEnum.Plaguebearer)
242259
{
243260
var plaguebearer = (Plaguebearer)role;
244261
if (plaguebearer.PlaguebearerWins)
245262
{
246-
TempData.winners = new List<WinningPlayerData>();
247-
var pbData = new WinningPlayerData(plaguebearer.Player.Data);
263+
EndGameResult.CachedWinners = new List<CachedPlayerData>();
264+
var pbData = new CachedPlayerData(plaguebearer.Player.Data);
248265
if (PlayerControl.LocalPlayer != plaguebearer.Player) pbData.IsYou = false;
249-
TempData.winners.Add(pbData);
266+
EndGameResult.CachedWinners.Add(pbData);
250267
}
251268
}
252269
else if (type == RoleEnum.Pestilence)
253270
{
254271
var pestilence = (Pestilence)role;
255272
if (pestilence.PestilenceWins)
256273
{
257-
TempData.winners = new List<WinningPlayerData>();
258-
var pestilenceData = new WinningPlayerData(pestilence.Player.Data);
274+
EndGameResult.CachedWinners = new List<CachedPlayerData>();
275+
var pestilenceData = new CachedPlayerData(pestilence.Player.Data);
259276
if (PlayerControl.LocalPlayer != pestilence.Player) pestilenceData.IsYou = false;
260-
TempData.winners.Add(pestilenceData);
277+
EndGameResult.CachedWinners.Add(pestilenceData);
261278
}
262279
}
263280
else if (type == RoleEnum.Werewolf)
264281
{
265282
var werewolf = (Werewolf)role;
266283
if (werewolf.WerewolfWins)
267284
{
268-
TempData.winners = new List<WinningPlayerData>();
269-
var werewolfData = new WinningPlayerData(werewolf.Player.Data);
285+
EndGameResult.CachedWinners = new List<CachedPlayerData>();
286+
var werewolfData = new CachedPlayerData(werewolf.Player.Data);
270287
if (PlayerControl.LocalPlayer != werewolf.Player) werewolfData.IsYou = false;
271-
TempData.winners.Add(werewolfData);
288+
EndGameResult.CachedWinners.Add(werewolfData);
272289
}
273290
}
274291
}
@@ -278,26 +295,26 @@ public static void Prefix()
278295
var surv = (Survivor)role;
279296
if (!surv.Player.Data.IsDead && !surv.Player.Data.Disconnected)
280297
{
281-
var isImp = TempData.winners.Count != 0 && TempData.winners[0].IsImpostor;
282-
var survWinData = new WinningPlayerData(surv.Player.Data);
298+
var isImp = EndGameResult.CachedWinners.Count != 0 && EndGameResult.CachedWinners[0].IsImpostor;
299+
var survWinData = new CachedPlayerData(surv.Player.Data);
283300
if (isImp) survWinData.IsImpostor = true;
284301
if (PlayerControl.LocalPlayer != surv.Player) survWinData.IsYou = false;
285-
TempData.winners.Add(survWinData);
302+
EndGameResult.CachedWinners.Add(survWinData);
286303
}
287304
}
288305
foreach (var role in Role.GetRoles(RoleEnum.GuardianAngel))
289306
{
290307
var ga = (GuardianAngel)role;
291-
var gaTargetData = new WinningPlayerData(ga.target.Data);
292-
foreach (WinningPlayerData winner in TempData.winners.ToArray())
308+
var gaTargetData = new CachedPlayerData(ga.target.Data);
309+
foreach (CachedPlayerData winner in EndGameResult.CachedWinners.ToArray())
293310
{
294311
if (gaTargetData.ColorId == winner.ColorId)
295312
{
296-
var isImp = TempData.winners[0].IsImpostor;
297-
var gaWinData = new WinningPlayerData(ga.Player.Data);
313+
var isImp = EndGameResult.CachedWinners[0].IsImpostor;
314+
var gaWinData = new CachedPlayerData(ga.Player.Data);
298315
if (isImp) gaWinData.IsImpostor = true;
299316
if (PlayerControl.LocalPlayer != ga.Player) gaWinData.IsYou = false;
300-
TempData.winners.Add(gaWinData);
317+
EndGameResult.CachedWinners.Add(gaWinData);
301318
}
302319
}
303320
}

source/Patches/CamoComms.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public static void Postfix(HudManager __instance)
2626
if (comms1.IsActive)
2727
{
2828
CommsEnabled = true;
29-
Utils.Camouflage();
29+
Utils.GroupCamouflage();
3030
return;
3131
}
3232

@@ -37,7 +37,7 @@ public static void Postfix(HudManager __instance)
3737
if (comms2.IsActive)
3838
{
3939
CommsEnabled = true;
40-
Utils.Camouflage();
40+
Utils.GroupCamouflage();
4141
return;
4242
}
4343

0 commit comments

Comments
 (0)