private static void TeraSniffer_OnEndConnection() { ChatWindowManager.Instance.AddTccMessage("Disconnected from the server."); WindowManager.FloatingButton.NotifyExtended($"TCC", "Disconnected"); GroupWindowViewModel.Instance.ClearAllAbnormalities(); BuffBarWindowViewModel.Instance.Player.ClearAbnormalities(); EntitiesManager.ClearNPC(); SkillManager.Clear(); WindowManager.TrayIcon.Icon = WindowManager.DefaultIcon; Proxy.CloseConnection(); }
public static void EndAbnormality(ulong target, uint id) { if (AbnormalityDatabase.Abnormalities.TryGetValue(id, out Abnormality ab)) { App.Current.Dispatcher.Invoke(() => { if (target == SessionManager.CurrentPlayer.EntityId) { SessionManager.EndPlayerAbnormality(ab); } else if (EntitiesManager.TryGetBossById(target, out Boss b) && b.HasBuff(ab)) { b.EndBuff(ab); } }); } }
static void BeginNPCAbnormality(Abnormality ab, int stacks, int duration, ulong target) { if (EntitiesManager.TryGetBossById(target, out Boss b)) { App.Current.Dispatcher.Invoke(() => { if (b.HasBuff(ab)) { NPCAbnormalityUpdated?.Invoke(b.EntityId, ab, duration, stacks); } else { if (!ab.Infinity) { EntitiesManager.CurrentBosses.Where(x => x.EntityId == target).First().Buffs.Add(new AbnormalityDuration(ab, duration, stacks, target)); } else { EntitiesManager.CurrentBosses.Where(x => x.EntityId == target).First().Buffs.Insert(0, new AbnormalityDuration(ab, -1, stacks, target)); } } }); } }
private static void DebugStuff() { GroupWindowViewModel.Instance.AddOrUpdateMember(new User(BaseDispatcher) { Alive = true, Awakened = true, CurrentHp = 1000, MaxHp = 1000, EntityId = 1, ServerId = 1, PlayerId = 1, UserClass = Class.Archer, Online = true }); EntitiesManager.SpawnNPC(920, 3000, 11, Visibility.Visible); EntitiesManager.SpawnNPC(15, 1, 12, Visibility.Visible); EntitiesManager.UpdateNPC(12, 1000, 1000); AbnormalityManager.BeginOrRefreshPartyMemberAbnormality(1, 1, 1495, 200000, 1); AbnormalityManager.BeginAbnormality(1495, 10, 200000, 1); AbnormalityManager.BeginAbnormality(1495, 11, 200000, 1); AbnormalityManager.BeginAbnormality(1495, 12, 200000, 1); //for (int i = 0; i < 2000; i++) //{ // ChatWindowManager.Instance.AddTccMessage($"Test {i}"); //} /* * EntitiesManager.SpawnNPC(210, 1108, 11, Visibility.Visible); * var c = 0; * while (c < 1000) * { * AbnormalityManager.BeginAbnormality(2, 10, 500, 1); * AbnormalityManager.BeginAbnormality(2, 11, 500, 1); * Console.WriteLine("Added " + c); * Thread.Sleep(100); * AbnormalityManager.EndAbnormality(2, 10); * AbnormalityManager.EndAbnormality(2, 11); * Console.WriteLine("Removed " + c); * c++; * } */ //AbnormalityManager.BeginAbnormality(1495, 10, 10000, 5); //AbnormalityManager.BeginAbnormality(2066, 10, 100000, 10); //AbnormalityManager.BeginAbnormality(2074, 10, 10000000, 20); //var r = new Random(); //for (int i = 0; i < 30; i++) //{ // WindowManager.CivilUnrestWindow.VM.AddGuild(new CityWarGuildInfo(1, (uint)i, 0, 0, (float)r.Next(0, 100) / 100)); // WindowManager.CivilUnrestWindow.VM.SetGuildName((uint)i, "Guild " + i); // WindowManager.CivilUnrestWindow.VM.AddDestroyedGuildTower((uint)r.Next(0, 29)); //} //ClassWindowViewModel.Instance.CurrentClass = Class.Priest; //EntitiesManager.SpawnNPC(920, 3000, 10, Visibility.Visible); //Task.Delay(2000).ContinueWith(t => BossGageWindowViewModel.Instance.AddOrUpdateBoss(10,5250000000,3240000000,true, HpChangeSource.BossGage)); //Task.Delay(4000).ContinueWith(t => BossGageWindowViewModel.Instance.AddOrUpdateBoss(10,5250000000,2240000000,true, HpChangeSource.BossGage)); //EntitiesManager.SpawnNPC(950,3000,10,Visibility.Visible); //EntitiesManager.SpawnNPC(970,1000,11,Visibility.Visible); //EntitiesManager.SpawnNPC(970,2000,12,Visibility.Visible); //EntitiesManager.SpawnNPC(970,3000,13,Visibility.Visible); //EntitiesManager.SetNPCStatus(10, true); //Task.Delay(1000).ContinueWith(t => (ClassWindowViewModel.Instance.CurrentManager as WarriorBarManager).DeadlyGamble.Buff.Start(10000)); //WindowManager.LfgListWindow.ShowWindow(); // var l = new Listing(); // l.LeaderId = 10; // l.Message = "SJG exp only"; // l.LeaderName = "Foglio"; // l.Players.Add(new User(WindowManager.LfgListWindow.Dispatcher){PlayerId = 10, IsLeader = true, Online = true}); // l.Applicants.Add(new User(WindowManager.LfgListWindow.Dispatcher){PlayerId = 1, Name = "Applicant", Online = true, UserClass = Class.Priest}); // WindowManager.LfgListWindow.VM.Listings.Add(l); //var l = new List<User>(); //var r = new Random(); //for (uint i = 0; i < 10; i++) //{ // var u = new User(GroupWindowViewModel.Instance.GetDispatcher()) // { // Name = i.ToString(), // PlayerId = i, // ServerId = i, // EntityId = i, // Online = true, // Laurel = (Laurel)(r.Next(0, 5)), // HasAggro = i == 1, // Alive = i != 0, // UserClass = (Class)r.Next(0, 12), // Awakened = i < 5, // }; // GroupWindowViewModel.Instance.AddOrUpdateMember(u); //} ////GroupWindowViewModel.Instance.SetRaid(true); //GroupWindowViewModel.Instance.SetNewLeader(1, "1"); }
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()); }