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