Files
bl/logic/service/fight/effect/none_test.go
xinian 3a7f593105
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
fix: 修复 Effect201 在单人战斗中误生效的问题
2026-04-11 22:22:23 +08:00

71 lines
2.0 KiB
Go

package effect
import (
"testing"
fightinfo "blazing/logic/service/fight/info"
"blazing/logic/service/fight/input"
"blazing/modules/player/model"
)
func newEffect201TestInput(hp, maxHP uint32) *input.Input {
in := &input.Input{
CurPet: []*fightinfo.BattlePetEntity{{
Info: model.PetInfo{
Hp: hp,
MaxHp: maxHP,
},
}},
}
in.AttackValue = fightinfo.NewAttackValue(0)
return in
}
func TestEffect201HealAllIgnoredInSingleInputBattle(t *testing.T) {
carrier := newEffect201TestInput(40, 100)
opponent := newEffect201TestInput(60, 100)
carrier.Team = []*input.Input{carrier}
carrier.OppTeam = []*input.Input{opponent}
eff := &Effect201{}
eff.SetArgs(carrier, 1, 2)
eff.EffectNode.EffectContextHolder.Ctx = input.Ctx{
LegacySides: input.LegacySides{Our: carrier, Opp: opponent},
EffectBinding: input.EffectBinding{Carrier: carrier, Source: carrier},
}
if !eff.OnSkill() {
t.Fatalf("expected effect to finish successfully")
}
if got := carrier.CurrentPet().Info.Hp; got != 40 {
t.Fatalf("expected single-input full-team heal to be ignored, got hp %d", got)
}
}
func TestEffect201HealAllWorksInMultiInputBattle(t *testing.T) {
carrier := newEffect201TestInput(40, 100)
ally := newEffect201TestInput(10, 80)
opponent := newEffect201TestInput(60, 100)
carrier.Team = []*input.Input{carrier, ally}
carrier.OppTeam = []*input.Input{opponent}
ally.Team = carrier.Team
ally.OppTeam = carrier.OppTeam
eff := &Effect201{}
eff.SetArgs(carrier, 1, 2)
eff.EffectNode.EffectContextHolder.Ctx = input.Ctx{
LegacySides: input.LegacySides{Our: carrier, Opp: opponent},
EffectBinding: input.EffectBinding{Carrier: carrier, Source: carrier},
}
if !eff.OnSkill() {
t.Fatalf("expected effect to finish successfully")
}
if got := carrier.CurrentPet().Info.Hp; got != 90 {
t.Fatalf("expected carrier hp 90 after full-team heal, got %d", got)
}
if got := ally.CurrentPet().Info.Hp; got != 50 {
t.Fatalf("expected ally hp 50 after full-team heal, got %d", got)
}
}