private static void DoorScan(IncursionData data) { foreach (var door in IncursionDoors) { var targetable = door.IsTargetable; var id = door.Id; var index = data.Doors.FindIndex(d => d.Id == id); if (index >= 0) { if (!targetable) { GlobalLog.Info($"[HandleIncursionTask] Removing opened {door.WalkablePosition()}"); data.Doors.RemoveAt(index); } } else { if (targetable) { var pos = door.WalkablePosition(); GlobalLog.Warn($"[HandleIncursionTask] Registering {pos}"); data.Doors.Add(new CachedObject(id, pos)); } } } }
private static void ArchitectScan(IncursionData data) { foreach (var icon in LokiPoe.InstanceInfo.MinimapIcons) { var iconName = icon.MinimapIcon.Name; if (iconName != IconUpgrade && iconName != IconChange) { continue; } var id = icon.ObjectId; if (Blacklist.Contains(id)) { continue; } var settings = Incursion.CurrentRoomSettings; if (settings != null) { if (settings.NoUpgrade && iconName == IconUpgrade) { GlobalLog.Warn("[HandleIncursionTask] Blacklisting upgrading architect according to settings."); Blacklist.Add(id, TimeSpan.FromMinutes(10)); continue; } if (settings.NoChange && iconName == IconChange) { GlobalLog.Warn("[HandleIncursionTask] Blacklisting changing architect according to settings."); Blacklist.Add(id, TimeSpan.FromMinutes(10)); continue; } } var mob = icon.NetworkObject as Monster; if (mob == null) { continue; } var isDead = mob.IsDead; var index = data.Architects.FindIndex(a => a.Id == id); if (index >= 0) { if (isDead) { GlobalLog.Info($"[HandleIncursionTask] Removing dead {mob.WalkablePosition()}"); data.Architects.RemoveAt(index); } else { data.Architects[index].Position = mob.WalkablePosition(); } } else { if (!isDead) { var pos = mob.WalkablePosition(); GlobalLog.Warn($"[HandleIncursionTask] Registering {pos}"); data.Architects.Add(new CachedArchitect(id, pos, iconName)); } } } }