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