Example #1
0
 private static bool Prefix(TournamentFightMissionController __instance, TournamentMatch match, bool isLastRound)
 {
     TournamentXPandedMatchBehavior._match       = match;
     TournamentXPandedMatchBehavior.firstKiller  = null;
     TournamentXPandedMatchBehavior.achievements = new Dictionary <TournamentParticipant, ParticipantAchievements>();
     foreach (var p in match.Participants)
     {
         TournamentXPandedMatchBehavior.achievements.Add(p, new ParticipantAchievements());
     }
     return(true);
 }
Example #2
0
        private static bool Prefix(TournamentFightMissionController __instance, ref List <Equipment> __result, int teamSize)
        {
            List <string>    list;
            List <Equipment> equipment = new List <Equipment>();
            string           stringId  = PlayerEncounter.Settlement.Culture.StringId;

            var list4 = (string[])Traverse.Create(__instance).Field("_weaponTemplatesIdTeamSizeFour").GetValue();
            var list2 = (string[])Traverse.Create(__instance).Field("_weaponTemplatesIdTeamSizeTwo").GetValue();
            var list1 = (string[])Traverse.Create(__instance).Field("_weaponTemplatesIdTeamSizeOne").GetValue();

            if (teamSize == 4)
            {
                //list = __instance._weaponTemplatesIdTeamSizeFour.ToList<string>();
                list = list4.ToList <string>();
            }
            else
            {
                list = (teamSize == 2 ? list2.ToList <string>() : list1.ToList <string>());
            }
            List <string> strs = list;

            strs = strs.FindAll((string x) => x.Contains(stringId));

            var template = MBObjectManager.Instance.GetObject <CharacterObject>(strs[MBRandom.RandomInt(strs.Count)]);
            List <Equipment> battleEquipments = ApplyEquipmentRules(template);

            foreach (Equipment battleEquipment in battleEquipments)
            {
                Equipment equipment1 = new Equipment();
                equipment1.FillFrom(battleEquipment, true);
                equipment.Add(equipment1);
            }
            __result = equipment;

            return(false);
        }
        private static bool Prefix(TournamentFightMissionController __instance)
        {
            try
            {
                if (TournamentXPandedMatchBehavior._match != null)
                {
                    if (TournamentXPandedMatchBehavior._match.IsPlayerParticipating())
                    {
                        //InformationManager.AddQuickInformation(new TextObject("{=UBd0dEPp}Match is over", null), 0, null, "");
                        var achievments = TournamentXPandedMatchBehavior.achievements;
                        var m           = TournamentXPandedMatchBehavior._match;
                        var pc          = m.Participants.Where(p => p.Character == CharacterObject.PlayerCharacter).FirstOrDefault();
                        //Did we get first kill
                        var   message = "";
                        float renown  = 0;
                        if (TournamentXPSettings.Instance.BonusRenownFirstKill > 0 && TournamentXPandedMatchBehavior.firstKiller == pc)
                        {
                            message += "{=tourn018}QUICK ACTION! You got the first kill: " + TournamentXPSettings.Instance.BonusRenownFirstKill.ToString() + " renown.\n";
                            InformationManager.AddQuickInformation(new TextObject(message));
                            renown += TournamentXPSettings.Instance.BonusRenownFirstKill;
                        }

                        if (TournamentXPSettings.Instance.BonusRenownMostKills > 0)
                        {
                            var numberofkills = TournamentXPandedMatchBehavior.MostKills();
                            if (numberofkills.Contains(pc))
                            {
                                var bonus = TournamentXPSettings.Instance.BonusRenownMostKills / numberofkills.Count;
                                if (bonus > 0)
                                {
                                    message = "";
                                    if (numberofkills.Count == 1)
                                    {
                                        message += "{=tourn019}AGGRESSIVE! You got the most kills: " + bonus.ToString() + " renown.\n";
                                    }
                                    else
                                    {
                                        message += "{=tourn020}You tied for the most kills: " + bonus.ToString() + " renown.\n";
                                    }
                                    InformationManager.AddQuickInformation(new TextObject(message));
                                    renown += bonus;
                                }
                            }
                        }
                        if (TournamentXPSettings.Instance.BonusRenownMostDamage > 0)
                        {
                            var mostdamage = TournamentXPandedMatchBehavior.MostDamage();
                            if (mostdamage.Contains(pc))
                            {
                                var bonusmd = TournamentXPSettings.Instance.BonusRenownMostDamage / mostdamage.Count;
                                if (bonusmd > 0)
                                {
                                    message = "";
                                    if (mostdamage.Count == 1)
                                    {
                                        message += "{=tourn021}SAVAGE! You inflicted the most damage: " + bonusmd.ToString() + " renown.\n";
                                    }
                                    else
                                    {
                                        message += "{=tourn022}You tied for inflicting the most damage: " + bonusmd.ToString() + " renown.\n";
                                    }
                                    InformationManager.AddQuickInformation(new TextObject(message));
                                    renown += bonusmd;
                                }
                            }
                        }
                        if (TournamentXPSettings.Instance.BonusRenownLeastDamage > 0)
                        {
                            var leastDamage = TournamentXPandedMatchBehavior.LeastDamage();
                            if (leastDamage.Contains(pc))
                            {
                                var bonusld = TournamentXPSettings.Instance.BonusRenownLeastDamage / leastDamage.Count;
                                if (bonusld > 0)
                                {
                                    message = "";
                                    if (leastDamage.Count == 1)
                                    {
                                        message += "{=tourn023}DEFENSIVE! You took the least damage: " + bonusld.ToString() + " renown.\n";
                                    }
                                    else
                                    {
                                        message += "{=tourn024}You tied for the least damage taken: " + bonusld.ToString() + " renown.\n";
                                    }
                                    InformationManager.AddQuickInformation(new TextObject(message));
                                    renown += bonusld;
                                }
                            }
                        }
                        if (renown > 0)
                        {
                            TournamentsXPandedBehavior.Tournaments.Where(x => x.Active == true).First().Rewards.BonusRenown += renown;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ErrorLog.Log("Could not award tournament achievments\n" + ex.ToStringFull());
            }
            return(true);
        }