Files
bl/logic/service/fight/effect/497.go
xinian 875ad668aa
Some checks failed
ci/woodpecker/push/my-first-workflow Pipeline failed
feat: 实现战斗效果逻辑和接口重构
2026-03-28 21:57:22 +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"
)
// Effect 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{})
}