2025-08-28 02:44:10 +00:00
|
|
|
|
package effect
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
2025-09-24 18:53:54 +00:00
|
|
|
|
"blazing/logic/service/fight/info"
|
2025-09-14 03:36:26 +08:00
|
|
|
|
"blazing/logic/service/fight/input"
|
2025-09-14 01:35:16 +08:00
|
|
|
|
"blazing/logic/service/fight/node"
|
2025-08-28 02:44:10 +00:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
|
|
//技能使用成功时,m%自身XX等级+/-n
|
2025-09-24 16:36:32 +00:00
|
|
|
|
input.InitEffect(input.EffectType.Skill, 4, NewEffectStat(false))
|
2025-09-06 00:31:08 +08:00
|
|
|
|
|
2025-08-28 02:44:10 +00:00
|
|
|
|
//技能使用成功时,m%对方XX等级+/-n
|
2025-09-24 16:36:32 +00:00
|
|
|
|
input.InitEffect(input.EffectType.Skill, 5, NewEffectStat(true))
|
2025-08-28 02:44:10 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-09-14 03:36:26 +08:00
|
|
|
|
func NewEffectStat(b bool) input.Effect {
|
2025-08-28 02:44:10 +00:00
|
|
|
|
|
2025-09-06 00:31:08 +08:00
|
|
|
|
return &EffectStat{
|
2025-09-23 17:34:58 +00:00
|
|
|
|
node.EffectNode{},
|
2025-09-06 00:31:08 +08:00
|
|
|
|
b,
|
|
|
|
|
|
}
|
2025-09-03 00:37:05 +08:00
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-09-06 00:31:08 +08:00
|
|
|
|
type EffectStat struct {
|
|
|
|
|
|
node.EffectNode
|
2025-09-24 16:36:32 +00:00
|
|
|
|
Etype bool
|
2025-08-28 02:44:10 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-09-06 00:31:08 +08: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
|
|
|
|
|
2025-09-06 00:31:08 +08:00
|
|
|
|
// // 3. 计算字段地址并赋值
|
|
|
|
|
|
// // 给a字段赋值(通过偏移量)
|
|
|
|
|
|
// addrA := unsafe.Pointer(baseAddr + 4) //根据攻击算其他字段
|
|
|
|
|
|
// *(*uint32)(addrA) = 100
|
|
|
|
|
|
// }
|
2025-09-24 18:53:54 +00:00
|
|
|
|
func (e *EffectStat) OnHit(opp *input.Input, skill *info.SkillEntity) {
|
2025-09-23 22:20:52 +00:00
|
|
|
|
|
2025-09-23 19:28:19 +00:00
|
|
|
|
t, _, _ := e.Input.Player.Roll(e.EffectNode.SideEffectArgs[1], 100)
|
|
|
|
|
|
if t {
|
2025-09-24 16:36:32 +00:00
|
|
|
|
if !e.Etype { //自身
|
2025-09-23 19:50:11 +00:00
|
|
|
|
e.Input.SetProp(e.EffectNode.SideEffectArgs[0], e.EffectNode.SideEffectArgs[2])
|
2025-09-23 19:28:19 +00:00
|
|
|
|
|
|
|
|
|
|
} else { //对方
|
2025-09-23 19:50:11 +00:00
|
|
|
|
opp.SetProp(e.EffectNode.SideEffectArgs[0], e.EffectNode.SideEffectArgs[2])
|
2025-09-23 19:28:19 +00:00
|
|
|
|
}
|
2025-09-06 00:31:08 +08:00
|
|
|
|
}
|
2025-09-23 19:28:19 +00:00
|
|
|
|
|
2025-08-28 02:44:10 +00:00
|
|
|
|
}
|