Esempio n. 1
0
        public IEnumerable <Tera.Game.Skill> SkillsIdBySource(UserEntity source, Entity target, bool timed)
        {
            IEnumerable <Tera.Game.Skill> result;


            if (timed || target == null)
            {
                result = from skills in SourceTargetSkill[source.Id].Values
                         from skill in skills
                         select
                         SkillResult.GetSkill(source.Id, skill.Pet, skill.SkillId, skill.HotDot,
                                              NetworkController.Instance.EntityTracker, BasicTeraData.Instance.SkillDatabase,
                                              BasicTeraData.Instance.HotDotDatabase, BasicTeraData.Instance.PetSkillDatabase);

                return(result.Distinct());
            }


            result = from skills in SourceTargetSkill[source.Id][target.Id]
                     select
                     SkillResult.GetSkill(source.Id, skills.Pet, skills.SkillId, skills.HotDot,
                                          NetworkController.Instance.EntityTracker, BasicTeraData.Instance.SkillDatabase,
                                          BasicTeraData.Instance.HotDotDatabase, BasicTeraData.Instance.PetSkillDatabase);

            return(result.Distinct());
        }
Esempio n. 2
0
        public IEnumerable <Tera.Game.Skill> SkillsIdBySource(UserEntity source, Entity target, bool timed)
        {
            IEnumerable <Tera.Game.Skill> result;


            if (!SourceTargetSkill.ContainsKey(source))
            {
                return(new List <Tera.Game.Skill>());
            }
            if (timed || target == null)
            {
                result = from skills in SourceTargetSkill[source].Values
                         from skill in skills
                         select SkillResult.GetSkill(source, skill.Pet, skill.SkillId, skill.HotDot, PacketProcessor.Instance.EntityTracker,
                                                     BasicTeraData.Instance.SkillDatabase, BasicTeraData.Instance.HotDotDatabase, BasicTeraData.Instance.PetSkillDatabase);

                return(result.Distinct());
            }

            if (!SourceTargetSkill[source].ContainsKey(target))
            {
                return(new List <Tera.Game.Skill>());
            }
            result = from skills in SourceTargetSkill[source][target]
                     select SkillResult.GetSkill(source, skills.Pet, skills.SkillId, skills.HotDot, PacketProcessor.Instance.EntityTracker,
                                                 BasicTeraData.Instance.SkillDatabase, BasicTeraData.Instance.HotDotDatabase, BasicTeraData.Instance.PetSkillDatabase);

            return(result.Distinct());
        }
Esempio n. 3
0
        public IEnumerable <KeyValuePair <Entity, Tera.Game.Skill> > SkillsIdByTarget(Entity target)
        {
            if (!TargetSourceSkill.ContainsKey(target))
            {
                return(new List <KeyValuePair <Entity, Tera.Game.Skill> >());
            }

            var result = from skills in TargetSourceSkill[target].Values
                         from skill in skills
                         select new KeyValuePair <Entity, Tera.Game.Skill>(skill.Source,
                                                                           SkillResult.GetSkill(skill.Source, skill.Pet, skill.SkillId, skill.HotDot, PacketProcessor.Instance.EntityTracker,
                                                                                                BasicTeraData.Instance.SkillDatabase, BasicTeraData.Instance.HotDotDatabase, BasicTeraData.Instance.PetSkillDatabase));

            return(result.Where(x => x.Value != null).Distinct());
        }
Esempio n. 4
0
        public void Update(Database.Structures.Skill skill, bool received, long beginTime)
        {
            var skillInfo = SkillResult.GetSkill(skill.Source, skill.Pet, skill.SkillId, skill.HotDot, NetworkController.Instance.EntityTracker,
                                                 BasicTeraData.Instance.SkillDatabase, BasicTeraData.Instance.HotDotDatabase, BasicTeraData.Instance.PetSkillDatabase);
            var   entity     = received ? skill.Source : skill.Target;
            Brush color      = null;
            var   fontWeight = FontWeights.Normal;

            if (skill.Critic)
            {
                fontWeight = FontWeights.Bold;
            }
            SkillAmount.FontWeight = fontWeight;
            SkillAmount.ToolTip    = skill.Critic ? LP.Critical : LP.White;
            SkillName.Content      = skill.SkillId;
            Time.Content           = (skill.Time - beginTime) / TimeSpan.TicksPerSecond + LP.Seconds;
            if (skillInfo != null)
            {
                SkillIcon.ImageSource = BasicTeraData.Instance.Icons.GetImage(skillInfo.IconName);
                SkillName.Content     = skillInfo.Name;
            }
            SkillAmount.Content      = skill.Amount;
            SkillIconWrapper.ToolTip = skill.SkillId;
            SkillDirection.Content   = LP.ResourceManager.GetString(skill.Direction.ToString());
            switch (skill.Direction)
            {
            case HitDirection.Back:
                SkillDirection.Foreground = ((SolidColorBrush)Application.Current.FindResource("DamageText"));
                break;

            case HitDirection.Dot:
                if (skill.Type == Database.Database.Type.Heal)
                {
                    SkillDirection.Content = LP.Hot;
                }
                if (skill.Type == Database.Database.Type.Mana)
                {
                    SkillDirection.Content = LP.Mot;
                }
                break;

            case HitDirection.Front:
                SkillDirection.Foreground = ((SolidColorBrush)Application.Current.FindResource("ManaText"));
                break;

            case HitDirection.Side:
                SkillDirection.Foreground = ((SolidColorBrush)Application.Current.FindResource("BuffText"));
                break;
            }

            switch (skill.Type)
            {
            case Database.Database.Type.Damage:
                color = ((SolidColorBrush)Application.Current.FindResource("DamageText"));
                break;

            case Database.Database.Type.Heal:
                color = ((SolidColorBrush)Application.Current.FindResource("HealText"));
                break;

            case Database.Database.Type.Mana:
                color = ((SolidColorBrush)Application.Current.FindResource("ManaText"));
                break;

            case Database.Database.Type.Counter:
                color = ((SolidColorBrush)Application.Current.FindResource("CastText"));
                SkillDirection.Content    = LP.Counter;
                SkillDirection.Foreground = ((SolidColorBrush)Application.Current.FindResource("CastText"));
                break;
            }
            SkillAmount.Foreground = color;

            SkillName.ToolTip = skill.Time;
            if (entity is NpcEntity npcEntity)
            {
                SkillTarget.Content = npcEntity.Info.Name + " : " + npcEntity.Info.Area;
            }
            else if (entity is UserEntity)
            {
                SkillTarget.Content = ((UserEntity)entity).Name;
            }
            SkillPet.Content = skill.Pet == null ? "" : skill.Pet.Name;
        }
Esempio n. 5
0
        public void Update(Database.Structures.Skill skill, bool received, long beginTime)
        {
            var skillInfo = SkillResult.GetSkill(skill.Source, skill.Pet, skill.SkillId, skill.HotDot, NetworkController.Instance.EntityTracker,
                                                 BasicTeraData.Instance.SkillDatabase, BasicTeraData.Instance.HotDotDatabase, BasicTeraData.Instance.PetSkillDatabase);
            var   entity     = received ? skill.Source : skill.Target;
            Brush color      = null;
            var   fontWeight = FontWeights.Normal;

            if (skill.Critic)
            {
                fontWeight = FontWeights.Bold;
            }
            SkillAmount.FontWeight = fontWeight;
            SkillAmount.ToolTip    = skill.Critic ? LP.Critical : LP.White;
            SkillName.Content      = skill.SkillId;
            Time.Content           = (skill.Time - beginTime) / TimeSpan.TicksPerSecond + LP.Seconds;
            if (skillInfo != null)
            {
                SkillIcon.Source  = BasicTeraData.Instance.Icons.GetImage(skillInfo.IconName);
                SkillName.Content = skillInfo.Name;
            }
            SkillAmount.Content    = skill.Amount;
            SkillIcon.ToolTip      = skill.SkillId;
            SkillDirection.Content = LP.ResourceManager.GetString(skill.Direction.ToString());
            switch (skill.Direction)
            {
            case HitDirection.Back:
                SkillDirection.Foreground = Brushes.Red;
                break;

            case HitDirection.Dot:
                if (skill.Type == Database.Database.Type.Heal)
                {
                    SkillDirection.Content = LP.Hot;
                }
                if (skill.Type == Database.Database.Type.Mana)
                {
                    SkillDirection.Content = LP.Mot;
                }
                break;

            case HitDirection.Front:
                SkillDirection.Foreground = Brushes.BlueViolet;
                break;

            case HitDirection.Side:
                SkillDirection.Foreground = Brushes.SpringGreen;
                break;
            }

            switch (skill.Type)
            {
            case Database.Database.Type.Damage:
                color = Brushes.Red;
                break;

            case Database.Database.Type.Heal:
                color = Brushes.LawnGreen;
                break;

            case Database.Database.Type.Mana:
                color = Brushes.DeepSkyBlue;
                break;

            case Database.Database.Type.Counter:
                color = Brushes.Thistle;
                SkillDirection.Content    = LP.Counter;
                SkillDirection.Foreground = Brushes.Thistle;
                break;
            }
            SkillAmount.Foreground = color;

            SkillName.ToolTip = skill.Time;
            var npcEntity = entity as NpcEntity;

            if (npcEntity != null)
            {
                var npc = npcEntity;
                SkillTarget.Content = npc.Info.Name + " : " + npc.Info.Area;
            }
            else if (entity is UserEntity)
            {
                SkillTarget.Content = ((UserEntity)entity).Name;
            }
            SkillPet.Content = skill.Pet == null ? "" : skill.Pet.Name;
        }