feat(fight): 重构战斗系统技能逻辑与精灵切换功能
- 优化技能执行流程,统一使用 SelectSkillAction 作为技能载体 - 移除冗余的技能 ID 字段,简化数据结构 - 调整命中判断和技能效果触发机制,提升准确性 - 修改精灵切换与捕获相关方法参数格式 - 更新技能列表结构为动态数组以支持灵活长度 - 完善睡眠等异常状态的处理逻辑 - 修复战斗中技能 PP 扣减及副本还原问题 - 清理无用代码,如多余的 FindWithIndex 函数定义 - 强化验证码缓存键命名规则,增强安全性
This commit is contained in:
@@ -95,9 +95,10 @@ type PetInfo struct {
|
||||
|
||||
// 速度学习力(@UInt long → uint32)
|
||||
EvSpeed uint32 `fieldDesc:"速度学习力" `
|
||||
SkillListLen uint32
|
||||
SkillListLen uint32 `struc:"sizeof=SkillList"`
|
||||
|
||||
// 技能信息:固定4条,空则赋值0(固定长度List → [4]SkillInfo,零值即符合“赋值0”)
|
||||
SkillList [4]SkillInfo
|
||||
SkillList []SkillInfo
|
||||
|
||||
// 捕捉时间(@UInt long → 若为时间戳用uint32;若需时间类型可改为time.Time,需配合序列化处理)
|
||||
CatchTime uint32 `fieldDesc:"捕捉时间" `
|
||||
@@ -295,13 +296,12 @@ func GenPetInfo(
|
||||
|
||||
// ---- 技能学习 ----
|
||||
skills := LastFourElements(p.GetLevelRangeCanLearningSkills(0, p.Level)) // 最后四个技能
|
||||
p.SkillListLen = uint32(len(skills))
|
||||
|
||||
for i := 0; i < len(skills) && i < len(p.SkillList); i++ {
|
||||
for i := 0; i < len(skills) && i < 4; i++ {
|
||||
skillID := skills[i]
|
||||
if info, ok := xmlres.SkillMap[int(skillID)]; ok {
|
||||
p.SkillList[i].ID = skillID
|
||||
p.SkillList[i].PP = uint32(info.MaxPP)
|
||||
p.SkillList = append(p.SkillList, SkillInfo{ID: skillID, PP: uint32(info.MaxPP)})
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user