feat: Fix multipath avatar & implement weakness buff id

This commit is contained in:
amizing25
2024-09-18 20:41:34 +07:00
parent f41cc5e47b
commit c4794570d1
8 changed files with 137 additions and 118 deletions
+35 -47
View File
@@ -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();
}