Files
bl/logic/service/fight/effect/effect_4_5.go

55 lines
1.3 KiB
Go
Raw Normal View History

2025-08-28 02:44:10 +00:00
package effect
import (
"blazing/logic/service/fight/info"
"blazing/logic/service/fight/input"
"blazing/logic/service/fight/node"
2025-08-28 02:44:10 +00:00
)
func init() {
//技能使用成功时m%自身XX等级+/-n
input.InitEffect(input.EffectType.Skill, 4, NewEffectStat(false))
2025-08-28 02:44:10 +00:00
//技能使用成功时m%对方XX等级+/-n
input.InitEffect(input.EffectType.Skill, 5, NewEffectStat(true))
2025-08-28 02:44:10 +00:00
}
func NewEffectStat(b bool) input.Effect {
2025-08-28 02:44:10 +00:00
return &EffectStat{
node.EffectNode{},
b,
}
}
type EffectStat struct {
node.EffectNode
Etype bool
2025-08-28 02:44:10 +00:00
}
// func (this *EffectStat) GetPet() {
// ff := this.EffectNode.GetOwnerPet()
// offsetC := unsafe.Offsetof(ff.Atk) // c字段的偏移量通常为4+16=20
// // 2. 将结构体指针转换为原始内存地址uintptr
// baseAddr := uintptr(unsafe.Pointer(&offsetC))
2025-08-28 02:44:10 +00:00
// // 3. 计算字段地址并赋值
// // 给a字段赋值通过偏移量
// addrA := unsafe.Pointer(baseAddr + 4) //根据攻击算其他字段
// *(*uint32)(addrA) = 100
// }
func (e *EffectStat) OnHit(opp *input.Input, skill *info.SkillEntity) {
t, _, _ := e.Input.Player.Roll(e.EffectNode.SideEffectArgs[1], 100)
if t {
if !e.Etype { //自身
e.Input.SetProp(e.EffectNode.SideEffectArgs[0], e.EffectNode.SideEffectArgs[2])
} else { //对方
opp.SetProp(e.EffectNode.SideEffectArgs[0], e.EffectNode.SideEffectArgs[2])
}
}
2025-08-28 02:44:10 +00:00
}