2025-12-11 20:05:00 +00:00
|
|
|
|
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
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-04 22:10:34 +08:00
|
|
|
|
// DamageDivEx 受击前触发(核心伤害拦截节点)
|
2025-12-11 20:05:00 +00:00
|
|
|
|
// 该方法在伤害计算前执行,适合修改/清零伤害实现免疫效果
|
2026-01-06 01:34:26 +08:00
|
|
|
|
func (e *Effect131) DamageLockEx(t *info.DamageZone) bool {
|
2025-12-11 20:05:00 +00:00
|
|
|
|
|
|
|
|
|
|
// 3. 获取配置的目标性别X(Args[0]存储X性别的数值)
|
|
|
|
|
|
xGender := e.Args()[0].IntPart()
|
|
|
|
|
|
|
|
|
|
|
|
// 4. 对比对手性别与目标性别,匹配则免疫伤害
|
|
|
|
|
|
// 注:需确保BattlePetEntity的Gender字段类型为int/int8,与xGender类型匹配
|
2026-02-08 17:57:42 +08:00
|
|
|
|
if int(e.Ctx().Opp.CurrentPet.Info.Gender) == int(xGender) {
|
2025-12-11 20:05:00 +00:00
|
|
|
|
// 将伤害置为0,实现当前回合伤害免疫
|
2026-01-21 20:46:05 +00:00
|
|
|
|
t.Damage = alpacadecimal.Zero
|
2025-12-11 20:05:00 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 返回true表示允许后续流程继续(仅修改伤害值,不阻断流程)
|
|
|
|
|
|
return true
|
|
|
|
|
|
}
|