diff --git a/apps/backend/Dockerfile b/apps/backend/Dockerfile
index bfed8e789..1138c41c6 100644
--- a/apps/backend/Dockerfile
+++ b/apps/backend/Dockerfile
@@ -1,4 +1,4 @@
-FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
+FROM mcr.microsoft.com/dotnet/sdk:10.0 AS build
WORKDIR /app
COPY . .
@@ -7,7 +7,7 @@ WORKDIR /app/apps/backend
RUN dotnet publish -c Release -o out
-FROM mcr.microsoft.com/dotnet/aspnet:9.0 AS runtime
+FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime
#RUN apk add --no-cache icu-libs
diff --git a/apps/backend/Wowthing.Backend.csproj b/apps/backend/Wowthing.Backend.csproj
index 5f76cd4f8..d31e185eb 100644
--- a/apps/backend/Wowthing.Backend.csproj
+++ b/apps/backend/Wowthing.Backend.csproj
@@ -1,32 +1,32 @@
- net9.0
+ net10.0
dotnet-Wowthing.Backend-08E9B79A-EF3A-409C-B7C6-BDB114990FD2
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
diff --git a/apps/backend/development.Dockerfile b/apps/backend/development.Dockerfile
index 66ae7549e..4a048a93d 100644
--- a/apps/backend/development.Dockerfile
+++ b/apps/backend/development.Dockerfile
@@ -1,4 +1,4 @@
-FROM mcr.microsoft.com/dotnet/sdk:9.0
+FROM mcr.microsoft.com/dotnet/sdk:10.0
WORKDIR /app/apps/backend
diff --git a/apps/benchmark/Wowthing.Benchmark.csproj b/apps/benchmark/Wowthing.Benchmark.csproj
index 0972961e7..cffb0635b 100644
--- a/apps/benchmark/Wowthing.Benchmark.csproj
+++ b/apps/benchmark/Wowthing.Benchmark.csproj
@@ -2,13 +2,13 @@
Exe
- net9.0
+ net10.0
enable
enable
-
+
diff --git a/apps/discord/Wowthing.Discord.csproj b/apps/discord/Wowthing.Discord.csproj
index f91e1674e..058fc924e 100644
--- a/apps/discord/Wowthing.Discord.csproj
+++ b/apps/discord/Wowthing.Discord.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/apps/frontend/components/home/table/row/HomeTableRowProgress.svelte b/apps/frontend/components/home/table/row/HomeTableRowProgress.svelte
index c056a926e..94841f206 100644
--- a/apps/frontend/components/home/table/row/HomeTableRowProgress.svelte
+++ b/apps/frontend/components/home/table/row/HomeTableRowProgress.svelte
@@ -15,6 +15,8 @@
@@ -43,6 +45,8 @@
>
{#if data.have > 0 && data.have === data.total}
+ {:else if data.inProgress}
+ {data.have}+{data.inProgress} / {data.total}
{:else}
{data.have} / {data.total}
{/if}
diff --git a/apps/frontend/components/progress/ProgressTableBody.svelte b/apps/frontend/components/progress/ProgressTableBody.svelte
index 2a954f232..f66505306 100644
--- a/apps/frontend/components/progress/ProgressTableBody.svelte
+++ b/apps/frontend/components/progress/ProgressTableBody.svelte
@@ -63,8 +63,15 @@
class={progressData.missingRequired
? 'status-fail'
: getPercentClass((progressData.have / progressData.total) * 100)}
- >{progressData.have} / {progressData.total}
+ {#if progressData.inProgress}
+ {progressData.have}+{progressData.inProgress}
+ {:else}
+ {progressData.have}
+ {/if}
+ /
+ {progressData.total}
+
{:else if progressData?.have === -1 && progressData?.total >= 0}
--- |
diff --git a/apps/frontend/components/tooltips/progress/TooltipProgress.svelte b/apps/frontend/components/tooltips/progress/TooltipProgress.svelte
index 6a015ad09..537862bdd 100644
--- a/apps/frontend/components/tooltips/progress/TooltipProgress.svelte
+++ b/apps/frontend/components/tooltips/progress/TooltipProgress.svelte
@@ -180,7 +180,7 @@
{#if showCurrencies?.length > 0 && !(showCurrencies.length === 1 && showCurrencies[0] === 0)}
- {#each showCurrencies as currencyId}
+ {#each showCurrencies as currencyId (currencyId)}
{#if currencyId > 1000000}
diff --git a/apps/frontend/components/tooltips/task/TooltipTaskRow.svelte b/apps/frontend/components/tooltips/task/TooltipTaskRow.svelte
index 186c8a644..0aa1abf95 100644
--- a/apps/frontend/components/tooltips/task/TooltipTaskRow.svelte
+++ b/apps/frontend/components/tooltips/task/TooltipTaskRow.svelte
@@ -135,7 +135,7 @@
{character?.name || `Unknown Character #${characterId}`}
{task?.name || `Unknown Task "${taskName}"`}
- {#each choreSets as choreSet (choreSet)}
+ {#each choreSets.filter((s) => s.length > 0) as choreSet (choreSet)}
{#each choreSet as charTaskChore (charTaskChore)}
diff --git a/apps/frontend/components/vendors/VendorsOptions.svelte b/apps/frontend/components/vendors/VendorsOptions.svelte
index 07a71adda..ff04aa40a 100644
--- a/apps/frontend/components/vendors/VendorsOptions.svelte
+++ b/apps/frontend/components/vendors/VendorsOptions.svelte
@@ -70,7 +70,7 @@
if (byThing.length === 0) {
byThing = ['---'];
- } else if (byThing.length === 6) {
+ } else if (byThing.length === 7) {
byThing = ['ALL'];
}
diff --git a/apps/frontend/data/achievements.ts b/apps/frontend/data/achievements.ts
index 7d8c2fd89..1c3fc3e83 100644
--- a/apps/frontend/data/achievements.ts
+++ b/apps/frontend/data/achievements.ts
@@ -500,6 +500,35 @@ export const extraCategories: ExtraAchievementCategory[] = [
61380, // Glory of the Midnight Raider
],
},
+ {
+ targetSlug: 'player-vs-player/world',
+ nameType: 1,
+ onlyAchievementIds: true,
+ achievementIds: [
+ 61446, // Slayer's Mastery
+ 61464, // Spark in the Night
+ 61465, // Spark in the Night
+ 61447, // Partake in the Rise
+ 61448, // Frequent the Rise
+ 61449, // Customary Rise
+ 61265, // Spectral Capture
+ 61266, // Spectral Stocker
+ 61234, // Hunt in the Night
+ 61238, // Midnight Bounty
+ 61231, // Midnight Loot
+ 61232, // Midnight Treasures
+ 61230, // Remains in the Rise
+ 61227, // Entering the Void
+ 61228, // Embracing the Void
+ 61229, // Dedication in the Void
+ 61225, // Investigating the Rise
+ 61226, // Uprising
+ 61221, // Tour of Duty: Eversong Woods
+ 61222, // Tour of Duty: Zul'Aman
+ 61223, // Tour of Duty: Harandar
+ 61224, // Tour of Duty: Voidstorm
+ ],
+ },
null,
{ targetSlug: 'expansion-features/prey', nameType: 2 },
{ targetSlug: 'expansion-features/ritual-sites', nameType: 2 },
diff --git a/apps/frontend/utils/find-reputation-tier.ts b/apps/frontend/utils/find-reputation-tier.ts
index 386736f18..216f01e20 100644
--- a/apps/frontend/utils/find-reputation-tier.ts
+++ b/apps/frontend/utils/find-reputation-tier.ts
@@ -3,7 +3,7 @@ import type { StaticDataReputationTier } from '@/shared/stores/static/types';
export default function findReputationTier(
tiers: StaticDataReputationTier,
- characterRep: number,
+ characterRep: number
): ReputationTier | undefined {
for (let i = tiers.minValues.length - 1; i >= 0; i--) {
const finalTier = i === tiers.minValues.length - 1;
@@ -37,8 +37,17 @@ export default function findReputationTier(
tiers.minValues.length - i,
maxValue,
value,
- percent,
+ percent
);
}
}
+
+ console.warn('invalid value for findReputationTier', tiers.id, characterRep);
+ return new ReputationTier(
+ tiers.names[0],
+ 1,
+ tiers.minValues[1] - tiers.minValues[0],
+ tiers.minValues[0],
+ '0.0'
+ );
}
diff --git a/apps/frontend/utils/get-progress.ts b/apps/frontend/utils/get-progress.ts
index 710eccfac..cddb50008 100644
--- a/apps/frontend/utils/get-progress.ts
+++ b/apps/frontend/utils/get-progress.ts
@@ -25,7 +25,8 @@ export default function getProgress(
group: ManualDataProgressGroup,
countAccountWide = true
): ProgressInfo {
- let have: number = 0;
+ let have = 0;
+ let inProgress = 0;
let missingRequired = false;
let showCurrency = 0;
let total = 0;
@@ -193,11 +194,24 @@ export default function getProgress(
}
let haveThis = false;
- if (
- (group.type === 'quest' && checkCharacterQuestIds(character.id, data.ids)) ||
- (group.type === 'accountQuest' && checkAccountQuestIds(data.ids))
- ) {
- haveThis = true;
+ if (group.type === 'quest' || group.type === 'accountQuest') {
+ haveThis =
+ (group.type === 'quest' &&
+ checkCharacterQuestIds(character.id, data.ids)) ||
+ (group.type === 'accountQuest' && checkAccountQuestIds(data.ids));
+
+ if (group.name === 'Delves') {
+ const progressQuest = userState.quests.characterById
+ .get(character.id)
+ ?.progressQuestByKey?.get(`q${data.ids[0]}`);
+ if (
+ progressQuest &&
+ progressQuest.objectives[0] &&
+ progressQuest.objectives[0].have === progressQuest.objectives[0].need
+ ) {
+ inProgress++;
+ }
+ }
if (group.name === 'Brewfest Intro Quests') {
showCurrency = 1037829; // Cyphers of the First Ones
@@ -504,6 +518,7 @@ export default function getProgress(
have,
haveIndexes,
icon,
+ inProgress,
missingRequired,
nameOverride,
showCurrency,
@@ -549,6 +564,7 @@ export interface ProgressInfo {
have: number;
haveIndexes: number[];
icon: string;
+ inProgress: number;
missingRequired: boolean;
nameOverride: Record;
showCurrency: number;
diff --git a/apps/luaparser/Wowthing.LuaParser.csproj b/apps/luaparser/Wowthing.LuaParser.csproj
index 3b996a275..201ba4738 100644
--- a/apps/luaparser/Wowthing.LuaParser.csproj
+++ b/apps/luaparser/Wowthing.LuaParser.csproj
@@ -2,7 +2,7 @@
Exe
- net9.0
+ net10.0
enable
enable
diff --git a/apps/tool/Wowthing.Tool.csproj b/apps/tool/Wowthing.Tool.csproj
index 5cf3e2f60..afa04a964 100644
--- a/apps/tool/Wowthing.Tool.csproj
+++ b/apps/tool/Wowthing.Tool.csproj
@@ -2,7 +2,7 @@
Exe
- net9.0
+ net10.0
enable
enable
@@ -12,19 +12,19 @@
-
-
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
-
+
-
-
-
+
+
+
diff --git a/apps/web/Dockerfile b/apps/web/Dockerfile
index 1651e0d82..86ae1fe9d 100644
--- a/apps/web/Dockerfile
+++ b/apps/web/Dockerfile
@@ -13,7 +13,7 @@ COPY apps/frontend/ .
RUN npm run build
-FROM mcr.microsoft.com/dotnet/sdk:9.0-alpine AS build-web
+FROM mcr.microsoft.com/dotnet/sdk:10.0-alpine AS build-web
WORKDIR /app
COPY apps/web/ ./apps/web/
@@ -23,7 +23,7 @@ WORKDIR /app/apps/web
RUN dotnet publish -c Release -o out
-FROM mcr.microsoft.com/dotnet/aspnet:9.0-alpine AS runtime
+FROM mcr.microsoft.com/dotnet/aspnet:10.0-alpine AS runtime
WORKDIR /app
COPY --from=build-web /app/apps/web/out ./
diff --git a/apps/web/Wowthing.Web.csproj b/apps/web/Wowthing.Web.csproj
index 1e481af40..e4afe63d9 100644
--- a/apps/web/Wowthing.Web.csproj
+++ b/apps/web/Wowthing.Web.csproj
@@ -2,7 +2,7 @@
en
- net9.0
+ net10.0
@@ -10,16 +10,16 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
diff --git a/apps/web/development.Dockerfile b/apps/web/development.Dockerfile
index 1072dd093..25bd8d5e1 100644
--- a/apps/web/development.Dockerfile
+++ b/apps/web/development.Dockerfile
@@ -1,4 +1,4 @@
-FROM mcr.microsoft.com/dotnet/sdk:9.0
+FROM mcr.microsoft.com/dotnet/sdk:10.0
WORKDIR /app/apps/web
diff --git a/packages/csharp-lib/Extensions/IDatabaseExtensions.cs b/packages/csharp-lib/Extensions/IDatabaseExtensions.cs
index 616b7e212..ac69f400e 100644
--- a/packages/csharp-lib/Extensions/IDatabaseExtensions.cs
+++ b/packages/csharp-lib/Extensions/IDatabaseExtensions.cs
@@ -40,7 +40,7 @@ public static async Task JsonGetAsync(this IDatabase db, string key)
public static async Task JsonSetAsync(this IDatabase db, string key, T obj, TimeSpan? expiry = null)
{
- return await db.StringSetAsync(key, JsonSerializer.Serialize(obj), expiry);
+ return await db.StringSetAsync(key, JsonSerializer.Serialize(obj), TimeSpanToExpiration(expiry));
}
public static async Task StringMultiGetAsync(this IDatabase db, IEnumerable keys)
@@ -52,7 +52,7 @@ public static async Task StringMultiGetAsync(this IDatabase db, IEnume
public static async Task StringMultiSetAsync(this IDatabase db, IEnumerable keys, string value, TimeSpan? expiry = null)
{
- var tasks = keys.Select(k => db.StringSetAsync(k, value, expiry));
+ var tasks = keys.Select(k => db.StringSetAsync(k, value, TimeSpanToExpiration(expiry)));
await Task.WhenAll(tasks);
}
@@ -71,6 +71,11 @@ public static async Task CompressedStringGetAsync(this IDatabase db, str
public static async Task CompressedStringSetAsync(this IDatabase db, string key, string value, TimeSpan? expiry = null)
{
byte[] data = LZ4Pickler.Pickle(Encoding.UTF8.GetBytes(value));
- return await db.StringSetAsync(key, data, expiry);
+ return await db.StringSetAsync(key, data, TimeSpanToExpiration(expiry));
+ }
+
+ private static Expiration TimeSpanToExpiration(TimeSpan? expiry)
+ {
+ return expiry != null ? new Expiration((TimeSpan)expiry) : Expiration.Default;
}
}
diff --git a/packages/csharp-lib/Wowthing.Lib.csproj b/packages/csharp-lib/Wowthing.Lib.csproj
index 28fdf58e1..e205bae27 100644
--- a/packages/csharp-lib/Wowthing.Lib.csproj
+++ b/packages/csharp-lib/Wowthing.Lib.csproj
@@ -1,24 +1,24 @@
- net9.0
+ net10.0
-
+
-
-
-
-
+
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
+
+
+
-
+