forked from phenom/healer-man
Release Healer Man 0.1.5
This commit is contained in:
1 parent
f4c9cf356c
commit
55cfd43d66
62 files changed
+3030
-153
No files matched your search
+22
-4
@@ -32,6 +32,7 @@ export type ManastormPhase =
|
||||
|
||||
export interface ManastormEncounterDefinition {
|
||||
readonly id: string;
|
||||
readonly encounterId?: number;
|
||||
readonly dungeonId: DungeonId;
|
||||
/** Authoritative package map identity; dungeonId may only select fallback scene geometry. */
|
||||
readonly mapId?: number;
|
||||
@@ -42,9 +43,12 @@ export interface ManastormEncounterDefinition {
|
||||
readonly bossEntityId: string;
|
||||
readonly bossName: string;
|
||||
readonly bossPosition: MobVector3;
|
||||
readonly bossYaw?: number;
|
||||
readonly playerSpawn: WorldSpawn;
|
||||
readonly portalPosition: MobVector3;
|
||||
readonly trashRuntimeIds?: readonly string[];
|
||||
readonly requiredGuardianKills?: number;
|
||||
readonly chaoticLinkEnabled?: boolean;
|
||||
readonly modeIds?: readonly number[];
|
||||
readonly stageKind?: ManastormStageKind;
|
||||
readonly unlockLevel?: number;
|
||||
@@ -186,9 +190,12 @@ export interface ManastormCatalogEncounterLike {
|
||||
readonly bossEntityId?: string;
|
||||
readonly bossName?: string;
|
||||
readonly bossPosition?: MobVector3;
|
||||
readonly bossYaw?: number;
|
||||
readonly playerSpawn?: WorldSpawn;
|
||||
readonly portalPosition?: MobVector3;
|
||||
readonly trashRuntimeIds?: readonly string[];
|
||||
readonly requiredGuardianKills?: number;
|
||||
readonly chaoticLinkEnabled?: boolean;
|
||||
readonly stageKind?: ManastormStageKind;
|
||||
readonly unlockLevel?: number;
|
||||
readonly milestoneLevel?: ManastormSpecialLevel;
|
||||
@@ -299,6 +306,15 @@ export interface ManastormCatalogLike {
|
||||
readonly rewards?: readonly ManastormCatalogRewardLike[];
|
||||
readonly loadouts?: readonly ManastormCatalogLoadoutLike[];
|
||||
readonly defaultLoadoutId?: string;
|
||||
readonly fallbackPolicy?: "legacy" | "none";
|
||||
readonly runtimeOptions?: {
|
||||
readonly enabled?: boolean;
|
||||
readonly levelingEnabled?: boolean;
|
||||
readonly endgameEnabled?: boolean;
|
||||
readonly affixesEnabled?: boolean;
|
||||
readonly chaoticLinkEnabled?: boolean;
|
||||
readonly milestoneEncountersEnabled?: boolean;
|
||||
};
|
||||
readonly scaling?: {
|
||||
readonly perLevel?: number;
|
||||
readonly bonusLootPerLevel?: number;
|
||||
@@ -583,7 +599,7 @@ export function runtimeStages(catalog: ManastormCatalogLike = getManastormCatalo
|
||||
minimumPartySize: normalizeManastormPartySize(stage.minimumPartySize ?? 1),
|
||||
maximumPartySize: normalizeManastormPartySize(stage.maximumPartySize ?? 5),
|
||||
}));
|
||||
return stages.length ? stages : MANASTORM_ENCOUNTERS;
|
||||
return stages.length || catalog.fallbackPolicy === "none" ? stages : MANASTORM_ENCOUNTERS;
|
||||
}
|
||||
|
||||
export function drawManastormStage(
|
||||
@@ -609,7 +625,8 @@ export function drawManastormStage(
|
||||
&& (stage.minimumPartySize ?? 1) <= safePartySize
|
||||
&& (stage.maximumPartySize ?? 5) >= safePartySize
|
||||
));
|
||||
const special = isManastormSpecialLevel(safeLevel);
|
||||
const special = catalog.runtimeOptions?.milestoneEncountersEnabled !== false
|
||||
&& isManastormSpecialLevel(safeLevel);
|
||||
const milestoneStages = unlocked.filter((stage) => stage.milestoneLevel === safeLevel);
|
||||
const milestonePool = unlocked.filter((stage) => (
|
||||
stage.stageKind === "milestone" || stage.milestoneLevel !== undefined
|
||||
@@ -621,7 +638,7 @@ export function drawManastormStage(
|
||||
let eligible = special
|
||||
? (milestoneStages.length ? milestoneStages : milestonePool)
|
||||
: standardStages;
|
||||
if (!eligible.length) {
|
||||
if (!eligible.length && catalog.fallbackPolicy !== "none") {
|
||||
eligible = MANASTORM_ENCOUNTERS.filter((stage) => (
|
||||
(stage.unlockLevel ?? 1) <= safeLevel
|
||||
&& (special
|
||||
@@ -629,7 +646,7 @@ export function drawManastormStage(
|
||||
: stage.stageKind !== "milestone" && !stage.milestoneLevel)
|
||||
));
|
||||
}
|
||||
if (!eligible.length) eligible = [MANASTORM_ENCOUNTERS[0]];
|
||||
if (!eligible.length && catalog.fallbackPolicy !== "none") eligible = [MANASTORM_ENCOUNTERS[0]];
|
||||
|
||||
const byId = new Map(eligible.map((stage) => [stage.id, stage]));
|
||||
let available = bag.filter((id) => byId.has(id));
|
||||
@@ -839,6 +856,7 @@ export function manastormAffixes(
|
||||
modeId = manastormModeId(catalog),
|
||||
unlockedThroughLevel = level,
|
||||
): readonly ManastormAffixState[] {
|
||||
if (catalog.runtimeOptions?.affixesEnabled === false) return [];
|
||||
const safeLevel = Math.max(1, Math.trunc(Number.isFinite(level) ? level : 1));
|
||||
const safeUnlockedThroughLevel = Math.max(
|
||||
safeLevel,
|
||||
|
||||
Reference in new issue
Block a user