feat(fight): 优化睡眠状态效果逻辑,确保对方攻击后解除睡眠
睡眠状态现在会正确挂载到对手身上,以实现在对方攻击后自动解除睡眠效果。 fix(fight): 修复技能PP减少逻辑,确保使用技能时正确扣减PP 在技能执行过程中,通过查找当前宠物的技能列表来正确地减少对应技能的PP值,避免了错误的PP扣减。 fix(fight): 修复回合开始时技能列表初始化问题 修正了战斗中角色和对手的技能列表初始化逻辑,确保双方技能数据正确加载。 feat(pet): 限制宠物技能数量为4个并修复技能学习逻辑 更新宠物技能学习逻辑,确保只保留最后四个技能,并在学习新技能时正确添加至技能列表。 fix(p
This commit is contained in:
@@ -32,7 +32,7 @@ func (e *StatusNotSkill) Skill_Hit_Pre(ctx input.Ctx) bool {
|
||||
|
||||
}
|
||||
|
||||
type StatusSleep struct { //睡眠不能出手
|
||||
type StatusSleep struct { //睡眠不能出手 ,这个挂载到对面来实现对方攻击后解除睡眠效果
|
||||
node.EffectNode
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
package fight
|
||||
|
||||
import (
|
||||
"blazing/common/utils"
|
||||
"blazing/logic/service/common"
|
||||
"blazing/logic/service/fight/action"
|
||||
"blazing/logic/service/fight/info"
|
||||
"blazing/logic/service/fight/input"
|
||||
"blazing/logic/service/player"
|
||||
"blazing/modules/blazing/model"
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"reflect"
|
||||
@@ -613,8 +615,13 @@ func (f *FightC) enterturn(fattack, sattack *action.SelectSkillAction) {
|
||||
|
||||
f.processSkillAttack(attacker, defender, currentskill)
|
||||
currentskill = oldskill
|
||||
fmt.Printf("技能4 %p\n", currentskill)
|
||||
currentskill.Info.PP--
|
||||
_, skill, ok := utils.FindWithIndex(attacker.CurrentPet.Info.SkillList, func(item model.SkillInfo) bool {
|
||||
return item.ID == currentskill.Info.ID
|
||||
})
|
||||
if ok {
|
||||
|
||||
skill.PP--
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -680,7 +687,8 @@ func (f *FightC) enterturn(fattack, sattack *action.SelectSkillAction) {
|
||||
})
|
||||
f.First.AttackValue.RemainHp = int32(f.First.CurrentPet.Info.Hp)
|
||||
f.First.AttackValue.SkillList = f.First.CurrentPet.Info.SkillList
|
||||
f.First.AttackValue.SkillList[0].PP = 0
|
||||
|
||||
f.Second.AttackValue.SkillList = f.Second.CurrentPet.Info.SkillList
|
||||
f.Second.AttackValue.RemainHp = int32(f.Second.CurrentPet.Info.Hp)
|
||||
ret := info.AttackValueS{
|
||||
FAttack: *f.First.AttackValue,
|
||||
|
||||
@@ -55,21 +55,21 @@ func (p *Player) AddPetExp(petinfo *model.PetInfo, addExp uint32, bro bool) {
|
||||
// 处理技能学习
|
||||
canLearnSkillList := LastFourElements(petinfo.GetLevelRangeCanLearningSkills(originalLevel, petinfo.Level)) //获取最后四个技能,如果不足,那就取全部技能
|
||||
|
||||
for i := 0; i < len(petinfo.SkillList); i++ {
|
||||
for i := 0; i < 4; i++ {
|
||||
|
||||
if petinfo.SkillList[i].ID == 0 {
|
||||
if len(canLearnSkillList) != 0 {
|
||||
skid := canLearnSkillList[len(canLearnSkillList)-1]
|
||||
petinfo.SkillList[i].ID = skid
|
||||
petinfo.SkillList[i].PP = uint32(xmlres.SkillMap[int(skid)].MaxPP)
|
||||
if len(canLearnSkillList) != 0 {
|
||||
skid := canLearnSkillList[len(canLearnSkillList)-1]
|
||||
petinfo.SkillList = append(petinfo.SkillList, model.SkillInfo{
|
||||
|
||||
canLearnSkillList = canLearnSkillList[:len(canLearnSkillList)-1]
|
||||
}
|
||||
ID: skid,
|
||||
PP: uint32(xmlres.SkillMap[int(skid)].MaxPP),
|
||||
})
|
||||
|
||||
canLearnSkillList = canLearnSkillList[:len(canLearnSkillList)-1]
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
petinfo.SkillList = petinfo.SkillList[:4] //归正到4
|
||||
//todo 待实现
|
||||
// // 发送技能更新消息
|
||||
// updateSkillInfo := UpdateSkillInfo{
|
||||
|
||||
@@ -125,7 +125,7 @@ type PetInfo struct {
|
||||
|
||||
func (pet *PetInfo) Cure() {
|
||||
pet.Hp = pet.MaxHp
|
||||
for i := 0; i < 4; i++ {
|
||||
for i := 0; i < len(pet.SkillList); i++ {
|
||||
maxPP, ok := xmlres.SkillMap[int(pet.SkillList[i].ID)]
|
||||
// 恢复至最大PP值(从配置表获取)
|
||||
if pet.SkillList[i].ID != 0 && ok {
|
||||
|
||||
Reference in New Issue
Block a user