private string Create(Session session, string[] parms) { bool help = false; byte?level = null; int? campCount = null; uint?x = null; uint?y = null; try { var p = new OptionSet { { "?|help|h", v => help = true }, { "x=", v => x = uint.Parse(v.TrimMatchingQuotes()) }, { "y=", v => y = uint.Parse(v.TrimMatchingQuotes()) }, { "camps=", v => campCount = int.Parse(v.TrimMatchingQuotes()) }, { "level=", v => level = byte.Parse(v.TrimMatchingQuotes()) }, }; p.Parse(parms); } catch (Exception) { help = true; } if (help || x == null || y == null || level == null || campCount == null || !x.HasValue || !y.HasValue || !campCount.HasValue || !level.HasValue) { return("BarbarianTribeCreate --x=x --y=y --level=level --camps=camps"); } var success = false; locker.Lock(session.Player).Do(() => { world.Regions.LockRegion(x.Value, y.Value); success = barbarianTribeManager.CreateBarbarianTribeNear(level.Value, campCount.Value, x.Value, y.Value, 0); world.Regions.UnlockRegion(x.Value, y.Value); }); return(success ? "OK" : "Unable to find empty spot"); }
/// <summary> /// Creates a city under the specified player with initial troop and main building /// </summary> public virtual void CreateCity(ICityFactory cityFactory, IPlayer player, string cityName, byte level, Position cityPosition, IBarbarianTribeManager barbarianTribeManager, out ICity city) { city = cityFactory.CreateCity(world.Cities.GetNextCityId(), player, cityName, cityPosition, formula.GetInitialCityResources(), formula.GetInitialCityRadius(), formula.GetInitialAp(), Theme.DEFAULT_THEME_ID, Theme.DEFAULT_THEME_ID, Theme.DEFAULT_THEME_ID, Theme.DEFAULT_THEME_ID); var mainBuildingPosition = cityPosition.Left(); IStructure mainBuilding = city.CreateStructure(2000, level, mainBuildingPosition.X, mainBuildingPosition.Y); player.Add(city); world.Cities.Add(city); city.BeginUpdate(); mainBuilding.BeginUpdate(); world.Regions.Add(mainBuilding); mainBuilding.EndUpdate(); var defaultTroop = city.CreateTroopStub(); defaultTroop.BeginUpdate(); defaultTroop.AddFormation(FormationType.Normal); defaultTroop.AddFormation(FormationType.Garrison); defaultTroop.AddFormation(FormationType.InBattle); defaultTroop.EndUpdate(); RecalculateCityResourceRates(city); SetResourceCap(city); city.EndUpdate(); if (player.GetCityCount() == 1) { barbarianTribeManager.CreateBarbarianTribeNear(1, 10, city.PrimaryPosition.X, city.PrimaryPosition.Y, 10); } }