feat(fight): AI战斗逻辑优化,修复技能使用判断逻辑

- 修改AI技能选择逻辑,从直接使用技能ID改为先存储技能实体再统一执行
- 修复usedskill变量类型从uint32改为*info.SkillEntity指针类型
- 优化技能使用流程,确保只有在找到可用技能时才执行UseSkill操作

fix(player): 调整玩家登录时的任务
This commit is contained in:
昔念
2026-01-22 14:29:08 +08:00
parent e96f990724
commit 3af709f633
3 changed files with 19 additions and 7 deletions

View File

@@ -1,5 +1,7 @@
package input
import "blazing/logic/service/fight/info"
func (our *Input) GetAction() {
next := our.Exec(func(t Effect) bool {
@@ -29,7 +31,7 @@ func (our *Input) GetAction() {
if len(skills) == 0 {
return
}
var usedskill uint32
var usedskill *info.SkillEntity
for _, s := range skills {
if s == nil {
continue
@@ -42,10 +44,10 @@ func (our *Input) GetAction() {
// 判断是否能秒杀(伤害 >= 对方当前生命值)
if uint32(s.DamageValue.IntPart()) >= our.Opp.CurrentPet.Info.Hp { // 假设oppPet.HP为对方当前剩余生命值
our.FightC.UseSkill(our.Player, uint32(s.ID))
usedskill = s
}
}
if usedskill == 0 {
if usedskill == nil {
for _, s := range skills {
if s == nil {
@@ -54,11 +56,17 @@ func (our *Input) GetAction() {
if !s.CanUse() {
continue
}
our.FightC.UseSkill(our.Player, uint32(s.ID))
usedskill = s
}
}
our.FightC.UseSkill(our.Player, 0)
if usedskill != nil {
our.FightC.UseSkill(our.Player, uint32(usedskill.ID))
} else {
our.FightC.UseSkill(our.Player, 0)
}
// // 若存在能秒杀的技能,优先使用(选伤害最高的,避免浪费高伤害技能)
// if len(killableSkills) > 0 {
// bestKillSkill := killableSkills[0].SkillEntity