public bool AutoAcceptNextQuest { get; set; }
public uint MountId { get; set; } = 71;
public GrandCompany GrandCompany { get; set; } = GrandCompany.None;
+ public bool HideInAllInstances { get; set; } = true;
}
internal sealed class AdvancedConfiguration
internal sealed class TerritoryData
{
private readonly ImmutableDictionary<uint, string> _territoryNames;
- private readonly ImmutableHashSet<uint> _territoriesWithMount;
+ private readonly ImmutableHashSet<ushort> _territoriesWithMount;
+ private readonly ImmutableHashSet<ushort> _dutyTerritories;
public TerritoryData(IDataManager dataManager)
{
_territoriesWithMount = dataManager.GetExcelSheet<TerritoryType>()!
.Where(x => x.RowId > 0 && x.Mount)
- .Select(x => x.RowId)
+ .Select(x => (ushort)x.RowId)
+ .ToImmutableHashSet();
+
+ _dutyTerritories = dataManager.GetExcelSheet<TerritoryType>()!
+ .Where(x => x.RowId > 0 && x.ContentFinderCondition.Row != 0)
+ .Select(x => (ushort)x.RowId)
.ToImmutableHashSet();
}
}
public bool CanUseMount(ushort territoryId) => _territoriesWithMount.Contains(territoryId);
+
+ public bool IsDutyInstance(ushort territoryId) => _dutyTerritories.Contains(territoryId);
}
Save();
}
+ bool hideInAllInstances = _configuration.General.HideInAllInstances;
+ if (ImGui.Checkbox("Hide quest window in all instanced duties", ref hideInAllInstances))
+ {
+ _configuration.General.HideInAllInstances = hideInAllInstances;
+ Save();
+ }
+
ImGui.EndTabItem();
}
if (!_clientState.IsLoggedIn || _clientState.LocalPlayer == null)
return false;
+ if (_configuration.General.HideInAllInstances && _territoryData.IsDutyInstance(_clientState.TerritoryType))
+ return false;
+
var currentQuest = _questController.CurrentQuest;
return currentQuest == null || !currentQuest.Quest.Data.TerritoryBlacklist.Contains(_clientState.TerritoryType);
}