2026-03-08 10:34:23 +08:00
|
|
|
|
package effect
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
2026-03-29 16:38:34 +08:00
|
|
|
|
"blazing/common/data/share"
|
|
|
|
|
|
"blazing/logic/service/fight/action"
|
2026-03-13 16:05:43 +08:00
|
|
|
|
"blazing/logic/service/fight/input"
|
2026-03-08 10:34:23 +08:00
|
|
|
|
"blazing/logic/service/fight/node"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
2026-03-28 21:57:22 +08:00
|
|
|
|
// Effect 445: 使用后在战斗结束时可以获得500赛尔豆,每日上限5000
|
2026-03-13 16:05:43 +08:00
|
|
|
|
type Effect445 struct {
|
|
|
|
|
|
node.EffectNode
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-29 16:38:34 +08:00
|
|
|
|
func (e *Effect445) SetArgs(t *input.Input, a ...int) {
|
|
|
|
|
|
e.EffectNode.SetArgs(t, a...)
|
|
|
|
|
|
e.Duration(-1)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (e *Effect445) OnBattleEnd() bool {
|
|
|
|
|
|
player := e.Ctx().Our.Player
|
|
|
|
|
|
if player == nil || player.GetInfo().UserID == 0 {
|
|
|
|
|
|
return true
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
count, err := share.GlobalCounterManager.GetCount(&share.DailyPeriod, player.GetInfo().UserID, 445)
|
|
|
|
|
|
if err != nil && err != share.ErrCacheMiss {
|
|
|
|
|
|
return true
|
|
|
|
|
|
}
|
|
|
|
|
|
if err == share.ErrCacheMiss {
|
|
|
|
|
|
count = 0
|
|
|
|
|
|
}
|
|
|
|
|
|
if count >= 10 {
|
|
|
|
|
|
return true
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if !player.ItemAdd(1, 500) {
|
|
|
|
|
|
return true
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
_, _ = share.GlobalCounterManager.IncrCount(&share.DailyPeriod, player.GetInfo().UserID, 445)
|
|
|
|
|
|
return true
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-13 16:05:43 +08:00
|
|
|
|
func init() {
|
|
|
|
|
|
input.InitEffect(input.EffectType.Skill, 445, &Effect445{})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-28 21:57:22 +08:00
|
|
|
|
// Effect 201: 对选中对象或本方全体恢复1/{1}的体力
|
2026-03-08 10:34:23 +08:00
|
|
|
|
type Effect201 struct {
|
|
|
|
|
|
node.EffectNode
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-04-05 02:25:44 +08:00
|
|
|
|
func isSameSideTarget(carrier, target *input.Input) bool {
|
|
|
|
|
|
if carrier == nil || target == nil {
|
|
|
|
|
|
return false
|
|
|
|
|
|
}
|
|
|
|
|
|
if carrier == target {
|
|
|
|
|
|
return true
|
|
|
|
|
|
}
|
|
|
|
|
|
for _, ally := range carrier.Team {
|
|
|
|
|
|
if ally == target {
|
|
|
|
|
|
return true
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if carrier.Player != nil && target.Player != nil {
|
|
|
|
|
|
return carrier.Player.GetInfo().UserID == target.Player.GetInfo().UserID
|
|
|
|
|
|
}
|
|
|
|
|
|
return false
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-29 16:38:34 +08:00
|
|
|
|
func (e *Effect201) OnSkill() bool {
|
|
|
|
|
|
args := e.Args()
|
|
|
|
|
|
if len(args) == 0 {
|
|
|
|
|
|
return true
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-04-05 02:25:44 +08:00
|
|
|
|
carrier := e.CarrierInput()
|
|
|
|
|
|
if carrier == nil {
|
|
|
|
|
|
carrier = e.Ctx().Our
|
|
|
|
|
|
}
|
|
|
|
|
|
if carrier == nil {
|
|
|
|
|
|
return true
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-29 16:38:34 +08:00
|
|
|
|
divisorIndex := len(args) - 1
|
|
|
|
|
|
if len(args) > 1 {
|
|
|
|
|
|
divisorIndex = 1
|
|
|
|
|
|
}
|
|
|
|
|
|
divisor := args[divisorIndex]
|
|
|
|
|
|
if divisor.IntPart() <= 0 {
|
|
|
|
|
|
return true
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
healAll := len(args) > 1 && args[0].IntPart() != 0
|
|
|
|
|
|
if !healAll {
|
2026-04-04 22:13:42 +08:00
|
|
|
|
target := e.TargetInput()
|
2026-04-05 02:25:44 +08:00
|
|
|
|
if !isSameSideTarget(carrier, target) {
|
|
|
|
|
|
target = carrier
|
2026-04-04 22:13:42 +08:00
|
|
|
|
}
|
|
|
|
|
|
current := target.CurrentPet()
|
|
|
|
|
|
if current == nil {
|
|
|
|
|
|
return true
|
|
|
|
|
|
}
|
|
|
|
|
|
target.Heal(
|
2026-04-05 02:25:44 +08:00
|
|
|
|
carrier,
|
2026-03-29 16:38:34 +08:00
|
|
|
|
&action.SelectSkillAction{},
|
2026-04-04 22:13:42 +08:00
|
|
|
|
current.GetMaxHP().Div(divisor),
|
2026-03-29 16:38:34 +08:00
|
|
|
|
)
|
|
|
|
|
|
return true
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-04-05 02:25:44 +08:00
|
|
|
|
team := carrier.Team
|
2026-04-04 22:13:42 +08:00
|
|
|
|
if len(team) == 0 {
|
2026-04-05 02:25:44 +08:00
|
|
|
|
team = []*input.Input{carrier}
|
2026-04-04 22:13:42 +08:00
|
|
|
|
}
|
|
|
|
|
|
for _, ally := range team {
|
|
|
|
|
|
if ally == nil {
|
2026-03-29 16:38:34 +08:00
|
|
|
|
continue
|
|
|
|
|
|
}
|
2026-04-04 22:13:42 +08:00
|
|
|
|
if current := ally.CurrentPet(); current != nil && current.Alive() {
|
2026-04-05 02:25:44 +08:00
|
|
|
|
ally.Heal(carrier, &action.SelectSkillAction{}, current.GetMaxHP().Div(divisor))
|
2026-03-29 16:38:34 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return true
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-13 16:05:43 +08:00
|
|
|
|
func init() {
|
|
|
|
|
|
input.InitEffect(input.EffectType.Skill, 201, &Effect201{})
|
|
|
|
|
|
}
|