Update AA synchronization, CW progression and diagnostics
This commit is contained in:
1 parent
67a819a4d3
commit
30bee81fe9
30 files changed
+1143
-55
No files matched your search
@@ -0,0 +1,77 @@
|
||||
package gameserver
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"gac-hkrpg-go/internal/common"
|
||||
pb "gac-hkrpg-go/protocol/proto"
|
||||
)
|
||||
|
||||
func TestCurrencyWarsGeneratedMonsterUsesOneStableCapturedCamp(t *testing.T) {
|
||||
c, err := common.LoadCurrencyWarsCatalog()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
refs, err := common.LoadCurrencyWarsReferenceNodes(c)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
policy, err := cwLoadReferenceEnemies(c)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
var row common.CurrencyWarsRouteNode
|
||||
var tmpl common.CurrencyWarsReferenceNodeTemplate
|
||||
for _, candidate := range c.StageRoutes {
|
||||
node, e := refs.Template(candidate.NodeTemplateID)
|
||||
if e == nil && node.NodeType == "Monster" {
|
||||
row, tmpl = candidate, node
|
||||
break
|
||||
}
|
||||
}
|
||||
if row.RouteID == 0 {
|
||||
t.Fatal("captured route has no Monster node")
|
||||
}
|
||||
run := &pb.MPIMAEMCEFH{UniqueId: 42, LJNGPCKPJLF: c.ActiveSeasonID}
|
||||
stage := &pb.BEEFLEJAOCN{EMOHLJHPOPC: row.RouteID, DCAHJELNJNP: row.ChapterID, SectionId: row.SectionID}
|
||||
first, err := cwGenerateReferenceMonsterLayer(c, run, stage, tmpl, policy)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
again, err := cwGenerateReferenceMonsterLayer(c, run, stage, tmpl, policy)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
layer, other := first.GetMPOBBIPMNNJ(), again.GetMPOBBIPMNNJ()
|
||||
if layer == nil || other == nil || layer.LNDKCPBJDKH != other.LNDKCPBJDKH || layer.MOADBALHMFD != 1 || len(layer.BPDABHGFBFO) != 1 {
|
||||
t.Fatal("monster camp or branch state differs")
|
||||
}
|
||||
camp, err := c.MonsterCamp(run.LJNGPCKPJLF, layer.LNDKCPBJDKH)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
allowed := map[uint32]bool{}
|
||||
for _, id := range camp.Season.MonsterList {
|
||||
allowed[id] = true
|
||||
}
|
||||
branch := layer.BPDABHGFBFO[0]
|
||||
if branch.IFIIOIIKJHO != tmpl.PenaltyBonusRuleID || len(branch.MonsterWaveList) != 1 {
|
||||
t.Fatal("monster wave or penalty differs")
|
||||
}
|
||||
previous, err := cwReferenceEarlierCount(c, stage, "Monster", false)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
want := policy.Policy.LaterMonsterCount
|
||||
if previous == 0 {
|
||||
want = policy.Policy.FirstMonsterCount
|
||||
}
|
||||
if len(branch.MonsterWaveList[0].PBLBBDBDLEK) != int(want) {
|
||||
t.Fatal("monster count differs from policy")
|
||||
}
|
||||
for _, m := range branch.MonsterWaveList[0].PBLBBDBDLEK {
|
||||
if !allowed[m.MonsterId] || policy.MonsterTiers[m.MonsterId] == 0 || policy.MonsterTiers[m.MonsterId] > policy.Policy.MonsterMaxTier || m.RoleStar == 0 {
|
||||
t.Fatal("monster is outside captured eligible camp")
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user