public static ItemObject GenerateTournamentPrize(TournamentGame tournamentGame, TournamentPrizePool currentPool = null, bool keepTownPrize = true) { var numItemsToGet = TournamentXPSettings.Instance.NumberOfPrizeOptions; bool bRegenAllPrizes = false; if (currentPool == null) { bRegenAllPrizes = true; currentPool = GetTournamentPrizePool(tournamentGame.Town.Settlement); } var allitems = GetItemStringsRevised(tournamentGame, TournamentPrizePoolBehavior.GetActivePrizeTypes()); //Add any existing items if we are filling in missing ones from an already generated pool var pickeditems = new List <string>(); if (keepTownPrize && !string.IsNullOrWhiteSpace((tournamentGame.Prize.StringId))) { pickeditems.Add(tournamentGame.Prize.StringId); currentPool.SelectedPrizeStringId = tournamentGame.Prize.StringId; } try { if (!bRegenAllPrizes) { foreach (ItemRosterElement existingPrize in currentPool.Prizes) { if (!pickeditems.Contains(existingPrize.EquipmentElement.Item.StringId)) { pickeditems.Add(existingPrize.EquipmentElement.Item.StringId); } if (allitems.Contains(existingPrize.EquipmentElement.Item.StringId)) { allitems.Remove(existingPrize.EquipmentElement.Item.StringId); } } } } catch (Exception ex) { ErrorLog.Log("ERROR: GetTournamentPrize existingprizes\n" + ex.ToStringFull()); } //If the totoal pool of unique items is less than our desired number, reduce our pool size. if (allitems.Count() < numItemsToGet) { numItemsToGet = allitems.Count(); } while (pickeditems.Count < numItemsToGet && allitems.Count() > 0) { var randomId = allitems.GetRandomElement <string>(); if (!pickeditems.Contains(randomId)) { pickeditems.Add(randomId); allitems.Remove(randomId); } } currentPool.Prizes = new ItemRoster(); foreach (var id in pickeditems) { ItemModifier itemModifier = null; var pickedPrize = Game.Current.ObjectManager.GetObject <ItemObject>(id); if (TournamentXPSettings.Instance.EnableItemModifiersForPrizes) { /* BETA12 * if (TournamentXPSettings.Instance.TownProsperityAffectsItemModifiers) * { * var ee = GetEquipmentWithModifier(pickedPrize, pickedPrize.Value * GetProsperityModifier(tournamentGame.Town.Settlement)); * itemModifier = ee.ItemModifier; * } * else * { */ if (pickedPrize.HasArmorComponent) { ItemModifierGroup itemModifierGroup = pickedPrize.ArmorComponent.ItemModifierGroup; if (itemModifierGroup != null) { itemModifier = itemModifierGroup.GetRandomItemModifier(1f); } else { itemModifier = null; } } /* BETA12 * } */ } currentPool.Prizes.Add(new ItemRosterElement(pickedPrize, 1, itemModifier)); // currentPool.Prizes.Add(new ItemRosterElement(pickedPrize, 1, null)); //Turn off random item mods for now; } if (!keepTownPrize) { var selected = currentPool.Prizes.GetRandomElement <ItemRosterElement>(); currentPool.SelectedPrizeStringId = selected.EquipmentElement.Item.StringId; SetTournamentSelectedPrize(tournamentGame, selected.EquipmentElement.Item); } return(currentPool.SelectPrizeItemRosterElement.EquipmentElement.Item); }
public static List <string> GetItemStringsRevised(TournamentGame tournamentGame, List <ItemObject.ItemTypeEnum> validTypes) { int prizeMin = MathF.Floor(GetMinPrizeValue() * .7f); int prizeMax = MathF.Ceiling(GetMaxPrizeValue() * 1.5f); //var numberArray = "1234567890".ToCharArray(); List <string> allitems = new List <string>(); if (TournamentXPSettings.Instance.PrizeListIncludeLegacy) { var legacyItems = _legacyItems.AsEnumerable(); if (TournamentXPSettings.Instance.PrizeFilterCultureLegacyItems) { legacyItems = legacyItems.Where(x => x.Culture == tournamentGame.Town.Culture); } if (TournamentXPSettings.Instance.PrizeFilterValueLegacyItems) { legacyItems = legacyItems.Where(x => x.Value >= prizeMin && x.Value <= prizeMax); } if (TournamentXPSettings.Instance.PrizeFilterItemTypesLegacyItems) { legacyItems = legacyItems.Where(x => validTypes.Contains(x.ItemType)); } allitems = allitems.Concat(legacyItems.Select(x => x.StringId)).ToList(); } if (TournamentXPSettings.Instance.PrizeListIncludeCustom && _customItems != null && _customItems.Count > 0) { try { var customItems = _customItems.AsEnumerable(); if (TournamentXPSettings.Instance.PrizeFilterCultureCustomItems) { customItems = customItems.Where(x => x.Culture == tournamentGame.Town.Culture); } if (TournamentXPSettings.Instance.PrizeFilterValueCustomItems) { customItems = customItems.Where(x => x.Value >= prizeMin && x.Value <= prizeMax); } if (TournamentXPSettings.Instance.PrizeFilterItemTypesCustomItems) { customItems = customItems.Where(x => validTypes.Contains(x.ItemType)); } allitems = allitems.Concat(customItems.Select(x => x.StringId).ToList()).ToList(); } catch (Exception ex) { ErrorLog.Log("Error adding custom items to prize pool."); ErrorLog.Log(ex.ToStringFull()); } } if (TournamentXPSettings.Instance.PrizeListIncludeTown) { var roster = tournamentGame.Town.Owner.ItemRoster; roster.RemoveZeroCounts(); var townItems = roster.Where(x => x.Amount > 0 && !x.EquipmentElement.Item.NotMerchandise).Select(x => x.EquipmentElement.Item); if (TournamentXPSettings.Instance.PrizeFilterCultureTownItems) { townItems = townItems.Where(x => x.Culture == tournamentGame.Town.Culture); } if (TournamentXPSettings.Instance.PrizeFilterValueTownItems) { townItems = townItems.Where(x => x.Value >= prizeMin && x.Value <= prizeMax); } if (TournamentXPSettings.Instance.PrizeFilterItemTypesTownItems) { townItems = townItems.Where(x => validTypes.Contains(x.ItemType)); } if (TournamentXPSettings.Instance.PrizeFilterPreventPlayerCraftedItems) { // townItems = townItems.Where(x => !numberArray.Contains(x.StringId[0])); int v; townItems = townItems.Where(x => int.TryParse(x.StringId, out v) == false); } //townItems = townItems.Where( x=> x.iscr) allitems = allitems.Concat(townItems.Select(x => x.StringId)).ToList(); } if (TournamentXPSettings.Instance.PrizeListIncludeVanilla) { var vanillaItems = ItemObject.All.AsEnumerable(); if (TournamentXPSettings.Instance.PrizeFilterCultureStandardItems) { vanillaItems = vanillaItems.Where(x => x.Culture == tournamentGame.Town.Culture); } if (TournamentXPSettings.Instance.PrizeFilterValueStandardItems) { vanillaItems = vanillaItems.Where(x => x.Value >= prizeMin && x.Value <= prizeMax); } if (TournamentXPSettings.Instance.PrizeFilterItemTypesStandardItems) { vanillaItems = vanillaItems.Where(x => validTypes.Contains(x.ItemType)); } if (TournamentXPSettings.Instance.PrizeFilterPreventPlayerCraftedItems) { //vanillaItems = vanillaItems.Where(x => !numberArray.Contains(x.StringId[0])); int v; vanillaItems = vanillaItems.Where(x => int.TryParse(x.StringId, out v) == false); } allitems = allitems.Concat(vanillaItems.Select(x => x.StringId)).ToList(); } if (allitems.Count == 0) { //Alert - fix it somehow MessageBox.Show("TournamentXPanded Error:\nYour filters are too strict, no items are found to populate the tournaments with. Check your settings to allow for a wider choice. Generally, this can only occur if you've set the lists to only allow for custom items, and those items are not loaded correctly.\nYou can enable debug mode to view additional diagnostics, to help determine if you items are loading or not."); ErrorLog.Log("Error populating Tournament Prizes\n"); } return(allitems); }
public static ItemObject GenerateTournamentPrize(TournamentGame tournamentGame, TournamentXPandedModel tournamentInfo, bool keepTownPrize = false, bool regenAllPrizes = true) { if (tournamentGame == null) { return(null); } var numItemsToGet = TournamentXPSettings.Instance.NumberOfPrizeOptions; var allitems = GetItemStringsRevised(tournamentGame, TournamentXPSettings.Instance.GetActivePrizeTypes()); if (allitems.Count == 0) { MessageBox.Show("TournamentsXPanded Error:\nAlert, your prize generation filters have resulted in no valid prizes. Consider widening your prize value range and if you are using a custom list make sure it's loaded correctly."); return(null); } //Add any existing items if we are filling in missing ones from an already generated pool if (regenAllPrizes) { tournamentInfo.SelectedPrizeStringId = ""; tournamentInfo.PrizePool = new List <PrizeItem>(); } var pickeditems = new List <PrizeItem>(); if (keepTownPrize && tournamentGame != null && !string.IsNullOrWhiteSpace((tournamentGame.Prize.StringId))) { pickeditems.Add(new PrizeItem() { ItemStringId = tournamentGame.Prize.StringId, ItemModifierStringId = "" }); tournamentInfo.SelectedPrizeStringId = tournamentGame.Prize.StringId; } try { if (!regenAllPrizes) { foreach (PrizeItem existingPrize in tournamentInfo.PrizePool) { if (pickeditems.Where(x => x.ItemStringId == existingPrize.ItemStringId).Count() == 0) { pickeditems.Add(existingPrize); } if (allitems.Contains(existingPrize.ItemStringId)) { allitems.Remove(existingPrize.ItemStringId); } } } } catch (Exception ex) { ErrorLog.Log("ERROR: GetTournamentPrize existingprizes\n" + ex.ToStringFull()); } //If the totoal pool of unique items is less than our desired number, reduce our pool size. if (allitems.Count() < numItemsToGet) { numItemsToGet = allitems.Count(); } while (pickeditems.Count < numItemsToGet && allitems.Count() > 0) { var randomId = allitems.GetRandomElement <string>(); if (pickeditems.Where(x => x.ItemStringId == randomId).Count() == 0) { pickeditems.Add(new PrizeItem() { ItemStringId = randomId, ItemModifierStringId = "" }); } allitems.Remove(randomId); } tournamentInfo.PrizePool = new List <PrizeItem>(); foreach (var pickedItem in pickeditems) { ItemModifier itemModifier = null; ItemObject pickedPrize = null; string itemModifierStringId = ""; try { pickedPrize = Game.Current.ObjectManager.GetObject <ItemObject>(pickedItem.ItemStringId); } catch (Exception ex) { ErrorLog.Log("Error getting object StringId: " + pickedItem.ItemStringId + "\n" + ex.ToStringFull()); } if (pickedPrize != null) { if (TournamentXPSettings.Instance.EnableItemModifiersForPrizes && pickedPrize.ItemType != ItemObject.ItemTypeEnum.Thrown && pickedPrize.ItemType != ItemObject.ItemTypeEnum.Arrows) { try { if (MBRandom.RandomFloatRanged(100f) < 50f) { var ee = GetEquipmentWithModifier(pickedPrize, GetProsperityModifier(tournamentGame.Town.Settlement)); itemModifier = ee.ItemModifier; if (itemModifier != null) { itemModifierStringId = itemModifier.StringId; } } } catch (Exception ex) { ErrorLog.Log("Error in GetEquipmentWithModifier\nItem:" + pickedPrize.StringId + "\n" + ex.ToStringFull()); } } try { tournamentInfo.PrizePool.Add(new PrizeItem() { ItemStringId = pickedPrize.StringId, ItemModifierStringId = itemModifierStringId }); } catch (Exception ex) { ErrorLog.Log("Error adding equipment to prizepool.\n" + ex.ToStringFull()); } } else { MessageBox.Show("Invalid Item detected. Please remove: " + pickedItem.ItemStringId + " from your list of custom items. Ignoring this item and continuing."); } } if (!keepTownPrize) { if (tournamentInfo.PrizePool.Count > 0) { tournamentInfo.SelectedPrizeStringId = tournamentInfo.PrizePool.First().ItemStringId; // SetTournamentSelectedPrize(tournamentGame, tournamentInfo.SelectPrizeItemRosterElement?.EquipmentElement.Item); } } try { return(tournamentInfo.SelectedPrizeItem.ToItemRosterElement().EquipmentElement.Item); } catch { //something went wrong generating a valid prize somewhere up above. hopefully earlier try catches will provide info, this is just a final failsafe to let it revert to default behavior. } return(null); }
private string getPlayers(TournamentGame tg) { //var playerId = tg.TournamentGamePlayers?.Count > 0 ? tg.TournamentGamePlayers.OrderByDescending(x => x.Score).First().PlayerId:0; //return playerId == 0?"":db.Players.Find(playerId).Name; return(tg.TournamentGamePlayers?.Count > 0 ? string.Join(",", tg.TournamentGamePlayers.OrderByDescending(x => x.Score).Select(x => x.Player.Name)) : ""); }
private static void Postfix(TournamentGame game) { var prizePool = TournamentPrizePoolBehavior.GetTournamentPrizePool(game.Town.Settlement); prizePool.RemainingRerolls = TournamentXPSettings.Instance.MaxNumberOfRerollsPerTournament; }
public virtual void ResolveTournament(TournamentGame tournament, Town town) => UnwrappedObject.ResolveTournament(tournament, town);
public static void PrizeSelectConsequence(MenuCallbackArgs args) { try { List <InquiryElement> prizeElements = new List <InquiryElement>(); TournamentGame tournamentGame = Campaign.Current.TournamentManager.GetTournamentGame(Settlement.CurrentSettlement.Town); TournamentPrizePool currentPool = GetTournamentPrizePool(Settlement.CurrentSettlement); if (currentPool.Prizes.Count < TournamentXPSettings.Instance.NumberOfPrizeOptions) { ItemObject prize = GenerateTournamentPrize(tournamentGame, currentPool, true); } // InformationManager.Clear(); foreach (ItemRosterElement ire in currentPool.Prizes) { var p = ire.EquipmentElement; try { var ii = new ImageIdentifier(p.Item.StringId, ImageIdentifierType.Item, p.GetModifiedItemName().ToString()); // prizeElements.Add(new InquiryElement(p.Item.StringId, ii, true, p.Item.ToToolTipTextObject().ToString())); prizeElements.Add(new InquiryElement( p.Item.StringId, p.GetModifiedItemName().ToString(), ii, true, p.ToToolTipTextObject().ToString() )); } catch (Exception ex) { ErrorLog.Log("ERROR: Tournament Prize System\nFailed to add prize element to display" + p.Item.StringId); ErrorLog.Log(ex.ToStringFull()); } } if (prizeElements.Count > 0) { string info = "{=tourn012}You can choose an item from the list below as your reward if you win the tournament!"; TextObject descr = new TextObject(info); if (TournamentXPSettings.Instance.DebugMode) { info = "Town:{TOWN}\nMin:{MIN}\nMax:{MAX}\nProsperity:{PROSPERITY}\nTypes:{TYPES}"; descr = new TextObject(info); descr.SetTextVariable("TOWN", currentPool.Town.Name); descr.SetTextVariable("MIN", TournamentPrizePoolBehavior.GetMinPrizeValue().ToString()); descr.SetTextVariable("MAX", TournamentPrizePoolBehavior.GetMaxPrizeValue().ToString()); descr.SetTextVariable("PROSPERITY", currentPool.Town.GetProsperityLevel().ToString()); var types = ""; foreach (var t in TournamentPrizePoolBehavior.GetActivePrizeTypes()) { types += t.ToString() + ", "; } types = types.Substring(0, types.Length - 2); descr.SetTextVariable("TYPES", types); } InformationManager.ShowMultiSelectionInquiry(new MultiSelectionInquiryData( new TextObject("{=tourn005}Tournament Prize Selection").ToString(), descr.ToString(), prizeElements, true, true, new TextObject("{=tourn006}OK").ToString(), new TextObject("{=tourn007}Cancel").ToString(), new Action <List <InquiryElement> >(OnSelectPrize), new Action <List <InquiryElement> >(OnDeSelectPrize)), true); try { GameMenu.SwitchToMenu("town_arena"); } catch (Exception ex) { ErrorLog.Log("ERROR: BMTournamentXP: Select Prize: Refresh Menu"); ErrorLog.Log(ex.ToStringFull()); } } else { InformationManager.ShowInquiry(new InquiryData("Tournament Prize Selection", "You should not be seeing this. Something went wrong generating the prize list. Your item restrictions may be set too narrow.", true, false, "OK", "", null, null)); } } catch (Exception ex) { ErrorLog.Log("ERROR: BMTournamentXP: Tournament Prize Selection"); ErrorLog.Log(ex.ToStringFull()); } }
private static void Postfix(TournamentGame tournament) { var info = TournamentsXPandedBehavior.GetTournamentInfo(tournament.Town); info.ReRollsUsed = 0; }
public static void CreateFall2017SoccerTourney(ApplicationDbContext db) { var tournamentTeams = new List <TournamentTeam> { new TournamentTeam { TeamId = TeamIds.Woodcrest, Seed = 1 }, new TournamentTeam { TeamId = TeamIds.Rosemount, Seed = 2 }, new TournamentTeam { TeamId = TeamIds.Fourth, Seed = 3 }, new TournamentTeam { TeamId = TeamIds.Chisago, Seed = 4 }, new TournamentTeam { TeamId = TeamIds.StFrancis, Seed = 5 }, new TournamentTeam { TeamId = TeamIds.Owatonna, Seed = 6, TeamNameOverride = "OCS/Oakland" }, new TournamentTeam { TeamId = TeamIds.LakeRegion, Seed = 7 }, new TournamentTeam { TeamId = TeamIds.PriorLake, Seed = 8 } }; var qf1Vs8 = new TournamentGame { Description = "Thurs. 1:30PM<br/>35 min", Tag = "QF.1", ParticipantATournamentTeam = tournamentTeams.Single(tt => tt.Seed == 1), ParticipantBTournamentTeam = tournamentTeams.Single(tt => tt.Seed == 8) }; var qf4Vs5 = new TournamentGame { Description = "Thurs. 10:00AM<br/>35 min", Tag = "QF.2", ParticipantATournamentTeam = tournamentTeams.Single(tt => tt.Seed == 4), ParticipantBTournamentTeam = tournamentTeams.Single(tt => tt.Seed == 5) }; var qf2Vs7 = new TournamentGame { Description = "Thurs. 11:45AM<br/>35 min", Tag = "QF.3", ParticipantATournamentTeam = tournamentTeams.Single(tt => tt.Seed == 2), ParticipantBTournamentTeam = tournamentTeams.Single(tt => tt.Seed == 7) }; var qf3Vs6 = new TournamentGame { Description = "Thurs. 3:15PM<br/>35 min", Tag = "QF.4", ParticipantATournamentTeam = tournamentTeams.Single(tt => tt.Seed == 3), ParticipantBTournamentTeam = tournamentTeams.Single(tt => tt.Seed == 6) }; var sf1Vs4 = new TournamentGame { Description = "Friday 4:00PM<br/>40 min", Tag = "SF.1", ParticipantAGameIsWinner = true, ParticipantBGameIsWinner = true, ParticipantATournamentGame = qf1Vs8, ParticipantBTournamentGame = qf4Vs5 }; var sf2Vs3 = new TournamentGame { Description = "Friday 2:00PM<br/>40 min", Tag = "SF.2", ParticipantAGameIsWinner = true, ParticipantBGameIsWinner = true, ParticipantATournamentGame = qf2Vs7, ParticipantBTournamentGame = qf3Vs6 }; var csf5Vs8 = new TournamentGame { Description = "Friday 9:00AM<br/>35 min", Tag = "CSF.1", ParticipantAGameIsWinner = false, ParticipantBGameIsWinner = false, ParticipantATournamentGame = qf1Vs8, ParticipantBTournamentGame = qf4Vs5 }; var csf6Vs7 = new TournamentGame { Description = "Friday 10:30AM<br/>35 min", Tag = "CSF.2", ParticipantAGameIsWinner = false, ParticipantBGameIsWinner = false, ParticipantATournamentGame = qf2Vs7, ParticipantBTournamentGame = qf3Vs6 }; var cf5Vs6 = new TournamentGame { Description = "Consolation<br/>Saturday<br/>9:30AM<br/>35 min", ResultLabel = "Consolation<br />Winner", Tag = "CF.1", ParticipantAGameIsWinner = true, ParticipantBGameIsWinner = true, ParticipantATournamentGame = csf5Vs8, ParticipantBTournamentGame = csf6Vs7 }; var f1Vs2 = new TournamentGame { Description = "Championship<br/>Saturday<br/>1:00PM<br/>40 min", ResultLabel = "2017 MACS<br />Champions", Tag = "F.1", ParticipantAGameIsWinner = true, ParticipantBGameIsWinner = true, ParticipantATournamentGame = sf1Vs4, ParticipantBTournamentGame = sf2Vs3 }; var f3Vs4 = new TournamentGame { Description = "Saturday<br/>11:15AM<br/>35 min", ResultLabel = "Third Place", Tag = "F.2", ParticipantAGameIsWinner = false, ParticipantBGameIsWinner = false, ParticipantATournamentGame = sf1Vs4, ParticipantBTournamentGame = sf2Vs3 }; db.Tournaments .AddRange(new Tournament { Name = "2017 MACS Soccer Tournament", Dates = "October 26-28, 2017", TournamentTeams = tournamentTeams, TournamentGames = new List <TournamentGame> { qf1Vs8, qf4Vs5, qf2Vs7, qf3Vs6, sf1Vs4, sf2Vs3, csf5Vs8, csf6Vs7, cf5Vs6, f3Vs4, f1Vs2 } }); db.SaveChanges(); }
private static void Prefix(TournamentGame game) { }
private static bool GetTournamentPrize(TournamentGame __instance, ref ItemObject __result) { if (!TournamentSetting.Instance.PrizeEnabled) { return(true); } string[] e = new string[] { "noble_horse_southern", "noble_horse_imperial", "noble_horse_western", "noble_horse_eastern", "noble_horse_battania", "noble_horse_northern", "special_camel", "noble_horse" }; ItemObject @object = Game.Current.ObjectManager.GetObject <ItemObject>(e.GetRandomElement()); if (MBRandom.RandomFloat < 0.15f) { __result = @object; return(false); } var culture = __instance.Town.Culture; var days = Campaign.Current.CampaignStartTime.ElapsedDaysUntilNow; var mul = Math.Sqrt((days + 100) / 100); ItemObject itemObject = MBRandom.ChooseWeighted(ItemObject.All, delegate(ItemObject item) { if ((float)item.Value <= 1600f * (item.IsMountable ? 0.5f : mul * 1f) || (float)item.Value >= 5000f * (item.IsMountable ? 0.5f : mul * 1f) || item.Culture != __instance.Town.Culture || item.IsPlayerCraft() || (!item.IsCraftedWeapon && !item.IsMountable && item.ArmorComponent == null)) { return(0f); } return(1f); }); //if (itemObject == null) //{ // itemObject = MBRandom.ChooseWeighted<ItemObject>(ItemObject.All, delegate (ItemObject item) // { // if ((float)item.Value <= mul * 1600f * (item.IsMountable ? 0.5f : 1f) || (float)item.Value >= mul * 5000f * (item.IsMountable ? 0.5f : 1f) || item.IsPlayerCraft() || item.IsCraftedWeapon || (!item.IsCraftedWeapon && !item.IsMountable && item.ArmorComponent == null)) // { // return 0f; // } // return 1f; // }); //} if (itemObject == null) { __result = @object; return(false); } __result = itemObject; return(false); }
private static void Postfix(TournamentGame __instance, ref float __result) { var tournamentInfo = TournamentsXPandedBehavior.GetTournamentInfo(__instance.Town); __result += tournamentInfo.Rewards.BonusRenown; }
private void AssertAllPlayersWereAskedForMoves(TournamentGame game, int turnsPerRound) { game.PlayerOne.Comms.Received(turnsPerRound).RequestMove(); game.PlayerTwo.Comms.Received(turnsPerRound).RequestMove(); }
private void AssertThatGameIsBetweenPlayers(TournamentGame tournamentGame, TournamentPlayer p1, TournamentPlayer p2) { Assert.That(tournamentGame.PlayerOne.Id, Is.EqualTo(p1.Id)); Assert.That(tournamentGame.PlayerTwo.Id, Is.EqualTo(p2.Id)); }
public static List <string> GetItemStringsRevised(TournamentGame tournamentGame, List <ItemObject.ItemTypeEnum> validTypes) { string[] strArray = new String[] { "winds_fury_sword_t3", "bone_crusher_mace_t3", "tyrhung_sword_t3", "pernach_mace_t3", "early_retirement_2hsword_t3", "black_heart_2haxe_t3", "knights_fall_mace_t3", "the_scalpel_sword_t3", "judgement_mace_t3", "dawnbreaker_sword_t3", "ambassador_sword_t3", "heavy_nasalhelm_over_imperial_mail", "closed_desert_helmet", "sturgian_helmet_closed", "full_helm_over_laced_coif", "desert_mail_coif", "heavy_nasalhelm_over_imperial_mail", "plumed_nomad_helmet", "eastern_studded_shoulders", "ridged_northernhelm", "armored_bearskin", "noble_horse_southern", "noble_horse_imperial", "noble_horse_western", "noble_horse_eastern", "noble_horse_battania", "noble_horse_northern", "special_camel" }; List <string> allitems = new List <string>(); if (TournamentXPSettings.Instance.PrizeListIncludeLegacy) { allitems = allitems.Concat(strArray.ToList()).ToList(); } if (TournamentXPSettings.Instance.PrizeListIncludeCustom && TournamentPrizePoolBehavior.CustomTourneyItems != null && TournamentPrizePoolBehavior.CustomTourneyItems.Count > 0) { try { var customItems = TournamentPrizePoolBehavior.CustomTourneyItems.Where(x => validTypes.Contains(x.ItemType)); if (TournamentXPSettings.Instance.TownPrizeMinMaxAffectsCustom) { customItems = customItems.Where(x => x.Value >= MathF.Floor(TournamentPrizePoolBehavior.GetMinPrizeValue()) && x.Value <= MathF.Ceiling(TournamentPrizePoolBehavior.GetMaxPrizeValue())); } allitems = allitems.Concat(customItems.Select(x => x.StringId).ToList()).ToList(); } catch (Exception ex) { ErrorLog.Log("Error adding custom items to prize pool."); ErrorLog.Log(ex.ToStringFull()); } } if (TournamentXPSettings.Instance.PrizeListIncludeTown) { int _minValue = 1600; int _maxValue = 5000; _minValue = TournamentPrizePoolBehavior.GetMinPrizeValue(); _maxValue = TournamentPrizePoolBehavior.GetMaxPrizeValue(); var townItems = GetValidTownItems(tournamentGame, _minValue, _maxValue, validTypes); allitems = allitems.Concat(townItems).ToList(); } if (TournamentXPSettings.Instance.PrizeListIncludeVanilla) { int _minValue = 1600; int _maxValue = 5000; List <string> vanillaItems; if (TournamentXPSettings.Instance.TownPrizeMinMaxAffectsVanilla) { _minValue = TournamentPrizePoolBehavior.GetMinPrizeValue(); _maxValue = TournamentPrizePoolBehavior.GetMaxPrizeValue(); } vanillaItems = ItemObject.All.Where(x => x.Culture == tournamentGame.Town.Settlement.Culture && validTypes.Contains(x.ItemType) && x.Value >= _minValue && x.Value <= _maxValue).Select(x => x.StringId).ToList(); if (vanillaItems.Count == 0) { vanillaItems = ItemObject.All.Where(x => validTypes.Contains(x.ItemType) && x.Value >= _minValue && x.Value <= _maxValue).Select(x => x.StringId).ToList(); } allitems = allitems.Concat(vanillaItems).ToList(); } if (allitems.Count == 0) { return(strArray.ToList()); } return(allitems); }
public static void Create2018BoysBasketballTourney(ApplicationDbContext db) { var tournamentTeams = new List <TournamentTeam> { new TournamentTeam { TeamId = TeamIds.StFrancis, Seed = 1 }, new TournamentTeam { TeamId = TeamIds.Fourth, Seed = 2 }, new TournamentTeam { TeamId = TeamIds.LakeRegion, Seed = 3 }, new TournamentTeam { TeamId = TeamIds.Foundation, Seed = 4 }, new TournamentTeam { TeamId = TeamIds.Rosemount, Seed = 5 }, new TournamentTeam { TeamId = TeamIds.PriorLake, Seed = 6 }, new TournamentTeam { TeamId = TeamIds.Chisago, Seed = 7 }, new TournamentTeam { TeamId = TeamIds.Woodcrest, Seed = 8 } }; var qf1Vs8 = new TournamentGame { Description = "Thursday<br />8:00 PM", Tag = "QF.1", ParticipantATournamentTeam = tournamentTeams.Single(tt => tt.Seed == 1), ParticipantBTournamentTeam = tournamentTeams.Single(tt => tt.Seed == 8) }; var qf4Vs5 = new TournamentGame { Description = "Thursday<br />5:00 PM", Tag = "QF.2", ParticipantATournamentTeam = tournamentTeams.Single(tt => tt.Seed == 4), ParticipantBTournamentTeam = tournamentTeams.Single(tt => tt.Seed == 5) }; var qf2Vs7 = new TournamentGame { Description = "Thursday<br />11:00 AM", Tag = "QF.3", ParticipantATournamentTeam = tournamentTeams.Single(tt => tt.Seed == 2), ParticipantBTournamentTeam = tournamentTeams.Single(tt => tt.Seed == 7) }; var qf3Vs6 = new TournamentGame { Description = "Thursday<br />2:00 PM", Tag = "QF.4", ParticipantATournamentTeam = tournamentTeams.Single(tt => tt.Seed == 3), ParticipantBTournamentTeam = tournamentTeams.Single(tt => tt.Seed == 6) }; var sf1Vs4 = new TournamentGame { Description = "Friday<br />7:30 PM", Tag = "SF.1", ParticipantAGameIsWinner = true, ParticipantBGameIsWinner = true, ParticipantATournamentGame = qf1Vs8, ParticipantBTournamentGame = qf4Vs5 }; var sf2Vs3 = new TournamentGame { Description = "Friday<br />4:30 PM", Tag = "SF.2", ParticipantAGameIsWinner = true, ParticipantBGameIsWinner = true, ParticipantATournamentGame = qf2Vs7, ParticipantBTournamentGame = qf3Vs6 }; var csf5Vs8 = new TournamentGame { Description = "Friday<br />9:00 AM<br />(at Woodcrest)", Tag = "CSF.1", ParticipantAGameIsWinner = false, ParticipantBGameIsWinner = false, ParticipantATournamentGame = qf1Vs8, ParticipantBTournamentGame = qf4Vs5 }; var csf6Vs7 = new TournamentGame { Description = "Friday<br />10:30 AM<br />(at Woodcrest)", Tag = "CSF.2", ParticipantAGameIsWinner = false, ParticipantBGameIsWinner = false, ParticipantATournamentGame = qf2Vs7, ParticipantBTournamentGame = qf3Vs6 }; var cf5Vs6 = new TournamentGame { Description = "Consolation<br/>Saturday<br />11:00 AM<br />(at Woodcrest)", ResultLabel = "Consolation<br />Winner", Tag = "CF.1", ParticipantAGameIsWinner = true, ParticipantBGameIsWinner = true, ParticipantATournamentGame = csf5Vs8, ParticipantBTournamentGame = csf6Vs7 }; var f1Vs2 = new TournamentGame { Description = "Championship<br />Saturday<br />2:30 PM", ResultLabel = "2018 MACS<br />Champions", Tag = "F.1", ParticipantAGameIsWinner = true, ParticipantBGameIsWinner = true, ParticipantATournamentGame = sf1Vs4, ParticipantBTournamentGame = sf2Vs3 }; var f3Vs4 = new TournamentGame { Description = "Third Place<br />Saturday<br />11:30 AM", ResultLabel = "Third Place", Tag = "F.2", ParticipantAGameIsWinner = false, ParticipantBGameIsWinner = false, ParticipantATournamentGame = sf1Vs4, ParticipantBTournamentGame = sf2Vs3 }; db.Tournaments .AddRange(new Tournament { Name = "2018 MACS Boys Basketball Tournament", Dates = "February 22-24, 2018", TournamentTeams = tournamentTeams, TournamentGames = new List <TournamentGame> { qf1Vs8, qf4Vs5, qf2Vs7, qf3Vs6, sf1Vs4, sf2Vs3, csf5Vs8, csf6Vs7, cf5Vs6, f3Vs4, f1Vs2 } }); db.SaveChanges(); }
private static void Prefix(TournamentGame tournament) { TournamentPrizePoolBehavior.ClearTournamentPrizes(tournament.Town.Settlement); }
public void initMission(Mission mission, String playerName = "") { if (Campaign.Current != null) { playerName = Campaign.Current.MainParty.Leader.ToString(); } else if (mission.MainAgent != null) { playerName = mission.MainAgent.Name; } Agent closestAgent = null; bool isBattle = false; bool inTournament = false; bool inDuel = false; bool inArenaCombat = false; int ally = 0; int enemies = 0; String conversation = ""; float distanceWithMainAgent = 999999; foreach (Agent agent in mission.AllAgents.Where(t => t.Health > 0)) { if (agent.IsEnemyOf(mission.MainAgent) && agent.IsHuman) { enemies++; } else if (agent.IsHuman && agent.IsFriendOf(mission.MainAgent)) { ally++; } else if (agent.IsHuman) { } if (agent.IsAIControlled && agent.IsHuman && mission.SceneName.ToLower().Contains("conversation")) { float tmp = agent.GetTrackDistanceToMainAgent(); if (tmp < distanceWithMainAgent) { closestAgent = agent; if (11 > tmp && tmp > 7) { distanceWithMainAgent = tmp; conversation = agent.Name; } } } } if (ally != latestAllyCount) { latestAllyCount = ally; } if (enemies != latestEnemyCount) { latestEnemyCount = enemies; } if (Game.Current != null && Game.Current.GameType is CustomGame) //Custom Game Detection { if (Agent.Main != null && Agent.Main.Health > 0) { setPresence("In Custom Battle" + ((enemies > 0) ? " Against" + enemies : ""), "As " + playerName + ((ally > 0) ? "with " + ally + " Men" : ""), playerName, 122); } else { setPresence("In Custom Battle", "Watching", playerName, 122); } return; } String currentPlace = ""; if (Settlement.CurrentSettlement != null) //Thanks to Aeurias, did not notice Settlement in API. { currentPlace = Settlement.CurrentSettlement.Name.ToString(); } // Mission CombatType has cool features. //if (mission.Mode == MissionMode.Conversation) { setPresence("In Conversation", playerName); } if (Campaign.Current != null && Campaign.Current.TournamentManager != null && !canEnterTournament) { if (Settlement.CurrentSettlement != null) { if (Settlement.CurrentSettlement.IsTown) { if (latestTournamentList != null) { foreach (TournamentGame tournament in latestTournamentList) { if (tournament != null && tournament.Town.Name.ToString().Trim().Equals(currentPlace.Trim())) { canEnterTournament = true; canResetTournament = false; } } } TournamentGame tmp = null; latestTournamentList = new List <TournamentGame>(); foreach (Town t in Town.All) { tmp = Campaign.Current.TournamentManager.GetTournamentGame(t); if (tmp != null) { latestTournamentList.Add(tmp); } } } } } if (mission.Mode == MissionMode.Duel) { inDuel = true; } else if (mission.Mode == MissionMode.Tournament) { inTournament = true; } else if (mission.CombatType == Mission.MissionCombatType.ArenaCombat) { inArenaCombat = true; } else if (mission.Mode == MissionMode.Barter) { String with = ""; if (!conversation.Trim().Equals("")) { with = " with " + conversation; } setPresence("Bartering" + with, "As " + playerName, playerName, 8); return; } else if (mission.Mode == MissionMode.Battle) { isBattle = true; } //Scene Checking Begins - aka where the character is if (mission.SceneName.ToLower().Contains("conversation")) { // Conversation String with = ""; if (!conversation.Trim().Equals("")) { with = " with " + conversation; } setPresence("In Conversation" + with, "As " + playerName, playerName, 95); } else if (inDuel) { String details = "In Duel"; if (closestAgent != null) { details += " against " + closestAgent.Name; } setPresence(details, "As " + playerName, playerName, 99); } else if (mission.SceneName.ToLower().Contains("battle_terrain")) { // battle if (enemies > 0) { setPresence("In battle against " + enemies + " enemies", "As " + playerName, playerName, 96); } else { setPresence("In battle", "As " + playerName, playerName, 96); } } else if (mission.SceneName.ToLower().Contains("arena")) { // arena String details = "In Arena "; String state = ""; if (!currentPlace.Equals("")) { details += "at " + currentPlace; } if (!playerName.Equals("")) { state = "As " + playerName; } if (enemies > 0) { state = "Against " + enemies + " as " + playerName; } if (canEnterTournament) { details = "In Tournament"; state = "Fighting as " + playerName; if (enemies > 0) { details += " Against " + enemies; } canResetTournament = true; } setPresence(details, state, playerName, 90); return; } else if (mission.SceneName.ToLower().Contains("tavern")) {// tavern String details = "In Tavern "; String state = ""; if (!currentPlace.Equals("")) { details += "at " + currentPlace; } state = "As " + playerName; setPresence(details, state, playerName, 91); } else if (mission.SceneName.ToLower().Contains("training_field")) {// training_field String details = "In Training Field"; String state = "As " + playerName;; setPresence(details, state, playerName, -69); //Training field is gay if you say otherwise you gay too. } else if (mission.SceneName.ToLower().Contains("town")) { // Town String details = "In Town"; String state = ""; if (!currentPlace.Equals("")) { details = "In " + currentPlace; } state = "As " + playerName; if (mission.PlayerEnemyTeam != null && mission.DefenderTeam != null && mission.AttackerTeam != null) { if (isBattle && mission.PlayerEnemyTeam != null && mission.PlayerEnemyTeam.ActiveAgents.Count < 8 && canEnter) { state = "AMBUSHED!"; } else if (isBattle && (mission.AttackerTeam.IsPlayerAlly || mission.AttackerTeam.IsPlayerTeam)) { // Conquering state = "In Siege Battle as " + playerName; canEnter = false; } else if (isBattle && (mission.DefenderTeam.IsPlayerAlly || mission.DefenderTeam.IsPlayerTeam)) { // Conquering state = "Defending as " + playerName; canEnter = false; } } setPresence(details, state, playerName, 89); /*if (mission.SceneName.ToLower().Contains("empire")) { setPresence("At Empire's Town", playerName); }// empire * if (mission.SceneName.ToLower().Contains("khuzait")) { setPresence("At Khuzait's Town", playerName); }// khuzait * if (mission.SceneName.ToLower().Contains("sturgia")) { setPresence("At Sturgia's Town", playerName); }// sturgia * if (mission.SceneName.ToLower().Contains("vlandia")) { setPresence("At Vlandia's Town", playerName); }// vlandia * if (mission.SceneName.ToLower().Contains("battania")) { setPresence("At Battania's Town", playerName); }// battania * if (mission.SceneName.ToLower().Contains("aseria")) { setPresence("At Aseria's Town", playerName); }// aseria */ } else if (mission.SceneName.ToLower().Contains("village")) { // Village String details = "In Village"; String state = ""; if (!currentPlace.Equals("")) { details = "In " + currentPlace; } state = "As " + playerName; if (isBattle && mission.PlayerEnemyTeam != null && mission.PlayerEnemyTeam.ActiveAgents.Count < 8 && canEnter) { state = "AMBUSHED!"; } else if (isBattle) { // Helping village state = "Saving Village from Bandits as " + playerName; canEnter = false; } setPresence(details, state, playerName, 89); /* if (mission.SceneName.ToLower().Contains("empire")) { setPresence("At Empire's Village", playerName); }// empire * if (mission.SceneName.ToLower().Contains("khuzait")) { setPresence("At Khuzait's Village", playerName); }// khuzait * if (mission.SceneName.ToLower().Contains("sturgia")) { setPresence("At Sturgia's Village", playerName); }// sturgia * if (mission.SceneName.ToLower().Contains("vlandia")) { setPresence("At Vlandia's Village", playerName); }// vlandia * if (mission.SceneName.ToLower().Contains("battania")) { setPresence("At Battania's Village", playerName); }// battania * if (mission.SceneName.ToLower().Contains("aseria")) { setPresence("At Aseria's Village", playerName); }// aseria */ } else if (mission.SceneName.ToLower().Contains("dungeon")) { // Dungeon String details = "In Dungeon "; String state = ""; if (!currentPlace.Equals("")) { details += "at " + currentPlace; } state = "As " + playerName; setPresence(details, state, playerName, 88); setPresence(details, state, playerName, 88); /*if (mission.SceneName.ToLower().Contains("empire")) { setPresence("At Empire's Dungeon", playerName); }// empire * if (mission.SceneName.ToLower().Contains("khuzait")) { setPresence("At Khuzait's Dungeon", playerName); }// khuzait * if (mission.SceneName.ToLower().Contains("sturgia")) { setPresence("At Sturgia's Dungeon", playerName); }// sturgia * if (mission.SceneName.ToLower().Contains("vlandia")) { setPresence("At Vlandia's Dungeon", playerName); }// vlandia * if (mission.SceneName.ToLower().Contains("battania")) { setPresence("At Battania's Dungeon", playerName); }// battania * if (mission.SceneName.ToLower().Contains("aseria")) { setPresence("At Aseria's Dungeon", playerName); }// aseria */ } else if (mission.SceneName.ToLower().Contains("city")) { // City String details = "In City"; String state = ""; if (!currentPlace.Equals("")) { details = "In " + currentPlace; } state = "As " + playerName; if (isBattle && mission.PlayerEnemyTeam != null && mission.PlayerEnemyTeam.ActiveAgents.Count < 8 && canEnter) { state = "AMBUSHED!"; } else if (isBattle && (mission.AttackerTeam.IsPlayerAlly || mission.AttackerTeam.IsPlayerTeam)) { // Conquering state = "In Siege Battle as " + playerName; canEnter = false; } else if (isBattle && (mission.DefenderTeam.IsPlayerAlly || mission.DefenderTeam.IsPlayerTeam)) { // Conquering state = "Defending as " + playerName; canEnter = false; } setPresence(details, state, playerName, 87); /* if (mission.SceneName.ToLower().Contains("empire")) { setPresence("At Empire's City", playerName); }// empire * if (mission.SceneName.ToLower().Contains("khuzait")) { setPresence("At Khuzait's City", playerName); }// khuzait * if (mission.SceneName.ToLower().Contains("sturgia")) { setPresence("At Sturgia's City", playerName); }// sturgia * if (mission.SceneName.ToLower().Contains("vlandia")) { setPresence("At Vlandia's City", playerName); }// vlandia * if (mission.SceneName.ToLower().Contains("battania")) { setPresence("At Battania's City", playerName); }// battania * if (mission.SceneName.ToLower().Contains("aseria")) { setPresence("At Aseria's City", playerName); }// aseria */ } else if (mission.SceneName.ToLower().Contains("castle")) { // Castle String details = "In Castle"; String state = ""; if (!currentPlace.Equals("")) { details = "In " + currentPlace; } state = "As " + playerName; if (isBattle && mission.PlayerEnemyTeam != null && mission.PlayerEnemyTeam.ActiveAgents.Count < 8 && canEnter) { state = "AMBUSHED!"; } else if (isBattle && (mission.AttackerTeam.IsPlayerAlly || mission.AttackerTeam.IsPlayerTeam)) { // Conquering state = "In Siege Battle as " + playerName; canEnter = false; } else if (isBattle && (mission.DefenderTeam.IsPlayerAlly || mission.DefenderTeam.IsPlayerTeam)) { // Conquering state = "Defending as " + playerName; canEnter = false; } setPresence(details, state, playerName, 86); /*if (mission.SceneName.ToLower().Contains("empire")) { setPresence("At Empire's Castle", playerName); }// empire * if (mission.SceneName.ToLower().Contains("khuzait")) { setPresence("At Khuzait's Castle", playerName); }// khuzait * if (mission.SceneName.ToLower().Contains("sturgia")) { setPresence("At Sturgia's Castle", playerName); }// sturgia * if (mission.SceneName.ToLower().Contains("vlandia")) { setPresence("At Vlandia's Castle", playerName); }// vlandia * if (mission.SceneName.ToLower().Contains("battania")) { setPresence("At Battania's Castle", playerName); }// battania * if (mission.SceneName.ToLower().Contains("aseria")) { setPresence("At Aseria's Castle", playerName); }// aseria */ } else if (mission.SceneName.ToLower().Contains("hideout") || mission.SceneName.ToLower().Contains("bandit_forest")) { // hideout String state = "As " + playerName; if (latestAllyCount > 0) { state += " with " + latestAllyCount + " Men"; } if (mission.SceneName.ToLower().Contains("steppe")) { setPresence("Raiding Steppe Hideout", state, playerName, 85); } // steppe else if (mission.SceneName.ToLower().Contains("mountain")) { setPresence("Raiding Mountain Hideout", state, playerName, 84); } // mountain else if (mission.SceneName.ToLower().Contains("forest")) { setPresence("Raiding Forest Hideout", state, playerName, 83); } // forest else if (mission.SceneName.ToLower().Contains("desert")) { setPresence("Raiding Desert Hideout", state, playerName, 82); } // desert } else if (!currentPlace.Trim().Equals("")) { String details = "At " + currentPlace; String state = "As " + playerName; setPresence(details, state, playerName, -2); } else if (PlayerEncounter.IsActive) { String encountered = PlayerEncounter.EncounteredParty.Leader.Name.ToString(); setPresence("Encountered " + encountered, loader.INSTANCE.inCampaignAsPlayer, playerName, 102); //setPresence(loader.INSTANCE.inCampaignAsPlayer, "With Army of " + (((int)Campaign.Current.MainParty.Party.NumberOfAllMembers) - 1), Campaign.Current.MainParty.Leader.Name.ToString(), 4); } if (canResetTournament) { canEnterTournament = false; } /*MessageBox.Show(" Scene Name: " + mission.SceneName + "\n Field Battle: " + mission.IsFieldBattle + "\n Character Screen: " + mission.IsCharacterWindowAccessAllowed + * "\n Mission Mode: " + mission.Mode + "\n Enemy team leader name:" + mission.PlayerEnemyTeam.Leader.Name + "\n Active Agent Enemy Team:" + mission.PlayerEnemyTeam.ActiveAgents.Count);*/ }
public static void SetTournamentSelectedPrize(TournamentGame tournamentGame, ItemObject prize) { typeof(TournamentGame).GetProperty("Prize").SetValue(tournamentGame, prize); }
public static BackendGameViewModelItem FromModel(this BackendGameViewModelItem viewmodel, TournamentGame model) { viewmodel.ID = model.ID; viewmodel.Name = model.Name; viewmodel.ImagePath = model.Image; viewmodel.RulesPath = model.Rules; viewmodel.RequireSteamID = model.RequireSteamID; viewmodel.RequireBattleTag = model.RequireBattleTag; return(viewmodel); }
public override void OnGameInitializationFinished(Game game) { if (!disabled) { if (game.GameType is Campaign) { ApplyPatches(game, typeof(TournamentsXPandedSubModule)); //Setup Custom Items. string customfile = System.IO.Path.Combine(TaleWorlds.Engine.Utilities.GetConfigsPath(), ModuleFolderName, "CustomPrizeItems.json"); if (File.Exists(customfile)) { var configtxt = File.ReadAllText(customfile); var customItems = JsonConvert.DeserializeObject <List <string> >(configtxt); //InitCustomItems(customItems); InitItemsList(customItems, out TournamentPrizePoolBehavior._customItems); } //Setup Legacy Items List <string> strArray = new List <string>() { "winds_fury_sword_t3", "bone_crusher_mace_t3", "tyrhung_sword_t3", "pernach_mace_t3", "early_retirement_2hsword_t3", "black_heart_2haxe_t3", "knights_fall_mace_t3", "the_scalpel_sword_t3", "judgement_mace_t3", "dawnbreaker_sword_t3", "ambassador_sword_t3", "heavy_nasalhelm_over_imperial_mail", "closed_desert_helmet", "sturgian_helmet_closed", "full_helm_over_laced_coif", "desert_mail_coif", "heavy_nasalhelm_over_imperial_mail", "plumed_nomad_helmet", "eastern_studded_shoulders", "ridged_northernhelm", "armored_bearskin", "noble_horse_southern", "noble_horse_imperial", "noble_horse_western", "noble_horse_eastern", "noble_horse_battania", "noble_horse_northern", "special_camel" }; InitItemsList(strArray, out TournamentPrizePoolBehavior._legacyItems); if (TournamentXPSettings.Instance.DebugMode) { try { CreateDiagnostics(); } catch (Exception ex) { ErrorLog.Log("ERROR CREATING DIAGNOSTICS\n" + ex.ToStringFull()); } } TournamentManager tournamentManager = Campaign.Current.TournamentManager as TournamentManager; foreach (var s in Campaign.Current.Settlements) { try { if (s.HasTournament) { TournamentGame tg = tournamentManager.GetTournamentGame(s.Town); if (tg is Fight2TournamentGame) { ((List <TournamentGame>)Traverse.Create(tournamentManager).Field("_activeTournaments").GetValue()).Remove(tg); tg = null; tg = new FightTournamentGame(s.Town); tournamentManager.AddTournament(tg); InformationManager.DisplayMessage(new InformationMessage("Repaired Tournament in: " + s.Town.Name.ToString(), Colors.Red)); } } } catch (Exception ex) { ErrorLog.Log("Error resetting Tournament\n" + ex.ToStringFull()); } } //Try to repair /* * foreach (var settlement in Settlement.All) * { * if (settlement.HasTournament) * { * var tournament = Campaign.Current.TournamentManager.GetTournamentGame(settlement.Town) as Fight2TournamentGame; * try * { * if (tournament != null) * { * tournament.SetFightMode(Fight2TournamentGame.FightMode.Mixed); * } * } * catch (Exception ex) * { * ErrorLog.Log("Error repairing tournament: " + settlement.Town.StringId); * ErrorLog.Log(ex.ToStringFull()); * } * } * } */ } } else { if (MessageBox.Show("Tournament XPanded disabled. Would you like to reset all Tournaments to stock?", "TournamentsXPanded Disabled", MessageBoxButtons.YesNo) == DialogResult.Yes) { try { List <TournamentPrizePool> prizePools = new List <TournamentPrizePool>(); MBObjectManager.Instance.GetAllInstancesOfObjectType <TournamentPrizePool>(ref prizePools); foreach (var pp in prizePools) { MBObjectManager.Instance.UnregisterObject(pp); } InformationManager.DisplayMessage(new InformationMessage("TournamentXPanded prize pools de-registered.", Colors.Red)); TournamentManager tournamentManager = Campaign.Current.TournamentManager as TournamentManager; foreach (var s in Campaign.Current.Settlements) { if (s.HasTournament) { TournamentGame tg = tournamentManager.GetTournamentGame(s.Town); if (tg is Fight2TournamentGame) { ((List <TournamentGame>)Traverse.Create(tournamentManager).Field("_activeTournaments").GetValue()).Remove(tg); } } } InformationManager.DisplayMessage(new InformationMessage("TournamentXPanded tournaments reset.", Colors.Red)); InformationManager.DisplayMessage(new InformationMessage("TournamentXPanded can now be saved in clean state.", Colors.Red)); } catch { // InformationManager.DisplayMessage(new InformationMessage("TournamentXPanded can now be saved in clean state.", Colors.Red)); } } } }
private string getWinner(TournamentGame tg) { //var playerId = tg.TournamentGamePlayers?.Count > 0 ? tg.TournamentGamePlayers.OrderByDescending(x => x.Score).First().PlayerId:0; //return playerId == 0?"":db.Players.Find(playerId).Name; return(tg.TournamentGamePlayers?.Count > 0 ? tg.TournamentGamePlayers.OrderByDescending(x => x.Score).First().Player.Name : ""); }