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
+27
-9
@@ -11,9 +11,10 @@ import {
|
||||
type RaceId,
|
||||
} from "../app/characterCatalog";
|
||||
import {
|
||||
equipmentStats,
|
||||
type EquipmentAssignments,
|
||||
} from "./equipment";
|
||||
import { resolvedEquipmentStats } from "./heirloomEquipment";
|
||||
import { specializationsForClass } from "./specializationCatalog";
|
||||
import {
|
||||
EMPTY_ITEM_STATS,
|
||||
healthFromStamina,
|
||||
@@ -52,6 +53,7 @@ export interface PartyMember {
|
||||
readonly appearance: CharacterAppearance;
|
||||
readonly classId: ClassId;
|
||||
readonly specialization: string;
|
||||
readonly specializationId: string | null;
|
||||
readonly talentTreeId: string;
|
||||
readonly talentRanks: TalentRanks;
|
||||
readonly role: PartyRole;
|
||||
@@ -227,18 +229,30 @@ function createMember(
|
||||
const genders = supportedGenders(race.id);
|
||||
const gender: GenderId = genders[Math.floor(nextRandom(identityRandom) * genders.length)] ?? genders[0] ?? "male";
|
||||
const appearance = randomAppearance(race.id, gender, () => nextRandom(identityRandom));
|
||||
const maxHealth = memberMaxHealth(level, role, EMPTY_ITEM_STATS, template.classId, race.id);
|
||||
const id = `party-${role}-${index}-${template.classId}`;
|
||||
const specializationId = specializationsForClass(template.classId)
|
||||
.find((definition) => definition.displayName === template.specialization)?.id ?? null;
|
||||
const gearStats = resolvedEquipmentStats({}, [], {
|
||||
ownerId: id,
|
||||
ownerKind: "party",
|
||||
classId: template.classId,
|
||||
specializationId,
|
||||
role,
|
||||
level,
|
||||
});
|
||||
const maxHealth = memberMaxHealth(level, role, gearStats, template.classId, race.id);
|
||||
const resourceProfile = resourceProfileForClass(template.classId);
|
||||
const maxResource = resourceProfile.maximum;
|
||||
const resource = resourceProfile.initial;
|
||||
return {
|
||||
id: `party-${role}-${index}-${template.classId}`,
|
||||
id,
|
||||
name: template.name,
|
||||
raceId: race.id,
|
||||
gender,
|
||||
appearance,
|
||||
classId: template.classId,
|
||||
specialization: template.specialization,
|
||||
specializationId,
|
||||
talentTreeId: template.talentTreeId,
|
||||
talentRanks: isRomClassId(template.classId)
|
||||
? Object.freeze({})
|
||||
@@ -259,7 +273,7 @@ function createMember(
|
||||
activeCastTargetId: null,
|
||||
schoolLockedUntil: Object.freeze({}),
|
||||
runes: template.classId === "death-knight" ? createDeathKnightRunes() : Object.freeze([]),
|
||||
gearStats: EMPTY_ITEM_STATS,
|
||||
gearStats,
|
||||
status: "ready",
|
||||
nextActionAt: 0,
|
||||
tauntReadyAt: 0,
|
||||
@@ -411,11 +425,8 @@ export const usePartyStore = create<PartyState>((set, get) => ({
|
||||
}),
|
||||
|
||||
resetCombat: (level, playerHealth) => set((state) => {
|
||||
const previousStats = new Map(state.members.map((member) => [member.id, member.gearStats]));
|
||||
return {
|
||||
members: createDungeonParty(state.seed ?? "healer-man", level, state.playerRole, state.partySize, state.categoryId).map(
|
||||
(member) => withMemberGearStats(member, previousStats.get(member.id) ?? EMPTY_ITEM_STATS),
|
||||
),
|
||||
members: createDungeonParty(state.seed ?? "healer-man", level, state.playerRole, state.partySize, state.categoryId),
|
||||
command: "defend",
|
||||
selectedMemberId: null,
|
||||
selfSelected: false,
|
||||
@@ -455,7 +466,14 @@ export const usePartyStore = create<PartyState>((set, get) => ({
|
||||
syncEquipment: (assignments, inventory) => set((state) => ({
|
||||
members: state.members.map((member) => withMemberGearStats(
|
||||
member,
|
||||
equipmentStats(assignments, inventory, member.id),
|
||||
resolvedEquipmentStats(assignments, inventory, {
|
||||
ownerId: member.id,
|
||||
ownerKind: "party",
|
||||
classId: member.classId,
|
||||
specializationId: member.specializationId,
|
||||
role: member.role,
|
||||
level: member.level,
|
||||
}),
|
||||
)),
|
||||
})),
|
||||
|
||||
|
||||
Reference in new issue
Block a user