Some checks failed
ci/woodpecker/push/my-first-workflow Pipeline failed
fix(fight): 修复技能实体属性访问问题 - 修改所有技能实体的ID、Power、CritRate、MustHit、Priority等属性访问方式 从直接访问改为通过XML字段访问,确保数据一致性 - 更新多个boss技能效果处理逻辑中的属性引用路径 - 移除已废弃的effect/486文件 - 在New
83 lines
1.6 KiB
Go
83 lines
1.6 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/alpacahq/alpacadecimal"
|
|
)
|
|
|
|
// 435 - 牺牲自己,使下回合出场的精灵首次攻击必定命中,必定先手
|
|
type Effect435 struct {
|
|
node.EffectNode
|
|
can bool
|
|
can2 bool
|
|
}
|
|
|
|
func (e *Effect435) SetArgs(t *input.Input, a ...int) {
|
|
|
|
//e.CanStack(-1)//后续的不会顶掉这个效果
|
|
e.EffectNode.SetArgs(t, a...)
|
|
e.Duration(-1) //次数类,无限回合
|
|
|
|
}
|
|
|
|
// 命中之后
|
|
func (e *Effect435) OnSkill() bool {
|
|
|
|
e.can = true
|
|
e.Ctx().Our.Damage(e.Ctx().Our, &info.DamageZone{
|
|
Type: info.DamageType.Fixed,
|
|
Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet.Info.MaxHp)),
|
|
})
|
|
e.Ctx().Our.CurrentPet.NotAlive = true
|
|
return true
|
|
}
|
|
func (e *Effect435) SwitchOut(in *input.Input) bool {
|
|
return true
|
|
}
|
|
func (e *Effect435) SwitchIn(in *input.Input) bool {
|
|
// 1. 检查效果是否生效(当次攻击有效)
|
|
if !e.can {
|
|
return true
|
|
}
|
|
//
|
|
if in != e.Ctx().Our {
|
|
return true
|
|
}
|
|
|
|
e.can2 = true
|
|
return true
|
|
}
|
|
func (e *Effect435) ComparePre(fattack *action.SelectSkillAction, sattack *action.SelectSkillAction) bool {
|
|
if !e.can2 {
|
|
return true
|
|
}
|
|
if fattack == nil {
|
|
return true
|
|
}
|
|
//先手是自己
|
|
if fattack.PlayerID == e.Ctx().Our.UserID {
|
|
return true
|
|
}
|
|
if sattack == nil {
|
|
return true
|
|
}
|
|
if sattack == nil {
|
|
return true
|
|
}
|
|
if sattack.SkillEntity == nil {
|
|
return true
|
|
}
|
|
//对调
|
|
sattack.SkillEntity.XML.Priority += 7
|
|
e.Alive(false)
|
|
return true
|
|
}
|
|
func init() {
|
|
input.InitEffect(input.EffectType.Skill, 435, &Effect435{})
|
|
|
|
}
|