private static Vendor FindNearestVendor(Vendor.VendorType vendorType) { var results = new List <Vendor>(); WoWPoint loc = StyxWoW.Me.Location; using (SQLiteDataReader reader = GetSqliteDataReader(s_sqlCmd_NearestVendor, StyxWoW.Me.MapId, (uint)vendorType.AsNpcFlag(), loc.X, loc.Y, loc.Z)) { while (reader.Read()) { Vendor result = GetVendor(reader, vendorType); var factionId = (uint)reader.GetInt32(reader.GetOrdinal("FactionId")); if (StyxWoW.Me.FactionTemplate.GetReactionTowards(FactionTemplate.FromId(factionId)) >= WoWUnitReaction.Neutral && !s_vendorBlacklist.Contains(result.Entry) && Navigator.CanNavigateFully(loc, result.Location)) { results.Add(result); if (results.Count >= 5) { break; } } } } return(results.Any() ? results.OrderBy(r => r.Location.DistanceSqr(loc)).FirstOrDefault() : null); }
private static Mailbox FindNearestMailbox() { var results = new List <Mailbox>(); WoWPoint loc = StyxWoW.Me.Location; using (SQLiteDataReader reader = GetSqliteDataReader(s_sqlCmd_NearestMailbox, StyxWoW.Me.MapId, loc.X, loc.Y, loc.Z)) { while (reader.Read()) { Mailbox result = GetMailbox(reader); var factionId = (uint)reader.GetInt32(reader.GetOrdinal("faction")); var factionTemplate = FactionTemplate.FromId(factionId); if ((factionTemplate == null || StyxWoW.Me.FactionTemplate.GetReactionTowards(factionTemplate) >= WoWUnitReaction.Neutral) && Navigator.CanNavigateFully(loc, result.Location)) { results.Add(result); if (results.Count >= 5) { break; } } } } return(results.Any() ? results.OrderBy(r => r.Location.DistanceSqr(loc)).FirstOrDefault() : null); }
public static bool IsNeutralTo(this Unit u) { if (!DBC.FactionTemplate.ContainsKey(u.Faction)) { return(false); } FactionTemplate thisFaction = DBC.FactionTemplate[u.Faction]; return(thisFaction.NeutralToAll()); }
public static bool IsEnemyTo(this Unit u, Unit target) { if (!DBC.FactionTemplate.ContainsKey(u.Faction) || !DBC.FactionTemplate.ContainsKey(target.Faction)) { return(false); } FactionTemplate thisFaction = DBC.FactionTemplate[u.Faction]; FactionTemplate targetFaction = DBC.FactionTemplate[target.Faction]; return(thisFaction.IsEnemyTo(targetFaction)); }
public static void LoadFactionsEditorFiles() { try { DbcStores.InitFiles(); ChrClasses.LoadData(); ChrRaces.LoadData(); Faction.LoadData(); FactionGroup.LoadData(); FactionTemplate.LoadData(); } catch (System.Exception ex) { MessageBox.Show(ex.Message); } }
public Faction(FactionTemplate factionTemplate) { Religions = new Dictionary <string, int>(); EntitiesWithFluff = new List <Entity>(); Type = factionTemplate.Type; var index = Random.Range(0, factionTemplate.EntityTypes.Count); EntityType = EntityTemplateLoader.GetEntityTemplate(factionTemplate.EntityTypes[index]); CreateLeader(); WorldData.Instance.FactionLeaders.Add(Leader); FactionReputation = new Reputation(EntityGroupType.Faction, Name); WorldData.Instance.EntityGroupRelationships.Add(Name, FactionReputation); }