diff --git a/main.go b/main.go index 81cc619..b96bb42 100644 --- a/main.go +++ b/main.go @@ -103,9 +103,13 @@ func raHandler(client *req.Client, kv *bolt.DB, m *gowon.Message) (string, error return CommandHandler(client, kv, m.Nick, user, raCurrentStatus) case "p", "points": return CommandHandler(client, kv, m.Nick, user, raPoints) + case "w", "awards": + return CommandHandler(client, kv, m.Nick, user, raAwards) + case "g", "game": + return CommandHandler(client, kv, m.Nick, user, raGameProgress) } - return "one of [s]et, [a]chievement, [l]ast, [c]urrent or [p]oints must be passed as a command", nil + return "one of [s]et, [a]chievement, [l]ast, [c]urrent, [p]oints, a[w]ards or [g]ame must be passed as a command", nil } func main() { diff --git a/retroachivements.go b/retroachivements.go index 8935870..b596ae9 100644 --- a/retroachivements.go +++ b/retroachivements.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "strconv" "strings" "time" @@ -11,17 +12,25 @@ import ( const ( timeDateFormat = "2006-01-02 15:04:05" - raAchievementsURL = "https://retroachievements.org/API/API_GetUserRecentAchievements.php" - raRecentGamesURL = "https://retroachievements.org/API/API_GetUserRecentlyPlayedGames.php" - raUserSummaryURL = "https://retroachievements.org/API/API_GetUserSummary.php" - - achievementColour = "cyan" - gameColour = "magenta" - pointsColour = "green" - relaxedPointsColour = "magenta" - hardcoreColour = "yellow" - richPresenceColour = "yellow" - rankColour = "yellow" + raRootURL = "https://retroachievements.org/API/" + raAchievementsURL = raRootURL + "API_GetUserRecentAchievements.php" + raRecentGamesURL = raRootURL + "API_GetUserRecentlyPlayedGames.php" + raUserSummaryURL = raRootURL + "API_GetUserSummary.php" + raAwardsURL = raRootURL + "API_GetUserAwards.php" + raGameProgressURL = raRootURL + "API_GetGameInfoAndUserProgress.php" + + achievementColour = "cyan" + gameColour = "magenta" + pointsColour = "green" + relaxedPointsColour = "magenta" + hardcoreColour = "yellow" + richPresenceColour = "yellow" + rankColour = "yellow" + awardColour = "yellow" + beatenColour = "red" + completedColour = "cyan" + masteredColour = "yellow" + completionPercentColour = "blue" ) var ( @@ -54,6 +63,7 @@ type Achievement struct { Points int `json:"Points"` GameTitle string `json:"GameTitle"` ConsoleName string `json:"ConsoleName"` + GameID int `json:"GameID"` } func formatAchievement(a Achievement) string { @@ -242,3 +252,159 @@ func raPoints(client *req.Client, user string) (string, error) { return sb.String(), nil } + +type Awards struct { + BeatenHardcore int `json:"BeatenHardcoreAwardsCount"` + BeatenSoftcore int `json:"BeatenSoftcoreAwardsCount"` + Completed int `json:"CompletionAwardsCount"` + Mastered int `json:"MasteryAwardsCount"` +} + +func raAwards(client *req.Client, user string) (string, error) { + var j Awards + + _, err := client.R(). + SetQueryParam("u", user). + SetSuccessResult(&j). + Get(raAwardsURL) + + if err != nil { + return "", err + } + + var sb strings.Builder + + w := func(in, colour string) { + s := colourString(in, colour) + sb.WriteString(s) + } + + sb.WriteString(fmt.Sprintf("%s | ", user)) + + w(fmt.Sprintf("Beaten: %d (Relaxed: %d)", j.BeatenHardcore, j.BeatenSoftcore), beatenColour) + + sb.WriteString(" | ") + + w(fmt.Sprintf("Completed: %d", j.Completed), completedColour) + + sb.WriteString(" | ") + + w(fmt.Sprintf("Mastered: %d", j.Mastered), masteredColour) + + return sb.String(), nil +} + +type GameProgress struct { + Title string `json:"Title"` + Console string `json:"ConsoleName"` + Completion string `json:"UserCompletion"` + CompletionHardcore string `json:"UserCompletionHardcore"` + NumAchievements int `json:"NumAchievements"` + AchievementsRelaxed int `json:"NumAwardedToUser"` + AchievementsHardcore int `json:"NumAwardedToUserHardcore"` + Achievements map[string]struct { + Points int `json:"Points"` + DateEarned string `json:"DateEarned"` + } `json:"Achievements"` + PointsTotal int `json:"points_total"` + HighestAward string `json:"HighestAwardKind"` +} + +func (gp *GameProgress) PointsAwarded() string { + points := 0 + pointsAwarded := 0 + + for _, a := range gp.Achievements { + points += a.Points + + if a.DateEarned != "" { + pointsAwarded += a.Points + } + } + + return fmt.Sprintf("%d/%d", pointsAwarded, points) +} + +func raGameProgress(client *req.Client, user string) (string, error) { + var aj []Achievement + + _, err := client.R(). + SetQueryParam("u", user). + SetQueryParam("m", "131400"). + SetSuccessResult(&aj). + Get(raAchievementsURL) + + if err != nil { + return "", err + } + + if len(aj) == 0 { + return fmt.Sprintf("No played games found for user %s", user), nil + } + + gameID := strconv.Itoa(aj[0].GameID) + + var gj GameProgress + + _, err = client.R(). + SetQueryParam("u", user). + SetQueryParam("g", string(gameID)). + SetQueryParam("a", "1"). + SetSuccessResult(&gj). + Get(raGameProgressURL) + + if err != nil { + return "", err + } + + var sb strings.Builder + + w := func(in, colour string) { + s := colourString(in, colour) + sb.WriteString(s) + } + + sb.WriteString(fmt.Sprintf("%s | ", user)) + + w(fmt.Sprintf("%s (%s)", gj.Title, gj.Console), gameColour) + + sb.WriteString(" | ") + + var cb strings.Builder + cb.WriteString(fmt.Sprintf("Completion: %s", gj.CompletionHardcore)) + + if gj.CompletionHardcore != gj.Completion { + cb.WriteString(fmt.Sprintf(" (Relaxed: %s)", gj.Completion)) + } + + w(cb.String(), completionPercentColour) + + sb.WriteString(" | ") + + var ab strings.Builder + ab.WriteString(fmt.Sprintf("Achievements: %d/%d", gj.AchievementsHardcore, gj.NumAchievements)) + + if gj.AchievementsHardcore != gj.AchievementsRelaxed { + ab.WriteString(fmt.Sprintf(" (Relaxed: %d)", gj.AchievementsRelaxed)) + } + + w(ab.String(), achievementColour) + + sb.WriteString(" | ") + + w(fmt.Sprintf("Points: %s", gj.PointsAwarded()), pointsColour) + + if gj.HighestAward != "" { + awards := map[string]string{ + "beaten-softcore": "Beaten", + "beaten-hardcore": "Beaten [Hardocre]", + "completed": "Completed", + "mastered": "Mastered", + } + + sb.WriteString(" | ") + w(awards[gj.HighestAward], awardColour) + } + + return sb.String(), nil +} diff --git a/retroachivements_test.go b/retroachivements_test.go index fecd127..b60b7c4 100644 --- a/retroachivements_test.go +++ b/retroachivements_test.go @@ -230,7 +230,7 @@ func TestRaCurrentStatus(t *testing.T) { for name, tc := range cases { t.Run(name, func(t *testing.T) { now = func() time.Time { n, _ := time.Parse(timeDateFormat, tc.now); return n } - json := openTestFile(t, "API_GetUserSummary", "summary.json") + json := openTestFile(t, "API_GetUserSummary", tc.jsonfn) client := req.C() httpmock.ActivateNonDefault(client.GetClient()) @@ -262,7 +262,7 @@ func TestRaPoints(t *testing.T) { for name, tc := range cases { t.Run(name, func(t *testing.T) { - json := openTestFile(t, "API_GetUserSummary", "summary.json") + json := openTestFile(t, "API_GetUserSummary", tc.jsonfn) client := req.C() httpmock.ActivateNonDefault(client.GetClient()) @@ -278,3 +278,97 @@ func TestRaPoints(t *testing.T) { }) } } + +func TestRaAwards(t *testing.T) { + cases := map[string]struct { + jsonfn string + expected string + err error + }{ + "awards": { + jsonfn: "awards.json", + expected: "user | {red}Beaten: 1 (Relaxed: 5){clear} | {cyan}Completed: 3{clear} | {yellow}Mastered: 0{clear}", + err: nil, + }, + } + + for name, tc := range cases { + t.Run(name, func(t *testing.T) { + json := openTestFile(t, "API_GetUserAwards", tc.jsonfn) + + client := req.C() + httpmock.ActivateNonDefault(client.GetClient()) + httpmock.RegisterResponder("GET", raAwardsURL, func(request *http.Request) (*http.Response, error) { + resp := httpmock.NewBytesResponse(http.StatusOK, json) + return resp, nil + }) + + out, err := raAwards(client, "user") + + assert.Equal(t, tc.expected, out) + assert.ErrorIs(t, tc.err, err) + }) + } +} + +func TestGameProgressPointsAwarded(t *testing.T) { + cases := map[string]struct { + jsonfn string + expected string + }{ + "points": { + jsonfn: "progress.json", + expected: "419/1369", + }, + } + + for name, tc := range cases { + t.Run(name, func(t *testing.T) { + j := openTestFile(t, "API_GetGameInfoAndUserProgress", tc.jsonfn) + gp := GameProgress{} + err := json.Unmarshal(j, &gp) + assert.Nil(t, err) + + assert.Equal(t, tc.expected, gp.PointsAwarded()) + }) + } +} + +func TestRaGameProgress(t *testing.T) { + cases := map[string]struct { + jsonfn string + expected string + err error + }{ + "progress": { + jsonfn: "progress.json", + expected: "user | {magenta}~Hack~ Pokemon Radical Red (Game Boy Advance){clear} | {blue}Completion: 0.64% (Relaxed: 33.12%){clear} | {cyan}Achievements: 1/157 (Relaxed: 52){clear} | {green}Points: 419/1369{clear} | {yellow}Completed{clear}", + err: nil, + }, + } + + for name, tc := range cases { + t.Run(name, func(t *testing.T) { + aJson := openTestFile(t, "API_GetUserRecentAchievements", "many_achievements.json") + gpJson := openTestFile(t, "API_GetGameInfoAndUserProgress", tc.jsonfn) + + client := req.C() + httpmock.ActivateNonDefault(client.GetClient()) + + httpmock.RegisterResponder("GET", raAchievementsURL, func(request *http.Request) (*http.Response, error) { + resp := httpmock.NewBytesResponse(http.StatusOK, aJson) + return resp, nil + }) + + httpmock.RegisterResponder("GET", raGameProgressURL, func(request *http.Request) (*http.Response, error) { + resp := httpmock.NewBytesResponse(http.StatusOK, gpJson) + return resp, nil + }) + + out, err := raGameProgress(client, "user") + + assert.Equal(t, tc.expected, out) + assert.ErrorIs(t, tc.err, err) + }) + } +} diff --git a/testdata/API_GetGameInfoAndUserProgress/progress.json b/testdata/API_GetGameInfoAndUserProgress/progress.json new file mode 100644 index 0000000..12bb164 --- /dev/null +++ b/testdata/API_GetGameInfoAndUserProgress/progress.json @@ -0,0 +1,2598 @@ +{ + "ID": 17361, + "Title": "~Hack~ Pokemon Radical Red", + "ConsoleID": 5, + "ForumTopicID": 15191, + "Flags": 0, + "ImageIcon": "/Images/078141.png", + "ImageTitle": "/Images/093301.png", + "ImageIngame": "/Images/093302.png", + "ImageBoxArt": "/Images/049260.png", + "Publisher": "", + "Developer": "soupercell", + "Genre": "Turn-based RPG", + "Released": "2020-07-13", + "IsFinal": 0, + "RichPresencePatch": "a1a64581b5ae25482fb3e4ab85aeab9d", + "GuideURL": "", + "ConsoleName": "Game Boy Advance", + "NumDistinctPlayers": 1717, + "ParentGameID": null, + "NumAchievements": 157, + "Achievements": { + "178451": { + "ID": 178451, + "NumAwarded": 1558, + "NumAwardedHardcore": 847, + "Title": "Smell Ya Later!", + "Description": "Defeat your rival in Pallet Town (Randomized mode is blocked for every achievement except for the randomized achievements, allowed cheats: Shiny, SO2Toxic, Woyaopp)", + "Points": 2, + "TrueRatio": 2, + "Author": "Chawk", + "DateModified": "2024-08-27 17:44:53", + "DateCreated": "2021-10-16 04:29:54", + "BadgeName": "466930", + "DisplayOrder": 10, + "MemAddr": "1d699ca97a10565329ce3bbd00ddb586", + "type": "missable", + "DateEarned": "2022-08-18 22:01:53" + }, + "178452": { + "ID": 178452, + "NumAwarded": 837, + "NumAwardedHardcore": 550, + "Title": "Ya Snooze Ya Lose!", + "Description": "Defeat your rival on Route 22", + "Points": 5, + "TrueRatio": 6, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:30", + "DateCreated": "2021-10-16 04:37:21", + "BadgeName": "466931", + "DisplayOrder": 20, + "MemAddr": "4dd0a572a60aacb3635e70d4f1fc7fe1", + "type": "missable", + "DateEarned": "2022-08-19 00:43:36" + }, + "178453": { + "ID": 178453, + "NumAwarded": 1123, + "NumAwardedHardcore": 649, + "Title": "All the Way From the Hoenn Region...", + "Description": "Defeat Brendan in Viridian Forest", + "Points": 5, + "TrueRatio": 5, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:31", + "DateCreated": "2021-10-16 04:40:48", + "BadgeName": "466932", + "DisplayOrder": 30, + "MemAddr": "3b4cf053f2bbb9cea1cf08be1a969199", + "type": "progression", + "DateEarned": "2022-08-19 00:55:13" + }, + "178455": { + "ID": 178455, + "NumAwarded": 950, + "NumAwardedHardcore": 567, + "Title": "Falkner the Falconer", + "Description": "Defeat Falkner", + "Points": 5, + "TrueRatio": 6, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:31", + "DateCreated": "2021-10-16 04:43:55", + "BadgeName": "466933", + "DisplayOrder": 40, + "MemAddr": "81f46f9a8e25fc3b6c80e7cb942edd9a", + "type": "progression", + "DateEarned": "2022-08-19 01:57:02" + }, + "178456": { + "ID": 178456, + "NumAwarded": 882, + "NumAwardedHardcore": 527, + "Title": "Brock Solid", + "Description": "Defeat Brock", + "Points": 5, + "TrueRatio": 6, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:31", + "DateCreated": "2021-10-16 04:45:36", + "BadgeName": "466934", + "DisplayOrder": 50, + "MemAddr": "8dd32a1ea93f38e5948f73c445f3e134", + "type": "progression", + "DateEarned": "2022-08-19 02:03:12" + }, + "178457": { + "ID": 178457, + "NumAwarded": 746, + "NumAwardedHardcore": 461, + "Title": "To the Moon!", + "Description": "Defeat Archer in Mt. Moon", + "Points": 5, + "TrueRatio": 6, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:32", + "DateCreated": "2021-10-16 04:47:12", + "BadgeName": "466935", + "DisplayOrder": 60, + "MemAddr": "edfe1bc5e1e1279fb1112e29a7f98e65", + "type": "progression", + "DateEarned": "2022-08-19 11:52:38" + }, + "178458": { + "ID": 178458, + "NumAwarded": 698, + "NumAwardedHardcore": 430, + "Title": "He's Our Man!", + "Description": "Defeat your rival in Cerulean City", + "Points": 5, + "TrueRatio": 7, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:32", + "DateCreated": "2021-10-16 04:52:30", + "BadgeName": "466936", + "DisplayOrder": 70, + "MemAddr": "cf422e059fa40cad53d4eea929a38f3a", + "type": "progression", + "DateEarned": "2022-08-20 00:46:53" + }, + "178459": { + "ID": 178459, + "NumAwarded": 473, + "NumAwardedHardcore": 313, + "Title": "Scyther Master Bugsy", + "Description": "Defeat Bugsy", + "Points": 5, + "TrueRatio": 8, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:32", + "DateCreated": "2021-10-16 04:54:26", + "BadgeName": "466937", + "DisplayOrder": 80, + "MemAddr": "f8164096b2f5630e7229841016ab2085", + "type": null, + "DateEarned": "2022-08-20 01:13:18" + }, + "178460": { + "ID": 178460, + "NumAwarded": 541, + "NumAwardedHardcore": 335, + "Title": "The Misty Mermaid", + "Description": "Defeat Misty", + "Points": 5, + "TrueRatio": 8, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:33", + "DateCreated": "2021-10-16 04:56:12", + "BadgeName": "466938", + "DisplayOrder": 90, + "MemAddr": "f8eada5b547d105d8cb3cf5e4659f1af", + "type": "progression", + "DateEarned": "2022-08-20 00:42:33" + }, + "178461": { + "ID": 178461, + "NumAwarded": 463, + "NumAwardedHardcore": 292, + "Title": "Rematch with Brendan", + "Description": "Defeat Brendan in the SS. Anne", + "Points": 5, + "TrueRatio": 9, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:33", + "DateCreated": "2021-10-16 04:58:17", + "BadgeName": "466939", + "DisplayOrder": 100, + "MemAddr": "049bfe90237ff4718c8bd84cce4b13f5", + "type": "progression", + "DateEarned": "2022-10-02 02:07:56" + }, + "178462": { + "ID": 178462, + "NumAwarded": 353, + "NumAwardedHardcore": 240, + "Title": "Dairy Farmer Whitney", + "Description": "Defeat Whitney", + "Points": 5, + "TrueRatio": 10, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:33", + "DateCreated": "2021-10-16 05:07:45", + "BadgeName": "466940", + "DisplayOrder": 110, + "MemAddr": "63e6a5b0838f52b3ec6598dd21bce216", + "type": null, + "DateEarned": "2022-08-21 06:19:08" + }, + "178463": { + "ID": 178463, + "NumAwarded": 411, + "NumAwardedHardcore": 269, + "Title": "Hey Baby! Ready for a Match?", + "Description": "Defeat Lt. Surge", + "Points": 5, + "TrueRatio": 9, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:33", + "DateCreated": "2021-10-16 05:10:46", + "BadgeName": "466941", + "DisplayOrder": 120, + "MemAddr": "fda5fd02a2924a585199322e21618b22", + "type": "progression", + "DateEarned": "2022-08-21 00:26:11" + }, + "178465": { + "ID": 178465, + "NumAwarded": 355, + "NumAwardedHardcore": 231, + "Title": "Erika the Scent-sational", + "Description": "Defeat Erika", + "Points": 5, + "TrueRatio": 10, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:34", + "DateCreated": "2021-10-16 05:14:14", + "BadgeName": "466942", + "DisplayOrder": 130, + "MemAddr": "3d06fc0ddbffc9d7f37d590f0e296613", + "type": "progression", + "DateEarned": "2022-08-21 04:49:16" + }, + "178464": { + "ID": 178464, + "NumAwarded": 288, + "NumAwardedHardcore": 200, + "Title": "Fighting Spirit", + "Description": "Defeat Morty", + "Points": 5, + "TrueRatio": 11, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:34", + "DateCreated": "2021-10-16 05:12:13", + "BadgeName": "466943", + "DisplayOrder": 140, + "MemAddr": "e4324269ef58f2680758e8ab967eb682", + "type": null, + "DateEarned": "2022-08-21 04:11:03" + }, + "178468": { + "ID": 178468, + "NumAwarded": 315, + "NumAwardedHardcore": 210, + "Title": "Do Not Look Under the Poster", + "Description": "Defeat Giovanni in Rocket Hideout", + "Points": 5, + "TrueRatio": 11, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:34", + "DateCreated": "2021-10-16 05:19:04", + "BadgeName": "466944", + "DisplayOrder": 150, + "MemAddr": "b1de543f010d6b0eb17027c3882c1d89", + "type": "progression", + "DateEarned": "2022-08-21 05:20:27" + }, + "178471": { + "ID": 178471, + "NumAwarded": 278, + "NumAwardedHardcore": 186, + "Title": "How Good Are You?", + "Description": "Defeat Boss Giovanni in Silph Co", + "Points": 5, + "TrueRatio": 12, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:35", + "DateCreated": "2021-10-16 05:30:02", + "BadgeName": "466945", + "DisplayOrder": 160, + "MemAddr": "5927f3fa9cac1dac93480bcfab511e02", + "type": "progression", + "DateEarned": "2022-08-31 15:33:07" + }, + "178466": { + "ID": 178466, + "NumAwarded": 267, + "NumAwardedHardcore": 182, + "Title": "Chuck This!", + "Description": "Defeat Chuck", + "Points": 5, + "TrueRatio": 12, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:35", + "DateCreated": "2021-10-16 05:15:52", + "BadgeName": "466946", + "DisplayOrder": 170, + "MemAddr": "f9cc4a679176c7a8eba47c5937b0b762", + "type": null, + "DateEarned": "2022-08-28 17:32:01" + }, + "178476": { + "ID": 178476, + "NumAwarded": 228, + "NumAwardedHardcore": 157, + "Title": "Mega Rivalry", + "Description": "Defeat Brendan near the Safari Zone", + "Points": 5, + "TrueRatio": 14, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:35", + "DateCreated": "2021-10-16 05:44:53", + "BadgeName": "466947", + "DisplayOrder": 180, + "MemAddr": "c39bf164c73d3943f25136d3c5d3e9c7", + "type": "progression", + "DateEarned": "2022-09-01 22:05:36" + }, + "178482": { + "ID": 178482, + "NumAwarded": 198, + "NumAwardedHardcore": 136, + "Title": "Rematch with Brock", + "Description": "Defeat Brock in a rematch", + "Points": 5, + "TrueRatio": 16, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:36", + "DateCreated": "2021-10-16 05:57:58", + "BadgeName": "466948", + "DisplayOrder": 190, + "MemAddr": "284717080417d711caca4cb24d9103b6", + "type": "progression", + "DateEarned": "2022-08-31 23:37:52" + }, + "178483": { + "ID": 178483, + "NumAwarded": 199, + "NumAwardedHardcore": 137, + "Title": "Rematch with Misty", + "Description": "Defeat Misty in a rematch", + "Points": 5, + "TrueRatio": 16, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:36", + "DateCreated": "2021-10-16 05:59:36", + "BadgeName": "466949", + "DisplayOrder": 200, + "MemAddr": "9c0afa3d31b02d6fe880b0a3d0277a9b", + "type": "progression", + "DateEarned": "2022-08-31 23:55:49" + }, + "178484": { + "ID": 178484, + "NumAwarded": 188, + "NumAwardedHardcore": 127, + "Title": "Rematch with Surge", + "Description": "Defeat Lt. Surge in a rematch", + "Points": 5, + "TrueRatio": 17, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:36", + "DateCreated": "2021-10-16 06:01:32", + "BadgeName": "466950", + "DisplayOrder": 210, + "MemAddr": "ebf360b3c979179cf0c08cb68080ebea", + "type": "progression", + "DateEarned": "2022-09-01 00:02:29" + }, + "178485": { + "ID": 178485, + "NumAwarded": 152, + "NumAwardedHardcore": 110, + "Title": "Rematch with Erika", + "Description": "Defeat Erika in a rematch", + "Points": 5, + "TrueRatio": 19, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:37", + "DateCreated": "2021-10-16 06:03:11", + "BadgeName": "466951", + "DisplayOrder": 220, + "MemAddr": "523352793291d2051c32bb5682609948", + "type": null, + "DateEarned": "2022-09-01 22:13:30" + }, + "178475": { + "ID": 178475, + "NumAwarded": 209, + "NumAwardedHardcore": 140, + "Title": "Swift Battle With Koga", + "Description": "Defeat Koga", + "Points": 5, + "TrueRatio": 15, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:37", + "DateCreated": "2021-10-16 05:41:11", + "BadgeName": "466952", + "DisplayOrder": 230, + "MemAddr": "84e907d3820d31674ea2c7bf124b2431", + "type": "progression", + "DateEarned": "2022-09-01 22:20:06" + }, + "178469": { + "ID": 178469, + "NumAwarded": 253, + "NumAwardedHardcore": 173, + "Title": "Double Trouble", + "Description": "Defeat Sabrina", + "Points": 5, + "TrueRatio": 13, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:37", + "DateCreated": "2021-10-16 05:20:27", + "BadgeName": "466953", + "DisplayOrder": 240, + "MemAddr": "6e91a8bf9242b6644cd478f7ba87d7cc", + "type": "progression", + "DateEarned": "2022-09-01 15:25:30" + }, + "178478": { + "ID": 178478, + "NumAwarded": 173, + "NumAwardedHardcore": 123, + "Title": "Steeling Victory", + "Description": "Defeat Jasmine", + "Points": 5, + "TrueRatio": 17, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:37", + "DateCreated": "2021-10-16 05:48:42", + "BadgeName": "466954", + "DisplayOrder": 250, + "MemAddr": "276a95c58915c214539ce611fd1371d1", + "type": null, + "DateEarned": "2022-09-02 19:37:20" + }, + "178479": { + "ID": 178479, + "NumAwarded": 196, + "NumAwardedHardcore": 136, + "Title": "Radical May", + "Description": "Defeat May in Cinnabar Island", + "Points": 5, + "TrueRatio": 16, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:38", + "DateCreated": "2021-10-16 05:50:01", + "BadgeName": "466955", + "DisplayOrder": 260, + "MemAddr": "3e06977bfb4cd8a91592fea178b2de71", + "type": "progression", + "DateEarned": "2022-09-02 19:41:58" + }, + "178480": { + "ID": 178480, + "NumAwarded": 188, + "NumAwardedHardcore": 132, + "Title": "When You're Hot You're Hot", + "Description": "Defeat Blaine", + "Points": 5, + "TrueRatio": 16, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:38", + "DateCreated": "2021-10-16 05:51:39", + "BadgeName": "466956", + "DisplayOrder": 270, + "MemAddr": "2c248f8b54f183d4df7f24755a7f5e0e", + "type": "progression", + "DateEarned": "2022-09-03 00:39:30" + }, + "178477": { + "ID": 178477, + "NumAwarded": 168, + "NumAwardedHardcore": 120, + "Title": "The Pryce is Right", + "Description": "Defeat Pryce", + "Points": 5, + "TrueRatio": 17, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:38", + "DateCreated": "2021-10-16 05:47:16", + "BadgeName": "466957", + "DisplayOrder": 280, + "MemAddr": "08648f1e7117238e0d35d12346598d89", + "type": null, + "DateEarned": "2022-09-01 22:26:59" + }, + "178481": { + "ID": 178481, + "NumAwarded": 177, + "NumAwardedHardcore": 124, + "Title": "Master Plan", + "Description": "Defeat Giovanni in Cerulean Cave", + "Points": 5, + "TrueRatio": 17, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:39", + "DateCreated": "2021-10-16 05:54:14", + "BadgeName": "466958", + "DisplayOrder": 290, + "MemAddr": "e076f98d0128f072dc1e7fe34913f696", + "type": "progression", + "DateEarned": "2022-09-11 22:20:52" + }, + "178467": { + "ID": 178467, + "NumAwarded": 168, + "NumAwardedHardcore": 121, + "Title": "Clairvoyance", + "Description": "Defeat Clair", + "Points": 5, + "TrueRatio": 17, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:39", + "DateCreated": "2021-10-16 05:17:30", + "BadgeName": "466959", + "DisplayOrder": 300, + "MemAddr": "47af9d0cf6e0dbeac9c8bb4565a746e5", + "type": "progression", + "DateEarned": "2022-09-11 22:40:15" + }, + "178474": { + "ID": 178474, + "NumAwarded": 165, + "NumAwardedHardcore": 118, + "Title": "How About a Match?", + "Description": "Defeat your rival on Route 22 before the Elite Four", + "Points": 5, + "TrueRatio": 18, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:39", + "DateCreated": "2021-10-16 05:33:24", + "BadgeName": "466960", + "DisplayOrder": 310, + "MemAddr": "cd47bb2526c631b239149b76480a728e", + "type": "progression", + "DateEarned": "2022-09-11 22:47:29" + }, + "178470": { + "ID": 178470, + "NumAwarded": 154, + "NumAwardedHardcore": 114, + "Title": "Dumb*ss Fight", + "Description": "Defeat Soupercell before the Elite Four", + "Points": 2, + "TrueRatio": 7, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:40", + "DateCreated": "2021-10-16 05:22:05", + "BadgeName": "466961", + "DisplayOrder": 320, + "MemAddr": "b0d59c888bc24b077a814c62d46fa2fa", + "type": "progression", + "DateEarned": "2022-09-11 23:28:02" + }, + "178472": { + "ID": 178472, + "NumAwarded": 129, + "NumAwardedHardcore": 97, + "Title": "Radical Champ", + "Description": "Become the League Champion", + "Points": 25, + "TrueRatio": 107, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:40", + "DateCreated": "2021-10-16 05:31:30", + "BadgeName": "466962", + "DisplayOrder": 330, + "MemAddr": "acb84b6ee86e2872d4d6fde307c7e0a2", + "type": "win_condition", + "DateEarned": "2022-09-22 23:05:08" + }, + "412108": { + "ID": 412108, + "NumAwarded": 42, + "NumAwardedHardcore": 32, + "Title": "Mega Radical Champ", + "Description": "Defeat the Elite 4 and Champion in a single session on default mode or higher", + "Points": 25, + "TrueRatio": 295, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:40", + "DateCreated": "2024-03-27 22:14:11", + "BadgeName": "467023", + "DisplayOrder": 350, + "MemAddr": "3fc0a5a045351b7d1efe5769b476cbde", + "type": null + }, + "412067": { + "ID": 412067, + "NumAwarded": 475, + "NumAwardedHardcore": 278, + "Title": "Poke Vial Puzzle", + "Description": "Defeat the friendly teacher in the Trainers School", + "Points": 5, + "TrueRatio": 9, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:41", + "DateCreated": "2024-03-27 21:40:38", + "BadgeName": "466982", + "DisplayOrder": 360, + "MemAddr": "cd9172d6c1187e8f474cdce459569500", + "type": null + }, + "412068": { + "ID": 412068, + "NumAwarded": 314, + "NumAwardedHardcore": 203, + "Title": "Show Me Your Moves!", + "Description": "Defeat the Pokemon Move Maniac in Cerulean City", + "Points": 10, + "TrueRatio": 23, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:41", + "DateCreated": "2024-03-27 21:40:39", + "BadgeName": "466983", + "DisplayOrder": 370, + "MemAddr": "3cea3f4e8ba8e288622f97b56b487e99", + "type": null + }, + "412069": { + "ID": 412069, + "NumAwarded": 211, + "NumAwardedHardcore": 134, + "Title": "Thrill of Battle", + "Description": "Defeat Gentleman Komodo in the day care", + "Points": 10, + "TrueRatio": 32, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:41", + "DateCreated": "2024-03-27 21:40:39", + "BadgeName": "466984", + "DisplayOrder": 380, + "MemAddr": "428c93fe6729c426427b60d77924f286", + "type": null + }, + "412106": { + "ID": 412106, + "NumAwarded": 106, + "NumAwardedHardcore": 79, + "Title": "What a Nerd", + "Description": "Beat Fuchsia City's Tamer Pokemon cry challenge", + "Points": 5, + "TrueRatio": 25, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:42", + "DateCreated": "2024-03-27 21:57:07", + "BadgeName": "467021", + "DisplayOrder": 390, + "MemAddr": "9663aed7ef563a9d781b9f7eafd45abc", + "type": null + }, + "412070": { + "ID": 412070, + "NumAwarded": 93, + "NumAwardedHardcore": 72, + "Title": "Thorn in your Side", + "Description": "Defeat Ace Trainer Cole in Route 8", + "Points": 10, + "TrueRatio": 55, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:42", + "DateCreated": "2024-03-27 21:40:39", + "BadgeName": "466985", + "DisplayOrder": 400, + "MemAddr": "fb0a7d61f805567fc163204331340661", + "type": null + }, + "412071": { + "ID": 412071, + "NumAwarded": 112, + "NumAwardedHardcore": 82, + "Title": "i Herd U Liek Mudkipz", + "Description": "Defeat Dumb*ss Mudkip Kid in Saffron City", + "Points": 10, + "TrueRatio": 49, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:42", + "DateCreated": "2024-03-27 21:40:40", + "BadgeName": "466986", + "DisplayOrder": 410, + "MemAddr": "885d244135c581de21382b86bbb6bbea", + "type": null + }, + "412072": { + "ID": 412072, + "NumAwarded": 66, + "NumAwardedHardcore": 54, + "Title": "Super Bored Gals", + "Description": "Defeat the beauties in the Celadon City Hotel", + "Points": 10, + "TrueRatio": 72, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:43", + "DateCreated": "2024-03-27 21:40:40", + "BadgeName": "466987", + "DisplayOrder": 420, + "MemAddr": "67e4a1273970bfc11ab8310e11784df7", + "type": null + }, + "412073": { + "ID": 412073, + "NumAwarded": 92, + "NumAwardedHardcore": 69, + "Title": "New Powerful Strategy", + "Description": "Defeat Ace Trainer Haley in Route 15", + "Points": 10, + "TrueRatio": 57, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:43", + "DateCreated": "2024-03-27 21:40:40", + "BadgeName": "466988", + "DisplayOrder": 430, + "MemAddr": "3c9cf5bc8715697430fcdd6dea1ff726", + "type": null + }, + "412074": { + "ID": 412074, + "NumAwarded": 56, + "NumAwardedHardcore": 47, + "Title": "Training Partner", + "Description": "Defeat Cerulean Cave Black Belt Ketchup in Cerulean Cave", + "Points": 10, + "TrueRatio": 82, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:43", + "DateCreated": "2024-03-27 21:40:41", + "BadgeName": "466989", + "DisplayOrder": 440, + "MemAddr": "1274857d096e9e8366c7d669d589874a", + "type": null + }, + "412075": { + "ID": 412075, + "NumAwarded": 47, + "NumAwardedHardcore": 40, + "Title": "Giving Your All", + "Description": "Defeat Cerulean Cave Black Belt Ketchup in a rematch in Cerulean Cave", + "Points": 10, + "TrueRatio": 95, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:44", + "DateCreated": "2024-03-27 21:40:41", + "BadgeName": "466990", + "DisplayOrder": 450, + "MemAddr": "7221500c4b2030117eb8b6a7033f3921", + "type": null + }, + "412076": { + "ID": 412076, + "NumAwarded": 88, + "NumAwardedHardcore": 65, + "Title": "Are You Approaching Me?", + "Description": "Defeat Power Plant Dumb*ss Jojo", + "Points": 10, + "TrueRatio": 61, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:44", + "DateCreated": "2024-03-27 21:40:41", + "BadgeName": "466991", + "DisplayOrder": 460, + "MemAddr": "366e62d2b702000dd5347d4b57b29915", + "type": null + }, + "412077": { + "ID": 412077, + "NumAwarded": 44, + "NumAwardedHardcore": 37, + "Title": "Oak Cheating?!", + "Description": "Defeat Professor Oak in his lab", + "Points": 10, + "TrueRatio": 102, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:44", + "DateCreated": "2024-03-27 21:40:42", + "BadgeName": "466992", + "DisplayOrder": 470, + "MemAddr": "32d83565552066678840c65c36a97b10", + "type": null + }, + "412078": { + "ID": 412078, + "NumAwarded": 41, + "NumAwardedHardcore": 35, + "Title": "No Fairies Zone", + "Description": "Defeat Clair in a rematch", + "Points": 10, + "TrueRatio": 108, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:44", + "DateCreated": "2024-03-27 21:40:42", + "BadgeName": "466993", + "DisplayOrder": 480, + "MemAddr": "386b23d9d57b02c748263dc6787a271a", + "type": null + }, + "412079": { + "ID": 412079, + "NumAwarded": 44, + "NumAwardedHardcore": 38, + "Title": "Third Time is the Charm", + "Description": "Defeat Misty in a rematch for the 2nd time", + "Points": 10, + "TrueRatio": 100, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:45", + "DateCreated": "2024-03-27 21:40:42", + "BadgeName": "466994", + "DisplayOrder": 490, + "MemAddr": "94e8eac6c1519a45ea8cdb9ce978a982", + "type": null + }, + "412080": { + "ID": 412080, + "NumAwarded": 47, + "NumAwardedHardcore": 41, + "Title": "A New Challenge", + "Description": "Defeat Falkner in a rematch", + "Points": 10, + "TrueRatio": 93, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:45", + "DateCreated": "2024-03-27 21:40:43", + "BadgeName": "466995", + "DisplayOrder": 500, + "MemAddr": "827f8a07479d6fd9aaecfdca6f6ec4db", + "type": null + }, + "412081": { + "ID": 412081, + "NumAwarded": 41, + "NumAwardedHardcore": 35, + "Title": "u seem stwonger", + "Description": "Defeat Dumb*ss Mudkip Kid in a rematch", + "Points": 10, + "TrueRatio": 108, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:45", + "DateCreated": "2024-03-27 21:40:43", + "BadgeName": "466996", + "DisplayOrder": 510, + "MemAddr": "59c7704233e066a565d9cbdc84ff61a4", + "type": null + }, + "412082": { + "ID": 412082, + "NumAwarded": 41, + "NumAwardedHardcore": 34, + "Title": "Adapt and Overcome", + "Description": "Defeat Pryce in a rematch", + "Points": 10, + "TrueRatio": 111, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:46", + "DateCreated": "2024-03-27 21:40:43", + "BadgeName": "466997", + "DisplayOrder": 520, + "MemAddr": "0ac12c87996ddf3b6b142f7ea0405f45", + "type": null + }, + "412083": { + "ID": 412083, + "NumAwarded": 41, + "NumAwardedHardcore": 34, + "Title": "Expected Outcome", + "Description": "Defeat Morty in a rematch", + "Points": 10, + "TrueRatio": 111, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:46", + "DateCreated": "2024-03-27 21:40:44", + "BadgeName": "466998", + "DisplayOrder": 530, + "MemAddr": "1c61285f63000b86114d18019aea8122", + "type": null + }, + "412084": { + "ID": 412084, + "NumAwarded": 56, + "NumAwardedHardcore": 47, + "Title": "Yare Yare Daze", + "Description": "Defeat Dumb*ss fan Jojo in a rematch", + "Points": 10, + "TrueRatio": 82, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:46", + "DateCreated": "2024-03-27 21:40:44", + "BadgeName": "466999", + "DisplayOrder": 540, + "MemAddr": "9b1dc702c85acc25e1a8013574ed3c47", + "type": null + }, + "412085": { + "ID": 412085, + "NumAwarded": 38, + "NumAwardedHardcore": 33, + "Title": "...", + "Description": "Defeat Red in Kindle Road", + "Points": 10, + "TrueRatio": 114, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:47", + "DateCreated": "2024-03-27 21:40:44", + "BadgeName": "467000", + "DisplayOrder": 550, + "MemAddr": "bb34659e84c2b53e6114f7250bc61a01", + "type": null + }, + "412086": { + "ID": 412086, + "NumAwarded": 52, + "NumAwardedHardcore": 44, + "Title": "Limit Testing", + "Description": "Defeat Bugsy on a rematch", + "Points": 10, + "TrueRatio": 87, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:47", + "DateCreated": "2024-03-27 21:40:45", + "BadgeName": "467001", + "DisplayOrder": 560, + "MemAddr": "1ff3e7a58df2ae7caca2d15f9ca78e3d", + "type": null + }, + "412087": { + "ID": 412087, + "NumAwarded": 47, + "NumAwardedHardcore": 40, + "Title": "Power Creep", + "Description": "Defeat Whitney on a rematch", + "Points": 10, + "TrueRatio": 95, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:47", + "DateCreated": "2024-03-27 21:40:45", + "BadgeName": "467002", + "DisplayOrder": 570, + "MemAddr": "d0d4dceed01eb4eaa41de7bb40b5c01c", + "type": null + }, + "412088": { + "ID": 412088, + "NumAwarded": 43, + "NumAwardedHardcore": 37, + "Title": "Starter Fan", + "Description": "Defeat Joyful Game Corner Ace Trainer Andrew", + "Points": 10, + "TrueRatio": 102, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:47", + "DateCreated": "2024-03-27 21:40:45", + "BadgeName": "467003", + "DisplayOrder": 580, + "MemAddr": "d4526bcf8c9ce375243b56d2236a71d5", + "type": null + }, + "412089": { + "ID": 412089, + "NumAwarded": 49, + "NumAwardedHardcore": 42, + "Title": "Dark Hole", + "Description": "Defeat Cape Brink Channeler Racher", + "Points": 10, + "TrueRatio": 91, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:48", + "DateCreated": "2024-03-27 21:40:46", + "BadgeName": "467004", + "DisplayOrder": 590, + "MemAddr": "97dde8a022eec84e307366c9f91afd86", + "type": null + }, + "178012": { + "ID": 178012, + "NumAwarded": 267, + "NumAwardedHardcore": 218, + "Title": "Hardcore Zephyr", + "Description": "Defeat Falkner on hardcore mode", + "Points": 10, + "TrueRatio": 22, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:48", + "DateCreated": "2021-10-13 03:32:03", + "BadgeName": "466963", + "DisplayOrder": 610, + "MemAddr": "408da1a97f009ac3eaf87b1f0e3e03cc", + "type": null, + "DateEarned": "2022-10-01 04:16:56" + }, + "178013": { + "ID": 178013, + "NumAwarded": 238, + "NumAwardedHardcore": 193, + "Title": "Hardcore Boulder", + "Description": "Defeat Brock on hardcore mode", + "Points": 10, + "TrueRatio": 24, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:48", + "DateCreated": "2021-10-13 03:32:25", + "BadgeName": "466964", + "DisplayOrder": 620, + "MemAddr": "7cb6a6aa32b2c60d7d707e446186e766", + "type": null, + "DateEarned": "2022-10-01 04:46:54" + }, + "178014": { + "ID": 178014, + "NumAwarded": 157, + "NumAwardedHardcore": 134, + "Title": "Hardcore Hive", + "Description": "Defeat Bugsy on hardcore mode", + "Points": 10, + "TrueRatio": 32, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:49", + "DateCreated": "2021-10-13 03:32:42", + "BadgeName": "466965", + "DisplayOrder": 630, + "MemAddr": "d5ec5baab82c9832fdf121a376bcf80d", + "type": null, + "DateEarned": "2022-10-01 22:50:13" + }, + "178015": { + "ID": 178015, + "NumAwarded": 156, + "NumAwardedHardcore": 133, + "Title": "Hardcore Cascade", + "Description": "Defeat Misty on hardcore mode", + "Points": 10, + "TrueRatio": 32, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:49", + "DateCreated": "2021-10-13 03:32:57", + "BadgeName": "466966", + "DisplayOrder": 640, + "MemAddr": "df7a3cedf4829f12864fdbb0dcddaa34", + "type": null, + "DateEarned": "2022-10-01 15:02:33" + }, + "178016": { + "ID": 178016, + "NumAwarded": 123, + "NumAwardedHardcore": 106, + "Title": "Plain Hardcore", + "Description": "Defeat Whitney on hardcore mode", + "Points": 10, + "TrueRatio": 39, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:50", + "DateCreated": "2021-10-13 03:33:13", + "BadgeName": "466967", + "DisplayOrder": 650, + "MemAddr": "0c62003691b94236e11bb8cd6c8d56c0", + "type": null, + "DateEarned": "2022-10-02 20:16:52" + }, + "178017": { + "ID": 178017, + "NumAwarded": 137, + "NumAwardedHardcore": 113, + "Title": "Hardcore Thunder", + "Description": "Defeat Lt. Surge on hardcore mode", + "Points": 10, + "TrueRatio": 37, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:50", + "DateCreated": "2021-10-13 03:33:33", + "BadgeName": "466968", + "DisplayOrder": 660, + "MemAddr": "e927fbbf894956f73766ee3968d40398", + "type": null, + "DateEarned": "2022-10-02 19:51:24" + }, + "178019": { + "ID": 178019, + "NumAwarded": 122, + "NumAwardedHardcore": 100, + "Title": "Hardcore Rainbow", + "Description": "Defeat Erika on hardcore mode", + "Points": 10, + "TrueRatio": 41, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:50", + "DateCreated": "2021-10-13 03:34:07", + "BadgeName": "466969", + "DisplayOrder": 670, + "MemAddr": "75d77d20581f03489a4768e7cb04e737", + "type": null, + "DateEarned": "2022-10-03 21:02:45" + }, + "178018": { + "ID": 178018, + "NumAwarded": 116, + "NumAwardedHardcore": 96, + "Title": "Hardcore Fog", + "Description": "Defeat Morty on hardcore mode", + "Points": 10, + "TrueRatio": 43, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:51", + "DateCreated": "2021-10-13 03:33:54", + "BadgeName": "466970", + "DisplayOrder": 680, + "MemAddr": "bd6e4f355e4732ce2dc9759e7ce29c27", + "type": null, + "DateEarned": "2022-10-07 14:50:35" + }, + "178020": { + "ID": 178020, + "NumAwarded": 97, + "NumAwardedHardcore": 79, + "Title": "Hardcore Storm", + "Description": "Defeat Chuck on hardcore mode", + "Points": 10, + "TrueRatio": 51, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:51", + "DateCreated": "2021-10-13 03:34:26", + "BadgeName": "466971", + "DisplayOrder": 690, + "MemAddr": "ec891fc2eac4a76c0313dedb5afa97a6", + "type": null, + "DateEarned": "2022-10-04 01:36:25" + }, + "178022": { + "ID": 178022, + "NumAwarded": 77, + "NumAwardedHardcore": 65, + "Title": "Hardcore Soul", + "Description": "Defeat Koga on hardcore mode", + "Points": 10, + "TrueRatio": 61, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:51", + "DateCreated": "2021-10-13 03:34:59", + "BadgeName": "466972", + "DisplayOrder": 700, + "MemAddr": "272fcf08118f0ab40502fe83af6dca5e", + "type": null, + "DateEarned": "2022-10-08 01:35:04" + }, + "178021": { + "ID": 178021, + "NumAwarded": 89, + "NumAwardedHardcore": 72, + "Title": "Hardcore Marsh", + "Description": "Defeat Sabrina on hardcore mode", + "Points": 10, + "TrueRatio": 55, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:51", + "DateCreated": "2021-10-13 03:34:42", + "BadgeName": "466973", + "DisplayOrder": 710, + "MemAddr": "41766fb06296fa2d05eb024f06849168", + "type": null, + "DateEarned": "2022-10-06 02:11:29" + }, + "178024": { + "ID": 178024, + "NumAwarded": 75, + "NumAwardedHardcore": 62, + "Title": "Hardcore Mineral", + "Description": "Defeat Jasmine on hardcore mode", + "Points": 10, + "TrueRatio": 63, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:52", + "DateCreated": "2021-10-13 03:35:32", + "BadgeName": "466974", + "DisplayOrder": 720, + "MemAddr": "f85bf7f37abd78cf16787344bd07e9a3", + "type": null, + "DateEarned": "2022-10-08 04:51:46" + }, + "178025": { + "ID": 178025, + "NumAwarded": 76, + "NumAwardedHardcore": 63, + "Title": "Hardcore Volcano", + "Description": "Defeat Blaine on hardcore mode", + "Points": 10, + "TrueRatio": 62, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:52", + "DateCreated": "2021-10-13 03:35:51", + "BadgeName": "466975", + "DisplayOrder": 730, + "MemAddr": "5bcff969c704a99390d71b353158068d", + "type": null, + "DateEarned": "2022-10-09 14:41:55" + }, + "178023": { + "ID": 178023, + "NumAwarded": 73, + "NumAwardedHardcore": 61, + "Title": "Hardcore Glacier", + "Description": "Defeat Pryce on hardcore mode", + "Points": 10, + "TrueRatio": 64, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:52", + "DateCreated": "2021-10-13 03:35:14", + "BadgeName": "466976", + "DisplayOrder": 740, + "MemAddr": "2d9cb682b9c68b28e88daee9b0c2ca2b", + "type": null, + "DateEarned": "2022-10-08 04:22:13" + }, + "178026": { + "ID": 178026, + "NumAwarded": 70, + "NumAwardedHardcore": 59, + "Title": "Hardcore Rising", + "Description": "Defeat Clair on hardcore mode", + "Points": 10, + "TrueRatio": 66, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:53", + "DateCreated": "2021-10-13 03:36:04", + "BadgeName": "466977", + "DisplayOrder": 750, + "MemAddr": "11145c5eb16404b4128c614410a0ec94", + "type": null, + "DateEarned": "2022-10-12 23:31:25" + }, + "178473": { + "ID": 178473, + "NumAwarded": 68, + "NumAwardedHardcore": 56, + "Title": "Hardcore Radical Champ", + "Description": "Become the League Champion on hardcore mode", + "Points": 50, + "TrueRatio": 350, + "Author": "Chawk", + "DateModified": "2024-08-27 17:37:53", + "DateCreated": "2021-10-16 05:31:36", + "BadgeName": "466978", + "DisplayOrder": 760, + "MemAddr": "bbe5f55d7f1d3858217c8d957cb2eac8", + "type": null, + "DateEarned": "2022-10-21 22:27:05" + }, + "412090": { + "ID": 412090, + "NumAwarded": 105, + "NumAwardedHardcore": 69, + "Title": "Random Zephyr", + "Description": "Defeat Falkner on default or harder mode and randomized species mode", + "Points": 10, + "TrueRatio": 57, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:53", + "DateCreated": "2024-03-27 21:52:21", + "BadgeName": "467005", + "DisplayOrder": 770, + "MemAddr": "a1814d17bfe246a3dbf20106dabee5ec", + "type": null + }, + "412091": { + "ID": 412091, + "NumAwarded": 101, + "NumAwardedHardcore": 66, + "Title": "Random Boulder", + "Description": "Defeat Brock on default or harder mode and randomized species mode", + "Points": 10, + "TrueRatio": 60, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:29", + "DateCreated": "2024-03-27 21:52:22", + "BadgeName": "467006", + "DisplayOrder": 780, + "MemAddr": "7d7c94d58a0d4f0ebbe080423a0c53fa", + "type": null + }, + "412092": { + "ID": 412092, + "NumAwarded": 67, + "NumAwardedHardcore": 46, + "Title": "Random Hive", + "Description": "Defeat Bugsy on default or harder mode and randomized species mode", + "Points": 10, + "TrueRatio": 83, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:54", + "DateCreated": "2024-03-27 21:52:22", + "BadgeName": "467007", + "DisplayOrder": 790, + "MemAddr": "2c8ec04485ec803e25e0d3cb625ea6ec", + "type": null + }, + "412093": { + "ID": 412093, + "NumAwarded": 71, + "NumAwardedHardcore": 49, + "Title": "Random Cascade", + "Description": "Defeat Misty on default or harder mode and randomized species mode", + "Points": 10, + "TrueRatio": 79, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:54", + "DateCreated": "2024-03-27 21:52:22", + "BadgeName": "467008", + "DisplayOrder": 800, + "MemAddr": "49bd5d4142adef34611014b8dbbb9e4e", + "type": null + }, + "412124": { + "ID": 412124, + "NumAwarded": 52, + "NumAwardedHardcore": 38, + "Title": "Plain Random", + "Description": "Defeat Whitney on default or harder mode and randomized species mode", + "Points": 10, + "TrueRatio": 100, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:54", + "DateCreated": "2024-03-27 22:41:02", + "BadgeName": "467040", + "DisplayOrder": 810, + "MemAddr": "8f7acf29ed2c539b196fb432dfb4992b", + "type": null + }, + "412095": { + "ID": 412095, + "NumAwarded": 60, + "NumAwardedHardcore": 43, + "Title": "Random Thunder", + "Description": "Defeat Lt. Surge on default or harder mode and randomized species mode", + "Points": 10, + "TrueRatio": 89, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:55", + "DateCreated": "2024-03-27 21:52:23", + "BadgeName": "467010", + "DisplayOrder": 820, + "MemAddr": "9341404656ad913ad3a0c822463dd183", + "type": null + }, + "412096": { + "ID": 412096, + "NumAwarded": 53, + "NumAwardedHardcore": 38, + "Title": "Random Rainbow", + "Description": "Defeat Erika on default or harder mode and randomized species mode", + "Points": 10, + "TrueRatio": 100, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:55", + "DateCreated": "2024-03-27 21:52:23", + "BadgeName": "467011", + "DisplayOrder": 830, + "MemAddr": "0fc11dea7a48cc32bedb50afd6534940", + "type": null + }, + "412097": { + "ID": 412097, + "NumAwarded": 45, + "NumAwardedHardcore": 32, + "Title": "Random Fog", + "Description": "Defeat Morty on default or harder mode and randomized species mode", + "Points": 10, + "TrueRatio": 118, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:55", + "DateCreated": "2024-03-27 21:52:24", + "BadgeName": "467012", + "DisplayOrder": 840, + "MemAddr": "a02aff7db4282446b42d12c922f993c4", + "type": null + }, + "412098": { + "ID": 412098, + "NumAwarded": 44, + "NumAwardedHardcore": 33, + "Title": "Random Storm", + "Description": "Defeat Chuck on default or harder mode and randomized species mode", + "Points": 10, + "TrueRatio": 114, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:56", + "DateCreated": "2024-03-27 21:52:24", + "BadgeName": "467013", + "DisplayOrder": 850, + "MemAddr": "0aea86c1dd59f7ad2684971ab9324325", + "type": null + }, + "412099": { + "ID": 412099, + "NumAwarded": 39, + "NumAwardedHardcore": 31, + "Title": "Random Soul", + "Description": "Defeat Koga on default or harder mode and randomized species mode", + "Points": 10, + "TrueRatio": 121, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:29", + "DateCreated": "2024-03-27 21:52:24", + "BadgeName": "467014", + "DisplayOrder": 860, + "MemAddr": "e058ca29b5916f54eb3c9efdf3814ca9", + "type": null + }, + "412100": { + "ID": 412100, + "NumAwarded": 40, + "NumAwardedHardcore": 31, + "Title": "Random Marsh", + "Description": "Defeat Sabrina on default or harder mode and randomized species mode", + "Points": 10, + "TrueRatio": 121, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:56", + "DateCreated": "2024-03-27 21:52:25", + "BadgeName": "467015", + "DisplayOrder": 870, + "MemAddr": "3c88dca0dcadc7295d0675613a63195f", + "type": null + }, + "412101": { + "ID": 412101, + "NumAwarded": 37, + "NumAwardedHardcore": 30, + "Title": "Random Mineral", + "Description": "Defeat Jasmine on default or harder mode and randomized species mode", + "Points": 10, + "TrueRatio": 125, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:56", + "DateCreated": "2024-03-27 21:52:25", + "BadgeName": "467016", + "DisplayOrder": 880, + "MemAddr": "870d74da97c2da54abcda777618c5cb0", + "type": null + }, + "412102": { + "ID": 412102, + "NumAwarded": 38, + "NumAwardedHardcore": 30, + "Title": "Random Volcano", + "Description": "Defeat Blaine on default or harder mode and randomized species mode", + "Points": 10, + "TrueRatio": 125, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:57", + "DateCreated": "2024-03-27 21:52:25", + "BadgeName": "467017", + "DisplayOrder": 890, + "MemAddr": "3c5d2d503d1418d0360bb4f21cbe677f", + "type": null + }, + "412103": { + "ID": 412103, + "NumAwarded": 36, + "NumAwardedHardcore": 29, + "Title": "Random Glacier", + "Description": "Defeat Pryce on default or harder mode and randomized species mode", + "Points": 10, + "TrueRatio": 129, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:57", + "DateCreated": "2024-03-27 21:52:26", + "BadgeName": "467018", + "DisplayOrder": 900, + "MemAddr": "4c8b520e8ad86109b40e8688cd83e7e3", + "type": null + }, + "412104": { + "ID": 412104, + "NumAwarded": 37, + "NumAwardedHardcore": 30, + "Title": "Random Rising", + "Description": "Defeat Clair on default or harder mode and randomized species mode", + "Points": 25, + "TrueRatio": 313, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:22", + "DateCreated": "2024-03-27 21:52:26", + "BadgeName": "467019", + "DisplayOrder": 910, + "MemAddr": "8ba1d5884fd709202724732d40bc452f", + "type": null + }, + "412105": { + "ID": 412105, + "NumAwarded": 36, + "NumAwardedHardcore": 29, + "Title": "Random Radical Champ", + "Description": "Become League Champ on default or harder mode and randomized species mode", + "Points": 25, + "TrueRatio": 323, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:57", + "DateCreated": "2024-03-27 21:52:26", + "BadgeName": "467020", + "DisplayOrder": 920, + "MemAddr": "8c997d547127765c31196dd1a5d6f512", + "type": null + }, + "412276": { + "ID": 412276, + "NumAwarded": 45, + "NumAwardedHardcore": 40, + "Title": "City Completion", + "Description": "Obtain all overworld items in the cities of Kanto", + "Points": 5, + "TrueRatio": 47, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:58", + "DateCreated": "2024-03-28 00:21:09", + "BadgeName": "467205", + "DisplayOrder": 930, + "MemAddr": "06eea62c147b78a7040fc53a876d016c", + "type": null + }, + "412277": { + "ID": 412277, + "NumAwarded": 73, + "NumAwardedHardcore": 59, + "Title": "Forest Completion", + "Description": "Obtain all overworld items and defeat all trainers in Viridian Forest", + "Points": 5, + "TrueRatio": 33, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:58", + "DateCreated": "2024-03-28 00:21:09", + "BadgeName": "467206", + "DisplayOrder": 940, + "MemAddr": "67dceb27cdcb66b2ae91e18136495727", + "type": null + }, + "412278": { + "ID": 412278, + "NumAwarded": 86, + "NumAwardedHardcore": 68, + "Title": "Moon Completion", + "Description": "Obtain all overworld items and defeat all trainers in Mt. Moon", + "Points": 5, + "TrueRatio": 29, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:58", + "DateCreated": "2024-03-28 00:21:10", + "BadgeName": "467207", + "DisplayOrder": 950, + "MemAddr": "9ac1fd6a524983ca463470248ae3ab68", + "type": null + }, + "412279": { + "ID": 412279, + "NumAwarded": 76, + "NumAwardedHardcore": 62, + "Title": "Route Completion I", + "Description": "Obtain all overworld items and defeat all trainers in Route 3 and Route 4", + "Points": 5, + "TrueRatio": 31, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:59", + "DateCreated": "2024-03-28 00:21:10", + "BadgeName": "467208", + "DisplayOrder": 960, + "MemAddr": "c1bca29491bc39a239109d2c380041d6", + "type": null + }, + "412280": { + "ID": 412280, + "NumAwarded": 68, + "NumAwardedHardcore": 56, + "Title": "Route Completion II", + "Description": "Obtain all overworld items and defeat all trainers in Route 24 and Route 25", + "Points": 5, + "TrueRatio": 35, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:59", + "DateCreated": "2024-03-28 00:21:10", + "BadgeName": "467209", + "DisplayOrder": 970, + "MemAddr": "aebbeee6704e142fc2041698475570da", + "type": null + }, + "412281": { + "ID": 412281, + "NumAwarded": 68, + "NumAwardedHardcore": 56, + "Title": "Route Completion III", + "Description": "Obtain all overworld items and defeat all trainers in Route 5, Route 6 and Route 11", + "Points": 5, + "TrueRatio": 35, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:37:59", + "DateCreated": "2024-03-28 00:21:11", + "BadgeName": "467210", + "DisplayOrder": 980, + "MemAddr": "dc513e5833e1bca24bba81b7f94813f9", + "type": null + }, + "412282": { + "ID": 412282, + "NumAwarded": 218, + "NumAwardedHardcore": 152, + "Title": "Cruise Completion", + "Description": "Obtain all overworld items and defeat all trainers in S.S. Anne", + "Points": 5, + "TrueRatio": 14, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:00", + "DateCreated": "2024-03-28 00:21:11", + "BadgeName": "467211", + "DisplayOrder": 990, + "MemAddr": "a31e5624ab9f1b8875347508a0715f4e", + "type": "missable" + }, + "412283": { + "ID": 412283, + "NumAwarded": 52, + "NumAwardedHardcore": 48, + "Title": "Route Completion IV", + "Description": "Obtain all overworld items and defeat all trainers in Route 2, Route 9, Route 10 and Diglett's Cave", + "Points": 5, + "TrueRatio": 40, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:00", + "DateCreated": "2024-03-28 00:21:11", + "BadgeName": "467212", + "DisplayOrder": 1000, + "MemAddr": "4f3ea05c72068120d9b91a4a3279fc56", + "type": null + }, + "412284": { + "ID": 412284, + "NumAwarded": 47, + "NumAwardedHardcore": 41, + "Title": "Tunnel Completion", + "Description": "Obtain all overworld items and defeat all trainers in Rock Tunnel", + "Points": 5, + "TrueRatio": 46, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:00", + "DateCreated": "2024-03-28 00:21:11", + "BadgeName": "467213", + "DisplayOrder": 1010, + "MemAddr": "10199372d68e490efb2c2b403edcb3dd", + "type": null + }, + "412285": { + "ID": 412285, + "NumAwarded": 69, + "NumAwardedHardcore": 58, + "Title": "Route Completion V", + "Description": "Obtain all overworld items and defeat all trainers in Route 7 and Route 8", + "Points": 5, + "TrueRatio": 33, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:01", + "DateCreated": "2024-03-28 00:21:12", + "BadgeName": "467214", + "DisplayOrder": 1020, + "MemAddr": "19f1432707e65128e3154cccfdd9e892", + "type": null + }, + "412286": { + "ID": 412286, + "NumAwarded": 98, + "NumAwardedHardcore": 81, + "Title": "Hideout Completion", + "Description": "Obtain all overworld items and defeat all trainers in Rocket Hideout", + "Points": 5, + "TrueRatio": 25, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:01", + "DateCreated": "2024-03-28 00:21:12", + "BadgeName": "467215", + "DisplayOrder": 1030, + "MemAddr": "f659496c9ebc7caac60ecab309891614", + "type": null + }, + "412287": { + "ID": 412287, + "NumAwarded": 40, + "NumAwardedHardcore": 35, + "Title": "Tower Completion", + "Description": "Obtain all overworld items and defeat all trainers in Pokemon Tower", + "Points": 5, + "TrueRatio": 54, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:01", + "DateCreated": "2024-03-28 00:21:12", + "BadgeName": "467219", + "DisplayOrder": 1040, + "MemAddr": "5c5dabe5700c7a2c232aa5f3d8842ce6", + "type": null + }, + "412288": { + "ID": 412288, + "NumAwarded": 62, + "NumAwardedHardcore": 53, + "Title": "Company Completion", + "Description": "Obtain all overworld items and defeat all trainers in Silph Co.", + "Points": 5, + "TrueRatio": 36, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:02", + "DateCreated": "2024-03-28 00:21:13", + "BadgeName": "467220", + "DisplayOrder": 1050, + "MemAddr": "0883819a488ec6035da84d242af11a03", + "type": "missable" + }, + "412289": { + "ID": 412289, + "NumAwarded": 48, + "NumAwardedHardcore": 42, + "Title": "Route Completion VI", + "Description": "Obtain all overworld items and defeat all trainers in Route 12, Route 13, Route 14 and Route 15", + "Points": 5, + "TrueRatio": 45, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:02", + "DateCreated": "2024-03-28 00:21:13", + "BadgeName": "467221", + "DisplayOrder": 1060, + "MemAddr": "0f3abec1f19c52a9448797e93f761deb", + "type": null + }, + "412290": { + "ID": 412290, + "NumAwarded": 45, + "NumAwardedHardcore": 41, + "Title": "Route Completion VII", + "Description": "Obtain all overworld items and defeat all trainers in Route 16, Route 17 and Route 18", + "Points": 5, + "TrueRatio": 46, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:03", + "DateCreated": "2024-03-28 00:21:13", + "BadgeName": "467222", + "DisplayOrder": 1070, + "MemAddr": "09a13723bc1efa614104e3989df3487f", + "type": null + }, + "412291": { + "ID": 412291, + "NumAwarded": 61, + "NumAwardedHardcore": 50, + "Title": "Safari Completion", + "Description": "Obtain all overworld items in the Safari Zone", + "Points": 5, + "TrueRatio": 38, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:03", + "DateCreated": "2024-03-28 00:21:14", + "BadgeName": "467223", + "DisplayOrder": 1080, + "MemAddr": "d0309ebf507d2e8999c6f6313765ea86", + "type": null + }, + "412292": { + "ID": 412292, + "NumAwarded": 37, + "NumAwardedHardcore": 33, + "Title": "Seafoam Completion", + "Description": "Obtain all overworld items in Seafoam Islands", + "Points": 5, + "TrueRatio": 57, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:03", + "DateCreated": "2024-03-28 00:21:14", + "BadgeName": "467224", + "DisplayOrder": 1090, + "MemAddr": "b393ae305a182b0c278d8786e7802315", + "type": null + }, + "412293": { + "ID": 412293, + "NumAwarded": 55, + "NumAwardedHardcore": 48, + "Title": "Mansion Completion", + "Description": "Obtain all overworld items and defeat all trainers in Pokemon Mansion", + "Points": 5, + "TrueRatio": 40, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:04", + "DateCreated": "2024-03-28 00:21:14", + "BadgeName": "467225", + "DisplayOrder": 1100, + "MemAddr": "ba1f7866b08a0aa8143e6330b95de665", + "type": null + }, + "412294": { + "ID": 412294, + "NumAwarded": 66, + "NumAwardedHardcore": 53, + "Title": "Route Completion VIII", + "Description": "Obtain all overworld items and defeat all trainers in Route 19, Route 20, Route 21 and Route 22", + "Points": 5, + "TrueRatio": 36, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:04", + "DateCreated": "2024-03-28 00:21:15", + "BadgeName": "467226", + "DisplayOrder": 1110, + "MemAddr": "910d1e80f3530e2c177a2e9f70bff3e4", + "type": null + }, + "412295": { + "ID": 412295, + "NumAwarded": 88, + "NumAwardedHardcore": 68, + "Title": "Cerulean Completion", + "Description": "Obtain all overworld items and defeat all trainers in Cerulean Cave", + "Points": 5, + "TrueRatio": 29, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:04", + "DateCreated": "2024-03-28 00:21:15", + "BadgeName": "467227", + "DisplayOrder": 1120, + "MemAddr": "560fd0048fb876f800ebc4c54f46356c", + "type": "missable" + }, + "412296": { + "ID": 412296, + "NumAwarded": 68, + "NumAwardedHardcore": 57, + "Title": "Power Completion", + "Description": "Obtain all overworld items and defeat all trainers in Power Plant", + "Points": 5, + "TrueRatio": 34, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:05", + "DateCreated": "2024-03-28 00:21:15", + "BadgeName": "467228", + "DisplayOrder": 1130, + "MemAddr": "e7010bfa27f88f2da136eef6d7129b47", + "type": null + }, + "412297": { + "ID": 412297, + "NumAwarded": 52, + "NumAwardedHardcore": 47, + "Title": "Route Completion IX", + "Description": "Obtain all overworld items and defeat all trainers in Route 23", + "Points": 5, + "TrueRatio": 41, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:05", + "DateCreated": "2024-03-28 00:21:16", + "BadgeName": "467229", + "DisplayOrder": 1140, + "MemAddr": "101b52f0dede6b5e4e6200aa5cd37279", + "type": null + }, + "412298": { + "ID": 412298, + "NumAwarded": 57, + "NumAwardedHardcore": 47, + "Title": "Victory Completion", + "Description": "Obtain all overworld items and defeat all trainers in Victory Road", + "Points": 5, + "TrueRatio": 41, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:05", + "DateCreated": "2024-03-28 00:21:16", + "BadgeName": "467230", + "DisplayOrder": 1150, + "MemAddr": "33698bc077884d34132b215e969f560b", + "type": null + }, + "412299": { + "ID": 412299, + "NumAwarded": 43, + "NumAwardedHardcore": 39, + "Title": "Island Completion I", + "Description": "Obtain all overworld items and defeat all trainers in One Island", + "Points": 5, + "TrueRatio": 48, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:06", + "DateCreated": "2024-03-28 00:21:16", + "BadgeName": "467231", + "DisplayOrder": 1160, + "MemAddr": "0798c161eab9b15430381a83ed5d50b2", + "type": "missable" + }, + "412300": { + "ID": 412300, + "NumAwarded": 41, + "NumAwardedHardcore": 38, + "Title": "Island Completion II", + "Description": "Obtain all overworld items in Two Island", + "Points": 5, + "TrueRatio": 50, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:06", + "DateCreated": "2024-03-28 00:21:16", + "BadgeName": "467232", + "DisplayOrder": 1170, + "MemAddr": "f340a232f97a5c2b44cac3ef17a0d48e", + "type": null + }, + "412301": { + "ID": 412301, + "NumAwarded": 39, + "NumAwardedHardcore": 35, + "Title": "Island Completion III", + "Description": "Obtain all overworld items and defeat all trainers in Three Island", + "Points": 5, + "TrueRatio": 54, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:06", + "DateCreated": "2024-03-28 00:21:17", + "BadgeName": "467233", + "DisplayOrder": 1180, + "MemAddr": "d88a7fa3f035d65433b799ceae4ae609", + "type": null + }, + "412346": { + "ID": 412346, + "NumAwarded": 72, + "NumAwardedHardcore": 57, + "Title": "Legendary Birds", + "Description": "Catch Articuno, Zapdos and Moltres", + "Points": 5, + "TrueRatio": 34, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:07", + "DateCreated": "2024-03-28 02:20:04", + "BadgeName": "467523", + "DisplayOrder": 1190, + "MemAddr": "481386a7b51f0dd60a4388385ebe4365", + "type": null + }, + "412347": { + "ID": 412347, + "NumAwarded": 44, + "NumAwardedHardcore": 37, + "Title": "Ancient Genes", + "Description": "Catch Mewtwo and Mew", + "Points": 5, + "TrueRatio": 51, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:07", + "DateCreated": "2024-03-28 02:20:05", + "BadgeName": "467524", + "DisplayOrder": 1200, + "MemAddr": "4c63ef7ad0f5cf4bbf25b6588bf424dc", + "type": null + }, + "412348": { + "ID": 412348, + "NumAwarded": 44, + "NumAwardedHardcore": 40, + "Title": "Legendary Beasts", + "Description": "Catch Raikou, Entei, and Suicune", + "Points": 5, + "TrueRatio": 47, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:07", + "DateCreated": "2024-03-28 02:20:05", + "BadgeName": "467525", + "DisplayOrder": 1210, + "MemAddr": "2654feed0692a43d75de86f4a56541a1", + "type": null + }, + "412349": { + "ID": 412349, + "NumAwarded": 53, + "NumAwardedHardcore": 46, + "Title": "Astral Radiance", + "Description": "Catch Celebi, Necrozma and Calyrex", + "Points": 5, + "TrueRatio": 41, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:08", + "DateCreated": "2024-03-28 02:20:05", + "BadgeName": "467526", + "DisplayOrder": 1220, + "MemAddr": "11566c925a68070f2028ea64006abde9", + "type": null + }, + "412350": { + "ID": 412350, + "NumAwarded": 38, + "NumAwardedHardcore": 34, + "Title": "Legendary Giants", + "Description": "Catch Regirock, Regice, Registeel and Regigigas", + "Points": 5, + "TrueRatio": 55, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:08", + "DateCreated": "2024-03-28 02:20:06", + "BadgeName": "467527", + "DisplayOrder": 1230, + "MemAddr": "003517ea8346fdb536b94cd7daa54465", + "type": null + }, + "412351": { + "ID": 412351, + "NumAwarded": 38, + "NumAwardedHardcore": 32, + "Title": "Eon Trio", + "Description": "Catch Latias, Latios and Kyogre", + "Points": 5, + "TrueRatio": 59, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:08", + "DateCreated": "2024-03-28 02:20:06", + "BadgeName": "467528", + "DisplayOrder": 1240, + "MemAddr": "29d75f4555a36d659b99c5af06d57123", + "type": null + }, + "412352": { + "ID": 412352, + "NumAwarded": 39, + "NumAwardedHardcore": 35, + "Title": "Victory Gang", + "Description": "Catch Jirachi, Meloetta, Genesect and Zygarde", + "Points": 5, + "TrueRatio": 54, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:08", + "DateCreated": "2024-03-28 02:20:06", + "BadgeName": "467529", + "DisplayOrder": 1250, + "MemAddr": "c39598dbbe4ecb855d9a3edc163646f2", + "type": null + }, + "412353": { + "ID": 412353, + "NumAwarded": 49, + "NumAwardedHardcore": 42, + "Title": "Lake Guardians", + "Description": "Catch Uxie, Mesprit and Azelf", + "Points": 5, + "TrueRatio": 45, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:09", + "DateCreated": "2024-03-28 02:20:07", + "BadgeName": "467530", + "DisplayOrder": 1260, + "MemAddr": "b5127c6c5091ad3cd9b54acbdc01db6a", + "type": null + }, + "412354": { + "ID": 412354, + "NumAwarded": 37, + "NumAwardedHardcore": 32, + "Title": "Hopes and Dreams", + "Description": "Catch Cresselia, Victini and Volcanion", + "Points": 5, + "TrueRatio": 59, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:09", + "DateCreated": "2024-03-28 02:20:07", + "BadgeName": "467531", + "DisplayOrder": 1270, + "MemAddr": "df3fd627946b3f0541af6c840ea44e87", + "type": null + }, + "412355": { + "ID": 412355, + "NumAwarded": 37, + "NumAwardedHardcore": 33, + "Title": "Cold Seafoam", + "Description": "Catch Manaphy, Kyurem, Keldeo, Tapu Fini and Glastrier", + "Points": 5, + "TrueRatio": 57, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:09", + "DateCreated": "2024-03-28 02:20:07", + "BadgeName": "467532", + "DisplayOrder": 1280, + "MemAddr": "e3b1bfe8779f38419d693eb237d743b3", + "type": null + }, + "412356": { + "ID": 412356, + "NumAwarded": 37, + "NumAwardedHardcore": 33, + "Title": "Grassy Viridians", + "Description": "Catch Shaymin, Virizion, Tapu Bulu and Zarude", + "Points": 5, + "TrueRatio": 57, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:10", + "DateCreated": "2024-03-28 02:20:08", + "BadgeName": "467533", + "DisplayOrder": 1290, + "MemAddr": "2998e1cd6dadc418fc8a72c538044aeb", + "type": null + }, + "412357": { + "ID": 412357, + "NumAwarded": 36, + "NumAwardedHardcore": 32, + "Title": "Rocky Encounters", + "Description": "Catch Terrakion, Magearna, Iron Leaves, Iron Boulder and Iron Crown", + "Points": 5, + "TrueRatio": 59, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:10", + "DateCreated": "2024-03-28 02:20:08", + "BadgeName": "467534", + "DisplayOrder": 1300, + "MemAddr": "e4339c7bd0bb6a2df4cfbac9c7b7d8cc", + "type": null + }, + "412358": { + "ID": 412358, + "NumAwarded": 56, + "NumAwardedHardcore": 46, + "Title": "Forces of Nature", + "Description": "Catch Tornadus, Thundurus and Landorus", + "Points": 5, + "TrueRatio": 41, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:10", + "DateCreated": "2024-03-28 02:20:08", + "BadgeName": "467535", + "DisplayOrder": 1310, + "MemAddr": "f7d197838736d5cd4d3c20c221b235c9", + "type": null + }, + "412359": { + "ID": 412359, + "NumAwarded": 44, + "NumAwardedHardcore": 38, + "Title": "Mochi Jewels", + "Description": "Catch Diancie and Pecharunt", + "Points": 5, + "TrueRatio": 50, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:23", + "DateCreated": "2024-03-28 02:20:09", + "BadgeName": "467536", + "DisplayOrder": 1320, + "MemAddr": "b301f453cb647bebcbe0abff0e502aa0", + "type": null + }, + "412360": { + "ID": 412360, + "NumAwarded": 35, + "NumAwardedHardcore": 31, + "Title": "Mansion of Spooks", + "Description": "Catch Hoopa, Tapu Lele, Regidrago and Spectrier", + "Points": 5, + "TrueRatio": 60, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:11", + "DateCreated": "2024-03-28 02:20:09", + "BadgeName": "467537", + "DisplayOrder": 1330, + "MemAddr": "c1523116f627a8c8647a550f34d55503", + "type": null + }, + "412361": { + "ID": 412361, + "NumAwarded": 36, + "NumAwardedHardcore": 32, + "Title": "Electric Generators", + "Description": "Catch Tapu Koko, Zeraora and Regieleki", + "Points": 5, + "TrueRatio": 59, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:11", + "DateCreated": "2024-03-28 02:20:10", + "BadgeName": "467538", + "DisplayOrder": 1340, + "MemAddr": "718c1fc6e4e1beb6c4fab33143091773", + "type": null + }, + "412362": { + "ID": 412362, + "NumAwarded": 34, + "NumAwardedHardcore": 31, + "Title": "Sun and Moon", + "Description": "Catch Cosmog, Cosmoem, Solgaleo and Lunala", + "Points": 5, + "TrueRatio": 60, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:11", + "DateCreated": "2024-03-28 02:20:10", + "BadgeName": "467539", + "DisplayOrder": 1350, + "MemAddr": "ab817faac85694616504f92d7938dc3e", + "type": null + }, + "412363": { + "ID": 412363, + "NumAwarded": 34, + "NumAwardedHardcore": 30, + "Title": "Extradimensional Beings", + "Description": "Catch Nihilego, Buzzwole, Pheromosa, Xurkitree, Celesteela, Kartana, Guzzlord, Poipole, Stakataka and Blacephalon", + "Points": 5, + "TrueRatio": 62, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:12", + "DateCreated": "2024-03-28 02:20:10", + "BadgeName": "467540", + "DisplayOrder": 1360, + "MemAddr": "a0f36063cc632fb2e79d1906091b2f96", + "type": null + }, + "412364": { + "ID": 412364, + "NumAwarded": 38, + "NumAwardedHardcore": 32, + "Title": "Reinforcements of Nature", + "Description": "Catch Heatran, Marshadow and Enamorus", + "Points": 5, + "TrueRatio": 59, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:12", + "DateCreated": "2024-03-28 02:20:11", + "BadgeName": "467541", + "DisplayOrder": 1370, + "MemAddr": "74617a375522f98a4c8831a4bf6c7657", + "type": null + }, + "412365": { + "ID": 412365, + "NumAwarded": 50, + "NumAwardedHardcore": 44, + "Title": "Paradox Dogs", + "Description": "Catch Walking Wake, Gouging Fire and Raging Bolt", + "Points": 5, + "TrueRatio": 43, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:23", + "DateCreated": "2024-03-28 02:20:11", + "BadgeName": "467542", + "DisplayOrder": 1380, + "MemAddr": "50eb88990d2e1ee00ae4aa022b9394e1", + "type": null + }, + "412366": { + "ID": 412366, + "NumAwarded": 56, + "NumAwardedHardcore": 47, + "Title": "Treasures of Ruin", + "Description": "Catch Ting-Lu, Chien-Pao, Wo-Chien, Chi-Yu and Terapagos", + "Points": 5, + "TrueRatio": 41, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:12", + "DateCreated": "2024-03-28 02:20:11", + "BadgeName": "467543", + "DisplayOrder": 1390, + "MemAddr": "9b3d48b41725aa4bc065ea6c090c1652", + "type": null + }, + "412771": { + "ID": 412771, + "NumAwarded": 43, + "NumAwardedHardcore": 39, + "Title": "Monthly Gift", + "Description": "Obtain all the mystery gift Pokemon", + "Points": 5, + "TrueRatio": 48, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:13", + "DateCreated": "2024-03-28 17:04:19", + "BadgeName": "467544", + "DisplayOrder": 1400, + "MemAddr": "d98071188d1f674e63eb400d6708fad2", + "type": null + }, + "412772": { + "ID": 412772, + "NumAwarded": 54, + "NumAwardedHardcore": 48, + "Title": "Starter Pack", + "Description": "Obtain all the Pokemon that come from shard trading in Celadon City", + "Points": 5, + "TrueRatio": 40, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:13", + "DateCreated": "2024-03-28 17:04:20", + "BadgeName": "467545", + "DisplayOrder": 1410, + "MemAddr": "b3ffe2555ecbf274b8e6a1e114afb589", + "type": null + }, + "412773": { + "ID": 412773, + "NumAwarded": 53, + "NumAwardedHardcore": 46, + "Title": "Pseudo-Gambling", + "Description": "Obtain all the Celadon City Game Corner buyable Pokemon", + "Points": 5, + "TrueRatio": 41, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:13", + "DateCreated": "2024-03-28 17:04:20", + "BadgeName": "467546", + "DisplayOrder": 1420, + "MemAddr": "4a0a72545981f519f24d9bb903704a9f", + "type": null + }, + "412824": { + "ID": 412824, + "NumAwarded": 37, + "NumAwardedHardcore": 34, + "Title": "Aren't They Cute?", + "Description": "Complete all 9 in-game trades", + "Points": 10, + "TrueRatio": 111, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:14", + "DateCreated": "2024-03-29 01:15:38", + "BadgeName": "467600", + "DisplayOrder": 1430, + "MemAddr": "da724577e2266f7e0f1786ffee79f05f", + "type": null + }, + "412780": { + "ID": 412780, + "NumAwarded": 40, + "NumAwardedHardcore": 36, + "Title": "Origins Unearthed", + "Description": "Catch every available Pokemon from Kanto", + "Points": 10, + "TrueRatio": 105, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:41:03", + "DateCreated": "2024-03-28 17:46:17", + "BadgeName": "467557", + "DisplayOrder": 1440, + "MemAddr": "e52e34090a93072e056a8a706d3309cb", + "type": null + }, + "412781": { + "ID": 412781, + "NumAwarded": 38, + "NumAwardedHardcore": 35, + "Title": "Shrine Seeker", + "Description": "Catch every available Pokemon from Johto", + "Points": 10, + "TrueRatio": 108, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:41:03", + "DateCreated": "2024-03-28 17:46:17", + "BadgeName": "467558", + "DisplayOrder": 1450, + "MemAddr": "23462631d4b70fea756043327fcb76af", + "type": null + }, + "412782": { + "ID": 412782, + "NumAwarded": 33, + "NumAwardedHardcore": 30, + "Title": "Power Keepers", + "Description": "Catch every available Pokemon from Hoenn (Except Shedinja)", + "Points": 10, + "TrueRatio": 125, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:41:04", + "DateCreated": "2024-03-28 17:46:18", + "BadgeName": "467559", + "DisplayOrder": 1460, + "MemAddr": "3c03653630f7d466ba1520a4b6325fc5", + "type": null + }, + "412783": { + "ID": 412783, + "NumAwarded": 35, + "NumAwardedHardcore": 32, + "Title": "Secret Wonders", + "Description": "Catch every available Pokemon from Sinnoh (Except Arceus)", + "Points": 10, + "TrueRatio": 118, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:41:04", + "DateCreated": "2024-03-28 17:46:18", + "BadgeName": "467560", + "DisplayOrder": 1470, + "MemAddr": "8dbdbc7ca48924593a30ee50d4c921a8", + "type": null + }, + "412784": { + "ID": 412784, + "NumAwarded": 34, + "NumAwardedHardcore": 31, + "Title": "Boundaries Crossed", + "Description": "Catch every available Pokemon from Unova", + "Points": 10, + "TrueRatio": 121, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:41:04", + "DateCreated": "2024-03-28 17:46:18", + "BadgeName": "467561", + "DisplayOrder": 1480, + "MemAddr": "7f20dce722a4690375ac226a5b6aba8d", + "type": null + }, + "412785": { + "ID": 412785, + "NumAwarded": 34, + "NumAwardedHardcore": 31, + "Title": "Fates Collide", + "Description": "Catch every available Pokemon from Kalos", + "Points": 10, + "TrueRatio": 121, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:41:05", + "DateCreated": "2024-03-28 17:46:19", + "BadgeName": "467562", + "DisplayOrder": 1490, + "MemAddr": "e3ed5cc7532c0153c3bd965304738495", + "type": null + }, + "412786": { + "ID": 412786, + "NumAwarded": 32, + "NumAwardedHardcore": 29, + "Title": "Unbroken Bonds", + "Description": "Catch every available Pokemon from Alola", + "Points": 10, + "TrueRatio": 129, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:41:05", + "DateCreated": "2024-03-28 17:46:19", + "BadgeName": "467563", + "DisplayOrder": 1500, + "MemAddr": "bb8d2be3f56ba4b7e42a9ffc8928bf54", + "type": null + }, + "412787": { + "ID": 412787, + "NumAwarded": 32, + "NumAwardedHardcore": 29, + "Title": "Crown Zenith", + "Description": "Catch every available Pokemon from Galar (Except Eternatus)", + "Points": 10, + "TrueRatio": 129, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:41:05", + "DateCreated": "2024-03-28 17:46:19", + "BadgeName": "467564", + "DisplayOrder": 1510, + "MemAddr": "1ed33b67dbdaf7682f6524089117925c", + "type": null + }, + "412788": { + "ID": 412788, + "NumAwarded": 33, + "NumAwardedHardcore": 31, + "Title": "Temporal Forces", + "Description": "Catch every available Pokemon from Paldea", + "Points": 10, + "TrueRatio": 121, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:41:06", + "DateCreated": "2024-03-28 17:46:20", + "BadgeName": "467565", + "DisplayOrder": 1520, + "MemAddr": "c91d5b42403e31753d16f4acc021f5b3", + "type": null + }, + "412789": { + "ID": 412789, + "NumAwarded": 32, + "NumAwardedHardcore": 29, + "Title": "Gotta Catch em' All - Radical Red", + "Description": "Catch all 1022 available Pokemon", + "Points": 100, + "TrueRatio": 1295, + "Author": "Bryan1150", + "DateModified": "2024-04-01 16:47:56", + "DateCreated": "2024-03-28 17:46:54", + "BadgeName": "467566", + "DisplayOrder": 1530, + "MemAddr": "98f94a66e66157e964b0e5a8bde391ae", + "type": null + }, + "178488": { + "ID": 178488, + "NumAwarded": 176, + "NumAwardedHardcore": 142, + "Title": "You Want One, Don't You?", + "Description": "Purchase a shiny Magikarp", + "Points": 5, + "TrueRatio": 15, + "Author": "Chawk", + "DateModified": "2024-08-27 17:38:36", + "DateCreated": "2021-10-16 06:56:59", + "BadgeName": "466979", + "DisplayOrder": 1540, + "MemAddr": "0fd9562d79dea4295381096fced93407", + "type": null, + "DateEarned": "2022-09-16 01:11:08" + }, + "412810": { + "ID": 412810, + "NumAwarded": 55, + "NumAwardedHardcore": 48, + "Title": "Show Off", + "Description": "Obtain all the gifts from showing powerful Pokemon to gym leaders", + "Points": 5, + "TrueRatio": 40, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:36", + "DateCreated": "2024-03-29 00:21:17", + "BadgeName": "467597", + "DisplayOrder": 1550, + "MemAddr": "6f9d7c292e2337110d3693de3a4878b7", + "type": null + }, + "178486": { + "ID": 178486, + "NumAwarded": 153, + "NumAwardedHardcore": 112, + "Title": "HM Master", + "Description": "Collect all of the HMs", + "Points": 10, + "TrueRatio": 38, + "Author": "Chawk", + "DateModified": "2024-08-27 17:38:36", + "DateCreated": "2021-10-16 06:20:46", + "BadgeName": "466980", + "DisplayOrder": 1560, + "MemAddr": "3cc889a3b4517a362b121f871a0ccee4", + "type": null, + "DateEarnedHardcore": "2022-09-15 15:20:58", + "DateEarned": "2022-09-03 00:18:33" + }, + "178487": { + "ID": 178487, + "NumAwarded": 67, + "NumAwardedHardcore": 56, + "Title": "TM Master", + "Description": "Collect all of the non-buyable TMs", + "Points": 25, + "TrueRatio": 175, + "Author": "Chawk", + "DateModified": "2024-08-27 17:38:37", + "DateCreated": "2021-10-16 06:39:00", + "BadgeName": "466981", + "DisplayOrder": 1570, + "MemAddr": "9b87007ca84ae00f1e779945d069bd89", + "type": "missable", + "DateEarned": "2022-10-23 04:09:38" + }, + "412811": { + "ID": 412811, + "NumAwarded": 34, + "NumAwardedHardcore": 31, + "Title": "Mega Master", + "Description": "Collect all of the Mega Stones", + "Points": 25, + "TrueRatio": 304, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:37", + "DateCreated": "2024-03-29 00:21:17", + "BadgeName": "467598", + "DisplayOrder": 1580, + "MemAddr": "95a79893c60f257d42c59383f246524c", + "type": null + }, + "412812": { + "ID": 412812, + "NumAwarded": 38, + "NumAwardedHardcore": 32, + "Title": "Z-Crystal Master", + "Description": "Collect all of the non-buyable Z-Crystals (Except for Mewium Z)", + "Points": 25, + "TrueRatio": 295, + "Author": "Bryan1150", + "DateModified": "2024-08-27 17:38:38", + "DateCreated": "2024-03-29 00:21:17", + "BadgeName": "467599", + "DisplayOrder": 1590, + "MemAddr": "74c8e16cbb9e8d025f451ed47e44f577", + "type": null + } + }, + "NumAwardedToUser": 52, + "NumAwardedToUserHardcore": 1, + "NumDistinctPlayersCasual": 1717, + "NumDistinctPlayersHardcore": 1717, + "ReleasedAtGranularity": "day", + "UserCompletion": "33.12%", + "UserCompletionHardcore": "0.64%", + "HighestAwardKind": "completed", + "HighestAwardDate": "2022-10-23T04:09:38+00:00" +} diff --git a/testdata/API_GetUserAwards/awards.json b/testdata/API_GetUserAwards/awards.json new file mode 100644 index 0000000..9901469 --- /dev/null +++ b/testdata/API_GetUserAwards/awards.json @@ -0,0 +1,120 @@ +{ + "TotalAwardsCount": 9, + "HiddenAwardsCount": 0, + "MasteryAwardsCount": 0, + "CompletionAwardsCount": 3, + "BeatenHardcoreAwardsCount": 1, + "BeatenSoftcoreAwardsCount": 5, + "EventAwardsCount": 0, + "SiteAwardsCount": 0, + "VisibleUserAwards": [ + { + "AwardedAt": "2021-11-13T01:31:30+00:00", + "AwardType": "Game Beaten", + "AwardData": 555, + "AwardDataExtra": 0, + "DisplayOrder": 0, + "Title": "Shin Kidou Senki Gundam W: Endless Duel", + "ConsoleID": 3, + "ConsoleName": "SNES/Super Famicom", + "Flags": null, + "ImageIcon": "/Images/051792.png" + }, + { + "AwardedAt": "2022-10-23T04:09:38+00:00", + "AwardType": "Mastery/Completion", + "AwardData": 17361, + "AwardDataExtra": 0, + "DisplayOrder": 0, + "Title": "~Hack~ Pokemon Radical Red", + "ConsoleID": 5, + "ConsoleName": "Game Boy Advance", + "Flags": 0, + "ImageIcon": "/Images/078141.png" + }, + { + "AwardedAt": "2023-04-10T01:18:00+00:00", + "AwardType": "Game Beaten", + "AwardData": 12747, + "AwardDataExtra": 0, + "DisplayOrder": 0, + "Title": "Phoenix Wright: Ace Attorney", + "ConsoleID": 18, + "ConsoleName": "Nintendo DS", + "Flags": 0, + "ImageIcon": "/Images/060426.png" + }, + { + "AwardedAt": "2023-04-16T01:40:38+00:00", + "AwardType": "Game Beaten", + "AwardData": 9537, + "AwardDataExtra": 0, + "DisplayOrder": 0, + "Title": "Phoenix Wright: Ace Attorney - Justice for All", + "ConsoleID": 18, + "ConsoleName": "Nintendo DS", + "Flags": 0, + "ImageIcon": "/Images/086532.png" + }, + { + "AwardedAt": "2023-05-06T04:48:40+00:00", + "AwardType": "Game Beaten", + "AwardData": 1446, + "AwardDataExtra": 0, + "DisplayOrder": 0, + "Title": "Super Mario Bros.", + "ConsoleID": 7, + "ConsoleName": "NES/Famicom", + "Flags": 0, + "ImageIcon": "/Images/036035.png" + }, + { + "AwardedAt": "2023-09-25T23:49:33+00:00", + "AwardType": "Game Beaten", + "AwardData": 21360, + "AwardDataExtra": 1, + "DisplayOrder": 0, + "Title": "~Hack~ Pokemon Emerald Rogue", + "ConsoleID": 5, + "ConsoleName": "Game Boy Advance", + "Flags": 0, + "ImageIcon": "/Images/099244.png" + }, + { + "AwardedAt": "2023-04-10T01:18:00+00:00", + "AwardType": "Mastery/Completion", + "AwardData": 12747, + "AwardDataExtra": 0, + "DisplayOrder": 1, + "Title": "Phoenix Wright: Ace Attorney", + "ConsoleID": 18, + "ConsoleName": "Nintendo DS", + "Flags": 0, + "ImageIcon": "/Images/060426.png" + }, + { + "AwardedAt": "2023-04-16T01:55:03+00:00", + "AwardType": "Mastery/Completion", + "AwardData": 9537, + "AwardDataExtra": 0, + "DisplayOrder": 2, + "Title": "Phoenix Wright: Ace Attorney - Justice for All", + "ConsoleID": 18, + "ConsoleName": "Nintendo DS", + "Flags": 0, + "ImageIcon": "/Images/086532.png" + }, + { + "AwardedAt": "2022-10-02T02:07:56+00:00", + "AwardType": "Game Beaten", + "AwardData": 17361, + "AwardDataExtra": 0, + "DisplayOrder": 3, + "Title": "~Hack~ Pokemon Radical Red", + "ConsoleID": 5, + "ConsoleName": "Game Boy Advance", + "Flags": 0, + "ImageIcon": "/Images/078141.png" + } + ] +}