Files
bl/logic/service/fight/effect/497.go
昔念 939ef29800
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
```
feat(effect): 移除effect435并重构为selfkill模块

移除独立的effect435实现文件,并将该效果重新实现在selfkill.go中。
effect435功能为牺牲自己使下回合出场精灵首次攻击必定命中和先手。

fix(effect): 修复effect457技能复制逻辑并添加回合结束处理

修复effect457在组队对战中的技能复制逻辑问题,添加deepcopy依赖,
并在回合结束时恢复原始技能状态。

refactor(fight): 调整战斗
2026-03-10 09:17:26 +08:00

66 lines
1.4 KiB
Go

package effect
import (
"blazing/logic/service/fight/action"
"blazing/logic/service/fight/info"
"blazing/logic/service/fight/input"
"blazing/logic/service/fight/node"
"github.com/barkimedes/go-deepcopy"
)
// 457 - 复制对手释放的技能(组队对战时无效)
type Effect457 struct {
node.EffectNode
org *info.SkillEntity
reid int
}
func (e *Effect457) ComparePre(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) bool {
if fattack == nil {
return true
}
//先手是自己
if fattack.PlayerID == e.Ctx().Our.UserID {
if sattack != nil {
originalSkill, _ := deepcopy.Anything(sattack.SkillEntity) //备份技能
originalSkill.(*info.SkillEntity).Accuracy = sattack.SkillEntity.Accuracy
e.reid = sattack.SkillEntity.XML.ID
fattack.SkillEntity = originalSkill.(*info.SkillEntity)
} else {
fattack = nil
}
} else {
if fattack != nil {
e.org = sattack.SkillEntity
originalSkill, _ := deepcopy.Anything(fattack.SkillEntity) //备份技能
originalSkill.(*info.SkillEntity).Accuracy = fattack.SkillEntity.Accuracy
e.reid = fattack.SkillEntity.XML.ID
sattack.SkillEntity = originalSkill.(*info.SkillEntity)
} else {
sattack = nil
}
}
return true
}
func (e *Effect457) TurnEnd() {
for _, v := range e.Ctx().Our.CurrentPet.Skills {
if v.XML.ID == e.reid {
v = e.org
}
}
}
func init() {
input.InitEffect(input.EffectType.Skill, 457, &Effect457{})
}