feat: Fix multipath avatar & implement weakness buff id
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use crate::{net::tools::FreesrData, util::cur_timestamp_ms};
|
||||
use crate::{
|
||||
net::tools::{FreesrData, MultiPathAvatar},
|
||||
util::cur_timestamp_ms,
|
||||
};
|
||||
|
||||
use super::*;
|
||||
|
||||
@@ -64,50 +67,35 @@ pub async fn on_get_multi_path_avatar_info_cs_req(
|
||||
(1001, json.march_type.get_type().into()),
|
||||
]);
|
||||
|
||||
res.multi_path_avatar_type_info_list = vec![
|
||||
MultiPathAvatarTypeInfo {
|
||||
avatar_id: json.main_character as i32,
|
||||
rank: 6,
|
||||
equip_relic_list: json
|
||||
.relics
|
||||
.iter()
|
||||
.filter(|v| v.equip_avatar == json.main_character as u32)
|
||||
.map(|v| v.to_equipment_relic_proto())
|
||||
.collect(),
|
||||
skilltree_list: (1..=4)
|
||||
.map(|v| AvatarSkillTree {
|
||||
level: 1,
|
||||
point_id: (json.main_character as u32) * 1000 + v,
|
||||
})
|
||||
.collect(),
|
||||
path_equipment_id: json
|
||||
.lightcones
|
||||
.iter()
|
||||
.find(|v| v.equip_avatar == json.main_character as u32)
|
||||
.map(|v| v.internal_uid)
|
||||
.unwrap_or_default(),
|
||||
},
|
||||
MultiPathAvatarTypeInfo {
|
||||
avatar_id: json.march_type as i32,
|
||||
rank: 6,
|
||||
equip_relic_list: json
|
||||
.relics
|
||||
.iter()
|
||||
.filter(|v| v.equip_avatar == json.march_type as u32)
|
||||
.map(|v| v.to_equipment_relic_proto())
|
||||
.collect(),
|
||||
skilltree_list: (1..=4)
|
||||
.map(|v| AvatarSkillTree {
|
||||
level: 1,
|
||||
point_id: (json.march_type as u32) * 1000 + v,
|
||||
})
|
||||
.collect(),
|
||||
path_equipment_id: json
|
||||
.lightcones
|
||||
.iter()
|
||||
.find(|v| v.equip_avatar == json.march_type as u32)
|
||||
.map(|v| v.internal_uid)
|
||||
.unwrap_or_default(),
|
||||
},
|
||||
];
|
||||
res.multi_path_avatar_type_info_list = MultiPathAvatar::to_vec()
|
||||
.iter()
|
||||
.filter_map(|mp_type| {
|
||||
let avatar_info = json.avatars.get(&((*mp_type) as u32))?;
|
||||
Some(MultiPathAvatarTypeInfo {
|
||||
avatar_id: *mp_type as i32,
|
||||
rank: avatar_info.data.rank,
|
||||
equip_relic_list: json
|
||||
.relics
|
||||
.iter()
|
||||
.filter(|relic| relic.equip_avatar == *mp_type as u32)
|
||||
.map(|relic| relic.to_equipment_relic_proto())
|
||||
.collect(),
|
||||
skilltree_list: avatar_info
|
||||
.data
|
||||
.skills
|
||||
.iter()
|
||||
.map(|(point_id, level)| AvatarSkillTree {
|
||||
point_id: *point_id,
|
||||
level: *level,
|
||||
})
|
||||
.collect(),
|
||||
path_equipment_id: json
|
||||
.lightcones
|
||||
.iter()
|
||||
.find(|v| v.equip_avatar == *mp_type as u32)
|
||||
.map(|v| v.internal_uid)
|
||||
.unwrap_or_default(),
|
||||
})
|
||||
})
|
||||
.collect();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user