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()); }
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()); }
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()); }
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; }
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; }