feat(currency_wars): complete systems, settlement Rank SS, damage report, camera and recovery fixes

This commit is contained in:
CAtlas0784 committed 2026-10-31 20:47:36 +07:00
1 parent c008243f11
commit 0995055296
78 files changed
+33840 -9525

No files matched your search

+49 -2
View File
@@ -49,9 +49,11 @@ func buildCurrencyWarsBattle(s *Session, catalog *common.CurrencyWarsCatalog, ru
grid.StageInfo = &pb.KJFEHJMAIAA{FMNPBOJGLFI: v.FMNPBOJGLFI}
}
}
if stage == nil || run.DivisionId != grid.AACGBEBGDPE || run.IsOverlock != grid.IsOverlock {
division, err := catalog.CapturedStage(run.DivisionId)
if err != nil || stage == nil || run.IsOverlock != grid.IsOverlock {
return nil, fmt.Errorf("CW battle envelope has not been captured for this mode/division")
}
grid.AACGBEBGDPE = division.ID
var node *pb.OHMDHKGAEMM
for _, n := range stage.OOMMIIKPHBC {
if n.SectionId == stage.SectionId && n.DCAHJELNJNP == stage.DCAHJELNJNP {
@@ -83,13 +85,14 @@ func buildCurrencyWarsBattle(s *Session, catalog *common.CurrencyWarsCatalog, ru
return nil, fmt.Errorf("CW battle mode envelope missing")
}
ext.GLHDCCPOGHL.IHHNLLAJAGB = 0
runtime, _ := cwBonfireRuntime(catalog, run)
// These fields contain the reference party's traits, buffs and battle events.
// They cannot be reused for another party. Derived trait/equipment effects
// remain a separate implementation task; don't silently inherit its bonuses.
grid.GridGameRoleList = nil
grid.GridGameNpcList = nil
grid.OPHONCKPNMG = nil
grid.GridFightTraitInfo = nil
grid.GridFightTraitInfo = cwCalculateBattleTraits(catalog, run, runtime)
grid.POCKGKDFLKK = nil
grid.KCOMPKMJCMC = nil
grid.SyncAugmentInfo = nil
@@ -102,6 +105,50 @@ func buildCurrencyWarsBattle(s *Session, catalog *common.CurrencyWarsCatalog, ru
}
info.BattleAvatarList = nil
info.BuffList = nil
if runtime != nil && runtime.Rules != nil {
tbCat, _ := common.LoadCurrencyWarsTrailblaze()
if tbCat != nil {
var ownerIndex uint32
hasOwner := false
for _, r := range team.GridGameRoleList {
if r != nil && r.Pos > 0 && r.Pos < benchFirstPos {
if variant, err := catalog.CapturedRoleVariant(r.Id, r.RoleStar); err == nil {
for _, tid := range variant.Config.TraitList {
if tid == cwTrailblazeTrait {
if !hasOwner || r.Pos < ownerIndex {
ownerIndex = r.Pos
hasOwner = true
}
break
}
}
}
}
}
if hasOwner {
for _, good := range tbCat.GoodsList {
if good.Kind == "maze_buff" && len(good.Params) == 1 && tbBoughtCount(runtime, good.ID) > 0 {
superseded := false
for _, child := range tbCat.GoodsList {
if child.Father == good.ID && tbBoughtCount(runtime, child.ID) > 0 {
superseded = true
break
}
}
if !superseded {
info.BuffList = append(info.BuffList, &pb.BattleBuff{
Id: good.Params[0],
Level: 1,
OwnerId: ownerIndex,
WaveFlag: 0xFFFFFFFF,
TargetIndexList: []uint32{ownerIndex},
})
}
}
}
}
}
}
info.BattleEvent = nil
supported, err := supportedRelicIDs()
if err != nil {