Aura.Channel.Scripting.Scripts.QuestScript.AddObjective C# (CSharp) Method

AddObjective() protected method

Adds objective that has to be cleared to complete the quest.
protected AddObjective ( string ident, string description, int regionId, int x, int y, QuestObjective objective ) : void
ident string
description string
regionId int
x int
y int
objective Aura.Channel.World.Quests.QuestObjective
return void
		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.Create)
			{
				ChannelServer.Instance.Events.CreatureCreatedItem -= this.OnCreatureCreatedOrProducedItem;
				ChannelServer.Instance.Events.CreatureCreatedItem += this.OnCreatureCreatedOrProducedItem;
				ChannelServer.Instance.Events.CreatureProducedItem -= this.OnCreatureCreatedOrProducedItem;
				ChannelServer.Instance.Events.CreatureProducedItem += this.OnCreatureCreatedOrProducedItem;
			}

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

			if (objective.Type == ObjectiveType.ClearDungeon)
			{
				ChannelServer.Instance.Events.PlayerClearedDungeon -= this.OnPlayerClearedDungeon;
				ChannelServer.Instance.Events.PlayerClearedDungeon += this.OnPlayerClearedDungeon;
			}

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