示例#1
0
        public static void Postfix(EndGameManager __instance)
        {
            GameObject bonusText = UnityEngine.Object.Instantiate(__instance.WinText.gameObject);

            bonusText.transform.position   = new Vector3(__instance.WinText.transform.position.x, __instance.WinText.transform.position.y - 0.8f, __instance.WinText.transform.position.z);
            bonusText.transform.localScale = new Vector3(0.7f, 0.7f, 1f);
            TextRenderer textRenderer = bonusText.GetComponent <TextRenderer>();

            textRenderer.Text = "";

            if (AdditionalTempData.winCondition == WinCondition.ChildWin)
            {
                textRenderer.Text  = "Child Wins";
                textRenderer.Color = Child.color;
            }
            else if (AdditionalTempData.winCondition == WinCondition.JesterWin)
            {
                textRenderer.Text  = "Jester Wins";
                textRenderer.Color = Jester.color;
            }
            else if (AdditionalTempData.winCondition == WinCondition.LoversTeamWin)
            {
                if (AdditionalTempData.localIsLover)
                {
                    __instance.WinText.Text = "Double Victory";
                }
                textRenderer.Text  = "Lovers And Crewmates Win";
                textRenderer.Color = Lovers.color;
                __instance.BackgroundBar.material.SetColor("_Color", Lovers.color);
            }
            else if (AdditionalTempData.winCondition == WinCondition.LoversSoloWin)
            {
                textRenderer.Text  = "Lovers Win";
                textRenderer.Color = Lovers.color;
                __instance.BackgroundBar.material.SetColor("_Color", Lovers.color);
            }

            AdditionalTempData.clear();
        }
示例#2
0
        public static void Postfix(AmongUsClient __instance, GameOverReason OFLKLGMHBEL, bool JFFPAKGPNJA)
        {
            AdditionalTempData.clear();

            // Remove shifter from winners
            if (Shifter.shifter != null)
            {
                WinningPlayerData shifterWinner = null;
                foreach (WinningPlayerData winner in  TempData.winners)
                {
                    if (winner.Name == Shifter.shifter.Data.PlayerName)
                    {
                        shifterWinner = winner;
                    }
                }

                if (shifterWinner != null)
                {
                    TempData.winners.Remove(shifterWinner);
                }
            }
            // Remove Jester from winners (on Jester win he will be added again, see below)
            if (Jester.jester != null)
            {
                WinningPlayerData jesterWinner = null;
                foreach (WinningPlayerData winner in  TempData.winners)
                {
                    if (winner.Name == Jester.jester.Data.PlayerName)
                    {
                        jesterWinner = winner;
                    }
                }

                if (jesterWinner != null)
                {
                    TempData.winners.Remove(jesterWinner);
                }
            }


            // Child win condition (should be implemented using a proper GameOverReason in the future)
            if (Child.child != null && Child.child.Data.IsImpostor)
            {
                AdditionalTempData.winCondition = WinCondition.ChildWin;
                TempData.winners = new Il2CppSystem.Collections.Generic.List <WinningPlayerData>();
                WinningPlayerData wpd = new WinningPlayerData(Child.child.Data);
                wpd.IsImpostor = false;
                TempData.winners.Add(wpd);
            }

            // Jester win condition (should be implemented using a proper GameOverReason in the future)
            else if (Jester.jester != null && Jester.jester.Data.IsImpostor)
            {
                AdditionalTempData.winCondition = WinCondition.JesterWin;
                TempData.winners = new Il2CppSystem.Collections.Generic.List <WinningPlayerData>();
                WinningPlayerData wpd = new WinningPlayerData(Jester.jester.Data);
                wpd.IsImpostor = false;
                TempData.winners.Add(wpd);
            }

            // Lovers win conditions (should be implemented using a proper GameOverReason in the future)
            else if (Lovers.existingAndAlive())
            {
                AdditionalTempData.localIsLover = (PlayerControl.LocalPlayer == Lovers.lover1 || PlayerControl.LocalPlayer == Lovers.lover2);
                // Double win for lovers, crewmates also win
                if (TempData.DidHumansWin(OFLKLGMHBEL))
                {
                    AdditionalTempData.winCondition = WinCondition.LoversTeamWin;
                }
                // Lovers solo win
                else if (Lovers.existingWithImpLover())
                {
                    AdditionalTempData.winCondition = WinCondition.LoversSoloWin;
                    TempData.winners = new Il2CppSystem.Collections.Generic.List <WinningPlayerData>();
                    TempData.winners.Add(new WinningPlayerData(Lovers.lover1.Data));
                    TempData.winners.Add(new WinningPlayerData(Lovers.lover2.Data));
                }
            }

            // Reset Bonus Roles Settings
            clearAndReloadRoles();
            clearGameHistory();
        }