Release Healer Man 0.1.15
This commit is contained in:
1 parent
7b41b102fa
commit
f49e54f35f
43 files changed
+1478
-112
No files matched your search
@@ -14,6 +14,7 @@ import {
|
||||
updateCharacterManastormProgress,
|
||||
updateCharacterProgression,
|
||||
updateCharacterSettings,
|
||||
updateCharacterSpecialization,
|
||||
updateCombatPresentationSettings,
|
||||
type StorageLike,
|
||||
} from "./accountRepository";
|
||||
@@ -29,6 +30,7 @@ import {
|
||||
recordManastormFailure,
|
||||
setManastormLoadout,
|
||||
} from "../game/manastormProgress";
|
||||
import { abilitiesForClass } from "../game/abilityCatalog";
|
||||
|
||||
class MemoryStorage implements StorageLike {
|
||||
private values = new Map<string, string>();
|
||||
@@ -38,6 +40,37 @@ class MemoryStorage implements StorageLike {
|
||||
}
|
||||
|
||||
describe("local profile repository", () => {
|
||||
it("persists specializations and supports Class Hall keep/reset choices", () => {
|
||||
const storage = new MemoryStorage();
|
||||
const talentAbility = abilitiesForClass("stormbringer").find((ability) => ability.talentEntryId !== undefined)!;
|
||||
const created = createCharacter({
|
||||
ownerId: "offline-roster",
|
||||
name: "Tempest",
|
||||
categoryId: "coa",
|
||||
raceId: "human",
|
||||
classId: "stormbringer",
|
||||
specializationId: "stormbringer:lightning",
|
||||
gender: "female",
|
||||
appearance: { skinColor: 0, face: 0, hairStyle: 0, hairColor: 0, feature: 0 },
|
||||
}, storage).character!;
|
||||
updateCharacterProgression("offline-roster", created.id, {
|
||||
level: 20,
|
||||
experience: 0,
|
||||
talentRanks: { [`coa-entry-${talentAbility.talentEntryId}`]: 1 },
|
||||
}, storage);
|
||||
updateCharacterActionBindings("offline-roster", created.id, { "primary:face-top": talentAbility.id }, storage);
|
||||
|
||||
const kept = updateCharacterSpecialization("offline-roster", created.id, "stormbringer:wind", false, storage).character!;
|
||||
expect(kept.specializationId).toBe("stormbringer:wind");
|
||||
expect(kept.talentRanks).not.toEqual({});
|
||||
expect(kept.actionBindings["primary:face-top"]).toBe(talentAbility.id);
|
||||
|
||||
const reset = updateCharacterSpecialization("offline-roster", created.id, "stormbringer:maelstrom", true, storage).character!;
|
||||
expect(reset.specializationId).toBe("stormbringer:maelstrom");
|
||||
expect(reset.talentRanks).toEqual({});
|
||||
expect(reset.actionBindings["primary:face-top"]).toBeNull();
|
||||
});
|
||||
|
||||
it("creates and verifies a local account without storing its raw password", async () => {
|
||||
const storage = new MemoryStorage();
|
||||
const created = await createLocalAccount("CaveHealer", "serpent-pass", storage);
|
||||
@@ -149,7 +182,7 @@ describe("local profile repository", () => {
|
||||
}));
|
||||
expect(loadCombatPresentationSettings("offline-roster", storage))
|
||||
.toEqual(DEFAULT_COMBAT_PRESENTATION_SETTINGS);
|
||||
expect(JSON.parse(storage.getItem(PROFILE_STORAGE_KEYS.database)!).version).toBe(3);
|
||||
expect(JSON.parse(storage.getItem(PROFILE_STORAGE_KEYS.database)!).version).toBe(4);
|
||||
}
|
||||
|
||||
const legacyV3Storage = new MemoryStorage();
|
||||
|
||||
Reference in new issue
Block a user