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