fix(fight): 战斗修改

This commit is contained in:
1
2025-11-11 05:54:24 +00:00
parent c6e0d84c1d
commit 65758c799e
44 changed files with 656 additions and 731 deletions

View File

@@ -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 {