Пример #1
0
		/// <summary>
		/// Adds objective that has to be cleared to complete the quest.
		/// </summary>
		/// <param name="ident"></param>
		/// <param name="description"></param>
		/// <param name="regionId"></param>
		/// <param name="x"></param>
		/// <param name="y"></param>
		/// <param name="objective"></param>
		protected void AddObjective(string ident, string description, int regionId, int x, int y, QuestObjective objective)
		{
			if (this.Objectives.ContainsKey(ident))
			{
				Log.Error("{0}: Objectives must have an unique identifier.", this.GetType().Name);
				return;
			}

			objective.Ident = ident;
			objective.Description = description;
			objective.RegionId = regionId;
			objective.X = x;
			objective.Y = y;

			if (objective.Type == ObjectiveType.Kill)
			{
				ChannelServer.Instance.Events.CreatureKilledByPlayer -= this.OnCreatureKilledByPlayer;
				ChannelServer.Instance.Events.CreatureKilledByPlayer += this.OnCreatureKilledByPlayer;
			}

			if (objective.Type == ObjectiveType.Collect)
			{
				ChannelServer.Instance.Events.PlayerReceivesItem -= this.OnPlayerReceivesOrRemovesItem;
				ChannelServer.Instance.Events.PlayerReceivesItem += this.OnPlayerReceivesOrRemovesItem;
				ChannelServer.Instance.Events.PlayerRemovesItem -= this.OnPlayerReceivesOrRemovesItem;
				ChannelServer.Instance.Events.PlayerRemovesItem += this.OnPlayerReceivesOrRemovesItem;
			}

			if (objective.Type == ObjectiveType.ReachRank)
			{
				ChannelServer.Instance.Events.SkillRankChanged -= this.OnSkillRankChanged;
				ChannelServer.Instance.Events.SkillRankChanged += this.OnSkillRankChanged;
			}

			if (objective.Type == ObjectiveType.ReachLevel)
			{
				ChannelServer.Instance.Events.CreatureLevelUp -= this.OnCreatureLevelUp;
				ChannelServer.Instance.Events.CreatureLevelUp += this.OnCreatureLevelUp;
			}

			if (objective.Type == ObjectiveType.GetKeyword)
			{
				ChannelServer.Instance.Events.CreatureGotKeyword -= this.CreatureGotKeyword;
				ChannelServer.Instance.Events.CreatureGotKeyword += this.CreatureGotKeyword;
			}

			if (objective.Type == ObjectiveType.Equip)
			{
				ChannelServer.Instance.Events.PlayerEquipsItem -= this.OnPlayerEquipsItem;
				ChannelServer.Instance.Events.PlayerEquipsItem += this.OnPlayerEquipsItem;
			}

			if (objective.Type == ObjectiveType.Gather)
			{
				ChannelServer.Instance.Events.CreatureGathered -= this.OnCreatureGathered;
				ChannelServer.Instance.Events.CreatureGathered += this.OnCreatureGathered;
			}

			if (objective.Type == ObjectiveType.UseSkill)
			{
				ChannelServer.Instance.Events.PlayerUsedSkill -= this.OnPlayerUsedSkill;
				ChannelServer.Instance.Events.PlayerUsedSkill += this.OnPlayerUsedSkill;
			}

			this.Objectives.Add(ident, objective);
		}