public FactionTemplateEntry(int factionTemplateId, int factionId, FactionTemplateFlags factionFlags, FactionGroupMask ownFactionGroupMask, FactionGroupMask friendlyFactionGroupMask, FactionGroupMask enemyFactionGroupMask, [NotNull] Vector4 <int> enemyFaction, [NotNull] Vector4 <int> friendlyFaction)
 {
     FactionTemplateId        = factionTemplateId;
     FactionId                = factionId;
     FactionFlags             = factionFlags;
     OwnFactionGroupMask      = ownFactionGroupMask;
     FriendlyFactionGroupMask = friendlyFactionGroupMask;
     EnemyFactionGroupMask    = enemyFactionGroupMask;
     EnemyFaction             = enemyFaction ?? throw new ArgumentNullException(nameof(enemyFaction));
     FriendlyFaction          = friendlyFaction ?? throw new ArgumentNullException(nameof(friendlyFaction));
 }
Exemple #2
0
        /// <summary>
        /// Whether this Zone is hostile towards the given Character
        /// </summary>
        /// <param name="chr">The Character in question.</param>
        /// <returns>Whether or not to set the PvP flag.</returns>
        public bool IsHostileTo(Character chr)
        {
            FactionGroupMask ownership = this.Ownership;

            if (this.Ownership == FactionGroupMask.None && this.ParentZoneId != ZoneId.None &&
                this.ParentZone.Ownership != FactionGroupMask.None)
            {
                ownership = this.ParentZone.Ownership;
            }
            switch (ownership)
            {
            case FactionGroupMask.None:
                return(RealmServerConfiguration.ServerType.HasAnyFlag(RealmServerType.RPPVP));

            case FactionGroupMask.Alliance:
                if (chr.FactionGroup == FactionGroup.Alliance)
                {
                    return(false);
                }
                if (!RealmServerConfiguration.ServerType.HasAnyFlag(RealmServerType.RPPVP) && !this.IsCity)
                {
                    return(this.IsArena);
                }
                return(true);

            case FactionGroupMask.Horde:
                if (chr.FactionGroup == FactionGroup.Horde)
                {
                    return(false);
                }
                if (!RealmServerConfiguration.ServerType.HasAnyFlag(RealmServerType.RPPVP) && !this.IsCity)
                {
                    return(this.IsArena);
                }
                return(true);

            default:
                return(false);
            }
        }
Exemple #3
0
 public static bool HasAnyFlag(this FactionGroupMask flags, FactionGroupMask otherFlags)
 {
     return((flags & otherFlags) != 0);
 }
Exemple #4
0
		public static bool HasAnyFlag(this FactionGroupMask flags, FactionGroupMask otherFlags)
		{
			return (flags & otherFlags) != 0;
		}