internal async void Check(FFXIVMemory mem) { if (!hubConnection.Connected) { await Connect(); } if (!hubConnection.Connected) { return; } if (lastJoined != mem.GetWorldId() && Joined && !Joining || !Joined) { await LeaveGroup(); await JoinServerGroup(); } ServerTimeUtc = mem.GetServerUtcTime(); ushort thisZone = mem.GetZoneId(); if (thisZone != lastZone && Settings.Default.OncePerHunt && Settings.Default.ForgetOnZoneChange) { HuntsPutInChat.Clear(); } if (Array.IndexOf(DCZones, thisZone) > -1 && Array.IndexOf(DCZones, lastZone) == -1 && Joined) { LastShoutChatSync = await JoinDCZone(thisZone); } else if (Array.IndexOf(DCZones, lastZone) > -1 && Array.IndexOf(DCZones, thisZone) == -1) { await LeaveDCZone(); } lastZone = thisZone; foreach (Monster c in mem.Combatants.OfType <Monster>().Where(c => Hunts.Exists(h => h.Id == c.BNpcNameID && GetZoneId(c.BNpcNameID) == thisZone))) { _ = ReportHunt(c); } if (Array.IndexOf(DCZones, thisZone) > -1 && LastShoutChatSync != null) { await ReportDCShoutChat(mem.ReadChatLogBackwards(filter : x => x.Channel == ChatChannel.Shout, stopOn : x => x.Timestamp <= LastShoutChatSync).OrderByDescending(x => x.Timestamp).Take(10)); } foreach (FATE f in mem.GetFateList().Where(f => f.ZoneID == thisZone)) { _ = ReportFate(f); if (f.IsDataCenterShared() && PutInChat(new FATEReport(f) { WorldId = mem.GetWorldId() }) && Settings.Default.FlashTaskbarIconOnHuntAndFATEs) { NativeMethods.FlashTaskbarIcon(mem.Process); } } }
internal async void Check(FFXIVMemory mem) { FFXIVHunts.< > c__DisplayClass44_0 CS$ < > 8__locals1 = new FFXIVHunts.< > c__DisplayClass44_0(); if (!FFXIVHunts.hubConnection.Connected) { await this.Connect(); } if (FFXIVHunts.hubConnection.Connected) { ushort currentWorldID = mem.GetCurrentWorldId(); if ((FFXIVHunts.LastJoinedWorldID != currentWorldID && FFXIVHunts.Joined && !FFXIVHunts.Joining) || !FFXIVHunts.Joined) { await this.LeaveGroup(); await this.JoinServerGroup(); } FFXIVHunts.ServerTimeUtc = mem.GetServerUtcTime(); CS$ < > 8__locals1.thisZone = mem.GetZoneId(); if (CS$ < > 8__locals1.thisZone != FFXIVHunts.lastZone && Settings.Default.OncePerHunt && Settings.Default.ForgetOnZoneChange) { FFXIVHunts.HuntsPutInChat.Clear(); } if (Array.IndexOf <uint>(FFXIVHunts.DCZones, (uint)CS$ < > 8__locals1.thisZone) > -1 && Array.IndexOf <uint>(FFXIVHunts.DCZones, (uint)FFXIVHunts.lastZone) == -1 && FFXIVHunts.Joined) { TaskAwaiter <DateTime> taskAwaiter = this.JoinDCZone(CS$ < > 8__locals1.thisZone).GetAwaiter(); if (!taskAwaiter.IsCompleted) { await taskAwaiter; TaskAwaiter <DateTime> taskAwaiter2; taskAwaiter = taskAwaiter2; taskAwaiter2 = default(TaskAwaiter <DateTime>); } FFXIVHunts.LastShoutChatSync = taskAwaiter.GetResult(); } else if (Array.IndexOf <uint>(FFXIVHunts.DCZones, (uint)FFXIVHunts.lastZone) > -1 && Array.IndexOf <uint>(FFXIVHunts.DCZones, (uint)CS$ < > 8__locals1.thisZone) == -1) { await this.LeaveDCZone(); } FFXIVHunts.lastZone = CS$ < > 8__locals1.thisZone; IEnumerable <Monster> source = mem.Combatants.OfType <Monster>(); Func <Monster, bool> predicate; if ((predicate = CS$ < > 8__locals1.< > 9__3) == null) { FFXIVHunts.< > c__DisplayClass44_0 CS$ < > 8__locals2 = CS$ < > 8__locals1; Func <Monster, bool> func = (Monster c) => FFXIVHunts.CurrentWorld.Hunts.Exists((Hunt h) => h.Id == c.BNpcNameID && FFXIVHunts.GetZoneId(c.BNpcNameID) == CS$ < > 8__locals1.thisZone); CS$ < > 8__locals2.< > 9__3 = func; predicate = func; } foreach (Monster c2 in source.Where(predicate)) { this.ReportHunt(c2); } if (Array.IndexOf <uint>(FFXIVHunts.DCZones, (uint)CS$ < > 8__locals1.thisZone) > -1) { DateTime lastShoutChatSync = FFXIVHunts.LastShoutChatSync; await this.ReportDCShoutChat((from x in mem.ReadChatLogBackwards(1000, (ChatMessage x) => x.Channel == ChatChannel.Shout && !string.IsNullOrWhiteSpace(x.Sender.Name), (ChatMessage x) => x.Timestamp <= FFXIVHunts.LastShoutChatSync) orderby x.Timestamp descending select x).Take(10)); } IEnumerable <FATE> fateList = mem.GetFateList(); Func <FATE, bool> predicate2; if ((predicate2 = CS$ < > 8__locals1.< > 9__5) == null) { FFXIVHunts.< > c__DisplayClass44_0 CS$ < > 8__locals3 = CS$ < > 8__locals1; Func <FATE, bool> func2 = (FATE f) => f.ZoneID == CS$ < > 8__locals1.thisZone; CS$ < > 8__locals3.< > 9__5 = func2; predicate2 = func2; } foreach (FATE f2 in fateList.Where(predicate2)) { this.ReportFate(f2); if (f2.IsDataCenterShared() && this.PutInChat(new FATEReport(f2) { WorldId = mem.GetHomeWorldId() }) && Settings.Default.FlashTaskbarIconOnHuntAndFATEs) { NativeMethods.FlashTaskbarIcon(mem.Process); } } }