Aura.Channel.World.Dungeons.DungeonManager.CreateDungeon C# (CSharp) Метод

CreateDungeon() приватный Метод

Generates instance id and creates dungeon.
private CreateDungeon ( string dungeonName, int itemId, Creature creature ) : Dungeon
dungeonName string
itemId int
creature Aura.Channel.World.Entities.Creature
Результат Dungeon
		private Dungeon CreateDungeon(string dungeonName, int itemId, Creature creature)
		{
			Dungeon dungeon;
			long instanceId = 0;
			var rnd = RandomProvider.Get();
			var itemData = AuraData.ItemDb.Find(itemId);

			// Create new dungeon for passes (includes quest items).
			// Since some "passes" don't have the dungeon_pass tag, but do
			// have quest_item, and quest items are generally supposed to
			// go to an NPC or onto an altar, we'll assume those are passes
			// as well.
			// If this assumption turnes out to be incorrect, we have to
			// check for some items specifically, like the Goddess Pass in G1.
			if (itemData != null && itemData.HasTag("/dungeon_pass/|/quest_item/"))
			{
				instanceId = this.GetInstanceId();
				dungeon = new Dungeon(instanceId, dungeonName, itemId, rnd.Next(), rnd.Next(), creature);
			}
			else
			{
				// Create new dungeon if there's not one yet
				var existing = this.Get(a => a.Name == dungeonName && a.ItemId == itemId);
				if (existing == null || ChannelServer.Instance.Conf.World.PrivateDungeons)
				{
					// Random floor plan on Tuesday
					var day = ErinnTime.Now.Month;
					var floorPlan = (day == 2 || ChannelServer.Instance.Conf.World.RandomFloors ? rnd.Next() : day);

					instanceId = this.GetInstanceId();
					dungeon = new Dungeon(instanceId, dungeonName, itemId, rnd.Next(), floorPlan, creature);
				}
				else
					dungeon = existing;
			}

			// Add new dungeon to list
			if (instanceId != 0)
			{
				lock (_syncLock)
					_dungeons.Add(instanceId, dungeon);
			}

			return dungeon;
		}