public static void ChangeSkillCooldown(uint id, int cd)
        {
            if (SkillsDatabase.TryGetSkill(id, SessionManager.CurrentPlayer.Class, out Skill skill))
            {
                Changed?.Invoke(new SkillCooldown(skill, cd, CooldownType.Skill));
            }

            //if (sk.Cooldown > SkillManager.LongSkillTreshold)
            //{
            //    if (LongSkillsQueue.Where(X => X.Id == sk.Id).Count() > 0)
            //    {
            //        if (sk.Cooldown == 0)
            //        {
            //            ResetSkill(sk.Id);
            //        }
            //        else
            //        {
            //            LongSkillsQueue.Where(x => x.Id == sk.Id).Single().Timer.Interval = sk.Cooldown;

            //            Changed?.Invoke(null, null, sk);
            //        }
            //    }
            //}
            //else
            //{
            //    if (NormalSkillsQueue.Where(X => X.Id == sk.Id).Count() > 0)
            //    {
            //        if (sk.Cooldown == 0)
            //        {
            //            ResetSkill(sk.Id);
            //        }
            //        else
            //        {
            //            try
            //            {
            //                NormalSkillsQueue.Where(x => x.Id == sk.Id).Single().Timer.Interval = sk.Cooldown;

            //            }
            //            catch (Exception)
            //            {

            //            }

            //            Changed?.Invoke(null, null, sk);
            //        }
            //    }

            //}

            //try
            //{
            //    //Console.WriteLine("{0} cooldown reduced.", SkillsDatabase.GetSkill(sk.Id, PacketParser.CurrentClass).Name);

            //}
            //catch (Exception)
            //{

            //    Console.WriteLine("{0}'s skill cooldown reduced.", sk.Id);
            //}
        }
 public static void ChangeSkillCooldown(uint id, uint cd)
 {
     if (SkillsDatabase.TryGetSkill(id, SessionManager.CurrentPlayer.Class, out Skill skill))
     {
         CooldownWindowViewModel.Instance.Change(skill, cd);
     }
 }
 public static void AddSkill(uint id, uint cd)
 {
     if (SkillsDatabase.TryGetSkill(id, SessionManager.CurrentPlayer.Class, out Skill skill))
     {
         if (!Filter(skill.Name))
         {
             return;
         }
         RouteSkill(new SkillCooldown(skill, (int)cd, CooldownType.Skill));
     }
 }
Exemplo n.º 4
0
 public static void CheckWarriorsSkillCooldown(S_START_COOLTIME_SKILL sk)
 {
     if (SkillsDatabase.SkillIdToName(sk.SkillId, Class.Warrior).Contains("Scythe I"))
     {
         Scythed?.Invoke((int)sk.Cooldown);
     }
     else if (SkillsDatabase.SkillIdToName(sk.SkillId, Class.Warrior).Contains("Deadly Gamble"))
     {
         GambleCooldown?.Invoke((int)sk.Cooldown);
     }
 }
Exemplo n.º 5
0
 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.AddSkillDirectly(hurricane, HURRICANE_DURATION);
     }
 }
 public static void AddSkill(uint id, ulong cd)
 {
     if (SkillsDatabase.TryGetSkill(id, SessionManager.CurrentPlayer.Class, out Skill skill))
     {
         if (!Filter(skill.Name))
         {
             return;
         }
         RouteSkill(new SkillCooldown(skill, cd, CooldownType.Skill, CooldownWindowViewModel.Instance.GetDispatcher()));
         //WindowManager.SkillsEnded = false;
     }
 }
Exemplo n.º 7
0
        private void OnStartup(object sender, StartupEventArgs ev)
        {
            var cd = AppDomain.CurrentDomain;

            cd.UnhandledException += GlobalUnhandledExceptionHandler;
            System.Diagnostics.Process.GetCurrentProcess().PriorityClass = System.Diagnostics.ProcessPriorityClass.High;
            if (File.Exists(Environment.CurrentDirectory + "/TCCupdater.exe"))
            {
                File.Delete(Environment.CurrentDirectory + "/TCCupdater.exe");
            }
            UpdateManager.CheckAppVersion();
            UpdateManager.CheckDatabaseVersion();



            TeraSniffer.Instance.Enabled = true;
            WindowManager.Init();
            LoadSettings();
            PacketRouter.Init();

            TeraSniffer.Instance.NewConnection += (srv) => SkillManager.Clear();
            TeraSniffer.Instance.EndConnection += () => SkillManager.Clear();

            var LoadThread = new Thread(new ThreadStart(() =>
            {
                SkillsDatabase.Load();
                Console.WriteLine("Skills loaded.");
                BroochesDatabase.SetBroochesIcons();
                Console.WriteLine("Set brooches icons");
                MonsterDatabase.Populate();
                Console.WriteLine("Monsters loaded");
                AbnormalityDatabase.Load();
                Console.WriteLine("Abnormalities loaded");
                WindowManager.CooldownWindow.LoadingDone();
            }));

            SessionManager.CurrentPlayer.Class = Class.None;

            WindowManager.ShowWindow(WindowManager.CooldownWindow);
            LoadThread.Start();
            //Debug();
        }
Exemplo n.º 8
0
        void ParseSkillConfig(string filename, Class c)
        {
            XDocument skillsDoc = XDocument.Load("resources/config/skills/" + filename);

            foreach (XElement skillElement in skillsDoc.Descendants("Skills").Descendants())
            {
                var type = CooldownType.Skill;
                if (skillElement.Name == "Item")
                {
                    type = CooldownType.Item;
                }
                if (skillElement.Name == "Passive")
                {
                    type = CooldownType.Passive;
                }

                var skillId = Convert.ToUInt32(skillElement.Attribute("id").Value);
                var row     = Convert.ToInt32(skillElement.Attribute("row").Value);
                if (type == CooldownType.Skill)
                {
                    if (SkillsDatabase.TryGetSkill(skillId, c, out var sk))
                    {
                        switch (row)
                        {
                        case 1:
                            Main.Add(new FixedSkillCooldown(sk, type, CooldownWindowViewModel.Instance.GetDispatcher(), false));
                            break;

                        case 2:
                            Secondary.Add(new FixedSkillCooldown(sk, type, CooldownWindowViewModel.Instance.GetDispatcher(), false));
                            break;

                        case 3:
                            Hidden.Add(new FixedSkillCooldown(sk, type, CooldownWindowViewModel.Instance.GetDispatcher(), false));
                            break;
                        }
                    }
                }
                else if (type == CooldownType.Item)
                {
                    if (ItemSkillsDatabase.TryGetItemSkill(skillId, out var sk))
                    {
                        switch (row)
                        {
                        case 1:
                            Main.Add(new FixedSkillCooldown(sk, type, CooldownWindowViewModel.Instance.GetDispatcher(), false));
                            break;

                        case 2:
                            Secondary.Add(new FixedSkillCooldown(sk, type, CooldownWindowViewModel.Instance.GetDispatcher(), false));
                            break;

                        case 3:
                            Hidden.Add(new FixedSkillCooldown(sk, type, CooldownWindowViewModel.Instance.GetDispatcher(), false));
                            break;
                        }
                    }
                }
                else if (type == CooldownType.Passive)
                {
                    if (PassivityDatabase.TryGetPassivitySkill(skillId, out var sk))
                    {
                        switch (row)
                        {
                        case 1:
                            Main.Add(new FixedSkillCooldown(sk, type, CooldownWindowViewModel.Instance.GetDispatcher(), false));
                            break;

                        case 2:
                            Secondary.Add(new FixedSkillCooldown(sk, type, CooldownWindowViewModel.Instance.GetDispatcher(), false));
                            break;

                        case 3:
                            Hidden.Add(new FixedSkillCooldown(sk, type, CooldownWindowViewModel.Instance.GetDispatcher(), false));
                            break;
                        }
                    }
                }
            }
        }
        private void OnStartup(object sender, StartupEventArgs ev)
        {
            var cd = AppDomain.CurrentDomain;

            cd.UnhandledException += GlobalUnhandledExceptionHandler;
            Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.Normal;
            if (File.Exists(Environment.CurrentDirectory + "/TCCupdater.exe"))
            {
                File.Delete(Environment.CurrentDirectory + "/TCCupdater.exe");
            }
            UpdateManager.CheckAppVersion();
            UpdateManager.CheckDatabaseVersion();

            SkillsDatabase.Load();
            //ItemSkillsDatabase.SetBroochesIcons();
            SettingsManager.LoadWindowSettings();
            SettingsManager.LoadSettings();
            WindowManager.Init();
            WindowManager.Settings = new SettingsWindow()
            {
                Name = "Settings"
            };
            FocusManager.FocusTimer.Start();
            TwitchConnector.Instance.Init();
            PacketProcessor.Init();

            TeraSniffer.Instance.NewConnection += (srv) =>
            {
                SkillManager.Clear();
                WindowManager.TrayIcon.Icon = WindowManager.ConnectedIcon;
                ChatWindowViewModel.Instance.AddTccMessage($"Connected to {srv.Name}.");
            };
            TeraSniffer.Instance.EndConnection += () =>
            {
                ChatWindowViewModel.Instance.AddTccMessage("Disconnected from the server.");
                GroupWindowViewModel.Instance.ClearAllAbnormalities();
                BuffBarWindowViewModel.Instance.Player.ClearAbnormalities();
                EntitiesManager.ClearNPC();

                SkillManager.Clear();
                WindowManager.TrayIcon.Icon = WindowManager.DefaultIcon;
                Proxy.CloseConnection();
            };

            SessionManager.CurrentPlayer.Class = Class.None;
            SessionManager.CurrentPlayer.Name  = "player";

            TeraSniffer.Instance.Enabled = true;
            TimeManager.Instance.SetServerTimeZone(SettingsManager.LastRegion);

            var v   = Assembly.GetExecutingAssembly().GetName().Version;
            var ver = $"TCC v{v.Major}.{v.Minor}.{v.Build}";

            ChatWindowViewModel.Instance.AddTccMessage(ver);

            if (!Debug)
            {
                return;
            }
            SessionManager.CurrentPlayer = new Player(1, "Foglio");
            CooldownWindowViewModel.Instance.LoadSkills(Utils.ClassEnumToString(Class.Warrior).ToLower() + "-skills.xml", Class.Warrior);

            for (uint i = 0; i < 1; i++)
            {
                var u = new User(GroupWindowViewModel.Instance.GetDispatcher());
                u.Name      = "Test_Dps" + i;
                u.PlayerId  = i;
                u.Online    = true;
                u.UserClass = Class.Warrior;


                GroupWindowViewModel.Instance.AddOrUpdateMember(u);
            }
            for (uint i = 0; i < 2; i++)
            {
                var u = new User(GroupWindowViewModel.Instance.GetDispatcher());
                u.Name      = "Test_Healer" + i;
                u.PlayerId  = i + 10;
                u.Online    = true;
                u.UserClass = Class.Elementalist;
                if (i == 1)
                {
                    u.Alive = false;
                }
                if (i == 0)
                {
                    u.Name = "Foglio";
                }

                GroupWindowViewModel.Instance.AddOrUpdateMember(u);
            }
            for (uint i = 0; i < 4; i++)
            {
                var u = new User(GroupWindowViewModel.Instance.GetDispatcher());
                u.Name      = "Test_Tank" + i;
                u.PlayerId  = i + 100;
                u.Online    = true;
                u.UserClass = Class.Lancer;
                GroupWindowViewModel.Instance.AddOrUpdateMember(u);
            }
            //foreach (var user in GroupWindowViewModel.Instance.Members)
            //{
            //    user.AddOrRefreshBuff(new Abnormality(4611, true, true, false, AbnormalityType.Buff),60*100*60,1);
            //    user.AddOrRefreshBuff(new Abnormality(46126, true, true, false, AbnormalityType.Buff),60*100*60,1);
            //    user.AddOrRefreshDebuff(new Abnormality(89308100, true, false, false, AbnormalityType.DOT),60*100*60,5);
            //    user.AddOrRefreshDebuff(new Abnormality(89308101, true, false, false, AbnormalityType.DOT),60*100*60,5);

            //}
            //GroupWindowViewModel.Instance.StartRoll();
            //GroupWindowViewModel.Instance.SetReadyStatus(new ReadyPartyMember());
        }