Beispiel #1
0
        // all of this is really really bad but idc
        public static List <InquiryElement> AssemblePatrolSizes(PatrolData dat)
        {
            MBObjectManager       objManager = Game.Current.ObjectManager;
            List <InquiryElement> list       = new List <InquiryElement>();

            CharacterObject ch1 = objManager.GetObject <CharacterObject>("looter");
            CharacterObject ch2 = objManager.GetObject <CharacterObject>("imperial_recruit");
            CharacterObject ch3 = objManager.GetObject <CharacterObject>("imperial_infantryman");
            CharacterObject ch4 = objManager.GetObject <CharacterObject>("imperial_veteran_infantryman");

            if (dat.sizes.Contains("small"))
            {
                list.Add(new InquiryElement(dat, "Small " + "(" + dat.basePrice.ToString() + " gold)", new ImageIdentifier(CharacterCode.CreateFrom(ch1))));
            }
            if (dat.sizes.Contains("medium"))
            {
                if (Hero.MainHero.Gold >= dat.basePrice + dat.priceStep)
                {
                    list.Add(new InquiryElement(dat, "Medium " + "(" + (dat.basePrice + dat.priceStep).ToString() + " gold)", new ImageIdentifier(CharacterCode.CreateFrom(ch2))));
                }
                else
                {
                    list.Add(new InquiryElement(dat, "Medium " + "(" + (dat.basePrice + dat.priceStep).ToString() + " gold)", new ImageIdentifier(CharacterCode.CreateFrom(ch2)), false, "You do not have enough gold to purchase this size"));
                }
            }
            if (dat.sizes.Contains("large"))
            {
                if (Hero.MainHero.Gold >= dat.basePrice + (dat.priceStep * 2))
                {
                    list.Add(new InquiryElement(dat, "Large " + "(" + (dat.basePrice + (dat.priceStep * 2)).ToString() + " gold)", new ImageIdentifier(CharacterCode.CreateFrom(ch3))));
                }
                else
                {
                    list.Add(new InquiryElement(dat, "Large " + "(" + (dat.basePrice + (dat.priceStep * 2)).ToString() + " gold)", new ImageIdentifier(CharacterCode.CreateFrom(ch3)), false, "You do not have enough gold to purchase this size"));
                }
            }
            if (dat.sizes.Contains("huge"))
            {
                if (Hero.MainHero.Gold >= dat.basePrice + (dat.priceStep * 3))
                {
                    list.Add(new InquiryElement(dat, "Large " + "(" + (dat.basePrice + (dat.priceStep * 3)).ToString() + " gold)", new ImageIdentifier(CharacterCode.CreateFrom(ch4))));
                }
                else
                {
                    list.Add(new InquiryElement(dat, "Large " + "(" + (dat.basePrice + (dat.priceStep * 3)).ToString() + " gold)", new ImageIdentifier(CharacterCode.CreateFrom(ch4)), false, "You do not have enough gold to purchase this size"));
                }
            }

            if (list.Count == 0)
            {
                throw new Exception("Assembling sizes of patrol {" + dat.templateName + "} failed");
            }
            else
            {
                return(list);
            }
        }
Beispiel #2
0
        public static MBObjectBase ReadObjectReferenceFromPacket(
            MBObjectManager objectManager,
            CompressionInfo.UnsignedInteger compressionInfo,
            ref bool bufferReadValid)
        {
            uint id = GameNetworkMessage.ReadUintFromPacket(compressionInfo, ref bufferReadValid);

            if (!bufferReadValid || id <= 0U)
            {
                return((MBObjectBase)null);
            }
            MBGUID objectId = new MBGUID(id);

            return(objectManager.GetObject(objectId));
        }
        private static TownPatrolData SpawnTownPatrol(string name, string size, PatrolData dat, bool isPlayerSpawn, Settlement spawnSettlement = null)
        {
            MBObjectManager objManager = Game.Current.ObjectManager;
            TextObject      pName      = new TextObject(name);

            PartyTemplateObject templateObject = (PartyTemplateObject)objManager.GetObject <PartyTemplateObject>(dat.templateName + "_" + size);

            spawnSettlement = isPlayerSpawn ? Settlement.CurrentSettlement : spawnSettlement;

            MobileParty patrol = objManager.CreateObject <MobileParty>(dat.templateName + "_" + size + "_" + 1);

            patrol.InitializeMobileParty(MenuUtils.ConstructTroopRoster(templateObject, patrol.Party), new TroopRoster(patrol.Party), isPlayerSpawn ? Settlement.CurrentSettlement.GatePosition : spawnSettlement.GatePosition, 0);

            patrol.SetCustomName(pName);
            patrol.Party.Owner = spawnSettlement.MapFaction.Leader == null?spawnSettlement.OwnerClan.Heroes.ToList().First() : spawnSettlement.OwnerClan.Leader;

            patrol.Party.Visuals.SetMapIconAsDirty();
            patrol.ActualClan     = spawnSettlement.OwnerClan;
            patrol.HomeSettlement = spawnSettlement;
            MenuUtils.CreatePartyTrade(patrol);

            foreach (ItemObject obj in ItemObject.All)
            {
                if (obj.IsFood)
                {
                    int num = MBRandom.RandomInt(patrol.MemberRoster.TotalManCount / 3, patrol.MemberRoster.TotalManCount);
                    if (num > 0)
                    {
                        patrol.ItemRoster.AddToCounts(obj, num);
                    }
                }
            }

            patrol.SetMovePatrolAroundSettlement(spawnSettlement);

            return(new TownPatrolData(pName.ToString(), size, patrol));
        }