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): 调整战斗
66 lines
1.4 KiB
Go
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{})
|
|
|
|
}
|