gamertag 1.1.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +11 -1
- data/LICENSE.md +11 -0
- data/README.md +84 -0
- data/gamertag.gemspec +25 -25
- data/lib/faraday/response/cleanup_xbox_leaders_naming.rb +30 -0
- data/lib/faraday/response/raise_xbox_leaders_error.rb +22 -0
- data/lib/gamertag.rb +21 -10
- data/lib/gamertag/client.rb +25 -0
- data/lib/gamertag/client/achievements.rb +15 -0
- data/lib/gamertag/client/friends.rb +14 -0
- data/lib/gamertag/client/games.rb +41 -0
- data/lib/gamertag/client/profile.rb +14 -0
- data/lib/gamertag/configuration.rb +48 -0
- data/lib/gamertag/connection.rb +22 -0
- data/lib/gamertag/error.rb +22 -0
- data/lib/gamertag/version.rb +2 -2
- data/spec/client/achievements_spec.rb +21 -0
- data/spec/client/friends_spec.rb +23 -0
- data/spec/client/games_spec.rb +49 -0
- data/spec/client/profile_spec.rb +22 -0
- data/spec/client_spec.rb +7 -0
- data/spec/faraday/xboxleader_cleanup_spec.rb +59 -0
- data/spec/faraday/xboxleader_error_spec.rb +63 -0
- data/spec/fixtures/achievements.json +654 -0
- data/spec/fixtures/errors/friends_not_found.json +9 -0
- data/spec/fixtures/errors/game_not_found.json +9 -0
- data/spec/fixtures/errors/gamertag_not_found.json +9 -0
- data/spec/fixtures/errors/invalid_game_id.json +9 -0
- data/spec/fixtures/errors/invalid_gamertag.json +9 -0
- data/spec/fixtures/friends.json +772 -0
- data/spec/fixtures/gamertag_not_found.json +9 -0
- data/spec/fixtures/games.json +2244 -0
- data/spec/fixtures/profile.json +125 -0
- data/spec/gamertag_spec.rb +13 -0
- data/spec/helper.rb +38 -0
- metadata +92 -124
- data/.gitignore +0 -9
- data/.rspec +0 -3
- data/.rvmrc +0 -1
- data/Gemfile +0 -4
- data/LICENSE +0 -20
- data/README.mdown +0 -106
- data/Rakefile +0 -12
- data/lib/gamertag/friends.rb +0 -25
- data/lib/gamertag/played_games.rb +0 -73
- data/lib/gamertag/profile.rb +0 -13
- data/lib/gamertag/simple_profile.rb +0 -68
- data/spec/fixtures/vcr_cassettes/Friends_Belial1984.yml +0 -520
- data/spec/fixtures/vcr_cassettes/PlayedGames_Belial1984.yml +0 -1309
- data/spec/fixtures/vcr_cassettes/PlayedGames_some_user.yml +0 -100
- data/spec/fixtures/vcr_cassettes/SimpleProfile_Belial1984.yml +0 -45
- data/spec/friends_spec.rb +0 -19
- data/spec/played_games_spec.rb +0 -25
- data/spec/profile_spec.rb +0 -15
- data/spec/simple_profile_spec.rb +0 -69
- data/spec/spec_helper.rb +0 -15
- data/spec/version_spec.rb +0 -7
@@ -0,0 +1,22 @@
|
|
1
|
+
module Gamertag
|
2
|
+
# Custom error class for rescuing from Xbox Leader API errors which are
|
3
|
+
# a little funky at best
|
4
|
+
class Error < StandardError
|
5
|
+
def initialize(response=nil)
|
6
|
+
@response = response
|
7
|
+
super(build_error_message)
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
def build_error_message
|
12
|
+
return nil if @response.nil?
|
13
|
+
"#{@response[:body].data.message}"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class GamertagNotFound < Error; end
|
18
|
+
class AchievementNotFound < Error; end
|
19
|
+
class FriendsNotFound < Error; end
|
20
|
+
class InvalidGamertag < Error; end
|
21
|
+
class InvalidGameId < Error; end
|
22
|
+
end
|
data/lib/gamertag/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
module Gamertag
|
2
|
-
VERSION =
|
3
|
-
end
|
2
|
+
VERSION = '2.0.1'
|
3
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
describe Gamertag::Client::Achievements do
|
5
|
+
before do
|
6
|
+
@client = Gamertag::Client.new
|
7
|
+
@gamertag = 'belial1984'
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#achievements' do
|
11
|
+
it 'should return the users achievements' do
|
12
|
+
stub_get('/achievements.json?gameid=100&gamertag=belial1984').
|
13
|
+
to_return(json_response('achievements.json'))
|
14
|
+
|
15
|
+
|
16
|
+
achievements = @client.achievements(@gamertag, 100)
|
17
|
+
|
18
|
+
expect(achievements.last.title).to eq('Scavenger Hunt')
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
describe Gamertag::Client::Friends do
|
5
|
+
before do
|
6
|
+
@client = Gamertag::Client.new
|
7
|
+
@gamertag = 'belial1984'
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#friends' do
|
11
|
+
it 'returns friends for the gamertag' do
|
12
|
+
stub_get('/friends.json?gamertag=belial1984').
|
13
|
+
to_return(json_response('friends.json'))
|
14
|
+
|
15
|
+
friends = @client.friends(@gamertag)
|
16
|
+
|
17
|
+
expect(friends).not_to be_empty
|
18
|
+
|
19
|
+
gamertags = friends.map{|f| f.gamertag }
|
20
|
+
expect(gamertags).to include('Eternal Epoch')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
describe Gamertag::Client::Games do
|
5
|
+
before do
|
6
|
+
@client = Gamertag::Client.new
|
7
|
+
@gamertag = 'belial1984'
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#games' do
|
11
|
+
it 'returns the games that have been played by the gamertag' do
|
12
|
+
stub_get('/games.json?gamertag=belial1984').
|
13
|
+
to_return(json_response('games.json'))
|
14
|
+
|
15
|
+
games = @client.games(@gamertag)
|
16
|
+
expect(games.count).to eq(117)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#potential_gamerscore' do
|
21
|
+
it 'returns the potential points the gamer could score from their library of games' do
|
22
|
+
stub_get('/games.json?gamertag=belial1984').
|
23
|
+
to_return(json_response('games.json'))
|
24
|
+
|
25
|
+
potential_gamerscore = @client.potential_gamerscore(@gamertag)
|
26
|
+
expect(potential_gamerscore).to eq(87770)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe '#potential_achievements_count' do
|
31
|
+
it 'returns the number of potential achievements for the games played' do
|
32
|
+
stub_get('/games.json?gamertag=belial1984').
|
33
|
+
to_return(json_response('games.json'))
|
34
|
+
|
35
|
+
potential_achievement_count = @client.potential_achievement_count(@gamertag)
|
36
|
+
expect(potential_achievement_count).to eq(4165)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe '#achievements_count' do
|
41
|
+
it 'returns the number of achievements for the games played' do
|
42
|
+
stub_get('/games.json?gamertag=belial1984').
|
43
|
+
to_return(json_response('games.json'))
|
44
|
+
|
45
|
+
achievement_count = @client.achievement_count(@gamertag)
|
46
|
+
expect(achievement_count).to eq(1054)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
describe Gamertag::Client::Profile do
|
5
|
+
before do
|
6
|
+
@client = Gamertag::Client.new
|
7
|
+
@gamertag = 'belial1984'
|
8
|
+
end
|
9
|
+
|
10
|
+
describe '#profile' do
|
11
|
+
it 'returns the profile for the gamertag' do
|
12
|
+
stub_get('/profile.json?gamertag=belial1984').
|
13
|
+
to_return(json_response('profile.json'))
|
14
|
+
|
15
|
+
|
16
|
+
profile = @client.profile(@gamertag)
|
17
|
+
|
18
|
+
expect(profile.gamertag).to eq(@gamertag)
|
19
|
+
expect(profile.name).to eq('baris balic')
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/spec/client_spec.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
describe Faraday::Response do
|
5
|
+
before do
|
6
|
+
@client = Gamertag::Client.new
|
7
|
+
@gamertag = 'belial1984'
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'when the profile is requested' do
|
11
|
+
it "maps all crappy fields to snake_case" do
|
12
|
+
stub_get("/profile.json?gamertag=#{@gamertag}").
|
13
|
+
to_return(json_response('profile.json'))
|
14
|
+
|
15
|
+
profile = @client.profile(@gamertag)
|
16
|
+
expect(profile.gamertag).to eq('belial1984')
|
17
|
+
|
18
|
+
expect(profile.badges.xbox_launch_team).to eq(false)
|
19
|
+
expect(profile.badges.nxe_launch_team).to eq(false)
|
20
|
+
expect(profile.badges.kinect_launch_team).to eq(false)
|
21
|
+
expect(profile.recent_activity).not_to be_empty
|
22
|
+
expect(profile.recent_activity.first.is_app).to eq(false)
|
23
|
+
expect(profile.recent_activity.first.last_played).to eq('1370905190')
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'when the friends are requested' do
|
29
|
+
it "maps all crappy fields to snake_case" do
|
30
|
+
stub_get("/friends.json?gamertag=#{@gamertag}").
|
31
|
+
to_return(json_response('friends.json'))
|
32
|
+
|
33
|
+
friends = @client.friends(@gamertag)
|
34
|
+
expect(friends.first.gamertag).to eq('Ageblaster')
|
35
|
+
expect(friends.first.last_seen).to eq('1041379200')
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'when the games are requested' do
|
40
|
+
it "maps all crappy fields to snake_case" do
|
41
|
+
stub_get("/games.json?gamertag=#{@gamertag}").
|
42
|
+
to_return(json_response('games.json'))
|
43
|
+
|
44
|
+
games = @client.games(@gamertag)
|
45
|
+
expect(games.first.is_app).to eq(false)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context 'when the achievements are requested' do
|
50
|
+
it "maps all crappy fields to snake_case" do
|
51
|
+
stub_get("/achievements.json?gameid=100&gamertag=#{@gamertag}").
|
52
|
+
to_return(json_response('achievements.json'))
|
53
|
+
|
54
|
+
achievements = @client.achievements(@gamertag, 100)
|
55
|
+
expect(achievements.first.unlock_date).to eq('1370919805')
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'helper'
|
3
|
+
|
4
|
+
describe Faraday::Response do
|
5
|
+
before do
|
6
|
+
@client = Gamertag::Client.new
|
7
|
+
end
|
8
|
+
|
9
|
+
context 'when the friends are private or not found' do
|
10
|
+
it 'raises a Gamertag::FriendsNotFound error' do
|
11
|
+
stub_get('/friends.json?gamertag=belial1984').
|
12
|
+
to_return(json_response('errors/friends_not_found.json'))
|
13
|
+
|
14
|
+
expect {
|
15
|
+
@client.friends('belial1984')
|
16
|
+
}.to raise_error(Gamertag::FriendsNotFound)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'when the gamertag is invalid' do
|
21
|
+
it 'raises a Gamertag::InvalidGamertag error' do
|
22
|
+
stub_get('/profile.json?gamertag=InvalidGamertagHere').
|
23
|
+
to_return(json_response('errors/invalid_gamertag.json'))
|
24
|
+
|
25
|
+
expect {
|
26
|
+
@client.profile('InvalidGamertagHere')
|
27
|
+
}.to raise_error(Gamertag::InvalidGamertag)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when the gamertag is not found' do
|
32
|
+
it 'raises a Gamertag::InvalidGamertag error' do
|
33
|
+
stub_get('/profile.json?gamertag=NoGamertagHere').
|
34
|
+
to_return(json_response('errors/gamertag_not_found.json'))
|
35
|
+
|
36
|
+
expect {
|
37
|
+
@client.profile('NoGamertagHere')
|
38
|
+
}.to raise_error(Gamertag::GamertagNotFound)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'when the game is not valid' do
|
43
|
+
it 'raises a Gamertag::InvalidGameId error' do
|
44
|
+
stub_get('/achievements.json?gameid=lemons&gamertag=belial1984').
|
45
|
+
to_return(json_response('errors/invalid_game_id.json'))
|
46
|
+
|
47
|
+
expect {
|
48
|
+
@client.achievements('belial1984', 'lemons')
|
49
|
+
}.to raise_error(Gamertag::InvalidGameId)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context 'when the game is not valid' do
|
54
|
+
it 'raises a Gamertag::InvalidGameId error' do
|
55
|
+
stub_get('/achievements.json?gamertag=belial1984&gameid=lemons').
|
56
|
+
to_return(json_response('errors/invalid_game_id.json'))
|
57
|
+
|
58
|
+
expect {
|
59
|
+
@client.achievements('belial1984', 'lemons')
|
60
|
+
}.to raise_error(Gamertag::InvalidGameId)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,654 @@
|
|
1
|
+
{
|
2
|
+
"status": "success",
|
3
|
+
"version": "2.0",
|
4
|
+
"data": {
|
5
|
+
"gamertag": "belial1984",
|
6
|
+
"game": "BioShock Infinite",
|
7
|
+
"gamerscore": {
|
8
|
+
"current": 470,
|
9
|
+
"total": 1000
|
10
|
+
},
|
11
|
+
"achievement": {
|
12
|
+
"current": 32,
|
13
|
+
"total": 50
|
14
|
+
},
|
15
|
+
"progress": 64,
|
16
|
+
"lastplayed": "1370905190",
|
17
|
+
"achievements": [
|
18
|
+
{
|
19
|
+
"id": 14,
|
20
|
+
"title": "Should Auld Acquaintance...",
|
21
|
+
"artwork": {
|
22
|
+
"locked": "https://live.xbox.com/tiles/ua/wM/1jc8P2NhbC8WWxoEGlxTWTVkL2FjaC8wL2FiAAAAAVBQUPkjrKU=.jpg",
|
23
|
+
"unlocked": ""
|
24
|
+
},
|
25
|
+
"description": "Unlock 1999 mode.",
|
26
|
+
"gamerscore": 10,
|
27
|
+
"secret": false,
|
28
|
+
"unlocked": true,
|
29
|
+
"unlockdate": "1370919805"
|
30
|
+
},
|
31
|
+
{
|
32
|
+
"id": 11,
|
33
|
+
"title": "Saw the Elephant",
|
34
|
+
"artwork": {
|
35
|
+
"locked": "https://live.xbox.com/tiles/MF/0G/0Tc8P2NhbC9BAhoEGlxTWTVkL2FjaC8wLzg1AAAAAVBQUP4pXSw=.jpg",
|
36
|
+
"unlocked": ""
|
37
|
+
},
|
38
|
+
"description": "Complete the game on Normal difficulty or above.",
|
39
|
+
"gamerscore": 25,
|
40
|
+
"secret": false,
|
41
|
+
"unlocked": true,
|
42
|
+
"unlockdate": "1370919805"
|
43
|
+
},
|
44
|
+
{
|
45
|
+
"id": 12,
|
46
|
+
"title": "Stone Cold Pinkerton",
|
47
|
+
"artwork": {
|
48
|
+
"locked": "https://live.xbox.com/tiles/GL/jg/0Tc8P2NhbC9MAhoEGlxTWTVkL2FjaC8wLzg4AAAAAVBQUP7PuAQ=.jpg",
|
49
|
+
"unlocked": ""
|
50
|
+
},
|
51
|
+
"description": "Complete the game on Hard difficulty or above.",
|
52
|
+
"gamerscore": 50,
|
53
|
+
"secret": false,
|
54
|
+
"unlocked": true,
|
55
|
+
"unlockdate": "1370919805"
|
56
|
+
},
|
57
|
+
{
|
58
|
+
"id": 10,
|
59
|
+
"title": "Tin Soldier",
|
60
|
+
"artwork": {
|
61
|
+
"locked": "https://live.xbox.com/tiles/Fq/zH/0jc8P2NhbC9DAhoEGlxTWTVkL2FjaC8wLzg3AAAAAVBQUP3orAo=.jpg",
|
62
|
+
"unlocked": ""
|
63
|
+
},
|
64
|
+
"description": "Complete the game on Easy difficulty or above.",
|
65
|
+
"gamerscore": 10,
|
66
|
+
"secret": false,
|
67
|
+
"unlocked": true,
|
68
|
+
"unlockdate": "1370919805"
|
69
|
+
},
|
70
|
+
{
|
71
|
+
"id": 52,
|
72
|
+
"title": "Secret Achievement",
|
73
|
+
"artwork": {
|
74
|
+
"locked": "https://live.xbox.com/Content/Images/HiddenAchievement.png",
|
75
|
+
"unlocked": ""
|
76
|
+
},
|
77
|
+
"description": "This is a secret achievement. Unlock it to find out more.",
|
78
|
+
"gamerscore": 25,
|
79
|
+
"secret": true,
|
80
|
+
"unlocked": true,
|
81
|
+
"unlockdate": "1370918665"
|
82
|
+
},
|
83
|
+
{
|
84
|
+
"id": 32,
|
85
|
+
"title": "Strange Bedfellows",
|
86
|
+
"artwork": {
|
87
|
+
"locked": "https://live.xbox.com/tiles/DK/Ut/1Dc8P2NhbC8VWxoEGlxTWTVkL2FjaC8wL2FhAAAAAVBQUPsCpRA=.jpg",
|
88
|
+
"unlocked": ""
|
89
|
+
},
|
90
|
+
"description": "Kill 20 enemies using allies brought in through a Tear.",
|
91
|
+
"gamerscore": 10,
|
92
|
+
"secret": false,
|
93
|
+
"unlocked": true,
|
94
|
+
"unlockdate": "1370913870"
|
95
|
+
},
|
96
|
+
{
|
97
|
+
"id": 8,
|
98
|
+
"title": "Secret Achievement",
|
99
|
+
"artwork": {
|
100
|
+
"locked": "https://live.xbox.com/Content/Images/HiddenAchievement.png",
|
101
|
+
"unlocked": ""
|
102
|
+
},
|
103
|
+
"description": "This is a secret achievement. Unlock it to find out more.",
|
104
|
+
"gamerscore": 25,
|
105
|
+
"secret": true,
|
106
|
+
"unlocked": true,
|
107
|
+
"unlockdate": "1370913340"
|
108
|
+
},
|
109
|
+
{
|
110
|
+
"id": 19,
|
111
|
+
"title": "Street Sweeper",
|
112
|
+
"artwork": {
|
113
|
+
"locked": "https://live.xbox.com/tiles/iB/-k/1zc8P2NhbC9AWxoEGlxTWTVkL2FjaC8wL2E0AAAAAVBQUPjLH5Q=.jpg",
|
114
|
+
"unlocked": ""
|
115
|
+
},
|
116
|
+
"description": "Kill 50 enemies with the Founder China Broom Shotgun or Vox Heater.",
|
117
|
+
"gamerscore": 5,
|
118
|
+
"secret": false,
|
119
|
+
"unlocked": true,
|
120
|
+
"unlockdate": "1370909160"
|
121
|
+
},
|
122
|
+
{
|
123
|
+
"id": 7,
|
124
|
+
"title": "Secret Achievement",
|
125
|
+
"artwork": {
|
126
|
+
"locked": "https://live.xbox.com/Content/Images/HiddenAchievement.png",
|
127
|
+
"unlocked": ""
|
128
|
+
},
|
129
|
+
"description": "This is a secret achievement. Unlock it to find out more.",
|
130
|
+
"gamerscore": 25,
|
131
|
+
"secret": true,
|
132
|
+
"unlocked": true,
|
133
|
+
"unlockdate": "1370801641"
|
134
|
+
},
|
135
|
+
{
|
136
|
+
"id": 20,
|
137
|
+
"title": "Big Game Hunter",
|
138
|
+
"artwork": {
|
139
|
+
"locked": "https://live.xbox.com/tiles/Wk/5E/1Tc8P2NhbC9HAhoEGlxTWTVkL2FjaC8wLzgzAAAAAVBQUPprTkY=.jpg",
|
140
|
+
"unlocked": ""
|
141
|
+
},
|
142
|
+
"description": "Kill 100 enemies with the Founder Huntsman Carbine or Vox Burstgun.",
|
143
|
+
"gamerscore": 5,
|
144
|
+
"secret": false,
|
145
|
+
"unlocked": true,
|
146
|
+
"unlockdate": "1370754706"
|
147
|
+
},
|
148
|
+
{
|
149
|
+
"id": 21,
|
150
|
+
"title": "Loose Cannon",
|
151
|
+
"artwork": {
|
152
|
+
"locked": "https://live.xbox.com/tiles/x6/2o/1Tc8P2NhbC9CAxoEGlxTWTVkL2FjaC8wLzk2AAAAAVBQUPqHrds=.jpg",
|
153
|
+
"unlocked": ""
|
154
|
+
},
|
155
|
+
"description": "Kill 25 enemies with the Paddywhacker Hand Cannon.",
|
156
|
+
"gamerscore": 5,
|
157
|
+
"secret": false,
|
158
|
+
"unlocked": true,
|
159
|
+
"unlockdate": "1370752096"
|
160
|
+
},
|
161
|
+
{
|
162
|
+
"id": 35,
|
163
|
+
"title": "Hazard Pay",
|
164
|
+
"artwork": {
|
165
|
+
"locked": "https://live.xbox.com/tiles/Jx/8v/0zc8P2NhbC8VAhoEGlxTWTVkL2FjaC8wLzhhAAAAAVBQUPwAHzs=.jpg",
|
166
|
+
"unlocked": ""
|
167
|
+
},
|
168
|
+
"description": "Kill 10 enemies by utilizing environmental hazards.",
|
169
|
+
"gamerscore": 25,
|
170
|
+
"secret": false,
|
171
|
+
"unlocked": true,
|
172
|
+
"unlockdate": "1370750740"
|
173
|
+
},
|
174
|
+
{
|
175
|
+
"id": 48,
|
176
|
+
"title": "Grand Largesse",
|
177
|
+
"artwork": {
|
178
|
+
"locked": "https://live.xbox.com/tiles/oP/oC/1zc8P2NhbC9NWxoEGlxTWTVkL2FjaC8wL2E5AAAAAVBQUPgt+rw=.jpg",
|
179
|
+
"unlocked": ""
|
180
|
+
},
|
181
|
+
"description": "Spend $10,000 at the vending machines of Columbia.",
|
182
|
+
"gamerscore": 10,
|
183
|
+
"secret": false,
|
184
|
+
"unlocked": true,
|
185
|
+
"unlockdate": "1370747630"
|
186
|
+
},
|
187
|
+
{
|
188
|
+
"id": 26,
|
189
|
+
"title": "Well Rounded",
|
190
|
+
"artwork": {
|
191
|
+
"locked": "https://live.xbox.com/tiles/9U/6P/0Tc8P2NhbC8SWxoEGlxTWTVkL2FjaC8wL2FmAAAAAVBQUP6gTuk=.jpg",
|
192
|
+
"unlocked": ""
|
193
|
+
},
|
194
|
+
"description": "Hit an enemy with each of the 8 Vigors.",
|
195
|
+
"gamerscore": 10,
|
196
|
+
"secret": false,
|
197
|
+
"unlocked": true,
|
198
|
+
"unlockdate": "1370747495"
|
199
|
+
},
|
200
|
+
{
|
201
|
+
"id": 46,
|
202
|
+
"title": "The Roguish Type",
|
203
|
+
"artwork": {
|
204
|
+
"locked": "https://live.xbox.com/tiles/yb/mP/1jc8P2NhbC9NAxoEGlxTWTVkL2FjaC8wLzk5AAAAAVBQUPmgudU=.jpg",
|
205
|
+
"unlocked": ""
|
206
|
+
},
|
207
|
+
"description": "Have Elizabeth pick 30 locks.",
|
208
|
+
"gamerscore": 25,
|
209
|
+
"secret": false,
|
210
|
+
"unlocked": true,
|
211
|
+
"unlockdate": "1370746856"
|
212
|
+
},
|
213
|
+
{
|
214
|
+
"id": 42,
|
215
|
+
"title": "Kitted Out",
|
216
|
+
"artwork": {
|
217
|
+
"locked": "https://live.xbox.com/tiles/bc/11/0jc8P2NhbC9EWBoEGlxTWTVkL2FjaC8wL2IwAAAAAVBQUP1azXE=.jpg",
|
218
|
+
"unlocked": ""
|
219
|
+
},
|
220
|
+
"description": "Fully upgrade one weapon and one Vigor.",
|
221
|
+
"gamerscore": 10,
|
222
|
+
"secret": false,
|
223
|
+
"unlocked": true,
|
224
|
+
"unlockdate": "1370746135"
|
225
|
+
},
|
226
|
+
{
|
227
|
+
"id": 6,
|
228
|
+
"title": "Secret Achievement",
|
229
|
+
"artwork": {
|
230
|
+
"locked": "https://live.xbox.com/Content/Images/HiddenAchievement.png",
|
231
|
+
"unlocked": ""
|
232
|
+
},
|
233
|
+
"description": "This is a secret achievement. Unlock it to find out more.",
|
234
|
+
"gamerscore": 25,
|
235
|
+
"secret": true,
|
236
|
+
"unlocked": true,
|
237
|
+
"unlockdate": "1370743955"
|
238
|
+
},
|
239
|
+
{
|
240
|
+
"id": 23,
|
241
|
+
"title": "Here Little Piggy",
|
242
|
+
"artwork": {
|
243
|
+
"locked": "https://live.xbox.com/tiles/GL/fL/0zc8P2NhbC9HAxoEGlxTWTVkL2FjaC8wLzkzAAAAAVBQUPzktwQ=.jpg",
|
244
|
+
"unlocked": ""
|
245
|
+
},
|
246
|
+
"description": "Kill 30 enemies with the Founder Pig Volley Gun or Vox Hail Fire.",
|
247
|
+
"gamerscore": 5,
|
248
|
+
"secret": false,
|
249
|
+
"unlocked": true,
|
250
|
+
"unlockdate": "1370743220"
|
251
|
+
},
|
252
|
+
{
|
253
|
+
"id": 25,
|
254
|
+
"title": "Seasoned to Taste",
|
255
|
+
"artwork": {
|
256
|
+
"locked": "https://live.xbox.com/tiles/4V/xp/1jc8P2NhbC9AAxoEGlxTWTVkL2FjaC8wLzk0AAAAAVBQUPlGXP0=.jpg",
|
257
|
+
"unlocked": ""
|
258
|
+
},
|
259
|
+
"description": "Kill 30 enemies with the Peppermill Crank Gun.",
|
260
|
+
"gamerscore": 5,
|
261
|
+
"secret": false,
|
262
|
+
"unlocked": true,
|
263
|
+
"unlockdate": "1370743140"
|
264
|
+
},
|
265
|
+
{
|
266
|
+
"id": 31,
|
267
|
+
"title": "Tear &#039;em a New One",
|
268
|
+
"artwork": {
|
269
|
+
"locked": "https://live.xbox.com/tiles/xP/1n/0Dc8P2NhbC9EWxoEGlxTWTVkL2FjaC8wL2EwAAAAAVBQUP9I-dg=.jpg",
|
270
|
+
"unlocked": ""
|
271
|
+
},
|
272
|
+
"description": "Open 30 Tears.",
|
273
|
+
"gamerscore": 25,
|
274
|
+
"secret": false,
|
275
|
+
"unlocked": true,
|
276
|
+
"unlockdate": "1370742085"
|
277
|
+
},
|
278
|
+
{
|
279
|
+
"id": 5,
|
280
|
+
"title": "Secret Achievement",
|
281
|
+
"artwork": {
|
282
|
+
"locked": "https://live.xbox.com/Content/Images/HiddenAchievement.png",
|
283
|
+
"unlocked": ""
|
284
|
+
},
|
285
|
+
"description": "This is a secret achievement. Unlock it to find out more.",
|
286
|
+
"gamerscore": 10,
|
287
|
+
"secret": true,
|
288
|
+
"unlocked": true,
|
289
|
+
"unlockdate": "1370740665"
|
290
|
+
},
|
291
|
+
{
|
292
|
+
"id": 39,
|
293
|
+
"title": "David &amp; Goliath",
|
294
|
+
"artwork": {
|
295
|
+
"locked": "https://live.xbox.com/tiles/fL/+F/1jc8P2NhbC9FAhoEGlxTWTVkL2FjaC8wLzgxAAAAAVBQUPmqv2A=.jpg",
|
296
|
+
"unlocked": ""
|
297
|
+
},
|
298
|
+
"description": "Kill 20 &quot;Heavy Hitter&quot; enemies.",
|
299
|
+
"gamerscore": 10,
|
300
|
+
"secret": false,
|
301
|
+
"unlocked": true,
|
302
|
+
"unlockdate": "1370740250"
|
303
|
+
},
|
304
|
+
{
|
305
|
+
"id": 4,
|
306
|
+
"title": "Secret Achievement",
|
307
|
+
"artwork": {
|
308
|
+
"locked": "https://live.xbox.com/Content/Images/HiddenAchievement.png",
|
309
|
+
"unlocked": ""
|
310
|
+
},
|
311
|
+
"description": "This is a secret achievement. Unlock it to find out more.",
|
312
|
+
"gamerscore": 10,
|
313
|
+
"secret": true,
|
314
|
+
"unlocked": true,
|
315
|
+
"unlockdate": "1370671703"
|
316
|
+
},
|
317
|
+
{
|
318
|
+
"id": 22,
|
319
|
+
"title": "On a Clear Day...",
|
320
|
+
"artwork": {
|
321
|
+
"locked": "https://live.xbox.com/tiles/Mw/Li/1jc8P2NhbC9MWxoEGlxTWTVkL2FjaC8wL2E4AAAAAVBQUPnNAi8=.jpg",
|
322
|
+
"unlocked": ""
|
323
|
+
},
|
324
|
+
"description": "Kill 30 enemies with the Bird&#039;s Eye Sniper Rifle.",
|
325
|
+
"gamerscore": 5,
|
326
|
+
"secret": false,
|
327
|
+
"unlocked": true,
|
328
|
+
"unlockdate": "1370669978"
|
329
|
+
},
|
330
|
+
{
|
331
|
+
"id": 24,
|
332
|
+
"title": "Master of Pyrotechnics",
|
333
|
+
"artwork": {
|
334
|
+
"locked": "https://live.xbox.com/tiles/cf/RG/0jc8P2NhbC9HWxoEGlxTWTVkL2FjaC8wL2EzAAAAAVBQUP1p9G0=.jpg",
|
335
|
+
"unlocked": ""
|
336
|
+
},
|
337
|
+
"description": "Kill 20 enemies with the Barnstormer RPG.",
|
338
|
+
"gamerscore": 5,
|
339
|
+
"secret": false,
|
340
|
+
"unlocked": true,
|
341
|
+
"unlockdate": "1370669783"
|
342
|
+
},
|
343
|
+
{
|
344
|
+
"id": 27,
|
345
|
+
"title": "Vigorous Opposition",
|
346
|
+
"artwork": {
|
347
|
+
"locked": "https://live.xbox.com/tiles/07/9O/0jc8P2NhbC8QWxoEGlxTWTVkL2FjaC8wL2FkAAAAAVBQUP1hv88=.jpg",
|
348
|
+
"unlocked": ""
|
349
|
+
},
|
350
|
+
"description": "Kill 75 enemies either with a Vigor or while the enemy is under the effects of a Vigor.",
|
351
|
+
"gamerscore": 50,
|
352
|
+
"secret": false,
|
353
|
+
"unlocked": true,
|
354
|
+
"unlockdate": "1370668598"
|
355
|
+
},
|
356
|
+
{
|
357
|
+
"id": 3,
|
358
|
+
"title": "Secret Achievement",
|
359
|
+
"artwork": {
|
360
|
+
"locked": "https://live.xbox.com/Content/Images/HiddenAchievement.png",
|
361
|
+
"unlocked": ""
|
362
|
+
},
|
363
|
+
"description": "This is a secret achievement. Unlock it to find out more.",
|
364
|
+
"gamerscore": 10,
|
365
|
+
"secret": true,
|
366
|
+
"unlocked": true,
|
367
|
+
"unlockdate": "1370668548"
|
368
|
+
},
|
369
|
+
{
|
370
|
+
"id": 41,
|
371
|
+
"title": "Dress for Success",
|
372
|
+
"artwork": {
|
373
|
+
"locked": "https://live.xbox.com/tiles/cq/SJ/1zc8P2NhbC9BAxoEGlxTWTVkL2FjaC8wLzk1AAAAAVBQUPimpG4=.jpg",
|
374
|
+
"unlocked": ""
|
375
|
+
},
|
376
|
+
"description": "Equip a piece of Gear in each of the four slots.",
|
377
|
+
"gamerscore": 5,
|
378
|
+
"secret": false,
|
379
|
+
"unlocked": true,
|
380
|
+
"unlockdate": "1370663072"
|
381
|
+
},
|
382
|
+
{
|
383
|
+
"id": 49,
|
384
|
+
"title": "Coins in the Cushion",
|
385
|
+
"artwork": {
|
386
|
+
"locked": "https://live.xbox.com/tiles/Ze/ag/1Tc8P2NhbC8VAxoEGlxTWTVkL2FjaC8wLzlhAAAAAVBQUPqP5nk=.jpg",
|
387
|
+
"unlocked": ""
|
388
|
+
},
|
389
|
+
"description": "Loot 200 containers.",
|
390
|
+
"gamerscore": 10,
|
391
|
+
"secret": false,
|
392
|
+
"unlocked": true,
|
393
|
+
"unlockdate": "1370661473"
|
394
|
+
},
|
395
|
+
{
|
396
|
+
"id": 2,
|
397
|
+
"title": "Secret Achievement",
|
398
|
+
"artwork": {
|
399
|
+
"locked": "https://live.xbox.com/Content/Images/HiddenAchievement.png",
|
400
|
+
"unlocked": ""
|
401
|
+
},
|
402
|
+
"description": "This is a secret achievement. Unlock it to find out more.",
|
403
|
+
"gamerscore": 10,
|
404
|
+
"secret": true,
|
405
|
+
"unlocked": true,
|
406
|
+
"unlockdate": "1370657508"
|
407
|
+
},
|
408
|
+
{
|
409
|
+
"id": 17,
|
410
|
+
"title": "A Real Pistol",
|
411
|
+
"artwork": {
|
412
|
+
"locked": "https://live.xbox.com/tiles/Vw/WH/0Tc8P2NhbC9FWxoEGlxTWTVkL2FjaC8wL2ExAAAAAVBQUP6oBUs=.jpg",
|
413
|
+
"unlocked": ""
|
414
|
+
},
|
415
|
+
"description": "Kill 25 enemies with the Broadsider Pistol.",
|
416
|
+
"gamerscore": 5,
|
417
|
+
"secret": false,
|
418
|
+
"unlocked": true,
|
419
|
+
"unlockdate": "1370655838"
|
420
|
+
},
|
421
|
+
{
|
422
|
+
"id": 1,
|
423
|
+
"title": "Secret Achievement",
|
424
|
+
"artwork": {
|
425
|
+
"locked": "https://live.xbox.com/Content/Images/HiddenAchievement.png",
|
426
|
+
"unlocked": ""
|
427
|
+
},
|
428
|
+
"description": "This is a secret achievement. Unlock it to find out more.",
|
429
|
+
"gamerscore": 5,
|
430
|
+
"secret": true,
|
431
|
+
"unlocked": true,
|
432
|
+
"unlockdate": "1370646878"
|
433
|
+
},
|
434
|
+
{
|
435
|
+
"id": 13,
|
436
|
+
"title": "Auld Lang Syne",
|
437
|
+
"artwork": {
|
438
|
+
"locked": "https://live.xbox.com/tiles/hV/Qn/0zc8P2NhbC9CAhoEGlxTWTVkL2FjaC8wLzg2AAAAAVBQUPwIVJk=.jpg",
|
439
|
+
"unlocked": ""
|
440
|
+
},
|
441
|
+
"description": "Complete the game on 1999 mode.",
|
442
|
+
"gamerscore": 75,
|
443
|
+
"secret": false,
|
444
|
+
"unlocked": false
|
445
|
+
},
|
446
|
+
{
|
447
|
+
"id": 15,
|
448
|
+
"title": "Industrial Accident",
|
449
|
+
"artwork": {
|
450
|
+
"locked": "https://live.xbox.com/tiles/0O/+B/1zc8P2NhbC8WAxoEGlxTWTVkL2FjaC8wLzliAAAAAVBQUPiu78w=.jpg",
|
451
|
+
"unlocked": ""
|
452
|
+
},
|
453
|
+
"description": "Kill 20 enemies with a Sky-Hook Execution.",
|
454
|
+
"gamerscore": 5,
|
455
|
+
"secret": false,
|
456
|
+
"unlocked": false
|
457
|
+
},
|
458
|
+
{
|
459
|
+
"id": 16,
|
460
|
+
"title": "Aerial Assassin",
|
461
|
+
"artwork": {
|
462
|
+
"locked": "https://live.xbox.com/tiles/Qx/dh/1jc8P2NhbC8XAxoEGlxTWTVkL2FjaC8wLzljAAAAAVBQUPlOF18=.jpg",
|
463
|
+
"unlocked": ""
|
464
|
+
},
|
465
|
+
"description": "Kill 20 enemies with a Sky-Line Strike.",
|
466
|
+
"gamerscore": 5,
|
467
|
+
"secret": false,
|
468
|
+
"unlocked": false
|
469
|
+
},
|
470
|
+
{
|
471
|
+
"id": 18,
|
472
|
+
"title": "Passionately Reciprocated",
|
473
|
+
"artwork": {
|
474
|
+
"locked": "https://live.xbox.com/tiles/KQ/Qj/0jc8P2NhbC8RAxoEGlxTWTVkL2FjaC8wLzllAAAAAVBQUP0MBDU=.jpg",
|
475
|
+
"unlocked": ""
|
476
|
+
},
|
477
|
+
"description": "Kill 150 enemies with the Founder Triple R Machine Gun or Vox Repeater.",
|
478
|
+
"gamerscore": 5,
|
479
|
+
"secret": false,
|
480
|
+
"unlocked": false
|
481
|
+
},
|
482
|
+
{
|
483
|
+
"id": 28,
|
484
|
+
"title": "More for Your Money",
|
485
|
+
"artwork": {
|
486
|
+
"locked": "https://live.xbox.com/tiles/QE/eu/0zc8P2NhbC8RWxoEGlxTWTVkL2FjaC8wL2FlAAAAAVBQUPyBR1w=.jpg",
|
487
|
+
"unlocked": ""
|
488
|
+
},
|
489
|
+
"description": "Lure 3 enemies into a single Vigor trap 5 times.",
|
490
|
+
"gamerscore": 25,
|
491
|
+
"secret": false,
|
492
|
+
"unlocked": false
|
493
|
+
},
|
494
|
+
{
|
495
|
+
"id": 29,
|
496
|
+
"title": "Combination Shock",
|
497
|
+
"artwork": {
|
498
|
+
"locked": "https://live.xbox.com/tiles/Kl/Ts/1zc8P2NhbC8XWxoEGlxTWTVkL2FjaC8wL2FjAAAAAVBQUPjDVDY=.jpg",
|
499
|
+
"unlocked": ""
|
500
|
+
},
|
501
|
+
"description": "Perform all 8 of the Vigor combinations.",
|
502
|
+
"gamerscore": 50,
|
503
|
+
"secret": false,
|
504
|
+
"unlocked": false
|
505
|
+
},
|
506
|
+
{
|
507
|
+
"id": 30,
|
508
|
+
"title": "Mind Over Matter",
|
509
|
+
"artwork": {
|
510
|
+
"locked": "https://live.xbox.com/tiles/uv/zD/0zc8P2NhbC8QAxoEGlxTWTVkL2FjaC8wLzlkAAAAAVBQUPzs-KY=.jpg",
|
511
|
+
"unlocked": ""
|
512
|
+
},
|
513
|
+
"description": "Kill 20 enemies using Possessed machines.",
|
514
|
+
"gamerscore": 10,
|
515
|
+
"secret": false,
|
516
|
+
"unlocked": false
|
517
|
+
},
|
518
|
+
{
|
519
|
+
"id": 33,
|
520
|
+
"title": "On the Fly",
|
521
|
+
"artwork": {
|
522
|
+
"locked": "https://live.xbox.com/tiles/PR/bF/1Tc8P2NhbC9DWxoEGlxTWTVkL2FjaC8wL2E3AAAAAVBQUPrqFiE=.jpg",
|
523
|
+
"unlocked": ""
|
524
|
+
},
|
525
|
+
"description": "Kill 30 enemies while riding a Sky-Line.",
|
526
|
+
"gamerscore": 10,
|
527
|
+
"secret": false,
|
528
|
+
"unlocked": false
|
529
|
+
},
|
530
|
+
{
|
531
|
+
"id": 34,
|
532
|
+
"title": "Bolt From the Blue",
|
533
|
+
"artwork": {
|
534
|
+
"locked": "https://live.xbox.com/tiles/ru/4l/1Dc8P2NhbC9CWxoEGlxTWTVkL2FjaC8wL2E2AAAAAVBQUPsK7rI=.jpg",
|
535
|
+
"unlocked": ""
|
536
|
+
},
|
537
|
+
"description": "Kill 5 enemies with a headshot while riding a Sky-Line.",
|
538
|
+
"gamerscore": 25,
|
539
|
+
"secret": false,
|
540
|
+
"unlocked": false
|
541
|
+
},
|
542
|
+
{
|
543
|
+
"id": 36,
|
544
|
+
"title": "Bon Voyage",
|
545
|
+
"artwork": {
|
546
|
+
"locked": "https://live.xbox.com/tiles/4g/ym/0zc8P2NhbC9GWxoEGlxTWTVkL2FjaC8wL2EyAAAAAVBQUPyJDP4=.jpg",
|
547
|
+
"unlocked": ""
|
548
|
+
},
|
549
|
+
"description": "Kill 20 enemies by knocking them off Columbia.",
|
550
|
+
"gamerscore": 25,
|
551
|
+
"secret": false,
|
552
|
+
"unlocked": false
|
553
|
+
},
|
554
|
+
{
|
555
|
+
"id": 37,
|
556
|
+
"title": "Skeet Shoot",
|
557
|
+
"artwork": {
|
558
|
+
"locked": "https://live.xbox.com/tiles/Wk/Fv/1zc8P2NhbC9MAxoEGlxTWTVkL2FjaC8wLzk4AAAAAVBQUPhAQUY=.jpg",
|
559
|
+
"unlocked": ""
|
560
|
+
},
|
561
|
+
"description": "Kill 5 enemies while they are falling.",
|
562
|
+
"gamerscore": 25,
|
563
|
+
"secret": false,
|
564
|
+
"unlocked": false
|
565
|
+
},
|
566
|
+
{
|
567
|
+
"id": 38,
|
568
|
+
"title": "Lost Weekend",
|
569
|
+
"artwork": {
|
570
|
+
"locked": "https://live.xbox.com/tiles/i0/AA/0Dc8P2NhbC9NAhoEGlxTWTVkL2FjaC8wLzg5AAAAAVBQUP8vQJc=.jpg",
|
571
|
+
"unlocked": ""
|
572
|
+
},
|
573
|
+
"description": "Kill 5 enemies while you are drunk.",
|
574
|
+
"gamerscore": 10,
|
575
|
+
"secret": false,
|
576
|
+
"unlocked": false
|
577
|
+
},
|
578
|
+
{
|
579
|
+
"id": 40,
|
580
|
+
"title": "Heartbreaker",
|
581
|
+
"artwork": {
|
582
|
+
"locked": "https://live.xbox.com/tiles/VF/VI/1Dc8P2NhbC9DAxoEGlxTWTVkL2FjaC8wLzk3AAAAAVBQUPtnVUg=.jpg",
|
583
|
+
"unlocked": ""
|
584
|
+
},
|
585
|
+
"description": "Kill a Handyman by only shooting his heart.",
|
586
|
+
"gamerscore": 50,
|
587
|
+
"secret": false,
|
588
|
+
"unlocked": false
|
589
|
+
},
|
590
|
+
{
|
591
|
+
"id": 43,
|
592
|
+
"title": "Raising the Bar",
|
593
|
+
"artwork": {
|
594
|
+
"locked": "https://live.xbox.com/tiles/nA/0C/0Dc8P2NhbC8SAxoEGlxTWTVkL2FjaC8wLzlmAAAAAVBQUP8tDYA=.jpg",
|
595
|
+
"unlocked": ""
|
596
|
+
},
|
597
|
+
"description": "Upgrade one attribute (Health, Shield, or Salts) to its maximum level.",
|
598
|
+
"gamerscore": 10,
|
599
|
+
"secret": false,
|
600
|
+
"unlocked": false
|
601
|
+
},
|
602
|
+
{
|
603
|
+
"id": 44,
|
604
|
+
"title": "Infused with Greatness",
|
605
|
+
"artwork": {
|
606
|
+
"locked": "https://live.xbox.com/tiles/70/dl/1zc8P2NhbC9EAhoEGlxTWTVkL2FjaC8wLzgwAAAAAVBQUPhKR-M=.jpg",
|
607
|
+
"unlocked": ""
|
608
|
+
},
|
609
|
+
"description": "Collect every Infusion upgrade in a single game.",
|
610
|
+
"gamerscore": 25,
|
611
|
+
"secret": false,
|
612
|
+
"unlocked": false
|
613
|
+
},
|
614
|
+
{
|
615
|
+
"id": 45,
|
616
|
+
"title": "Sightseer",
|
617
|
+
"artwork": {
|
618
|
+
"locked": "https://live.xbox.com/tiles/G+/cE/1jc8P2NhbC9BWxoEGlxTWTVkL2FjaC8wL2E1AAAAAVBQUPkr5wc=.jpg",
|
619
|
+
"unlocked": ""
|
620
|
+
},
|
621
|
+
"description": "Use all telescopes and Kinetoscopes in the game.",
|
622
|
+
"gamerscore": 50,
|
623
|
+
"secret": false,
|
624
|
+
"unlocked": false
|
625
|
+
},
|
626
|
+
{
|
627
|
+
"id": 47,
|
628
|
+
"title": "Eavesdropper",
|
629
|
+
"artwork": {
|
630
|
+
"locked": "https://live.xbox.com/tiles/yb/ak/1Dc8P2NhbC9GAhoEGlxTWTVkL2FjaC8wLzgyAAAAAVBQUPuLttU=.jpg",
|
631
|
+
"unlocked": ""
|
632
|
+
},
|
633
|
+
"description": "Collect every Voxophone.",
|
634
|
+
"gamerscore": 50,
|
635
|
+
"secret": false,
|
636
|
+
"unlocked": false
|
637
|
+
},
|
638
|
+
{
|
639
|
+
"id": 50,
|
640
|
+
"title": "Scavenger Hunt",
|
641
|
+
"artwork": {
|
642
|
+
"locked": "https://live.xbox.com/tiles/o6/Xm/0Dc8P2NhbC9AAhoEGlxTWTVkL2FjaC8wLzg0AAAAAVBQUP-Jpb8=.jpg",
|
643
|
+
"unlocked": ""
|
644
|
+
},
|
645
|
+
"description": "Complete the game in 1999 mode without purchasing anything from a Dollar Bill vending machine.",
|
646
|
+
"gamerscore": 75,
|
647
|
+
"secret": false,
|
648
|
+
"unlocked": false
|
649
|
+
}
|
650
|
+
],
|
651
|
+
"freshness": "new"
|
652
|
+
},
|
653
|
+
"runtime": 2.122
|
654
|
+
}
|