diff --git a/TCC.UI/ClassSpecific/Mystic.cs b/TCC.UI/ClassSpecific/Mystic.cs index 364f38182..6ca75fc95 100644 --- a/TCC.UI/ClassSpecific/Mystic.cs +++ b/TCC.UI/ClassSpecific/Mystic.cs @@ -14,10 +14,11 @@ public static class Mystic public static void CheckHurricane(S_ABNORMALITY_BEGIN msg) { + if(msg.id == HURRICANE_ID) Console.WriteLine("Checking hurricane; id={0} caster={1} player={2}", msg.id, msg.casterId, SessionManager.CurrentPlayer.EntityId); if (msg.id == HURRICANE_ID && msg.casterId == SessionManager.CurrentPlayer.EntityId) { - //SkillsDatabase.TryGetSkill(HURRICANE_ID, Class.Common, out Skill hurricane); - SkillManager.AddSkill(HURRICANE_ID, HURRICANE_DURATION); + SkillsDatabase.TryGetSkill(HURRICANE_ID, Class.Common, out Skill hurricane); + SkillManager.AddSkillDirectly(hurricane, HURRICANE_DURATION); } } diff --git a/TCC.UI/Parsing/PacketRouter.cs b/TCC.UI/Parsing/PacketRouter.cs index 01169be5a..be53c0663 100644 --- a/TCC.UI/Parsing/PacketRouter.cs +++ b/TCC.UI/Parsing/PacketRouter.cs @@ -123,7 +123,7 @@ public static void HandleNewSkillCooldown(S_START_COOLTIME_SKILL p) } public static void HandleNewItemCooldown(S_START_COOLTIME_ITEM p) { - SkillManager.AddBrooch(p); + SkillManager.AddBrooch(p.ItemId, p.Cooldown); } public static void HandleDecreaseSkillCooldown(S_DECREASE_COOLTIME_SKILL p) { diff --git a/TCC.UI/SkillManager.cs b/TCC.UI/SkillManager.cs index e6bc8f1ac..1b4418f30 100644 --- a/TCC.UI/SkillManager.cs +++ b/TCC.UI/SkillManager.cs @@ -40,60 +40,59 @@ static bool Filter(string name) else return false; } + public static void AddSkillDirectly(Skill sk, uint cd) + { + RouteSkill(new SkillCooldown(sk, (int)cd, CooldownType.Skill)); + } - public static void AddSkill(uint id, uint cd) + static void RouteSkill(SkillCooldown skillCooldown) { - if(SkillsDatabase.TryGetSkill(id, SessionManager.CurrentPlayer.Class, out Skill skill)) + if (skillCooldown.Cooldown == 0) { - if (!Filter(skill.Name)) + ResetSkill(skillCooldown.Skill); + } + else if (skillCooldown.Cooldown < LongSkillTreshold) + { + if (NormalSkillsQueue.ToList().Any(x => x.Skill.Name == skillCooldown.Skill.Name)) { - return; + Refresh?.Invoke(skillCooldown); } - SkillCooldown skillCooldown = new SkillCooldown(skill, (int)cd, CooldownType.Skill); - - if (skillCooldown.Cooldown == 0) + else { - ResetSkill(skillCooldown.Skill); + //not present + App.Current.Dispatcher.Invoke(() => NormalSkillsQueue.Add(skillCooldown)); } - else if(skillCooldown.Cooldown < LongSkillTreshold) + } + else + { + if (LongSkillsQueue.ToList().Any(x => x.Skill.Name == skillCooldown.Skill.Name)) { - if(NormalSkillsQueue.ToList().Any(x => x.Skill.Name == skillCooldown.Skill.Name)) - { - Refresh?.Invoke(skillCooldown); - } - else - { - //not present - App.Current.Dispatcher.Invoke(() => NormalSkillsQueue.Add(skillCooldown)); - } + Refresh?.Invoke(skillCooldown); } - else + else { - if (LongSkillsQueue.ToList().Any(x => x.Skill.Name == skillCooldown.Skill.Name)) - { - Refresh?.Invoke(skillCooldown); - } - else - { - //not present - App.Current.Dispatcher.Invoke(() => LongSkillsQueue.Add(skillCooldown)); - } + //not present + App.Current.Dispatcher.Invoke(() => LongSkillsQueue.Add(skillCooldown)); } } + } - public static void AddBrooch(S_START_COOLTIME_ITEM packet) + public static void AddSkill(uint id, uint cd) { - if (BroochesDatabase.TryGetBrooch(packet.ItemId, out Skill brooch)) + if(SkillsDatabase.TryGetSkill(id, SessionManager.CurrentPlayer.Class, out Skill skill)) { - SkillCooldown broochCooldown = new SkillCooldown(brooch, (int)packet.Cooldown, CooldownType.Item); - if (LongSkillsQueue.Any(x => x.Skill.Name == broochCooldown.Skill.Name)) + if (!Filter(skill.Name)) { return; } - else - { - App.Current.Dispatcher.Invoke(()=> LongSkillsQueue.Add(broochCooldown)); - } + RouteSkill(new SkillCooldown(skill, (int)cd, CooldownType.Skill)); + } + } + public static void AddBrooch(uint id, uint cd) + { + if (BroochesDatabase.TryGetBrooch(id, out Skill brooch)) + { + RouteSkill(new SkillCooldown(brooch, (int)cd, CooldownType.Item)); } } @@ -164,8 +163,7 @@ public static void ChangeSkillCooldown(uint id, int cd) } public static void Clear() - { - + { App.Current.Dispatcher.BeginInvoke(new Action(() => { NormalSkillsQueue.Clear(); @@ -177,7 +175,6 @@ public static void Clear() SessionManager.CurrentPlayer.Class = Class.None; SessionManager.CurrentPlayer.EntityId = 0; - //WindowManager.ClassSpecificWindow.Enabled = false; LastSkills.Clear(); SessionManager.Logged = false; }