diff --git a/go.mod b/go.mod index 395dde5..893db98 100644 --- a/go.mod +++ b/go.mod @@ -2,4 +2,7 @@ module github.com/icza/screp go 1.20 -require golang.org/x/text v0.8.0 +require ( + github.com/icza/gox v0.0.0-20230924165045-adcb03233bb5 + golang.org/x/text v0.17.0 +) diff --git a/go.sum b/go.sum index cb06b28..92356a1 100644 --- a/go.sum +++ b/go.sum @@ -1,2 +1,4 @@ -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +github.com/icza/gox v0.0.0-20230924165045-adcb03233bb5 h1:K7KEFpKgVcjj98jOu2Z3xMBTtTwfYVT90Zmo3ZuWmbE= +github.com/icza/gox v0.0.0-20230924165045-adcb03233bb5/go.mod h1:VbcN86fRkkUMPX2ufM85Um8zFndLZswoIW1eYtpAcVk= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= diff --git a/rep/replay.go b/rep/replay.go index 61096d4..7e529f4 100644 --- a/rep/replay.go +++ b/rep/replay.go @@ -11,6 +11,7 @@ import ( "strings" "time" + "github.com/icza/gox/stringsx" "github.com/icza/screp/rep/repcmd" "github.com/icza/screp/rep/repcore" "github.com/icza/screp/repparser/repdecoder" @@ -153,10 +154,11 @@ func (r *Replay) Compute() { if r.MapData != nil { mapName = r.MapData.Name } - mapName = strings.ToLower(mapName) + // counter-example: " \aai \x04hunters \x02remastered \x062.0" + mapName = strings.ToLower(stringsx.Clean(mapName)) // "[ai]" maps are special, we can do better than in general: switch { - case strings.Contains(mapName, "[ai]") || strings.Contains(mapName, "bgh random teams"): + case strings.Contains(mapName, "[ai]") || strings.Contains(mapName, "ai hunters") || strings.Contains(mapName, "bgh random teams"): r.detectObservers(pidBuilds, obsProfileUMSAI) r.computeUMSTeamsAI() default: