diff --git a/code/game_status.js b/code/game_status.js index 2ca37fb5..87e17e5c 100644 --- a/code/game_status.js +++ b/code/game_status.js @@ -1,12 +1,35 @@ // GAME STATUS /////////////////////////////////////////////////////// // MindUnit display + +window.window.updateGameScoreFailCount = 0; + window.updateGameScore = function(data) { if(!data) { window.postAjax('getGameScore', {}, window.updateGameScore); return; } + // hacky - but here is as good as any for a location + // the niantic servers have attempted to obsfucate the client/server protocol, by munging the request parameters + // detecting which munge set should be used is tricky - even the stock site gets it wrong sometimes + // to detect the problem and try a different set is easiest in a place where there's only a single request of that type + // sent at once, and it has no extra parameters. this method matches those requirements + if (data == '{"error": "invalid method params"}' || data.error) { + window.window.updateGameScoreFailCount++; + if (window.window.updateGameScoreFailCount < 5) { + window.activeRequestMungeSet = (window.activeRequestMungeSet+1) % window.requestParameterMunges.length; + console.warn('IITC munge issue - cycling to set '+window.activeRequestMungeSet); + + updateGameScore(); + return; + } else { + console.error('IITC munge issue - and retry limit reached. IITC will likely fail'); + } + } + + window.window.updateGameScoreFailCount = 0; + var r = parseInt(data.result.resistanceScore), e = parseInt(data.result.enlightenedScore); var s = r+e; var rp = r/s*100, ep = e/s*100;