示例#1
0
        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)) : "");
 }
示例#5
0
        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);
示例#7
0
        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;
        }
示例#9
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();
        }
示例#10
0
 private static void Prefix(TournamentGame game)
 {
 }
示例#11
0
        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);
        }
示例#12
0
        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));
 }
示例#15
0
        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);
        }
示例#16
0
        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);*/
        }
示例#19
0
 public static void SetTournamentSelectedPrize(TournamentGame tournamentGame, ItemObject prize)
 {
     typeof(TournamentGame).GetProperty("Prize").SetValue(tournamentGame, prize);
 }
示例#20
0
        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);
        }
示例#21
0
        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 : "");
 }