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