49 lines
1.5 KiB
Go
49 lines
1.5 KiB
Go
|
|
package effect
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"blazing/logic/service/fight/info"
|
|||
|
|
"blazing/logic/service/fight/input"
|
|||
|
|
"blazing/logic/service/fight/node"
|
|||
|
|
|
|||
|
|
"github.com/alpacahq/alpacadecimal"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 131 对方为X性则免疫当前回合伤害
|
|||
|
|
* 参数说明:
|
|||
|
|
* Args[0] = X性别的数值定义(例如:0=无性别,1=雄性,2=雌性,根据业务实际枚举值调整)
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
// 初始化效果注册
|
|||
|
|
func init() {
|
|||
|
|
// 注册效果类型:Skill(与134保持一致)、效果ID=131、效果实例
|
|||
|
|
input.InitEffect(input.EffectType.Skill, 131, &Effect131{})
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Effect131 效果131的结构体,嵌入基类获取通用能力
|
|||
|
|
type Effect131 struct {
|
|||
|
|
node.EffectNode
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Damage_DIV_ex 受击前触发(核心伤害拦截节点)
|
|||
|
|
// 该方法在伤害计算前执行,适合修改/清零伤害实现免疫效果
|
|||
|
|
func (e *Effect131) DamageLock_ex(t *info.DamageZone) bool {
|
|||
|
|
// 1. 检查效果是否命中(未命中则不生效)
|
|||
|
|
if !e.Hit() {
|
|||
|
|
return true
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 3. 获取配置的目标性别X(Args[0]存储X性别的数值)
|
|||
|
|
xGender := e.Args()[0].IntPart()
|
|||
|
|
|
|||
|
|
// 4. 对比对手性别与目标性别,匹配则免疫伤害
|
|||
|
|
// 注:需确保BattlePetEntity的Gender字段类型为int/int8,与xGender类型匹配
|
|||
|
|
if int(e.Ctx().Opp.CurrentPet.Gender) == int(xGender) {
|
|||
|
|
// 将伤害置为0,实现当前回合伤害免疫
|
|||
|
|
t.Damage = alpacadecimal.NewFromInt(0)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// 返回true表示允许后续流程继续(仅修改伤害值,不阻断流程)
|
|||
|
|
return true
|
|||
|
|
}
|