fix(fight): 战斗修改
This commit is contained in:
@@ -4,8 +4,6 @@ import (
|
||||
"blazing/logic/service/fight/info"
|
||||
"blazing/logic/service/fight/input"
|
||||
"blazing/logic/service/fight/node"
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"github.com/shopspring/decimal"
|
||||
)
|
||||
@@ -15,29 +13,30 @@ import (
|
||||
*/
|
||||
type Effect62 struct {
|
||||
node.EffectNode
|
||||
Hide bool // 是否隐藏 正常是命中就可用,镇魂歌是回合数到才可用
|
||||
opp *input.Input
|
||||
e *Effect62_sub
|
||||
l sync.Once
|
||||
// Hide bool // 是否隐藏 正常是命中就可用,镇魂歌是回合数到才可用
|
||||
// opp *input.Input
|
||||
// e *Effect62_sub
|
||||
//l sync.Once
|
||||
}
|
||||
type Effect62_sub struct {
|
||||
node.EffectNode
|
||||
bindpet *info.BattlePetEntity
|
||||
bind *input.Input
|
||||
//bindpet *info.BattlePetEntity
|
||||
//bind *input.Input
|
||||
|
||||
// Hide bool // 是否隐藏 正常是命中就可用,镇魂歌是回合数到才可用
|
||||
|
||||
}
|
||||
|
||||
// 这个实际上在对方回合执行的
|
||||
func (e *Effect62_sub) OnSkill(ctx input.Ctx) bool {
|
||||
func (e *Effect62_sub) OnSkill() bool {
|
||||
//defer e.Alive(false)
|
||||
if e.bindpet == e.bind.CurrentPet { //说明对方没有切换精灵
|
||||
if e.Duration() == 0 { //说明对方没有切换精灵
|
||||
//直接扣除所有血量OnSkill
|
||||
|
||||
ctx.DamageZone.Type = info.DamageType.Fixed
|
||||
ctx.DamageZone.Damage = decimal.NewFromInt(int64(e.bind.CurrentPet.Info.MaxHp))
|
||||
e.bind.Damage(ctx)
|
||||
e.Ctx().Our.Damage(&info.DamageZone{
|
||||
Type: info.DamageType.Fixed,
|
||||
Damage: decimal.NewFromInt(int64(e.Ctx().Our.CurrentPet.Info.MaxHp)),
|
||||
})
|
||||
|
||||
}
|
||||
return true
|
||||
@@ -50,56 +49,53 @@ func init() {
|
||||
input.InitEffect(input.EffectType.Skill, 62, t)
|
||||
|
||||
}
|
||||
func (e *Effect62) Turn_Start(ctx input.Ctx) {
|
||||
//如果对面还是我方放技能时候的玩家
|
||||
// if ctx.Player != e.opp.Player {
|
||||
// return
|
||||
// }
|
||||
fmt.Println(e.Duration(), "镇魂歌剩余回合")
|
||||
if e.Duration() != 0 { //说明还没到生效节点
|
||||
e.Hide = true //隐藏效果
|
||||
} else {
|
||||
e.opp.AddEffect(e.e)
|
||||
}
|
||||
// if !e.Hide { //说明是自身回合//如果还在隐藏,就直接返回
|
||||
|
||||
// //t.Duration(e.SideEffectArgs[0])
|
||||
// e.opp.AddEffect(e.e)
|
||||
// //defer e.EffectNode.NotALive() //失效
|
||||
// //应该是对方固定伤害等于自身血量
|
||||
// //e.Input.Death() //本只死亡
|
||||
// func (e *Effect62) Turn_Start() {
|
||||
// //如果对面还是我方放技能时候的玩家
|
||||
// // if ctx.Player != e.opp.Player {
|
||||
// // return
|
||||
// // }
|
||||
// fmt.Println(e.Duration(), "镇魂歌剩余回合")
|
||||
// if e.Duration() != 0 { //说明还没到生效节点
|
||||
// e.Hide = true //隐藏效果
|
||||
// } else {
|
||||
// e.opp.AddEffect(e.e)
|
||||
// }
|
||||
// // if !e.Hide { //说明是自身回合//如果还在隐藏,就直接返回
|
||||
|
||||
// //否则触发秒杀 在对面使用技能后
|
||||
// //return true
|
||||
// }
|
||||
}
|
||||
func (e *Effect62) OnSkill(ctx input.Ctx) bool {
|
||||
// // //t.Duration(e.SideEffectArgs[0])
|
||||
// // e.opp.AddEffect(e.e)
|
||||
// // //defer e.EffectNode.NotALive() //失效
|
||||
// // //应该是对方固定伤害等于自身血量
|
||||
// // //e.Input.Death() //本只死亡
|
||||
|
||||
// // //否则触发秒杀 在对面使用技能后
|
||||
// // //return true
|
||||
// // }
|
||||
// }
|
||||
|
||||
// 魂印开局添加,然后切精灵不消失
|
||||
func (e *Effect62) OnSkill() bool {
|
||||
if !e.Hit() {
|
||||
//e.Alive(false)
|
||||
return true
|
||||
}
|
||||
e.l.Do(func() {
|
||||
//e.Duration(1) //必须保持到下一回合,这样才会被复制
|
||||
e.opp = ctx.Input
|
||||
e.e = &Effect62_sub{
|
||||
EffectNode: node.EffectNode{},
|
||||
bindpet: ctx.CurrentPet,
|
||||
bind: ctx.Input,
|
||||
}
|
||||
e.e.ID(e.ID() + int(input.EffectType.Sub)) //子效果ID
|
||||
//e.e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0])
|
||||
//给对方添加我方施加的buff
|
||||
e.e.SetArgs(e.Input, e.SideEffectArgs...)
|
||||
})
|
||||
|
||||
//e.Duration(1) //必须保持到下一回合,这样才会被复制
|
||||
// e.opp = ctx.Input
|
||||
ee := &Effect62_sub{
|
||||
|
||||
// bindpet: ctx.CurrentPet,
|
||||
// bind: ctx.Input,
|
||||
}
|
||||
ee.EffectNode.Duration(e.EffectNode.SideEffectArgs[0]) //给对方挂3回合子buff
|
||||
ee.ID(e.ID() + int(input.EffectType.Sub)) //子效果ID
|
||||
//e.e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0])
|
||||
//给对方添加我方施加的buff
|
||||
ee.SetArgs(e.Ctx().Our, e.SideEffectArgs...)
|
||||
e.Ctx().Opp.AddEffect(ee)
|
||||
return true
|
||||
}
|
||||
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 {
|
||||
|
||||
Reference in New Issue
Block a user