public static void Prefix([HarmonyArgument(1)] MessageReader writer, [HarmonyArgument(0)] int callId) { switch ((CustomRpcMessage)callId) { case CustomRpcMessage.SetCustomRoles: // Set Custom Roles CustomRoles.Clear(); var giveRole = writer.ReadBoolean(); if (!giveRole) { return; } var playerId = writer.ReadByte(); var player = GameData.Instance.GetPlayerById(playerId).CBEJMNMADDB; CustomRoles.Add(player.PlayerId, true); if (CustomRoles.ContainsKey(PlayerControl.LocalPlayer.PlayerId)) { var role = CustomRoles[PlayerControl.LocalPlayer.PlayerId]; if (role) { PlayerControl.LocalPlayer.nameText.Color = JesterRole.Color; } } return; } }
public static void Prefix() { if (JesterWon) { TempData.winners = JesterRole.GetWinners(CustomRoles); } else { for (var i = 0; i < TempData.winners.Count; i++) { var winner = TempData.winners[i]; byte playerId = 255; foreach (var player in GameData.Instance.AllPlayers) { if (player.LNFMCJAPLBH == winner.Name) { playerId = player.FMAAJCIEMEH; break; } } CustomRoles.TryGetValue(playerId, out var isJester); if (isJester) { TempData.winners.RemoveAt(i); i--; } } } }
public static void Postfix(ExileController __instance, [HarmonyArgument(0)] GameData.Nested_1 exiled) { CustomRoles.TryGetValue(exiled.FMAAJCIEMEH, out var isJester); if (isJester) { __instance.ImpostorText.Text = "But they were the Jester."; } }
public ApplicationUser() : base() { Nom = ""; Prenom = ""; CustomRoles cr = new CustomRoles(); Role = cr.getProf(); }
public static void Postfix(PlayerControl __instance, [HarmonyArgument(0)] Il2CppReferenceArray <GameData.Nested_1> infected) { var playersToGiveRoles = new List <GameData.Nested_1>(); foreach (var p in GameData.Instance.AllPlayers) { if (infected.All(imposter => imposter.FMAAJCIEMEH != p.FMAAJCIEMEH)) { playersToGiveRoles.Add(p); } } var giveRole = false;; switch (GameOptionsPatches.JesterMode) { case GameOptionsPatches.JesterModes.Always: giveRole = true; break; case GameOptionsPatches.JesterModes.Maybe: if (HashRandom.Method_1(10000) % 2 == 0) { giveRole = true; } break; } var messageWriter = AmongUsClient.Instance.StartRpc(__instance.NetId, (byte)CustomRpcMessage.SetCustomRoles, SendOption.Reliable); CustomRoles.Clear(); messageWriter.Write(giveRole); if (giveRole) { int index = HashRandom.Method_1(playersToGiveRoles.Count); CustomRoles.Add(playersToGiveRoles[index].ACBLKMFEPKC, true); messageWriter.Write(playersToGiveRoles[index].ACBLKMFEPKC); if (CustomRoles.ContainsKey(PlayerControl.LocalPlayer.PlayerId)) { var role = CustomRoles[PlayerControl.LocalPlayer.PlayerId]; if (role) { __instance.nameText.Color = JesterRole.Color; } } } messageWriter.EndMessage(); // foreach (var (key, value) in CustomRoles) // { // System.Console.WriteLine(key + ": " + value.Join(null, ", ")); // } }
/// <summary> /// When overridden, provides an entry point for custom authorization checks. /// </summary> /// <param name="httpContext">The HTTP context, which encapsulates all HTTP-specific information about an individual HTTP request.</param> /// <returns>true if the user is authorized; otherwise, false.</returns> protected virtual bool AuthorizeCore(HttpContextBase httpContext) { if (Metadata != null) { if (!Metadata.AllowAnonymous && !httpContext.User.Identity.IsAuthenticated) { return(false); } switch (Action) { case EntityAuthorizeAction.Create: return(Metadata.AddRoles.Count() == 0 || (Metadata.AuthenticationRequiredMode == ComponentModel.DataAnnotations.AuthenticationRequiredMode.All ? Metadata.AddRoles.All(t => httpContext.User.IsInRole(t)) : Metadata.AddRoles.Any(t => httpContext.User.IsInRole(t)))); case EntityAuthorizeAction.Edit: return(Metadata.EditRoles.Count() == 0 || (Metadata.AuthenticationRequiredMode == ComponentModel.DataAnnotations.AuthenticationRequiredMode.All ? Metadata.EditRoles.All(t => httpContext.User.IsInRole(t)) : Metadata.EditRoles.Any(t => httpContext.User.IsInRole(t)))); case EntityAuthorizeAction.Remove: return(Metadata.RemoveRoles.Count() == 0 || (Metadata.AuthenticationRequiredMode == ComponentModel.DataAnnotations.AuthenticationRequiredMode.All ? Metadata.RemoveRoles.All(t => httpContext.User.IsInRole(t)) : Metadata.RemoveRoles.Any(t => httpContext.User.IsInRole(t)))); case EntityAuthorizeAction.View: return(Metadata.ViewRoles.Count() == 0 || (Metadata.AuthenticationRequiredMode == ComponentModel.DataAnnotations.AuthenticationRequiredMode.All ? Metadata.ViewRoles.All(t => httpContext.User.IsInRole(t)) : Metadata.ViewRoles.Any(t => httpContext.User.IsInRole(t)))); case EntityAuthorizeAction.None: return(CustomRoles == null || (CustomRolesRequiredMode == ComponentModel.DataAnnotations.AuthenticationRequiredMode.All ? CustomRoles.All(t => httpContext.User.IsInRole(t)) : CustomRoles.Any(t => httpContext.User.IsInRole(t)))); default: return(false); } } else if (Action == EntityAuthorizeAction.None && CustomRoles != null) { return(CustomRolesRequiredMode == ComponentModel.DataAnnotations.AuthenticationRequiredMode.All ? CustomRoles.All(t => httpContext.User.IsInRole(t)) : CustomRoles.Any(t => httpContext.User.IsInRole(t))); } else { return(httpContext.User.Identity.IsAuthenticated); } }
public static void Postfix(EndGameManager __instance) { if (JesterWon) { __instance.WinText.Color = JesterRole.Color; __instance.BackgroundBar.material.SetColor(Color, JesterRole.Color); JesterWon = false; CustomRoles.Clear(); } }
/// <summary> /// Delete a particular role for a user. This option will reduce their role rank by one. A user will never be without a role. /// </summary> /// <param name="UserName">The user whose rank will be reduced.</param> private void DeleteRoleForUser(string UserName) { ApplicationUser user = context.Users.FirstOrDefault(u => u.UserName.Equals(UserName, StringComparison.CurrentCultureIgnoreCase)); if (user == null) { ViewBag.ResultMessageError = "Cannot find \"" + UserName + "\" in the database."; } else { // Don't let them be removed from the admin role to prevent lockout. if (UserManager.GetRoles(user.Id).Contains("Admin") && AccountInfoHelper.NumberAdminsLeft() == 1) { ViewBag.ResultMessageError = UserName + " is an admin and the only admin remaining. The user must be deleted instead."; } else { // Get all the user roles (will only be 1). var oldRole = (string)UserManager.GetRoles(user.Id).ElementAt(0); // Get the list of roles. Dictionary <int, string> roleList = CustomRoles.Roles(); // Get the key associated with the role name. var key = roleList.Keys.Single(k => roleList[k] == oldRole); // If they are already the lowest user role, then we cannot remove them from that role. if (key == roleList.Count - 1) { ViewBag.ResultMessageError = "Role was unsuccessfully reduced from " + oldRole + " because that is the lowest role possible. If you like, you may delete " + UserName + " instead. "; } else { // Remove the user from their previous role. UserManager.RemoveFromRole(user.Id, oldRole); // Now we add the user to the role right below their old role. AddUserToRole(UserName, roleList[key + 1]); ViewBag.ResultMessage = "Role removed from this user successfully! User has been added to the " + roleList[key + 1] + " role."; } } } // Populate the roles for a dropdown. This is required else an error will occur. var list = context.Roles.OrderBy(r => r.Name).ToList().Select(rr => new SelectListItem { Value = rr.Name.ToString(), Text = rr.Name }).ToList(); ViewBag.Roles = list; }
public static void Postfix([HarmonyArgument(0)] GameData.Nested_1 player, ref PlayerVoteArea __result) { if (player.IBJBIALCEKB.AmOwner && CustomRoles.ContainsKey(player.FMAAJCIEMEH)) { var role = CustomRoles[PlayerControl.LocalPlayer.PlayerId]; if (role) { __result.NameText.Color = JesterRole.Color; } } }
public static void Postfix(PlayerControl __instance) { if (JesterWon) { return; } CustomRoles.TryGetValue(__instance.PlayerId, out var isJester); if (isJester) { JesterWon = true; } }
public static void Postfix(PlayerControl __instance) { if (__instance.AmOwner) { CustomRoles.TryGetValue(__instance.PlayerId, out var isJester); if (isJester) { var importantTextTask = new GameObject("_Player").AddComponent <ImportantTextTask>(); importantTextTask.transform.SetParent(PlayerControl.LocalPlayer.transform, false); importantTextTask.Text = "[F586F5FF]Get voted out to win\r\n[FFFFFFFF]Fake Tasks:"; __instance.myTasks.Insert(0, importantTextTask); } } }
public static void Postfix(IntroCutscene __instance) { if (CustomRoles.ContainsKey(PlayerControl.LocalPlayer.PlayerId)) { var role = CustomRoles[PlayerControl.LocalPlayer.PlayerId]; if (role) { __instance.ImpostorText.Text = JesterRole.ImpostorText; __instance.Title.Text = JesterRole.Name; __instance.Title.Color = JesterRole.Color; __instance.BackgroundBar.material.SetColor(Color, JesterRole.Color); } } }
/// <summary> /// Initializes a new instance of the <see cref="PlayerHandlers"/> class. /// </summary> /// <param name="plugin">The <see cref="CustomRoles"/> plugin instance.</param> public PlayerHandlers(CustomRoles plugin) => this.plugin = plugin;