- 将Alive()方法改为Alive(bool)可设置方法,替代NotALive() - 将GetOwner()改为Owner(bool)可设置方法 - 修复效果初始化时默认激活状态 - 优化效果叠层和取消逻辑 - 修正超时处理日志输出
68 lines
1.4 KiB
Go
68 lines
1.4 KiB
Go
package effect
|
||
|
||
import (
|
||
"blazing/logic/service/fight/input"
|
||
"blazing/logic/service/fight/node"
|
||
)
|
||
|
||
/**
|
||
* n回合内没有击败,则对方死亡
|
||
*/
|
||
type Effect62 struct {
|
||
node.EffectNode
|
||
Hide bool // 是否隐藏 正常是命中就可用,镇魂歌是回合数到才可用
|
||
|
||
}
|
||
|
||
func init() {
|
||
t := &Effect62{
|
||
EffectNode: node.EffectNode{
|
||
|
||
},
|
||
}
|
||
t.Owner(true)
|
||
input.InitEffect(input.EffectType.Skill, 62, t)
|
||
|
||
}
|
||
|
||
func (e *Effect62) OnSkill(ctx input.Ctx) bool {
|
||
if !e.Hit() {
|
||
return true
|
||
}
|
||
if e.Duration() != 1 { //说明还没到生效节点
|
||
e.Hide = true //隐藏效果
|
||
} else {
|
||
e.Hide = false
|
||
}
|
||
|
||
if !e.Hide { //说明是自身回合//如果还在隐藏,就直接返回
|
||
|
||
//defer e.EffectNode.NotALive() //失效
|
||
//应该是对方固定伤害等于自身血量
|
||
//e.Input.Death() //本只死亡
|
||
|
||
//否则触发秒杀 在对面使用技能后
|
||
//return true
|
||
}
|
||
return false
|
||
}
|
||
|
||
// 默认添加回合
|
||
func (e *Effect62) SetArgs(t *input.Input, a ...int) {
|
||
|
||
e.EffectNode.SetArgs(t, a...)
|
||
e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0])
|
||
|
||
}
|
||
|
||
// 因为对方切精灵,这个效果也要无效掉
|
||
func (this *Effect62) OnSwitchIn(input.Ctx) bool {
|
||
if this.Hide { //如果还在隐藏,就直接返回
|
||
return true
|
||
}
|
||
//this.GetBattle().Effects[this.GetInput().UserID].RemoveEffect(this)
|
||
//否则触发秒杀 在对面使用技能后
|
||
return true
|
||
|
||
}
|