2025-08-27 14:41:06 +00:00
|
|
|
|
package effect
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
2025-11-08 23:20:48 +08: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-11-13 02:43:00 +08:00
|
|
|
|
"fmt"
|
2025-11-20 21:37:37 +08:00
|
|
|
|
"math"
|
2025-11-08 23:20:48 +08:00
|
|
|
|
|
2025-12-05 00:24:02 +08:00
|
|
|
|
"github.com/alpacahq/alpacadecimal"
|
2025-08-27 14:41:06 +00:00
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* n回合内没有击败,则对方死亡
|
|
|
|
|
|
*/
|
|
|
|
|
|
type Effect62 struct {
|
|
|
|
|
|
node.EffectNode
|
2025-11-11 05:54:24 +00:00
|
|
|
|
// Hide bool // 是否隐藏 正常是命中就可用,镇魂歌是回合数到才可用
|
|
|
|
|
|
// opp *input.Input
|
|
|
|
|
|
// e *Effect62_sub
|
|
|
|
|
|
//l sync.Once
|
2025-11-08 23:20:48 +08:00
|
|
|
|
}
|
2025-11-09 02:29:21 +00:00
|
|
|
|
type Effect62_sub struct {
|
2025-11-08 23:20:48 +08:00
|
|
|
|
node.EffectNode
|
2025-11-20 21:37:37 +08:00
|
|
|
|
duy int
|
2025-11-11 05:54:24 +00:00
|
|
|
|
//bindpet *info.BattlePetEntity
|
|
|
|
|
|
//bind *input.Input
|
2025-11-08 23:20:48 +08:00
|
|
|
|
|
|
|
|
|
|
// Hide bool // 是否隐藏 正常是命中就可用,镇魂歌是回合数到才可用
|
2025-09-24 19:47:01 +00:00
|
|
|
|
|
2025-08-27 14:41:06 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-05 22:54:41 +08:00
|
|
|
|
func (e *Effect62_sub) TurnEnd() {
|
2025-11-20 21:37:37 +08:00
|
|
|
|
|
|
|
|
|
|
e.duy--
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-11-09 02:29:21 +00:00
|
|
|
|
// 这个实际上在对方回合执行的
|
2025-11-11 05:54:24 +00:00
|
|
|
|
func (e *Effect62_sub) OnSkill() bool {
|
2025-11-20 21:37:37 +08:00
|
|
|
|
fmt.Println("镇魂歌剩余回合", e.duy)
|
2025-11-11 01:10:26 +08:00
|
|
|
|
//defer e.Alive(false)
|
2025-11-20 21:37:37 +08:00
|
|
|
|
if e.duy <= 0 { //说明对方没有切换精灵
|
2025-11-08 23:20:48 +08:00
|
|
|
|
//直接扣除所有血量OnSkill
|
2025-11-12 01:19:24 +08:00
|
|
|
|
//相当于对方给自己的伤害
|
2025-11-12 13:44:21 +00:00
|
|
|
|
e.Ctx().Our.Damage(e.Ctx().Opp, &info.DamageZone{
|
2025-11-11 05:54:24 +00:00
|
|
|
|
Type: info.DamageType.Fixed,
|
2025-12-05 00:24:02 +08:00
|
|
|
|
Damage: alpacadecimal.NewFromInt(int64(e.Ctx().Our.CurrentPet.Info.MaxHp)),
|
2025-11-11 05:54:24 +00:00
|
|
|
|
})
|
2025-11-20 21:37:37 +08:00
|
|
|
|
e.Alive(false)
|
2025-11-08 23:20:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
return true
|
|
|
|
|
|
}
|
2025-08-27 14:41:06 +00:00
|
|
|
|
func init() {
|
2025-09-26 13:33:55 +08:00
|
|
|
|
t := &Effect62{
|
2025-11-08 18:37:11 +08:00
|
|
|
|
EffectNode: node.EffectNode{},
|
2025-09-26 13:33:55 +08:00
|
|
|
|
}
|
2025-11-08 18:37:11 +08:00
|
|
|
|
|
2025-09-26 13:33:55 +08:00
|
|
|
|
input.InitEffect(input.EffectType.Skill, 62, t)
|
2025-08-27 14:41:06 +00:00
|
|
|
|
|
|
|
|
|
|
}
|
2025-09-24 18:53:54 +00:00
|
|
|
|
|
2026-01-05 22:54:41 +08:00
|
|
|
|
// func (e *Effect62) TurnStart() {
|
2025-11-11 05:54:24 +00:00
|
|
|
|
// //如果对面还是我方放技能时候的玩家
|
|
|
|
|
|
// // 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() //本只死亡
|
2025-09-23 19:38:08 +00:00
|
|
|
|
|
2025-11-11 05:54:24 +00:00
|
|
|
|
// // //否则触发秒杀 在对面使用技能后
|
|
|
|
|
|
// // //return true
|
|
|
|
|
|
// // }
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
// 魂印开局添加,然后切精灵不消失
|
|
|
|
|
|
func (e *Effect62) OnSkill() bool {
|
2025-11-11 01:10:26 +08:00
|
|
|
|
|
2025-11-11 05:54:24 +00:00
|
|
|
|
//e.Duration(1) //必须保持到下一回合,这样才会被复制
|
|
|
|
|
|
// e.opp = ctx.Input
|
|
|
|
|
|
ee := &Effect62_sub{
|
2025-11-11 01:10:26 +08:00
|
|
|
|
|
2025-11-11 05:54:24 +00:00
|
|
|
|
// bindpet: ctx.CurrentPet,
|
|
|
|
|
|
// bind: ctx.Input,
|
|
|
|
|
|
}
|
2025-11-20 21:37:37 +08:00
|
|
|
|
ee.duy = e.EffectNode.SideEffectArgs[0]
|
2025-11-22 00:44:42 +08:00
|
|
|
|
ee.EffectNode.Duration(math.MaxInt) //给对方挂3回合子buff
|
2025-11-22 22:57:32 +08:00
|
|
|
|
tt := e.ID()
|
2025-11-26 15:25:10 +08:00
|
|
|
|
tt.SetEffectType(input.EffectType.Sub)
|
2025-11-22 00:44:42 +08:00
|
|
|
|
|
2025-11-22 22:57:32 +08:00
|
|
|
|
ee.ID(tt)
|
2025-11-11 05:54:24 +00:00
|
|
|
|
//e.e.EffectNode.Duration(e.EffectNode.SideEffectArgs[0])
|
|
|
|
|
|
//给对方添加我方施加的buff
|
|
|
|
|
|
ee.SetArgs(e.Ctx().Our, e.SideEffectArgs...)
|
2025-11-14 03:21:00 +08:00
|
|
|
|
e.Ctx().Opp.AddEffect(e.Ctx().Our, ee)
|
2025-11-11 05:54:24 +00:00
|
|
|
|
return true
|
2025-11-11 01:10:26 +08:00
|
|
|
|
}
|