示例#1
0
        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);
        }
示例#2
0
        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);
        }
示例#3
0
        public static bool IsNeutralTo(this Unit u)
        {
            if (!DBC.FactionTemplate.ContainsKey(u.Faction))
            {
                return(false);
            }

            FactionTemplate thisFaction = DBC.FactionTemplate[u.Faction];

            return(thisFaction.NeutralToAll());
        }
示例#4
0
        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));
        }
示例#5
0
 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);
     }
 }
示例#6
0
    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);
    }