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)); }
/// <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); } }
public static bool HasAnyFlag(this FactionGroupMask flags, FactionGroupMask otherFlags) { return((flags & otherFlags) != 0); }
public static bool HasAnyFlag(this FactionGroupMask flags, FactionGroupMask otherFlags) { return (flags & otherFlags) != 0; }