private void GenerateStageDecoration() { if (Winners != null) { Winners.Clear(); } if (PointTable != null) { PointTable.Clear(); } if (RewardBag != null) { RewardBag.Delete(); RewardBag = null; } var map = Siege.SiegeShard ? Map.Felucca : Map.Trammel; int treeType = 1; switch (CurrentCity) { case City.Trinsic: treeType = 2; break; case City.Britain: case City.NewMagincia: treeType = 3; break; case City.Minoc: treeType = 4; break; } if (TownTree != null) { TownTree.Delete(); } TownTree = new TownTree(treeType); TownTree.MoveToWorld(_CityLocations[Stage], map); if (Elf == null) { Elf = new FestivalElf(); } var p = new Point3D(TownTree.X + Utility.RandomMinMax(-1, 1), TownTree.Y + Utility.RandomMinMax(-1, 1), TownTree.Z); Elf.MoveToWorld(p, map); Elf.Home = p; Elf.RangeHome = 5; }
private void SetupClaimPeriod() { var map = Siege.SiegeShard ? Map.Felucca : Map.Trammel; Point3D p = TownTree.Location; RewardBag = new SantasGiftBag(); RewardBag.MoveToWorld(new Point3D(p.X, p.Y + 2, p.Z), map); if (PointTable.Count > 0) { Winners = new Dictionary <PlayerMobile, bool>(); if (TownTree.Stage == TreeStage.Five) { foreach (var pm in PointTable.Keys) { Winners[pm] = false; } } else { double perc; switch (TownTree.Stage) { default: perc = 0.1; break; case TreeStage.Three: perc = .25; break; case TreeStage.Four: perc = .5; break; } int count = (int)Math.Max(1, (double)PointTable.Count * perc); for (int i = 0; i < count; i++) { DoRaffle(); } } } PointTable.Clear(); var tree = TownTree; if (tree != null) { for (int i = 0; i < 30; i++) { Point3D spawnPoint; var temp = new Point3D(Utility.RandomMinMax(tree.X - 5, tree.X + 5), Utility.RandomMinMax(tree.Y - 5, tree.Y + 5), tree.Z); IPooledEnumerable eable = map.GetItemsInRange(temp, 0); var spawnZ = temp.Z; foreach (var comp in eable.OfType <AddonComponent>().Where(c => c.ItemID >= 0x46A2 && c.ItemID < 0x46A7)) { spawnZ = Math.Max(spawnZ, comp.Z + 5); } eable.Free(); if (spawnZ != TownTree.Z) { spawnPoint = temp; spawnPoint.Z = spawnZ; } else { Spells.SpellHelper.AdjustField(ref temp, map, 20, false); spawnPoint = temp; } var component = new AddonComponent(Utility.Random(0x46A2, 6)) { Hue = Utility.RandomMinMax(1, 500) }; tree.AddComponent(component, tree.X - spawnPoint.X, tree.Y - spawnPoint.Y, tree.Z - spawnPoint.Z); } } }