From 5542718a2b338a38a06786222d310b2a6074adfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <1@72wo.cn> Date: Mon, 27 Oct 2025 01:11:31 +0800 Subject: [PATCH] =?UTF-8?q?feat(fight):=20=E4=BC=98=E5=8C=96=E7=9D=A1?= =?UTF-8?q?=E7=9C=A0=E7=8A=B6=E6=80=81=E6=95=88=E6=9E=9C=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E7=A1=AE=E4=BF=9D=E5=AF=B9=E6=96=B9=E6=94=BB=E5=87=BB?= =?UTF-8?q?=E5=90=8E=E8=A7=A3=E9=99=A4=E7=9D=A1=E7=9C=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 睡眠状态现在会正确挂载到对手身上,以实现在对方攻击后自动解除睡眠效果。 fix(fight): 修复技能PP减少逻辑,确保使用技能时正确扣减PP 在技能执行过程中,通过查找当前宠物的技能列表来正确地减少对应技能的PP值,避免了错误的PP扣减。 fix(fight): 修复回合开始时技能列表初始化问题 修正了战斗中角色和对手的技能列表初始化逻辑,确保双方技能数据正确加载。 feat(pet): 限制宠物技能数量为4个并修复技能学习逻辑 更新宠物技能学习逻辑,确保只保留最后四个技能,并在学习新技能时正确添加至技能列表。 fix(p --- logic/service/fight/effect/effect_status.go | 2 +- logic/service/fight/fightc.go | 14 +++++++++++--- logic/service/player/pet.go | 18 +++++++++--------- modules/blazing/model/pet.go | 2 +- 4 files changed, 22 insertions(+), 14 deletions(-) diff --git a/logic/service/fight/effect/effect_status.go b/logic/service/fight/effect/effect_status.go index 0728408b..8e4dfc7b 100644 --- a/logic/service/fight/effect/effect_status.go +++ b/logic/service/fight/effect/effect_status.go @@ -32,7 +32,7 @@ func (e *StatusNotSkill) Skill_Hit_Pre(ctx input.Ctx) bool { } -type StatusSleep struct { //睡眠不能出手 +type StatusSleep struct { //睡眠不能出手 ,这个挂载到对面来实现对方攻击后解除睡眠效果 node.EffectNode } diff --git a/logic/service/fight/fightc.go b/logic/service/fight/fightc.go index 38a5be90..0d9353a7 100644 --- a/logic/service/fight/fightc.go +++ b/logic/service/fight/fightc.go @@ -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, diff --git a/logic/service/player/pet.go b/logic/service/player/pet.go index 6e4fb0d2..728da526 100644 --- a/logic/service/player/pet.go +++ b/logic/service/player/pet.go @@ -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{ diff --git a/modules/blazing/model/pet.go b/modules/blazing/model/pet.go index 7a151065..59d357c2 100644 --- a/modules/blazing/model/pet.go +++ b/modules/blazing/model/pet.go @@ -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 {