Release Healer Man 0.1.40
This commit is contained in:
1 parent
ed0d2fea3d
commit
197a64117c
215 files changed
+5131
-181
No files matched your search
@@ -45,7 +45,8 @@ import {
|
||||
} from "../game/mobRuntimeRegistry";
|
||||
import { combatHasLineOfSight } from "../game/combatSpatial";
|
||||
import { registerDungeonRuntimeReset } from "../game/dungeonRuntimeReset";
|
||||
import { dungeonEnemyHealthBaseline, scaledDungeonEnemyLevel } from "../game/dungeonLevelScaling";
|
||||
import { scaledDungeonEnemyLevel } from "../game/dungeonLevelScaling";
|
||||
import { dungeonEnemyScaling } from "../game/dungeonBossScaling";
|
||||
import { requireDungeonDefinition } from "../game/dungeonRegistry";
|
||||
import { stepFearedMobAway } from "../game/mobMotion";
|
||||
import {
|
||||
@@ -886,6 +887,9 @@ function ProxyMob({
|
||||
const showAggroRanges = useCombatStore((state) => state.settings.showMobAggroRanges);
|
||||
const gameMode = useGameStore((state) => state.gameMode);
|
||||
const dungeonExpansion = useGameStore((state) => requireDungeonDefinition(state.activeDungeonId).expansion);
|
||||
const dungeon = useGameStore((state) => requireDungeonDefinition(state.activeDungeonId));
|
||||
const difficultyId = useGameStore((state) => state.activeDifficultyId);
|
||||
const bossDifficulty = useGameStore((state) => state.activeBossDifficulty);
|
||||
const characterLevel = useCombatStore((state) => state.level);
|
||||
const manastormLevel = useManastormStore((state) => state.level);
|
||||
const manastormPartySize = useManastormStore((state) => state.partySize);
|
||||
@@ -928,20 +932,20 @@ function ProxyMob({
|
||||
const level = gameMode === "manastorm"
|
||||
? definition.combat?.level
|
||||
: scaledDungeonEnemyLevel(characterLevel, boss);
|
||||
const healthMultiplier = baseHealthMultiplier * (manastormModifiers?.enemyStatMultiplier ?? 1);
|
||||
const healthBaseline = gameMode === "dungeon"
|
||||
? dungeonEnemyHealthBaseline(level ?? characterLevel, dungeonExpansion)
|
||||
: undefined;
|
||||
const scaling = gameMode === "dungeon"
|
||||
? dungeonEnemyScaling(dungeon, definition, instanceId, characterLevel, difficultyId, bossDifficulty)
|
||||
: null;
|
||||
const healthMultiplier = scaling?.healthMultiplier ?? baseHealthMultiplier * (manastormModifiers?.enemyStatMultiplier ?? 1);
|
||||
useCombatStore.getState().registerMob(instanceId, {
|
||||
name: definition.name,
|
||||
serverEntry: definition.combat?.serverEntry,
|
||||
boss,
|
||||
level,
|
||||
maxHealth: healthBaseline === undefined ? undefined : healthBaseline * healthMultiplier,
|
||||
maxHealth: scaling?.maxHealth,
|
||||
hasLoot: Boolean((boss && bossHasLoot(definition.id)) || definition.hasLoot),
|
||||
lootSourceId: boss ? definition.id : undefined,
|
||||
healthMultiplier,
|
||||
damageMultiplier: baseDamageMultiplier * (manastormModifiers?.enemyStatMultiplier ?? 1),
|
||||
damageMultiplier: scaling?.damageMultiplier ?? baseDamageMultiplier * (manastormModifiers?.enemyStatMultiplier ?? 1),
|
||||
bonusLootChance: manastormModifiers?.bonusLootChance,
|
||||
moveSpeed: definition.combat?.moveSpeed,
|
||||
aggroRange: definition.combat?.aggroRange,
|
||||
@@ -968,6 +972,9 @@ function ProxyMob({
|
||||
instanceId,
|
||||
gameMode,
|
||||
dungeonExpansion,
|
||||
dungeon,
|
||||
difficultyId,
|
||||
bossDifficulty,
|
||||
manastormLevel,
|
||||
manastormMapRewardMultiplier,
|
||||
manastormModeId,
|
||||
|
||||
@@ -15,7 +15,7 @@ import {
|
||||
type ReactNode,
|
||||
} from "react";
|
||||
import { type Group } from "three";
|
||||
import { classById, raceById, type GenderId, type RaceId } from "../app/characterCatalog";
|
||||
import { classById, isRomClassId, raceById, type GenderId, type RaceId } from "../app/characterCatalog";
|
||||
import { CharacterModel } from "../avatar/CharacterModel";
|
||||
import { ProceduralAvatar } from "../avatar/ProceduralAvatar";
|
||||
import { useCombatStore } from "../game/combatStore";
|
||||
@@ -1412,6 +1412,9 @@ function PartyActors({
|
||||
{members.map((member, index) => {
|
||||
const characterClass = classById(member.classId);
|
||||
const race = raceById(member.raceId);
|
||||
const subtitle = isRomClassId(member.classId)
|
||||
? `${characterClass.name}${member.secondaryClassId ? `/${classById(member.secondaryClassId).name}` : ""}`
|
||||
: `${race.name} · ${member.specialization}`;
|
||||
const avatarMetrics = PARTY_AVATAR_METRICS[`${member.raceId}:${member.gender}`]
|
||||
?? DEFAULT_PARTY_AVATAR_METRICS;
|
||||
const position = positionsRef.current.get(member.id) ?? initialMemberPosition(index);
|
||||
@@ -1471,7 +1474,7 @@ function PartyActors({
|
||||
...partyLabelStyle,
|
||||
opacity: member.health > 0 ? 1 : 0.55,
|
||||
}}>
|
||||
<div>{member.name}<br /><small>{race.name} · {member.specialization}</small></div>
|
||||
<div>{member.name}<br /><small>{subtitle}</small></div>
|
||||
</Html>
|
||||
) : null}
|
||||
</group>
|
||||
|
||||
Reference in new issue
Block a user