예제 #1
0
파일: Duel.cs 프로젝트: KroneckerX/WCell
		/// <summary>
		/// Checks several requirements for a new Duel to start.
		/// </summary>
		/// <param name="challenger"></param>
		/// <param name="rival"></param>
		/// <returns></returns>
		public static SpellFailedReason CheckRequirements(Character challenger, Character rival)
		{
			if (challenger.IsDueling)
			{
				return SpellFailedReason.CantDuelWhileStealthed;
			}
			if (challenger.Zone != null && !challenger.Zone.Flags.HasFlag(ZoneFlags.Duel))
			{
				return SpellFailedReason.NotHere;
			}
			if (!challenger.KnowsOf(rival))
			{
				// can't duel what you can't see
				return SpellFailedReason.NoValidTargets;
			}
			if (!rival.KnowsOf(challenger))
			{
				// can't duel when the other can't see you
				return SpellFailedReason.CantDuelWhileInvisible;
			}
			if (rival.IsInCombat)
			{
				// can't duel anyone who is currently in combat
				return SpellFailedReason.TargetInCombat;
			}
			if (rival.DuelOpponent != null)
			{
				// can't duel with someone who is already dueling
				return SpellFailedReason.TargetDueling;
			}
			if (challenger.Map is Battleground)
			{
				// can't duel in Battlegrounds
				return SpellFailedReason.NotHere;
			}
			return SpellFailedReason.Ok;
		}