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); }
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); }