```
feat(fight): 重构技能效果4和5的实现逻辑 - 移除旧的EffectStat通用结构体 - 为技能4和5创建独立的Effect4和Effect5结构体 - 简化技能触发逻辑,直接使用SideEffectArgs参数 - 技能4现在只影响自身属性,技能5只影响对方属性 - 移除targetOpponent布尔类型判断逻辑 fix(pet): 添加宠物上架数量限制 - 在UPdatePrice方法中增加销售宠物数量检查 - 当is_sale为1时检查
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package effect
|
||||
|
||||
import (
|
||||
"blazing/logic/service/fight/input"
|
||||
"blazing/logic/service/fight/node"
|
||||
)
|
||||
|
||||
@@ -9,65 +8,52 @@ import (
|
||||
// 注册
|
||||
// -----------------------------------------------------------
|
||||
func init() {
|
||||
initskill(4, newEffectStat(false))
|
||||
initskill(5, newEffectStat(true))
|
||||
initskill(4, &Effect4{})
|
||||
initskill(5, &Effect5{})
|
||||
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------
|
||||
// 构造
|
||||
// -----------------------------------------------------------
|
||||
func newEffectStat(targetOpponent bool) input.Effect {
|
||||
e := &EffectStat{
|
||||
Etype: targetOpponent,
|
||||
}
|
||||
//e.CanStack(-1) // 无限叠加
|
||||
return e
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------
|
||||
// 主体结构
|
||||
// -----------------------------------------------------------
|
||||
type EffectStat struct {
|
||||
type Effect4 struct {
|
||||
node.EffectNode
|
||||
Etype bool // false: 作用自身, true: 作用对方
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------
|
||||
// 技能触发时调用
|
||||
// -----------------------------------------------------------
|
||||
func (e *EffectStat) Skill_Use() bool {
|
||||
|
||||
// 参数解构 (防止 SideEffectArgs 长度不足)
|
||||
var (
|
||||
statIndex int // 哪个属性
|
||||
chance int // 触发概率
|
||||
level int // 增减值
|
||||
)
|
||||
if len(e.SideEffectArgs) > 0 {
|
||||
statIndex = e.SideEffectArgs[0]
|
||||
}
|
||||
if len(e.SideEffectArgs) > 1 {
|
||||
chance = e.SideEffectArgs[1]
|
||||
}
|
||||
if len(e.SideEffectArgs) > 2 {
|
||||
level = e.SideEffectArgs[2]
|
||||
}
|
||||
|
||||
// 概率判定
|
||||
ok, _, _ := e.Input.Player.Roll(chance, 100)
|
||||
func (e *Effect4) Skill_Use() bool {
|
||||
ok, _, _ := e.Input.Player.Roll(e.SideEffectArgs[0], 100)
|
||||
if !ok {
|
||||
return true
|
||||
}
|
||||
|
||||
// 执行属性变化
|
||||
if e.Etype {
|
||||
// 对方属性变化
|
||||
e.Ctx().Opp.SetProp(e.Ctx().Our, int8(statIndex), int8(level))
|
||||
} else {
|
||||
// 自身属性变化
|
||||
e.Ctx().Our.SetProp(e.Ctx().Our, int8(statIndex), int8(level))
|
||||
}
|
||||
e.Ctx().Our.SetProp(e.Ctx().Our, int8(e.SideEffectArgs[1]), int8(e.SideEffectArgs[2]))
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
type Effect5 struct {
|
||||
node.EffectNode
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------
|
||||
// 技能触发时调用
|
||||
// -----------------------------------------------------------
|
||||
func (e *Effect5) Skill_Use() bool {
|
||||
|
||||
// 概率判定
|
||||
ok, _, _ := e.Input.Player.Roll(e.SideEffectArgs[0], 100)
|
||||
if !ok {
|
||||
return true
|
||||
}
|
||||
|
||||
e.Ctx().Opp.SetProp(e.Ctx().Our, int8(e.SideEffectArgs[1]), int8(e.SideEffectArgs[2]))
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user