Skip to content

Commit b7742b1

Browse files
committed
eggsss
1 parent f00afb1 commit b7742b1

File tree

2 files changed

+55
-4
lines changed

2 files changed

+55
-4
lines changed

src/components/Pvp/EnemyBuilder.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,10 @@ export function EnemyBuilder() {
292292
const p1Stats = aggregatedStatsToPvpStats(
293293
globalStats,
294294
profile.skills.equipped,
295-
skillLibrary
295+
skillLibrary,
296+
weaponLibrary,
297+
profile.items.Weapon,
298+
pvpBaseConfig
296299
);
297300

298301
// 2. Convert Player 2 (Enemy) Stats
@@ -332,7 +335,14 @@ export function EnemyBuilder() {
332335
const getBattleStats = (): { p1: PvpPlayerStats, p2: PvpPlayerStats } | null => {
333336
if (!globalStats || !skillLibrary || !weaponLibrary || !pvpBaseConfig || !mountUpgradeLibrary) return null;
334337
try {
335-
const p1 = aggregatedStatsToPvpStats(globalStats, profile.skills.equipped, skillLibrary, pvpBaseConfig);
338+
const p1 = aggregatedStatsToPvpStats(
339+
globalStats,
340+
profile.skills.equipped,
341+
skillLibrary,
342+
weaponLibrary,
343+
profile.items.Weapon,
344+
pvpBaseConfig
345+
);
336346
const p2 = enemyConfigToPvpStats(
337347
enemy,
338348
weaponLibrary,

src/utils/PvpBattleEngine.ts

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,6 +1132,8 @@ export function aggregatedStatsToPvpStats(
11321132
stats: any,
11331133
equippedSkills: any[],
11341134
skillLibrary: any,
1135+
weaponLibrary?: any,
1136+
weaponSlot?: any,
11351137
pvpBaseConfig?: any
11361138
): PvpPlayerStats {
11371139
const skills: PvpSkillConfig[] = equippedSkills.map(skill => {
@@ -1221,13 +1223,52 @@ export function aggregatedStatsToPvpStats(
12211223
const pvpTotalHp = pvpCombinedHp * (1 + pvpMountHealthMulti + secHealthMulti);
12221224

12231225

1226+
// Determine Weapon Info
1227+
let weaponInfo = undefined;
1228+
if (weaponLibrary && weaponSlot) {
1229+
// Helper to get weapon info from library
1230+
const findWeapon = (item: any) => {
1231+
// WeaponLibrary uses complex keys: "{'Age': 0, 'Type': 'Weapon', 'Idx': 0}"
1232+
// item (ItemSlot) has age and idx
1233+
if (item.age !== undefined && item.idx !== undefined) {
1234+
const key = `{'Age': ${item.age}, 'Type': 'Weapon', 'Idx': ${item.idx}}`;
1235+
if (weaponLibrary[key]) return weaponLibrary[key];
1236+
}
1237+
1238+
// Fallback: try by ID if it exists (legacy or different format)
1239+
if (item.id && weaponLibrary[item.id]) return weaponLibrary[item.id];
1240+
1241+
return null;
1242+
};
1243+
1244+
const wData = findWeapon(weaponSlot);
1245+
if (wData) {
1246+
const windup = wData.WindupTime !== undefined ? wData.WindupTime : 0.5;
1247+
const duration = wData.AttackDuration !== undefined ? wData.AttackDuration : 1.5;
1248+
const range = wData.AttackRange !== undefined ? wData.AttackRange : 0.3;
1249+
1250+
weaponInfo = {
1251+
Age: wData.ItemId?.Age || wData.Age || 0,
1252+
Idx: wData.ItemId?.Idx || wData.Idx || 0,
1253+
Type: wData.ItemId?.Type || wData.Type || 'Melee',
1254+
IsRanged: (range > 1.0) ? 1 : 0,
1255+
AttackRange: range,
1256+
AttackDuration: duration,
1257+
WindupTime: windup,
1258+
ProjectileId: wData.ProjectileId // Capture Projectile ID if needed
1259+
};
1260+
}
1261+
}
12241262

12251263
return {
12261264
hp: Math.round(Math.max(1, pvpTotalHp)),
12271265
damage: stats.totalDamage, // TODO: Apply similar logic for Damage if needed
12281266
attackSpeed: stats.attackSpeedMultiplier || 1,
1229-
isRanged: stats.isRangedWeapon,
1230-
projectileSpeed: stats.projectileSpeed,
1267+
weaponInfo,
1268+
1269+
isRanged: weaponInfo ? (weaponInfo.AttackRange ?? 0) > 1.0 : stats.isRangedWeapon,
1270+
projectileSpeed: stats.projectileSpeed, // Note: WeaponLibrary doesn't seem to have ProjectileSpeed, relying on stats or default
1271+
12311272

12321273
critChance: stats.criticalChance || 0,
12331274
critMulti: stats.criticalDamage || 1.5,

0 commit comments

Comments
 (0)