@@ -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