From 78499a0e3ae0d217d9170413a50a83aac6b7258a Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Tue, 26 Nov 2013 16:18:55 +0100 Subject: [PATCH 01/63] use iitcm base theme for share activity --- mobile/AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobile/AndroidManifest.xml b/mobile/AndroidManifest.xml index 2d2b36a5..b6e8b88b 100644 --- a/mobile/AndroidManifest.xml +++ b/mobile/AndroidManifest.xml @@ -90,7 +90,7 @@ android:label="@string/activity_share" android:noHistory="true" android:parentActivityName=".IITC_Mobile" - android:theme="@android:style/Theme.Holo.Light.DarkActionBar"> + android:theme="@style/AppBaseTheme"> From 9090b810c0666557e08e4fbeb682e2cb350cc71f Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Tue, 26 Nov 2013 16:19:52 +0100 Subject: [PATCH 02/63] removed accounts/credential permission since weblogin still doesn't work --- mobile/AndroidManifest.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mobile/AndroidManifest.xml b/mobile/AndroidManifest.xml index b6e8b88b..6bf7c034 100644 --- a/mobile/AndroidManifest.xml +++ b/mobile/AndroidManifest.xml @@ -11,8 +11,10 @@ + From 02ced0df52295a77a96d01383ca7a63380f824d9 Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Tue, 26 Nov 2013 19:28:08 +0100 Subject: [PATCH 03/63] don't declare app theme again and again...use theme from parent (application) --- mobile/AndroidManifest.xml | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/mobile/AndroidManifest.xml b/mobile/AndroidManifest.xml index 6bf7c034..5bf53764 100644 --- a/mobile/AndroidManifest.xml +++ b/mobile/AndroidManifest.xml @@ -28,8 +28,7 @@ android:name=".IITC_Mobile" android:configChanges="orientation|keyboard|keyboardHidden|screenSize" android:label="@string/app_name" - android:launchMode="singleTop" - android:theme="@style/AppBaseTheme"> + android:launchMode="singleTop"> @@ -80,19 +79,16 @@ + android:label="@string/activity_settings"/> + android:label="@string/activity_plugins"/> + android:parentActivityName=".IITC_Mobile"> From 511d7b99c7a1bec2506179532c1aa81bfc38046b Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Thu, 28 Nov 2013 00:31:01 +0000 Subject: [PATCH 04/63] partial update of munge set - it doesn't get things working though --- code/munge.js | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/code/munge.js b/code/munge.js index 0a9af428..cc6c0dbe 100644 --- a/code/munge.js +++ b/code/munge.js @@ -143,6 +143,49 @@ var requestParameterMunges = [ inviteeEmailAddress: 'rye9be4um2t1z5ts', }, + // set 10 - 2013-11-27 + { + 'dashboard.getArtifactInfo': 'artifacts', + 'dashboard.getGameScore': '4oid643d9zc168hs', + 'dashboard.getPaginatedPlextsV2': 's1msyywq51ntudpe', + 'dashboard.getThinnedEntitiesV4': '4467ff9bgxxe4csa', + + 'dashboard.redeemReward': '66l9ivg39ygfqqjm', + 'dashboard.sendInviteEmail': 'cgb7hi5hglv0xx8k', + 'dashboard.sendPlext': 'etn9xq7brd6947kq', + + // common parameters + method: 'yyngyttbmmbuvdpa', + version: 'avz401t36lzrapis', + version_parameter: 'c5d0a5d608f729a1232bebdc12fb86ba5fb6c43f', + + // GET_THINNED_ENTITIES + quadKeys: '1mpmxz2yun22rwnn', + + // GET_PAGINATED_PLEXTS + desiredNumItems: 'nzd23jqm9k1cnnij', + minLatE6: '0dod6onpa1s4fezp', + minLngE6: 'soass3t7mm7anneo', + maxLatE6: 'cvarmr3o00ngylo1', + maxLngE6: 'udzwnlx07hzd3bfo', + minTimestampMs: '9iiiks138gkf8xho', + maxTimestampMs: '94wm0u3sc3sgzq7x', + chatTab: 'tqfj4a3okzn5v5o1', + ascendingTimestampOrder: '5jv1m90sq35u6utq', + + // SEND_PLEXT + message: '8exta9k7y8huhqmc', + latE6: 'kqek161gza3kjcry', + lngE6: '3dlxsqrjj2vcmhbc', +// chatTab: 'efaznrayv5n3jxs0', //guessed parameter name - only seen munged + + // LOOKUP_PLAYERS + guids: '', + + // SEND_INVITE_EMAIL + inviteeEmailAddress: '8exta9k7y8huhqmc', + }, + ]; From b593eec10e53387e7269564dccce3d90899c78a4 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Thu, 28 Nov 2013 15:06:41 +0000 Subject: [PATCH 05/63] website: add news of severe IITC breakage --- website/page/home.php | 20 ++++++++++++++++++++ website/page/news.php | 20 ++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/website/page/home.php b/website/page/home.php index 077d5d1e..657d37b1 100644 --- a/website/page/home.php +++ b/website/page/home.php @@ -13,6 +13,26 @@ offers many more features. It is available for

Latest news

+
+

27th November 2013

+

+IITC and IITC Mobile are currently broken, due to changes made to the standard intel website. This is a major change in how +portal details are sent, with most of the extra data that the standard site didn't use being removed. +

+

+This is not something simple to fix, and will take some time. Also, it severely cripples what IITC can do, as using this +extra data, not displayed by the standard site, was it's big feature. +

+

+We will look into what can be done to get it working again, but it will take some time. Many plugins won't be practical +as the data will not be available. +

+

+More details, and discussion, available in the +Google+ post. +

+
+

11th November 2013

IITC 0.15.0 and IITC Mobile 0.9 have just been released. This update fixes things to work with the latest changes diff --git a/website/page/news.php b/website/page/news.php index d8fd58e0..42b52e8f 100644 --- a/website/page/news.php +++ b/website/page/news.php @@ -1,5 +1,25 @@

News

+
+

27th November 2013

+

+IITC and IITC Mobile are currently broken, due to changes made to the standard intel website. This is a major change in how +portal details are sent, with most of the extra data that the standard site didn't use being removed. +

+

+This is not something simple to fix, and will take some time. Also, it severely cripples what IITC can do, as using this +extra data, not displayed by the standard site, was it's big feature. +

+

+We will look into what can be done to get it working again, but it will take some time. Many plugins won't be practical +as the data will not be available. +

+

+More details, and discussion, available in the +Google+ post. +

+
+

11th November 2013

IITC 0.15.0 and IITC Mobile 0.9 have just been released. This update fixes things to work with the latest changes From 20dba803eb80aafb97614fa39776ba783fd60eb8 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Fri, 29 Nov 2013 19:16:19 +0000 Subject: [PATCH 06/63] website: minor fix --- website/page/home.php | 2 +- website/page/news.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/website/page/home.php b/website/page/home.php index 657d37b1..748294da 100644 --- a/website/page/home.php +++ b/website/page/home.php @@ -21,7 +21,7 @@ portal details are sent, with most of the extra data that the standard site didn

This is not something simple to fix, and will take some time. Also, it severely cripples what IITC can do, as using this -extra data, not displayed by the standard site, was it's big feature. +extra data, not displayed by the standard site, was its big feature.

We will look into what can be done to get it working again, but it will take some time. Many plugins won't be practical diff --git a/website/page/news.php b/website/page/news.php index 42b52e8f..bb0b5b36 100644 --- a/website/page/news.php +++ b/website/page/news.php @@ -8,7 +8,7 @@ portal details are sent, with most of the extra data that the standard site didn

This is not something simple to fix, and will take some time. Also, it severely cripples what IITC can do, as using this -extra data, not displayed by the standard site, was it's big feature. +extra data, not displayed by the standard site, was it' big feature.

We will look into what can be done to get it working again, but it will take some time. Many plugins won't be practical From 5bd796dd539002ee9be8f733b513c6392778c913 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 30 Nov 2013 01:29:13 +0000 Subject: [PATCH 07/63] deleted the existing JSON examples - many were out of date added a new request and response example for map data - more to come for other requests --- json_examples/chat_faction.js | 1684 ----- json_examples/chat_public.js | 2778 -------- json_examples/chat_public_decay_msg.js | 49 - json_examples/chat_send_message.js | 13 - json_examples/field_json.js | 39 - json_examples/get_thinned_entities-request.js | 20 + .../get_thinned_entities-response.js | 5861 +++++++++++++++++ json_examples/link_json.js | 25 - json_examples/portal_json.js | 162 - json_examples/redeeming.js | 1998 ------ 10 files changed, 5881 insertions(+), 6748 deletions(-) delete mode 100644 json_examples/chat_faction.js delete mode 100644 json_examples/chat_public.js delete mode 100644 json_examples/chat_public_decay_msg.js delete mode 100644 json_examples/chat_send_message.js delete mode 100644 json_examples/field_json.js create mode 100644 json_examples/get_thinned_entities-request.js create mode 100644 json_examples/get_thinned_entities-response.js delete mode 100644 json_examples/link_json.js delete mode 100644 json_examples/portal_json.js delete mode 100644 json_examples/redeeming.js diff --git a/json_examples/chat_faction.js b/json_examples/chat_faction.js deleted file mode 100644 index 63d87196..00000000 --- a/json_examples/chat_faction.js +++ /dev/null @@ -1,1684 +0,0 @@ -// http://www.ingress.com/rpc/dashboard.getPaginatedPlextsV2 - - -{ - "desiredNumItems": 50, - "minLatE6": 40741043, - "minLngE6": -73998640, - "maxLatE6": 40743335, - "maxLngE6": -73988732, - "minTimestampMs": -1, - "maxTimestampMs": -1, - "factionOnly": true, - "method": "dashboard.getPaginatedPlextsV2" -} - -//////////////////////////////////////////////////////////////////////// - - - -{ - "gameBasket": { - "deletedEntityGuids": [ - - ], - "gameEntities": [ - - ], - "inventory": [ - - ] - }, - "result": [ - [ - "0a4fbc5b22e248c081d1aca0f6a8d6e6.d", - 1359738394081, - { - "plext": { - "text": "[secure] mugenity: @RedJava lol. whoever asked about the gloves: http:\/\/www.amazon.com\/gp\/product\/B004A9FI2M\/ref=oh_details_o02_s00_i01", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "mugenity: ", - "guid": "30ac5ca1f9374a0aab7c5e07b7c2a9c4.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "@RedJava lol. whoever asked about the gloves: http:\/\/www.amazon.com\/gp\/product\/B004A9FI2M\/ref=oh_details_o02_s00_i01" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "cfcc2f1a80234dda9c579cd99ed8afe0.d", - 1359737693952, - { - "plext": { - "text": "[secure] RedJava: @mugenity, pockets... :)", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "RedJava: ", - "guid": "540bf690bad2498b912e17b3f01c38b4.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "@mugenity, pockets... :)" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "89a7286c798348feaccbc46ff51c6cc7.d", - 1359737651334, - { - "plext": { - "text": "[secure] RedJava: congrats @virusdave, keep it going :)", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "RedJava: ", - "guid": "540bf690bad2498b912e17b3f01c38b4.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "congrats @virusdave, keep it going :)" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "485cc59b7b7a41a488b187b40245a29d.d", - 1359737024166, - { - "plext": { - "text": "[secure] virusdave: Awesome. Only 5k AP needed now for L5. can't wait", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "virusdave: ", - "guid": "4ec3807d4a844d99b9f8b5d3cdbe7c11.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "Awesome. Only 5k AP needed now for L5. can't wait" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "12d4b93fc04c454281e8ea39174a6a42.d", - 1359735962735, - { - "plext": { - "text": "[secure] mugenity: jw, what makes a pair of gloves wind resistant?", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "mugenity: ", - "guid": "30ac5ca1f9374a0aab7c5e07b7c2a9c4.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "jw, what makes a pair of gloves wind resistant?" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "d1b95ec50a884c01af862b17b19fc776.d", - 1359735479320, - { - "plext": { - "text": "[secure] Callido: Any recommendations about where to get some wind-resistant touch screen gloves?", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "Callido: ", - "guid": "70c610a61845492ea74e41c8a60d2959.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "Any recommendations about where to get some wind-resistant touch screen gloves?" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "506dfb88cdf2434ea7234d66d51b29f5.d", - 1359732787577, - { - "plext": { - "text": "[secure] FudoMyoo: @beave IM working w a vendor watching the portal under my feet taken over", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "FudoMyoo: ", - "guid": "3d1814fb8bb54da59752a3915c461821.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "@beave IM working w a vendor watching the portal under my feet taken over" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "d3fac8bedabc4a239dcd84dd96b65f93.d", - 1359729709521, - { - "plext": { - "text": "[secure] TDP4: burb, don't burnout.. take 4hrs", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "TDP4: ", - "guid": "8a6f5675e3ff40f18ce187542c08f512.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "burb, don't burnout.. take 4hrs" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "d7991e7234864c0ca3cfef9dad85f960.d", - 1359723996559, - { - "plext": { - "text": "[secure] FudoMyoo: fucking GPS!!!!", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "FudoMyoo: ", - "guid": "3d1814fb8bb54da59752a3915c461821.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "fucking GPS!!!!" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "27697728f5d44d5fb866a49e357e5bf1.d", - 1359692564716, - { - "plext": { - "text": "[secure] Emil2015: grats @auhem", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "Emil2015: ", - "guid": "450b292d66b945b8b89eeb05639116c9.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "grats @auhem" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "8c18f4b07ec94ae9a20b8bcb355944c7.d", - 1359692540191, - { - "plext": { - "text": "[secure] Emil2015: Is anyone at GCT? There are a ton of open portals", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "Emil2015: ", - "guid": "450b292d66b945b8b89eeb05639116c9.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "Is anyone at GCT? There are a ton of open portals" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "9a783ab8dc664aaa919daaebc5e95b99.d", - 1359690718559, - { - "plext": { - "text": "[secure] auhem: @skynet I know that feels... my new phone is on the way, hopefully it helps", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "auhem: ", - "guid": "8ac6001cf25e4d3f8d20746987d5066b.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "@skynet I know that feels... my new phone is on the way, hopefully it helps" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "3f9935c304dd4e1c942369d04a6d96f9.d", - 1359689755829, - { - "plext": { - "text": "[secure] auhem: ding! level 7", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "auhem: ", - "guid": "8ac6001cf25e4d3f8d20746987d5066b.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "ding! level 7" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "2918132884514ba9beaac5238d34fb86.d", - 1359684807471, - { - "plext": { - "text": "[secure] Hankyman: if anyone's around gct, theres two wakened smurfs", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "Hankyman: ", - "guid": "73810de556874d9996110e3623d143af.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "if anyone's around gct, theres two wakened smurfs" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "84ca9ae8a0ca42b79570422756aa0537.d", - 1359683560897, - { - "plext": { - "text": "[secure] Hankyman: I hate the lag", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "Hankyman: ", - "guid": "73810de556874d9996110e3623d143af.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "I hate the lag" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "446cc5818cda4f61b68205819beeb50b.d", - 1359683458462, - { - "plext": { - "text": "[secure] Hankyman: anti", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "Hankyman: ", - "guid": "73810de556874d9996110e3623d143af.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "anti" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "93a93596579241819c297e21d91beae7.d", - 1359682016348, - { - "plext": { - "text": "[secure] ginerc: plenty of portals to upgrade and link in USQ. ", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "ginerc: ", - "guid": "6783774795e64a18800b7355088345e5.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "plenty of portals to upgrade and link in USQ. " - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "206d58dcffec41bba49ac91b1f3dc3c5.d", - 1359681090077, - { - "plext": { - "text": "[secure] ginerc: in USQ now. Anyone else here? ", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "ginerc: ", - "guid": "6783774795e64a18800b7355088345e5.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "in USQ now. Anyone else here? " - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "41f3e66054ad4da5ba8b45d2218d4a7f.d", - 1359680539414, - { - "plext": { - "text": "[secure] ginerc: just leaving. What's up. ", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "ginerc: ", - "guid": "6783774795e64a18800b7355088345e5.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "just leaving. What's up. " - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "d3ddded0969742979548758342fa8ac8.d", - 1359680463400, - { - "plext": { - "text": "[secure] Hankyman: you at gct gineric?", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "Hankyman: ", - "guid": "73810de556874d9996110e3623d143af.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "you at gct gineric?" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "ad505fe8acd14b4e865c190bd43127c0.d", - 1359680395047, - { - "plext": { - "text": "[secure] ginerc: plenty of portals to fill up and link at GCT. ", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "ginerc: ", - "guid": "6783774795e64a18800b7355088345e5.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "plenty of portals to fill up and link at GCT. " - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "f0540423a99b466cbaab4a2ab70734bb.d", - 1359678947425, - { - "plext": { - "text": "[secure] ginerc: I think I'll probably be in USQ in about 20 minutes, there will hopefully be room for a lot of cleanup and relinking if anyone is interested in joining.", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "ginerc: ", - "guid": "6783774795e64a18800b7355088345e5.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "I think I'll probably be in USQ in about 20 minutes, there will hopefully be room for a lot of cleanup and relinking if anyone is interested in joining." - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "02a5f1be2c224f81a31ae42e7d61ff82.d", - 1359678514518, - { - "plext": { - "text": "[secure] RedJava: LOL @kravmagirl... ", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "RedJava: ", - "guid": "540bf690bad2498b912e17b3f01c38b4.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "LOL @kravmagirl... " - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "b60f44964522483ca718bd268942b6db.d", - 1359672802372, - { - "plext": { - "text": "[secure] ANZIBANONZI: @chair, was having data prob s had to go uptown. sorry!!", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "ANZIBANONZI: ", - "guid": "a0cd0fb4055a4edeafbff86a3ab04aab.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "@chair, was having data prob s had to go uptown. sorry!!" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "bbf48761a6ed4e4c96e43bb2f2c4e97a.d", - 1359671773199, - { - "plext": { - "text": "[secure] damonj: Something's definitely wrong with the Ingress servers right now. I tried to link a portal 10 times before it would actually take.", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "damonj: ", - "guid": "bc3d202c10b5432da83be18fddbc322d.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "Something's definitely wrong with the Ingress servers right now. I tried to link a portal 10 times before it would actually take." - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "2cda3a29bf66496ca84c3325be60478e.d", - 1359671502617, - { - "plext": { - "text": "[secure] BlueElephant: anyone going to be around times square at 6pm?", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "BlueElephant: ", - "guid": "40c78d9fa6af4a458d6ade9ca71fde23.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "anyone going to be around times square at 6pm?" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "2044471d695b416a9ed15a6826d8f524.d", - 1359668629533, - { - "plext": { - "text": "[secure] FudoMyoo: yes, @src , giving portals back that were taken", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "FudoMyoo: ", - "guid": "3d1814fb8bb54da59752a3915c461821.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "yes, @src , giving portals back that were taken" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "bd16559564e54820bb4edff5c814a8b8.d", - 1359668578567, - { - "plext": { - "text": "[secure] Phatstabley: G+ NYC Community Approval Code: 550", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "Phatstabley: ", - "guid": "5355c450d89e41afb6011adad0b460e6.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "G+ NYC Community Approval Code: 550" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "3b2e3265ef134aa2ac4b0f7047161311.d", - 1359667522232, - { - "plext": { - "text": "[secure] CrimsonBlitz: im neat gct i just cant leave work yet ..... -_-", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "CrimsonBlitz: ", - "guid": "f473bd6471ee4c6fbdc46e76dd7b523e.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "im neat gct i just cant leave work yet ..... -_-" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "d45c0ee13d4c4ff185097e7df70c2531.d", - 1359667248229, - { - "plext": { - "text": "[secure] 9ah: It's currently being hit ", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "9ah: ", - "guid": "5d7bac2085394e2db5d75ced3cdaa082.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "It's currently being hit " - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "43df5648fb8342678e0ca99d048fa342.d", - 1359667224808, - { - "plext": { - "text": "[secure] 9ah: Anyone near GCT??", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "9ah: ", - "guid": "5d7bac2085394e2db5d75ced3cdaa082.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "Anyone near GCT??" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "be8e0d05549e4f559d6680d2f6317df9.d", - 1359666813847, - { - "plext": { - "text": "[secure] CrimsonBlitz: my car is in bayside lol", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "CrimsonBlitz: ", - "guid": "f473bd6471ee4c6fbdc46e76dd7b523e.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "my car is in bayside lol" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "30a52410520a4d19b6696512da20de2a.d", - 1359666500300, - { - "plext": { - "text": "[secure] Ruse: Just checking out y'alls portal situation in NYC. Wowzers item farming heaven.", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "Ruse: ", - "guid": "67410f3a2ab64ecdb40a1fc82222273b.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "Just checking out y'alls portal situation in NYC. Wowzers item farming heaven." - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "f1a4a31e92e54fb3954cbf0032e15e2a.d", - 1359663805907, - { - "plext": { - "text": "[secure] ginerc: @axelslash, brown jacket? ", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "ginerc: ", - "guid": "6783774795e64a18800b7355088345e5.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "@axelslash, brown jacket? " - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "1a6e283c06bb4e0dab3aadf7b09e5fe3.d", - 1359663365489, - { - "plext": { - "text": "[secure] FudoMyoo: @vjfzuib9 did you not register with a gmail address? If you have an android, a google account is a benefit. If you have a google account, you already have G+", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "FudoMyoo: ", - "guid": "3d1814fb8bb54da59752a3915c461821.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "@vjfzuib9 did you not register with a gmail address? If you have an android, a google account is a benefit. If you have a google account, you already have G+" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "46a6a6f249594703b578092f86ef87a4.d", - 1359657408606, - { - "plext": { - "text": "[secure] RedJava: please see G+ NYC Community for details, if you're not a member please request to join", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "RedJava: ", - "guid": "540bf690bad2498b912e17b3f01c38b4.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "please see G+ NYC Community for details, if you're not a member please request to join" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "ff285a00ea0a4baa950ac2a364282586.d", - 1359657343107, - { - "plext": { - "text": "[secure] RedJava: the nyc enlightened g+ community is hosting a bootcamp this saturday at noon for level 1, 2 and 3 agents, higher level agents welcome to participate in setting up the farm", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "RedJava: ", - "guid": "540bf690bad2498b912e17b3f01c38b4.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "the nyc enlightened g+ community is hosting a bootcamp this saturday at noon for level 1, 2 and 3 agents, higher level agents welcome to participate in setting up the farm" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "f8b8d78de89a425ea5e36dd5b9740e8d.d", - 1359655562381, - { - "plext": { - "text": "[secure] arg0s: G+ NYC Community Approval Code: 395", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "arg0s: ", - "guid": "ab40af6b7e834ba7a3ced6f030036ec1.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "G+ NYC Community Approval Code: 395" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "e305d0dacb35431ab586112661845f64.d", - 1359655448543, - { - "plext": { - "text": "[secure] 9ah: 2 of my portals were destroyed in midtown =[", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "9ah: ", - "guid": "5d7bac2085394e2db5d75ced3cdaa082.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "2 of my portals were destroyed in midtown =[" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "55066b12ca414da4822df53b964ea9db.d", - 1359649928187, - { - "plext": { - "text": "[secure] FudoMyoo: love that, @burb", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "FudoMyoo: ", - "guid": "3d1814fb8bb54da59752a3915c461821.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "love that, @burb" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "cc1fdbe2caa74b14bf930dd206801c44.d", - 1359649393979, - { - "plext": { - "text": "[secure] 9ah: GCT neds some recharges and resonators if anyone is around... I'm going to try to stop by tomorrow night and do a few", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "9ah: ", - "guid": "5d7bac2085394e2db5d75ced3cdaa082.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "GCT neds some recharges and resonators if anyone is around... I'm going to try to stop by tomorrow night and do a few" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "1bc1843b79754dd0a56fd1e493a7ec16.d", - 1359644897075, - { - "plext": { - "text": "[secure] FudoMyoo: vizewl is either out of resonators or is trying to level up - he's linking everything in sight, including L1 portals", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "FudoMyoo: ", - "guid": "3d1814fb8bb54da59752a3915c461821.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "vizewl is either out of resonators or is trying to level up - he's linking everything in sight, including L1 portals" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "64c6af2b8c3646618559690709476611.d", - 1359643051664, - { - "plext": { - "text": "[secure] Avumede: Small Resistance L7 farm in Chelsea. Attack!", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "Avumede: ", - "guid": "bceb200315ec44c9b9d245a7c4528737.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "Small Resistance L7 farm in Chelsea. Attack!" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "493572cc08aa4a47ad01ca379f0bb9c5.d", - 1359642152207, - { - "plext": { - "text": "[secure] Earlskey: 2wg8ingress5r9q", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "Earlskey: ", - "guid": "50490244b39243d78fddfbc044c70cf9.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "2wg8ingress5r9q" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "9caf226782444756bb447be87ab25ff0.d", - 1359606360278, - { - "plext": { - "text": "[secure] Leiron: We'll have some work at GCT tomorrow.", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "Leiron: ", - "guid": "5252e2b28f524c69ae6bbda5015f69e5.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "We'll have some work at GCT tomorrow." - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "0e07903325d04ac981f2aeed72e952de.d", - 1359606326439, - { - "plext": { - "text": "[secure] 9ah: if someone can add resonators to the portal in gcs that would be awesome. my gps flips in there and I was only able to do 3", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "9ah: ", - "guid": "5d7bac2085394e2db5d75ced3cdaa082.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "if someone can add resonators to the portal in gcs that would be awesome. my gps flips in there and I was only able to do 3" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "24da86d5e37c4cd5953a99d1b35d5b67.d", - 1359606010244, - { - "plext": { - "text": "[secure] brianr: hello NYU Agents, see ingress.com\/campus", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "brianr: ", - "guid": "69e0731c8a5f4d04a2d9098743fa4f5a.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "hello NYU Agents, see ingress.com\/campus" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "1a826dba468345e1a4c99c41f315f8f6.d", - 1359603728472, - { - "plext": { - "text": "[secure] 9ah: I used my xmp to get a portal on 35", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "9ah: ", - "guid": "5d7bac2085394e2db5d75ced3cdaa082.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "I used my xmp to get a portal on 35" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "710dbdfcdead4df3a16c4fb59a774203.d", - 1359603695883, - { - "plext": { - "text": "[secure] 9ah: @crimsonblitz there is a portal on park ave and 36 with 3k... if you want to try to take that", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "9ah: ", - "guid": "5d7bac2085394e2db5d75ced3cdaa082.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "@crimsonblitz there is a portal on park ave and 36 with 3k... if you want to try to take that" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ], - [ - "8433ca86ba3e490ca99ecfbb44243f76.d", - 1359603145773, - { - "plext": { - "text": "[secure] CrimsonBlitz: murray hill here i come ", - "markup": [ - [ - "SECURE", - { - "plain": "[secure] " - } - ], - [ - "SENDER", - { - "plain": "CrimsonBlitz: ", - "guid": "f473bd6471ee4c6fbdc46e76dd7b523e.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "murray hill here i come " - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ] - ] -} diff --git a/json_examples/chat_public.js b/json_examples/chat_public.js deleted file mode 100644 index 5f48dcaa..00000000 --- a/json_examples/chat_public.js +++ /dev/null @@ -1,2778 +0,0 @@ -// http://www.ingress.com/rpc/dashboard.getPaginatedPlextsV2 - -// newest chat -{ - "desiredNumItems": 50, - "minLatE6": 40741043, - "minLngE6": -73998640, - "maxLatE6": 40743335, - "maxLngE6": -73988732, - "minTimestampMs": -1, - "maxTimestampMs": -1, - "method": "dashboard.getPaginatedPlextsV2" -} - -// older chat -{ - "desiredNumItems": 50, - "minLatE6": 40741043, - "minLngE6": -73998640, - "maxLatE6": 40743335, - "maxLngE6": -73988732, - "minTimestampMs": -1, - "maxTimestampMs": 1359739560692, - "method": "dashboard.getPaginatedPlextsV2" -} - -//////////////////////////////////////////////////////////////////////// - - - -{ - "gameBasket": { - "deletedEntityGuids": [ - - ], - "gameEntities": [ - - ], - "inventory": [ - - ] - }, - "result": [ - [ - "1c1b35d2570543279fd1551e67362fea.d", - 1359740143004, - { - "plext": { - "text": "Kruxoli linked Beautiful sculpture \"Echo\" by (999 Broadway, Manhattan, NY) to Flatiron District (999 Broadway, Manhattan, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Kruxoli", - "guid": "acf0f0c0735a49fd8c49e8c45826be2c.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " linked " - } - ], - [ - "PORTAL", - { - "name": "Beautiful sculpture \"Echo\" by ", - "plain": "Beautiful sculpture \"Echo\" by (999 Broadway, Manhattan, NY)", - "team": "RESISTANCE", - "latE6": 40741667, - "address": "999 Broadway, Manhattan, NY", - "lngE6": -73988923, - "guid": "9991233462524e029a5c56a835d99176.12" - } - ], - [ - "TEXT", - { - "plain": " to " - } - ], - [ - "PORTAL", - { - "name": "Flatiron District", - "plain": "Flatiron District (999 Broadway, Manhattan, NY)", - "team": "RESISTANCE", - "latE6": 40741591, - "address": "999 Broadway, Manhattan, NY", - "lngE6": -73988584, - "guid": "57ccb37f589d4e1e82e97683f6f7f1e5.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "fa2c111fb0e849398517bdca2fa8678f.d", - 1359740090694, - { - "plext": { - "text": "Kruxoli deployed an L1 Resonator on Jamba Juice 23rd. & 5th. \/ NYC (176 5th Ave. New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Kruxoli", - "guid": "acf0f0c0735a49fd8c49e8c45826be2c.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L1" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Jamba Juice 23rd. & 5th. \/ NYC", - "plain": "Jamba Juice 23rd. & 5th. \/ NYC (176 5th Ave. New York, NY)", - "team": "RESISTANCE", - "latE6": 40741109, - "address": "176 5th Ave. New York, NY", - "lngE6": -73990112, - "guid": "9055e4cb060f4aefa216a1dd63b22ef2.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "bf552990623a4fe1877c8d62a916d87b.d", - 1359740085929, - { - "plext": { - "text": "Kruxoli deployed an L1 Resonator on Jamba Juice 23rd. & 5th. \/ NYC (176 5th Ave. New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Kruxoli", - "guid": "acf0f0c0735a49fd8c49e8c45826be2c.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L1" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Jamba Juice 23rd. & 5th. \/ NYC", - "plain": "Jamba Juice 23rd. & 5th. \/ NYC (176 5th Ave. New York, NY)", - "team": "RESISTANCE", - "latE6": 40741109, - "address": "176 5th Ave. New York, NY", - "lngE6": -73990112, - "guid": "9055e4cb060f4aefa216a1dd63b22ef2.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "5b2130888a9e468a9356487025467e5f.d", - 1359740082437, - { - "plext": { - "text": "Kruxoli deployed an L1 Resonator on Jamba Juice 23rd. & 5th. \/ NYC (176 5th Ave. New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Kruxoli", - "guid": "acf0f0c0735a49fd8c49e8c45826be2c.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L1" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Jamba Juice 23rd. & 5th. \/ NYC", - "plain": "Jamba Juice 23rd. & 5th. \/ NYC (176 5th Ave. New York, NY)", - "team": "RESISTANCE", - "latE6": 40741109, - "address": "176 5th Ave. New York, NY", - "lngE6": -73990112, - "guid": "9055e4cb060f4aefa216a1dd63b22ef2.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "f8770bf7c5bf49d98c4550227d01e4bd.d", - 1359740079439, - { - "plext": { - "text": "Kruxoli deployed an L1 Resonator on Jamba Juice 23rd. & 5th. \/ NYC (176 5th Ave. New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Kruxoli", - "guid": "acf0f0c0735a49fd8c49e8c45826be2c.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L1" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Jamba Juice 23rd. & 5th. \/ NYC", - "plain": "Jamba Juice 23rd. & 5th. \/ NYC (176 5th Ave. New York, NY)", - "team": "RESISTANCE", - "latE6": 40741109, - "address": "176 5th Ave. New York, NY", - "lngE6": -73990112, - "guid": "9055e4cb060f4aefa216a1dd63b22ef2.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "5fa0422b8b644ed78bd42621d1b3d39a.d", - 1359740077310, - { - "plext": { - "text": "Kruxoli deployed an L1 Resonator on Jamba Juice 23rd. & 5th. \/ NYC (176 5th Ave. New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Kruxoli", - "guid": "acf0f0c0735a49fd8c49e8c45826be2c.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L1" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Jamba Juice 23rd. & 5th. \/ NYC", - "plain": "Jamba Juice 23rd. & 5th. \/ NYC (176 5th Ave. New York, NY)", - "team": "RESISTANCE", - "latE6": 40741109, - "address": "176 5th Ave. New York, NY", - "lngE6": -73990112, - "guid": "9055e4cb060f4aefa216a1dd63b22ef2.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "d0e05df882c344f3baf990086ef9a906.d", - 1359740073268, - { - "plext": { - "text": "Kruxoli deployed an L1 Resonator on Jamba Juice 23rd. & 5th. \/ NYC (176 5th Ave. New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Kruxoli", - "guid": "acf0f0c0735a49fd8c49e8c45826be2c.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L1" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Jamba Juice 23rd. & 5th. \/ NYC", - "plain": "Jamba Juice 23rd. & 5th. \/ NYC (176 5th Ave. New York, NY)", - "team": "RESISTANCE", - "latE6": 40741109, - "address": "176 5th Ave. New York, NY", - "lngE6": -73990112, - "guid": "9055e4cb060f4aefa216a1dd63b22ef2.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "c68916b672b2427d9a5d9350fe35b4b4.d", - 1359740070976, - { - "plext": { - "text": "Kruxoli deployed an L1 Resonator on Jamba Juice 23rd. & 5th. \/ NYC (176 5th Ave. New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Kruxoli", - "guid": "acf0f0c0735a49fd8c49e8c45826be2c.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L1" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Jamba Juice 23rd. & 5th. \/ NYC", - "plain": "Jamba Juice 23rd. & 5th. \/ NYC (176 5th Ave. New York, NY)", - "team": "RESISTANCE", - "latE6": 40741109, - "address": "176 5th Ave. New York, NY", - "lngE6": -73990112, - "guid": "9055e4cb060f4aefa216a1dd63b22ef2.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "54f69f32b7cc4adca4bc93168ea8e81e.d", - 1359740062191, - { - "plext": { - "text": "RedJava created a Control Field @New York Grand Central Termina (120 Park Ave, New York, NY) +9 MUs", - "markup": [ - [ - "PLAYER", - { - "plain": "RedJava", - "guid": "540bf690bad2498b912e17b3f01c38b4.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": " created a Control Field @" - } - ], - [ - "PORTAL", - { - "name": "New York Grand Central Termina", - "plain": "New York Grand Central Termina (120 Park Ave, New York, NY)", - "team": "ALIENS", - "latE6": 40751955, - "address": "120 Park Ave, New York, NY", - "lngE6": -73977749, - "guid": "1b6ae36318634814b7f87ef22cfd7254.12" - } - ], - [ - "TEXT", - { - "plain": " +" - } - ], - [ - "TEXT", - { - "plain": "9" - } - ], - [ - "TEXT", - { - "plain": " MUs" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "ALIENS" - } - } - ], - [ - "7b0decc1872b49f782b0e4ef3a207b7b.d", - 1359740062191, - { - "plext": { - "text": "RedJava linked New York Grand Central Termina (120 Park Ave, New York, NY) to Grand Central Terminal, NYC (120 Park Ave, New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "RedJava", - "guid": "540bf690bad2498b912e17b3f01c38b4.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": " linked " - } - ], - [ - "PORTAL", - { - "name": "New York Grand Central Termina", - "plain": "New York Grand Central Termina (120 Park Ave, New York, NY)", - "team": "ALIENS", - "latE6": 40751955, - "address": "120 Park Ave, New York, NY", - "lngE6": -73977749, - "guid": "1b6ae36318634814b7f87ef22cfd7254.12" - } - ], - [ - "TEXT", - { - "plain": " to " - } - ], - [ - "PORTAL", - { - "name": "Grand Central Terminal, NYC", - "plain": "Grand Central Terminal, NYC (120 Park Ave, New York, NY)", - "team": "ALIENS", - "latE6": 40752357, - "address": "120 Park Ave, New York, NY", - "lngE6": -73977460, - "guid": "0c78f3b9a5a44784b1a2cc41ad4afc0d.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "ALIENS" - } - } - ], - [ - "bf366101223647e3a20f3ae399d3ea0f.d", - 1359740061870, - { - "plext": { - "text": "Kruxoli linked Flatiron Building (175 5th Ave, New York, NY) to William H. Seward Statue, Madi (2-16 Madison Ave, Manhattan, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Kruxoli", - "guid": "acf0f0c0735a49fd8c49e8c45826be2c.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " linked " - } - ], - [ - "PORTAL", - { - "name": "Flatiron Building", - "plain": "Flatiron Building (175 5th Ave, New York, NY)", - "team": "RESISTANCE", - "latE6": 40741111, - "address": "175 5th Ave, New York, NY", - "lngE6": -73989722, - "guid": "643dc15b67684b3ea89484a4faa0e851.12" - } - ], - [ - "TEXT", - { - "plain": " to " - } - ], - [ - "PORTAL", - { - "name": "William H. Seward Statue, Madi", - "plain": "William H. Seward Statue, Madi (2-16 Madison Ave, Manhattan, NY)", - "team": "RESISTANCE", - "latE6": 40741205, - "address": "2-16 Madison Ave, Manhattan, NY", - "lngE6": -73988010, - "guid": "7b6bfdb6b7b343909ab07601dab86828.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "38175e61b93b41bb92e02b2581e44e34.d", - 1359740029965, - { - "plext": { - "text": "RedJava linked Grand Central Terminal, NYC (120 Park Ave, New York, NY) to New York - Grand Central Stati (200-222 Park Ave, Manhattan, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "RedJava", - "guid": "540bf690bad2498b912e17b3f01c38b4.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": " linked " - } - ], - [ - "PORTAL", - { - "name": "Grand Central Terminal, NYC", - "plain": "Grand Central Terminal, NYC (120 Park Ave, New York, NY)", - "team": "ALIENS", - "latE6": 40752357, - "address": "120 Park Ave, New York, NY", - "lngE6": -73977460, - "guid": "0c78f3b9a5a44784b1a2cc41ad4afc0d.12" - } - ], - [ - "TEXT", - { - "plain": " to " - } - ], - [ - "PORTAL", - { - "name": "New York - Grand Central Stati", - "plain": "New York - Grand Central Stati (200-222 Park Ave, Manhattan, NY)", - "team": "ALIENS", - "latE6": 40752418, - "address": "200-222 Park Ave, Manhattan, NY", - "lngE6": -73977857, - "guid": "3c41125147214c6998cc4f4d2abf57c8.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "ALIENS" - } - } - ], - [ - "c5fb55d405184e44b8a07e2a3129ef97.d", - 1359740029965, - { - "plext": { - "text": "RedJava created a Control Field @Grand Central Terminal, NYC (120 Park Ave, New York, NY) +7 MUs", - "markup": [ - [ - "PLAYER", - { - "plain": "RedJava", - "guid": "540bf690bad2498b912e17b3f01c38b4.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": " created a Control Field @" - } - ], - [ - "PORTAL", - { - "name": "Grand Central Terminal, NYC", - "plain": "Grand Central Terminal, NYC (120 Park Ave, New York, NY)", - "team": "ALIENS", - "latE6": 40752357, - "address": "120 Park Ave, New York, NY", - "lngE6": -73977460, - "guid": "0c78f3b9a5a44784b1a2cc41ad4afc0d.12" - } - ], - [ - "TEXT", - { - "plain": " +" - } - ], - [ - "TEXT", - { - "plain": "7" - } - ], - [ - "TEXT", - { - "plain": " MUs" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "ALIENS" - } - } - ], - [ - "7cd3d69f60174c0c8afbfbd1e955591c.d", - 1359739983497, - { - "plext": { - "text": "RedJava linked Grand Central Terminal, NYC (120 Park Ave, New York, NY) to Statue of Cornelius Van Der Bi (120 Park Ave, Manhattan, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "RedJava", - "guid": "540bf690bad2498b912e17b3f01c38b4.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": " linked " - } - ], - [ - "PORTAL", - { - "name": "Grand Central Terminal, NYC", - "plain": "Grand Central Terminal, NYC (120 Park Ave, New York, NY)", - "team": "ALIENS", - "latE6": 40752357, - "address": "120 Park Ave, New York, NY", - "lngE6": -73977460, - "guid": "0c78f3b9a5a44784b1a2cc41ad4afc0d.12" - } - ], - [ - "TEXT", - { - "plain": " to " - } - ], - [ - "PORTAL", - { - "name": "Statue of Cornelius Van Der Bi", - "plain": "Statue of Cornelius Van Der Bi (120 Park Ave, Manhattan, NY)", - "team": "ALIENS", - "latE6": 40751924, - "address": "120 Park Ave, Manhattan, NY", - "lngE6": -73978026, - "guid": "1cb40216c4e844e6a63d54549811a1a6.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "ALIENS" - } - } - ], - [ - "3c04f71e7155485796f50f127dce46e7.d", - 1359739953865, - { - "plext": { - "text": "RedJava linked Grand Central Terminal, NYC (120 Park Ave, New York, NY) to Grand Central Terminal (59 E 42nd St, New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "RedJava", - "guid": "540bf690bad2498b912e17b3f01c38b4.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": " linked " - } - ], - [ - "PORTAL", - { - "name": "Grand Central Terminal, NYC", - "plain": "Grand Central Terminal, NYC (120 Park Ave, New York, NY)", - "team": "ALIENS", - "latE6": 40752357, - "address": "120 Park Ave, New York, NY", - "lngE6": -73977460, - "guid": "0c78f3b9a5a44784b1a2cc41ad4afc0d.12" - } - ], - [ - "TEXT", - { - "plain": " to " - } - ], - [ - "PORTAL", - { - "name": "Grand Central Terminal", - "plain": "Grand Central Terminal (59 E 42nd St, New York, NY)", - "team": "ALIENS", - "latE6": 40751935, - "address": "59 E 42nd St, New York, NY", - "lngE6": -73977090, - "guid": "d734a5b2fb5042b4813b9b594d110410.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "ALIENS" - } - } - ], - [ - "b47d069fbee74f9e9bf2762be77a55c6.d", - 1359739952568, - { - "plext": { - "text": "Moonworker linked George Washington Statue (475 Park Ave S, Manhattan, NY) to Triad (459 Park Avenue South, New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Moonworker", - "guid": "b91c1725457f462e9e1f6032f8f9bf94.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " linked " - } - ], - [ - "PORTAL", - { - "name": "George Washington Statue", - "plain": "George Washington Statue (475 Park Ave S, Manhattan, NY)", - "team": "RESISTANCE", - "latE6": 40745500, - "address": "475 Park Ave S, Manhattan, NY", - "lngE6": -73982333, - "guid": "0d29cfae9b5b4f7ba2882b7dd4096622.12" - } - ], - [ - "TEXT", - { - "plain": " to " - } - ], - [ - "PORTAL", - { - "name": "Triad", - "plain": "Triad (459 Park Avenue South, New York, NY)", - "team": "RESISTANCE", - "latE6": 40745591, - "address": "459 Park Avenue South, New York, NY", - "lngE6": -73982622, - "guid": "06cddb0b9aad4455ab37632fbc40cb57.11" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "9fb86d551ed1477b861783f740d96d7c.d", - 1359739941031, - { - "plext": { - "text": "Moonworker deployed an L4 Resonator on George Washington Statue (475 Park Ave S, Manhattan, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Moonworker", - "guid": "b91c1725457f462e9e1f6032f8f9bf94.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L4" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "George Washington Statue", - "plain": "George Washington Statue (475 Park Ave S, Manhattan, NY)", - "team": "RESISTANCE", - "latE6": 40745500, - "address": "475 Park Ave S, Manhattan, NY", - "lngE6": -73982333, - "guid": "0d29cfae9b5b4f7ba2882b7dd4096622.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "c0a307e0fa164a2fa31c0bb35904a2b1.d", - 1359739927693, - { - "plext": { - "text": "Moonworker deployed an L4 Resonator on George Washington Statue (475 Park Ave S, Manhattan, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Moonworker", - "guid": "b91c1725457f462e9e1f6032f8f9bf94.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L4" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "George Washington Statue", - "plain": "George Washington Statue (475 Park Ave S, Manhattan, NY)", - "team": "RESISTANCE", - "latE6": 40745500, - "address": "475 Park Ave S, Manhattan, NY", - "lngE6": -73982333, - "guid": "0d29cfae9b5b4f7ba2882b7dd4096622.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "b1a3a845659941438a5187898289da05.d", - 1359739914992, - { - "plext": { - "text": "Moonworker deployed an L4 Resonator on George Washington Statue (475 Park Ave S, Manhattan, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Moonworker", - "guid": "b91c1725457f462e9e1f6032f8f9bf94.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L4" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "George Washington Statue", - "plain": "George Washington Statue (475 Park Ave S, Manhattan, NY)", - "team": "RESISTANCE", - "latE6": 40745500, - "address": "475 Park Ave S, Manhattan, NY", - "lngE6": -73982333, - "guid": "0d29cfae9b5b4f7ba2882b7dd4096622.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "06e0d0cc3dd94c2ab58bdb7fb532fa09.d", - 1359739912416, - { - "plext": { - "text": "Moonworker deployed an L4 Resonator on George Washington Statue (475 Park Ave S, Manhattan, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Moonworker", - "guid": "b91c1725457f462e9e1f6032f8f9bf94.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L4" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "George Washington Statue", - "plain": "George Washington Statue (475 Park Ave S, Manhattan, NY)", - "team": "RESISTANCE", - "latE6": 40745500, - "address": "475 Park Ave S, Manhattan, NY", - "lngE6": -73982333, - "guid": "0d29cfae9b5b4f7ba2882b7dd4096622.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "05edad5b286b45ffbe4fcb242832b2d4.d", - 1359739909722, - { - "plext": { - "text": "Moonworker deployed an L3 Resonator on George Washington Statue (475 Park Ave S, Manhattan, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Moonworker", - "guid": "b91c1725457f462e9e1f6032f8f9bf94.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L3" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "George Washington Statue", - "plain": "George Washington Statue (475 Park Ave S, Manhattan, NY)", - "team": "RESISTANCE", - "latE6": 40745500, - "address": "475 Park Ave S, Manhattan, NY", - "lngE6": -73982333, - "guid": "0d29cfae9b5b4f7ba2882b7dd4096622.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "44f9a364259e4372bba72fc64dfe1db0.d", - 1359739905952, - { - "plext": { - "text": "Moonworker deployed an L3 Resonator on George Washington Statue (475 Park Ave S, Manhattan, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Moonworker", - "guid": "b91c1725457f462e9e1f6032f8f9bf94.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L3" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "George Washington Statue", - "plain": "George Washington Statue (475 Park Ave S, Manhattan, NY)", - "team": "RESISTANCE", - "latE6": 40745500, - "address": "475 Park Ave S, Manhattan, NY", - "lngE6": -73982333, - "guid": "0d29cfae9b5b4f7ba2882b7dd4096622.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "da5be5ca96d947c7aff13a32294fd706.d", - 1359739902524, - { - "plext": { - "text": "Moonworker deployed an L3 Resonator on George Washington Statue (475 Park Ave S, Manhattan, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Moonworker", - "guid": "b91c1725457f462e9e1f6032f8f9bf94.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L3" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "George Washington Statue", - "plain": "George Washington Statue (475 Park Ave S, Manhattan, NY)", - "team": "RESISTANCE", - "latE6": 40745500, - "address": "475 Park Ave S, Manhattan, NY", - "lngE6": -73982333, - "guid": "0d29cfae9b5b4f7ba2882b7dd4096622.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "ac1919216ade4695bfc30e79b1c1cbfd.d", - 1359739899623, - { - "plext": { - "text": "Moonworker deployed an L3 Resonator on George Washington Statue (475 Park Ave S, Manhattan, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Moonworker", - "guid": "b91c1725457f462e9e1f6032f8f9bf94.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L3" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "George Washington Statue", - "plain": "George Washington Statue (475 Park Ave S, Manhattan, NY)", - "team": "RESISTANCE", - "latE6": 40745500, - "address": "475 Park Ave S, Manhattan, NY", - "lngE6": -73982333, - "guid": "0d29cfae9b5b4f7ba2882b7dd4096622.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "f347717677d04079b93bfc83190dc80d.d", - 1359739899623, - { - "plext": { - "text": "Moonworker captured George Washington Statue (475 Park Ave S, Manhattan, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Moonworker", - "guid": "b91c1725457f462e9e1f6032f8f9bf94.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " captured " - } - ], - [ - "PORTAL", - { - "name": "George Washington Statue", - "plain": "George Washington Statue (475 Park Ave S, Manhattan, NY)", - "team": "RESISTANCE", - "latE6": 40745500, - "address": "475 Park Ave S, Manhattan, NY", - "lngE6": -73982333, - "guid": "0d29cfae9b5b4f7ba2882b7dd4096622.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "07b443a1a3fa4facb4b38caef547b478.d", - 1359739892290, - { - "plext": { - "text": "Moonworker destroyed an L4 Resonator on George Washington Statue (475 Park Ave S, Manhattan, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Moonworker", - "guid": "b91c1725457f462e9e1f6032f8f9bf94.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " destroyed an " - } - ], - [ - "TEXT", - { - "plain": "L4" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "George Washington Statue", - "plain": "George Washington Statue (475 Park Ave S, Manhattan, NY)", - "team": "ALIENS", - "latE6": 40745500, - "address": "475 Park Ave S, Manhattan, NY", - "lngE6": -73982333, - "guid": "0d29cfae9b5b4f7ba2882b7dd4096622.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "69fc7eacadbc42c8ac8dde5c531eff57.d", - 1359739881575, - { - "plext": { - "text": "RedJava linked New York Grand Central Termina (120 Park Ave, New York, NY) to Grand Central Terminal (59 E 42nd St, New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "RedJava", - "guid": "540bf690bad2498b912e17b3f01c38b4.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": " linked " - } - ], - [ - "PORTAL", - { - "name": "New York Grand Central Termina", - "plain": "New York Grand Central Termina (120 Park Ave, New York, NY)", - "team": "ALIENS", - "latE6": 40751955, - "address": "120 Park Ave, New York, NY", - "lngE6": -73977749, - "guid": "1b6ae36318634814b7f87ef22cfd7254.12" - } - ], - [ - "TEXT", - { - "plain": " to " - } - ], - [ - "PORTAL", - { - "name": "Grand Central Terminal", - "plain": "Grand Central Terminal (59 E 42nd St, New York, NY)", - "team": "ALIENS", - "latE6": 40751935, - "address": "59 E 42nd St, New York, NY", - "lngE6": -73977090, - "guid": "d734a5b2fb5042b4813b9b594d110410.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "ALIENS" - } - } - ], - [ - "b3e479a451394a36ba7c094a105a32db.d", - 1359739876443, - { - "plext": { - "text": "objectdescent deployed an L1 Resonator on Lee Young Hee Korea Museum (2 West 32nd Street, New York, NY 10001, United States)", - "markup": [ - [ - "PLAYER", - { - "plain": "objectdescent", - "guid": "3d45bed79759474bb16dab152d0df1cb.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L1" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Lee Young Hee Korea Museum", - "plain": "Lee Young Hee Korea Museum (2 West 32nd Street, New York, NY 10001, United States)", - "team": "RESISTANCE", - "latE6": 40747539, - "address": "2 West 32nd Street, New York, NY 10001, United States", - "lngE6": -73986659, - "guid": "dac65bbe5acf48fe8a16c2b70a2386e3.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "41fad9beafed4982b072f47279cbb556.d", - 1359739871470, - { - "plext": { - "text": "objectdescent deployed an L1 Resonator on Lee Young Hee Korea Museum (2 West 32nd Street, New York, NY 10001, United States)", - "markup": [ - [ - "PLAYER", - { - "plain": "objectdescent", - "guid": "3d45bed79759474bb16dab152d0df1cb.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L1" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Lee Young Hee Korea Museum", - "plain": "Lee Young Hee Korea Museum (2 West 32nd Street, New York, NY 10001, United States)", - "team": "RESISTANCE", - "latE6": 40747539, - "address": "2 West 32nd Street, New York, NY 10001, United States", - "lngE6": -73986659, - "guid": "dac65bbe5acf48fe8a16c2b70a2386e3.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "f816f6838e7445cb9cbd0121068cc003.d", - 1359739862228, - { - "plext": { - "text": "objectdescent deployed an L1 Resonator on Lee Young Hee Korea Museum (2 West 32nd Street, New York, NY 10001, United States)", - "markup": [ - [ - "PLAYER", - { - "plain": "objectdescent", - "guid": "3d45bed79759474bb16dab152d0df1cb.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L1" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Lee Young Hee Korea Museum", - "plain": "Lee Young Hee Korea Museum (2 West 32nd Street, New York, NY 10001, United States)", - "team": "RESISTANCE", - "latE6": 40747539, - "address": "2 West 32nd Street, New York, NY 10001, United States", - "lngE6": -73986659, - "guid": "dac65bbe5acf48fe8a16c2b70a2386e3.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "d1068992815942fe8ce789545a4ce4b0.d", - 1359739861901, - { - "plext": { - "text": "Moonworker destroyed an L5 Resonator on George Washington Statue (475 Park Ave S, Manhattan, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Moonworker", - "guid": "b91c1725457f462e9e1f6032f8f9bf94.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " destroyed an " - } - ], - [ - "TEXT", - { - "plain": "L5" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "George Washington Statue", - "plain": "George Washington Statue (475 Park Ave S, Manhattan, NY)", - "team": "ALIENS", - "latE6": 40745500, - "address": "475 Park Ave S, Manhattan, NY", - "lngE6": -73982333, - "guid": "0d29cfae9b5b4f7ba2882b7dd4096622.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "f3ff26a5c0bd45ae8e0f8f83565effbe.d", - 1359739810883, - { - "plext": { - "text": "objectdescent deployed an L1 Resonator on Zipcar Location (1250 Broadway New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "objectdescent", - "guid": "3d45bed79759474bb16dab152d0df1cb.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L1" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Zipcar Location", - "plain": "Zipcar Location (1250 Broadway New York, NY)", - "team": "RESISTANCE", - "latE6": 40747874, - "address": "1250 Broadway New York, NY", - "lngE6": -73987576, - "guid": "f60bdd59f3cc49d59e46b718a16f93fb.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "895b1e5a7673450c94d6a330307202d6.d", - 1359739797408, - { - "plext": { - "text": "objectdescent deployed an L1 Resonator on Zipcar Location (1250 Broadway New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "objectdescent", - "guid": "3d45bed79759474bb16dab152d0df1cb.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L1" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Zipcar Location", - "plain": "Zipcar Location (1250 Broadway New York, NY)", - "team": "RESISTANCE", - "latE6": 40747874, - "address": "1250 Broadway New York, NY", - "lngE6": -73987576, - "guid": "f60bdd59f3cc49d59e46b718a16f93fb.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "dd58c977f47c471390527b93afca4dbd.d", - 1359739668008, - { - "plext": { - "text": "Kruxoli linked Flatiron District (2-4 W 25th St, Manhattan, NY) to Fifth Avenue Building (200 5th Ave, New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Kruxoli", - "guid": "acf0f0c0735a49fd8c49e8c45826be2c.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " linked " - } - ], - [ - "PORTAL", - { - "name": "Flatiron District", - "plain": "Flatiron District (2-4 W 25th St, Manhattan, NY)", - "team": "RESISTANCE", - "latE6": 40742908, - "address": "2-4 W 25th St, Manhattan, NY", - "lngE6": -73988981, - "guid": "3bcafe2f0ce24df7aea001d7d70ec723.12" - } - ], - [ - "TEXT", - { - "plain": " to " - } - ], - [ - "PORTAL", - { - "name": "Fifth Avenue Building", - "plain": "Fifth Avenue Building (200 5th Ave, New York, NY)", - "team": "RESISTANCE", - "latE6": 40741782, - "address": "200 5th Ave, New York, NY", - "lngE6": -73989538, - "guid": "6c1c5473bacc45c7880846a465314f6b.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "048a3e28017d49d5a26e26608c590613.d", - 1359739625502, - { - "plext": { - "text": "Kruxoli deployed an L1 Resonator on CHRYSLER BUILDING AT BROADWAY, (15 W 24th St, Manhattan, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Kruxoli", - "guid": "acf0f0c0735a49fd8c49e8c45826be2c.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L1" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "CHRYSLER BUILDING AT BROADWAY,", - "plain": "CHRYSLER BUILDING AT BROADWAY, (15 W 24th St, Manhattan, NY)", - "team": "RESISTANCE", - "latE6": 40742377, - "address": "15 W 24th St, Manhattan, NY", - "lngE6": -73989463, - "guid": "1cba9a6c6dd74070b09eaaeb49b5dd14.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "005261bb0cb24c9b9adae2b5e2c77fa8.d", - 1359739619325, - { - "plext": { - "text": "Kruxoli deployed an L1 Resonator on Edith Wharton (14 W 23rd St, New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Kruxoli", - "guid": "acf0f0c0735a49fd8c49e8c45826be2c.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L1" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Edith Wharton", - "plain": "Edith Wharton (14 W 23rd St, New York, NY)", - "team": "RESISTANCE", - "latE6": 40741571, - "address": "14 W 23rd St, New York, NY", - "lngE6": -73990382, - "guid": "d7d95bee06f84a1598271c520ca7df69.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "0d7d40828ec64e9c9279c86db62fb83a.d", - 1359739577089, - { - "plext": { - "text": "Kruxoli deployed an L1 Resonator on CHRYSLER BUILDING AT BROADWAY, (15 W 24th St, Manhattan, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Kruxoli", - "guid": "acf0f0c0735a49fd8c49e8c45826be2c.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L1" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "CHRYSLER BUILDING AT BROADWAY,", - "plain": "CHRYSLER BUILDING AT BROADWAY, (15 W 24th St, Manhattan, NY)", - "team": "RESISTANCE", - "latE6": 40742377, - "address": "15 W 24th St, Manhattan, NY", - "lngE6": -73989463, - "guid": "1cba9a6c6dd74070b09eaaeb49b5dd14.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "2bf9e21cce464f47b3f1c9af138ab105.d", - 1359739574801, - { - "plext": { - "text": "Kruxoli deployed an L1 Resonator on CHRYSLER BUILDING AT BROADWAY, (15 W 24th St, Manhattan, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Kruxoli", - "guid": "acf0f0c0735a49fd8c49e8c45826be2c.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L1" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "CHRYSLER BUILDING AT BROADWAY,", - "plain": "CHRYSLER BUILDING AT BROADWAY, (15 W 24th St, Manhattan, NY)", - "team": "RESISTANCE", - "latE6": 40742377, - "address": "15 W 24th St, Manhattan, NY", - "lngE6": -73989463, - "guid": "1cba9a6c6dd74070b09eaaeb49b5dd14.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "710e45a902ce45ed8d7917c16d2889d3.d", - 1359739560692, - { - "plext": { - "text": "ImportantCeleb linked NY Public Library (476 5th Avenue, New York, NY 10018, United States) to Bryant Park (53-99 West 40th Street, New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "ImportantCeleb", - "guid": "e68695c7444e47aa927017f71b1e1e63.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": " linked " - } - ], - [ - "PORTAL", - { - "name": "NY Public Library", - "plain": "NY Public Library (476 5th Avenue, New York, NY 10018, United States)", - "team": "ALIENS", - "latE6": 40753814, - "address": "476 5th Avenue, New York, NY 10018, United States", - "lngE6": -73983713, - "guid": "6c51507ab365422c885e4e67ccd200ac.12" - } - ], - [ - "TEXT", - { - "plain": " to " - } - ], - [ - "PORTAL", - { - "name": "Bryant Park", - "plain": "Bryant Park (53-99 West 40th Street, New York, NY)", - "team": "ALIENS", - "latE6": 40753567, - "address": "53-99 West 40th Street, New York, NY", - "lngE6": -73984823, - "guid": "95dd5653d43d4f0eba8792d0ad1698b8.11" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "ALIENS" - } - } - ], - [ - "aaf7b9b04b0c41dfb9dcd6360ef2eb06.d", - 1359739459999, - { - "plext": { - "text": "MilesSky deployed an L3 Resonator on Anne Klein (481-485 7th Ave, New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "MilesSky", - "guid": "da579e7053e64e3382dd5e54c384a3fc.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L3" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Anne Klein", - "plain": "Anne Klein (481-485 7th Ave, New York, NY)", - "team": "RESISTANCE", - "latE6": 40752329, - "address": "481-485 7th Ave, New York, NY", - "lngE6": -73989579, - "guid": "8197e8dd0f364f879ff625d9c2d6ec09.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "08458ba908de4022a01e17b52b418a09.d", - 1359739456697, - { - "plext": { - "text": "MilesSky deployed an L3 Resonator on Anne Klein (481-485 7th Ave, New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "MilesSky", - "guid": "da579e7053e64e3382dd5e54c384a3fc.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L3" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Anne Klein", - "plain": "Anne Klein (481-485 7th Ave, New York, NY)", - "team": "RESISTANCE", - "latE6": 40752329, - "address": "481-485 7th Ave, New York, NY", - "lngE6": -73989579, - "guid": "8197e8dd0f364f879ff625d9c2d6ec09.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "90513f52f2654e6cbbe42f0b5c002a35.d", - 1359739447148, - { - "plext": { - "text": "MilesSky deployed an L2 Resonator on Anne Klein (481-485 7th Ave, New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "MilesSky", - "guid": "da579e7053e64e3382dd5e54c384a3fc.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L2" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Anne Klein", - "plain": "Anne Klein (481-485 7th Ave, New York, NY)", - "team": "RESISTANCE", - "latE6": 40752329, - "address": "481-485 7th Ave, New York, NY", - "lngE6": -73989579, - "guid": "8197e8dd0f364f879ff625d9c2d6ec09.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "a1ac073f8c084567b9afbc9f5c41213a.d", - 1359739444919, - { - "plext": { - "text": "MilesSky deployed an L2 Resonator on Anne Klein (481-485 7th Ave, New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "MilesSky", - "guid": "da579e7053e64e3382dd5e54c384a3fc.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L2" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Anne Klein", - "plain": "Anne Klein (481-485 7th Ave, New York, NY)", - "team": "RESISTANCE", - "latE6": 40752329, - "address": "481-485 7th Ave, New York, NY", - "lngE6": -73989579, - "guid": "8197e8dd0f364f879ff625d9c2d6ec09.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "7e0efc8d97ab453fbab7b501b35d0af7.d", - 1359739441966, - { - "plext": { - "text": "MilesSky deployed an L2 Resonator on Anne Klein (481-485 7th Ave, New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "MilesSky", - "guid": "da579e7053e64e3382dd5e54c384a3fc.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L2" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Anne Klein", - "plain": "Anne Klein (481-485 7th Ave, New York, NY)", - "team": "RESISTANCE", - "latE6": 40752329, - "address": "481-485 7th Ave, New York, NY", - "lngE6": -73989579, - "guid": "8197e8dd0f364f879ff625d9c2d6ec09.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "0e81acc113784e7e87c334cbe3325672.d", - 1359739439683, - { - "plext": { - "text": "MilesSky deployed an L1 Resonator on Anne Klein (481-485 7th Ave, New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "MilesSky", - "guid": "da579e7053e64e3382dd5e54c384a3fc.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L1" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Anne Klein", - "plain": "Anne Klein (481-485 7th Ave, New York, NY)", - "team": "RESISTANCE", - "latE6": 40752329, - "address": "481-485 7th Ave, New York, NY", - "lngE6": -73989579, - "guid": "8197e8dd0f364f879ff625d9c2d6ec09.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "78baad15581c4c87acfdc07872a6fbec.d", - 1359739434932, - { - "plext": { - "text": "MilesSky deployed an L1 Resonator on Anne Klein (481-485 7th Ave, New York, NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "MilesSky", - "guid": "da579e7053e64e3382dd5e54c384a3fc.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L1" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Anne Klein", - "plain": "Anne Klein (481-485 7th Ave, New York, NY)", - "team": "RESISTANCE", - "latE6": 40752329, - "address": "481-485 7th Ave, New York, NY", - "lngE6": -73989579, - "guid": "8197e8dd0f364f879ff625d9c2d6ec09.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "003630298d704d72b8d4fa8b25a7b690.d", - 1359739426373, - { - "plext": { - "text": "kurosen created a Control Field @Jamba Juice 5th Ave. & 32nd St. (321 5th Avenue New York, NY) +46 MUs", - "markup": [ - [ - "PLAYER", - { - "plain": "kurosen", - "guid": "050892f9ac5444aaa01760dd2105994a.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " created a Control Field @" - } - ], - [ - "PORTAL", - { - "name": "Jamba Juice 5th Ave. & 32nd St.", - "plain": "Jamba Juice 5th Ave. & 32nd St. (321 5th Avenue New York, NY)", - "team": "RESISTANCE", - "latE6": 40747500, - "address": "321 5th Avenue New York, NY", - "lngE6": -73985300, - "guid": "c97b407d218645f5b0046edc37439b6c.12" - } - ], - [ - "TEXT", - { - "plain": " +" - } - ], - [ - "TEXT", - { - "plain": "46" - } - ], - [ - "TEXT", - { - "plain": " MUs" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "295aacc8827c45fc828c1d867e5b0d37.d", - 1359739426373, - { - "plext": { - "text": "kurosen linked Jamba Juice 5th Ave. & 32nd St. (321 5th Avenue New York, NY) to Duane Reade - MIDTOWN (358 5TH AVE, MANHATTAN NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "kurosen", - "guid": "050892f9ac5444aaa01760dd2105994a.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " linked " - } - ], - [ - "PORTAL", - { - "name": "Jamba Juice 5th Ave. & 32nd St.", - "plain": "Jamba Juice 5th Ave. & 32nd St. (321 5th Avenue New York, NY)", - "team": "RESISTANCE", - "latE6": 40747500, - "address": "321 5th Avenue New York, NY", - "lngE6": -73985300, - "guid": "c97b407d218645f5b0046edc37439b6c.12" - } - ], - [ - "TEXT", - { - "plain": " to " - } - ], - [ - "PORTAL", - { - "name": "Duane Reade - MIDTOWN", - "plain": "Duane Reade - MIDTOWN (358 5TH AVE, MANHATTAN NY)", - "team": "RESISTANCE", - "latE6": 40748599, - "address": "358 5TH AVE, MANHATTAN NY", - "lngE6": -73984592, - "guid": "68794464b83e4f14aa650d9bebc2c6e6.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "9c7876b3b6a842e19dbcda12e9a7f777.d", - 1359739422451, - { - "plext": { - "text": "Kruxoli deployed an L3 Resonator on Duane Reade - FLATIRON (184 5TH AVENUE, MANHATTAN NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Kruxoli", - "guid": "acf0f0c0735a49fd8c49e8c45826be2c.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L3" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Duane Reade - FLATIRON", - "plain": "Duane Reade - FLATIRON (184 5TH AVENUE, MANHATTAN NY)", - "team": "RESISTANCE", - "latE6": 40741370, - "address": "184 5TH AVENUE, MANHATTAN NY", - "lngE6": -73989912, - "guid": "2efda7a59ea54569bdb8624b41718caf.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ], - [ - "7c1bbfb4d4bd4ff18892a178b8416232.d", - 1359739420296, - { - "plext": { - "text": "Kruxoli deployed an L3 Resonator on Duane Reade - FLATIRON (184 5TH AVENUE, MANHATTAN NY)", - "markup": [ - [ - "PLAYER", - { - "plain": "Kruxoli", - "guid": "acf0f0c0735a49fd8c49e8c45826be2c.c", - "team": "RESISTANCE" - } - ], - [ - "TEXT", - { - "plain": " deployed an " - } - ], - [ - "TEXT", - { - "plain": "L3" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Duane Reade - FLATIRON", - "plain": "Duane Reade - FLATIRON (184 5TH AVENUE, MANHATTAN NY)", - "team": "RESISTANCE", - "latE6": 40741370, - "address": "184 5TH AVENUE, MANHATTAN NY", - "lngE6": -73989912, - "guid": "2efda7a59ea54569bdb8624b41718caf.12" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "RESISTANCE" - } - } - ] - ] -} - - - - - - - - - - - - -{ - "gameBasket": { - "deletedEntityGuids": [ - - ], - "gameEntities": [ - - ], - "inventory": [ - - ] - }, - "result": [ - [ - "ca3de97465fb43f2b45ec34ca9cea2de.d", - 1359702662465, - { - "plext": { - "text": "Your L6 Resonator on Universit\u00e4tazeichen Heidelberg (Im Neuenheimer Feld 330, Campus Im Neunheimer Feld, 69120 Heidelberg, Germany) was destroyed by MohSai1r", - "markup": [ - [ - "TEXT", - { - "plain": "Your " - } - ], - [ - "TEXT", - { - "plain": "L6" - } - ], - [ - "TEXT", - { - "plain": " Resonator on " - } - ], - [ - "PORTAL", - { - "name": "Universit\u00e4tazeichen Heidelberg", - "plain": "Universit\u00e4tazeichen Heidelberg (Im Neuenheimer Feld 330, Campus Im Neunheimer Feld, 69120 Heidelberg, Germany)", - "team": "ALIENS", - "latE6": 49418303, - "address": "Im Neuenheimer Feld 330, Campus Im Neunheimer Feld, 69120 Heidelberg, Germany", - "lngE6": 8669490, - "guid": "b6cab1983f5d4795816e0d3ad3af3459.11" - } - ], - [ - "TEXT", - { - "plain": " was destroyed by " - } - ], - [ - "PLAYER", - { - "plain": "MohSai1r", - "guid": "a0c2e839783f4e889ca570e2cd5c7819.c", - "team": "RESISTANCE" - } - ] - ], - "plextType": "SYSTEM_NARROWCAST", - "team": "RESISTANCE" - } - } - ], - [ - "0b511244557349e6ad98a6d9b1332a3d.d", - 1359915357570, - { - "plext": { - "text": "xn37: x", - "markup": [ - [ - "SENDER", - { - "plain": "xn37: ", - "guid": "e015c2eecf2c424e82f375774c9e5446.c", - "team": "ALIENS" - } - ], - [ - "TEXT", - { - "plain": "x" - } - ] - ], - "plextType": "PLAYER_GENERATED", - "team": "ALIENS" - } - } - ] - ] -} diff --git a/json_examples/chat_public_decay_msg.js b/json_examples/chat_public_decay_msg.js deleted file mode 100644 index d7366372..00000000 --- a/json_examples/chat_public_decay_msg.js +++ /dev/null @@ -1,49 +0,0 @@ -[ - "431a30b634394956a16e62954222a37d.d", - 1360634878999, - { - "plext": { - "text": "Control Field @In the fishing village ( Lomse (Oktyabr'skaya ulitsa, 1, Kaliningrad, Kaliningrad Oblast, Russia) has decayed -108 MUs", - "markup": [ - [ - "TEXT", - { - "plain": "Control Field @" - } - ], - [ - "PORTAL", - { - "name": "In the fishing village ( Lomse", - "plain": "In the fishing village ( Lomse (Oktyabr'skaya ulitsa, 1, Kaliningrad, Kaliningrad Oblast, Russia)", - "team": "ALIENS", - "latE6": 54705182, - "address": "Oktyabr'skaya ulitsa, 1, Kaliningrad, Kaliningrad Oblast, Russia", - "lngE6": 20514959, - "guid": "6af16d09fb574c989b7fa09e718585a7.12" - } - ], - [ - "TEXT", - { - "plain": " has decayed -" - } - ], - [ - "TEXT", - { - "plain": "108" - } - ], - [ - "TEXT", - { - "plain": " MUs" - } - ] - ], - "plextType": "SYSTEM_BROADCAST", - "team": "NEUTRAL" - } - } -] diff --git a/json_examples/chat_send_message.js b/json_examples/chat_send_message.js deleted file mode 100644 index 97560ec2..00000000 --- a/json_examples/chat_send_message.js +++ /dev/null @@ -1,13 +0,0 @@ -// http://www.ingress.com/rpc/dashboard.sendPlext - -// posting: -{"message":"x","latE6":73689520,"lngE6":95322756,"factionOnly":true,"method":"dashboard.sendPlext"} - -{"message":"x","latE6":73689520,"lngE6":95322756,"method":"dashboard.sendPlext"} - - -// faction response: -{"gameBasket": {"deletedEntityGuids": [], "gameEntities": [], "inventory": []}, "result": "c709d0aa51664510a43c635d5df919cf.d"} - -// public response: -{"gameBasket": {"deletedEntityGuids": [], "gameEntities": [], "inventory": []}, "result": "1b113466f403499191eae568915b7cc9.d"} diff --git a/json_examples/field_json.js b/json_examples/field_json.js deleted file mode 100644 index ff1fe465..00000000 --- a/json_examples/field_json.js +++ /dev/null @@ -1,39 +0,0 @@ -[ - "98def9ad4f3a4c30908ad1dff5638c6c.b", - 1360156123960, - { - "controllingTeam": { - "team": "RESISTANCE" - }, - "capturedRegion": { - "vertexA": { - "guid": "c2afe403edca4114b8c724a46d23959c.11", - "location": { - "lngE6": 8687448, - "latE6": 49406850 - } - }, - "vertexC": { - "guid": "e1d616018f0647afb985a20fc9d7baa5.11", - "location": { - "lngE6": 8684374, - "latE6": 49408196 - } - }, - "vertexB": { - "guid": "cd4a44d7684e4d40a5754540fd7686b4.11", - "location": { - "lngE6": 8688377, - "latE6": 49406900 - } - } - }, - "entityScore": { - "entityScore": "4" - }, - "creator": { - "creatorGuid": "8d684d38d2654c8b971ff56b9f3c8895.c", - "creationTime": "1360156123445" - } - } -] diff --git a/json_examples/get_thinned_entities-request.js b/json_examples/get_thinned_entities-request.js new file mode 100644 index 00000000..54c00f8a --- /dev/null +++ b/json_examples/get_thinned_entities-request.js @@ -0,0 +1,20 @@ +// a request for map data - note the munged random strings for parameter names, and also +// a set of additional junk parameters that have nothing to do with this request. Only the first +// three entries are relevant - the first is the set of quadkeys for the map tiles, +// the next is the method name, and finally a randomised protocol version parameter + +{ + "1mpmxz2yun22rwnn":[ + "1_32739_21790", + "1_32740_21790", + "1_32741_21790", + "1_32742_21790" + ], + "yyngyttbmmbuvdpa":"4467ff9bgxxe4csa", + "avz401t36lzrapis":"c5d0a5d608f729a1232bebdc12fb86ba5fb6c43f", + "nzd23jqm9k1cnnij":12, + "0dod6onpa1s4fezp":-90000000, + "soass3t7mm7anneo":-180000000, + "cvarmr3o00ngylo1":90000000, + "udzwnlx07hzd3bfo":180000000 +} diff --git a/json_examples/get_thinned_entities-response.js b/json_examples/get_thinned_entities-response.js new file mode 100644 index 00000000..1b31d092 --- /dev/null +++ b/json_examples/get_thinned_entities-response.js @@ -0,0 +1,5861 @@ +// a response to get_thinned_entities. note the vastly trimmed down portal summary data, rather than the full +// portal details sent in previous versions of the API + + +{ + "result":{ + "map":{ + "1_32742_21790":{ + "deletedGameEntityGuids":[ + "7501732989dc4004a86bd4495b664bbd.b", + "a45d224cc1444899ace43ef43c80ab99.b", + "4c4c4b38f8644894b60e957267b6bc4f.b", + "5c63ea938f514e25896b8a2aa39f0692.b", + "3e18aa91165c4a458f22f27636c48395.b", + "d848629d72484e199610a80d43b66df3.b", + "6075a26765cc4506af66416517947257.b", + "899d065260bd4464a376e38ada55d2de.b", + "aaf70c9729154c13aa5f847c9491dde5.9", + "0c19bccb56e4418fa7571fe0a8a2d1c0.9", + "c72ecd698da74ea5a0a0053ec881c6b8.9", + "35caa62f29f0411abdc34a34d0b7cc90.9", + "0f761122f9cd4b4388236f43128a4c86.9", + "59fb111a05d141c884b4e705e8c1ab5c.9", + "6673ac2a0c424d5c90af4ab198d546a6.9", + "1c6757b1666c4e6dab984a261f338fa5.9", + "d7c8741cfc304a61a2e1c837b17708ee.9", + "e92971f8778d4942bb7dd783d7cc4a34.9", + "3df7b5434a0a4e158b7a0e0fa81327d8.9", + "1b31d5d4792241c487c3f55a063c7b3d.9", + "903ca96311db4bde8a0f8239273f49d3.9", + "83fd455452ad4d72a6dec3b444fc20a7.9", + "94c7e110d8fb43f1a78867cf61ff64f1.9" + ], + "gameEntities":[ + [ + "51502606f12c4eaebef135ac5e48c751.16", + 1385766074861, + { + "level":6, + "title":"Regent Arcade House", + "image":"http://lh4.ggpht.com/Q7tg8F9zDIAq9J5d9sJxbG6iFPsd3pkB8AvuAMZsqRmnQLUSo2E7ukxA175I4sT8sS1u3j8pBw_SUF-CtVRC", + "resCount":8, + "latE6":51514835, + "health":85.0, + "team":"RESISTANCE", + "lngE6":-141049, + "type":"portal" + } + ], + [ + "f693d048db644bd6ab10f8f332cdc286.16", + 1385731470196, + { + "level":4, + "title":"The Masons Arms - Maddox Street", + "image":"http://lh5.ggpht.com/prSa1VQdjkf5wdh2ZmU3Wo26eAuOXTuGTSqcxUvQl63bDuZp7mWFATRScaNn1CXzJV4eVVHfkjxPdYwVVPaqxACLmj7zgTx2x48HlBhsHx3fz0OIkw", + "resCount":5, + "latE6":51512787, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-142613, + "type":"portal" + } + ], + [ + "dc2192d231d147f3aa8fb4b7c060bd5b.16", + 1385747494378, + { + "level":6, + "title":"Roman Helmet ", + "image":"http://lh6.ggpht.com/3gck_cCKPIBTAryREX51u9e_E3t_QcH912ri-g9wwufOSmmXdWLsVAlWdeF9t_TcNvh3jlpZQ4ZPIAtpDsM2", + "resCount":8, + "latE6":51514440, + "health":55.0, + "team":"RESISTANCE", + "lngE6":-141353, + "type":"portal" + } + ], + [ + "db954eb71cb949ad94084d790b399fee.16", + 1385730455424, + { + "level":6, + "title":"Major-General William Roy's House", + "image":"http://lh5.ggpht.com/mVy693ZAtdBdeNsHmnzZcWGBqpAal1vOEWIshFkSyWtGiGVBXSlWQnaNp9uP4f1q1mbhtB9XQxALNVWztkRv", + "resCount":8, + "latE6":51514704, + "health":59.0, + "team":"RESISTANCE", + "lngE6":-140773, + "type":"portal" + } + ], + [ + "dfdaae2e28f744ca83ac3a67ae069f2f.16", + 1385729718691, + { + "level":6, + "title":"Liberty London", + "image":"http://lh4.ggpht.com/8P-YjDLIpr9P9TukR9OgRctRJk9Psi4Cg0dB0JsvJ8Df4DPOm-eir4OyTnH58mKOcNaIrcrmO9Vb3E_guqzs", + "resCount":8, + "latE6":51513927, + "health":58.0, + "team":"RESISTANCE", + "lngE6":-140224, + "type":"portal" + } + ], + [ + "471691e68499419e9e1a7f90b9d3929f.12", + 1385767472713, + { + "level":6, + "title":"Liberty's - just off Regent St", + "image":"http://www.panoramio.com/photos/small/10024019.jpg", + "resCount":8, + "latE6":51513861, + "health":67.0, + "team":"RESISTANCE", + "lngE6":-140950, + "type":"portal" + } + ], + [ + "672ecb2577114bd588551dc257543307.12", + 1385730654159, + { + "level":5, + "title":"Churchill & Roosevelt statue, ", + "image":"http://www.panoramio.com/photos/small/785572.jpg", + "resCount":8, + "latE6":51510385, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-142602, + "type":"portal" + } + ], + [ + "b38f452f55d44217a81d4cb361928592.16", + 1385747753597, + { + "level":5, + "title":"Church of the Assumption", + "image":"http://lh5.ggpht.com/lrLGCz1BXNv9olpUyyxdtTpHAgclyTsmHrmBsA0fVPooq2ODCtL-S3Xt3M3DGbGiqVbV9zcuisLznChspRas", + "resCount":8, + "latE6":51511185, + "health":70.0, + "team":"RESISTANCE", + "lngE6":-138099, + "type":"portal" + } + ], + [ + "770fb08acd63484c88931ab98f1c8943.11", + 1385762222391, + { + "level":7, + "title":"Arch on Air St. with Regent St", + "image":"http://lh5.ggpht.com/77hgA4dtbuLsE2WGkyvWdVWj_z4Z18AUKXgtcThpXhebbch16TGwoRQkMUiVtOTc-IQijcOUqsztvcHQbo26COAZv126PIeWK81E5lF2Ji1yEX8", + "resCount":8, + "latE6":51509979, + "health":69.0, + "team":"RESISTANCE", + "lngE6":-136298, + "type":"portal" + } + ], + [ + "7efd900fbc744812b49aab6d0226d2d1.11", + 1385764455820, + { + "level":2, + "title":"Hanover Square - Fountain", + "image":"http://lh6.ggpht.com/TFBzuUVsAcjfDWCNZAeCFBzdA4h9AOPX5zZQG0z9PKv5t0dpqx4-xPDO3mwTZMFdWeyQRBI4lUJbh-8wreLhGofS1YettJJmx1GQUcHCy5sN2MU", + "resCount":3, + "latE6":51514039, + "health":70.0, + "team":"RESISTANCE", + "lngE6":-143862, + "type":"portal" + } + ], + [ + "b0bc7a8edb3343139f47ed3d919a8eed.16", + 1385732830693, + { + "level":3, + "title":"The Spirit of Soho Mural", + "image":"http://lh5.ggpht.com/giuAeMZih_7bmKVw3ANFJxbkAyHIMvdzFhEF4iS_oO3CQtmKahjpJVnXF-CjnFU71kdU1HsSWgWCE0Io57lz", + "resCount":6, + "latE6":51512764, + "health":93.0, + "team":"RESISTANCE", + "lngE6":-138184, + "type":"portal" + } + ], + [ + "33fe90d0a2d04d0db47002285eaf2766.11", + 1385747555742, + { + "level":6, + "title":"Apple Store - Regent Street", + "image":"http://lh3.ggpht.com/UQY7Ckp-hlTVow0Qk6aN64iRUnH6G_8OFQlu96ooS_lslhdt4JnWWlQ2g1Yv_VreqBlJ2o7nznyMhMZwqHxZG12SOPF52Vv_vBnTh9k0bPsqbfR3", + "resCount":8, + "latE6":51514260, + "health":77.0, + "team":"RESISTANCE", + "lngE6":-141839, + "type":"portal" + } + ], + [ + "f40dcd87c4764789a72fecdd97fd4ed4.11", + 1385730481667, + { + "level":6, + "title":"London Palladium Statue", + "image":"http://lh5.ggpht.com/_eJIezwPmZJLqqBwCfndPHWUU7KPylsuburz_gG29nCxJ2buEKB1glCWfMLqJQ1N3YiqlqGsfmbbfgvRYlBeLrWM5WyNZDm6ccixs0wb8NCbv0Q", + "resCount":8, + "latE6":51514522, + "health":58.0, + "team":"RESISTANCE", + "lngE6":-140594, + "type":"portal" + } + ], + [ + "f13c73e60e714ce6b444b4f7ba751e17.11", + 1385747280600, + { + "level":4, + "title":"Golden Square", + "image":"http://lh3.ggpht.com/PgdpWBHdjzY7vRQZs9SQDiTFm9Bfx8PeikHl0eB9DtbUps7b4j-qR8J-2ULcGhqq395nEf9L4YlhdLyDeV_JjfE17Emb3L-__eSMQ1LheDK2MCA", + "resCount":8, + "latE6":51511643, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-137211, + "type":"portal" + } + ], + [ + "51e38ccd210c418e9f74885f6b6e0ae0.16", + 1385729815190, + { + "level":4, + "title":"Canaletto Blue Plaque", + "image":"http://lh3.ggpht.com/HqFZ_klN_JFiSQRuo_IfU03-CXpuLVTtLnTHn1UXacyAMD_oiHraLARRwmZRzJ7gghWkJjrwi_y-PmCRtqZq", + "resCount":8, + "latE6":51512414, + "health":49.0, + "team":"RESISTANCE", + "lngE6":-137537, + "type":"portal" + } + ], + [ + "764aeb38065b47d992e843d4ae77d15d.11", + 1385731498399, + { + "level":3, + "title":"Vogue House, Hanover Square", + "image":"http://lh5.ggpht.com/09fmmo18-rIqt8iYFU9EM1gZefNWBefvOtVahOhxuG0IEweJzI0BUnMfTGejSFc7yVDCCwG1KvW4tjjyum4sr8M_GHy5DYbDfncRQM9X0Zhdhvw", + "resCount":5, + "latE6":51513462, + "health":32.0, + "team":"RESISTANCE", + "lngE6":-143165, + "type":"portal" + } + ], + [ + "01960f90a13c4259b2921bec1fb45b2c.11", + 1385733727598, + { + "level":1, + "title":"Hanover Square - William Pitt Statue", + "image":"http://lh3.ggpht.com/wcExZAABxyfYUUIPMBj5b2Pj7m6Po2jsB3KcpVcxOqEvHj10Fm8yqFehqDtMPqMnT3LnxNQepEK4oDPtNOZZvvilxySX5M0csKbia27jSxM66Qo", + "resCount":1, + "latE6":51513667, + "health":28.0, + "team":"RESISTANCE", + "lngE6":-143707, + "type":"portal" + } + ], + [ + "35276da8f43740a1a06a2b8fe4ec7bef.16", + 1385729718315, + { + "level":5, + "title":"Wagamama Soho", + "image":"http://lh5.ggpht.com/QBxVosO0b7FyHo55g6gDI02WIA0qVa2-kvOLBM4K62FnHOu7XGhUzmu0veE1fl0LZPYmtuUw0m-AiOOuhvNF", + "resCount":8, + "latE6":51512676, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-135865, + "type":"portal" + } + ], + [ + "e60e96f76f2f41c588bb873035223a55.16", + 1385729718400, + { + "level":6, + "title":"Shakespeare's Head", + "image":"http://lh5.ggpht.com/EP8YbP8VVKbgpG1RkL8bEkLVyIsRDn0PYJQecNL3aER9h26ekYJZLBcuDWdSW6f-lRN6AfCn2Vpyc3r11sGJ-g", + "resCount":8, + "latE6":51513650, + "health":64.0, + "team":"RESISTANCE", + "lngE6":-139464, + "type":"portal" + } + ], + [ + "9108f98e201642d5b199a5e80f3634e3.11", + 1385746284838, + { + "level":4, + "title":"Kingly Court", + "image":"http://lh4.ggpht.com/Puh3wxka4oX5ifR_4uwJawzFQWHotWEMJtOV-4fM3FYQcFVAGiwKTpOJqoSW6_S2fMp8c4-eUw9Nsx3h9Ro2yzDjrAkpoRbCAW70wUsUvk5TItxO4w", + "resCount":8, + "latE6":51512628, + "health":76.0, + "team":"RESISTANCE", + "lngE6":-138809, + "type":"portal" + } + ], + [ + "de3bae13ea7a4003a69964bbc491a6a4.16", + 1385714278787, + { + "level":5, + "title":"The Soho Mural ", + "image":"http://lh3.ggpht.com/hNa2CiyMvSQbT9VSwsR4MAIBkzer8-OGlbIcpd3hd5K9M8--ZRtw0HLmwrEdaGaJlhpPkOX9VSzVf9_Mz9YD", + "resCount":8, + "latE6":51514800, + "health":85.0, + "team":"RESISTANCE", + "lngE6":-137032, + "type":"portal" + } + ], + [ + "dbbfe3f544af4659ad4a7388fa77e3d5.12", + 1385753715962, + { + "level":2, + "title":"One Hanover Street", + "image":"http://www.panoramio.com/photos/small/40971120.jpg", + "resCount":8, + "latE6":51513839, + "health":69.0, + "team":"ENLIGHTENED", + "lngE6":-142541, + "type":"portal" + } + ], + [ + "4245331a25a149de8a856f0a40fbb0c3.11", + 1385729815327, + { + "level":5, + "title":"Giant Plug Socket", + "image":"http://lh5.ggpht.com/Sx14w_KJRpxhZ6Xj_4WDgH9HFGn6vBlsBTP4Dnxr58P5MnoXOV7MYCtUneKZV0DsYfbmLFh6oiaAI2BfrtDCjSzUpGboMA1mMBVSlqqQ01bwDSA", + "resCount":8, + "latE6":51513328, + "health":57.0, + "team":"RESISTANCE", + "lngE6":-138063, + "type":"portal" + } + ], + [ + "8bd1e401015d45c68a248cd3888a9f08.11", + 1385747403612, + { + "level":6, + "title":"Broadwick Street Pump", + "image":"http://lh5.ggpht.com/_zR6Ykvgy-qqfD8rKVlBr6ZT12ZjhUcPmvLYy32Kex8m6fXfNOqJ7brhSU2JYmJMSXcKW3eGm1beVHIxMDZTBu1v6Ig7rcMlOxc2-Vr-vp_NKvAl", + "resCount":8, + "latE6":51513504, + "health":70.0, + "team":"RESISTANCE", + "lngE6":-136200, + "type":"portal" + } + ], + [ + "cdd3a54085a547f2a7320af688888f09.16", + 1385748399688, + { + "level":1, + "title":"Browns Bar", + "image":"http://lh4.ggpht.com/Dv6lYs0UMXlGklEJhtQNE4q_35ZkQooCtaK13ZOyJUAWEMvOLsJY24ZGkUhljiAeZsdsh916b4tDb8CGcSE", + "resCount":3, + "latE6":51512414, + "health":25.0, + "team":"ENLIGHTENED", + "lngE6":-143827, + "type":"portal" + } + ], + [ + "a3cd224132f544e99255cdab6b67c8e0.16", + 1385730711985, + { + "level":4, + "title":"Fine Art Society", + "image":"http://lh4.ggpht.com/yC-itqa1j9kIZISezpUyPXG5WGZi9Uv43Ssrw-bcqGO2DYsPYytAzgvAOtkddKXHKa0ombb27dnKWnskErLc", + "resCount":6, + "latE6":51511319, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-143617, + "type":"portal" + } + ], + [ + "cd465e2e18aa47fb9413ec9ddc32a52a.16", + 1385746744075, + { + "level":2, + "title":"The Crown Pub", + "image":"http://lh6.ggpht.com/t4lg3OwSu583Dpk81P4M4tRVneKxd17oiO9y895Uh2pSYFQWxsrAcGeUpErCPU3B3RrcxfkbVkSKeIGaqr1o", + "resCount":8, + "latE6":51511183, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-136289, + "type":"portal" + } + ], + [ + "0497a427aeee443b8a9344f3e42878c5.16", + 1385729718247, + { + "level":6, + "title":"Wall Art", + "image":"http://lh5.ggpht.com/rbZoECmRqIxU2uJXAqoVAR-o9QArak-cVj47oBYjYtlu7HouA4WDjWrZJU6Pq0lpBYOBRixXmr-tDUnUkA", + "resCount":8, + "latE6":51513159, + "health":85.0, + "team":"RESISTANCE", + "lngE6":-139979, + "type":"portal" + } + ], + [ + "948e24b3ee6f4c938b26e1ccc546c344.12", + 1385734330704, + { + "level":1, + "title":"Time Reversal. Alice Anderson,", + "image":"http://www.panoramio.com/photos/small/34503556.jpg", + "resCount":2, + "latE6":51512802, + "health":77.0, + "team":"ENLIGHTENED", + "lngE6":-136425, + "type":"portal" + } + ], + [ + "65854ea080ad4c47af9a846bd2157a32.11", + 1385754050543, + { + "level":2, + "title":"1930s Red Telephone Box", + "image":"http://lh3.ggpht.com/Hqf1WDZsfcQFfh4Aj7gXyD7IJ1clxZAKqI14vwGp-44pH0kORC-enFJKHOJ2fjWnRB22YoEXswPVwNzxregOLX1sigE-zBwjJBWKncqRXqjoFZ4", + "resCount":8, + "latE6":51513771, + "health":73.0, + "team":"ENLIGHTENED", + "lngE6":-143224, + "type":"portal" + } + ], + [ + "4dcb09e36ff44fbda97d4ef9e422864a.16", + 1385747835960, + { + "level":2, + "title":"The Glassblower Pub", + "image":"http://lh4.ggpht.com/vgksd-D9aX8pwaxg1LGy6UquBCQE1JEVjjHwyEiNfo__p6kbdcdATq2wxiKK0yie29Px5uP50gJ2LI-2LE6O", + "resCount":8, + "latE6":51510532, + "health":90.0, + "team":"RESISTANCE", + "lngE6":-137153, + "type":"portal" + } + ], + [ + "bdd9f0a666194566a4a4410c0552f6b5.16", + 1385712589017, + { + "level":6, + "title":"Multiple Car Sculptures", + "image":"http://lh3.ggpht.com/paVSd0GG0-Rqp4QArc9gHVwTKveJHoHiYR10ZyFEtG6H-eTckFqvW-YFzb4Gr2aldf05at35Qw89iUgoQR4", + "resCount":8, + "latE6":51512023, + "health":85.0, + "team":"RESISTANCE", + "lngE6":-139517, + "type":"portal" + } + ], + [ + "3d9e999015a449779e8d788a44db004f.16", + 1385748510417, + { + "level":6, + "title":"Piccadilly Theatre", + "image":"http://lh3.ggpht.com/jtawHo8jks5U04gl3vCqOT-sCinhyENhKesMflEwmGl5ZXGannk_rU7CcusbWtKWhZ4t3D0Y46_t7wKuN98V", + "resCount":8, + "latE6":51510726, + "health":62.0, + "team":"RESISTANCE", + "lngE6":-135512, + "type":"portal" + } + ], + [ + "05322044531c400fa651cae68b14070f.11", + 1385766247039, + { + "level":7, + "title":"Oxford Circus Underground Station", + "image":"http://lh4.ggpht.com/szxXe_OSEPms4uCZFbhiYcXSo4V2qEm3xCi_V8DETpmvwLvj0rEUJ9kYLTbnRaYgOWx2Nj86z16RlPgRO4_Lg4RaU45g9mkHFr5FlZSya88T63s4", + "resCount":8, + "latE6":51515259, + "health":83.0, + "team":"RESISTANCE", + "lngE6":-141449, + "type":"portal" + } + ], + [ + "18269c55037d44488851b182d20a7e02.b", + 1385391890331, + { + "points":[ + { + "lngE6":-134684, + "guid":"29b6e6694fc14063b293268b009a36c8.12", + "latE6":51509894 + }, + { + "lngE6":-136298, + "guid":"770fb08acd63484c88931ab98f1c8943.11", + "latE6":51509979 + }, + { + "lngE6":-130173, + "guid":"4c4af23302c04fadbc79fc1ad6d8e37a.11", + "latE6":51511070 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "7b85e3ef2a4b4cf1bedace0b7c1ef464.b", + 1385582249184, + { + "points":[ + { + "lngE6":-141449, + "guid":"05322044531c400fa651cae68b14070f.11", + "latE6":51515259 + }, + { + "lngE6":-141049, + "guid":"51502606f12c4eaebef135ac5e48c751.16", + "latE6":51514835 + }, + { + "lngE6":-141353, + "guid":"dc2192d231d147f3aa8fb4b7c060bd5b.16", + "latE6":51514440 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "76297ebe3a224463a986d235c3c749f6.b", + 1385747710137, + { + "points":[ + { + "lngE6":-136298, + "guid":"770fb08acd63484c88931ab98f1c8943.11", + "latE6":51509979 + }, + { + "lngE6":-138099, + "guid":"b38f452f55d44217a81d4cb361928592.16", + "latE6":51511185 + }, + { + "lngE6":-137211, + "guid":"f13c73e60e714ce6b444b4f7ba751e17.11", + "latE6":51511643 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "127fa78ca3394b568e4769a043b3e7c9.b", + 1385580364098, + { + "points":[ + { + "lngE6":-141449, + "guid":"05322044531c400fa651cae68b14070f.11", + "latE6":51515259 + }, + { + "lngE6":-140773, + "guid":"db954eb71cb949ad94084d790b399fee.16", + "latE6":51514704 + }, + { + "lngE6":-141049, + "guid":"51502606f12c4eaebef135ac5e48c751.16", + "latE6":51514835 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "f7cf47b3cc7b42368d8ff7ea30cff360.b", + 1385386496392, + { + "points":[ + { + "lngE6":-136298, + "guid":"770fb08acd63484c88931ab98f1c8943.11", + "latE6":51509979 + }, + { + "lngE6":-133877, + "guid":"afb4636dc20a4f8ebebc4777150c02ff.12", + "latE6":51510627 + }, + { + "lngE6":-132406, + "guid":"d9ba97d5bb7b46abbdf6757190c06c70.16", + "latE6":51510684 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "e9f923cc0ecd4a8f8755d40311a8f5c3.b", + 1385719623001, + { + "points":[ + { + "lngE6":-135865, + "guid":"35276da8f43740a1a06a2b8fe4ec7bef.16", + "latE6":51512676 + }, + { + "lngE6":-140950, + "guid":"471691e68499419e9e1a7f90b9d3929f.12", + "latE6":51513861 + }, + { + "lngE6":-139464, + "guid":"e60e96f76f2f41c588bb873035223a55.16", + "latE6":51513650 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "b33b049eaf5d4c1587d4c595df2b5113.b", + 1385473816596, + { + "points":[ + { + "lngE6":-149462, + "guid":"2f86b199c523422f8166ef915bdb1b70.16", + "latE6":51514228 + }, + { + "lngE6":-147665, + "guid":"b45a5a0a21124c0cba28167094c94358.16", + "latE6":51514310 + }, + { + "lngE6":-141839, + "guid":"33fe90d0a2d04d0db47002285eaf2766.11", + "latE6":51514260 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "c65cac4d2068489bbfc30f978a19817d.b", + 1385746389199, + { + "points":[ + { + "lngE6":-136415, + "guid":"0dfe4e6db22d45738454e5d6c3adb422.11", + "latE6":51509293 + }, + { + "lngE6":-136298, + "guid":"770fb08acd63484c88931ab98f1c8943.11", + "latE6":51509979 + }, + { + "lngE6":-134684, + "guid":"29b6e6694fc14063b293268b009a36c8.12", + "latE6":51509894 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "bd80219282fa4c38a5da8e9fb5fe5dd1.b", + 1385322553829, + { + "points":[ + { + "lngE6":-130173, + "guid":"4c4af23302c04fadbc79fc1ad6d8e37a.11", + "latE6":51511070 + }, + { + "lngE6":-136298, + "guid":"770fb08acd63484c88931ab98f1c8943.11", + "latE6":51509979 + }, + { + "lngE6":-132406, + "guid":"d9ba97d5bb7b46abbdf6757190c06c70.16", + "latE6":51510684 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "5f9447c37b9f4d4bbfa47eb053d7fb63.b", + 1385625228075, + { + "points":[ + { + "lngE6":-139979, + "guid":"0497a427aeee443b8a9344f3e42878c5.16", + "latE6":51513159 + }, + { + "lngE6":-141839, + "guid":"33fe90d0a2d04d0db47002285eaf2766.11", + "latE6":51514260 + }, + { + "lngE6":-140950, + "guid":"471691e68499419e9e1a7f90b9d3929f.12", + "latE6":51513861 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "65d2ebc2262a4081a5786b197a493568.b", + 1385657428075, + { + "points":[ + { + "lngE6":-136200, + "guid":"8bd1e401015d45c68a248cd3888a9f08.11", + "latE6":51513504 + }, + { + "lngE6":-137032, + "guid":"de3bae13ea7a4003a69964bbc491a6a4.16", + "latE6":51514800 + }, + { + "lngE6":-132564, + "guid":"f93d9ee0fa8240d3a55e3b0d3aad96f0.11", + "latE6":51512246 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "b35a135a3d9a48e9beab909541f449a0.b", + 1385714984086, + { + "points":[ + { + "lngE6":-136298, + "guid":"770fb08acd63484c88931ab98f1c8943.11", + "latE6":51509979 + }, + { + "lngE6":-137211, + "guid":"f13c73e60e714ce6b444b4f7ba751e17.11", + "latE6":51511643 + }, + { + "lngE6":-133877, + "guid":"afb4636dc20a4f8ebebc4777150c02ff.12", + "latE6":51510627 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "2b465cbe51554b2ebbfea6ba67810c96.b", + 1385582115022, + { + "points":[ + { + "lngE6":-141049, + "guid":"51502606f12c4eaebef135ac5e48c751.16", + "latE6":51514835 + }, + { + "lngE6":-140773, + "guid":"db954eb71cb949ad94084d790b399fee.16", + "latE6":51514704 + }, + { + "lngE6":-140594, + "guid":"f40dcd87c4764789a72fecdd97fd4ed4.11", + "latE6":51514522 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "502381e76870402e9da16405a4cb50df.9", + 1385632734585, + { + "oLatE6":51514260, + "dLatE6":51513462, + "dLngE6":-143165, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"764aeb38065b47d992e843d4ae77d15d.11", + "oLngE6":-141839 + } + ], + [ + "0ee6efa62b924df498b197cb8d28ce0d.9", + 1385719623001, + { + "oLatE6":51513861, + "dLatE6":51513650, + "dLngE6":-139464, + "team":"RESISTANCE", + "oGuid":"471691e68499419e9e1a7f90b9d3929f.12", + "type":"edge", + "dGuid":"e60e96f76f2f41c588bb873035223a55.16", + "oLngE6":-140950 + } + ], + [ + "d2cbe4cf824f4f21a55021bcd0d881ab.9", + 1385747260119, + { + "oLatE6":51511643, + "dLatE6":51513861, + "dLngE6":-140950, + "team":"RESISTANCE", + "oGuid":"f13c73e60e714ce6b444b4f7ba751e17.11", + "type":"edge", + "dGuid":"471691e68499419e9e1a7f90b9d3929f.12", + "oLngE6":-137211 + } + ], + [ + "a47d16cfecbc4b71afcd38a321e9e178.9", + 1385582249184, + { + "oLatE6":51514835, + "dLatE6":51514440, + "dLngE6":-141353, + "team":"RESISTANCE", + "oGuid":"51502606f12c4eaebef135ac5e48c751.16", + "type":"edge", + "dGuid":"dc2192d231d147f3aa8fb4b7c060bd5b.16", + "oLngE6":-141049 + } + ], + [ + "dbfecd40986d41379f1812b49f5a0ca7.9", + 1385625228075, + { + "oLatE6":51514260, + "dLatE6":51513861, + "dLngE6":-140950, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"471691e68499419e9e1a7f90b9d3929f.12", + "oLngE6":-141839 + } + ], + [ + "be54885e0c4b4425976875fd9da04fda.9", + 1385714984086, + { + "oLatE6":51510627, + "dLatE6":51511643, + "dLngE6":-137211, + "team":"RESISTANCE", + "oGuid":"afb4636dc20a4f8ebebc4777150c02ff.12", + "type":"edge", + "dGuid":"f13c73e60e714ce6b444b4f7ba751e17.11", + "oLngE6":-133877 + } + ], + [ + "353fc49fb4b84e8c912b47685cdd17de.9", + 1385577901773, + { + "oLatE6":51514260, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-141839 + } + ], + [ + "c04855db54bc41d3a70c83616cc42d12.9", + 1385391890331, + { + "oLatE6":51509979, + "dLatE6":51511070, + "dLngE6":-130173, + "team":"RESISTANCE", + "oGuid":"770fb08acd63484c88931ab98f1c8943.11", + "type":"edge", + "dGuid":"4c4af23302c04fadbc79fc1ad6d8e37a.11", + "oLngE6":-136298 + } + ], + [ + "848d5d1ce2404f3a9c2dd68c8af2af1e.9", + 1385747710137, + { + "oLatE6":51511185, + "dLatE6":51509979, + "dLngE6":-136298, + "team":"RESISTANCE", + "oGuid":"b38f452f55d44217a81d4cb361928592.16", + "type":"edge", + "dGuid":"770fb08acd63484c88931ab98f1c8943.11", + "oLngE6":-138099 + } + ], + [ + "f67ae2fb1af745939b395f9ec419f7bf.9", + 1385740085724, + { + "oLatE6":51509664, + "dLatE6":51509347, + "dLngE6":-143285, + "team":"ENLIGHTENED", + "oGuid":"bfcb133c0f3a43909be288eb27cf5968.16", + "type":"edge", + "dGuid":"c59d1196b63b490ba209e13507e9e782.16", + "oLngE6":-145506 + } + ], + [ + "57f8e0f6556e4ea499d5ebeb20d46d36.9", + 1385625228075, + { + "oLatE6":51514260, + "dLatE6":51513159, + "dLngE6":-139979, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"0497a427aeee443b8a9344f3e42878c5.16", + "oLngE6":-141839 + } + ], + [ + "7dd4a812aae04517af41c6ab50077ac9.9", + 1385746389199, + { + "oLatE6":51509979, + "dLatE6":51509894, + "dLngE6":-134684, + "team":"RESISTANCE", + "oGuid":"770fb08acd63484c88931ab98f1c8943.11", + "type":"edge", + "dGuid":"29b6e6694fc14063b293268b009a36c8.12", + "oLngE6":-136298 + } + ], + [ + "facef6508e7849a0921ad64778b45aac.9", + 1385754999512, + { + "oLatE6":51512712, + "dLatE6":51509347, + "dLngE6":-143285, + "team":"ENLIGHTENED", + "oGuid":"fecb59b9a1f342d88a767bfefbd98e2b.16", + "type":"edge", + "dGuid":"c59d1196b63b490ba209e13507e9e782.16", + "oLngE6":-147804 + } + ], + [ + "f365d59534944e3b84f8b4b3b16c12ed.9", + 1385719456171, + { + "oLatE6":51512676, + "dLatE6":51513328, + "dLngE6":-138063, + "team":"RESISTANCE", + "oGuid":"35276da8f43740a1a06a2b8fe4ec7bef.16", + "type":"edge", + "dGuid":"4245331a25a149de8a856f0a40fbb0c3.11", + "oLngE6":-135865 + } + ], + [ + "9bd6ddb4a20b47b89c67c8c9c9ebd209.9", + 1385386496392, + { + "oLatE6":51509979, + "dLatE6":51510684, + "dLngE6":-132406, + "team":"RESISTANCE", + "oGuid":"770fb08acd63484c88931ab98f1c8943.11", + "type":"edge", + "dGuid":"d9ba97d5bb7b46abbdf6757190c06c70.16", + "oLngE6":-136298 + } + ], + [ + "da001cc08c3e41d1a798ddebe677035e.9", + 1385657428075, + { + "oLatE6":51514800, + "dLatE6":51513504, + "dLngE6":-136200, + "team":"RESISTANCE", + "oGuid":"de3bae13ea7a4003a69964bbc491a6a4.16", + "type":"edge", + "dGuid":"8bd1e401015d45c68a248cd3888a9f08.11", + "oLngE6":-137032 + } + ], + [ + "2ccfd5cd8bb0437ba102f4caff4c7518.9", + 1385578078100, + { + "oLatE6":51514260, + "dLatE6":51512246, + "dLngE6":-132564, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"f93d9ee0fa8240d3a55e3b0d3aad96f0.11", + "oLngE6":-141839 + } + ], + [ + "ec7972a6329e489796ea2d68393ed664.9", + 1385754527834, + { + "oLatE6":51509347, + "dLatE6":51509739, + "dLngE6":-146652, + "team":"ENLIGHTENED", + "oGuid":"c59d1196b63b490ba209e13507e9e782.16", + "type":"edge", + "dGuid":"3c54417b68c84dd387cd67765d6e3703.12", + "oLngE6":-143285 + } + ], + [ + "d199513947fe4f309616af4f9045ced5.9", + 1385578477730, + { + "oLatE6":51512414, + "dLatE6":51513861, + "dLngE6":-140950, + "team":"RESISTANCE", + "oGuid":"51e38ccd210c418e9f74885f6b6e0ae0.16", + "type":"edge", + "dGuid":"471691e68499419e9e1a7f90b9d3929f.12", + "oLngE6":-137537 + } + ], + [ + "eb545dae1a9b436398f936f0b89a3c98.9", + 1385747710137, + { + "oLatE6":51511643, + "dLatE6":51509979, + "dLngE6":-136298, + "team":"RESISTANCE", + "oGuid":"f13c73e60e714ce6b444b4f7ba751e17.11", + "type":"edge", + "dGuid":"770fb08acd63484c88931ab98f1c8943.11", + "oLngE6":-137211 + } + ], + [ + "18b4d524e17b4141a3365b753ec7daef.9", + 1385719623001, + { + "oLatE6":51512676, + "dLatE6":51513861, + "dLngE6":-140950, + "team":"RESISTANCE", + "oGuid":"35276da8f43740a1a06a2b8fe4ec7bef.16", + "type":"edge", + "dGuid":"471691e68499419e9e1a7f90b9d3929f.12", + "oLngE6":-135865 + } + ], + [ + "bcd2c767090f4d0395bd91338acb62db.9", + 1385746389199, + { + "oLatE6":51509979, + "dLatE6":51509293, + "dLngE6":-136415, + "team":"RESISTANCE", + "oGuid":"770fb08acd63484c88931ab98f1c8943.11", + "type":"edge", + "dGuid":"0dfe4e6db22d45738454e5d6c3adb422.11", + "oLngE6":-136298 + } + ], + [ + "1a101dc6f003414eb28d312394a3aac4.9", + 1385657428075, + { + "oLatE6":51512246, + "dLatE6":51513504, + "dLngE6":-136200, + "team":"RESISTANCE", + "oGuid":"f93d9ee0fa8240d3a55e3b0d3aad96f0.11", + "type":"edge", + "dGuid":"8bd1e401015d45c68a248cd3888a9f08.11", + "oLngE6":-132564 + } + ], + [ + "f7ea70142e424d6c886352102c7189db.9", + 1385632874733, + { + "oLatE6":51514440, + "dLatE6":51515259, + "dLngE6":-141449, + "team":"RESISTANCE", + "oGuid":"dc2192d231d147f3aa8fb4b7c060bd5b.16", + "type":"edge", + "dGuid":"05322044531c400fa651cae68b14070f.11", + "oLngE6":-141353 + } + ], + [ + "1148589078ac493b989763c9ea0e0bc0.9", + 1385648550035, + { + "oLatE6":51515946, + "dLatE6":51517740, + "dLngE6":-138807, + "team":"RESISTANCE", + "oGuid":"18df369dd4874e18a17352e39b988607.16", + "type":"edge", + "dGuid":"bd18f1580ca043cd822d8c61675061c5.16", + "oLngE6":-136452 + } + ], + [ + "c63119895c0c48bca3e4bbbaa65fe604.9", + 1385727558556, + { + "oLatE6":51508161, + "dLatE6":51509979, + "dLngE6":-136298, + "team":"RESISTANCE", + "oGuid":"e2ca382f5f934e4182a02b003cf25c65.16", + "type":"edge", + "dGuid":"770fb08acd63484c88931ab98f1c8943.11", + "oLngE6":-139274 + } + ], + [ + "3b0fce9187f64569aa3265d317b6c797.9", + 1385659939944, + { + "oLatE6":51512628, + "dLatE6":51512414, + "dLngE6":-137537, + "team":"RESISTANCE", + "oGuid":"9108f98e201642d5b199a5e80f3634e3.11", + "type":"edge", + "dGuid":"51e38ccd210c418e9f74885f6b6e0ae0.16", + "oLngE6":-138809 + } + ], + [ + "b1f4ec25949b462993b7e8ab5092fdb4.9", + 1385747555742, + { + "oLatE6":51521425, + "dLatE6":51514260, + "dLngE6":-141839, + "team":"RESISTANCE", + "oGuid":"ebeee5e795f24776b184236a6de00e84.16", + "type":"edge", + "dGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "oLngE6":-140080 + } + ], + [ + "929aae218204484b8b5e4357ae59ff49.9", + 1385648534796, + { + "oLatE6":51515946, + "dLatE6":51515259, + "dLngE6":-141449, + "team":"RESISTANCE", + "oGuid":"18df369dd4874e18a17352e39b988607.16", + "type":"edge", + "dGuid":"05322044531c400fa651cae68b14070f.11", + "oLngE6":-136452 + } + ], + [ + "6462ca068dbc467394222e163b6939ae.9", + 1385747280600, + { + "oLatE6":51511643, + "dLatE6":51511899, + "dLngE6":-134962, + "team":"RESISTANCE", + "oGuid":"f13c73e60e714ce6b444b4f7ba751e17.11", + "type":"edge", + "dGuid":"85bd3bee09294ae0ae0339635f01ac40.16", + "oLngE6":-137211 + } + ], + [ + "b6b8b7afb61c42939f9a4affa029ac2a.9", + 1385719444095, + { + "oLatE6":51512676, + "dLatE6":51512764, + "dLngE6":-138184, + "team":"RESISTANCE", + "oGuid":"35276da8f43740a1a06a2b8fe4ec7bef.16", + "type":"edge", + "dGuid":"b0bc7a8edb3343139f47ed3d919a8eed.16", + "oLngE6":-135865 + } + ], + [ + "cc2a085bc3404adfaa556fe28b399014.9", + 1385475815508, + { + "oLatE6":51511643, + "dLatE6":51510726, + "dLngE6":-135512, + "team":"RESISTANCE", + "oGuid":"f13c73e60e714ce6b444b4f7ba751e17.11", + "type":"edge", + "dGuid":"3d9e999015a449779e8d788a44db004f.16", + "oLngE6":-137211 + } + ], + [ + "f8e769d955654caab03bb81b2627b955.9", + 1385754511911, + { + "oLatE6":51509347, + "dLatE6":51513092, + "dLngE6":-146417, + "team":"ENLIGHTENED", + "oGuid":"c59d1196b63b490ba209e13507e9e782.16", + "type":"edge", + "dGuid":"2736d95c14834f49963dcd1ac6d20e1f.16", + "oLngE6":-143285 + } + ], + [ + "5fbb446f648a4c3f8703d4c2bb5f3c36.9", + 1385630014626, + { + "oLatE6":51511183, + "dLatE6":51510627, + "dLngE6":-133877, + "team":"RESISTANCE", + "oGuid":"cd465e2e18aa47fb9413ec9ddc32a52a.16", + "type":"edge", + "dGuid":"afb4636dc20a4f8ebebc4777150c02ff.12", + "oLngE6":-136289 + } + ], + [ + "719b0a6ea191418381a1c4c01cd12828.9", + 1385581881617, + { + "oLatE6":51513650, + "dLatE6":51512246, + "dLngE6":-132564, + "team":"RESISTANCE", + "oGuid":"e60e96f76f2f41c588bb873035223a55.16", + "type":"edge", + "dGuid":"f93d9ee0fa8240d3a55e3b0d3aad96f0.11", + "oLngE6":-139464 + } + ], + [ + "35d4550a08264d9b811a6f94d4a30791.9", + 1385541248130, + { + "oLatE6":51509979, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"770fb08acd63484c88931ab98f1c8943.11", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-136298 + } + ], + [ + "c684b208e9a64689b9f343723d6caafb.9", + 1385730712346, + { + "oLatE6":51517190, + "dLatE6":51515946, + "dLngE6":-136452, + "team":"RESISTANCE", + "oGuid":"41e40d981ea94bdfaa5219b46371d3b3.11", + "type":"edge", + "dGuid":"18df369dd4874e18a17352e39b988607.16", + "oLngE6":-138791 + } + ], + [ + "b0feea4407b841aa9cbb82a1d628032c.9", + 1385582249184, + { + "oLatE6":51515259, + "dLatE6":51514835, + "dLngE6":-141049, + "team":"RESISTANCE", + "oGuid":"05322044531c400fa651cae68b14070f.11", + "type":"edge", + "dGuid":"51502606f12c4eaebef135ac5e48c751.16", + "oLngE6":-141449 + } + ], + [ + "e73cde8c568f45bd9558f98b5570c275.9", + 1385667686507, + { + "oLatE6":51513771, + "dLatE6":51513839, + "dLngE6":-142541, + "team":"ENLIGHTENED", + "oGuid":"65854ea080ad4c47af9a846bd2157a32.11", + "type":"edge", + "dGuid":"dbbfe3f544af4659ad4a7388fa77e3d5.12", + "oLngE6":-143224 + } + ], + [ + "bccf563e82d246728295dfdb094ec8fc.9", + 1385386189702, + { + "oLatE6":51510726, + "dLatE6":51510627, + "dLngE6":-133877, + "team":"RESISTANCE", + "oGuid":"3d9e999015a449779e8d788a44db004f.16", + "type":"edge", + "dGuid":"afb4636dc20a4f8ebebc4777150c02ff.12", + "oLngE6":-135512 + } + ], + [ + "881f61ed946b48188478f3014b572c03.9", + 1385714984086, + { + "oLatE6":51509979, + "dLatE6":51510627, + "dLngE6":-133877, + "team":"RESISTANCE", + "oGuid":"770fb08acd63484c88931ab98f1c8943.11", + "type":"edge", + "dGuid":"afb4636dc20a4f8ebebc4777150c02ff.12", + "oLngE6":-136298 + } + ], + [ + "6b4acf27652541feb55c001cca2b0341.9", + 1385582115022, + { + "oLatE6":51514522, + "dLatE6":51514835, + "dLngE6":-141049, + "team":"RESISTANCE", + "oGuid":"f40dcd87c4764789a72fecdd97fd4ed4.11", + "type":"edge", + "dGuid":"51502606f12c4eaebef135ac5e48c751.16", + "oLngE6":-140594 + } + ], + [ + "ba99f40526714c7797ff01888cbfa218.9", + 1385648514596, + { + "oLatE6":51515946, + "dLatE6":51517126, + "dLngE6":-138138, + "team":"RESISTANCE", + "oGuid":"18df369dd4874e18a17352e39b988607.16", + "type":"edge", + "dGuid":"c624e7b2c13348a0a3b889c8899bbde1.16", + "oLngE6":-136452 + } + ], + [ + "bdef2175cb124f04a850599f37ea809a.9", + 1385719634742, + { + "oLatE6":51512676, + "dLatE6":51511388, + "dLngE6":-133313, + "team":"RESISTANCE", + "oGuid":"35276da8f43740a1a06a2b8fe4ec7bef.16", + "type":"edge", + "dGuid":"8b9e199e1e9f448fa2470192642abca8.12", + "oLngE6":-135865 + } + ], + [ + "34033d8241624e47b80ef51bad412e3c.9", + 1385613893144, + { + "oLatE6":51503124, + "dLatE6":51515254, + "dLngE6":-168579, + "team":"RESISTANCE", + "oGuid":"94762abecaa34116a18166df417372e3.16", + "type":"edge", + "dGuid":"0d9d4cbcd478488cb44433a373659221.11", + "oLngE6":-150071 + } + ], + [ + "5efb56e718644e00a6c19b8de6ae65c4.9", + 1385747710137, + { + "oLatE6":51511643, + "dLatE6":51511185, + "dLngE6":-138099, + "team":"RESISTANCE", + "oGuid":"f13c73e60e714ce6b444b4f7ba751e17.11", + "type":"edge", + "dGuid":"b38f452f55d44217a81d4cb361928592.16", + "oLngE6":-137211 + } + ], + [ + "f0da3f355af2486f924e8110bed44141.9", + 1385657428075, + { + "oLatE6":51514800, + "dLatE6":51512246, + "dLngE6":-132564, + "team":"RESISTANCE", + "oGuid":"de3bae13ea7a4003a69964bbc491a6a4.16", + "type":"edge", + "dGuid":"f93d9ee0fa8240d3a55e3b0d3aad96f0.11", + "oLngE6":-137032 + } + ], + [ + "11ba338422404e3e8209b54d63b3031c.9", + 1385583603541, + { + "oLatE6":51512246, + "dLatE6":51513328, + "dLngE6":-138063, + "team":"RESISTANCE", + "oGuid":"f93d9ee0fa8240d3a55e3b0d3aad96f0.11", + "type":"edge", + "dGuid":"4245331a25a149de8a856f0a40fbb0c3.11", + "oLngE6":-132564 + } + ], + [ + "e1e973ecfa4649aea55ee5bc96d65c54.9", + 1385659852387, + { + "oLatE6":51512764, + "dLatE6":51511899, + "dLngE6":-134962, + "team":"RESISTANCE", + "oGuid":"b0bc7a8edb3343139f47ed3d919a8eed.16", + "type":"edge", + "dGuid":"85bd3bee09294ae0ae0339635f01ac40.16", + "oLngE6":-138184 + } + ], + [ + "695f2064f5aa4eed93bb0f06a9a30458.9", + 1385746389199, + { + "oLatE6":51509293, + "dLatE6":51509894, + "dLngE6":-134684, + "team":"RESISTANCE", + "oGuid":"0dfe4e6db22d45738454e5d6c3adb422.11", + "type":"edge", + "dGuid":"29b6e6694fc14063b293268b009a36c8.12", + "oLngE6":-136415 + } + ], + [ + "9d606ef77667493884895d601a3cd448.9", + 1385625228075, + { + "oLatE6":51513159, + "dLatE6":51513861, + "dLngE6":-140950, + "team":"RESISTANCE", + "oGuid":"0497a427aeee443b8a9344f3e42878c5.16", + "type":"edge", + "dGuid":"471691e68499419e9e1a7f90b9d3929f.12", + "oLngE6":-139979 + } + ], + [ + "e537529649b04f8e8cbd64243b58c9e0.9", + 1385624766402, + { + "oLatE6":51514867, + "dLatE6":51516866, + "dLngE6":-137129, + "team":"RESISTANCE", + "oGuid":"63b3a7a9284641e3a4022afdbe457b1d.16", + "type":"edge", + "dGuid":"056f6d91dca24b15948634be178b06f4.12", + "oLngE6":-133897 + } + ], + [ + "89ad49e90d5544799456d6e3ef718441.9", + 1385580364098, + { + "oLatE6":51515259, + "dLatE6":51514704, + "dLngE6":-140773, + "team":"RESISTANCE", + "oGuid":"05322044531c400fa651cae68b14070f.11", + "type":"edge", + "dGuid":"db954eb71cb949ad94084d790b399fee.16", + "oLngE6":-141449 + } + ], + [ + "82e353be1b144bcd97e3d48b6b5a826c.9", + 1385740085724, + { + "oLatE6":51509347, + "dLatE6":51510216, + "dLngE6":-145113, + "team":"ENLIGHTENED", + "oGuid":"c59d1196b63b490ba209e13507e9e782.16", + "type":"edge", + "dGuid":"8a094798b0a54b9d81cc2992edbd53e1.11", + "oLngE6":-143285 + } + ], + [ + "a4a5a70a80f74d53a5544b0f796f135b.9", + 1385578459607, + { + "oLatE6":51512414, + "dLatE6":51512764, + "dLngE6":-138184, + "team":"RESISTANCE", + "oGuid":"51e38ccd210c418e9f74885f6b6e0ae0.16", + "type":"edge", + "dGuid":"b0bc7a8edb3343139f47ed3d919a8eed.16", + "oLngE6":-137537 + } + ], + [ + "17c382d2af024bf79999e01bc4f8323e.9", + 1385473818025, + { + "oLatE6":51514260, + "dLatE6":51514310, + "dLngE6":-147665, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"b45a5a0a21124c0cba28167094c94358.16", + "oLngE6":-141839 + } + ], + [ + "e3634fb8ecd04acf9109232213b86606.9", + 1385719623001, + { + "oLatE6":51512676, + "dLatE6":51513650, + "dLngE6":-139464, + "team":"RESISTANCE", + "oGuid":"35276da8f43740a1a06a2b8fe4ec7bef.16", + "type":"edge", + "dGuid":"e60e96f76f2f41c588bb873035223a55.16", + "oLngE6":-135865 + } + ], + [ + "4de3735c6ec44fc7898ea6366e7d1717.9", + 1385579090010, + { + "oLatE6":51513504, + "dLatE6":51514704, + "dLngE6":-140773, + "team":"RESISTANCE", + "oGuid":"8bd1e401015d45c68a248cd3888a9f08.11", + "type":"edge", + "dGuid":"db954eb71cb949ad94084d790b399fee.16", + "oLngE6":-136200 + } + ], + [ + "a47d16cfecbc4b71afcd38a321e9e178.9", + 0, + { + "oLatE6":51514835, + "dLatE6":51514440, + "dLngE6":-141353, + "team":"RESISTANCE", + "oGuid":"51502606f12c4eaebef135ac5e48c751.16", + "type":"edge", + "dGuid":"dc2192d231d147f3aa8fb4b7c060bd5b.16", + "oLngE6":-141049 + } + ], + [ + "4de3735c6ec44fc7898ea6366e7d1717.9", + 0, + { + "oLatE6":51513504, + "dLatE6":51514704, + "dLngE6":-140773, + "team":"RESISTANCE", + "oGuid":"8bd1e401015d45c68a248cd3888a9f08.11", + "type":"edge", + "dGuid":"db954eb71cb949ad94084d790b399fee.16", + "oLngE6":-136200 + } + ], + [ + "3b0fce9187f64569aa3265d317b6c797.9", + 0, + { + "oLatE6":51512628, + "dLatE6":51512414, + "dLngE6":-137537, + "team":"RESISTANCE", + "oGuid":"9108f98e201642d5b199a5e80f3634e3.11", + "type":"edge", + "dGuid":"51e38ccd210c418e9f74885f6b6e0ae0.16", + "oLngE6":-138809 + } + ], + [ + "dbfecd40986d41379f1812b49f5a0ca7.9", + 0, + { + "oLatE6":51514260, + "dLatE6":51513861, + "dLngE6":-140950, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"471691e68499419e9e1a7f90b9d3929f.12", + "oLngE6":-141839 + } + ], + [ + "6b4acf27652541feb55c001cca2b0341.9", + 0, + { + "oLatE6":51514522, + "dLatE6":51514835, + "dLngE6":-141049, + "team":"RESISTANCE", + "oGuid":"f40dcd87c4764789a72fecdd97fd4ed4.11", + "type":"edge", + "dGuid":"51502606f12c4eaebef135ac5e48c751.16", + "oLngE6":-140594 + } + ], + [ + "da001cc08c3e41d1a798ddebe677035e.9", + 0, + { + "oLatE6":51514800, + "dLatE6":51513504, + "dLngE6":-136200, + "team":"RESISTANCE", + "oGuid":"de3bae13ea7a4003a69964bbc491a6a4.16", + "type":"edge", + "dGuid":"8bd1e401015d45c68a248cd3888a9f08.11", + "oLngE6":-137032 + } + ], + [ + "0ee6efa62b924df498b197cb8d28ce0d.9", + 0, + { + "oLatE6":51513861, + "dLatE6":51513650, + "dLngE6":-139464, + "team":"RESISTANCE", + "oGuid":"471691e68499419e9e1a7f90b9d3929f.12", + "type":"edge", + "dGuid":"e60e96f76f2f41c588bb873035223a55.16", + "oLngE6":-140950 + } + ], + [ + "502381e76870402e9da16405a4cb50df.9", + 0, + { + "oLatE6":51514260, + "dLatE6":51513462, + "dLngE6":-143165, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"764aeb38065b47d992e843d4ae77d15d.11", + "oLngE6":-141839 + } + ], + [ + "89ad49e90d5544799456d6e3ef718441.9", + 0, + { + "oLatE6":51515259, + "dLatE6":51514704, + "dLngE6":-140773, + "team":"RESISTANCE", + "oGuid":"05322044531c400fa651cae68b14070f.11", + "type":"edge", + "dGuid":"db954eb71cb949ad94084d790b399fee.16", + "oLngE6":-141449 + } + ], + [ + "b0feea4407b841aa9cbb82a1d628032c.9", + 0, + { + "oLatE6":51515259, + "dLatE6":51514835, + "dLngE6":-141049, + "team":"RESISTANCE", + "oGuid":"05322044531c400fa651cae68b14070f.11", + "type":"edge", + "dGuid":"51502606f12c4eaebef135ac5e48c751.16", + "oLngE6":-141449 + } + ], + [ + "f365d59534944e3b84f8b4b3b16c12ed.9", + 0, + { + "oLatE6":51512676, + "dLatE6":51513328, + "dLngE6":-138063, + "team":"RESISTANCE", + "oGuid":"35276da8f43740a1a06a2b8fe4ec7bef.16", + "type":"edge", + "dGuid":"4245331a25a149de8a856f0a40fbb0c3.11", + "oLngE6":-135865 + } + ], + [ + "5efb56e718644e00a6c19b8de6ae65c4.9", + 0, + { + "oLatE6":51511643, + "dLatE6":51511185, + "dLngE6":-138099, + "team":"RESISTANCE", + "oGuid":"f13c73e60e714ce6b444b4f7ba751e17.11", + "type":"edge", + "dGuid":"b38f452f55d44217a81d4cb361928592.16", + "oLngE6":-137211 + } + ], + [ + "b6b8b7afb61c42939f9a4affa029ac2a.9", + 0, + { + "oLatE6":51512676, + "dLatE6":51512764, + "dLngE6":-138184, + "team":"RESISTANCE", + "oGuid":"35276da8f43740a1a06a2b8fe4ec7bef.16", + "type":"edge", + "dGuid":"b0bc7a8edb3343139f47ed3d919a8eed.16", + "oLngE6":-135865 + } + ], + [ + "9d606ef77667493884895d601a3cd448.9", + 0, + { + "oLatE6":51513159, + "dLatE6":51513861, + "dLngE6":-140950, + "team":"RESISTANCE", + "oGuid":"0497a427aeee443b8a9344f3e42878c5.16", + "type":"edge", + "dGuid":"471691e68499419e9e1a7f90b9d3929f.12", + "oLngE6":-139979 + } + ], + [ + "a5519aba410f4552bcb364d4b188cc25.9", + 0, + { + "oLatE6":51514704, + "dLatE6":51514522, + "dLngE6":-140594, + "team":"RESISTANCE", + "oGuid":"db954eb71cb949ad94084d790b399fee.16", + "type":"edge", + "dGuid":"f40dcd87c4764789a72fecdd97fd4ed4.11", + "oLngE6":-140773 + } + ], + [ + "a4a5a70a80f74d53a5544b0f796f135b.9", + 0, + { + "oLatE6":51512414, + "dLatE6":51512764, + "dLngE6":-138184, + "team":"RESISTANCE", + "oGuid":"51e38ccd210c418e9f74885f6b6e0ae0.16", + "type":"edge", + "dGuid":"b0bc7a8edb3343139f47ed3d919a8eed.16", + "oLngE6":-137537 + } + ], + [ + "e3634fb8ecd04acf9109232213b86606.9", + 0, + { + "oLatE6":51512676, + "dLatE6":51513650, + "dLngE6":-139464, + "team":"RESISTANCE", + "oGuid":"35276da8f43740a1a06a2b8fe4ec7bef.16", + "type":"edge", + "dGuid":"e60e96f76f2f41c588bb873035223a55.16", + "oLngE6":-135865 + } + ], + [ + "18b4d524e17b4141a3365b753ec7daef.9", + 0, + { + "oLatE6":51512676, + "dLatE6":51513861, + "dLngE6":-140950, + "team":"RESISTANCE", + "oGuid":"35276da8f43740a1a06a2b8fe4ec7bef.16", + "type":"edge", + "dGuid":"471691e68499419e9e1a7f90b9d3929f.12", + "oLngE6":-135865 + } + ], + [ + "cc2a085bc3404adfaa556fe28b399014.9", + 0, + { + "oLatE6":51511643, + "dLatE6":51510726, + "dLngE6":-135512, + "team":"RESISTANCE", + "oGuid":"f13c73e60e714ce6b444b4f7ba751e17.11", + "type":"edge", + "dGuid":"3d9e999015a449779e8d788a44db004f.16", + "oLngE6":-137211 + } + ], + [ + "d2cbe4cf824f4f21a55021bcd0d881ab.9", + 0, + { + "oLatE6":51511643, + "dLatE6":51513861, + "dLngE6":-140950, + "team":"RESISTANCE", + "oGuid":"f13c73e60e714ce6b444b4f7ba751e17.11", + "type":"edge", + "dGuid":"471691e68499419e9e1a7f90b9d3929f.12", + "oLngE6":-137211 + } + ], + [ + "d199513947fe4f309616af4f9045ced5.9", + 0, + { + "oLatE6":51512414, + "dLatE6":51513861, + "dLngE6":-140950, + "team":"RESISTANCE", + "oGuid":"51e38ccd210c418e9f74885f6b6e0ae0.16", + "type":"edge", + "dGuid":"471691e68499419e9e1a7f90b9d3929f.12", + "oLngE6":-137537 + } + ], + [ + "e73cde8c568f45bd9558f98b5570c275.9", + 0, + { + "oLatE6":51513771, + "dLatE6":51513839, + "dLngE6":-142541, + "team":"ENLIGHTENED", + "oGuid":"65854ea080ad4c47af9a846bd2157a32.11", + "type":"edge", + "dGuid":"dbbfe3f544af4659ad4a7388fa77e3d5.12", + "oLngE6":-143224 + } + ], + [ + "f7ea70142e424d6c886352102c7189db.9", + 0, + { + "oLatE6":51514440, + "dLatE6":51515259, + "dLngE6":-141449, + "team":"RESISTANCE", + "oGuid":"dc2192d231d147f3aa8fb4b7c060bd5b.16", + "type":"edge", + "dGuid":"05322044531c400fa651cae68b14070f.11", + "oLngE6":-141353 + } + ], + [ + "eb545dae1a9b436398f936f0b89a3c98.9", + 0, + { + "oLatE6":51511643, + "dLatE6":51509979, + "dLngE6":-136298, + "team":"RESISTANCE", + "oGuid":"f13c73e60e714ce6b444b4f7ba751e17.11", + "type":"edge", + "dGuid":"770fb08acd63484c88931ab98f1c8943.11", + "oLngE6":-137211 + } + ], + [ + "330d0fc655154fee9b221bdbb924c049.9", + 0, + { + "oLatE6":51514704, + "dLatE6":51514835, + "dLngE6":-141049, + "team":"RESISTANCE", + "oGuid":"db954eb71cb949ad94084d790b399fee.16", + "type":"edge", + "dGuid":"51502606f12c4eaebef135ac5e48c751.16", + "oLngE6":-140773 + } + ], + [ + "848d5d1ce2404f3a9c2dd68c8af2af1e.9", + 0, + { + "oLatE6":51511185, + "dLatE6":51509979, + "dLngE6":-136298, + "team":"RESISTANCE", + "oGuid":"b38f452f55d44217a81d4cb361928592.16", + "type":"edge", + "dGuid":"770fb08acd63484c88931ab98f1c8943.11", + "oLngE6":-138099 + } + ], + [ + "57f8e0f6556e4ea499d5ebeb20d46d36.9", + 0, + { + "oLatE6":51514260, + "dLatE6":51513159, + "dLngE6":-139979, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"0497a427aeee443b8a9344f3e42878c5.16", + "oLngE6":-141839 + } + ] + ] + }, + "1_32740_21790":{ + "deletedGameEntityGuids":[ + "5c63ea938f514e25896b8a2aa39f0692.b", + "d848629d72484e199610a80d43b66df3.b", + "8f7f2f96910a4fcb90be57c9ea8c1a31.9", + "577c6da0509046029366080bd242418f.9", + "21d7d3e12e734538a948ec544eb867ba.9", + "94c7e110d8fb43f1a78867cf61ff64f1.9" + ], + "gameEntities":[ + [ + "b45a5a0a21124c0cba28167094c94358.16", + 1385771544876, + { + "level":6, + "title":"The Woodstock", + "image":"http://lh5.ggpht.com/V9lHY1dF8Ml_ygQ4Cc3uEDlgJ_37JsrObyYST4AXdIWmS_3VUgsM2MucS3Ke6ke__6Q7YN9bZ5l1gZk2LqSYTQ", + "resCount":8, + "latE6":51514310, + "health":80.0, + "team":"RESISTANCE", + "lngE6":-147665, + "type":"portal" + } + ], + [ + "2f86b199c523422f8166ef915bdb1b70.16", + 1385767610408, + { + "level":7, + "title":"Bond Street Station", + "image":"http://lh3.ggpht.com/_TK-XP1k9fPPeoDw_Zfml_2MLfHg1deEvh0gw5trLJlVrzREoQM_9AQtFYMDxXDwU9LPr72O-wBplIMBej0", + "resCount":8, + "latE6":51514228, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-149462, + "type":"portal" + } + ], + [ + "f177fead235c40a3a59e5f95afe7a330.12", + 1385743422896, + { + "level":4, + "title":"Nymph, (1973) by Emilio Greco ", + "image":"http://www.panoramio.com/photos/small/64749002.jpg", + "resCount":8, + "latE6":51510149, + "health":70.0, + "team":"RESISTANCE", + "lngE6":-149267, + "type":"portal" + } + ], + [ + "56d5b86428c84aadac0d6214eff81f60.11", + 1385754907692, + { + "level":5, + "title":"Mayfair Post Office, London", + "image":"http://lh5.ggpht.com/5963D4ATz31LG-zWuPSWrdUKqq_u09-C-GNcyNd6vH1isg7PQjax2niQ5LbZfAwnjnB4DJITWbfuGeMH0MnDqThnmI_CNWIQ2euXk8Cwjls0yXO88A", + "resCount":8, + "latE6":51511550, + "health":100.0, + "team":"ENLIGHTENED", + "lngE6":-148266, + "type":"portal" + } + ], + [ + "223a3fff9f5d4efc970c695477ac8d87.16", + 1385764358922, + { + "level":6, + "title":"1973 Style Architecture", + "image":"http://lh6.ggpht.com/hGydr4PDJmuhbySOZUWLv2O9fvWl6wwQATolBzk7kHHZfHAKGRCacXiDD8Dw2GL9ISSdOYCisfQYsLNCRJc", + "resCount":8, + "latE6":51515621, + "health":82.0, + "team":"RESISTANCE", + "lngE6":-149112, + "type":"portal" + } + ], + [ + "de3370c1f7e04e31b7800d55c641298a.12", + 1385767699010, + { + "level":6, + "title":"Selfridges, Oxford Street, Cit", + "image":"http://www.panoramio.com/photos/small/22779690.jpg", + "resCount":8, + "latE6":51514055, + "health":94.0, + "team":"RESISTANCE", + "lngE6":-152918, + "type":"portal" + } + ], + [ + "e0b231367a5b44459091f8722b9e451f.16", + 1385764212592, + { + "level":6, + "title":"Selfridges", + "image":"http://lh4.ggpht.com/My1WDqCj71Jy1hg4Ak3nSZU5qK5hcm0xQD4MIQfkZERkV2ET9lpF7y-ziX37nGqQsWMbEXVlRkhcSz931Xw", + "resCount":8, + "latE6":51514235, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-153814, + "type":"portal" + } + ], + [ + "52b33d95998045eba2545349588b56db.11", + 1385743621600, + { + "level":4, + "title":"The Bronze Guardian", + "image":"http://lh6.ggpht.com/Pm2dAL5Pb1fiC2TCI400F4PMVw78tRSf-aJlHdq4uI8JgJCwxkqu_IP6b-6wwoyMo7sKf-71EnS5Gy5F8WWM0AigJM_qn81YxIrP8l8jXZvuFhXE", + "resCount":8, + "latE6":51511295, + "health":70.0, + "team":"RESISTANCE", + "lngE6":-150095, + "type":"portal" + } + ], + [ + "0799e2b9a84d4573b1e633f480b457ad.12", + 1385767685166, + { + "level":6, + "title":"Statue", + "image":"http://www.panoramio.com/photos/small/8539483.jpg", + "resCount":8, + "latE6":51514061, + "health":97.0, + "team":"RESISTANCE", + "lngE6":-152679, + "type":"portal" + } + ], + [ + "7fdc9960ccf946a3bf6cc62fb38ee141.12", + 1385767664719, + { + "level":6, + "title":"Woman with Lens", + "image":"http://www.panoramio.com/photos/small/33950443.jpg", + "resCount":8, + "latE6":51514211, + "health":97.0, + "team":"RESISTANCE", + "lngE6":-151942, + "type":"portal" + } + ], + [ + "fecb59b9a1f342d88a767bfefbd98e2b.16", + 1385754999512, + { + "level":5, + "title":"Claridge's", + "image":"http://lh6.ggpht.com/Nw_AUCmV6y_6UszJGrSLm1Fhj2mGWeQ7jjY124RdcUjN_yfvwX-0U6D6yY2DLBsAke__7A00ykRl1uavUOs0aw", + "resCount":8, + "latE6":51512712, + "health":87.0, + "team":"ENLIGHTENED", + "lngE6":-147804, + "type":"portal" + } + ], + [ + "457d81eba6f542a1983154ec61155239.16", + 1385760142640, + { + "level":6, + "title":"Carmen Miranda ", + "image":"http://lh3.ggpht.com/JCRUB71vlORT2IkrFhZ803SJ1EGTLKs1H-4jkUbWadNKpNrzCAVDEuMI1Ub0yrrhwNhNvHdXpmZ2njiZZ0E2wA", + "resCount":8, + "latE6":51515313, + "health":93.0, + "team":"RESISTANCE", + "lngE6":-152044, + "type":"portal" + } + ], + [ + "df187c57c94a47c39aeec2b9854724f9.16", + 1385761557899, + { + "level":6, + "title":"Barrett Square", + "image":"http://lh6.ggpht.com/C91k6VHs3bxfRTpt4046HWIvhZ3xxAvAIF36vT071VPTSwQ_Zi2tYPGAOaXMxnZmv6hgZV2lBum1TYPzPIo", + "resCount":8, + "latE6":51515117, + "health":85.0, + "team":"RESISTANCE", + "lngE6":-150129, + "type":"portal" + } + ], + [ + "b0724f57f3534c3ca647fbdadcb3b408.16", + 1385721137699, + { + "level":5, + "title":"The Pontefract Castle Pub", + "image":"http://lh4.ggpht.com/8oYf2urEldFWyBLDXYtU11r9mNSm2J3u88WlLH1eripfkz6EqpmiCm-3HpqykM90PtspbEKLjqBtGze85wfQ", + "resCount":8, + "latE6":51515968, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-150665, + "type":"portal" + } + ], + [ + "c48c85f57ec044389f5a65679acfca98.16", + 1385743552045, + { + "level":4, + "title":"Timothy Tylor Gallery", + "image":"http://lh6.ggpht.com/84uqRaxPzU7l_LhUNsbh97N83zlSV5ThiZGgRFJipd6KCCzCacGcqqAv6e_DPUILAOeDI8dT0WqlQ2YQgso", + "resCount":8, + "latE6":51510464, + "health":70.0, + "team":"RESISTANCE", + "lngE6":-149713, + "type":"portal" + } + ], + [ + "14eb22dca46e4f8dbb8ce7f592bdb148.16", + 1385750177159, + { + "level":5, + "title":"Brown Hart Gardens", + "image":"http://lh3.ggpht.com/2enF22Geg0ZgY2UlmR0wFTJWbPIhEjPH19h6EWIOQpXEtJi-t5g3PPKYZaiYkApye78azm_KM4mgHkDek22N", + "resCount":8, + "latE6":51513222, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-151021, + "type":"portal" + } + ], + [ + "918f7edeaf1b4083947957bc4e7bc130.16", + 1385750348929, + { + "level":5, + "title":"Kings Weigh House Chapel", + "image":"http://lh5.ggpht.com/_g-DbjI00VXocuDBq3EGO8DRp68OhBAsz-la_jQ-HLWpb7obx94tnb7ee-kX6Hpz7v98aIzAkGXZsw5MI1uj", + "resCount":8, + "latE6":51513410, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-150435, + "type":"portal" + } + ], + [ + "0a5e340f186d4aaca7904fbe5a3feba7.16", + 1385758229016, + { + "level":5, + "title":"Devonshire Arms", + "image":"http://lh6.ggpht.com/DZAuRhOCJQF_NwqBNNIRdmhTXZP8-WbH7HvlDqdUSHZt74eZKfA3hjdbbQJeklvgWfgvyipyWnpZDBvpMqxE", + "resCount":8, + "latE6":51516152, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-152271, + "type":"portal" + } + ], + [ + "ffcded7f2a3d4672ab326efe8ebc7087.16", + 1385726673133, + { + "level":5, + "title":"Grief is the Price we Pay for Love", + "image":"http://lh4.ggpht.com/0pjcogJaUdtje7QvQ5hOlibqxm5SnkFIupjnWt2SNJrZMkNu9VK5GZB2tF1IvglKAey3e5Gluz96o2LwdOvo", + "resCount":8, + "latE6":51511686, + "health":68.0, + "team":"RESISTANCE", + "lngE6":-150364, + "type":"portal" + } + ], + [ + "07fcfa63452f4c9d91f69fff8e1ea895.b", + 1385656796544, + { + "points":[ + { + "lngE6":-152044, + "guid":"457d81eba6f542a1983154ec61155239.16", + "latE6":51515313 + }, + { + "lngE6":-151942, + "guid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "latE6":51514211 + }, + { + "lngE6":-153814, + "guid":"e0b231367a5b44459091f8722b9e451f.16", + "latE6":51514235 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "df982344b2cc44d8bce231d9f65ecab9.b", + 1385750349253, + { + "points":[ + { + "lngE6":-149462, + "guid":"2f86b199c523422f8166ef915bdb1b70.16", + "latE6":51514228 + }, + { + "lngE6":-150435, + "guid":"918f7edeaf1b4083947957bc4e7bc130.16", + "latE6":51513410 + }, + { + "lngE6":-151942, + "guid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "latE6":51514211 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "864ab7bba0b649b980117b3ec898b87d.b", + 1385771545394, + { + "points":[ + { + "lngE6":-148230, + "guid":"0cb8844196c240dfa79652a452934a15.11", + "latE6":51516368 + }, + { + "lngE6":-147665, + "guid":"b45a5a0a21124c0cba28167094c94358.16", + "latE6":51514310 + }, + { + "lngE6":-149462, + "guid":"2f86b199c523422f8166ef915bdb1b70.16", + "latE6":51514228 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "8cd4001937dd470ea211ada9b06a7efe.b", + 1385576637363, + { + "points":[ + { + "lngE6":-149112, + "guid":"223a3fff9f5d4efc970c695477ac8d87.16", + "latE6":51515621 + }, + { + "lngE6":-150129, + "guid":"df187c57c94a47c39aeec2b9854724f9.16", + "latE6":51515117 + }, + { + "lngE6":-150665, + "guid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "latE6":51515968 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "20ea3abd89b4439d801774ff40a100de.b", + 1385632231155, + { + "points":[ + { + "lngE6":-152044, + "guid":"457d81eba6f542a1983154ec61155239.16", + "latE6":51515313 + }, + { + "lngE6":-150665, + "guid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "latE6":51515968 + }, + { + "lngE6":-150129, + "guid":"df187c57c94a47c39aeec2b9854724f9.16", + "latE6":51515117 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "eb38ce937b5145158149398ef0291744.b", + 1385472014804, + { + "points":[ + { + "lngE6":-148230, + "guid":"0cb8844196c240dfa79652a452934a15.11", + "latE6":51516368 + }, + { + "lngE6":-149462, + "guid":"2f86b199c523422f8166ef915bdb1b70.16", + "latE6":51514228 + }, + { + "lngE6":-149112, + "guid":"223a3fff9f5d4efc970c695477ac8d87.16", + "latE6":51515621 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "b33b049eaf5d4c1587d4c595df2b5113.b", + 1385473816596, + { + "points":[ + { + "lngE6":-149462, + "guid":"2f86b199c523422f8166ef915bdb1b70.16", + "latE6":51514228 + }, + { + "lngE6":-147665, + "guid":"b45a5a0a21124c0cba28167094c94358.16", + "latE6":51514310 + }, + { + "lngE6":-141839, + "guid":"33fe90d0a2d04d0db47002285eaf2766.11", + "latE6":51514260 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "300bd7037aae4a8890f450d1b6732f04.b", + 1385645776587, + { + "points":[ + { + "lngE6":-148230, + "guid":"0cb8844196c240dfa79652a452934a15.11", + "latE6":51516368 + }, + { + "lngE6":-150665, + "guid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "latE6":51515968 + }, + { + "lngE6":-151762, + "guid":"ca57ec9edce1494eb28da06226772cd6.11", + "latE6":51517935 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "cc1eea50fae04713b4d782b999b8e4e3.b", + 1385754891759, + { + "points":[ + { + "lngE6":-148266, + "guid":"56d5b86428c84aadac0d6214eff81f60.11", + "latE6":51511550 + }, + { + "lngE6":-145113, + "guid":"8a094798b0a54b9d81cc2992edbd53e1.11", + "latE6":51510216 + }, + { + "lngE6":-145506, + "guid":"bfcb133c0f3a43909be288eb27cf5968.16", + "latE6":51509664 + } + ], + "type":"region", + "team":"ENLIGHTENED" + } + ], + [ + "1dcca72cb3d3463f9f6367af60a966d3.b", + 1385576765160, + { + "points":[ + { + "lngE6":-152271, + "guid":"0a5e340f186d4aaca7904fbe5a3feba7.16", + "latE6":51516152 + }, + { + "lngE6":-151951, + "guid":"a24adc0a42d74c1397731cb7475d7c5d.16", + "latE6":51516526 + }, + { + "lngE6":-150665, + "guid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "latE6":51515968 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "56f5ccb7bfe0407e811efd729ed98e8e.b", + 1385646897670, + { + "points":[ + { + "lngE6":-152271, + "guid":"0a5e340f186d4aaca7904fbe5a3feba7.16", + "latE6":51516152 + }, + { + "lngE6":-152943, + "guid":"66ec22e29ac84a828d7203535c1f50c5.11", + "latE6":51517188 + }, + { + "lngE6":-151951, + "guid":"a24adc0a42d74c1397731cb7475d7c5d.16", + "latE6":51516526 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "3259bf135edc4f10b9b5ec64c8e55614.b", + 1385661945578, + { + "points":[ + { + "lngE6":-149462, + "guid":"2f86b199c523422f8166ef915bdb1b70.16", + "latE6":51514228 + }, + { + "lngE6":-151942, + "guid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "latE6":51514211 + }, + { + "lngE6":-152044, + "guid":"457d81eba6f542a1983154ec61155239.16", + "latE6":51515313 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "22a4c0cf2c604900997f6bd1d9fa018f.b", + 1385654637424, + { + "points":[ + { + "lngE6":-149462, + "guid":"2f86b199c523422f8166ef915bdb1b70.16", + "latE6":51514228 + }, + { + "lngE6":-152044, + "guid":"457d81eba6f542a1983154ec61155239.16", + "latE6":51515313 + }, + { + "lngE6":-150129, + "guid":"df187c57c94a47c39aeec2b9854724f9.16", + "latE6":51515117 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "9574a736bf1b4f66ab4113e59a63641a.b", + 1385647122053, + { + "points":[ + { + "lngE6":-152271, + "guid":"0a5e340f186d4aaca7904fbe5a3feba7.16", + "latE6":51516152 + }, + { + "lngE6":-150665, + "guid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "latE6":51515968 + }, + { + "lngE6":-152044, + "guid":"457d81eba6f542a1983154ec61155239.16", + "latE6":51515313 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "b148dfde41eb4ea3b6e5bf67adf2ccd7.b", + 1385645776197, + { + "points":[ + { + "lngE6":-148230, + "guid":"0cb8844196c240dfa79652a452934a15.11", + "latE6":51516368 + }, + { + "lngE6":-149112, + "guid":"223a3fff9f5d4efc970c695477ac8d87.16", + "latE6":51515621 + }, + { + "lngE6":-150665, + "guid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "latE6":51515968 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "25a180b49d5a4b3e990bfe69dd9ad175.b", + 1385750177389, + { + "points":[ + { + "lngE6":-151021, + "guid":"14eb22dca46e4f8dbb8ce7f592bdb148.16", + "latE6":51513222 + }, + { + "lngE6":-151942, + "guid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "latE6":51514211 + }, + { + "lngE6":-150435, + "guid":"918f7edeaf1b4083947957bc4e7bc130.16", + "latE6":51513410 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "be9218a7d2974d7f94abcfd6717a7ea0.b", + 1385655632013, + { + "points":[ + { + "lngE6":-152271, + "guid":"0a5e340f186d4aaca7904fbe5a3feba7.16", + "latE6":51516152 + }, + { + "lngE6":-152044, + "guid":"457d81eba6f542a1983154ec61155239.16", + "latE6":51515313 + }, + { + "lngE6":-153814, + "guid":"e0b231367a5b44459091f8722b9e451f.16", + "latE6":51514235 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "6d9844ff0a7d4952a5234d028fc0f1a4.b", + 1385576791017, + { + "points":[ + { + "lngE6":-151951, + "guid":"a24adc0a42d74c1397731cb7475d7c5d.16", + "latE6":51516526 + }, + { + "lngE6":-151762, + "guid":"ca57ec9edce1494eb28da06226772cd6.11", + "latE6":51517935 + }, + { + "lngE6":-150665, + "guid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "latE6":51515968 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "7826a01ffac541a7b6e2b956bc79fb11.b", + 1385369651793, + { + "points":[ + { + "lngE6":-149112, + "guid":"223a3fff9f5d4efc970c695477ac8d87.16", + "latE6":51515621 + }, + { + "lngE6":-149462, + "guid":"2f86b199c523422f8166ef915bdb1b70.16", + "latE6":51514228 + }, + { + "lngE6":-150129, + "guid":"df187c57c94a47c39aeec2b9854724f9.16", + "latE6":51515117 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "e473867e537548f0820953e8d1c606c8.9", + 1385576637363, + { + "oLatE6":51515117, + "dLatE6":51515621, + "dLngE6":-149112, + "team":"RESISTANCE", + "oGuid":"df187c57c94a47c39aeec2b9854724f9.16", + "type":"edge", + "dGuid":"223a3fff9f5d4efc970c695477ac8d87.16", + "oLngE6":-150129 + } + ], + [ + "960b4636ecc841ba804190843f715129.9", + 1385645776587, + { + "oLatE6":51515968, + "dLatE6":51517935, + "dLngE6":-151762, + "team":"RESISTANCE", + "oGuid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "type":"edge", + "dGuid":"ca57ec9edce1494eb28da06226772cd6.11", + "oLngE6":-150665 + } + ], + [ + "88844953ecf54149b7feb988910854ae.9", + 1385661945578, + { + "oLatE6":51514211, + "dLatE6":51515313, + "dLngE6":-152044, + "team":"RESISTANCE", + "oGuid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "type":"edge", + "dGuid":"457d81eba6f542a1983154ec61155239.16", + "oLngE6":-151942 + } + ], + [ + "a8084dcd0d1644499f0819adfcea1e96.9", + 1385771545394, + { + "oLatE6":51514228, + "dLatE6":51516368, + "dLngE6":-148230, + "team":"RESISTANCE", + "oGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "type":"edge", + "dGuid":"0cb8844196c240dfa79652a452934a15.11", + "oLngE6":-149462 + } + ], + [ + "c07098ef45ca45a5a4456d735f44241e.9", + 1385645776197, + { + "oLatE6":51515968, + "dLatE6":51515621, + "dLngE6":-149112, + "team":"RESISTANCE", + "oGuid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "type":"edge", + "dGuid":"223a3fff9f5d4efc970c695477ac8d87.16", + "oLngE6":-150665 + } + ], + [ + "c9c4ecc18ac24163bb937b86b48902dc.9", + 1385754891759, + { + "oLatE6":51511550, + "dLatE6":51510216, + "dLngE6":-145113, + "team":"ENLIGHTENED", + "oGuid":"56d5b86428c84aadac0d6214eff81f60.11", + "type":"edge", + "dGuid":"8a094798b0a54b9d81cc2992edbd53e1.11", + "oLngE6":-148266 + } + ], + [ + "7072c39f925f421baffb1e4bf60b02f1.9", + 1385647122053, + { + "oLatE6":51515968, + "dLatE6":51515313, + "dLngE6":-152044, + "team":"RESISTANCE", + "oGuid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "type":"edge", + "dGuid":"457d81eba6f542a1983154ec61155239.16", + "oLngE6":-150665 + } + ], + [ + "56a544e2c35d432aafdaaed99ad292dc.9", + 1385576791017, + { + "oLatE6":51515968, + "dLatE6":51516526, + "dLngE6":-151951, + "team":"RESISTANCE", + "oGuid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "type":"edge", + "dGuid":"a24adc0a42d74c1397731cb7475d7c5d.16", + "oLngE6":-150665 + } + ], + [ + "353fc49fb4b84e8c912b47685cdd17de.9", + 1385577901773, + { + "oLatE6":51514260, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-141839 + } + ], + [ + "531eef40d5184c58b84bdcf771477f08.9", + 1385647122053, + { + "oLatE6":51515968, + "dLatE6":51516152, + "dLngE6":-152271, + "team":"RESISTANCE", + "oGuid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "type":"edge", + "dGuid":"0a5e340f186d4aaca7904fbe5a3feba7.16", + "oLngE6":-150665 + } + ], + [ + "8e9ed368792d40d2aaa612f87348796b.9", + 1385750720448, + { + "oLatE6":51516681, + "dLatE6":51519513, + "dLngE6":-151818, + "team":"RESISTANCE", + "oGuid":"664552e088c24cda86826caf02a8f24b.16", + "type":"edge", + "dGuid":"bb2257f8954f4cb282b1a716dbf1b770.16", + "oLngE6":-160516 + } + ], + [ + "5d534086399a44869cdbbe5d4db58d02.9", + 1385750177389, + { + "oLatE6":51513222, + "dLatE6":51514211, + "dLngE6":-151942, + "team":"RESISTANCE", + "oGuid":"14eb22dca46e4f8dbb8ce7f592bdb148.16", + "type":"edge", + "dGuid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "oLngE6":-151021 + } + ], + [ + "1babe6042ab9447fab0d9bb7affb83b8.9", + 1385771545394, + { + "oLatE6":51514310, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"b45a5a0a21124c0cba28167094c94358.16", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-147665 + } + ], + [ + "35d4550a08264d9b811a6f94d4a30791.9", + 1385541248130, + { + "oLatE6":51509979, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"770fb08acd63484c88931ab98f1c8943.11", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-136298 + } + ], + [ + "950770189d6844e8a0d5e62ca41d6dbd.9", + 1385654637424, + { + "oLatE6":51515117, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"df187c57c94a47c39aeec2b9854724f9.16", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-150129 + } + ], + [ + "facef6508e7849a0921ad64778b45aac.9", + 1385754999512, + { + "oLatE6":51512712, + "dLatE6":51509347, + "dLngE6":-143285, + "team":"ENLIGHTENED", + "oGuid":"fecb59b9a1f342d88a767bfefbd98e2b.16", + "type":"edge", + "dGuid":"c59d1196b63b490ba209e13507e9e782.16", + "oLngE6":-147804 + } + ], + [ + "cd329776e961475d9498717a64d9d3a5.9", + 1385661945578, + { + "oLatE6":51515313, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"457d81eba6f542a1983154ec61155239.16", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-152044 + } + ], + [ + "d893ca4f164147dfaca88099a19596d7.9", + 1385750177389, + { + "oLatE6":51513410, + "dLatE6":51513222, + "dLngE6":-151021, + "team":"RESISTANCE", + "oGuid":"918f7edeaf1b4083947957bc4e7bc130.16", + "type":"edge", + "dGuid":"14eb22dca46e4f8dbb8ce7f592bdb148.16", + "oLngE6":-150435 + } + ], + [ + "08bca6bd59d5449da1e9d1dbf684206c.9", + 1385656796544, + { + "oLatE6":51514211, + "dLatE6":51514235, + "dLngE6":-153814, + "team":"RESISTANCE", + "oGuid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "type":"edge", + "dGuid":"e0b231367a5b44459091f8722b9e451f.16", + "oLngE6":-151942 + } + ], + [ + "075f2d3dee0a40079cc8c5c2201b5761.9", + 1385645776197, + { + "oLatE6":51516368, + "dLatE6":51515621, + "dLngE6":-149112, + "team":"RESISTANCE", + "oGuid":"0cb8844196c240dfa79652a452934a15.11", + "type":"edge", + "dGuid":"223a3fff9f5d4efc970c695477ac8d87.16", + "oLngE6":-148230 + } + ], + [ + "36f2a3e8aa4f4ceb83199a01a744ed58.9", + 1385074105982, + { + "oLatE6":51514228, + "dLatE6":51511686, + "dLngE6":-150364, + "team":"RESISTANCE", + "oGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "type":"edge", + "dGuid":"ffcded7f2a3d4672ab326efe8ebc7087.16", + "oLngE6":-149462 + } + ], + [ + "0dda932fd46845cb9bfff99beb77d40c.9", + 1385750349253, + { + "oLatE6":51514228, + "dLatE6":51513410, + "dLngE6":-150435, + "team":"RESISTANCE", + "oGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "type":"edge", + "dGuid":"918f7edeaf1b4083947957bc4e7bc130.16", + "oLngE6":-149462 + } + ], + [ + "8bf312c35efe44aea3e5a021e8d302df.9", + 1385751185290, + { + "oLatE6":51514235, + "dLatE6":51513607, + "dLngE6":-157821, + "team":"RESISTANCE", + "oGuid":"e0b231367a5b44459091f8722b9e451f.16", + "type":"edge", + "dGuid":"2f3ae2cc96b44d4087abb3ecabdfd31a.11", + "oLngE6":-153814 + } + ], + [ + "af059f4640fd4f978054cdeb6f998e9f.9", + 1385472014804, + { + "oLatE6":51514228, + "dLatE6":51515621, + "dLngE6":-149112, + "team":"RESISTANCE", + "oGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "type":"edge", + "dGuid":"223a3fff9f5d4efc970c695477ac8d87.16", + "oLngE6":-149462 + } + ], + [ + "dd3b4868cb74469aa69399b775ff8e48.9", + 1385754891759, + { + "oLatE6":51511550, + "dLatE6":51509664, + "dLngE6":-145506, + "team":"ENLIGHTENED", + "oGuid":"56d5b86428c84aadac0d6214eff81f60.11", + "type":"edge", + "dGuid":"bfcb133c0f3a43909be288eb27cf5968.16", + "oLngE6":-148266 + } + ], + [ + "bfb5cb65dc794a9f88b38fd7c01beb94.9", + 1385570845263, + { + "oLatE6":51511295, + "dLatE6":51510464, + "dLngE6":-149713, + "team":"RESISTANCE", + "oGuid":"52b33d95998045eba2545349588b56db.11", + "type":"edge", + "dGuid":"c48c85f57ec044389f5a65679acfca98.16", + "oLngE6":-150095 + } + ], + [ + "f94c4edb49574eb2998c500e5fd3e240.9", + 1385645776587, + { + "oLatE6":51516368, + "dLatE6":51515968, + "dLngE6":-150665, + "team":"RESISTANCE", + "oGuid":"0cb8844196c240dfa79652a452934a15.11", + "type":"edge", + "dGuid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "oLngE6":-148230 + } + ], + [ + "d4386f98b5364b86a912dcdaf5414765.9", + 1385570774718, + { + "oLatE6":51510464, + "dLatE6":51510149, + "dLngE6":-149267, + "team":"RESISTANCE", + "oGuid":"c48c85f57ec044389f5a65679acfca98.16", + "type":"edge", + "dGuid":"f177fead235c40a3a59e5f95afe7a330.12", + "oLngE6":-149713 + } + ], + [ + "4d62b712ce2046d59358580344ee9201.9", + 1385646897670, + { + "oLatE6":51516526, + "dLatE6":51516152, + "dLngE6":-152271, + "team":"RESISTANCE", + "oGuid":"a24adc0a42d74c1397731cb7475d7c5d.16", + "type":"edge", + "dGuid":"0a5e340f186d4aaca7904fbe5a3feba7.16", + "oLngE6":-151951 + } + ], + [ + "34033d8241624e47b80ef51bad412e3c.9", + 1385613893144, + { + "oLatE6":51503124, + "dLatE6":51515254, + "dLngE6":-168579, + "team":"RESISTANCE", + "oGuid":"94762abecaa34116a18166df417372e3.16", + "type":"edge", + "dGuid":"0d9d4cbcd478488cb44433a373659221.11", + "oLngE6":-150071 + } + ], + [ + "815c060444f6499daba9392dd4b51593.9", + 1385655632013, + { + "oLatE6":51516152, + "dLatE6":51515313, + "dLngE6":-152044, + "team":"RESISTANCE", + "oGuid":"0a5e340f186d4aaca7904fbe5a3feba7.16", + "type":"edge", + "dGuid":"457d81eba6f542a1983154ec61155239.16", + "oLngE6":-152271 + } + ], + [ + "50cd58e832fe46cda7577b87ec72dcf9.9", + 1385060925958, + { + "oLatE6":51516681, + "dLatE6":51522749, + "dLngE6":-155157, + "team":"RESISTANCE", + "oGuid":"664552e088c24cda86826caf02a8f24b.16", + "type":"edge", + "dGuid":"0eabb23fbd244c8cb8372f42780f5da1.16", + "oLngE6":-160516 + } + ], + [ + "c7a75d873d494998885f9e05ec88e916.9", + 1385750349253, + { + "oLatE6":51514211, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-151942 + } + ], + [ + "1b0ff1e100f34485a913ce54712ffec0.9", + 1385771545394, + { + "oLatE6":51516368, + "dLatE6":51514310, + "dLngE6":-147665, + "team":"RESISTANCE", + "oGuid":"0cb8844196c240dfa79652a452934a15.11", + "type":"edge", + "dGuid":"b45a5a0a21124c0cba28167094c94358.16", + "oLngE6":-148230 + } + ], + [ + "d25fa85590584d49a1bee2e48f11db15.9", + 1385646897670, + { + "oLatE6":51517188, + "dLatE6":51516152, + "dLngE6":-152271, + "team":"RESISTANCE", + "oGuid":"66ec22e29ac84a828d7203535c1f50c5.11", + "type":"edge", + "dGuid":"0a5e340f186d4aaca7904fbe5a3feba7.16", + "oLngE6":-152943 + } + ], + [ + "961a8eaeaae34d479531049295206aa0.9", + 1385656796544, + { + "oLatE6":51515313, + "dLatE6":51514235, + "dLngE6":-153814, + "team":"RESISTANCE", + "oGuid":"457d81eba6f542a1983154ec61155239.16", + "type":"edge", + "dGuid":"e0b231367a5b44459091f8722b9e451f.16", + "oLngE6":-152044 + } + ], + [ + "bcf14bd9d1e040669e83c6a0995b926d.9", + 1385750349253, + { + "oLatE6":51513410, + "dLatE6":51514211, + "dLngE6":-151942, + "team":"RESISTANCE", + "oGuid":"918f7edeaf1b4083947957bc4e7bc130.16", + "type":"edge", + "dGuid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "oLngE6":-150435 + } + ], + [ + "d5c020fbac984e379f0ee70ba62f89ba.9", + 1385632231155, + { + "oLatE6":51515968, + "dLatE6":51515117, + "dLngE6":-150129, + "team":"RESISTANCE", + "oGuid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "type":"edge", + "dGuid":"df187c57c94a47c39aeec2b9854724f9.16", + "oLngE6":-150665 + } + ], + [ + "6cefb2cfe7094e95b35fdb2b87e45bb6.9", + 1385655632013, + { + "oLatE6":51514235, + "dLatE6":51516152, + "dLngE6":-152271, + "team":"RESISTANCE", + "oGuid":"e0b231367a5b44459091f8722b9e451f.16", + "type":"edge", + "dGuid":"0a5e340f186d4aaca7904fbe5a3feba7.16", + "oLngE6":-153814 + } + ], + [ + "be6d0d6f91184e23805bfb24fd969255.9", + 1385654637424, + { + "oLatE6":51515117, + "dLatE6":51515313, + "dLngE6":-152044, + "team":"RESISTANCE", + "oGuid":"df187c57c94a47c39aeec2b9854724f9.16", + "type":"edge", + "dGuid":"457d81eba6f542a1983154ec61155239.16", + "oLngE6":-150129 + } + ], + [ + "17c382d2af024bf79999e01bc4f8323e.9", + 1385473818025, + { + "oLatE6":51514260, + "dLatE6":51514310, + "dLngE6":-147665, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"b45a5a0a21124c0cba28167094c94358.16", + "oLngE6":-141839 + } + ], + [ + "36f2a3e8aa4f4ceb83199a01a744ed58.9", + 0, + { + "oLatE6":51514228, + "dLatE6":51511686, + "dLngE6":-150364, + "team":"RESISTANCE", + "oGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "type":"edge", + "dGuid":"ffcded7f2a3d4672ab326efe8ebc7087.16", + "oLngE6":-149462 + } + ], + [ + "531eef40d5184c58b84bdcf771477f08.9", + 0, + { + "oLatE6":51515968, + "dLatE6":51516152, + "dLngE6":-152271, + "team":"RESISTANCE", + "oGuid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "type":"edge", + "dGuid":"0a5e340f186d4aaca7904fbe5a3feba7.16", + "oLngE6":-150665 + } + ], + [ + "be6d0d6f91184e23805bfb24fd969255.9", + 0, + { + "oLatE6":51515117, + "dLatE6":51515313, + "dLngE6":-152044, + "team":"RESISTANCE", + "oGuid":"df187c57c94a47c39aeec2b9854724f9.16", + "type":"edge", + "dGuid":"457d81eba6f542a1983154ec61155239.16", + "oLngE6":-150129 + } + ], + [ + "bfb5cb65dc794a9f88b38fd7c01beb94.9", + 0, + { + "oLatE6":51511295, + "dLatE6":51510464, + "dLngE6":-149713, + "team":"RESISTANCE", + "oGuid":"52b33d95998045eba2545349588b56db.11", + "type":"edge", + "dGuid":"c48c85f57ec044389f5a65679acfca98.16", + "oLngE6":-150095 + } + ], + [ + "d5c020fbac984e379f0ee70ba62f89ba.9", + 0, + { + "oLatE6":51515968, + "dLatE6":51515117, + "dLngE6":-150129, + "team":"RESISTANCE", + "oGuid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "type":"edge", + "dGuid":"df187c57c94a47c39aeec2b9854724f9.16", + "oLngE6":-150665 + } + ], + [ + "950770189d6844e8a0d5e62ca41d6dbd.9", + 0, + { + "oLatE6":51515117, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"df187c57c94a47c39aeec2b9854724f9.16", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-150129 + } + ], + [ + "88844953ecf54149b7feb988910854ae.9", + 0, + { + "oLatE6":51514211, + "dLatE6":51515313, + "dLngE6":-152044, + "team":"RESISTANCE", + "oGuid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "type":"edge", + "dGuid":"457d81eba6f542a1983154ec61155239.16", + "oLngE6":-151942 + } + ], + [ + "5d534086399a44869cdbbe5d4db58d02.9", + 0, + { + "oLatE6":51513222, + "dLatE6":51514211, + "dLngE6":-151942, + "team":"RESISTANCE", + "oGuid":"14eb22dca46e4f8dbb8ce7f592bdb148.16", + "type":"edge", + "dGuid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "oLngE6":-151021 + } + ], + [ + "c7a75d873d494998885f9e05ec88e916.9", + 0, + { + "oLatE6":51514211, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-151942 + } + ], + [ + "08bca6bd59d5449da1e9d1dbf684206c.9", + 0, + { + "oLatE6":51514211, + "dLatE6":51514235, + "dLngE6":-153814, + "team":"RESISTANCE", + "oGuid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "type":"edge", + "dGuid":"e0b231367a5b44459091f8722b9e451f.16", + "oLngE6":-151942 + } + ], + [ + "af059f4640fd4f978054cdeb6f998e9f.9", + 0, + { + "oLatE6":51514228, + "dLatE6":51515621, + "dLngE6":-149112, + "team":"RESISTANCE", + "oGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "type":"edge", + "dGuid":"223a3fff9f5d4efc970c695477ac8d87.16", + "oLngE6":-149462 + } + ], + [ + "c07098ef45ca45a5a4456d735f44241e.9", + 0, + { + "oLatE6":51515968, + "dLatE6":51515621, + "dLngE6":-149112, + "team":"RESISTANCE", + "oGuid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "type":"edge", + "dGuid":"223a3fff9f5d4efc970c695477ac8d87.16", + "oLngE6":-150665 + } + ], + [ + "6cefb2cfe7094e95b35fdb2b87e45bb6.9", + 0, + { + "oLatE6":51514235, + "dLatE6":51516152, + "dLngE6":-152271, + "team":"RESISTANCE", + "oGuid":"e0b231367a5b44459091f8722b9e451f.16", + "type":"edge", + "dGuid":"0a5e340f186d4aaca7904fbe5a3feba7.16", + "oLngE6":-153814 + } + ], + [ + "815c060444f6499daba9392dd4b51593.9", + 0, + { + "oLatE6":51516152, + "dLatE6":51515313, + "dLngE6":-152044, + "team":"RESISTANCE", + "oGuid":"0a5e340f186d4aaca7904fbe5a3feba7.16", + "type":"edge", + "dGuid":"457d81eba6f542a1983154ec61155239.16", + "oLngE6":-152271 + } + ], + [ + "7072c39f925f421baffb1e4bf60b02f1.9", + 0, + { + "oLatE6":51515968, + "dLatE6":51515313, + "dLngE6":-152044, + "team":"RESISTANCE", + "oGuid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "type":"edge", + "dGuid":"457d81eba6f542a1983154ec61155239.16", + "oLngE6":-150665 + } + ], + [ + "961a8eaeaae34d479531049295206aa0.9", + 0, + { + "oLatE6":51515313, + "dLatE6":51514235, + "dLngE6":-153814, + "team":"RESISTANCE", + "oGuid":"457d81eba6f542a1983154ec61155239.16", + "type":"edge", + "dGuid":"e0b231367a5b44459091f8722b9e451f.16", + "oLngE6":-152044 + } + ], + [ + "e473867e537548f0820953e8d1c606c8.9", + 0, + { + "oLatE6":51515117, + "dLatE6":51515621, + "dLngE6":-149112, + "team":"RESISTANCE", + "oGuid":"df187c57c94a47c39aeec2b9854724f9.16", + "type":"edge", + "dGuid":"223a3fff9f5d4efc970c695477ac8d87.16", + "oLngE6":-150129 + } + ], + [ + "1babe6042ab9447fab0d9bb7affb83b8.9", + 0, + { + "oLatE6":51514310, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"b45a5a0a21124c0cba28167094c94358.16", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-147665 + } + ], + [ + "0dda932fd46845cb9bfff99beb77d40c.9", + 0, + { + "oLatE6":51514228, + "dLatE6":51513410, + "dLngE6":-150435, + "team":"RESISTANCE", + "oGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "type":"edge", + "dGuid":"918f7edeaf1b4083947957bc4e7bc130.16", + "oLngE6":-149462 + } + ], + [ + "d893ca4f164147dfaca88099a19596d7.9", + 0, + { + "oLatE6":51513410, + "dLatE6":51513222, + "dLngE6":-151021, + "team":"RESISTANCE", + "oGuid":"918f7edeaf1b4083947957bc4e7bc130.16", + "type":"edge", + "dGuid":"14eb22dca46e4f8dbb8ce7f592bdb148.16", + "oLngE6":-150435 + } + ], + [ + "bcf14bd9d1e040669e83c6a0995b926d.9", + 0, + { + "oLatE6":51513410, + "dLatE6":51514211, + "dLngE6":-151942, + "team":"RESISTANCE", + "oGuid":"918f7edeaf1b4083947957bc4e7bc130.16", + "type":"edge", + "dGuid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "oLngE6":-150435 + } + ], + [ + "cd329776e961475d9498717a64d9d3a5.9", + 0, + { + "oLatE6":51515313, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"457d81eba6f542a1983154ec61155239.16", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-152044 + } + ], + [ + "d4386f98b5364b86a912dcdaf5414765.9", + 0, + { + "oLatE6":51510464, + "dLatE6":51510149, + "dLngE6":-149267, + "team":"RESISTANCE", + "oGuid":"c48c85f57ec044389f5a65679acfca98.16", + "type":"edge", + "dGuid":"f177fead235c40a3a59e5f95afe7a330.12", + "oLngE6":-149713 + } + ] + ] + }, + "1_32741_21790":{ + "deletedGameEntityGuids":[ + "7501732989dc4004a86bd4495b664bbd.b", + "a45d224cc1444899ace43ef43c80ab99.b", + "4c4c4b38f8644894b60e957267b6bc4f.b", + "5c63ea938f514e25896b8a2aa39f0692.b", + "3e18aa91165c4a458f22f27636c48395.b", + "6075a26765cc4506af66416517947257.b", + "d848629d72484e199610a80d43b66df3.b", + "899d065260bd4464a376e38ada55d2de.b", + "aaf70c9729154c13aa5f847c9491dde5.9", + "c72ecd698da74ea5a0a0053ec881c6b8.9", + "35caa62f29f0411abdc34a34d0b7cc90.9", + "0f761122f9cd4b4388236f43128a4c86.9", + "59fb111a05d141c884b4e705e8c1ab5c.9", + "6673ac2a0c424d5c90af4ab198d546a6.9", + "1c6757b1666c4e6dab984a261f338fa5.9", + "8f7f2f96910a4fcb90be57c9ea8c1a31.9", + "d7c8741cfc304a61a2e1c837b17708ee.9", + "e92971f8778d4942bb7dd783d7cc4a34.9", + "21d7d3e12e734538a948ec544eb867ba.9", + "3df7b5434a0a4e158b7a0e0fa81327d8.9", + "903ca96311db4bde8a0f8239273f49d3.9", + "1b31d5d4792241c487c3f55a063c7b3d.9", + "83fd455452ad4d72a6dec3b444fc20a7.9", + "94c7e110d8fb43f1a78867cf61ff64f1.9" + ], + "gameEntities":[ + [ + "b45a5a0a21124c0cba28167094c94358.16", + 1385771544876, + { + "level":6, + "title":"The Woodstock", + "image":"http://lh5.ggpht.com/V9lHY1dF8Ml_ygQ4Cc3uEDlgJ_37JsrObyYST4AXdIWmS_3VUgsM2MucS3Ke6ke__6Q7YN9bZ5l1gZk2LqSYTQ", + "resCount":8, + "latE6":51514310, + "health":80.0, + "team":"RESISTANCE", + "lngE6":-147665, + "type":"portal" + } + ], + [ + "c496bb33b1864e26be9d0b6e21535917.16", + 1385753624901, + { + "level":4, + "title":"Royal College of Nursing - Library", + "image":"http://lh6.ggpht.com/tY8biSicll6V57lPtexAQHeknl16OwVlrDJp5ek1G6bLiD7DBQ75mFlzGkEO7bPGhnQdoPlBKs-mg697EPFGfg", + "resCount":8, + "latE6":51515986, + "health":51.0, + "team":"ENLIGHTENED", + "lngE6":-145696, + "type":"portal" + } + ], + [ + "51502606f12c4eaebef135ac5e48c751.16", + 1385766074861, + { + "level":6, + "title":"Regent Arcade House", + "image":"http://lh4.ggpht.com/Q7tg8F9zDIAq9J5d9sJxbG6iFPsd3pkB8AvuAMZsqRmnQLUSo2E7ukxA175I4sT8sS1u3j8pBw_SUF-CtVRC", + "resCount":8, + "latE6":51514835, + "health":85.0, + "team":"RESISTANCE", + "lngE6":-141049, + "type":"portal" + } + ], + [ + "bfcb133c0f3a43909be288eb27cf5968.16", + 1385754880940, + { + "level":5, + "title":"Pilgrim of the Future ", + "image":"http://lh6.ggpht.com/3I0TAOcR9NTABhLJojUbkXK-WxMPbBf7erlk_upuqhS9GR31fTiUxAGzJ2CsUmmjUWkS3YDAeuE1vj2weuqA", + "resCount":8, + "latE6":51509664, + "health":100.0, + "team":"ENLIGHTENED", + "lngE6":-145506, + "type":"portal" + } + ], + [ + "2f86b199c523422f8166ef915bdb1b70.16", + 1385767610408, + { + "level":7, + "title":"Bond Street Station", + "image":"http://lh3.ggpht.com/_TK-XP1k9fPPeoDw_Zfml_2MLfHg1deEvh0gw5trLJlVrzREoQM_9AQtFYMDxXDwU9LPr72O-wBplIMBej0", + "resCount":8, + "latE6":51514228, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-149462, + "type":"portal" + } + ], + [ + "01960f90a13c4259b2921bec1fb45b2c.11", + 1385733727598, + { + "level":1, + "title":"Hanover Square - William Pitt Statue", + "image":"http://lh3.ggpht.com/wcExZAABxyfYUUIPMBj5b2Pj7m6Po2jsB3KcpVcxOqEvHj10Fm8yqFehqDtMPqMnT3LnxNQepEK4oDPtNOZZvvilxySX5M0csKbia27jSxM66Qo", + "resCount":1, + "latE6":51513667, + "health":28.0, + "team":"RESISTANCE", + "lngE6":-143707, + "type":"portal" + } + ], + [ + "764aeb38065b47d992e843d4ae77d15d.11", + 1385731498399, + { + "level":3, + "title":"Vogue House, Hanover Square", + "image":"http://lh5.ggpht.com/09fmmo18-rIqt8iYFU9EM1gZefNWBefvOtVahOhxuG0IEweJzI0BUnMfTGejSFc7yVDCCwG1KvW4tjjyum4sr8M_GHy5DYbDfncRQM9X0Zhdhvw", + "resCount":5, + "latE6":51513462, + "health":32.0, + "team":"RESISTANCE", + "lngE6":-143165, + "type":"portal" + } + ], + [ + "dbbfe3f544af4659ad4a7388fa77e3d5.12", + 1385753715962, + { + "level":2, + "title":"One Hanover Street", + "image":"http://www.panoramio.com/photos/small/40971120.jpg", + "resCount":8, + "latE6":51513839, + "health":69.0, + "team":"ENLIGHTENED", + "lngE6":-142541, + "type":"portal" + } + ], + [ + "f693d048db644bd6ab10f8f332cdc286.16", + 1385731470196, + { + "level":4, + "title":"The Masons Arms - Maddox Street", + "image":"http://lh5.ggpht.com/prSa1VQdjkf5wdh2ZmU3Wo26eAuOXTuGTSqcxUvQl63bDuZp7mWFATRScaNn1CXzJV4eVVHfkjxPdYwVVPaqxACLmj7zgTx2x48HlBhsHx3fz0OIkw", + "resCount":5, + "latE6":51512787, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-142613, + "type":"portal" + } + ], + [ + "dc2192d231d147f3aa8fb4b7c060bd5b.16", + 1385747494378, + { + "level":6, + "title":"Roman Helmet ", + "image":"http://lh6.ggpht.com/3gck_cCKPIBTAryREX51u9e_E3t_QcH912ri-g9wwufOSmmXdWLsVAlWdeF9t_TcNvh3jlpZQ4ZPIAtpDsM2", + "resCount":8, + "latE6":51514440, + "health":55.0, + "team":"RESISTANCE", + "lngE6":-141353, + "type":"portal" + } + ], + [ + "56d5b86428c84aadac0d6214eff81f60.11", + 1385754907692, + { + "level":5, + "title":"Mayfair Post Office, London", + "image":"http://lh5.ggpht.com/5963D4ATz31LG-zWuPSWrdUKqq_u09-C-GNcyNd6vH1isg7PQjax2niQ5LbZfAwnjnB4DJITWbfuGeMH0MnDqThnmI_CNWIQ2euXk8Cwjls0yXO88A", + "resCount":8, + "latE6":51511550, + "health":100.0, + "team":"ENLIGHTENED", + "lngE6":-148266, + "type":"portal" + } + ], + [ + "2736d95c14834f49963dcd1ac6d20e1f.16", + 1385754511911, + { + "level":5, + "title":"Ideka Japanese Restaurant ", + "image":"http://lh4.ggpht.com/KHVquwazmQ3QAkW_5N9AN6fpKVvF1yBSmWu6KWsgJX7BRKMzUbvAcwYngG7dHGBBpc_P-YJRk4N-fxMONHDr", + "resCount":8, + "latE6":51513092, + "health":26.0, + "team":"ENLIGHTENED", + "lngE6":-146417, + "type":"portal" + } + ], + [ + "cdd3a54085a547f2a7320af688888f09.16", + 1385748399688, + { + "level":1, + "title":"Browns Bar", + "image":"http://lh4.ggpht.com/Dv6lYs0UMXlGklEJhtQNE4q_35ZkQooCtaK13ZOyJUAWEMvOLsJY24ZGkUhljiAeZsdsh916b4tDb8CGcSE", + "resCount":3, + "latE6":51512414, + "health":25.0, + "team":"ENLIGHTENED", + "lngE6":-143827, + "type":"portal" + } + ], + [ + "a3cd224132f544e99255cdab6b67c8e0.16", + 1385730711985, + { + "level":4, + "title":"Fine Art Society", + "image":"http://lh4.ggpht.com/yC-itqa1j9kIZISezpUyPXG5WGZi9Uv43Ssrw-bcqGO2DYsPYytAzgvAOtkddKXHKa0ombb27dnKWnskErLc", + "resCount":6, + "latE6":51511319, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-143617, + "type":"portal" + } + ], + [ + "1de1c2d0294148be8e0b739d1f6972f1.12", + 1385767545111, + { + "level":5, + "title":"Winged Figure. Barbara Hepwort", + "image":"http://www.panoramio.com/photos/small/33956036.jpg", + "resCount":8, + "latE6":51515127, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-144415, + "type":"portal" + } + ], + [ + "a0c12b7e99e742859b793017bbbdeb18.16", + 1385732881055, + { + "level":4, + "title":"Fancy Bear in the Brooks", + "image":"http://lh5.ggpht.com/ulCo8yUxWkgd92xDC3HEN9YqINAuDYLKe5MbHqcICXl7RmssBMXnOQ0qJ1XDZ3Mo-G3QKzGsvuRbPOo5RZze", + "resCount":8, + "latE6":51512467, + "health":67.0, + "team":"ENLIGHTENED", + "lngE6":-146070, + "type":"portal" + } + ], + [ + "8a094798b0a54b9d81cc2992edbd53e1.11", + 1385754891279, + { + "level":5, + "title":"Queen Elizabeth II Birth Plaque", + "image":"http://lh6.ggpht.com/_aGA3Fy3w5Av-3hXbzyQ_yBKUG2IR0h0wtibr5NZwqVQ1qkRjOBDuyIj0fJdqcLvve_kfuoW7zj1MyXZ4TrQqGvBEQcp_sHmFB8z95MHEN3TNxaRFA", + "resCount":8, + "latE6":51510216, + "health":100.0, + "team":"ENLIGHTENED", + "lngE6":-145113, + "type":"portal" + } + ], + [ + "fecb59b9a1f342d88a767bfefbd98e2b.16", + 1385754999512, + { + "level":5, + "title":"Claridge's", + "image":"http://lh6.ggpht.com/Nw_AUCmV6y_6UszJGrSLm1Fhj2mGWeQ7jjY124RdcUjN_yfvwX-0U6D6yY2DLBsAke__7A00ykRl1uavUOs0aw", + "resCount":8, + "latE6":51512712, + "health":87.0, + "team":"ENLIGHTENED", + "lngE6":-147804, + "type":"portal" + } + ], + [ + "65854ea080ad4c47af9a846bd2157a32.11", + 1385754050543, + { + "level":2, + "title":"1930s Red Telephone Box", + "image":"http://lh3.ggpht.com/Hqf1WDZsfcQFfh4Aj7gXyD7IJ1clxZAKqI14vwGp-44pH0kORC-enFJKHOJ2fjWnRB22YoEXswPVwNzxregOLX1sigE-zBwjJBWKncqRXqjoFZ4", + "resCount":8, + "latE6":51513771, + "health":73.0, + "team":"ENLIGHTENED", + "lngE6":-143224, + "type":"portal" + } + ], + [ + "3c54417b68c84dd387cd67765d6e3703.12", + 1385757386511, + { + "level":5, + "title":"Seven Seas Maritime: Fish Scul", + "image":"http://www.panoramio.com/photos/small/64747011.jpg", + "resCount":8, + "latE6":51509739, + "health":53.0, + "team":"ENLIGHTENED", + "lngE6":-146652, + "type":"portal" + } + ], + [ + "672ecb2577114bd588551dc257543307.12", + 1385730654159, + { + "level":5, + "title":"Churchill & Roosevelt statue, ", + "image":"http://www.panoramio.com/photos/small/785572.jpg", + "resCount":8, + "latE6":51510385, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-142602, + "type":"portal" + } + ], + [ + "7efd900fbc744812b49aab6d0226d2d1.11", + 1385764455820, + { + "level":2, + "title":"Hanover Square - Fountain", + "image":"http://lh6.ggpht.com/TFBzuUVsAcjfDWCNZAeCFBzdA4h9AOPX5zZQG0z9PKv5t0dpqx4-xPDO3mwTZMFdWeyQRBI4lUJbh-8wreLhGofS1YettJJmx1GQUcHCy5sN2MU", + "resCount":3, + "latE6":51514039, + "health":70.0, + "team":"RESISTANCE", + "lngE6":-143862, + "type":"portal" + } + ], + [ + "33fe90d0a2d04d0db47002285eaf2766.11", + 1385747555742, + { + "level":6, + "title":"Apple Store - Regent Street", + "image":"http://lh3.ggpht.com/UQY7Ckp-hlTVow0Qk6aN64iRUnH6G_8OFQlu96ooS_lslhdt4JnWWlQ2g1Yv_VreqBlJ2o7nznyMhMZwqHxZG12SOPF52Vv_vBnTh9k0bPsqbfR3", + "resCount":8, + "latE6":51514260, + "health":77.0, + "team":"RESISTANCE", + "lngE6":-141839, + "type":"portal" + } + ], + [ + "df982344b2cc44d8bce231d9f65ecab9.b", + 1385750349253, + { + "points":[ + { + "lngE6":-149462, + "guid":"2f86b199c523422f8166ef915bdb1b70.16", + "latE6":51514228 + }, + { + "lngE6":-150435, + "guid":"918f7edeaf1b4083947957bc4e7bc130.16", + "latE6":51513410 + }, + { + "lngE6":-151942, + "guid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "latE6":51514211 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "864ab7bba0b649b980117b3ec898b87d.b", + 1385771545394, + { + "points":[ + { + "lngE6":-148230, + "guid":"0cb8844196c240dfa79652a452934a15.11", + "latE6":51516368 + }, + { + "lngE6":-147665, + "guid":"b45a5a0a21124c0cba28167094c94358.16", + "latE6":51514310 + }, + { + "lngE6":-149462, + "guid":"2f86b199c523422f8166ef915bdb1b70.16", + "latE6":51514228 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "656bd2196d474ee482e26e1e5da0824c.b", + 1385754527834, + { + "points":[ + { + "lngE6":-146652, + "guid":"3c54417b68c84dd387cd67765d6e3703.12", + "latE6":51509739 + }, + { + "lngE6":-143285, + "guid":"c59d1196b63b490ba209e13507e9e782.16", + "latE6":51509347 + }, + { + "lngE6":-144961, + "guid":"b586841bf4ce4acc9c90bed7195572a9.12", + "latE6":51508992 + } + ], + "type":"region", + "team":"ENLIGHTENED" + } + ], + [ + "7b85e3ef2a4b4cf1bedace0b7c1ef464.b", + 1385582249184, + { + "points":[ + { + "lngE6":-141449, + "guid":"05322044531c400fa651cae68b14070f.11", + "latE6":51515259 + }, + { + "lngE6":-141049, + "guid":"51502606f12c4eaebef135ac5e48c751.16", + "latE6":51514835 + }, + { + "lngE6":-141353, + "guid":"dc2192d231d147f3aa8fb4b7c060bd5b.16", + "latE6":51514440 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "127fa78ca3394b568e4769a043b3e7c9.b", + 1385580364098, + { + "points":[ + { + "lngE6":-141449, + "guid":"05322044531c400fa651cae68b14070f.11", + "latE6":51515259 + }, + { + "lngE6":-140773, + "guid":"db954eb71cb949ad94084d790b399fee.16", + "latE6":51514704 + }, + { + "lngE6":-141049, + "guid":"51502606f12c4eaebef135ac5e48c751.16", + "latE6":51514835 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "eb38ce937b5145158149398ef0291744.b", + 1385472014804, + { + "points":[ + { + "lngE6":-148230, + "guid":"0cb8844196c240dfa79652a452934a15.11", + "latE6":51516368 + }, + { + "lngE6":-149462, + "guid":"2f86b199c523422f8166ef915bdb1b70.16", + "latE6":51514228 + }, + { + "lngE6":-149112, + "guid":"223a3fff9f5d4efc970c695477ac8d87.16", + "latE6":51515621 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "b33b049eaf5d4c1587d4c595df2b5113.b", + 1385473816596, + { + "points":[ + { + "lngE6":-149462, + "guid":"2f86b199c523422f8166ef915bdb1b70.16", + "latE6":51514228 + }, + { + "lngE6":-147665, + "guid":"b45a5a0a21124c0cba28167094c94358.16", + "latE6":51514310 + }, + { + "lngE6":-141839, + "guid":"33fe90d0a2d04d0db47002285eaf2766.11", + "latE6":51514260 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "cc1eea50fae04713b4d782b999b8e4e3.b", + 1385754891759, + { + "points":[ + { + "lngE6":-148266, + "guid":"56d5b86428c84aadac0d6214eff81f60.11", + "latE6":51511550 + }, + { + "lngE6":-145113, + "guid":"8a094798b0a54b9d81cc2992edbd53e1.11", + "latE6":51510216 + }, + { + "lngE6":-145506, + "guid":"bfcb133c0f3a43909be288eb27cf5968.16", + "latE6":51509664 + } + ], + "type":"region", + "team":"ENLIGHTENED" + } + ], + [ + "3259bf135edc4f10b9b5ec64c8e55614.b", + 1385661945578, + { + "points":[ + { + "lngE6":-149462, + "guid":"2f86b199c523422f8166ef915bdb1b70.16", + "latE6":51514228 + }, + { + "lngE6":-151942, + "guid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "latE6":51514211 + }, + { + "lngE6":-152044, + "guid":"457d81eba6f542a1983154ec61155239.16", + "latE6":51515313 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "22a4c0cf2c604900997f6bd1d9fa018f.b", + 1385654637424, + { + "points":[ + { + "lngE6":-149462, + "guid":"2f86b199c523422f8166ef915bdb1b70.16", + "latE6":51514228 + }, + { + "lngE6":-152044, + "guid":"457d81eba6f542a1983154ec61155239.16", + "latE6":51515313 + }, + { + "lngE6":-150129, + "guid":"df187c57c94a47c39aeec2b9854724f9.16", + "latE6":51515117 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "5f9447c37b9f4d4bbfa47eb053d7fb63.b", + 1385625228075, + { + "points":[ + { + "lngE6":-139979, + "guid":"0497a427aeee443b8a9344f3e42878c5.16", + "latE6":51513159 + }, + { + "lngE6":-141839, + "guid":"33fe90d0a2d04d0db47002285eaf2766.11", + "latE6":51514260 + }, + { + "lngE6":-140950, + "guid":"471691e68499419e9e1a7f90b9d3929f.12", + "latE6":51513861 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "2b465cbe51554b2ebbfea6ba67810c96.b", + 1385582115022, + { + "points":[ + { + "lngE6":-141049, + "guid":"51502606f12c4eaebef135ac5e48c751.16", + "latE6":51514835 + }, + { + "lngE6":-140773, + "guid":"db954eb71cb949ad94084d790b399fee.16", + "latE6":51514704 + }, + { + "lngE6":-140594, + "guid":"f40dcd87c4764789a72fecdd97fd4ed4.11", + "latE6":51514522 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "452a0e2451de4b45b0850bf65144083f.b", + 1385740085724, + { + "points":[ + { + "lngE6":-145113, + "guid":"8a094798b0a54b9d81cc2992edbd53e1.11", + "latE6":51510216 + }, + { + "lngE6":-143285, + "guid":"c59d1196b63b490ba209e13507e9e782.16", + "latE6":51509347 + }, + { + "lngE6":-145506, + "guid":"bfcb133c0f3a43909be288eb27cf5968.16", + "latE6":51509664 + } + ], + "type":"region", + "team":"ENLIGHTENED" + } + ], + [ + "7826a01ffac541a7b6e2b956bc79fb11.b", + 1385369651793, + { + "points":[ + { + "lngE6":-149112, + "guid":"223a3fff9f5d4efc970c695477ac8d87.16", + "latE6":51515621 + }, + { + "lngE6":-149462, + "guid":"2f86b199c523422f8166ef915bdb1b70.16", + "latE6":51514228 + }, + { + "lngE6":-150129, + "guid":"df187c57c94a47c39aeec2b9854724f9.16", + "latE6":51515117 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "502381e76870402e9da16405a4cb50df.9", + 1385632734585, + { + "oLatE6":51514260, + "dLatE6":51513462, + "dLngE6":-143165, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"764aeb38065b47d992e843d4ae77d15d.11", + "oLngE6":-141839 + } + ], + [ + "d2cbe4cf824f4f21a55021bcd0d881ab.9", + 1385747260119, + { + "oLatE6":51511643, + "dLatE6":51513861, + "dLngE6":-140950, + "team":"RESISTANCE", + "oGuid":"f13c73e60e714ce6b444b4f7ba751e17.11", + "type":"edge", + "dGuid":"471691e68499419e9e1a7f90b9d3929f.12", + "oLngE6":-137211 + } + ], + [ + "a47d16cfecbc4b71afcd38a321e9e178.9", + 1385582249184, + { + "oLatE6":51514835, + "dLatE6":51514440, + "dLngE6":-141353, + "team":"RESISTANCE", + "oGuid":"51502606f12c4eaebef135ac5e48c751.16", + "type":"edge", + "dGuid":"dc2192d231d147f3aa8fb4b7c060bd5b.16", + "oLngE6":-141049 + } + ], + [ + "dbfecd40986d41379f1812b49f5a0ca7.9", + 1385625228075, + { + "oLatE6":51514260, + "dLatE6":51513861, + "dLngE6":-140950, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"471691e68499419e9e1a7f90b9d3929f.12", + "oLngE6":-141839 + } + ], + [ + "a8084dcd0d1644499f0819adfcea1e96.9", + 1385771545394, + { + "oLatE6":51514228, + "dLatE6":51516368, + "dLngE6":-148230, + "team":"RESISTANCE", + "oGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "type":"edge", + "dGuid":"0cb8844196c240dfa79652a452934a15.11", + "oLngE6":-149462 + } + ], + [ + "353fc49fb4b84e8c912b47685cdd17de.9", + 1385577901773, + { + "oLatE6":51514260, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-141839 + } + ], + [ + "57f8e0f6556e4ea499d5ebeb20d46d36.9", + 1385625228075, + { + "oLatE6":51514260, + "dLatE6":51513159, + "dLngE6":-139979, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"0497a427aeee443b8a9344f3e42878c5.16", + "oLngE6":-141839 + } + ], + [ + "f67ae2fb1af745939b395f9ec419f7bf.9", + 1385740085724, + { + "oLatE6":51509664, + "dLatE6":51509347, + "dLngE6":-143285, + "team":"ENLIGHTENED", + "oGuid":"bfcb133c0f3a43909be288eb27cf5968.16", + "type":"edge", + "dGuid":"c59d1196b63b490ba209e13507e9e782.16", + "oLngE6":-145506 + } + ], + [ + "950770189d6844e8a0d5e62ca41d6dbd.9", + 1385654637424, + { + "oLatE6":51515117, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"df187c57c94a47c39aeec2b9854724f9.16", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-150129 + } + ], + [ + "facef6508e7849a0921ad64778b45aac.9", + 1385754999512, + { + "oLatE6":51512712, + "dLatE6":51509347, + "dLngE6":-143285, + "team":"ENLIGHTENED", + "oGuid":"fecb59b9a1f342d88a767bfefbd98e2b.16", + "type":"edge", + "dGuid":"c59d1196b63b490ba209e13507e9e782.16", + "oLngE6":-147804 + } + ], + [ + "075f2d3dee0a40079cc8c5c2201b5761.9", + 1385645776197, + { + "oLatE6":51516368, + "dLatE6":51515621, + "dLngE6":-149112, + "team":"RESISTANCE", + "oGuid":"0cb8844196c240dfa79652a452934a15.11", + "type":"edge", + "dGuid":"223a3fff9f5d4efc970c695477ac8d87.16", + "oLngE6":-148230 + } + ], + [ + "0dda932fd46845cb9bfff99beb77d40c.9", + 1385750349253, + { + "oLatE6":51514228, + "dLatE6":51513410, + "dLngE6":-150435, + "team":"RESISTANCE", + "oGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "type":"edge", + "dGuid":"918f7edeaf1b4083947957bc4e7bc130.16", + "oLngE6":-149462 + } + ], + [ + "2ccfd5cd8bb0437ba102f4caff4c7518.9", + 1385578078100, + { + "oLatE6":51514260, + "dLatE6":51512246, + "dLngE6":-132564, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"f93d9ee0fa8240d3a55e3b0d3aad96f0.11", + "oLngE6":-141839 + } + ], + [ + "ec7972a6329e489796ea2d68393ed664.9", + 1385754527834, + { + "oLatE6":51509347, + "dLatE6":51509739, + "dLngE6":-146652, + "team":"ENLIGHTENED", + "oGuid":"c59d1196b63b490ba209e13507e9e782.16", + "type":"edge", + "dGuid":"3c54417b68c84dd387cd67765d6e3703.12", + "oLngE6":-143285 + } + ], + [ + "dd3b4868cb74469aa69399b775ff8e48.9", + 1385754891759, + { + "oLatE6":51511550, + "dLatE6":51509664, + "dLngE6":-145506, + "team":"ENLIGHTENED", + "oGuid":"56d5b86428c84aadac0d6214eff81f60.11", + "type":"edge", + "dGuid":"bfcb133c0f3a43909be288eb27cf5968.16", + "oLngE6":-148266 + } + ], + [ + "c7a75d873d494998885f9e05ec88e916.9", + 1385750349253, + { + "oLatE6":51514211, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-151942 + } + ], + [ + "14ab35488ee042e983222ca16948eff9.9", + 1385754891759, + { + "oLatE6":51510216, + "dLatE6":51509664, + "dLngE6":-145506, + "team":"ENLIGHTENED", + "oGuid":"8a094798b0a54b9d81cc2992edbd53e1.11", + "type":"edge", + "dGuid":"bfcb133c0f3a43909be288eb27cf5968.16", + "oLngE6":-145113 + } + ], + [ + "f7ea70142e424d6c886352102c7189db.9", + 1385632874733, + { + "oLatE6":51514440, + "dLatE6":51515259, + "dLngE6":-141449, + "team":"RESISTANCE", + "oGuid":"dc2192d231d147f3aa8fb4b7c060bd5b.16", + "type":"edge", + "dGuid":"05322044531c400fa651cae68b14070f.11", + "oLngE6":-141353 + } + ], + [ + "b1f4ec25949b462993b7e8ab5092fdb4.9", + 1385747555742, + { + "oLatE6":51521425, + "dLatE6":51514260, + "dLngE6":-141839, + "team":"RESISTANCE", + "oGuid":"ebeee5e795f24776b184236a6de00e84.16", + "type":"edge", + "dGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "oLngE6":-140080 + } + ], + [ + "c9c4ecc18ac24163bb937b86b48902dc.9", + 1385754891759, + { + "oLatE6":51511550, + "dLatE6":51510216, + "dLngE6":-145113, + "team":"ENLIGHTENED", + "oGuid":"56d5b86428c84aadac0d6214eff81f60.11", + "type":"edge", + "dGuid":"8a094798b0a54b9d81cc2992edbd53e1.11", + "oLngE6":-148266 + } + ], + [ + "f8e769d955654caab03bb81b2627b955.9", + 1385754511911, + { + "oLatE6":51509347, + "dLatE6":51513092, + "dLngE6":-146417, + "team":"ENLIGHTENED", + "oGuid":"c59d1196b63b490ba209e13507e9e782.16", + "type":"edge", + "dGuid":"2736d95c14834f49963dcd1ac6d20e1f.16", + "oLngE6":-143285 + } + ], + [ + "1babe6042ab9447fab0d9bb7affb83b8.9", + 1385771545394, + { + "oLatE6":51514310, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"b45a5a0a21124c0cba28167094c94358.16", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-147665 + } + ], + [ + "35d4550a08264d9b811a6f94d4a30791.9", + 1385541248130, + { + "oLatE6":51509979, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"770fb08acd63484c88931ab98f1c8943.11", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-136298 + } + ], + [ + "cd329776e961475d9498717a64d9d3a5.9", + 1385661945578, + { + "oLatE6":51515313, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"457d81eba6f542a1983154ec61155239.16", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-152044 + } + ], + [ + "b0feea4407b841aa9cbb82a1d628032c.9", + 1385582249184, + { + "oLatE6":51515259, + "dLatE6":51514835, + "dLngE6":-141049, + "team":"RESISTANCE", + "oGuid":"05322044531c400fa651cae68b14070f.11", + "type":"edge", + "dGuid":"51502606f12c4eaebef135ac5e48c751.16", + "oLngE6":-141449 + } + ], + [ + "e73cde8c568f45bd9558f98b5570c275.9", + 1385667686507, + { + "oLatE6":51513771, + "dLatE6":51513839, + "dLngE6":-142541, + "team":"ENLIGHTENED", + "oGuid":"65854ea080ad4c47af9a846bd2157a32.11", + "type":"edge", + "dGuid":"dbbfe3f544af4659ad4a7388fa77e3d5.12", + "oLngE6":-143224 + } + ], + [ + "36f2a3e8aa4f4ceb83199a01a744ed58.9", + 1385074105982, + { + "oLatE6":51514228, + "dLatE6":51511686, + "dLngE6":-150364, + "team":"RESISTANCE", + "oGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "type":"edge", + "dGuid":"ffcded7f2a3d4672ab326efe8ebc7087.16", + "oLngE6":-149462 + } + ], + [ + "6b4acf27652541feb55c001cca2b0341.9", + 1385582115022, + { + "oLatE6":51514522, + "dLatE6":51514835, + "dLngE6":-141049, + "team":"RESISTANCE", + "oGuid":"f40dcd87c4764789a72fecdd97fd4ed4.11", + "type":"edge", + "dGuid":"51502606f12c4eaebef135ac5e48c751.16", + "oLngE6":-140594 + } + ], + [ + "af059f4640fd4f978054cdeb6f998e9f.9", + 1385472014804, + { + "oLatE6":51514228, + "dLatE6":51515621, + "dLngE6":-149112, + "team":"RESISTANCE", + "oGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "type":"edge", + "dGuid":"223a3fff9f5d4efc970c695477ac8d87.16", + "oLngE6":-149462 + } + ], + [ + "08639e84c7fb4db5a51551366f1c5f70.9", + 1385754527834, + { + "oLatE6":51509739, + "dLatE6":51508992, + "dLngE6":-144961, + "team":"ENLIGHTENED", + "oGuid":"3c54417b68c84dd387cd67765d6e3703.12", + "type":"edge", + "dGuid":"b586841bf4ce4acc9c90bed7195572a9.12", + "oLngE6":-146652 + } + ], + [ + "f94c4edb49574eb2998c500e5fd3e240.9", + 1385645776587, + { + "oLatE6":51516368, + "dLatE6":51515968, + "dLngE6":-150665, + "team":"RESISTANCE", + "oGuid":"0cb8844196c240dfa79652a452934a15.11", + "type":"edge", + "dGuid":"b0724f57f3534c3ca647fbdadcb3b408.16", + "oLngE6":-148230 + } + ], + [ + "34033d8241624e47b80ef51bad412e3c.9", + 1385613893144, + { + "oLatE6":51503124, + "dLatE6":51515254, + "dLngE6":-168579, + "team":"RESISTANCE", + "oGuid":"94762abecaa34116a18166df417372e3.16", + "type":"edge", + "dGuid":"0d9d4cbcd478488cb44433a373659221.11", + "oLngE6":-150071 + } + ], + [ + "1b0ff1e100f34485a913ce54712ffec0.9", + 1385771545394, + { + "oLatE6":51516368, + "dLatE6":51514310, + "dLngE6":-147665, + "team":"RESISTANCE", + "oGuid":"0cb8844196c240dfa79652a452934a15.11", + "type":"edge", + "dGuid":"b45a5a0a21124c0cba28167094c94358.16", + "oLngE6":-148230 + } + ], + [ + "89ad49e90d5544799456d6e3ef718441.9", + 1385580364098, + { + "oLatE6":51515259, + "dLatE6":51514704, + "dLngE6":-140773, + "team":"RESISTANCE", + "oGuid":"05322044531c400fa651cae68b14070f.11", + "type":"edge", + "dGuid":"db954eb71cb949ad94084d790b399fee.16", + "oLngE6":-141449 + } + ], + [ + "82e353be1b144bcd97e3d48b6b5a826c.9", + 1385740085724, + { + "oLatE6":51509347, + "dLatE6":51510216, + "dLngE6":-145113, + "team":"ENLIGHTENED", + "oGuid":"c59d1196b63b490ba209e13507e9e782.16", + "type":"edge", + "dGuid":"8a094798b0a54b9d81cc2992edbd53e1.11", + "oLngE6":-143285 + } + ], + [ + "17c382d2af024bf79999e01bc4f8323e.9", + 1385473818025, + { + "oLatE6":51514260, + "dLatE6":51514310, + "dLngE6":-147665, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"b45a5a0a21124c0cba28167094c94358.16", + "oLngE6":-141839 + } + ], + [ + "c9c4ecc18ac24163bb937b86b48902dc.9", + 0, + { + "oLatE6":51511550, + "dLatE6":51510216, + "dLngE6":-145113, + "team":"ENLIGHTENED", + "oGuid":"56d5b86428c84aadac0d6214eff81f60.11", + "type":"edge", + "dGuid":"8a094798b0a54b9d81cc2992edbd53e1.11", + "oLngE6":-148266 + } + ], + [ + "a47d16cfecbc4b71afcd38a321e9e178.9", + 0, + { + "oLatE6":51514835, + "dLatE6":51514440, + "dLngE6":-141353, + "team":"RESISTANCE", + "oGuid":"51502606f12c4eaebef135ac5e48c751.16", + "type":"edge", + "dGuid":"dc2192d231d147f3aa8fb4b7c060bd5b.16", + "oLngE6":-141049 + } + ], + [ + "502381e76870402e9da16405a4cb50df.9", + 0, + { + "oLatE6":51514260, + "dLatE6":51513462, + "dLngE6":-143165, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"764aeb38065b47d992e843d4ae77d15d.11", + "oLngE6":-141839 + } + ], + [ + "e73cde8c568f45bd9558f98b5570c275.9", + 0, + { + "oLatE6":51513771, + "dLatE6":51513839, + "dLngE6":-142541, + "team":"ENLIGHTENED", + "oGuid":"65854ea080ad4c47af9a846bd2157a32.11", + "type":"edge", + "dGuid":"dbbfe3f544af4659ad4a7388fa77e3d5.12", + "oLngE6":-143224 + } + ], + [ + "1babe6042ab9447fab0d9bb7affb83b8.9", + 0, + { + "oLatE6":51514310, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"b45a5a0a21124c0cba28167094c94358.16", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-147665 + } + ], + [ + "14ab35488ee042e983222ca16948eff9.9", + 0, + { + "oLatE6":51510216, + "dLatE6":51509664, + "dLngE6":-145506, + "team":"ENLIGHTENED", + "oGuid":"8a094798b0a54b9d81cc2992edbd53e1.11", + "type":"edge", + "dGuid":"bfcb133c0f3a43909be288eb27cf5968.16", + "oLngE6":-145113 + } + ], + [ + "353fc49fb4b84e8c912b47685cdd17de.9", + 0, + { + "oLatE6":51514260, + "dLatE6":51514228, + "dLngE6":-149462, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"2f86b199c523422f8166ef915bdb1b70.16", + "oLngE6":-141839 + } + ], + [ + "17c382d2af024bf79999e01bc4f8323e.9", + 0, + { + "oLatE6":51514260, + "dLatE6":51514310, + "dLngE6":-147665, + "team":"RESISTANCE", + "oGuid":"33fe90d0a2d04d0db47002285eaf2766.11", + "type":"edge", + "dGuid":"b45a5a0a21124c0cba28167094c94358.16", + "oLngE6":-141839 + } + ], + [ + "dd3b4868cb74469aa69399b775ff8e48.9", + 0, + { + "oLatE6":51511550, + "dLatE6":51509664, + "dLngE6":-145506, + "team":"ENLIGHTENED", + "oGuid":"56d5b86428c84aadac0d6214eff81f60.11", + "type":"edge", + "dGuid":"bfcb133c0f3a43909be288eb27cf5968.16", + "oLngE6":-148266 + } + ] + ] + }, + "1_32739_21790":{ + "deletedGameEntityGuids":[ + "8f63a4b0143f4302a91b925c65d0067e.b", + "e7431222757b4919a85c433a61cc9314.b", + "da1bab6073f74b9faef6716f0d2809e1.b", + "1a49f223d69740bcaafd37534522c5cd.b", + "1898b02a792044018ec6afed12fcc2fa.b", + "52376b1dea1d4a48bd3cbb98499d529d.b", + "c92a5e53a4c84153b80e3a981c76a217.b", + "af20b3fa9f6e402a86337b5c6e741c9c.b", + "6fec01ea5f3e484697d93ed996fd02e0.9", + "4de752d94bb049e68bd441b5b6dacb2f.9", + "1383e4b73e824831818b357ef147cdc4.9", + "4741dfeb7e6f448d9c53bdaac91ffc60.9", + "5deeedf2839f411c86a2d619ff18dabf.9", + "521e4d1b6ecd422db54b3e02d0bd93de.9", + "82fc74a0c3fe46c0a75dc7e099655f0c.9", + "71ea8fd4c3534f63b1c258c68ad970b8.9", + "665dc5eda2c2490e8c17559d403e2e53.9", + "06806c0763be433e89bf70d944f499ab.9", + "97faed3033294df8ac7eefd844b85738.9", + "628455f6227c45d0b2569d32bc060b09.9", + "d2b685cf48cc4e44b7390ba126728899.9", + "a27d7ff364c44908952f13257f4b3b0a.9", + "3ef4bff6c5e04be49cb96261e740da18.9", + "5567e8e5c6a942ffafa85df9dbb21fb8.9", + "477528bcca9d4ded8e477145afbf80d0.9", + "f5d0c7216117413d9adea9e7257040e5.9", + "0d337fb61ff24d54a0df6bb221a468fc.9", + "a3ffc916d0df47c18588e54ac7b47510.9" + ], + "gameEntities":[ + [ + "9381595a135f466fadf574e2375a47f4.16", + 1385751924756, + { + "level":1, + "title":"Nestled Cherubs", + "image":"http://lh3.ggpht.com/VqUCsZziRNpszF_4WdeIw4XvywAauyna0L-bvSJ2A3wXZylF1jMg8uY-3uGaOhKzEwnhsRB6X8ONqlDaF98", + "resCount":1, + "latE6":51512626, + "health":17.0, + "team":"ENLIGHTENED", + "lngE6":-157138, + "type":"portal" + } + ], + [ + "b6dff6a9610948548201bd5f74fa1e97.12", + 1385751924944, + { + "level":3, + "title":"Horse Head", + "image":"http://www.panoramio.com/photos/small/29266280.jpg", + "resCount":4, + "latE6":51512587, + "health":20.0, + "team":"ENLIGHTENED", + "lngE6":-159240, + "type":"portal" + } + ], + [ + "ed1c2d5e0c364b88b55132dabdacbc54.12", + 1385764721746, + { + "level":3, + "title":"Animals in War", + "image":"http://www.panoramio.com/photos/small/14319204.jpg", + "resCount":8, + "latE6":51510826, + "health":66.0, + "team":"ENLIGHTENED", + "lngE6":-157692, + "type":"portal" + } + ], + [ + "8c2a81a1afdc4dd1b0eeb76171360f02.12", + 1385764927533, + { + "level":2, + "title":"Horse at Water, \"Horse's Head\"", + "image":"http://www.panoramio.com/photos/small/51448097.jpg", + "resCount":3, + "latE6":51512682, + "health":100.0, + "team":"ENLIGHTENED", + "lngE6":-159543, + "type":"portal" + } + ], + [ + "c1d9ccae0c8c42d6a92fd36f8b3c7cf2.16", + 1385749860700, + { + "level":1, + "title":"Sir Thomas Sopwith Heritage Plaque", + "image":"http://lh6.ggpht.com/qC1wukG2p5H3v0aqeUy7v_8KnA6roop5f2lWoPudq-_X_O9aXHH8aZnccRBe6LjpJ0BKc3tirDezLCtWy5Ar", + "resCount":1, + "latE6":51512439, + "health":78.0, + "team":"RESISTANCE", + "lngE6":-155966, + "type":"portal" + } + ], + [ + "2f3ae2cc96b44d4087abb3ecabdfd31a.11", + 1385754186966, + { + "level":4, + "title":"Hamish Mackie Life Leopard", + "image":"http://lh5.ggpht.com/RUVD8pTLPZxboxI6dGyX7IPHTev48Lm-5NRokV4rYC8Ts4lXK2ZF6dBDipWFfCnUyWqCfS-X9qc4XNbDY1k4iEodnUMCHRTNgAZn5L72hOPTgDOjrg", + "resCount":8, + "latE6":51513607, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-157821, + "type":"portal" + } + ], + [ + "66ec22e29ac84a828d7203535c1f50c5.11", + 1385743780246, + { + "level":5, + "title":"The Wallace Collection", + "image":"http://lh6.ggpht.com/I57APxI7GFIkhqG5PwXGKpGBiF0rLwW4ZCDnZqhEbjVVowsQV-ztxDb8pDAH6bh1yRUXXvY6QcUfMLSPQtiRRo6bvjBsnVMt-YiSGQO1UBF9kDE0rQ", + "resCount":8, + "latE6":51517188, + "health":85.0, + "team":"RESISTANCE", + "lngE6":-152943, + "type":"portal" + } + ], + [ + "fb26ee3ef9034cf58bb2d86897953661.12", + 1385751463208, + { + "level":2, + "title":"Marble Arch at Night", + "image":"http://www.panoramio.com/photos/small/65839892.jpg", + "resCount":5, + "latE6":51512995, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-158610, + "type":"portal" + } + ], + [ + "d66b390130cc4377807e0ab86a6b7290.12", + 1385751471397, + { + "level":1, + "title":"Horse Head - Marble Arch", + "image":"http://www.panoramio.com/photos/small/56598706.jpg", + "resCount":1, + "latE6":51512436, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-159718, + "type":"portal" + } + ], + [ + "36257a57c6984883b397781201ea4df6.16", + 1385768508210, + { + "level":4, + "title":"Churchill Hyatt Regency London", + "image":"http://lh3.ggpht.com/41PTnYDH8Y0FltU_LCd-E2fGZyocPQ-PlaVTmIQTtJj6s2yVwaFRlXPOoMJ8WEJ4HE8Re12VT7-dcGA3iozR", + "resCount":8, + "latE6":51515466, + "health":100.0, + "team":"ENLIGHTENED", + "lngE6":-156935, + "type":"portal" + } + ], + [ + "de3370c1f7e04e31b7800d55c641298a.12", + 1385767699010, + { + "level":6, + "title":"Selfridges, Oxford Street, Cit", + "image":"http://www.panoramio.com/photos/small/22779690.jpg", + "resCount":8, + "latE6":51514055, + "health":94.0, + "team":"RESISTANCE", + "lngE6":-152918, + "type":"portal" + } + ], + [ + "e0b231367a5b44459091f8722b9e451f.16", + 1385764212592, + { + "level":6, + "title":"Selfridges", + "image":"http://lh4.ggpht.com/My1WDqCj71Jy1hg4Ak3nSZU5qK5hcm0xQD4MIQfkZERkV2ET9lpF7y-ziX37nGqQsWMbEXVlRkhcSz931Xw", + "resCount":8, + "latE6":51514235, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-153814, + "type":"portal" + } + ], + [ + "e95e4a205c1a46cb88cc5d27bdd7c279.11", + 1385754186822, + { + "level":6, + "title":"Statue of Wallenberg", + "image":"http://lh6.ggpht.com/118m58xdlFj4BVG9KkaT51pylP6RvtVghKUwFjq4iO-GWLwvK2OdsESMN0zBWFHfxGZccJnmgC8wXgAzi_TwP3Y6B_cIZouioA_hoJvuvlQBae0", + "resCount":8, + "latE6":51515041, + "health":76.0, + "team":"RESISTANCE", + "lngE6":-159581, + "type":"portal" + } + ], + [ + "e142ec4d3d5840d0adcefc9211bfd34a.12", + 1385764733287, + { + "level":1, + "title":"Animals in War", + "image":"http://www.panoramio.com/photos/small/64758056.jpg", + "resCount":8, + "latE6":51511455, + "health":100.0, + "team":"ENLIGHTENED", + "lngE6":-157580, + "type":"portal" + } + ], + [ + "8e102f77c2cd4b5aaaeb2375aeb007de.12", + 1385764616639, + { + "level":2, + "title":"Comme Je Fus, Dudley House", + "image":"http://www.panoramio.com/photos/small/64758125.jpg", + "resCount":6, + "latE6":51510635, + "health":100.0, + "team":"ENLIGHTENED", + "lngE6":-157245, + "type":"portal" + } + ], + [ + "f76a2cb5cad0493d9be3026617cef7f1.16", + 1385754186758, + { + "level":2, + "title":"The Church of the Annunciation ", + "image":"http://lh6.ggpht.com/FQ4uOstFki4dpueSAysFNEvW-ag1zMK9Ud9A28Ip_aCzZHxb9T8eSYsaZTYkAQQSi8CQAOdeJBeJJxWTL34", + "resCount":4, + "latE6":51514438, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-158257, + "type":"portal" + } + ], + [ + "cfbb5db2246e4190ad059cfe5263d6f0.16", + 1385754186623, + { + "level":4, + "title":"New Quebec St. Crest", + "image":"http://lh3.ggpht.com/GnZKX4bbbcpeCmCujRj6ykozzaRM261fH1jjV4XPHzI0pJVqKjMhH-407fjjLu4iOc8njJah359Kgh4vVDqW", + "resCount":8, + "latE6":51515639, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-158538, + "type":"portal" + } + ], + [ + "e2e157a3560047b383bcc18a586c3ff7.12", + 1385751451321, + { + "level":2, + "title":"Sculpture at The Marble Arch", + "image":"http://www.panoramio.com/photos/small/72436459.jpg", + "resCount":8, + "latE6":51512810, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-158900, + "type":"portal" + } + ], + [ + "3728f3c32c6f4612969d6afb4d3e9fed.16", + 1385750720843, + { + "level":1, + "title":"Sir James John Hamilton Fountain", + "image":"http://lh3.ggpht.com/xH5e1uZQtC6-P5nh3d9u0u96x_-P_YMM0iRHiGukfrmqmMElnpeQJFHP0E7bw5TUxnOHBVZl-4yT0d5W0cE", + "resCount":1, + "latE6":51515867, + "health":66.0, + "team":"RESISTANCE", + "lngE6":-154833, + "type":"portal" + } + ], + [ + "a7fbde52d87d4ac9a024d74a74dbe6b1.12", + 1385764733287, + { + "level":1, + "title":"Animals in war", + "image":"http://www.panoramio.com/photos/small/15330804.jpg", + "resCount":8, + "latE6":51511056, + "health":100.0, + "team":"ENLIGHTENED", + "lngE6":-157518, + "type":"portal" + } + ], + [ + "528e68a8205d49e5ae046e7e59b6c500.12", + 1385764971579, + { + "level":2, + "title":"Horse's Head", + "image":"http://www.panoramio.com/photos/small/51236185.jpg", + "resCount":7, + "latE6":51512863, + "health":100.0, + "team":"ENLIGHTENED", + "lngE6":-159687, + "type":"portal" + } + ], + [ + "df3d33b654fa493b91c3e4226ab7f34f.16", + 1385755324224, + { + "level":5, + "title":"Alfred Milner Plaque", + "image":"http://lh3.ggpht.com/xWuN1vgCouMEjJ1CL1e2znSkqEhXtDX7IGgofvvDU6lxTj6tvtcMdSMXvjfIV8gKSu8UyBHLTlXsYVybinyt", + "resCount":8, + "latE6":51516467, + "health":100.0, + "team":"ENLIGHTENED", + "lngE6":-153231, + "type":"portal" + } + ], + [ + "80a9335e0e9f4a32ba30fed67070af97.12", + 1385743933349, + { + "level":1, + "title":"Marble arch", + "image":"http://www.panoramio.com/photos/small/59031723.jpg", + "resCount":1, + "latE6":51513420, + "health":100.0, + "team":"RESISTANCE", + "lngE6":-159012, + "type":"portal" + } + ], + [ + "07fcfa63452f4c9d91f69fff8e1ea895.b", + 1385656796544, + { + "points":[ + { + "lngE6":-152044, + "guid":"457d81eba6f542a1983154ec61155239.16", + "latE6":51515313 + }, + { + "lngE6":-151942, + "guid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "latE6":51514211 + }, + { + "lngE6":-153814, + "guid":"e0b231367a5b44459091f8722b9e451f.16", + "latE6":51514235 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "56f5ccb7bfe0407e811efd729ed98e8e.b", + 1385646897670, + { + "points":[ + { + "lngE6":-152271, + "guid":"0a5e340f186d4aaca7904fbe5a3feba7.16", + "latE6":51516152 + }, + { + "lngE6":-152943, + "guid":"66ec22e29ac84a828d7203535c1f50c5.11", + "latE6":51517188 + }, + { + "lngE6":-151951, + "guid":"a24adc0a42d74c1397731cb7475d7c5d.16", + "latE6":51516526 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "be9218a7d2974d7f94abcfd6717a7ea0.b", + 1385655632013, + { + "points":[ + { + "lngE6":-152271, + "guid":"0a5e340f186d4aaca7904fbe5a3feba7.16", + "latE6":51516152 + }, + { + "lngE6":-152044, + "guid":"457d81eba6f542a1983154ec61155239.16", + "latE6":51515313 + }, + { + "lngE6":-153814, + "guid":"e0b231367a5b44459091f8722b9e451f.16", + "latE6":51514235 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "423617ecd52748249ef0b592e01a1119.b", + 1385559670166, + { + "points":[ + { + "lngE6":-152943, + "guid":"66ec22e29ac84a828d7203535c1f50c5.11", + "latE6":51517188 + }, + { + "lngE6":-151762, + "guid":"ca57ec9edce1494eb28da06226772cd6.11", + "latE6":51517935 + }, + { + "lngE6":-151951, + "guid":"a24adc0a42d74c1397731cb7475d7c5d.16", + "latE6":51516526 + } + ], + "type":"region", + "team":"RESISTANCE" + } + ], + [ + "2077771f112e4f95b0c8c6605bab39ca.9", + 1385559670166, + { + "oLatE6":51517935, + "dLatE6":51517188, + "dLngE6":-152943, + "team":"RESISTANCE", + "oGuid":"ca57ec9edce1494eb28da06226772cd6.11", + "type":"edge", + "dGuid":"66ec22e29ac84a828d7203535c1f50c5.11", + "oLngE6":-151762 + } + ], + [ + "8e9ed368792d40d2aaa612f87348796b.9", + 1385750720448, + { + "oLatE6":51516681, + "dLatE6":51519513, + "dLngE6":-151818, + "team":"RESISTANCE", + "oGuid":"664552e088c24cda86826caf02a8f24b.16", + "type":"edge", + "dGuid":"bb2257f8954f4cb282b1a716dbf1b770.16", + "oLngE6":-160516 + } + ], + [ + "ccf24610b90a4479ad32f407773f7e21.9", + 1385750497114, + { + "oLatE6":51515041, + "dLatE6":51513607, + "dLngE6":-157821, + "team":"RESISTANCE", + "oGuid":"e95e4a205c1a46cb88cc5d27bdd7c279.11", + "type":"edge", + "dGuid":"2f3ae2cc96b44d4087abb3ecabdfd31a.11", + "oLngE6":-159581 + } + ], + [ + "08bca6bd59d5449da1e9d1dbf684206c.9", + 1385656796544, + { + "oLatE6":51514211, + "dLatE6":51514235, + "dLngE6":-153814, + "team":"RESISTANCE", + "oGuid":"7fdc9960ccf946a3bf6cc62fb38ee141.12", + "type":"edge", + "dGuid":"e0b231367a5b44459091f8722b9e451f.16", + "oLngE6":-151942 + } + ], + [ + "d46675d327bc4300bd4e9bccac4c3cd4.9", + 1385750506053, + { + "oLatE6":51515041, + "dLatE6":51515639, + "dLngE6":-158538, + "team":"RESISTANCE", + "oGuid":"e95e4a205c1a46cb88cc5d27bdd7c279.11", + "type":"edge", + "dGuid":"cfbb5db2246e4190ad059cfe5263d6f0.16", + "oLngE6":-159581 + } + ], + [ + "494a7dd0236a40e98f6d67c05020f3dd.9", + 1385764733287, + { + "oLatE6":51511056, + "dLatE6":51511455, + "dLngE6":-157580, + "team":"ENLIGHTENED", + "oGuid":"a7fbde52d87d4ac9a024d74a74dbe6b1.12", + "type":"edge", + "dGuid":"e142ec4d3d5840d0adcefc9211bfd34a.12", + "oLngE6":-157518 + } + ], + [ + "4683c138914c4e2bb5f8990b354e6920.9", + 1385511177779, + { + "oLatE6":51501839, + "dLatE6":51514594, + "dLngE6":-174173, + "team":"RESISTANCE", + "oGuid":"f664e4eba6834e569c929e00b8769055.11", + "type":"edge", + "dGuid":"8916dc6eb80546b6a1ec4b77d782ba96.16", + "oLngE6":-159828 + } + ], + [ + "8bf312c35efe44aea3e5a021e8d302df.9", + 1385751185290, + { + "oLatE6":51514235, + "dLatE6":51513607, + "dLngE6":-157821, + "team":"RESISTANCE", + "oGuid":"e0b231367a5b44459091f8722b9e451f.16", + "type":"edge", + "dGuid":"2f3ae2cc96b44d4087abb3ecabdfd31a.11", + "oLngE6":-153814 + } + ], + [ + "5661d32226484bff880289cf55501c91.9", + 1385646897670, + { + "oLatE6":51517188, + "dLatE6":51516526, + "dLngE6":-151951, + "team":"RESISTANCE", + "oGuid":"66ec22e29ac84a828d7203535c1f50c5.11", + "type":"edge", + "dGuid":"a24adc0a42d74c1397731cb7475d7c5d.16", + "oLngE6":-152943 + } + ], + [ + "34033d8241624e47b80ef51bad412e3c.9", + 1385613893144, + { + "oLatE6":51503124, + "dLatE6":51515254, + "dLngE6":-168579, + "team":"RESISTANCE", + "oGuid":"94762abecaa34116a18166df417372e3.16", + "type":"edge", + "dGuid":"0d9d4cbcd478488cb44433a373659221.11", + "oLngE6":-150071 + } + ], + [ + "50cd58e832fe46cda7577b87ec72dcf9.9", + 1385060925958, + { + "oLatE6":51516681, + "dLatE6":51522749, + "dLngE6":-155157, + "team":"RESISTANCE", + "oGuid":"664552e088c24cda86826caf02a8f24b.16", + "type":"edge", + "dGuid":"0eabb23fbd244c8cb8372f42780f5da1.16", + "oLngE6":-160516 + } + ], + [ + "d25fa85590584d49a1bee2e48f11db15.9", + 1385646897670, + { + "oLatE6":51517188, + "dLatE6":51516152, + "dLngE6":-152271, + "team":"RESISTANCE", + "oGuid":"66ec22e29ac84a828d7203535c1f50c5.11", + "type":"edge", + "dGuid":"0a5e340f186d4aaca7904fbe5a3feba7.16", + "oLngE6":-152943 + } + ], + [ + "961a8eaeaae34d479531049295206aa0.9", + 1385656796544, + { + "oLatE6":51515313, + "dLatE6":51514235, + "dLngE6":-153814, + "team":"RESISTANCE", + "oGuid":"457d81eba6f542a1983154ec61155239.16", + "type":"edge", + "dGuid":"e0b231367a5b44459091f8722b9e451f.16", + "oLngE6":-152044 + } + ], + [ + "5e45cc41f18044abae5d6ba512f2cc5c.9", + 1385661983796, + { + "oLatE6":51516467, + "dLatE6":51518516, + "dLngE6":-153510, + "team":"ENLIGHTENED", + "oGuid":"df3d33b654fa493b91c3e4226ab7f34f.16", + "type":"edge", + "dGuid":"ac5bb9d8e5fc44bf8976983fe02d16fb.16", + "oLngE6":-153231 + } + ], + [ + "578cb52d150c441a9cd95a5209201731.9", + 1385615160117, + { + "oLatE6":51516681, + "dLatE6":51515041, + "dLngE6":-159581, + "team":"RESISTANCE", + "oGuid":"664552e088c24cda86826caf02a8f24b.16", + "type":"edge", + "dGuid":"e95e4a205c1a46cb88cc5d27bdd7c279.11", + "oLngE6":-160516 + } + ], + [ + "6cefb2cfe7094e95b35fdb2b87e45bb6.9", + 1385655632013, + { + "oLatE6":51514235, + "dLatE6":51516152, + "dLngE6":-152271, + "team":"RESISTANCE", + "oGuid":"e0b231367a5b44459091f8722b9e451f.16", + "type":"edge", + "dGuid":"0a5e340f186d4aaca7904fbe5a3feba7.16", + "oLngE6":-153814 + } + ], + [ + "8bf312c35efe44aea3e5a021e8d302df.9", + 0, + { + "oLatE6":51514235, + "dLatE6":51513607, + "dLngE6":-157821, + "team":"RESISTANCE", + "oGuid":"e0b231367a5b44459091f8722b9e451f.16", + "type":"edge", + "dGuid":"2f3ae2cc96b44d4087abb3ecabdfd31a.11", + "oLngE6":-153814 + } + ], + [ + "494a7dd0236a40e98f6d67c05020f3dd.9", + 0, + { + "oLatE6":51511056, + "dLatE6":51511455, + "dLngE6":-157580, + "team":"ENLIGHTENED", + "oGuid":"a7fbde52d87d4ac9a024d74a74dbe6b1.12", + "type":"edge", + "dGuid":"e142ec4d3d5840d0adcefc9211bfd34a.12", + "oLngE6":-157518 + } + ], + [ + "1b9127a0ebde49718050ff33f9bc24aa.9", + 0, + { + "oLatE6":51511056, + "dLatE6":51510826, + "dLngE6":-157692, + "team":"ENLIGHTENED", + "oGuid":"a7fbde52d87d4ac9a024d74a74dbe6b1.12", + "type":"edge", + "dGuid":"ed1c2d5e0c364b88b55132dabdacbc54.12", + "oLngE6":-157518 + } + ], + [ + "d46675d327bc4300bd4e9bccac4c3cd4.9", + 0, + { + "oLatE6":51515041, + "dLatE6":51515639, + "dLngE6":-158538, + "team":"RESISTANCE", + "oGuid":"e95e4a205c1a46cb88cc5d27bdd7c279.11", + "type":"edge", + "dGuid":"cfbb5db2246e4190ad059cfe5263d6f0.16", + "oLngE6":-159581 + } + ], + [ + "ccf24610b90a4479ad32f407773f7e21.9", + 0, + { + "oLatE6":51515041, + "dLatE6":51513607, + "dLngE6":-157821, + "team":"RESISTANCE", + "oGuid":"e95e4a205c1a46cb88cc5d27bdd7c279.11", + "type":"edge", + "dGuid":"2f3ae2cc96b44d4087abb3ecabdfd31a.11", + "oLngE6":-159581 + } + ] + ] + } + }, + "minLevelOfDetail":1 + } +} diff --git a/json_examples/link_json.js b/json_examples/link_json.js deleted file mode 100644 index bcc2cc32..00000000 --- a/json_examples/link_json.js +++ /dev/null @@ -1,25 +0,0 @@ -[ - "28cbec08d88643828755bd56b67fca75.9", - 1359639986825, - { - "controllingTeam": { - "team": "RESISTANCE" - }, - "creator": { - "creatorGuid": "2b8fb33c8d1b433d9a46da76b35185f8.c", - "creationTime": "1359639986543" - }, - "edge": { - "destinationPortalGuid": "9b08215c6da44ba18c948f5b7243dc00.12", - "originPortalLocation": { - "lngE6": 8561013, - "latE6": 49384861 - }, - "destinationPortalLocation": { - "lngE6": 8562566, - "latE6": 49383951 - }, - "originPortalGuid": "9e4a0dfacd5347e9ac71910761541699.12" - } - } -], diff --git a/json_examples/portal_json.js b/json_examples/portal_json.js deleted file mode 100644 index 863c4561..00000000 --- a/json_examples/portal_json.js +++ /dev/null @@ -1,162 +0,0 @@ - - -[ - "2c124b4e99074660a72668c888093834.11", - 1359563604824, - { - "turret": { - - }, - "resonatorArray": { - "resonators": [ - { - "slot": 0, - "level": 5, - "energyTotal": 2825, - "distanceToPortal": 35, - "id": "26da7ed9-9025-4974-b62f-495750b2d888", - "ownerGuid": "a1dc117457954b99b104be8c85e16276.c" - }, - { - "slot": 1, - "level": 6, - "energyTotal": 3725, - "distanceToPortal": 25, - "id": "f7f3312c-7440-4edf-95b9-9e416af1f399", - "ownerGuid": "a1dc117457954b99b104be8c85e16276.c" - }, - { - "slot": 2, - "level": 5, - "energyTotal": 2825, - "distanceToPortal": 31, - "id": "50627504-1efb-445d-84b0-f014948aedfb", - "ownerGuid": "c4981119edfb488a9fd19d99eb540449.c" - }, - { - "slot": 3, - "level": 6, - "energyTotal": 3725, - "distanceToPortal": 31, - "id": "06ee68fe-80e4-491b-a99d-aa126c9740d6", - "ownerGuid": "ef9657c5cc2743afa5e1953dd06df307.c" - }, - { - "slot": 4, - "level": 6, - "energyTotal": 3725, - "distanceToPortal": 30, - "id": "df80cd1f-d347-4dc5-a31b-deb8fb9f978d", - "ownerGuid": "ef9657c5cc2743afa5e1953dd06df307.c" - }, - { - "slot": 5, - "level": 5, - "energyTotal": 2825, - "distanceToPortal": 24, - "id": "c8c474ec-8deb-4218-8b7b-ea2a7ea3e4ac", - "ownerGuid": "a0c2e839783f4e889ca570e2cd5c7819.c" - }, - { - "slot": 6, - "level": 5, - "energyTotal": 2825, - "distanceToPortal": 29, - "id": "e57ea7b1-f3f7-4a62-a060-c794f85246e1", - "ownerGuid": "a0c2e839783f4e889ca570e2cd5c7819.c" - }, - { - "slot": 7, - "level": 5, - "energyTotal": 2825, - "distanceToPortal": 31, - "id": "d08b9027-88f3-4808-bd3f-41acce7e195a", - "ownerGuid": "c4981119edfb488a9fd19d99eb540449.c" - } - ] - }, - "imageByUrl": { - "imageUrl": "http:\/\/lh3.ggpht.com\/oh3OKN-Vc-GbS3hfp4ZaCB_ND6hmkfnp-gAQmCtfmmrj9R94eeiVAAh9HLd5gO-JV8rBGchle8CXLbr_bmK8sR-PdRYS1yCNHS48wf98RelEVjOe" - }, - "controllingTeam": { - "team": "RESISTANCE" - }, - "defaultActionRange": { - - }, - "portalV2": { - "linkedEdges": [ - { - "otherPortalGuid": "a38615195c7547639dfb77bfe3a700a8.11", - "edgeGuid": "29c13e7a9ba149008aa6355e201158f1.9", - "isOrigin": false - }, - { - "otherPortalGuid": "4dd1ede906a44420aa2b052a1363f170.11", - "edgeGuid": "cecc7c69103d4678aeb7172a1688e2b5.9", - "isOrigin": false - }, - { - "otherPortalGuid": "9d1fa3603e8c4363b3cd2448277a906b.11", - "edgeGuid": "ed61e4455e574a1c906778f29307a7b4.9", - "isOrigin": true - }, - { - "otherPortalGuid": "20c14bddc1384ee99dfe77c10737e842.11", - "edgeGuid": "0d63bde0620a4a89ad4a23ce8ef29c63.9", - "isOrigin": false - } - ], - "linkedModArray": [ - { - "installingUser": "a1dc117457954b99b104be8c85e16276.c", - "type": "RES_SHIELD", - "stats": { - "MITIGATION": "8" - }, - "displayName": "Portal Shield", - "rarity": "RARE" - }, - { - "installingUser": "a1dc117457954b99b104be8c85e16276.c", - "type": "RES_SHIELD", - "stats": { - "MITIGATION": "8" - }, - "displayName": "Portal Shield", - "rarity": "RARE" - }, - { - "installingUser": "a0c2e839783f4e889ca570e2cd5c7819.c", - "type": "RES_SHIELD", - "stats": { - "MITIGATION": "8" - }, - "displayName": "Portal Shield", - "rarity": "RARE" - }, - { - "installingUser": "ef9657c5cc2743afa5e1953dd06df307.c", - "type": "RES_SHIELD", - "stats": { - "MITIGATION": "6" - }, - "displayName": "Portal Shield", - "rarity": "COMMON" - } - ], - "descriptiveText": { - "TITLE": "M\u00f6biusband", - "ADDRESS": "Im Neuenheimer Feld 306, 69120 Heidelberg, Germany" - } - }, - "locationE6": { - "lngE6": 8672899, - "latE6": 49417115 - }, - "captured": { - "capturedTime": "1359390335006", - "capturingPlayerId": "a1dc117457954b99b104be8c85e16276.c" - } - } -] diff --git a/json_examples/redeeming.js b/json_examples/redeeming.js deleted file mode 100644 index f42ce914..00000000 --- a/json_examples/redeeming.js +++ /dev/null @@ -1,1998 +0,0 @@ -// http://www.ingress.com/rpc/dashboard.redeemReward - -{ - "passcode": "" -} - -//////////////////////////////////////////////////////////////////////// - -{ - "gameBasket": { - "playerEntity": [ - "00000000000000000000000000000000.c", - 1365600000000, - { - "playerPersonal": { - "notificationSettings": { - "shouldSendEmail": true, - "maySendPromoEmail": true - }, - "energyState": "XM_OK", - "energy": 10000, - "clientLevel": 36, - "ap": "12000000", - "mediaHighWaterMarks": { - "RESISTANCE": 9, - "General": 63 - }, - "allowNicknameEdit": false, - "allowFactionChoice": false - }, - "controllingTeam": { - "team": "RESISTANCE" - } - } - ], - "gameEntities": [], - "deletedEntityGuids": [], - "inventory": [ - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 1 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "modResource": { - "resourceType": "RES_SHIELD", - "stats": { - "MITIGATION": "6" - }, - "displayName": "Portal Shield", - "rarity": "COMMON" - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 1 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 1 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 4 - }, - "requiredLevel": 4 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 4 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 6 - }, - "requiredLevel": 6 - }, - "resourceWithLevels": { - "resourceType": "POWER_CUBE", - "level": 6 - }, - "powerCube": { - "energy": 6000 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 4 - }, - "requiredLevel": 4 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 4 - } - } - ] - ], - "apGains": [ - { - "apTrigger": "REDEEMED_AP", - "apGainAmount": "200" - } - ] - }, - "result": { - "apAward": "1200000", - "xmAward": "10000", - "inventoryAward": [ - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 1 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 1 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 1 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 1 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 1 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 1 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 1 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 1 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 1 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 1 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 2 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 2 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 2 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 2 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 2 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 2 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 2 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 2 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 2 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMITTER_A", - "level": 2 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 3 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 3 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 3 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 3 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 3 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 3 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 3 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 3 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 3 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 3 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 4 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 4 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 4 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 4 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 4 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 4 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 4 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 4 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 4 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 4 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 5 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 5 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 5 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 5 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 5 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 5 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 5 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 5 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 5 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 5 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 6 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 6 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 6 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 6 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 6 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 6 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 6 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 6 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 6 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 1 - }, - "requiredLevel": 1 - }, - "resourceWithLevels": { - "resourceType": "EMP_BURSTER", - "level": 6 - }, - "empWeapon": { - "ammo": 1, - "level": 1 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 6 - }, - "requiredLevel": 6 - }, - "resourceWithLevels": { - "resourceType": "POWER_CUBE", - "level": 7 - }, - "powerCube": { - "energy": 6000 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 6 - }, - "requiredLevel": 6 - }, - "resourceWithLevels": { - "resourceType": "POWER_CUBE", - "level": 8 - }, - "powerCube": { - "energy": 6000 - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "modResource": { - "resourceType": "RES_SHIELD", - "stats": { - "MITIGATION": "6" - }, - "displayName": "Portal Shield", - "rarity": "COMMON" - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "modResource": { - "resourceType": "RES_SHIELD", - "stats": { - "MITIGATION": "6" - }, - "displayName": "Portal Shield", - "rarity": "COMMON" - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "modResource": { - "resourceType": "RES_SHIELD", - "stats": { - "MITIGATION": "6" - }, - "displayName": "Portal Shield", - "rarity": "RARE" - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "modResource": { - "resourceType": "RES_SHIELD", - "stats": { - "MITIGATION": "6" - }, - "displayName": "Portal Shield", - "rarity": "RARE" - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "modResource": { - "resourceType": "RES_SHIELD", - "stats": { - "MITIGATION": "6" - }, - "displayName": "Portal Shield", - "rarity": "VERY_RARE" - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "modResource": { - "resourceType": "RES_SHIELD", - "stats": { - "MITIGATION": "6" - }, - "displayName": "Portal Shield", - "rarity": "VERY_RARE" - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 6 - }, - "requiredLevel": 6 - }, - "resourceWithLevels": { - "resourceType": "MEDIA", - "level": 8 - }, - "storyItem": { - "shortDescription": "INGRESS_REPORT_42", - "primaryUrl": "http://www.nianticproject.com" - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 6 - }, - "requiredLevel": 6 - }, - "resourceWithLevels": { - "resourceType": "MEDIA", - "level": 8 - }, - "storyItem": { - "shortDescription": "INGRESS_REPORT_42", - "primaryUrl": "http://www.nianticproject.com" - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "resource": { - "resourceType": "PORTAL_LINK_KEY", - "displayName": "Portal Key" - }, - "portalCoupler": { - "portalGuid": "00000000000000000000000000000000.7", - "portalTitle": "Portal Name" - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "accessLevel": { - "failure": { - "isAllowed": false, - "requiredLevel": 6 - }, - "requiredLevel": 6 - }, - "doesNotExist": { - "resourceType": "SUPER_SECRET" - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "resource": { - "resourceType": "FLIP_CARD", - "resourceRarity": "VERY_RARE" - }, - "displayName": { - "displayDescription": "The ADA Refactor can be used to reverse the alignment of an Enlightened Portal.", - "displayName": "ADA Refactor" - }, - "flipCard": { - "flipCardType": "ADA" - } - } - ], - [ - "00000000000000000000000000000000.5", - 1365600000000, - { - "inInventory": { - "playerId": "00000000000000000000000000000000.c", - "acquisitionTimestampMs": "1365600000000" - }, - "resource": { - "resourceType": "FLIP_CARD", - "resourceRarity": "VERY_RARE" - }, - "displayName": { - "displayDescription": "The JARVIS Virus can be used to reverse the alignment of a Resistance Portal.", - "displayName": "JARVIS Virus" - }, - "flipCard": { - "flipCardType": "JARVIS" - } - } - ] - ] - } -} From e5837ae5004537616487091a532a5af0ba9a3ba7 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 30 Nov 2013 01:30:11 +0000 Subject: [PATCH 08/63] website: removed downloads - added brief note to news post --- website/page/home.php | 5 +++++ website/page/news.php | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/website/page/home.php b/website/page/home.php index 748294da..3c26342d 100644 --- a/website/page/home.php +++ b/website/page/home.php @@ -31,6 +31,11 @@ as the data will not be available. More details, and discussion, available in the Google+ post.

+

+Update I've created a 'dummy' version of the desktop plugin that will, for now, disable IITC if you leave it installed. +This is shown as version 0.15.99. When a fixed build is released, it will be 0.16.something and will update and start working. +Test versions remain, but broken. Please join the Google+ Community where announcements will be made. +

11th November 2013

diff --git a/website/page/news.php b/website/page/news.php index bb0b5b36..59b1b381 100644 --- a/website/page/news.php +++ b/website/page/news.php @@ -18,6 +18,11 @@ as the data will not be available. More details, and discussion, available in the Google+ post.

+

+Update I've created a 'dummy' version of the desktop plugin that will, for now, disable IITC if you leave it installed. +This is shown as version 0.15.99. When a fixed build is released, it will be 0.16.something and will update and start working. +Test versions remain, but broken. Please join the Google+ Community where announcements will be made. +

11th November 2013

From b44a00174c5ce4b51c5b2253381647abad3313ed Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 30 Nov 2013 03:17:19 +0000 Subject: [PATCH 09/63] json_examples - get_portal_details (request+response) --- json_examples/get_portal_details-request.js | 16 +++ json_examples/get_portal_details-response.js | 129 +++++++++++++++++++ 2 files changed, 145 insertions(+) create mode 100644 json_examples/get_portal_details-request.js create mode 100644 json_examples/get_portal_details-response.js diff --git a/json_examples/get_portal_details-request.js b/json_examples/get_portal_details-request.js new file mode 100644 index 00000000..694f5b7c --- /dev/null +++ b/json_examples/get_portal_details-request.js @@ -0,0 +1,16 @@ +// get_portal_details - request +// note the munged parameters +// also excess 'junk' parameters to obsfucate the request - the only ones needed are the first three +// (guid, method name, version parameter) + + +{ + "seg6ohxgnqf9xu9w":"56d5b86428c84aadac0d6214eff81f60.11", + "yyngyttbmmbuvdpa":"c00thnhf1yp3z6mn", + "avz401t36lzrapis":"c5d0a5d608f729a1232bebdc12fb86ba5fb6c43f", + "nzd23jqm9k1cnnij":67, + "0dod6onpa1s4fezp":-90000000, + "soass3t7mm7anneo":-180000000, + "cvarmr3o00ngylo1":90000000, + "udzwnlx07hzd3bfo":180000000 +} diff --git a/json_examples/get_portal_details-response.js b/json_examples/get_portal_details-response.js new file mode 100644 index 00000000..a8b8a0d3 --- /dev/null +++ b/json_examples/get_portal_details-response.js @@ -0,0 +1,129 @@ +// get_portal_details - response +// note no player GUIDs any more - resonators[].ownerGuid is actually a name + +{ + "resonatorArray":{ + "resonators":[ + { + "slot":0, + "level":7, + "energyTotal":5000, + "distanceToPortal":33, + "id":"cc5416d0-d894-47ee-b23b-47d761f0486b", + "ownerGuid":"dt11" + }, + { + "slot":1, + "level":6, + "energyTotal":4000, + "distanceToPortal":34, + "id":"b90874a2-0157-4033-8dac-0ee21c1c513b", + "ownerGuid":"dt11" + }, + { + "slot":2, + "level":5, + "energyTotal":3000, + "distanceToPortal":34, + "id":"f96d96b6-cdb0-4217-be58-34ac8ea82415", + "ownerGuid":"dt11" + }, + { + "slot":3, + "level":4, + "energyTotal":2500, + "distanceToPortal":35, + "id":"8dc8f746-13a7-4730-b0d0-25b75784a090", + "ownerGuid":"dt11" + }, + { + "slot":4, + "level":4, + "energyTotal":2500, + "distanceToPortal":33, + "id":"ae65fd13-c9cf-412b-93b4-65e9a71ef5d6", + "ownerGuid":"dt11" + }, + { + "slot":5, + "level":4, + "energyTotal":2500, + "distanceToPortal":34, + "id":"d0a4ee3e-ab78-424f-bafc-da1da2423d0a", + "ownerGuid":"dt11" + }, + { + "slot":6, + "level":5, + "energyTotal":3000, + "distanceToPortal":34, + "id":"09458b16-ccea-4f64-80ee-e2848f51b090", + "ownerGuid":"dt11" + }, + { + "slot":7, + "level":6, + "energyTotal":4000, + "distanceToPortal":34, + "id":"05f77a0e-ccc9-4f6a-8fbf-07b0010a02c2", + "ownerGuid":"dt11" + } + ] + }, + "locationE6":{ + "lngE6":-148266, + "latE6":51511550 + }, + "controllingTeam":{ + "team":"ENLIGHTENED" + }, + "portalV2":{ + "linkedEdges":[ + { + "otherPortalGuid":"bfcb133c0f3a43909be288eb27cf5968.16", + "edgeGuid":"dd3b4868cb74469aa69399b775ff8e48.9", + "isOrigin":true + }, + { + "otherPortalGuid":"8a094798b0a54b9d81cc2992edbd53e1.11", + "edgeGuid":"c9c4ecc18ac24163bb937b86b48902dc.9", + "isOrigin":true + } + ], + "linkedModArray":[ + { + "installingUser":"dt11", + "displayName":"Portal Shield", + "type":"RES_SHIELD", + "stats":{ + "REMOVAL_STICKINESS":"0", + "MITIGATION":"20" + }, + "rarity":"RARE" + }, + { + "installingUser":"dt11", + "displayName":"Portal Shield", + "type":"RES_SHIELD", + "stats":{ + "REMOVAL_STICKINESS":"0", + "MITIGATION":"10" + }, + "rarity":"COMMON" + }, + null, + null + ], + "descriptiveText":{ + "TITLE":"Mayfair Post Office, London", + "ADDRESS":"32 Grosvenor Street, London, Greater London W1K 4QS, UK" + } + }, + "imageByUrl":{ + "imageUrl":"http://lh5.ggpht.com/5963D4ATz31LG-zWuPSWrdUKqq_u09-C-GNcyNd6vH1isg7PQjax2niQ5LbZfAwnjnB4DJITWbfuGeMH0MnDqThnmI_CNWIQ2euXk8Cwjls0yXO88A" + }, + "captured":{ + "capturedTime":"1385754854932", + "capturingPlayerId":"dt11" + } +} From 20b4a10347f738ab00a90b2db7d9d74a1a9669fd Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 30 Nov 2013 04:14:35 +0000 Subject: [PATCH 10/63] json example: artifacts --- json_examples/artifacts-response.js | 247 ++++++++++++++++++++++++++++ 1 file changed, 247 insertions(+) create mode 100644 json_examples/artifacts-response.js diff --git a/json_examples/artifacts-response.js b/json_examples/artifacts-response.js new file mode 100644 index 00000000..7e19f0bb --- /dev/null +++ b/json_examples/artifacts-response.js @@ -0,0 +1,247 @@ +// artifacts - uses the same cut-down data format as the map portal data + +{ + "artifacts":[ + { + "targetInfos":[ + { + "portalInfo":{ + "title":"Cupid's Span", + "image":"http://lh6.ggpht.com/xBckx2qeAv4kog4JQfUxzzq86OG0RYP2ccrQv05HOuMeqUWV2cGMWrBU27LZJKUCSNCdQVAt3eqtnBlPGhyB", + "level":5, + "latE6":37791541, + "health":100.0, + "resCount":8, + "lngE6":-122390014, + "team":"ENLIGHTENED", + "type":"portal" + }, + "portalGuid":"9f2eaaa0c1ae4204a2ba5edd46ad4c95.12", + "team":"ENLIGHTENED" + }, + { + "portalInfo":{ + "title":"Pir\u00e1mide de Mayo", + "image":"http://lh6.ggpht.com/_3aFkA6XnDw502tysY7llc5rCCq--A-B7JtYckuKk48lyPo73MyMRd6PayGLFk6WckN-z8Rffnyw5rdojTE81A", + "level":6, + "latE6":-34608403, + "health":100.0, + "resCount":8, + "lngE6":-58372164, + "team":"ENLIGHTENED", + "type":"portal" + }, + "portalGuid":"6899fca3412a41fc97a509fa6030b0bf.12", + "team":"RESISTANCE" + } + ], + "fragmentInfos":[ + { + "portalInfo":{ + "title":"Kinesis Wellness Water Fountain", + "image":"http://lh5.ggpht.com/qrczaveosQtJW9HcQX0PPobh9Q3dJEfQ_weumBjKbtG1M5zQ8OmGHQCy4SRjUGofEz5KuES6N0ox6guBKp_n", + "level":1, + "latE6":1509661, + "health":0, + "resCount":0, + "lngE6":110362028, + "team":"NEUTRAL", + "type":"portal" + }, + "fragments":[ + 7 + ], + "portalGuid":"caf18e11731046e4a4c2fd9246abea4f.16" + }, + { + "portalInfo":{ + "title":"Statue 2", + "image":"http://lh5.ggpht.com/96RZXGomxTRD_F6pMFIm3Lbxibs6RBz9YZ4vQLAIzZ5CRuR-FL0YNs8oy6Mz6zfmq6PTrFI-LZ_59HM3bYzZ", + "level":7, + "latE6":31200954, + "health":55.0, + "resCount":8, + "lngE6":29950883, + "team":"RESISTANCE", + "type":"portal" + }, + "fragments":[ + 10 + ], + "portalGuid":"5e7fa56871d14e69a8a943a448e11889.16" + }, + { + "portalInfo":{ + "title":"\u30a4\u30eb\u30ab\u306e\u6c34\u9053", + "image":"http://lh3.ggpht.com/VOKphdag3JMRykYIgVFPFPlyXiGpRMift2XtRKcMFwg9zoErFKD-63AOFe_KU9JZtc8acGVS6x9FMRLKRhI", + "level":5, + "latE6":33681143, + "health":100.0, + "resCount":8, + "lngE6":135345213, + "team":"ENLIGHTENED", + "type":"portal" + }, + "fragments":[ + 4 + ], + "portalGuid":"05aa702ee9174e53a1c4659d1d070fc2.16" + }, + { + "portalInfo":{ + "title":"Church of South India", + "image":"http://lh3.ggpht.com/ngJhP9Q6b8LqfaRqMncRjjGxbX2NQoG65GUPAYZPHOKmW6ItJw408SShv7GPBmF02VmqSvxS2q8PTwa7XHNp", + "level":6, + "latE6":11002728, + "health":100.0, + "resCount":8, + "lngE6":76976030, + "team":"ENLIGHTENED", + "type":"portal" + }, + "fragments":[ + 3 + ], + "portalGuid":"f67814a00408447397edaab01529f972.16" + }, + { + "portalInfo":{ + "title":"Corvo Windmill", + "image":"http://lh5.ggpht.com/FRnWem84CCFT4VJdPA12_cj7zeEu9kFoak0EWbr8ELWj--FKPgvpXymrvCqbjnE48M_S2vWWBg7DNe6eGZCL", + "level":5, + "latE6":39670135, + "health":100.0, + "resCount":8, + "lngE6":-31113994, + "team":"RESISTANCE", + "type":"portal" + }, + "fragments":[ + 2 + ], + "portalGuid":"16e688dde1084251b762a96bd05892a6.16" + }, + { + "portalInfo":{ + "title":"\u0421\u043b\u0430\u0432\u0430 \u0413\u0435\u0440\u043e\u044f\u043c \u0413\u0440\u0430\u0436\u0434\u0430\u043d\u0441\u043a\u043e\u0439 \u0412\u043e\u0439\u043d\u044b", + "image":"http://lh6.ggpht.com/yD-0HgkNyEcZ3f5g6-01MIGskkUdFNoSXq8EkyWINJdZEXnEoT7Qd3tWL80fzKyK52vZZRnX3VVNuJzPGGaxGw", + "level":5, + "latE6":61723385, + "health":100.0, + "resCount":8, + "lngE6":129480552, + "team":"ENLIGHTENED", + "type":"portal" + }, + "fragments":[ + 12 + ], + "portalGuid":"539e8816c9774fad9d1f5da30da15236.16" + }, + { + "portalInfo":{ + "title":"US Post Office", + "image":"", + "level":1, + "latE6":43568894, + "health":0, + "resCount":0, + "lngE6":-101661386, + "team":"NEUTRAL", + "type":"portal" + }, + "fragments":[ + 1 + ], + "portalGuid":"075f54d4e7cb408eb181de704b291e00.12" + }, + { + "portalInfo":{ + "title":"Colegio Oficial De Aquitectos De Canarias", + "image":"http://www.panoramio.com/photos/small/7680566.jpg", + "level":7, + "latE6":28475279, + "health":85.0, + "resCount":8, + "lngE6":-16250839, + "team":"RESISTANCE", + "type":"portal" + }, + "fragments":[ + 9 + ], + "portalGuid":"61e745cab2f6415dbb9d97b5cf01ab22.12" + }, + { + "portalInfo":{ + "title":"Ricardo Ugarte \"Lorea\" 1973", + "image":"http://lh4.ggpht.com/r9aaw6LcBqwUDbkMv781mWmtNpq_vzqGajCcdGbMMGN00KC1P_YMJBOzevMFAT0WwZHONfsu_f49m7HTLUl93C1Pt6DggdQZw7Kxi1VSohksRFUXIw", + "level":8, + "latE6":28472611, + "health":100.0, + "resCount":8, + "lngE6":-16255785, + "team":"RESISTANCE", + "type":"portal" + }, + "fragments":[ + 8 + ], + "portalGuid":"08c321d96dd841a39b69c9bb58bc7d7e.16" + }, + { + "portalInfo":{ + "title":"Street Art L\u00e9zard", + "image":"http://lh5.ggpht.com/3CR9Ak8-bq42Ahx-i8Od_ERJxnfllwq_aZ8Ndd86RrlejiIHIjdlg7tsxQeo0PZ2vMoe8F4fkPmV-VO710pK", + "level":6, + "latE6":-22157401, + "health":42.0, + "resCount":8, + "lngE6":166448768, + "team":"RESISTANCE", + "type":"portal" + }, + "fragments":[ + 6 + ], + "portalGuid":"f854e60da70849b486ffd1eca238ba22.16" + }, + { + "portalInfo":{ + "title":"Estaci\u00f3n de Ferrocarril Mitre", + "image":"http://lh3.ggpht.com/6SBiNwknx2EjjNeaKHoegv1YaXzFsIL1wgSB0eeFehRjx3UpsWV2BJmn6_9KpOaWpkoXtq7QoVJqCrPO7ulXCsSU7givtJ3zWFr7ehU2BMIKYKQs", + "level":2, + "latE6":-26820833, + "health":84.0, + "resCount":8, + "lngE6":-65200000, + "team":"RESISTANCE", + "type":"portal" + }, + "fragments":[ + 11 + ], + "portalGuid":"ed88b9f4904041d8a384ac3a9cc90d7d.11" + }, + { + "portalInfo":{ + "title":"\u05d0\u05e8\u05db\u05d9\u05d5\u05df \u05d4\u05de\u05d5\u05e9\u05d1\u05d4 \u05d9\u05e1\u05d5\u05d3 \u05d4\u05de\u05e2\u05dc\u05d4 ", + "image":"http://lh5.ggpht.com/eB6juKp3dpj6a83c_g0ZBia-nDM8Gxns4c0uQaePqD2o7c5Cf82QBXy2Ceea-MiovDXaLEkpMQVXSgTRwmSzXw", + "level":6, + "latE6":33058575, + "health":100.0, + "resCount":8, + "lngE6":35612649, + "team":"RESISTANCE", + "type":"portal" + }, + "fragments":[ + 5 + ], + "portalGuid":"d911ef545cad44e6ae3e01ada3ceed1b.16" + } + ], + "artifactId":"jarvis" + } + ] +} From b9c8e9c6c59dbf4a846628033e6442f488792f13 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 30 Nov 2013 04:15:17 +0000 Subject: [PATCH 11/63] new reduced map data: first pass at loading the new format --- code/artifact.js | 4 +- code/chat.js | 4 +- code/entity_info.js | 10 +- code/map_data_render.js | 170 +++++++--------------------------- code/map_data_request.js | 2 +- code/munge.js | 163 ++++---------------------------- code/player_names.js | 56 ----------- code/portal_detail_display.js | 3 - 8 files changed, 61 insertions(+), 351 deletions(-) diff --git a/code/artifact.js b/code/artifact.js index b15fafe4..2a6164ab 100644 --- a/code/artifact.js +++ b/code/artifact.js @@ -171,7 +171,7 @@ window.artifact.updateLayer = function() { artifact._layer.clearLayers(); $.each(artifact.portalInfo, function(guid,data) { - var latlng = L.latLng ([data._entityData.locationE6.latE6/1E6, data._entityData.locationE6.lngE6/1E6]); + var latlng = L.latLng ([data._entityData.latE6/1E6, data._entityData.lngE6/1E6]); // jarvis shard icon var iconUrl = undefined; @@ -235,7 +235,7 @@ window.artifact.showArtifactList = function() { var sortVal = 0; - var onclick = 'zoomToAndShowPortal(\''+guid+'\',['+data._entityData.locationE6.latE6/1E6+','+data._entityData.locationE6.lngE6/1E6+'])'; + var onclick = 'zoomToAndShowPortal(\''+guid+'\',['+data._entityData.latE6/1E6+','+data._entityData.lngE6/1E6+'])'; var row = ''+escapeHtmlSpecialChars(data._entityData.portalV2.descriptiveText.TITLE)+''; row += ''; diff --git a/code/chat.js b/code/chat.js index 59e398bb..822da914 100644 --- a/code/chat.js +++ b/code/chat.js @@ -127,7 +127,7 @@ window.chat.requestFaction = function(getOlderMsgs, isRetry) { var d = chat.genPostData(true, chat._faction, getOlderMsgs); var r = window.postAjax( - 'getPaginatedPlextsV2', + 'getPaginatedPlexts', d, function(data, textStatus, jqXHR) { chat.handleFaction(data, getOlderMsgs); }, isRetry @@ -178,7 +178,7 @@ window.chat.requestPublic = function(getOlderMsgs, isRetry) { var d = chat.genPostData(false, chat._public, getOlderMsgs); var r = window.postAjax( - 'getPaginatedPlextsV2', + 'getPaginatedPlexts', d, function(data, textStatus, jqXHR) { chat.handlePublic(data, getOlderMsgs); }, isRetry diff --git a/code/entity_info.js b/code/entity_info.js index 16fc06f4..ef856d3a 100644 --- a/code/entity_info.js +++ b/code/entity_info.js @@ -8,8 +8,14 @@ // given the entity detail data, returns the team the entity belongs // to. Uses TEAM_* enum values. window.getTeam = function(details) { + return teamStringToId(details.controllingTeam.team); +} + +window.teamStringToId = function(teamStr) { var team = TEAM_NONE; - if(details.controllingTeam.team === 'ALIENS' || details.controllingTeam.team === 'ENLIGHTENED') team = TEAM_ENL; - if(details.controllingTeam.team === 'RESISTANCE') team = TEAM_RES; + if(teamStr === 'ENLIGHTENED') team = TEAM_ENL; + if(teamStr === 'RESISTANCE') team = TEAM_RES; return team; } + + diff --git a/code/map_data_render.js b/code/map_data_render.js index df354c4b..2e1d43f8 100644 --- a/code/map_data_render.js +++ b/code/map_data_render.js @@ -104,7 +104,6 @@ window.Render.prototype.processDeletedGameEntityGuids = function(deleted) { } window.Render.prototype.processGameEntities = function(entities) { - var portalGuids = []; for (var i in entities) { var ent = entities[i]; @@ -112,14 +111,9 @@ window.Render.prototype.processGameEntities = function(entities) { // don't create entities in the 'deleted' list if (!(ent[0] in this.deletedGuid)) { this.createEntity(ent); - if ('portalV2' in ent[2]) portalGuids.push(ent[0]); } } - // now reconstruct links 'optimised' out of the data from the portal link data - for (var i in portalGuids) { - this.createLinksFromPortalData(portalGuids[i]); - } } @@ -130,6 +124,7 @@ window.Render.prototype.endRenderPass = function() { // check to see if there are any entities we haven't seen. if so, delete them for (var guid in window.portals) { // special case for selected portal - it's kept even if not seen + // artifact (e.g. jarvis shard) portals are also kept - but they're always 'seen' if (!(guid in this.seenPortalsGuid) && guid !== selectedPortal) { this.deletePortalEntity(guid); } @@ -214,22 +209,6 @@ window.Render.prototype.deleteFieldEntity = function(guid) { var f = window.fields[guid]; var fd = f.options.details; - var deletePortalLinkedField = function(pguid) { - if (pguid in window.portals) { - var pd = window.portals[pguid].options.details; - if (pd.portalV2.linkedFields) { - var i = pd.portalV2.linkedFields.indexOf(guid); - if (i >= 0) { - pd.portalV2.linkedFields.splice(i,1); - } - } - } - } - - deletePortalLinkedField (fd.capturedRegion.vertexA.guid); - deletePortalLinkedField (fd.capturedRegion.vertexB.guid); - deletePortalLinkedField (fd.capturedRegion.vertexC.guid); - fieldsFactionLayers[f.options.team].removeLayer(f); delete window.fields[guid]; } @@ -244,23 +223,30 @@ window.Render.prototype.createEntity = function(ent) { // logic on detecting entity type based on the stock site javascript. - if ("portalV2" in ent[2]) { - this.createPortalEntity(ent); - } else if ("capturedRegion" in ent[2]) { - this.createFieldEntity(ent); - } else if ("edge" in ent[2]) { - this.createLinkEntity(ent); - } else { - console.warn("Unknown entity found: "+JSON.stringify(ent)); - } + switch (ent[2].type) { + case 'portal': + this.createPortalEntity(ent); + break; + case 'edge': + this.createLinkEntity(ent); + break; + + case 'region': + this.createFieldEntity(ent); + break; + + default: + console.warn('unknown entity found: '+JSON.stringify(ent)); + break; + } } window.Render.prototype.createPortalEntity = function(ent) { this.seenPortalsGuid[ent[0]] = true; // flag we've seen it - var previousDetails = undefined; + var previousData = undefined; // check if entity already exists if (ent[0] in window.portals) { @@ -275,21 +261,15 @@ window.Render.prototype.createPortalEntity = function(ent) { // remember the old details, for the callback - previousDetails = p.options.details; + previousData = p.options.data; this.deletePortalEntity(ent[0]); } - var portalLevel = getPortalLevel(ent[2]); - var team = getTeam(ent[2]); + var portalLevel = parseInt(ent[2].level); + var team = teamStringToId(ent[2].team); - var latlng = L.latLng(ent[2].locationE6.latE6/1E6, ent[2].locationE6.lngE6/1E6); - -//TODO: move marker creation, style setting, etc into a separate class -//(as it's called from elsewhere - e.g. selecting/deselecting portals) - -//ALSO: change API for highlighters - make them return the updated style rather than directly calling setStyle on the portal marker -//(can this be done in a backwardly-compatible way??) + var latlng = L.latLng(ent[2].latE6/1E6, ent[2].lngE6/1E6); var dataOptions = { level: portalLevel, @@ -297,32 +277,16 @@ window.Render.prototype.createPortalEntity = function(ent) { ent: ent, // LEGACY - TO BE REMOVED AT SOME POINT! use .guid, .timestamp and .details instead guid: ent[0], timestamp: ent[1], - details: ent[2] + data: { summary: ent[2] }, }; - // Javascript uses references for objects. For now, at least, we need to modify the data within - // the options.details.portalV2 (to add in linkedFields). To avoid tainting the original data (which may be cached) - // we'll shallow-copy these items - dataOptions.details = $.extend({}, dataOptions.details); - dataOptions.details.portalV2 = $.extend({}, dataOptions.details.portalV2); - - - // create a linkedFields entry and add it to details - various bits of code assumes it will exist - for (var fguid in window.fields) { - var fd = window.fields[fguid].options.details; - if ( fd.capturedRegion.vertexA.guid == ent[0] || fd.capturedRegion.vertexB.guid == ent[0] || fd.capturedRegion.vertexC.guid == ent[0]) { - if (!dataOptions.details.portalV2.linkedFields) dataOptions.details.portalV2.linkedFields = []; - dataOptions.details.portalV2.linkedFields.push(fguid); - } - } - var marker = createMarker(latlng, dataOptions); marker.on('click', function() { window.renderPortalDetails(ent[0]); }); marker.on('dblclick', function() { window.renderPortalDetails(ent[0]); window.map.setView(latlng, 17); }); - window.runHooks('portalAdded', {portal: marker, previousDetails: previousDetails}); + window.runHooks('portalAdded', {portal: marker, previousData: previousData}); window.portals[ent[0]] = marker; @@ -370,12 +334,11 @@ window.Render.prototype.createFieldEntity = function(ent) { this.deleteFieldEntity(ent[0]); // option 2, for now } - var team = getTeam(ent[2]); - var reg = ent[2].capturedRegion; + var team = teamStringToId(ent[2].team); var latlngs = [ - L.latLng(reg.vertexA.location.latE6/1E6, reg.vertexA.location.lngE6/1E6), - L.latLng(reg.vertexB.location.latE6/1E6, reg.vertexB.location.lngE6/1E6), - L.latLng(reg.vertexC.location.latE6/1E6, reg.vertexC.location.lngE6/1E6) + L.latLng(ent[2].points[0].latE6/1E6, ent[2].points[0].lngE6/1E6), + L.latLng(ent[2].points[1].latE6/1E6, ent[2].points[1].lngE6/1E6), + L.latLng(ent[2].points[2].latE6/1E6, ent[2].points[2].lngE6/1E6) ]; var poly = L.geodesicPolygon(latlngs, { @@ -387,27 +350,9 @@ window.Render.prototype.createFieldEntity = function(ent) { team: team, guid: ent[0], timestamp: ent[1], - details: ent[2], - // LEGACY FIELDS: these duplicate data available via .details, as IITC previously stored it in data and vertices data: ent[2], - vertices: ent[2].capturedRegion }); - - // now fill in any references portals linkedFields data - var addPortalLinkedField = function(pguid) { - if (pguid in window.portals) { - var pd = window.portals[pguid].options.details; - if (!pd.portalV2.linkedFields) pd.portalV2.linkedFields = []; - if (pd.portalV2.linkedFields.indexOf(pguid) <0 ) { - pd.portalV2.linkedFields.push (ent[0]); - } - } - } - addPortalLinkedField(ent[2].capturedRegion.vertexA.guid); - addPortalLinkedField(ent[2].capturedRegion.vertexB.guid); - addPortalLinkedField(ent[2].capturedRegion.vertexC.guid); - runHooks('fieldAdded',{field: poly}); window.fields[ent[0]] = poly; @@ -433,11 +378,10 @@ window.Render.prototype.createLinkEntity = function(ent,faked) { this.deleteLinkEntity(ent[0]); // option 2 - for now } - var team = getTeam(ent[2]); - var edge = ent[2].edge; + var team = teamStringToId(ent[2].team); var latlngs = [ - L.latLng(edge.originPortalLocation.latE6/1E6, edge.originPortalLocation.lngE6/1E6), - L.latLng(edge.destinationPortalLocation.latE6/1E6, edge.destinationPortalLocation.lngE6/1E6) + L.latLng(ent[2].oLatE6/1E6, ent[2].oLngE6/1E6), + L.latLng(ent[2].dLatE6/1E6, ent[2].dLngE6/1E6) ]; var poly = L.geodesicPolyline(latlngs, { color: COLORS[team], @@ -448,8 +392,6 @@ window.Render.prototype.createLinkEntity = function(ent,faked) { team: team, guid: ent[0], timestamp: ent[1], - details: ent[2], - // LEGACY FIELDS: these duplicate data available via .details, as IITC previously stored it in data and vertices data: ent[2] }); @@ -465,56 +407,6 @@ window.Render.prototype.createLinkEntity = function(ent,faked) { } -window.Render.prototype.createLinksFromPortalData = function(portalGuid) { - - var sourcePortal = portals[portalGuid]; - - for (var sourceLinkIndex in sourcePortal.options.details.portalV2.linkedEdges||[]) { - var sourcePortalLinkInfo = sourcePortal.options.details.portalV2.linkedEdges[sourceLinkIndex]; - - // portals often contain details for edges that don't exist. so only consider faking an edge if this - // is the origin portal - if (sourcePortalLinkInfo.isOrigin) { - - // ... and the other porta has matching link information. - if (sourcePortalLinkInfo.otherPortalGuid in portals) { - - var targetPortal = portals[sourcePortalLinkInfo.otherPortalGuid]; - - for (var targetLinkIndex in targetPortal.options.details.portalV2.linkedEdges||[]) { - var targetPortalLinkInfo = targetPortal.options.details.portalV2.linkedEdges[targetLinkIndex]; - - if (targetPortalLinkInfo.edgeGuid == sourcePortalLinkInfo.edgeGuid) { - // yes - edge in both portals. create it - - var fakeEnt = [ - sourcePortalLinkInfo.edgeGuid, - 0, // mtime for entity data - unknown when faking it, so zero will be the oldest possible - { - controllingTeam: sourcePortal.options.details.controllingTeam, - edge: { - originPortalGuid: portalGuid, - originPortalLocation: sourcePortal.options.details.locationE6, - destinationPortalGuid: sourcePortalLinkInfo.otherPortalGuid, - destinationPortalLocation: targetPortal.options.details.locationE6 - } - } - ]; - - this.createLinkEntity(fakeEnt,true); - - - } - - } - - } - - } - - } -} - window.Render.prototype.updateEntityVisibility = function() { if (this.entityVisibilityZoom === undefined || this.entityVisibilityZoom != map.getZoom()) { diff --git a/code/map_data_request.js b/code/map_data_request.js index 64ea0d2c..fac77036 100644 --- a/code/map_data_request.js +++ b/code/map_data_request.js @@ -391,7 +391,7 @@ window.MapDataRequest.prototype.sendTileRequest = function(tiles) { var savedThis = this; // NOTE: don't add the request with window.request.add, as we don't want the abort handling to apply to map data any more - window.postAjax('getThinnedEntitiesV4', data, + window.postAjax('getThinnedEntities', data, function(data, textStatus, jqXHR) { savedThis.handleResponse (data, tiles, true); }, // request successful callback function() { savedThis.handleResponse (undefined, tiles, false); } // request failed callback ); diff --git a/code/munge.js b/code/munge.js index cc6c0dbe..c464c6b9 100644 --- a/code/munge.js +++ b/code/munge.js @@ -14,145 +14,16 @@ var requestParameterMunges = [ // obsolete munge sets (they don't have some of the new parameters) deleted - // set 7 - 2013-11-06 - { - 'dashboard.getArtifactInfo': 'artifacts', // GET_ARTIFACT_INFO: new (and not obfuscated?!) - 'dashboard.getGameScore': 'yol4dxx5ufqolhk2', // GET_GAME_SCORE - 'dashboard.getPaginatedPlextsV2': '7b83j2z81rtk6101', // GET_PAGINATED_PLEXTS - 'dashboard.getThinnedEntitiesV4': '46su4lrisoq28gxh', // GET_THINNED_ENTITIES - 'dashboard.getPlayersByGuids': 'wsc5puahrymtf1qh', // LOOKUP_PLAYERS - 'dashboard.redeemReward': 'oo0n7pw2m0xufpzx', // REDEEM_REWARD - 'dashboard.sendInviteEmail': 'bo1bp74rz8kbdjkb', // SEND_INVITE_EMAIL - 'dashboard.sendPlext': 'q0f8o4v9t8pt91yv', // SEND_PLEXT - - // common parameters - method: 'imo60cdzkemxduub', - version: '54lh4o0q7nz7dao9', //guessed parameter name - only seen munged - version_parameter: '370c0b4e160ed26c8c4ce40f10f546545730e1ef', // passed as the value to the above parameter - - // GET_THINNED_ENTITIES - quadKeys: 'iqy8e2d3zpne0cmh', //guessed parameter name - only seen munged - - // GET_PAGINATED_PLEXTS - desiredNumItems: 'chwe3yko3xy0qlk3', - minLatE6: 'f31z3x27ua8i05cf', - minLngE6: 't0rmob7f42c0w04r', - maxLatE6: 'ebwfvri5io9q0tvu', - maxLngE6: 'lfqzvpj92dp8uxo6', - minTimestampMs: '23a6djyyieeaeduu', - maxTimestampMs: 'zhjtsm2gw7w3b7mx', - chatTab: 'tak64gipm3hhqpnh', //guessed parameter name - only seen munged - ascendingTimestampOrder: 'v5rzzxtg5rmry3dx', - - // SEND_PLEXT - message: 'onptntn3szan21lj', - latE6: '1jq9lgu3hjajrt7s', - lngE6: 'plbubiopnavbxxh6', -// chatTab: 'tak64gipm3hhqpnh', //guessed parameter name - only seen munged - - // LOOKUP_PLAYERS - guids: '919p2cfpdo2wz03n', - - // SEND_INVITE_EMAIL - inviteeEmailAddress: 'thpbnoyjx0antwm5', - }, - - // set 8 - 2013-11-07 - { - 'dashboard.getArtifactInfo': 'artifacts', // GET_ARTIFACT_INFO: new (and not obfuscated?!) - 'dashboard.getGameScore': 'lls4clhel87apzpa', // GET_GAME_SCORE - 'dashboard.getPaginatedPlextsV2': 'r6n2xgcd8wjsm4og', // GET_PAGINATED_PLEXTS - 'dashboard.getThinnedEntitiesV4': '1ybigzcf2sifu34b', // GET_THINNED_ENTITIES - 'dashboard.getPlayersByGuids': 'uig0xeb6trclqd2l', // LOOKUP_PLAYERS - 'dashboard.redeemReward': '7dd7x64cc2lbutoq', // REDEEM_REWARD - 'dashboard.sendInviteEmail': 'd8p6dvwilsr460u3', // SEND_INVITE_EMAIL - 'dashboard.sendPlext': 'repg2orpg7htkoto', // SEND_PLEXT - - // common parameters - method: '97aes4vnlvyhoxik', - version: 'an8mglz21qabq3wq', //guessed parameter name - only seen munged - version_parameter: 'b92c9d055fcdf715887b173c706e7a2c267e32c5', // passed as the value to the above parameter - - // GET_THINNED_ENTITIES - quadKeys: 'mhjknavysslwfhk6', //guessed parameter name - only seen munged - - // GET_PAGINATED_PLEXTS - desiredNumItems: 'l61g8u397alq3j1x', - minLatE6: 'wwsvpboc5bxd1s9q', - minLngE6: '48l4x7ngfsz47z3u', - maxLatE6: 'p3m1qg81uqldizu6', - maxLngE6: 'h4kv1eef878vfyk3', - minTimestampMs: 'uj1vcy9ufws24v2c', - maxTimestampMs: '8pt1x5nd9hk5vakv', - chatTab: 'zy1yc1rfczashshu', //guessed parameter name - only seen munged - ascendingTimestampOrder: 'duyuskmky68nl2ci', - - // SEND_PLEXT - message: 'xktwjguq0nohzioa', - latE6: 'm4crflfaibmg9mdf', - lngE6: 'h6jfungrw5ii830r', -// chatTab: 'zy1yc1rfczashshu', //guessed parameter name - only seen munged - - // LOOKUP_PLAYERS - guids: '3u9h9cpfh2yiy4fk', - - // SEND_INVITE_EMAIL - inviteeEmailAddress: 'jpg3y4ax7t0w356j', - }, - - // set 9 - 2013-11-1 - { - 'dashboard.getArtifactInfo': 'artifacts', // GET_ARTIFACT_INFO: new (and not obfuscated?!) - 'dashboard.getGameScore': '9w8phj2dccvns3t9', // GET_GAME_SCORE - 'dashboard.getPaginatedPlextsV2': '3b1nc3ub0sd1704x', // GET_PAGINATED_PLEXTS - 'dashboard.getThinnedEntitiesV4': '2xa55qj41qrhfhas', // GET_THINNED_ENTITIES - 'dashboard.getPlayersByGuids': '734hxjh89d53clqq', // LOOKUP_PLAYERS - 'dashboard.redeemReward': 'k3hwg41wf112gjjh', // REDEEM_REWARD - 'dashboard.sendInviteEmail': 'uwizjeb18xmcesa0', // SEND_INVITE_EMAIL - 'dashboard.sendPlext': '5au1m1hut1gyvnix', // SEND_PLEXT - - // common parameters - method: '3sld77nsm0tjmkvi', - version: 'xz7q6r3aja5ttvoo', //guessed parameter name - only seen munged - version_parameter: 'b121024077de2a0dc6b34119e4440785c9ea5e64', // passed as the value to the above parameter - - // GET_THINNED_ENTITIES - quadKeys: '0o6bkrbwevwn6bg1', //guessed parameter name - only seen munged - - // GET_PAGINATED_PLEXTS - desiredNumItems: '3fketl1tv01q7vxu', - minLatE6: '5i6jhgbv3aq3c4qz', - minLngE6: 'pe2io3r932qysg4u', - maxLatE6: 'plzyuy89bnlb3pth', - maxLngE6: 'q0qq1ooc7sxpynth', - minTimestampMs: 'nc282s8hdklv21mw', - maxTimestampMs: 'ezrljj0l71gpelpu', - chatTab: 'efaznrayv5n3jxs0', //guessed parameter name - only seen munged - ascendingTimestampOrder: 'fcmlcb8ya0oa1clk', - - // SEND_PLEXT - message: 'jg4ms2i14rgzi02n', - latE6: 'nkf3evzpkxkq8l2q', - lngE6: '7xoz0xl8se4d1j53', -// chatTab: 'efaznrayv5n3jxs0', //guessed parameter name - only seen munged - - // LOOKUP_PLAYERS - guids: 'm4dcrdltldigfo94', - - // SEND_INVITE_EMAIL - inviteeEmailAddress: 'rye9be4um2t1z5ts', - }, - // set 10 - 2013-11-27 { - 'dashboard.getArtifactInfo': 'artifacts', - 'dashboard.getGameScore': '4oid643d9zc168hs', - 'dashboard.getPaginatedPlextsV2': 's1msyywq51ntudpe', - 'dashboard.getThinnedEntitiesV4': '4467ff9bgxxe4csa', - - 'dashboard.redeemReward': '66l9ivg39ygfqqjm', - 'dashboard.sendInviteEmail': 'cgb7hi5hglv0xx8k', - 'dashboard.sendPlext': 'etn9xq7brd6947kq', + 'dashboard.getArtifactInfo': 'artifacts', // GET_ARTIFACT_INFO + 'dashboard.getGameScore': '4oid643d9zc168hs', // GET_GAME_SCORE + 'dashboard.getPaginatedPlexts': 's1msyywq51ntudpe', // GET_PAGINATED_PLEXTS + 'dashboard.getThinnedEntities': '4467ff9bgxxe4csa', // GET_THINNED_ENTITIES + 'dashboard.getPortalDetails': 'c00thnhf1yp3z6mn', // GET_PORTAL_DETAILS + 'dashboard.redeemReward': '66l9ivg39ygfqqjm', // REDEEM_REWARD + 'dashboard.sendInviteEmail': 'cgb7hi5hglv0xx8k', // SEND_INVITE_EMAIL + 'dashboard.sendPlext': 'etn9xq7brd6947kq', // SEND_PLEXT // common parameters method: 'yyngyttbmmbuvdpa', @@ -179,8 +50,8 @@ var requestParameterMunges = [ lngE6: '3dlxsqrjj2vcmhbc', // chatTab: 'efaznrayv5n3jxs0', //guessed parameter name - only seen munged - // LOOKUP_PLAYERS - guids: '', + // GET_PORTAL_DETAILS + guid: 'seg6ohxgnqf9xu9w', // SEND_INVITE_EMAIL inviteeEmailAddress: '8exta9k7y8huhqmc', @@ -203,9 +74,9 @@ function extractMungeFromStock() { // these are easy - directly available in variables foundMunges['dashboard.getArtifactInfo'] = nemesis.dashboard.requests.MethodName.GET_ARTIFACT_INFO; foundMunges['dashboard.getGameScore'] = nemesis.dashboard.requests.MethodName.GET_GAME_SCORE; - foundMunges['dashboard.getPaginatedPlextsV2'] = nemesis.dashboard.requests.MethodName.GET_PAGINATED_PLEXTS; - foundMunges['dashboard.getThinnedEntitiesV4'] = nemesis.dashboard.requests.MethodName.GET_THINNED_ENTITIES; - foundMunges['dashboard.getPlayersByGuids'] = nemesis.dashboard.requests.MethodName.LOOKUP_PLAYERS; + foundMunges['dashboard.getPaginatedPlexts'] = nemesis.dashboard.requests.MethodName.GET_PAGINATED_PLEXTS; + foundMunges['dashboard.getThinnedEntities'] = nemesis.dashboard.requests.MethodName.GET_THINNED_ENTITIES; + foundMunges['dashboard.getPortalDetails'] = nemesis.dashboard.requests.MethodName.GET_PORTAL_DETAILS; foundMunges['dashboard.redeemReward'] = nemesis.dashboard.requests.MethodName.REDEEM_REWARD; foundMunges['dashboard.sendInviteEmail'] = nemesis.dashboard.requests.MethodName.SEND_INVITE_EMAIL; foundMunges['dashboard.sendPlext'] = nemesis.dashboard.requests.MethodName.SEND_PLEXT; @@ -261,11 +132,11 @@ function extractMungeFromStock() { var chatTab = result[7] || result[8]; if (chatTab != foundMunges.chatTab) throw 'Error: inconsistent munge parsing for chatTab'; - // LOOKUP_PLAYERS - var reg = new RegExp('LOOKUP_PLAYERS, {'+mungeRegExpLit+'a}'); - var result = reg.exec(nemesis.dashboard.network.DataFetcher.prototype.lookupPlayersByGuids.toString()); + // GET_PORTAL_DETAILS + var reg = new RegExp('GET_PORTAL_DETAILS, {'+mungeRegExpLit+'a}'); + var result = reg.exec(nemesis.dashboard.network.DataFetcher.prototype.getPortalDetails.toString()); - foundMunges.guids = result[1] || result[2]; + foundMunges.guid = result[1] || result[2]; // SEND_INVITE_EMAIL var reg = new RegExp('SEND_INVITE_EMAIL, {'+mungeRegExpLit+'b}'); diff --git a/code/player_names.js b/code/player_names.js index e9475a03..7a4a6d82 100644 --- a/code/player_names.js +++ b/code/player_names.js @@ -57,62 +57,6 @@ window.playerNameToGuid = function(playerName) { return guid; } -// resolves all player GUIDs that have been added to the list. Reruns -// renderPortalDetails when finished, so that then-unresolved names -// get replaced by their correct versions. -window.resolvePlayerNames = function() { - if(window.playersToResolve.length === 0) return; - - //limit per request. stock site is never more than 13 (8 res, 4 mods, owner) - //testing shows 15 works and 20 fails - var MAX_RESOLVE_PLAYERS_PER_REQUEST = 15; - var MAX_RESOLVE_REQUESTS = 8; - - if (window.playersToResolve.length > MAX_RESOLVE_PLAYERS_PER_REQUEST*MAX_RESOLVE_REQUESTS) { - console.log('Warning: player name resolve queue had '+window.playersToResolve.length+' entries. Limiting to the first '+MAX_RESOLVE_PLAYERS_PER_REQUEST*MAX_RESOLVE_REQUESTS+' to prevent excessive requests'); - window.playersToResolve = playersToResolve.slice(0,MAX_RESOLVE_PLAYERS_PER_REQUEST*MAX_RESOLVE_REQUESTS); - } - - var p = window.playersToResolve.slice(0,MAX_RESOLVE_PLAYERS_PER_REQUEST); - window.playersToResolve = playersToResolve.slice(MAX_RESOLVE_PLAYERS_PER_REQUEST); - - var d = {guids: p}; - window.playersInResolving = window.playersInResolving.concat(p); - - postAjax('getPlayersByGuids', d, function(dat) { - var resolvedName = {}; - if(dat.result) { - $.each(dat.result, function(ind, player) { - window.setPlayerName(player.guid, player.nickname); - resolvedName[player.guid] = player.nickname; - // remove from array - window.playersInResolving.splice(window.playersInResolving.indexOf(player.guid), 1); - }); - } else { - //no 'result' - a successful http request, but the returned result was an error of some kind - console.warn('getplayers problem - no result in response: '+dat); - - //likely to be some kind of 'bad request' (e.g. too many names at once, or otherwise badly formatted data. - //therefore, not a good idea to automatically retry by adding back to the playersToResolve list - } - - // Run hook 'playerNameResolved' with the resolved player names - window.runHooks('playerNameResolved', {names: resolvedName}); - - //TODO: have an event triggered for this instead of hard-coded single function call - if(window.selectedPortal) - window.renderPortalDetails(window.selectedPortal); - - //if more to do, run again - if(window.playersToResolve.length>0) resolvePlayerNames(); - }, - function() { - // append failed resolves to the list again - console.warn('resolving player guids failed: ' + p.join(', ')); - window.playersToResolve.concat(p); - }); -} - window.setPlayerName = function(guid, nick, uncertain) { // the 'uncertain' flag is set when we're scrolling back through chat. it's possible in this case diff --git a/code/portal_detail_display.js b/code/portal_detail_display.js index 3562844f..ef5eb31b 100644 --- a/code/portal_detail_display.js +++ b/code/portal_detail_display.js @@ -147,9 +147,6 @@ window.renderPortalDetails = function(guid) { + '' ); - // try to resolve names that were required for above functions, but - // weren't available yet. - resolvePlayerNames(); runHooks('portalDetailsUpdated', {portalDetails: d}); } From 184e451bd3e2384857df6837669d2a6106ba0380 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 30 Nov 2013 05:47:31 +0000 Subject: [PATCH 12/63] if munge detection fails, don't guess and try set 0 - instead fail, and throw an exception this will prevent IITC making any requests to the server when a munge set cannot be found - safer than sending bad requests --- code/munge.js | 73 +++++++++++++++++++++------------------------------ 1 file changed, 30 insertions(+), 43 deletions(-) diff --git a/code/munge.js b/code/munge.js index c464c6b9..f696cce0 100644 --- a/code/munge.js +++ b/code/munge.js @@ -60,8 +60,6 @@ var requestParameterMunges = [ ]; -var activeRequestMungeSet = undefined; - // in the recent stock site updates, their javascript code has been less obfuscated, but also the munge parameters // change on every release. I can only assume it's now an integrated step in the build/release system, rather @@ -72,14 +70,15 @@ function extractMungeFromStock() { var foundMunges = {}; // these are easy - directly available in variables - foundMunges['dashboard.getArtifactInfo'] = nemesis.dashboard.requests.MethodName.GET_ARTIFACT_INFO; - foundMunges['dashboard.getGameScore'] = nemesis.dashboard.requests.MethodName.GET_GAME_SCORE; - foundMunges['dashboard.getPaginatedPlexts'] = nemesis.dashboard.requests.MethodName.GET_PAGINATED_PLEXTS; - foundMunges['dashboard.getThinnedEntities'] = nemesis.dashboard.requests.MethodName.GET_THINNED_ENTITIES; - foundMunges['dashboard.getPortalDetails'] = nemesis.dashboard.requests.MethodName.GET_PORTAL_DETAILS; - foundMunges['dashboard.redeemReward'] = nemesis.dashboard.requests.MethodName.REDEEM_REWARD; - foundMunges['dashboard.sendInviteEmail'] = nemesis.dashboard.requests.MethodName.SEND_INVITE_EMAIL; - foundMunges['dashboard.sendPlext'] = nemesis.dashboard.requests.MethodName.SEND_PLEXT; + // NOTE: the .toString() is there so missing variables throw an exception, rather than storing 'undefined' + foundMunges['dashboard.getArtifactInfo'] = nemesis.dashboard.requests.MethodName.GET_ARTIFACT_INFO.toString(); + foundMunges['dashboard.getGameScore'] = nemesis.dashboard.requests.MethodName.GET_GAME_SCORE.toString(); + foundMunges['dashboard.getPaginatedPlexts'] = nemesis.dashboard.requests.MethodName.GET_PAGINATED_PLEXTS.toString(); + foundMunges['dashboard.getThinnedEntities'] = nemesis.dashboard.requests.MethodName.GET_THINNED_ENTITIES.toString(); + foundMunges['dashboard.getPortalDetails'] = nemesis.dashboard.requests.MethodName.GET_PORTAL_DETAILS.toString(); + foundMunges['dashboard.redeemReward'] = nemesis.dashboard.requests.MethodName.REDEEM_REWARD.toString(); + foundMunges['dashboard.sendInviteEmail'] = nemesis.dashboard.requests.MethodName.SEND_INVITE_EMAIL.toString(); + foundMunges['dashboard.sendPlext'] = nemesis.dashboard.requests.MethodName.SEND_PLEXT.toString(); // the rest are trickier - we need to parse the functions of the stock site. these break very often // on site updates @@ -158,44 +157,32 @@ window.detectActiveMungeSet = function() { // first, try and parse the stock functions and extract the munges directly activeMunge = extractMungeFromStock(); if (activeMunge) { - console.log('IITC: Successfully extracted munges from stock javascript'); - return; - } - - // try and find the stock page functions - // FIXME? revert to searching through all the code? is that practical? - var stockFunc; - try { - stockFunc = nemesis.dashboard.network.XhrController.prototype.doSendRequest_.toString(); - } catch(e) { - try { - stockFunc = nemesis.dashboard.network.XhrController.prototype.sendRequest.toString(); - } catch(e) { - try { - stockFunc = nemesis.dashboard.network.DataFetcher.prototype.sendRequest_.toString(); - } catch(e) { - console.warn('Failed to find a relevant function in the stock site'); - } - } - } - - if(stockFunc) { - for (var i in requestParameterMunges) { - if (stockFunc.indexOf (requestParameterMunges[i]['method']) >= 0) { - console.log('IITC: found request munge set index '+i+' in stock intel site'); - activeRequestMungeSet = i; - } - } + console.log('IITC: Successfully extracted munges from stock javascript - excellent work!'); } else { - console.error('IITC: failed to find the stock site function for detecting munge set'); + console.warn('IITC: failed to detect a munge set from the code - searching our list...'); + + // try to find a matching munge set from the pre-defined ones. this code remains as in the case of + // things breaking it can be quicker to update the table than to fix the regular expressions used + // above + + try { + for (var i in requestParameterMunges) { + if (requestParameterMunges[i]['dashboard.getThinnedEntities'] == nemesis.dashboard.requests.MethodName.GET_THINNED_ENTITIES) { + console.log('IITC: found a match with munge set index '+i); + activeMunge = requestParameterMunges[i]; + break; + } + } + } catch(e) { + console.warn('IITC: failed to find matching munge set from supplied list'); + } } - if (activeRequestMungeSet===undefined) { - console.error('IITC: failed to find request munge set - IITC will likely fail'); - activeRequestMungeSet = 0; + if (!activeMunge) { + console.warn('IITC: Error!! failed to find a parameter munge set - neither extracting from stock, or searching through table. IITC CANNOT WORK'); + throw {error:'Failed to find a munge set'}; } - activeMunge = requestParameterMunges[activeRequestMungeSet]; } From 8c810e4e73623a656d5828a7a58dcb6f81b93e59 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 30 Nov 2013 05:48:33 +0000 Subject: [PATCH 13/63] decrease retry count on failed requests, and increase delay before retrying. another step to help reduce issues when IITC breaks due to site changes --- code/map_data_request.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/map_data_request.js b/code/map_data_request.js index fac77036..9c4f52be 100644 --- a/code/map_data_request.js +++ b/code/map_data_request.js @@ -28,7 +28,7 @@ window.MapDataRequest = function() { this.MIN_TILES_PER_REQUEST = 4; // number of times to retry a tile after a 'bad' error (i.e. not a timeout) - this.MAX_TILE_RETRIES = 3; + this.MAX_TILE_RETRIES = 1; // refresh timers this.MOVE_REFRESH = 1; //time, after a map move (pan/zoom) before starting the refresh processing @@ -45,7 +45,7 @@ window.MapDataRequest = function() { this.RUN_QUEUE_DELAY = 0.5; // delay before requeuing tiles in failed requests - this.BAD_REQUEST_REQUEUE_DELAY = 5; // longer delay before retrying a completely failed request - as in this case the servers are struggling + this.BAD_REQUEST_REQUEUE_DELAY = 10; // longer delay before retrying a completely failed request - as in this case the servers are struggling // a delay before processing the queue after requeuing tiles. this gives a chance for other requests to finish // or other requeue actions to happen before the queue is processed, allowing better grouping of requests From f7cd69135551cca9f787a7a10b6c773ca9533171 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 30 Nov 2013 05:56:03 +0000 Subject: [PATCH 14/63] bump version number --- main.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.js b/main.js index 3600df45..071eb7c7 100644 --- a/main.js +++ b/main.js @@ -1,7 +1,7 @@ // ==UserScript== // @id ingress-intel-total-conversion@jonatkins // @name IITC: Ingress intel map total conversion -// @version 0.15.1.@@DATETIMEVERSION@@ +// @version 0.16.0.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ From f899cdbe693b171458ab2203bb372b3d7c5f5766 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 30 Nov 2013 05:57:15 +0000 Subject: [PATCH 15/63] bump version for mobile app too - just so it's clear it's separate from the broken 0.9 release no app changes made --- mobile/AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mobile/AndroidManifest.xml b/mobile/AndroidManifest.xml index 5bf53764..874ec60a 100644 --- a/mobile/AndroidManifest.xml +++ b/mobile/AndroidManifest.xml @@ -2,8 +2,8 @@ + android:versionCode="61" + android:versionName="0.10.0"> Date: Sat, 30 Nov 2013 06:06:29 +0000 Subject: [PATCH 16/63] move a bunch of plugins into a 'broken' subfolder, for now this is a quick way to remove them from test builds as they're unlikely to be practical to fix for 0.16.0 release --- plugins/{ => broken}/compute-ap-stats.user.js | 0 plugins/{ => broken}/draw-resonators.user.js | 0 plugins/{ => broken}/players-resonators.user.js | 0 plugins/{ => broken}/portal-defense.user.js | 0 .../portal-highlighter-bad-deployment-distance.user.js | 0 plugins/{ => broken}/portal-highlighter-can-make-level.user.js | 0 plugins/{ => broken}/portal-highlighter-imminent-decay.user.js | 0 plugins/{ => broken}/portal-highlighter-mitigation.user.js | 0 plugins/{ => broken}/portal-highlighter-mods.user.js | 0 plugins/{ => broken}/portal-highlighter-my-8-portals.user.js | 0 plugins/{ => broken}/portal-highlighter-my-portals.user.js | 0 .../portal-highlighter-portal-ap-energy-relative.user.js | 0 .../{ => broken}/portal-highlighter-portal-ap-relative.user.js | 0 plugins/{ => broken}/portal-highlighter-portal-ap.user.js | 0 plugins/{ => broken}/portal-highlighter-portals-upgrade.user.js | 0 plugins/{ => broken}/portals-list.user.js | 0 plugins/{ => broken}/scoreboard.user.js | 0 17 files changed, 0 insertions(+), 0 deletions(-) rename plugins/{ => broken}/compute-ap-stats.user.js (100%) rename plugins/{ => broken}/draw-resonators.user.js (100%) rename plugins/{ => broken}/players-resonators.user.js (100%) rename plugins/{ => broken}/portal-defense.user.js (100%) rename plugins/{ => broken}/portal-highlighter-bad-deployment-distance.user.js (100%) rename plugins/{ => broken}/portal-highlighter-can-make-level.user.js (100%) rename plugins/{ => broken}/portal-highlighter-imminent-decay.user.js (100%) rename plugins/{ => broken}/portal-highlighter-mitigation.user.js (100%) rename plugins/{ => broken}/portal-highlighter-mods.user.js (100%) rename plugins/{ => broken}/portal-highlighter-my-8-portals.user.js (100%) rename plugins/{ => broken}/portal-highlighter-my-portals.user.js (100%) rename plugins/{ => broken}/portal-highlighter-portal-ap-energy-relative.user.js (100%) rename plugins/{ => broken}/portal-highlighter-portal-ap-relative.user.js (100%) rename plugins/{ => broken}/portal-highlighter-portal-ap.user.js (100%) rename plugins/{ => broken}/portal-highlighter-portals-upgrade.user.js (100%) rename plugins/{ => broken}/portals-list.user.js (100%) rename plugins/{ => broken}/scoreboard.user.js (100%) diff --git a/plugins/compute-ap-stats.user.js b/plugins/broken/compute-ap-stats.user.js similarity index 100% rename from plugins/compute-ap-stats.user.js rename to plugins/broken/compute-ap-stats.user.js diff --git a/plugins/draw-resonators.user.js b/plugins/broken/draw-resonators.user.js similarity index 100% rename from plugins/draw-resonators.user.js rename to plugins/broken/draw-resonators.user.js diff --git a/plugins/players-resonators.user.js b/plugins/broken/players-resonators.user.js similarity index 100% rename from plugins/players-resonators.user.js rename to plugins/broken/players-resonators.user.js diff --git a/plugins/portal-defense.user.js b/plugins/broken/portal-defense.user.js similarity index 100% rename from plugins/portal-defense.user.js rename to plugins/broken/portal-defense.user.js diff --git a/plugins/portal-highlighter-bad-deployment-distance.user.js b/plugins/broken/portal-highlighter-bad-deployment-distance.user.js similarity index 100% rename from plugins/portal-highlighter-bad-deployment-distance.user.js rename to plugins/broken/portal-highlighter-bad-deployment-distance.user.js diff --git a/plugins/portal-highlighter-can-make-level.user.js b/plugins/broken/portal-highlighter-can-make-level.user.js similarity index 100% rename from plugins/portal-highlighter-can-make-level.user.js rename to plugins/broken/portal-highlighter-can-make-level.user.js diff --git a/plugins/portal-highlighter-imminent-decay.user.js b/plugins/broken/portal-highlighter-imminent-decay.user.js similarity index 100% rename from plugins/portal-highlighter-imminent-decay.user.js rename to plugins/broken/portal-highlighter-imminent-decay.user.js diff --git a/plugins/portal-highlighter-mitigation.user.js b/plugins/broken/portal-highlighter-mitigation.user.js similarity index 100% rename from plugins/portal-highlighter-mitigation.user.js rename to plugins/broken/portal-highlighter-mitigation.user.js diff --git a/plugins/portal-highlighter-mods.user.js b/plugins/broken/portal-highlighter-mods.user.js similarity index 100% rename from plugins/portal-highlighter-mods.user.js rename to plugins/broken/portal-highlighter-mods.user.js diff --git a/plugins/portal-highlighter-my-8-portals.user.js b/plugins/broken/portal-highlighter-my-8-portals.user.js similarity index 100% rename from plugins/portal-highlighter-my-8-portals.user.js rename to plugins/broken/portal-highlighter-my-8-portals.user.js diff --git a/plugins/portal-highlighter-my-portals.user.js b/plugins/broken/portal-highlighter-my-portals.user.js similarity index 100% rename from plugins/portal-highlighter-my-portals.user.js rename to plugins/broken/portal-highlighter-my-portals.user.js diff --git a/plugins/portal-highlighter-portal-ap-energy-relative.user.js b/plugins/broken/portal-highlighter-portal-ap-energy-relative.user.js similarity index 100% rename from plugins/portal-highlighter-portal-ap-energy-relative.user.js rename to plugins/broken/portal-highlighter-portal-ap-energy-relative.user.js diff --git a/plugins/portal-highlighter-portal-ap-relative.user.js b/plugins/broken/portal-highlighter-portal-ap-relative.user.js similarity index 100% rename from plugins/portal-highlighter-portal-ap-relative.user.js rename to plugins/broken/portal-highlighter-portal-ap-relative.user.js diff --git a/plugins/portal-highlighter-portal-ap.user.js b/plugins/broken/portal-highlighter-portal-ap.user.js similarity index 100% rename from plugins/portal-highlighter-portal-ap.user.js rename to plugins/broken/portal-highlighter-portal-ap.user.js diff --git a/plugins/portal-highlighter-portals-upgrade.user.js b/plugins/broken/portal-highlighter-portals-upgrade.user.js similarity index 100% rename from plugins/portal-highlighter-portals-upgrade.user.js rename to plugins/broken/portal-highlighter-portals-upgrade.user.js diff --git a/plugins/portals-list.user.js b/plugins/broken/portals-list.user.js similarity index 100% rename from plugins/portals-list.user.js rename to plugins/broken/portals-list.user.js diff --git a/plugins/scoreboard.user.js b/plugins/broken/scoreboard.user.js similarity index 100% rename from plugins/scoreboard.user.js rename to plugins/broken/scoreboard.user.js From c197f749458600f8e65a93d58b853d131d49a0d9 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 30 Nov 2013 21:06:02 +0000 Subject: [PATCH 17/63] change portal map data storage to match the method used for links/fields the detailed portal data, now retreived separately from the map, will be handled by separate code, and not stored within the portals --- code/map_data_render.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/map_data_render.js b/code/map_data_render.js index 2e1d43f8..604b3c28 100644 --- a/code/map_data_render.js +++ b/code/map_data_render.js @@ -277,7 +277,7 @@ window.Render.prototype.createPortalEntity = function(ent) { ent: ent, // LEGACY - TO BE REMOVED AT SOME POINT! use .guid, .timestamp and .details instead guid: ent[0], timestamp: ent[1], - data: { summary: ent[2] }, + data: ent[2] }; var marker = createMarker(latlng, dataOptions); From 7a19d30173cf5446b1d79c023d7d902374091b22 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 30 Nov 2013 22:26:40 +0000 Subject: [PATCH 18/63] first update of sidebar for new data format: show the info available from the brief portal data TODO: retrieve the full portal data and update to include that --- code/portal_data.js | 41 ++++ code/portal_detail_display.js | 282 +++++++++++++++++----------- code/portal_detail_display_tools.js | 3 +- code/portal_info.js | 6 +- 4 files changed, 222 insertions(+), 110 deletions(-) create mode 100644 code/portal_data.js diff --git a/code/portal_data.js b/code/portal_data.js new file mode 100644 index 00000000..867bb464 --- /dev/null +++ b/code/portal_data.js @@ -0,0 +1,41 @@ +/// PORTAL DATA TOOLS /////////////////////////////////////////////////// +// misc functions to get portal info + +// search through the links data for all that link from or to a portal. returns an object with separate lists of in +// and out links. may or may not be as accurate as the portal details, depending on how much data the API returns +window.getPortalLinks = function(guid) { + + var links = { in: [], out: [] }; + + $.each(window.links, function(g,l) { + var d = l.options.data; + + if (d.oGuid == guid) { + links.out.push(g); + } + if (d.dGuid == guid) { + links.in.push(g); + } + }); + + return links; +} + + +// search through the fields for all that reference a portal +window.getPortalFields = function(guid) { + var fields = []; + + $.each(window.fields, function(g,f) { + var d = f.options.data; + + if ( d.points[0].guid == guid + || d.points[1].guid == guid + || d.points[2].guid == guid ) { + + fields.push(g); + } + }); + + return fields; +} diff --git a/code/portal_detail_display.js b/code/portal_detail_display.js index ef5eb31b..3c31cb07 100644 --- a/code/portal_detail_display.js +++ b/code/portal_detail_display.js @@ -3,81 +3,42 @@ // methods that highlight the portal in the map view. window.renderPortalDetails = function(guid) { + // TODO: start a request for the selected portal detailed data + // (do this even if not in window.portals?) + selectPortal(window.portals[guid] ? guid : null); + if(!window.portals[guid]) { urlPortal = guid; $('#portaldetails').html(''); if(isSmartphone()) { $('.fullimg').remove(); - $('#mobileinfo').html(''); + $('#mobileinfo').html('
tap here for info screen
'); } return; } - var d = window.portals[guid].options.details; - - // collect some random data that’s not worth to put in an own method - var links = {incoming: 0, outgoing: 0}; - if(d.portalV2.linkedEdges) $.each(d.portalV2.linkedEdges, function(ind, link) { - links[link.isOrigin ? 'outgoing' : 'incoming']++; - }); - function linkExpl(t) { return ''+t+''; } - var linksText = [linkExpl('links'), linkExpl(' ↳ ' + links.incoming+'  •  '+links.outgoing+' ↴')]; - - var player = d.captured && d.captured.capturingPlayerId - ? '' + getPlayerName(d.captured.capturingPlayerId) + '' - : null; - var playerText = player ? ['owner', player] : null; - - var time = d.captured - ? '' - + unixTimeToString(d.captured.capturedTime) + '' - : null; - var sinceText = time ? ['since', time] : null; - - var linkedFields = ['fields', d.portalV2.linkedFields ? d.portalV2.linkedFields.length : 0]; - - // collect and html-ify random data - var randDetails = [ - playerText, sinceText, - getRangeText(d), getEnergyText(d), - linksText, getAvgResoDistText(d), - linkedFields, getAttackApGainText(d), - getHackDetailsText(d), getMitigationText(d) - ]; - - // artifact details - - //niantic hard-code the fact it's just jarvis shards/targets - so until more examples exist, we'll do the same - //(at some future point we can iterate through all the artifact types and add rows as needed) - var jarvisArtifact = artifact.getPortalData (guid, 'jarvis'); - if (jarvisArtifact) { - // the genFourColumnTable function below doesn't handle cases where one column is null and the other isn't - so default to *something* in both columns - var target = ['',''], shards = ['shards','(none)']; - if (jarvisArtifact.target) { - target = ['target', ''+(jarvisArtifact.target==TEAM_RES?'Resistance':'Enlightened')+'']; - } - if (jarvisArtifact.fragments) { - shards = [jarvisArtifact.fragments.length>1?'shards':'shard', '#'+jarvisArtifact.fragments.join(', #')]; - } - - randDetails.push (target, shards); - } + var portal = window.portals[guid]; + var data = portal.options.data; + var details = undefined; //TODO: get the details - randDetails = '' + genFourColumnTable(randDetails) + '
'; + var modDetails = details ? '
'+getModDetails(details)+'
' : ''; + var randDetails = details ? getPortalRandDetails(details) : ''; + var resoDetails = details ? getResonatorDetails(details) : ''; - var resoDetails = '' + getResonatorDetails(d) + '
'; - var img = getPortalImageUrl(d); - var lat = d.locationE6.latE6/1E6; - var lng = d.locationE6.lngE6/1E6; - var perma = '/intel?ll='+lat+','+lng+'&z=17&pll='+lat+','+lng; - var imgTitle = 'title="'+getPortalDescriptionFromDetails(d)+'\n\nClick to show full image."'; - var poslinks = 'window.showPortalPosLinks('+lat+','+lng+',\''+escapeJavascriptString(d.portalV2.descriptiveText.TITLE)+'\')'; - var portalDetailObj = window.getPortalDescriptionFromDetailsExtended(d); + + + var img = fixPortalImageUrl(details ? details.imageByUrl && details.imageByUrl.imageUrl : data.image); + var title = details ? details.portalV2.descriptiveText.TITLE : data.title; + + var lat = data.latE6/1E6; + var lng = data.lngE6/1E6; + + var imgTitle = ''; //'title="'+getPortalDescriptionFromDetails(details)+'\n\nClick to show full image."'; + var portalDetailObj = undefined; //window.getPortalDescriptionFromDetailsExtended(details); var portalDetailedDescription = ''; @@ -111,71 +72,182 @@ window.renderPortalDetails = function(guid) { portalDetailedDescription += ''; } - var levelDetails = getPortalLevel(d); - if(levelDetails != 8) { - if(levelDetails==Math.ceil(levelDetails)) - levelDetails += "\n8"; - else - levelDetails += "\n" + (Math.ceil(levelDetails) - levelDetails)*8; - levelDetails += " resonator level(s) needed for next portal level"; - } else { - levelDetails += "\nfully upgraded"; + // portal level. start with basic data - then extend with fractional info in tooltip if available + var levelInt = data ? data.level : getPortalLevel(details); + var levelDetails = data.level; + if (details) { + levelDetails = getPortalLevel(details); + if(levelDetails != 8) { + if(levelDetails==Math.ceil(levelDetails)) + levelDetails += "\n8"; + else + levelDetails += "\n" + (Math.ceil(levelDetails) - levelDetails)*8; + levelDetails += " resonator level(s) needed for next portal level"; + } else { + levelDetails += "\nfully upgraded"; + } } levelDetails = "Level " + levelDetails; + + var linkDetails = []; + + var posOnClick = 'window.showPortalPosLinks('+lat+','+lng+',\''+escapeJavascriptString(title)+'\')'; + var permalinkUrl = '/intel?ll='+lat+','+lng+'&z=17&pll='+lat+','+lng; + + if (typeof android !== 'undefined' && android && android.intentPosLink) { + // android devices. one share link option - and the android app provides an interface to share the URL, + // share as a geo: intent (navigation via google maps), etc + + var shareLink = $('
').html( $('').attr({onclick:posOnClick}).text('Share portal') ).html(); + linkDetails.push(''); + + } else { + // non-android - a permalink for the portal + var permaHtml = $('
').html( $('').attr({href:permalinkUrl, target:'_blank', title:'Create a URL link to this portal'}).text('Portal link') ).html(); + linkDetails.push ( '' ); + + // and a map link popup dialog + var mapHtml = $('' - + '
'+getModDetails(d)+'
' - + randDetails - + resoDetails - + '
' + $('
') + .attr({class:'imgpreview', title:imgTitle, style:"background-image: url('"+img+"')"}) + .append( + $('').attr({id:'level', title: levelDetails}).text(levelInt), + $('
').attr({class:'portalDetails'}).html(portalDetailedDescription), + $('').attr({class:'hide', src:img}) + ), + + modDetails, + + randDetails, + + resoDetails, + + '
' + linkDetails.join('') + '
' ); - runHooks('portalDetailsUpdated', {portalDetails: d}); + runHooks('portalDetailsUpdated', {guid: guid, portal: portal, portalDetails: details, portalData: data}); } + + +window.getRandPortalDetails = function(d) { + + var randDetails; + + if (d) { + + // collect some random data that’s not worth to put in an own method + var links = {incoming: 0, outgoing: 0}; + $.each(d.portalV2.linkedEdges||[], function(ind, link) { + links[link.isOrigin ? 'outgoing' : 'incoming']++; + }); + + function linkExpl(t) { return ''+t+''; } + var linksText = [linkExpl('links'), linkExpl(' ↳ ' + links.incoming+'  •  '+links.outgoing+' ↴')]; + + var player = d.captured && d.captured.capturingPlayerId + ? '' + getPlayerName(d.captured.capturingPlayerId) + '' + : null; + var playerText = player ? ['owner', player] : null; + + var time = d.captured + ? '' + + unixTimeToString(d.captured.capturedTime) + '' + : null; + var sinceText = time ? ['since', time] : null; + + var linkedFields = ['fields', d.portalV2.linkedFields ? d.portalV2.linkedFields.length : 0]; + + // collect and html-ify random data + var randDetailsData = []; + if (playerText && sinceText) { + randDetailsData.push (playerText, sinceText); + } + + randDetailsData.push ( + getRangeText(d), getEnergyText(d), + linksText, getAvgResoDistText(d), + linkedFields, getAttackApGainText(d), + getHackDetailsText(d), getMitigationText(d) + ); + + // artifact details + + //niantic hard-code the fact it's just jarvis shards/targets - so until more examples exist, we'll do the same + //(at some future point we can iterate through all the artifact types and add rows as needed) + var jarvisArtifact = artifact.getPortalData (guid, 'jarvis'); + if (jarvisArtifact) { + // the genFourColumnTable function below doesn't handle cases where one column is null and the other isn't - so default to *something* in both columns + var target = ['',''], shards = ['shards','(none)']; + if (jarvisArtifact.target) { + target = ['target', ''+(jarvisArtifact.target==TEAM_RES?'Resistance':'Enlightened')+'']; + } + if (jarvisArtifact.fragments) { + shards = [jarvisArtifact.fragments.length>1?'shards':'shard', '#'+jarvisArtifact.fragments.join(', #')]; + } + + randDetailsData.push (target, shards); + } + + randDetails = '' + genFourColumnTable(randDetailsData) + '
'; + + } + + return randDetails; +} + + // draws link-range and hack-range circles around the portal with the // given details. Clear them if parameter 'd' is null. -window.setPortalIndicators = function(d) { +window.setPortalIndicators = function(p) { if(portalRangeIndicator) map.removeLayer(portalRangeIndicator); portalRangeIndicator = null; if(portalAccessIndicator) map.removeLayer(portalAccessIndicator); portalAccessIndicator = null; - if(d === null) return; + // if we have a portal... - var range = getPortalRange(d); - var coord = [d.locationE6.latE6/1E6, d.locationE6.lngE6/1E6]; - portalRangeIndicator = (range.range > 0 - ? L.geodesicCircle(coord, range.range, { - fill: false, - color: RANGE_INDICATOR_COLOR, - weight: 3, - dashArray: range.isLinkable ? undefined : "10,10", - clickable: false }) - : L.circle(coord, range.range, { fill: false, stroke: false, clickable: false }) + if(p) { + var coord = p.getLatLng(); + + // range is only known for sure if we have portal details + // TODO? render a min range guess until details are loaded..? + + var d = p.options.details; + if (d) { + var range = getPortalRange(d); + portalRangeIndicator = (range.range > 0 + ? L.geodesicCircle(coord, range.range, { + fill: false, + color: RANGE_INDICATOR_COLOR, + weight: 3, + dashArray: range.isLinkable ? undefined : "10,10", + clickable: false }) + : L.circle(coord, range.range, { fill: false, stroke: false, clickable: false }) + ).addTo(map); + } + + portalAccessIndicator = L.circle(coord, HACK_RANGE, + { fill: false, color: ACCESS_INDICATOR_COLOR, weight: 2, clickable: false } ).addTo(map); + } - portalAccessIndicator = L.circle(coord, HACK_RANGE, - { fill: false, color: ACCESS_INDICATOR_COLOR, weight: 2, clickable: false } - ).addTo(map); } // highlights portal with given GUID. Automatically clears highlights diff --git a/code/portal_detail_display_tools.js b/code/portal_detail_display_tools.js index 353189d9..e3c67998 100644 --- a/code/portal_detail_display_tools.js +++ b/code/portal_detail_display_tools.js @@ -184,7 +184,8 @@ window.getResonatorDetails = function(d) { resoDetails.push(renderResonatorDetails(slot, l, v, dist, nick)); }); - return genFourColumnTable(resoDetails); + return '' + genFourColumnTable(resoDetails) + '
'; + } // helper function that renders the HTML for a given resonator. Does diff --git a/code/portal_info.js b/code/portal_info.js index fd27b4ee..5a85d4ee 100644 --- a/code/portal_info.js +++ b/code/portal_info.js @@ -194,10 +194,8 @@ window.potentialPortalLevel = function(d) { } -window.getPortalImageUrl = function(d) { - if (d.imageByUrl && d.imageByUrl.imageUrl) { - url = d.imageByUrl.imageUrl; - +window.fixPortalImageUrl = function(url) { + if (url) { if (window.location.protocol === 'https:') { url = url.indexOf('www.panoramio.com') !== -1 ? url.replace(/^http:\/\/www/, 'https://ssl').replace('small', 'medium') From d647e8786fb743bc7f423e8d8dcc4801eac96677 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 30 Nov 2013 22:32:11 +0000 Subject: [PATCH 19/63] fix artifact list --- code/artifact.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/artifact.js b/code/artifact.js index 2a6164ab..88676ab5 100644 --- a/code/artifact.js +++ b/code/artifact.js @@ -236,7 +236,7 @@ window.artifact.showArtifactList = function() { var sortVal = 0; var onclick = 'zoomToAndShowPortal(\''+guid+'\',['+data._entityData.latE6/1E6+','+data._entityData.lngE6/1E6+'])'; - var row = ''+escapeHtmlSpecialChars(data._entityData.portalV2.descriptiveText.TITLE)+''; + var row = ''+escapeHtmlSpecialChars(data._entityData.title)+''; row += ''; From e935902c4946b1be24c0fc0200b4965d1ea68a64 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 30 Nov 2013 23:19:46 +0000 Subject: [PATCH 20/63] misc fixes - some untested - no GUIDs in chat for players or portal details - so remove player GUID related functions - remove player guid code from COMM - update portal_info functions to compare to player name rather than guid --- code/boot.js | 2 - code/chat.js | 10 +--- code/player_names.js | 88 ++--------------------------------- code/portal_detail_display.js | 9 ++-- code/portal_info.js | 6 ++- 5 files changed, 15 insertions(+), 100 deletions(-) diff --git a/code/boot.js b/code/boot.js index 6a313f83..a771c4e4 100644 --- a/code/boot.js +++ b/code/boot.js @@ -338,7 +338,6 @@ window.setMapBaseLayer = function() { // included as inline script in the original site, the data is static // and cannot be updated. window.setupPlayerStat = function() { - PLAYER.guid = playerNameToGuid(PLAYER.nickname); var level; var ap = parseInt(PLAYER.ap); for(level = 0; level < MIN_AP_FOR_LEVEL.length; level++) { @@ -531,7 +530,6 @@ function boot() { window.setupTaphold(); window.setupStyles(); window.setupDialogs(); - window.setupPlayerNameCache(); window.setupMap(); window.setupGeosearch(); window.setupRedeem(); diff --git a/code/chat.js b/code/chat.js index 822da914..31d7092d 100644 --- a/code/chat.js +++ b/code/chat.js @@ -284,11 +284,9 @@ window.chat.writeDataToHash = function(newData, storageHash, isPublicChannel, is switch(markup[0]) { case 'SENDER': // user generated messages nick = markup[1].plain.slice(0, -2); // cut “: ” at end - pguid = markup[1].guid; break; case 'PLAYER': // automatically generated messages - pguid = markup[1].guid; nick = markup[1].plain; team = markup[1].team === 'RESISTANCE' ? TEAM_RES : TEAM_ENL; if(ind > 0) msg += nick; // don’t repeat nick directly @@ -351,13 +349,9 @@ window.chat.writeDataToHash = function(newData, storageHash, isPublicChannel, is if ((!isPublicChannel) && (!isSecureMessage)) msg = '[public] ' + msg; - // format: timestamp, autogenerated, HTML message, player guid - storageHash.data[json[0]] = [json[1], auto, chat.renderMsg(msg, nick, time, team, msgToPlayer, systemNarrowcast), pguid]; + // format: timestamp, autogenerated, HTML message + storageHash.data[json[0]] = [json[1], auto, chat.renderMsg(msg, nick, time, team, msgToPlayer, systemNarrowcast)]; - // if we're processing older messages, we could be looking at pre-name change mentions or similar - // so in that case, flag it so we don't overwrite existing name cache entries. - // (it's not perfect - the initial request has the wrong value here) - window.setPlayerName(pguid, nick, isOlderMsgs); // free nick name resolves. }); } diff --git a/code/player_names.js b/code/player_names.js index 7a4a6d82..4bb73597 100644 --- a/code/player_names.js +++ b/code/player_names.js @@ -1,96 +1,18 @@ // PLAYER NAMES ////////////////////////////////////////////////////// -// Player names are cached in sessionStorage. There is no GUI -// element from within the total conversion to clean them, but you -// can run sessionStorage.clean() to reset it. - - -window.setupPlayerNameCache = function() { - // IITC used to store player names in localStorage rather than sessionStorage. lets clear out any cached - // names from session storage - var matchPlayerGuid = new RegExp ('^[0-9a-f]{32}\\.c$'); - - $.each(Object.keys(localStorage), function(ind,key) { - if ( matchPlayerGuid.test(key) ) { - // copy from localStorage to sessionStorage if not already there - if (!sessionStorage[key]) sessionStorage[key] = localStorage[key]; - // then clear from localStorage - localStorage.removeItem(key); - } - }); - -} - - -// retrieves player name by GUID. If the name is not yet available, it -// will be added to a global list of GUIDs that need to be resolved. -// The resolve method is not called automatically. -window.getPlayerName = function(guid) { - if(sessionStorage[guid]) return sessionStorage[guid]; - // only add to queue if it isn’t already - if(playersToResolve.indexOf(guid) === -1 && playersInResolving.indexOf(guid) === -1) { - playersToResolve.push(guid); - } - return '{'+guid.slice(0, 12)+'}'; -} - -window._playerNameToGuidCache = {}; - -window.playerNameToGuid = function(playerName) { - var cachedGuid = window._playerNameToGuidCache[playerName]; - if (cachedGuid !== undefined) return cachedGuid; - - // IITC needs our own player GUID, from a lookup by name. so we retrieve this from localstorage (if available) - if (playerName == PLAYER.nickname) { - cachedGuid = localStorage['PLAYER-'+PLAYER.nickname]; - if (cachedGuid !== undefined) return cachedGuid; - } - - var guid = null; - $.each(Object.keys(sessionStorage), function(ind,key) { - if(playerName === sessionStorage[key]) { - guid = key; - window._playerNameToGuidCache[playerName] = guid; - return false; //break from $.each - } - }); - - return guid; -} - - -window.setPlayerName = function(guid, nick, uncertain) { - // the 'uncertain' flag is set when we're scrolling back through chat. it's possible in this case - // to come across a message from before a name change. these should be ignored if existing cache entries exist - if(uncertain && guid in sessionStorage) return; - - if($.trim(('' + nick)).slice(0, 5) === '{"L":' && !window.alertFor37WasShown) { - window.alertFor37WasShown = true; - alert('You have run into bug #37. Please help me solve it!\nCopy and paste this text and post it here:\nhttps://github.com/breunigs/ingress-intel-total-conversion/issues/37\nIf copy & pasting doesn’t work, make a screenshot instead.\n\n\n' + window.debug.printStackTrace() + '\n\n\n' + JSON.stringify(nick)); - } - sessionStorage[guid] = nick; - - // IITC needs our own player ID early on in startup. the only way we can find this is by something else - // doing a guid->name lookup for our own name. as this doesn't always happen - and likely won't happen when needed - // we'll store our own name->guid lookup in localStorage - if (nick == PLAYER.nickname) { - localStorage['PLAYER-'+PLAYER.nickname] = guid; - PLAYER.guid = guid; // set it in PLAYER in case it wasn't already done - } -} - // test to see if a specific player GUID is a special system account (e.g. __JARVIS__, __ADA__) that shouldn't // be listed as a player -window.isSystemPlayer = function(guid) { +window.isSystemPlayer = function(name) { - switch (guid) { - case '00000000000000000000000000000001.c': - case '00000000000000000000000000000002.c': + switch (name) { + case '__ADA__': + case '__JARVIS__': return true; default: return false; } + } diff --git a/code/portal_detail_display.js b/code/portal_detail_display.js index 3c31cb07..4a14b343 100644 --- a/code/portal_detail_display.js +++ b/code/portal_detail_display.js @@ -28,8 +28,9 @@ window.renderPortalDetails = function(guid) { var randDetails = details ? getPortalRandDetails(details) : ''; var resoDetails = details ? getResonatorDetails(details) : ''; - - +//TODO? other status details... + var statusDetails = details ? '' : '
Loading details...
'; + var img = fixPortalImageUrl(details ? details.imageByUrl && details.imageByUrl.imageUrl : data.image); var title = details ? details.portalV2.descriptiveText.TITLE : data.title; @@ -131,11 +132,9 @@ window.renderPortalDetails = function(guid) { ), modDetails, - randDetails, - resoDetails, - + statusDetails, '
' + linkDetails.join('') + '
' ); diff --git a/code/portal_info.js b/code/portal_info.js index 5a85d4ee..56c47c23 100644 --- a/code/portal_info.js +++ b/code/portal_info.js @@ -112,7 +112,8 @@ window.getAttackApGain = function(d) { return true; resoCount += 1; var reslevel=parseInt(reso.level); - if(reso.ownerGuid === PLAYER.guid) { + // NOTE: reso.ownerGuid is actually the name - no player GUIDs are visible in the protocol any more + if(reso.ownerGuid === PLAYER.nickname) { if(maxResonators[reslevel] > 0) { maxResonators[reslevel] -= 1; } @@ -167,7 +168,8 @@ window.potentialPortalLevel = function(d) { player_resontators[i] = i > PLAYER.level ? 0 : MAX_RESO_PER_PLAYER[i]; } $.each(resonators_on_portal, function(ind, reso) { - if(reso !== null && reso.ownerGuid === window.PLAYER.guid) { + // NOTE: reso.ownerGuid is actually the player name - GUIDs are not in the protocol any more + if(reso !== null && reso.ownerGuid === window.PLAYER.nickname) { player_resontators[reso.level]--; } resonator_levels.push(reso === null ? 0 : reso.level); From 138a37d77798ddf55eb6266a79a8e6519a613b53 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 00:08:25 +0000 Subject: [PATCH 21/63] first attempt at loading portal details, and displaying in the sidebar once loaded --- code/boot.js | 1 + code/{map_data_cache.js => data_cache.js} | 0 code/hooks.js | 6 ++- code/portal_detail.js | 55 +++++++++++++++++++++++ code/portal_detail_display.js | 19 ++++---- code/portal_detail_display_tools.js | 4 +- 6 files changed, 73 insertions(+), 12 deletions(-) rename code/{map_data_cache.js => data_cache.js} (100%) create mode 100644 code/portal_detail.js diff --git a/code/boot.js b/code/boot.js index a771c4e4..50258b5f 100644 --- a/code/boot.js +++ b/code/boot.js @@ -540,6 +540,7 @@ function boot() { window.setupPlayerStat(); window.setupTooltips(); window.chat.setup(); + window.portalDetail.setup(); window.setupQRLoadLib(); window.setupLayerChooserSelectOne(); window.setupLayerChooserStatusRecorder(); diff --git a/code/map_data_cache.js b/code/data_cache.js similarity index 100% rename from code/map_data_cache.js rename to code/data_cache.js diff --git a/code/hooks.js b/code/hooks.js index b6a7ef6c..fb295655 100644 --- a/code/hooks.js +++ b/code/hooks.js @@ -48,7 +48,8 @@ // called after each map data request finished. Argument is // {success: boolean} indicated the request success or fail. // iitcLoaded: called after IITC and all plugins loaded - +// portalDetailLoaded: called when a request to load full portal detail +// completes. guid, success, details parameters window._hooks = {} window.VALID_HOOKS = [ @@ -58,7 +59,8 @@ window.VALID_HOOKS = [ 'portalDetailsUpdated', 'publicChatDataAvailable', 'factionChatDataAvailable', 'requestFinished', 'nicknameClicked', - 'geoSearch', 'iitcLoaded']; + 'geoSearch', 'iitcLoaded', + 'portalDetailLoaded']; window.runHooks = function(event, data) { if(VALID_HOOKS.indexOf(event) === -1) throw('Unknown event type: ' + event); diff --git a/code/portal_detail.js b/code/portal_detail.js new file mode 100644 index 00000000..f33da496 --- /dev/null +++ b/code/portal_detail.js @@ -0,0 +1,55 @@ +/// PORTAL DETAIL ////////////////////////////////////// +// code to retrieve the new potal detail data from the servers + + +// anonymous function wrapper for the code - any variables/functions not placed into 'window' will be private +(function(){ + +var cache; + + +window.portalDetail = function() {}; + +window.portalDetail.setup = function() { + cache = new DataCache(); + + cache.startExpireInterval(20); +} + +window.portalDetail.get = function(guid) { + return cache.get(guid); +} + +window.portalDetail.isFresh = function(guid) { + return cache.isFresh(guid); +} + + +var handleResponse = function(guid, data, success) { + + if (success) { + cache.store(guid,data); + + //FIXME..? better way of handling sidebar refreshing... + + if (guid == selectedPortal) { + renderPortalDetails(guid); + } + } + + window.runHooks ('portalDetailLoaded', {guid:guid, success:success, details:data}); +} + +window.portalDetail.request = function(guid) { + + window.postAjax('getPortalDetails', {guid:guid}, + function(data,textStatus,jqXHR) { handleResponse(guid, data, true); }, + function() { handleResponse(guid, undefined, false); } + ); +} + + + +})(); // anonumous wrapper function end + + diff --git a/code/portal_detail_display.js b/code/portal_detail_display.js index 4a14b343..ce67431e 100644 --- a/code/portal_detail_display.js +++ b/code/portal_detail_display.js @@ -3,11 +3,14 @@ // methods that highlight the portal in the map view. window.renderPortalDetails = function(guid) { - // TODO: start a request for the selected portal detailed data - // (do this even if not in window.portals?) - selectPortal(window.portals[guid] ? guid : null); + if (!portalDetail.isFresh(guid)) { + portalDetail.request(guid); + } + + // TODO? handle the case where we request data for a particular portal GUID, but it *isn't* in + // window.portals.... if(!window.portals[guid]) { urlPortal = guid; @@ -21,11 +24,11 @@ window.renderPortalDetails = function(guid) { var portal = window.portals[guid]; var data = portal.options.data; - var details = undefined; //TODO: get the details + var details = portalDetail.get(guid); var modDetails = details ? '
'+getModDetails(details)+'
' : ''; - var randDetails = details ? getPortalRandDetails(details) : ''; + var miscDetails = details ? getPortalMiscDetails(guid,details) : ''; var resoDetails = details ? getResonatorDetails(details) : ''; //TODO? other status details... @@ -132,7 +135,7 @@ window.renderPortalDetails = function(guid) { ), modDetails, - randDetails, + miscDetails, resoDetails, statusDetails, '
' + linkDetails.join('') + '
' @@ -144,7 +147,7 @@ window.renderPortalDetails = function(guid) { -window.getRandPortalDetails = function(d) { +window.getPortalMiscDetails = function(guid,d) { var randDetails; @@ -160,7 +163,7 @@ window.getRandPortalDetails = function(d) { var linksText = [linkExpl('links'), linkExpl(' ↳ ' + links.incoming+'  •  '+links.outgoing+' ↴')]; var player = d.captured && d.captured.capturingPlayerId - ? '' + getPlayerName(d.captured.capturingPlayerId) + '' + ? '' + d.captured.capturingPlayerId + '' : null; var playerText = player ? ['owner', player] : null; diff --git a/code/portal_detail_display_tools.js b/code/portal_detail_display_tools.js index e3c67998..f9f02abf 100644 --- a/code/portal_detail_display_tools.js +++ b/code/portal_detail_display_tools.js @@ -102,7 +102,7 @@ window.getModDetails = function(d) { modTooltip = modName + '\n'; if (mod.installingUser) { - modTooltip += 'Installed by: '+ getPlayerName(mod.installingUser) + '\n'; + modTooltip += 'Installed by: '+ mod.installingUser + '\n'; } if (mod.stats) { @@ -176,7 +176,7 @@ window.getResonatorDetails = function(d) { var l = parseInt(reso.level); var v = parseInt(reso.energyTotal); - var nick = window.getPlayerName(reso.ownerGuid); + var nick = reso.ownerGuid; var dist = reso.distanceToPortal; // if array order and slot order drift apart, at least the octant // naming will still be correct. From efd447b227f239f73997c7fb4aa5402797a42e3e Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 00:45:39 +0000 Subject: [PATCH 22/63] plugin: portal-level-numbers fixed --- plugins/portal-level-numbers.user.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/portal-level-numbers.user.js b/plugins/portal-level-numbers.user.js index ee23c584..8719d64f 100644 --- a/plugins/portal-level-numbers.user.js +++ b/plugins/portal-level-numbers.user.js @@ -2,7 +2,7 @@ // @id iitc-plugin-portal-level-numbers@rongou // @name IITC plugin: Portal Level Numbers // @category Layer -// @version 0.1.1.@@DATETIMEVERSION@@ +// @version 0.1.2.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ @@ -38,8 +38,7 @@ window.plugin.portalLevelNumbers.portalAdded = function(data) { window.plugin.portalLevelNumbers.renderLevel = function(guid,latLng) { plugin.portalLevelNumbers.removeLevel(guid); - var d = window.portals[guid].options.details; - var levelNumber = Math.floor(window.getPortalLevel(d)); + var levelNumber = window.portals[guid].options.level; var level = L.marker(latLng, { icon: L.divIcon({ className: 'plugin-portal-level-numbers', From 55f6644f898174135c2c45a4e65f712384f9e495 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 00:50:08 +0000 Subject: [PATCH 23/63] plugin: portal-names fixed --- plugins/portal-names.user.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/portal-names.user.js b/plugins/portal-names.user.js index 5e902f2c..a1f140a9 100644 --- a/plugins/portal-names.user.js +++ b/plugins/portal-names.user.js @@ -2,7 +2,7 @@ // @id iitc-plugin-portal-names@zaso // @name IITC plugin: Portal Names // @category Layer -// @version 0.1.2.@@DATETIMEVERSION@@ +// @version 0.1.3.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ @@ -63,8 +63,8 @@ window.plugin.portalNames.addLabel = function(guid, latLng) { var previousLayer = window.plugin.portalNames.labelLayers[guid]; if (!previousLayer) { - var d = window.portals[guid].options.details; - var portalName = d.portalV2.descriptiveText.TITLE; + var d = window.portals[guid].options.data; + var portalName = d.title; var label = L.marker(latLng, { icon: L.divIcon({ From 8a6320c44b8707f74e5fe88cf030abfb15951e9a Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 01:14:24 +0000 Subject: [PATCH 24/63] plugin: debug-raw-data fixed --- plugins/debug-raw-portal-data.user.js | 43 ++++++++++++++------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/plugins/debug-raw-portal-data.user.js b/plugins/debug-raw-portal-data.user.js index 58302591..db87f1c4 100644 --- a/plugins/debug-raw-portal-data.user.js +++ b/plugins/debug-raw-portal-data.user.js @@ -2,7 +2,7 @@ // @id iitc-plugin-raw-portal-data // @name IITC plugin: Debug: Raw portal JSON data // @category Debug -// @version 0.2.2.@@DATETIMEVERSION@@ +// @version 0.2.3.@@DATETIMEVERSION@@ // @namespace rawdata // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ @@ -36,40 +36,43 @@ window.plugin.rawdata.showPortalData = function(guid) { } - var d = window.portals[guid].options.details; + var data = window.portals[guid].options.data; var ts = window.portals[guid].options.timestamp; - var title = 'Raw portal data: ' + (d.portalV2.descriptiveText.TITLE || '') + ' ('+guid+')'; + var title = 'Raw portal data: ' + (data.title || '') + ' ('+guid+')'; var body = 'Portal GUID: '+guid+'
' + 'Entity timestamp: '+ts+' - '+window.unixTimeToDateTimeString(ts,true)+'
' + - '
'+JSON.stringify(d,null,2)+'
'; + '
'+JSON.stringify(data,null,2)+'
'; + + var details = portalDetail.get(guid); + if (details) { + body += 'Portal details:
'+JSON.stringify(details,null,2)+'
'; + } + body += '

Links referencing this portal

'; var haslinks = false; - for (var lguid in window.links) { + var linkGuids = getPortalLinks(guid); + $.each(linkGuids.in.concat(linkGuids.out), function(i,lguid) { var l = window.links[lguid]; - var ld = l.options.details; - if (ld.edge.originPortalGuid == guid || ld.edge.destinationPortalGuid == guid) { - body += 'Link GUID: '+l.options.guid+'
'+JSON.stringify(ld,null,2)+'
'; - haslinks = true; - } - } + var ld = l.options.data; + body += 'Link GUID: '+l.options.guid+'
'+JSON.stringify(ld,null,2)+'
'; + haslinks = true; + }); + if (!haslinks) body += '

No links to/from this portal

'; body += '

Fields referencing this portal

'; var hasfields = false; - for (var fguid in window.fields) { + var fieldGuids = getPortalFields(guid); + $.each(fieldGuids, function(i,fguid) { var f = window.fields[fguid]; - var fd = f.options.details; - if (fd.capturedRegion.vertexA.guid == guid || - fd.capturedRegion.vertexB.guid == guid || - fd.capturedRegion.vertexC.guid == guid) { - body += 'Field guid: '+f.options.guid+'
'+JSON.stringify(fd,null,2)+'
'; - hasfields = true; - } - } + var fd = f.options.data; + body += 'Field guid: '+f.options.guid+'
'+JSON.stringify(fd,null,2)+'
'; + hasfields = true; + }); if (!hasfields) body += '

No fields linked to this portal

'; dialog({ From 436eefd44a2e05b4c4c38e2484ec3fa60b77fab9 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 01:24:45 +0000 Subject: [PATCH 25/63] plugin: fix portal-highlighter-needs-recharge also added colour variations to indicate severity at a glance --- .../portal-highlighter-needs-recharge.user.js | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/plugins/portal-highlighter-needs-recharge.user.js b/plugins/portal-highlighter-needs-recharge.user.js index 0fe3e9c5..529d065f 100644 --- a/plugins/portal-highlighter-needs-recharge.user.js +++ b/plugins/portal-highlighter-needs-recharge.user.js @@ -2,11 +2,11 @@ // @id iitc-plugin-highlight-needs-recharge@vita10gy // @name IITC plugin: hightlight portals that need recharging // @category Highlighter -// @version 0.1.0.@@DATETIMEVERSION@@ +// @version 0.1.1.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ -// @description [@@BUILDNAME@@-@@BUILDDATE@@] Uses the fill color of the portals to denote if the portal needs recharging +// @description [@@BUILDNAME@@-@@BUILDDATE@@] Uses the fill color of the portals to denote if the portal needs recharging. Colours also indicate severity: yellow: above 85%, orange: above 50%, red: above 15%, magenta: below 15% // @include https://www.ingress.com/intel* // @include http://www.ingress.com/intel* // @match https://www.ingress.com/intel* @@ -22,23 +22,23 @@ window.plugin.portalHighligherNeedsRecharge = function() {}; window.plugin.portalHighligherNeedsRecharge.highlight = function(data) { - var d = data.portal.options.details; - var portal_weakness = 0; - if(getTeam(d) !== 0) { - if(window.getTotalPortalEnergy(d) > 0 && window.getCurrentPortalEnergy(d) < window.getTotalPortalEnergy(d)) { - portal_weakness = 1 - (window.getCurrentPortalEnergy(d)/window.getTotalPortalEnergy(d)); - } - if(portal_weakness > 0) { - var fill_opacity = portal_weakness*.85 + .15; - color = 'red'; - var params = {fillColor: color, fillOpacity: fill_opacity}; - data.portal.setStyle(params); - } + var d = data.portal.options.data; + var portal_health = d.health/100; + if(portal_health > 0 && portal_health < 1) { + var fill_opacity = (1-portal_health)*.85 + .15; + var color; + if (portal_health > .85) color = 'yellow'; + else if (portal_health > .5) color = 'orange'; + else if (portal_health > .15) color = 'red'; + else color = 'magenta'; + + var params = {fillColor: color, fillOpacity: fill_opacity}; + data.portal.setStyle(params); } } var setup = function() { - window.addPortalHighlighter('Needs Recharge', window.plugin.portalHighligherNeedsRecharge.highlight); + window.addPortalHighlighter('Needs Recharge (Health)', window.plugin.portalHighligherNeedsRecharge.highlight); } // PLUGIN END ////////////////////////////////////////////////////////// From 4a3f667223ed29d5df0eacdc5105bc41fedf6dbc Mon Sep 17 00:00:00 2001 From: Carsten Date: Sun, 1 Dec 2013 02:38:49 +0100 Subject: [PATCH 26/63] fix for new player id field in plext Signed-off-by: Carsten --- plugins/player-tracker.user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/player-tracker.user.js b/plugins/player-tracker.user.js index d7fa45c5..ba6f7181 100644 --- a/plugins/player-tracker.user.js +++ b/plugins/player-tracker.user.js @@ -165,7 +165,7 @@ window.plugin.playerTracker.processNewData = function(data) { } break; case 'PLAYER': - pguid = markup[1].guid; + pguid = markup[1].plain; break; case 'PORTAL': // link messages are “player linked X to Y” and the player is at @@ -196,7 +196,7 @@ window.plugin.playerTracker.processNewData = function(data) { if(!playerData || playerData.events.length === 0) { plugin.playerTracker.stored[pguid] = { // this always resolves, as the chat delivers this data - nick: window.getPlayerName(pguid), + nick: pguid, team: json[2].plext.team, events: [newEvent] }; From 24e11b483aa22fa67c0f98b002bc3309bec35a1e Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 02:11:52 +0000 Subject: [PATCH 27/63] plugin: portal-counts fixed also reformatted the table a little - moved totals into the columns below the L8 to L1 lists, then neutral after that --- plugins/portal-counts.user.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/plugins/portal-counts.user.js b/plugins/portal-counts.user.js index b511d6e8..07f92162 100644 --- a/plugins/portal-counts.user.js +++ b/plugins/portal-counts.user.js @@ -2,7 +2,7 @@ // @id iitc-plugin-portals-count@yenky // @name IITC plugin: Show total counts of portals // @category Info -// @version 0.0.8.@@DATETIMEVERSION@@ +// @version 0.0.9.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ @@ -50,9 +50,8 @@ window.plugin.portalcounts.getPortals = function(){ $.each(window.portals, function(i, portal) { retval=true; - var d = portal.options.details; + var level = portal.options.level; var team = portal.options.team; - var level = Math.floor(getPortalLevel(d)); // just count portals in viewport if(!displayBounds.contains(portal.getLatLng())) return true; switch (team){ @@ -84,15 +83,16 @@ window.plugin.portalcounts.getPortals = function(){ counts += ''+window.plugin.portalcounts.PortalsEnl[level]+''+window.plugin.portalcounts.PortalsRes[level]+''; counts += ''; } - counts += ' '; + + counts += 'Total:'+window.plugin.portalcounts.enlP+''+window.plugin.portalcounts.resP+''; + counts += 'Neutral:'; if(minlvl > 0) - counts += 'zoom in to see unclaimed'; + counts += 'zoom in to see unclaimed portals'; else counts += window.plugin.portalcounts.neuP; - counts += ' Portal(s)'; - counts += 'Enlightened:'+window.plugin.portalcounts.enlP+' Portal(s)'; - counts += 'Resistance:'+window.plugin.portalcounts.resP+' Portal(s)'; + counts += ''; + } else counts += 'No Portals in range!'; counts += ''; From fad6d180991de129fcce64f324712f698ff18089 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 02:55:40 +0000 Subject: [PATCH 28/63] bugfix: the new map data format returns unclaimed portals as level 1 - but IITC needs them handled as level 0 --- code/map_data_render.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/map_data_render.js b/code/map_data_render.js index 604b3c28..6606a022 100644 --- a/code/map_data_render.js +++ b/code/map_data_render.js @@ -268,6 +268,8 @@ window.Render.prototype.createPortalEntity = function(ent) { var portalLevel = parseInt(ent[2].level); var team = teamStringToId(ent[2].team); + // the data returns unclaimed portals as level 1 - but IITC wants them treated as level 0 + if (team == TEAM_NONE) portalLevel = 0; var latlng = L.latLng(ent[2].latE6/1E6, ent[2].lngE6/1E6); From ad85d93381607b7b11d21669e4a1ab8ee7190f80 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 02:57:08 +0000 Subject: [PATCH 29/63] plugin: level colour highlighter fixed --- plugins/portal-highlighter-level-color.user.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/portal-highlighter-level-color.user.js b/plugins/portal-highlighter-level-color.user.js index 4662f295..5118fd77 100644 --- a/plugins/portal-highlighter-level-color.user.js +++ b/plugins/portal-highlighter-level-color.user.js @@ -2,7 +2,7 @@ // @id iitc-plugin-highlight-portals-level-color@vita10gy // @name IITC plugin: highlight portals by level color // @category Highlighter -// @version 0.1.1.@@DATETIMEVERSION@@ +// @version 0.1.2.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ @@ -22,8 +22,7 @@ window.plugin.portalHighligherPortalsLevelColor = function() {}; window.plugin.portalHighligherPortalsLevelColor.colorLevel = function(data) { - var d = data.portal.options.details; - var portal_level = Math.floor(getPortalLevel(d)); + var portal_level = data.portal.options.data.level; var opacity = .6; data.portal.setStyle({fillColor: COLORS_LVL[portal_level], fillOpacity: opacity}); } From baa8f4bbcca344147bb61cd51bf62a326a2032e0 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 02:57:32 +0000 Subject: [PATCH 30/63] tweaks to level number plugin --- plugins/portal-level-numbers.user.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/portal-level-numbers.user.js b/plugins/portal-level-numbers.user.js index 8719d64f..c5cfa195 100644 --- a/plugins/portal-level-numbers.user.js +++ b/plugins/portal-level-numbers.user.js @@ -38,7 +38,8 @@ window.plugin.portalLevelNumbers.portalAdded = function(data) { window.plugin.portalLevelNumbers.renderLevel = function(guid,latLng) { plugin.portalLevelNumbers.removeLevel(guid); - var levelNumber = window.portals[guid].options.level; + var p = window.portals[guid]; + var levelNumber = p.options.level; var level = L.marker(latLng, { icon: L.divIcon({ className: 'plugin-portal-level-numbers', From 27fefb22fd05659bd6d23ba08a7ccfe661f59ff5 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 03:04:18 +0000 Subject: [PATCH 31/63] plugin: fix infrastructure problem highlighter --- plugins/portal-highlighter-infrastructure.user.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/portal-highlighter-infrastructure.user.js b/plugins/portal-highlighter-infrastructure.user.js index fece76e8..0a59ed53 100644 --- a/plugins/portal-highlighter-infrastructure.user.js +++ b/plugins/portal-highlighter-infrastructure.user.js @@ -2,7 +2,7 @@ // @id iitc-plugin-highlight-portal-infrastructure@vita10gy // @name IITC plugin: highlight portals with infrastructure problems // @category Highlighter -// @version 0.2.0.@@DATETIMEVERSION@@ +// @version 0.2.1.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ @@ -31,15 +31,15 @@ window.plugin.portalInfrastructure.badTitles = ['^statue$', 'no title']; window.plugin.portalInfrastructure.highlight = function(data) { - var d = data.portal.options.details; + var d = data.portal.options.data; var color = ''; var opa = .75; - if(!(d.imageByUrl && d.imageByUrl.imageUrl)) { + if(!(d.image)) { color = 'red'; } - if((new RegExp(window.plugin.portalInfrastructure.badTitles.join("|"),'i')).test(d.portalV2.descriptiveText.TITLE)) { + if((new RegExp(window.plugin.portalInfrastructure.badTitles.join("|"),'i')).test(d.title)) { color = color == 'red' ? 'orange' : 'yellow'; opa = .9; } From 2cdef94b775817991061ee63809c81d2813506ae Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 03:04:58 +0000 Subject: [PATCH 32/63] remove file execute bit - not sure why it was set! --- plugins/add-kml.user.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 plugins/add-kml.user.js diff --git a/plugins/add-kml.user.js b/plugins/add-kml.user.js old mode 100755 new mode 100644 From b17b4c6a78caeaac0b7219b366d5940592b7990a Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 03:13:43 +0000 Subject: [PATCH 33/63] plugin: player tracker - bump version number --- plugins/player-tracker.user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/player-tracker.user.js b/plugins/player-tracker.user.js index ba6f7181..b5fd4be3 100644 --- a/plugins/player-tracker.user.js +++ b/plugins/player-tracker.user.js @@ -2,7 +2,7 @@ // @id iitc-plugin-player-tracker@breunigs // @name IITC Plugin: Player tracker // @category Layer -// @version 0.10.0.@@DATETIMEVERSION@@ +// @version 0.10.1.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ From 25fe86b43c56e1a7228bb6555725512d3f5dd656 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 03:31:53 +0000 Subject: [PATCH 34/63] plugin: player tracker. something odd was happening in the case of $.each and 'this' in the loop function - so changed to use parameters to functions --- plugins/player-tracker.user.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/plugins/player-tracker.user.js b/plugins/player-tracker.user.js index b5fd4be3..efa3b964 100644 --- a/plugins/player-tracker.user.js +++ b/plugins/player-tracker.user.js @@ -250,9 +250,9 @@ window.plugin.playerTracker.getLatLngFromEvent = function(ev) { //TODO? add weight to certain events, or otherwise prefer them, to give better locations? var lats = 0; var lngs = 0; - $.each(ev.latlngs, function() { - lats += this[0]; - lngs += this[1]; + $.each(ev.latlngs, function(i, latlng) { + lats += latlng[0]; + lngs += latlng[1]; }); return L.latLng(lats / ev.latlngs.length, lngs / ev.latlngs.length); @@ -344,15 +344,15 @@ window.plugin.playerTracker.drawData = function() { var eventPortal = [] var closestPortal; var mostPortals = 0; - $.each(last.guids, function() { - if(eventPortal[this]) { - eventPortal[this]++; + $.each(last.guids, function(i, guid) { + if(eventPortal[guid]) { + eventPortal[guid]++; } else { - eventPortal[this] = 1; + eventPortal[guid] = 1; } - if(eventPortal[this] > mostPortals) { - mostPortals = eventPortal[this]; - closestPortal = this; + if(eventPortal[guid] > mostPortals) { + mostPortals = eventPortal[guid]; + closestPortal = guid; } }); From 52d1869983cb10b6947d9ae48fb1b5641d696ee6 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 03:36:15 +0000 Subject: [PATCH 35/63] plugin: bookmarks fix --- plugins/bookmarks-by-zaso.user.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/plugins/bookmarks-by-zaso.user.js b/plugins/bookmarks-by-zaso.user.js index 3349e846..89d4e6ed 100644 --- a/plugins/bookmarks-by-zaso.user.js +++ b/plugins/bookmarks-by-zaso.user.js @@ -2,7 +2,7 @@ // @id iitc-plugin-bookmarks@ZasoGD // @name IITC plugin: Bookmarks for maps and portals // @category Controls -// @version 0.2.6.@@DATETIMEVERSION@@ +// @version 0.2.7.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ @@ -335,10 +335,11 @@ // If portal isn't saved in bookmarks: Add this bookmark else{ // Get portal name and coordinates - var d = window.portals[guid].options.details; - var label = d.portalV2.descriptiveText.TITLE; - var lat = (d.locationE6.latE6)/1E6; - var lng = (d.locationE6.lngE6)/1E6; + var p = window.portals[guid]; + var d = p.options.data; + var label = d.title; + var lat = p.getLatLng().lat; + var lng = p.getLatLng().lng; var latlng = lat+','+lng; var ID = window.plugin.bookmarks.generateID(); From c4a9af9966f152273c48eae565048af363310908 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 06:05:45 +0000 Subject: [PATCH 36/63] for all of the plugins moved to plugins/broken, add a dummy placeholder file this contains the userscript header, but with @category Deleted, @description CURRENTLY UNAVAILABLE this is so users wondering where a script has gone have some information --- plugins/compute-ap-stats.user.js | 15 +++++++++++++++ plugins/draw-resonators.user.js | 15 +++++++++++++++ plugins/players-resonators.user.js | 14 ++++++++++++++ plugins/portal-defense.user.js | 14 ++++++++++++++ ...al-highlighter-bad-deployment-distance.user.js | 15 +++++++++++++++ plugins/portal-highlighter-can-make-level.user.js | 15 +++++++++++++++ plugins/portal-highlighter-imminent-decay.user.js | 15 +++++++++++++++ plugins/portal-highlighter-mitigation.user.js | 15 +++++++++++++++ plugins/portal-highlighter-mods.user.js | 15 +++++++++++++++ plugins/portal-highlighter-my-8-portals.user.js | 15 +++++++++++++++ plugins/portal-highlighter-my-portals.user.js | 15 +++++++++++++++ ...-highlighter-portal-ap-energy-relative.user.js | 15 +++++++++++++++ .../portal-highlighter-portal-ap-relative.user.js | 15 +++++++++++++++ plugins/portal-highlighter-portal-ap.user.js | 15 +++++++++++++++ .../portal-highlighter-portals-upgrade.user.js | 15 +++++++++++++++ plugins/portals-list.user.js | 15 +++++++++++++++ plugins/scoreboard.user.js | 15 +++++++++++++++ 17 files changed, 253 insertions(+) create mode 100644 plugins/compute-ap-stats.user.js create mode 100644 plugins/draw-resonators.user.js create mode 100644 plugins/players-resonators.user.js create mode 100644 plugins/portal-defense.user.js create mode 100644 plugins/portal-highlighter-bad-deployment-distance.user.js create mode 100644 plugins/portal-highlighter-can-make-level.user.js create mode 100644 plugins/portal-highlighter-imminent-decay.user.js create mode 100644 plugins/portal-highlighter-mitigation.user.js create mode 100644 plugins/portal-highlighter-mods.user.js create mode 100644 plugins/portal-highlighter-my-8-portals.user.js create mode 100644 plugins/portal-highlighter-my-portals.user.js create mode 100644 plugins/portal-highlighter-portal-ap-energy-relative.user.js create mode 100644 plugins/portal-highlighter-portal-ap-relative.user.js create mode 100644 plugins/portal-highlighter-portal-ap.user.js create mode 100644 plugins/portal-highlighter-portals-upgrade.user.js create mode 100644 plugins/portals-list.user.js create mode 100644 plugins/scoreboard.user.js diff --git a/plugins/compute-ap-stats.user.js b/plugins/compute-ap-stats.user.js new file mode 100644 index 00000000..0e783765 --- /dev/null +++ b/plugins/compute-ap-stats.user.js @@ -0,0 +1,15 @@ +// ==UserScript== +// @id iitc-plugin-compute-ap-stats@Hollow011 +// @name IITC plugin: Compute AP statistics +// @category Deleted +// @version 0.3.1.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description PLUGIN CURRENTLY UNAVAILABLE +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// @grant none +// ==/UserScript== diff --git a/plugins/draw-resonators.user.js b/plugins/draw-resonators.user.js new file mode 100644 index 00000000..f85d3b2f --- /dev/null +++ b/plugins/draw-resonators.user.js @@ -0,0 +1,15 @@ +// ==UserScript== +// @id iitc-plugin-draw-resonators@xelio +// @name IITC plugin: Draw resonators +// @category Deleted +// @version 0.4.0.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description PLUGIN CURRENTLY UNAVAILABLE +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// @grant none +// ==/UserScript== diff --git a/plugins/players-resonators.user.js b/plugins/players-resonators.user.js new file mode 100644 index 00000000..b0454ee2 --- /dev/null +++ b/plugins/players-resonators.user.js @@ -0,0 +1,14 @@ +// ==UserScript== +// @id iitc-plugin-players-resonators@rbino +// @name IITC plugin: Player's Resonators +// @version 0.1.5.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description PLUGIN CURRENTLY UNAVAILABLE +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// @grant none +// ==/UserScript== diff --git a/plugins/portal-defense.user.js b/plugins/portal-defense.user.js new file mode 100644 index 00000000..3d1f30fb --- /dev/null +++ b/plugins/portal-defense.user.js @@ -0,0 +1,14 @@ +// ==UserScript== +// @id iitc-plugin-defense@gluckies +// @name IITC plugin: portal defense +// @category Deleted +// @version 0.2.2.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description PLUGIN CURRENTLY UNAVAILABLE +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// ==/UserScript== diff --git a/plugins/portal-highlighter-bad-deployment-distance.user.js b/plugins/portal-highlighter-bad-deployment-distance.user.js new file mode 100644 index 00000000..3ddf3a66 --- /dev/null +++ b/plugins/portal-highlighter-bad-deployment-distance.user.js @@ -0,0 +1,15 @@ +// ==UserScript== +// @id iitc-plugin-highlight-bad-deployment-distance@cathesaurus +// @name IITC plugin: highlight badly-deployed portals +// @category Deleted +// @version 0.1.1.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description PLUGIN CURRENTLY UNAVAILABLE +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// @grant none +// ==/UserScript== diff --git a/plugins/portal-highlighter-can-make-level.user.js b/plugins/portal-highlighter-can-make-level.user.js new file mode 100644 index 00000000..1d5acc86 --- /dev/null +++ b/plugins/portal-highlighter-can-make-level.user.js @@ -0,0 +1,15 @@ +// ==UserScript== +// @id iitc-plugin-highlight-portals-upgrade@vita10gy +// @name IITC plugin: highlight portals you can upgrade to a specific level +// @category Deleted +// @version 0.1.0.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description PLUGIN CURRENTLY UNAVAILABLE +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// @grant none +// ==/UserScript== diff --git a/plugins/portal-highlighter-imminent-decay.user.js b/plugins/portal-highlighter-imminent-decay.user.js new file mode 100644 index 00000000..14f98297 --- /dev/null +++ b/plugins/portal-highlighter-imminent-decay.user.js @@ -0,0 +1,15 @@ +// ==UserScript== +// @id iitc-plugin-highlight-imminent-decay@cathesaurus +// @name IITC plugin: highlight portals with resonators about to decay +// @category Deleted +// @version 0.1.0.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description PLUGIN CURRENTLY UNAVAILABLE +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// @grant none +// ==/UserScript== diff --git a/plugins/portal-highlighter-mitigation.user.js b/plugins/portal-highlighter-mitigation.user.js new file mode 100644 index 00000000..0956e19f --- /dev/null +++ b/plugins/portal-highlighter-mitigation.user.js @@ -0,0 +1,15 @@ +// ==UserScript== +// @id iitc-plugin-highlight-mitigation@jonatkins +// @name IITC plugin: hightlight portals total mitigation +// @category Deleted +// @version 0.1.1.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description PLUGIN CURRENTLY UNAVAILABLE +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// @grant none +// ==/UserScript== diff --git a/plugins/portal-highlighter-mods.user.js b/plugins/portal-highlighter-mods.user.js new file mode 100644 index 00000000..46e19f2a --- /dev/null +++ b/plugins/portal-highlighter-mods.user.js @@ -0,0 +1,15 @@ +// ==UserScript== +// @id iitc-plugin-highlight-portals-mods@vita10gy +// @name IITC plugin: highlight portal mods +// @category Deleted +// @version 0.1.0.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description PLUGIN CURRENTLY UNAVAILABLE +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// @grant none +// ==/UserScript== diff --git a/plugins/portal-highlighter-my-8-portals.user.js b/plugins/portal-highlighter-my-8-portals.user.js new file mode 100644 index 00000000..12cfbeb7 --- /dev/null +++ b/plugins/portal-highlighter-my-8-portals.user.js @@ -0,0 +1,15 @@ +// ==UserScript== +// @id iitc-plugin-highlight-portals-my-8-portals@vita10gy +// @name IITC plugin: highlight my level 8's on portals +// @category Deleted +// @version 0.1.0.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description PLUGIN CURRENTLY UNAVAILABLE +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// @grant none +// ==/UserScript== diff --git a/plugins/portal-highlighter-my-portals.user.js b/plugins/portal-highlighter-my-portals.user.js new file mode 100644 index 00000000..7679a824 --- /dev/null +++ b/plugins/portal-highlighter-my-portals.user.js @@ -0,0 +1,15 @@ +// ==UserScript== +// @id iitc-plugin-highlight-portals-my-portals@vita10gy +// @name IITC plugin: highlight my portals +// @category Deleted +// @version 0.1.1.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description PLUGIN CURRENTLY UNAVAILABLE +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// @grant none +// ==/UserScript== diff --git a/plugins/portal-highlighter-portal-ap-energy-relative.user.js b/plugins/portal-highlighter-portal-ap-energy-relative.user.js new file mode 100644 index 00000000..be4c81eb --- /dev/null +++ b/plugins/portal-highlighter-portal-ap-energy-relative.user.js @@ -0,0 +1,15 @@ +// ==UserScript== +// @id iitc-plugin-highlight-portals-by-ap-by-energy-relative@vita10gy +// @name IITC plugin: highlight portals by ap/energy (relative) +// @category Deleted +// @version 0.1.1.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description PLUGIN CURRENTLY UNAVAILABLE +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// @grant none +// ==/UserScript== diff --git a/plugins/portal-highlighter-portal-ap-relative.user.js b/plugins/portal-highlighter-portal-ap-relative.user.js new file mode 100644 index 00000000..f5865636 --- /dev/null +++ b/plugins/portal-highlighter-portal-ap-relative.user.js @@ -0,0 +1,15 @@ +// ==UserScript== +// @id iitc-plugin-highlight-portals-by-ap-relative@vita10gy +// @name IITC plugin: highlight portals by ap relative +// @category Deleted +// @version 0.1.1.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description PLUGIN CURRENTLY UNAVAILABLE +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// @grant none +// ==/UserScript== diff --git a/plugins/portal-highlighter-portal-ap.user.js b/plugins/portal-highlighter-portal-ap.user.js new file mode 100644 index 00000000..6d8180c8 --- /dev/null +++ b/plugins/portal-highlighter-portal-ap.user.js @@ -0,0 +1,15 @@ +// ==UserScript== +// @id iitc-plugin-highlight-portals-by-ap@vita10gy +// @name IITC plugin: highlight portals by ap +// @category Deleted +// @version 0.1.1.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description PLUGIN CURRENTLY UNAVAILABLE +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// @grant none +// ==/UserScript== diff --git a/plugins/portal-highlighter-portals-upgrade.user.js b/plugins/portal-highlighter-portals-upgrade.user.js new file mode 100644 index 00000000..2c3f5cef --- /dev/null +++ b/plugins/portal-highlighter-portals-upgrade.user.js @@ -0,0 +1,15 @@ +// ==UserScript== +// @id iitc-plugin-highlight-portals-upgrade@vita10gy +// @name IITC plugin: highlight portals you can upgrade +// @category Deleted +// @version 0.2.0.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description PLUGIN CURRENTLY UNAVAILABLE +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// @grant none +// ==/UserScript== diff --git a/plugins/portals-list.user.js b/plugins/portals-list.user.js new file mode 100644 index 00000000..88bb636b --- /dev/null +++ b/plugins/portals-list.user.js @@ -0,0 +1,15 @@ +// ==UserScript== +// @id iitc-plugin-portals-list@teo96 +// @name IITC plugin: show list of portals +// @category Deleted +// @version 0.0.18.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description PLUGIN CURRENTLY UNAVAILABLE +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// @grant none +// ==/UserScript== diff --git a/plugins/scoreboard.user.js b/plugins/scoreboard.user.js new file mode 100644 index 00000000..b3237809 --- /dev/null +++ b/plugins/scoreboard.user.js @@ -0,0 +1,15 @@ +// ==UserScript== +// @id iitc-plugin-scoreboard@vita10gy +// @name IITC plugin: show a localized scoreboard. +// @category Deleted +// @version 0.1.9.@@DATETIMEVERSION@@ +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description PLUGIN CURRENTLY UNAVAILABLE +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// @grant none +// ==/UserScript== From 19bfccdbbca7acac5ffb902bdc76a6ca56575157 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 13:46:07 +0000 Subject: [PATCH 37/63] plugin: bugfix: zero health IS possible for a very badly damaged portal (one resonator under 1% health) --- plugins/portal-highlighter-needs-recharge.user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/portal-highlighter-needs-recharge.user.js b/plugins/portal-highlighter-needs-recharge.user.js index 529d065f..0991627c 100644 --- a/plugins/portal-highlighter-needs-recharge.user.js +++ b/plugins/portal-highlighter-needs-recharge.user.js @@ -24,7 +24,7 @@ window.plugin.portalHighligherNeedsRecharge = function() {}; window.plugin.portalHighligherNeedsRecharge.highlight = function(data) { var d = data.portal.options.data; var portal_health = d.health/100; - if(portal_health > 0 && portal_health < 1) { + if(data.portal.options.team != TEAM_NONE && portal_health < 1) { var fill_opacity = (1-portal_health)*.85 + .15; var color; if (portal_health > .85) color = 'yellow'; From d7159f2b4229917c7a70790c0d99081ad89db1e6 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 13:48:21 +0000 Subject: [PATCH 38/63] plugin: zaprange updated for data changes --- plugins/zaprange.user.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/zaprange.user.js b/plugins/zaprange.user.js index 6057aef5..814ce225 100644 --- a/plugins/zaprange.user.js +++ b/plugins/zaprange.user.js @@ -2,7 +2,7 @@ // @id iitc-plugin-zaprange@zaso // @name IITC plugin: Zaprange // @category Layer -// @version 0.1.2.@@DATETIMEVERSION@@ +// @version 0.1.3.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ @@ -25,11 +25,11 @@ window.plugin.zaprange.portalAdded = function(data) { data.portal.on('add', function() { - window.plugin.zaprange.draw(this.options.guid, this.options.details.controllingTeam.team); + window.plugin.zaprange.draw(this.options.guid, this.options.data.team); }); data.portal.on('remove', function() { - window.plugin.zaprange.remove(this.options.guid, this.options.details.controllingTeam.team); + window.plugin.zaprange.remove(this.options.guid, this.options.data.team); }); } @@ -51,7 +51,7 @@ if(faction !== "NEUTRAL") { var coo = d._latlng; var latlng = new L.LatLng(coo.lat,coo.lng); - var portalLevel = parseInt(getPortalLevel(d.options.details)); + var portalLevel = d.options.level; var optCircle = {color:'red',opacity:0.7,fillColor:'red',fillOpacity:0.1,weight:1,clickable:false, dashArray: [10,6]}; var range = (5*portalLevel)+35; From 4dc7868a58deffb6cab3601f682da72afec85e6c Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 14:09:00 +0000 Subject: [PATCH 39/63] plugin: missing resonators fixed --- ...tal-highlighter-missing-resonators.user.js | 30 +++++++------------ 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/plugins/portal-highlighter-missing-resonators.user.js b/plugins/portal-highlighter-missing-resonators.user.js index 74b99e7a..edff68ed 100644 --- a/plugins/portal-highlighter-missing-resonators.user.js +++ b/plugins/portal-highlighter-missing-resonators.user.js @@ -2,7 +2,7 @@ // @id iitc-plugin-highlight-portals-missing-resonators@vita10gy // @name IITC plugin: highlight portals missing resonators // @category Highlighter -// @version 0.1.1.@@DATETIMEVERSION@@ +// @version 0.1.2.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ @@ -23,28 +23,20 @@ window.plugin.portalsMissingResonators = function() {}; window.plugin.portalsMissingResonators.highlight = function(data) { var d = data.portal.options.details; - var portal_weakness = 0; - if(getTeam(d) !== 0) { - //Ding the portal for every missing resonator. - var resCount = 0; - $.each(d.resonatorArray.resonators, function(ind, reso) { - if(reso === null) { - portal_weakness += .125; - } else { - resCount++; - } - }); + + if(data.portal.options.team != TEAM_NONE) { + var missing_res = 8-data.portal.options.data.resCount; - if(portal_weakness > 0) { - var fill_opacity = portal_weakness*.85 + .15; + if(missing_res > 0) { + var fill_opacity = ((8-missing_res)/8)*.85 + .15; var color = 'red'; fill_opacity = Math.round(fill_opacity*100)/100; var params = {fillColor: color, fillOpacity: fill_opacity}; - if(resCount < 8) { - // Hole per missing resonator - var dash = new Array(8-resCount + 1).join("1,4,") + "100,0" - params["dashArray"] = dash; - } + + // Hole per missing resonator + var dash = new Array(missing_res + 1).join("1,4,") + "100,0" + params["dashArray"] = dash; + data.portal.setStyle(params); } } From 3bfd83a0c29d38294dc1ca91278fc49f018c63ff Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 15:18:44 +0000 Subject: [PATCH 40/63] method to attempt to find a portal lat/lng from guid, even if the portal data isn't available (we can also search through links and fields) - minimal testing added note concerning unfinished/temporary nature of the portal details API --- code/portal_data.js | 40 ++++++++++++++++++++++++++++++++++++++++ code/portal_detail.js | 4 ++++ 2 files changed, 44 insertions(+) diff --git a/code/portal_data.js b/code/portal_data.js index 867bb464..cf5aa62b 100644 --- a/code/portal_data.js +++ b/code/portal_data.js @@ -39,3 +39,43 @@ window.getPortalFields = function(guid) { return fields; } + + +// find the lat/lon for a portal, using any and all available data +// (we have the list of portals, the cached portal details, plus links and fields as sources of portal locations) +window.findPortalLatLng = function(guid) { + if (window.portals[guid]) { + return window.portals[guid].getLatLng(); + } + + // not found in portals - try the cached (and possibly stale) details - good enough for location + var details = portalDetail.get(guid); + if (details) { + return L.latLng (details.locationE6.latE6/1E6, details.locationE6.lngE6/1E6); + } + + // now try searching through fields + for (var fguid in window.fields) { + var f = window.fields[fguid].options.data; + + for (var i in f.points) { + if (f.points[i].guid == guid) { + return L.latLng (f.points[i].latE6/1E6, f.points[i].lngE6/1E6); + } + } + } + + // and finally search through links + for (var lguid in window.links) { + var l = window.links[lguid].options.data; + if (l.oGuid == guid) { + return L.latLng (l.oLatE6/1E6, l.oLngE6/1E6); + } + if (l.dGuid == guid) { + return L.latLng (l.dLatE6/1E6, l.dLngE6/1E6); + } + } + + // no luck finding portal lat/lng + return undefined; +} diff --git a/code/portal_detail.js b/code/portal_detail.js index f33da496..e99d5b7a 100644 --- a/code/portal_detail.js +++ b/code/portal_detail.js @@ -1,6 +1,10 @@ /// PORTAL DETAIL ////////////////////////////////////// // code to retrieve the new potal detail data from the servers +// NOTE: the API for portal detailed information is NOT FINAL +// this is a temporary measure to get things working again after a major change to the intel map +// API. expect things to change here + // anonymous function wrapper for the code - any variables/functions not placed into 'window' will be private (function(){ From 2b68487c4bede4e4eae9d6455a6b096194dd3731 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 15:34:06 +0000 Subject: [PATCH 41/63] plugin: max-links - fix for API changes - change to perform triangulation in screen coordinates, rather than lat/lng treated as x/y coords. gives better triangulation - ignore portals outside the viewport for triangulation purposes - prevents artifact portals adding long triangles off the edge of the screen --- plugins/max-links.user.js | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/plugins/max-links.user.js b/plugins/max-links.user.js index f1290267..944d2c00 100644 --- a/plugins/max-links.user.js +++ b/plugins/max-links.user.js @@ -2,7 +2,7 @@ // @id max-links@boombuler // @name IITC plugin: Max Links // @category Layer -// @version 0.4.1.@@DATETIMEVERSION@@ +// @version 0.4.2.@@DATETIMEVERSION@@ // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ // @description [@@BUILDNAME@@-@@BUILDDATE@@] Calculates how to link the portals to create a reasonably tidy set of links/fields. Enable from the layer chooser. (Max Links is a poor name, but remains for historical reasons.) @@ -22,27 +22,21 @@ window.plugin.maxLinks = function() {}; // const values window.plugin.maxLinks.MAX_PORTALS_TO_LINK = 200; +// zoom level used for projecting points between latLng and pixel coordinates. may affect precision of triangulation +window.plugin.maxLinks.PROJECT_ZOOM = 16; window.plugin.maxLinks.STROKE_STYLE = { color: '#FF0000', opacity: 1, - weight: 2, + weight: 1.5, clickable: false, - dashArray: [8,6], + dashArray: [6,4], smoothFactor: 10, }; window.plugin.maxLinks.layer = null; window.plugin.maxLinks.errorMarker = null; -window.plugin.maxLinks.Point = function(x,y) { - this.x=x; - this.y=y; -} -window.plugin.maxLinks.Point.prototype.toString = function() { - return this.x+","+this.y; -} - window.plugin.maxLinks.addErrorMarker = function() { if (window.plugin.maxLinks.errorMarker == null) { @@ -81,10 +75,13 @@ window.plugin.maxLinks.updateLayer = function() { var locations = []; + var bounds = map.getBounds(); $.each(window.portals, function(guid, portal) { - var loc = portal.options.details.locationE6; - var nloc = new window.plugin.maxLinks.Point(loc.latE6/1E6, loc.lngE6/1E6); - locations.push(nloc); + var ll = portal.getLatLng(); + if (bounds.contains(ll)) { + var p = map.project (portal.getLatLng(), window.plugin.maxLinks.PROJECT_ZOOM); + locations.push(p); + } }); var triangles = window.delaunay.triangulate(locations); @@ -117,7 +114,11 @@ window.plugin.maxLinks.updateLayer = function() { //using drawnLinks[a] as a set - so the stored value is of no importance drawnLinks[a][b] = null; - var poly = L.polyline([[a.x,a.y],[b.x,b.y]], window.plugin.maxLinks.STROKE_STYLE); + // convert back from x/y coordinates to lat/lng for drawing + var alatlng = map.unproject (a, window.plugin.maxLinks.PROJECT_ZOOM); + var blatlng = map.unproject (b, window.plugin.maxLinks.PROJECT_ZOOM); + + var poly = L.polyline([alatlng, blatlng], window.plugin.maxLinks.STROKE_STYLE); poly.addTo(window.plugin.maxLinks.layer); drawnLinkCount++; } From 5a2771eb92ab4a9deb5ae06ad889f10b6ffa7f28 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 15:53:21 +0000 Subject: [PATCH 42/63] fix portal 40m range circle and link distance circle --- code/portal_detail_display.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/portal_detail_display.js b/code/portal_detail_display.js index ce67431e..ca7a7422 100644 --- a/code/portal_detail_display.js +++ b/code/portal_detail_display.js @@ -218,6 +218,7 @@ window.getPortalMiscDetails = function(guid,d) { // draws link-range and hack-range circles around the portal with the // given details. Clear them if parameter 'd' is null. window.setPortalIndicators = function(p) { + if(portalRangeIndicator) map.removeLayer(portalRangeIndicator); portalRangeIndicator = null; if(portalAccessIndicator) map.removeLayer(portalAccessIndicator); @@ -231,7 +232,7 @@ window.setPortalIndicators = function(p) { // range is only known for sure if we have portal details // TODO? render a min range guess until details are loaded..? - var d = p.options.details; + var d = portalDetail.get(p.options.guid); if (d) { var range = getPortalRange(d); portalRangeIndicator = (range.range > 0 @@ -276,7 +277,7 @@ window.selectPortal = function(guid) { } } - setPortalIndicators(newPortal ? newPortal.options.details : null); + setPortalIndicators(newPortal); runHooks('portalSelected', {selectedPortalGuid: guid, unselectedPortalGuid: oldPortalGuid}); return update; From 1d3c768a4fa7f9b4315bc073ad46673cbceda581 Mon Sep 17 00:00:00 2001 From: fkloft Date: Sun, 1 Dec 2013 17:59:05 +0100 Subject: [PATCH 43/63] Fix guess-player-levels --- plugins/guess-player-levels.user.js | 106 ++++++++++++++++++++-------- 1 file changed, 78 insertions(+), 28 deletions(-) diff --git a/plugins/guess-player-levels.user.js b/plugins/guess-player-levels.user.js index 5b72e897..f86d0a5c 100644 --- a/plugins/guess-player-levels.user.js +++ b/plugins/guess-player-levels.user.js @@ -21,26 +21,44 @@ // use own namespace for plugin window.plugin.guessPlayerLevels = function() {}; +// we prepend a hash sign (#) in front of the player name in storage in order to prevent accessing a pre-defined property +// (like constructor, __defineGetter__, etc. + window.plugin.guessPlayerLevels.setupCallback = function() { $('#toolbox').append(' Guess player levels'); - addHook('portalAdded', window.plugin.guessPlayerLevels.extractPortalData); + addHook('portalDetailLoaded', window.plugin.guessPlayerLevels.extractPortalData); } // This function is intended to be called by other plugins -window.plugin.guessPlayerLevels.fetchLevelByPlayer = function(guid) { - return(window.localStorage['level-' + guid]); +window.plugin.guessPlayerLevels.fetchLevelByPlayer = function(nick) { + var cache = window.plugin.guessPlayerLevels._nameToLevelCache; + + if(cache["#" + nick] === undefined) { + // no use in reading localStorage repeatedly + if(window.plugin.guessPlayerLevels._localStorageLastUpdate < Date.now() - 10*1000) { + try { + cache = JSON.parse(localStorage["plugin-guess-player-levels"]) + window.plugin.guessPlayerLevels._nameToLevelCache = cache; + window.plugin.guessPlayerLevels._localStorageLastUpdate = Date.now(); + } catch(e) { + } + } + } + + return cache["#" + nick]; } -window.plugin.guessPlayerLevels._nameToGuidCache = {}; +window.plugin.guessPlayerLevels._nameToLevelCache = {}; +window.plugin.guessPlayerLevels._localStorageLastUpdate = 0; window.plugin.guessPlayerLevels.setLevelTitle = function(dom) { // expects dom node with nick in its child text node var el = $(dom); var nick = el.text(); - var guid = window.playerNameToGuid(nick); - var level = guid ? localStorage['level-'+guid] : null; + + var level = window.plugin.guessPlayerLevels.fetchLevelByPlayer(nick); var text; if (level) { @@ -49,7 +67,7 @@ window.plugin.guessPlayerLevels.setLevelTitle = function(dom) { text = 'Min player level unknown'; } window.setupTooltips(el); - + /* This code looks hacky but since we are a little late within the mouseenter so we need to improvise a little. The open method doesn't open the tooltip directly. @@ -69,7 +87,9 @@ window.plugin.guessPlayerLevels.setupChatNickHelper = function() { } window.plugin.guessPlayerLevels.extractPortalData = function(data) { - var r = data.portal.options.details.resonatorArray.resonators; + if(!data.success) return; + + var r = data.details.resonatorArray.resonators; //due to the Jarvis Virus/ADA Refactor it's possible for a player to own resonators on a portal //at a higher level than the player themselves. It is not possible to detect for sure when this @@ -96,29 +116,59 @@ window.plugin.guessPlayerLevels.extractPortalData = function(data) { $.each(perPlayerResMaxLevel, function(guid, level) { if (perPlayerResMaxLevelCount[guid] <= window.MAX_RESO_PER_PLAYER[level]) { - var p = 'level-'+guid; - if(!window.localStorage[p] || window.localStorage[p] < level) - window.localStorage[p] = level; + window.plugin.guessPlayerLevels.savePlayerLevel(guid, level); } }); } +window.plugin.guessPlayerLevels.savePlayerLevel = function(nick, level) { + var stored = window.plugin.guessPlayerLevels.fetchLevelByPlayer(nick); + if(stored && stored >= level) + return; + + window.plugin.guessPlayerLevels._nameToLevelCache["#" + nick] = level; + + // to minimize accesses to localStorage, writing is delayed a bit + + if(window.plugin.guessPlayerLevels._writeTimeout) + clearTimeout(window.plugin.guessPlayerLevels._writeTimeout); + + window.plugin.guessPlayerLevels._writeTimeout = setTimeout(function() { + localStorage["plugin-guess-player-levels"] = JSON.stringify(window.plugin.guessPlayerLevels._nameToLevelCache); + }, 500); +} + window.plugin.guessPlayerLevels.guess = function() { var playersRes = {}; var playersEnl = {}; - $.each(window.portals, function(ind, portal) { - var r = portal.options.details.resonatorArray.resonators; - $.each(r, function(ind, reso) { - if(!reso) return true; - if(isSystemPlayer(reso.ownerGuid)) return true; + $.each(window.portals, function(guid,p) { + var details = portalDetail.get(guid); + if(details) { + var r = details.resonatorArray.resonators; + $.each(r, function(ind, reso) { + if(!reso) return true; + var nick = reso.ownerGuid; + if(isSystemPlayer(nick)) return true; - var lvl = localStorage['level-' + reso.ownerGuid]; - var nick = getPlayerName(reso.ownerGuid); - if(portal.options.team === TEAM_ENL) + var lvl = window.plugin.guessPlayerLevels.fetchLevelByPlayer(nick); + if(!lvl) return true; + + if(getTeam(details) === TEAM_ENL) + playersEnl[nick] = lvl; + else + playersRes[nick] = lvl; + }); + + var nick = details.captured.capturingPlayerId + if(isSystemPlayer(nick)) return true; + var lvl = window.plugin.guessPlayerLevels.fetchLevelByPlayer(nick); + if(!lvl) return true; + + if(getTeam(details) === TEAM_ENL) playersEnl[nick] = lvl; else playersRes[nick] = lvl; - }); + } }); var s = 'Players have at least the following level:\n\n'; @@ -151,7 +201,7 @@ window.plugin.guessPlayerLevels.guess = function() { if (namesE.length > 0) averageE = (totallvlE/namesE.length); s += '\nAverage level:\t'+averageR.toFixed(2)+'\tAverage level:\t'+averageE.toFixed(2); s += '\n\nIf there are some unresolved names, simply try again.' - //console.log(s); + dialog({ text: s, title: 'Player levels: R' + averageR.toFixed(2) + ', E' + averageE.toFixed(2), @@ -160,24 +210,24 @@ window.plugin.guessPlayerLevels.guess = function() { buttons: { 'RESET GUESSES': function() { // clear all guessed levels from local storage - $.each(Object.keys(localStorage), function(ind,key) { + $.each(Object.keys(localStorage), function(ind,key) {// legacy code - should be removed in the future if(key.lastIndexOf("level-",0)===0) { localStorage.removeItem(key); } }); + localStorage.removeItem("plugin-guess-player-levels") + window.plugin.guessPlayerLevels._nameToLevelCache = {} // now force all portals through the callback manually $.each(window.portals, function(guid,p) { - window.plugin.guessPlayerLevels.extractPortalData({portal: p}); + var details = portalDetail.get(guid); + if(details) + window.plugin.guessPlayerLevels.extractPortalData({details:details, success:true}); }); // and re-open the dialog (on a minimal timeout - so it's not closed while processing this callback) setTimeout(window.plugin.guessPlayerLevels.guess,1); }, - }, - + } }); - - //run the name resolving process - resolvePlayerNames(); } window.plugin.guessPlayerLevels.sort = function(playerHash) { From d6e56298405f57e4d4e972697c0f03410340844d Mon Sep 17 00:00:00 2001 From: fkloft Date: Sun, 1 Dec 2013 18:08:06 +0100 Subject: [PATCH 44/63] Fixed exception when selecting a neutral portal --- plugins/guess-player-levels.user.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/plugins/guess-player-levels.user.js b/plugins/guess-player-levels.user.js index f86d0a5c..80511a68 100644 --- a/plugins/guess-player-levels.user.js +++ b/plugins/guess-player-levels.user.js @@ -159,15 +159,17 @@ window.plugin.guessPlayerLevels.guess = function() { playersRes[nick] = lvl; }); - var nick = details.captured.capturingPlayerId - if(isSystemPlayer(nick)) return true; - var lvl = window.plugin.guessPlayerLevels.fetchLevelByPlayer(nick); - if(!lvl) return true; + if(details.captured) { + var nick = details.captured.capturingPlayerId + if(isSystemPlayer(nick)) return true; + var lvl = window.plugin.guessPlayerLevels.fetchLevelByPlayer(nick); + if(!lvl) return true; - if(getTeam(details) === TEAM_ENL) - playersEnl[nick] = lvl; - else - playersRes[nick] = lvl; + if(getTeam(details) === TEAM_ENL) + playersEnl[nick] = lvl; + else + playersRes[nick] = lvl; + } } }); From c77cb56a0320260c851a8ec2f4e07cc377a23012 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 17:34:49 +0000 Subject: [PATCH 45/63] plugin: guess player levels - code to clear the now obsolete 'level-PLAYER_GUID' keys removed from reset guesses, and moved to plugin startup - version number bumpped --- plugins/guess-player-levels.user.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/plugins/guess-player-levels.user.js b/plugins/guess-player-levels.user.js index 80511a68..b44d11e9 100644 --- a/plugins/guess-player-levels.user.js +++ b/plugins/guess-player-levels.user.js @@ -2,7 +2,7 @@ // @id iitc-plugin-guess-player-levels@breunigs // @name IITC plugin: guess player level // @category Info -// @version 0.4.9.@@DATETIMEVERSION@@ +// @version 0.4.10.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ @@ -212,11 +212,6 @@ window.plugin.guessPlayerLevels.guess = function() { buttons: { 'RESET GUESSES': function() { // clear all guessed levels from local storage - $.each(Object.keys(localStorage), function(ind,key) {// legacy code - should be removed in the future - if(key.lastIndexOf("level-",0)===0) { - localStorage.removeItem(key); - } - }); localStorage.removeItem("plugin-guess-player-levels") window.plugin.guessPlayerLevels._nameToLevelCache = {} // now force all portals through the callback manually @@ -245,6 +240,14 @@ window.plugin.guessPlayerLevels.sort = function(playerHash) { var setup = function() { + // we used to sture level guesses as one localStorage key per player, named 'level-PLAYER_GUID' + // they're now stored in a single storage key - 'plugin-guess-player-levels' - so clear these old entries + $.each(Object.keys(localStorage), function(ind,key) {// legacy code - should be removed in the future + if(key.lastIndexOf("level-",0)===0) { + localStorage.removeItem(key); + } + }); + window.plugin.guessPlayerLevels.setupCallback(); window.plugin.guessPlayerLevels.setupChatNickHelper(); } From fe8d7344e8343e40bb1122259cf0ce7458c70998 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 17:38:22 +0000 Subject: [PATCH 46/63] guess player levels: change text on dialog --- plugins/guess-player-levels.user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/guess-player-levels.user.js b/plugins/guess-player-levels.user.js index b44d11e9..4a4a2dc7 100644 --- a/plugins/guess-player-levels.user.js +++ b/plugins/guess-player-levels.user.js @@ -202,7 +202,7 @@ window.plugin.guessPlayerLevels.guess = function() { if (namesR.length > 0) averageR = (totallvlR/namesR.length); if (namesE.length > 0) averageE = (totallvlE/namesE.length); s += '\nAverage level:\t'+averageR.toFixed(2)+'\tAverage level:\t'+averageE.toFixed(2); - s += '\n\nIf there are some unresolved names, simply try again.' + s += '\n\nOnly players from recently viewed portal details are listed.' dialog({ text: s, From 7f194b21972e3e9886f3ff58ee9c11eff9212515 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 18:01:48 +0000 Subject: [PATCH 47/63] add back portal image tooltip, and description in large image view --- code/portal_detail_display.js | 5 +++-- code/portal_detail_display_tools.js | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/code/portal_detail_display.js b/code/portal_detail_display.js index ca7a7422..d240ebd9 100644 --- a/code/portal_detail_display.js +++ b/code/portal_detail_display.js @@ -41,8 +41,9 @@ window.renderPortalDetails = function(guid) { var lat = data.latE6/1E6; var lng = data.lngE6/1E6; - var imgTitle = ''; //'title="'+getPortalDescriptionFromDetails(details)+'\n\nClick to show full image."'; - var portalDetailObj = undefined; //window.getPortalDescriptionFromDetailsExtended(details); + var imgTitle = details ? getPortalDescriptionFromDetails(details) : data.title; + imgTitle += '\n\nClick to show full image.'; + var portalDetailObj = details ? window.getPortalDescriptionFromDetailsExtended(details) : undefined; var portalDetailedDescription = ''; diff --git a/code/portal_detail_display_tools.js b/code/portal_detail_display_tools.js index f9f02abf..a2891067 100644 --- a/code/portal_detail_display_tools.js +++ b/code/portal_detail_display_tools.js @@ -29,8 +29,8 @@ window.getPortalDescriptionFromDetails = function(details) { var desc = descObj.TITLE; if(descObj.ADDRESS) desc += '\n' + descObj.ADDRESS; - if(descObj.ATTRIBUTION) - desc += '\nby '+descObj.ATTRIBUTION+' ('+descObj.ATTRIBUTION_LINK+')'; +// if(descObj.ATTRIBUTION) +// desc += '\nby '+descObj.ATTRIBUTION+' ('+descObj.ATTRIBUTION_LINK+')'; return desc; } From 9048c6d710bde2699039e3375a1dd817a77dfdea Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 18:22:53 +0000 Subject: [PATCH 48/63] tweaked default portal detail levels to show L7 portals one more step out. this helps seeing the larger-scale links and fields IITC still switches to L8 portals one level sooner than default intel though - and this seems about right for the current level of portals commonly seen --- code/utils_misc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/utils_misc.js b/code/utils_misc.js index 11ed6545..75d213e8 100644 --- a/code/utils_misc.js +++ b/code/utils_misc.js @@ -281,7 +281,7 @@ window.getMinPortalLevelForZoom = function(z) { // these values are from the stock intel map. however, they're too detailed for reasonable speed, and increasing // detail at a higher zoom level shows enough detail still, AND speeds up IITC considerably //var ZOOM_TO_LEVEL = [8, 8, 8, 8, 7, 7, 6, 6, 5, 4, 4, 3, 3, 2, 2, 1, 1]; - var ZOOM_TO_LEVEL = [8, 8, 8, 8, 8, 8, 7, 7, 6, 5, 4, 4, 3, 2, 2, 1, 1]; + var ZOOM_TO_LEVEL = [8, 8, 8, 8, 8, 7, 7, 7, 6, 5, 4, 4, 3, 2, 2, 1, 1]; var l = ZOOM_TO_LEVEL[z] || 0; return l; From 70030998bfee89f810a774986d12519de68e3f40 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 1 Dec 2013 18:37:14 +0000 Subject: [PATCH 49/63] more plugins disabled, as they're going to be hard to fix with the recent changes also fix missing category from players-resonators dummy deleted plugin --- plugins/ap-list.user.js | 931 +---------------- plugins/{ => broken}/ap-list.css | 0 plugins/broken/ap-list.user.js | 942 ++++++++++++++++++ plugins/broken/make-dummy-deleted-plugin | 21 + ...-highlighter-outbound-link-counter.user.js | 63 ++ ...l-highlighter-with-lvl8-resonators.user.js | 54 + plugins/players-resonators.user.js | 1 + ...-highlighter-outbound-link-counter.user.js | 52 +- ...l-highlighter-with-lvl8-resonators.user.js | 43 +- 9 files changed, 1087 insertions(+), 1020 deletions(-) rename plugins/{ => broken}/ap-list.css (100%) create mode 100644 plugins/broken/ap-list.user.js create mode 100755 plugins/broken/make-dummy-deleted-plugin create mode 100644 plugins/broken/portal-highlighter-outbound-link-counter.user.js create mode 100644 plugins/broken/portal-highlighter-with-lvl8-resonators.user.js diff --git a/plugins/ap-list.user.js b/plugins/ap-list.user.js index 4fc2bb23..cd842aef 100644 --- a/plugins/ap-list.user.js +++ b/plugins/ap-list.user.js @@ -1,942 +1,15 @@ // ==UserScript== // @id iitc-plugin-ap-list@xelio // @name IITC plugin: AP List -// @category Info +// @category Deleted // @version 0.5.7.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ -// @description [@@BUILDNAME@@-@@BUILDDATE@@] List portals by AP of either faction or by effective level. Other functions and controls please refer to the Userguide. +// @description PLUGIN CURRENTLY UNAVAILABLE // @include https://www.ingress.com/intel* // @include http://www.ingress.com/intel* // @match https://www.ingress.com/intel* // @match http://www.ingress.com/intel* // @grant none // ==/UserScript== - -@@PLUGINSTART@@ - -// PLUGIN START //////////////////////////////////////////////////////// - -// use own namespace for plugin -window.plugin.apList = function() { -}; - -window.plugin.apList.cachedPortals = {}; -window.plugin.apList.SIDE_FRIENDLY = 0; -window.plugin.apList.SIDE_ENEMY = 1; -window.plugin.apList.displaySide = window.plugin.apList.SIDE_ENEMY; -window.plugin.apList.sides = new Array(2); -window.plugin.apList.sortedPortals = new Array(2); -window.plugin.apList.playerApGainFunc = new Array(2); - -window.plugin.apList.SORT_BY_AP = 'AP'; -window.plugin.apList.SORT_BY_EL = 'EL'; -window.plugin.apList.sortBy = window.plugin.apList.SORT_BY_AP; -window.plugin.apList.SORT_ASC = 1; -window.plugin.apList.SORT_DESC = -1; -window.plugin.apList.sortOptions = {}; - -window.plugin.apList.currentPage = [1,1]; -window.plugin.apList.totalPage = [1,1]; -window.plugin.apList.portalPerPage = 10; -window.plugin.apList.sideLabelClass = {}; -window.plugin.apList.tableColumns = new Array(2); - -window.plugin.apList.useCachedPortals = false; -window.plugin.apList.cacheBounds; -window.plugin.apList.cacheActiveZoomLevel; - -window.plugin.apList.destroyPortalsGuid = new Array(); - -window.plugin.apList.portalLocationIndicator; -window.plugin.apList.animTimeout; - -// ENTRY POINT /////////////////////////////////////////////////////////////////// -window.plugin.apList.handleUpdate = function() { - if(!requests.isLastRequest('getThinnedEntitiesV4')) return; - plugin.apList.updateSortedPortals(); - plugin.apList.updatePortalTable(plugin.apList.displaySide); -} - -// CONTENT GENERATION //////////////////////////////////////////////////////////// - -// Generate html table from top portals -window.plugin.apList.updatePortalTable = function(side) { - var table = '' - + '' - + plugin.apList.tableHeaderBuilder(side) - + ''; - - table += ''; - var startingPortal = (plugin.apList.currentPage[side] - 1) * plugin.apList.portalPerPage; - for(var i = startingPortal; i < startingPortal + plugin.apList.portalPerPage; i++) { - var portal = plugin.apList.sortedPortals[side][i]; - table += plugin.apList.tableRowBuilder(side, portal); - } - table += '
'; - $('div#ap-list-table').html(table); - - plugin.apList.updatePaginationControl(); - plugin.apList.updateStats(); -} - -window.plugin.apList.tableHeaderBuilder = function(side) { - var headerRow = ''; - - $.each(plugin.apList.tableColumns[side], function(ind, column) { - var cssClass = column.headerTooltip ? (column.cssClass + ' help') : column.cssClass; - var title = column.headerTooltip ? column.headerTooltip : ''; - var onclick = column.headerOnClick ? column.headerOnClick: ''; - var content = column.headerFunction ? column.headerFunction() : column.header; - headerRow += '' - + content - + ''; - }); - - headerRow += ''; - return headerRow; -} - -window.plugin.apList.tableRowBuilder = function(side,portal) { - var row = ""; - - $.each(plugin.apList.tableColumns[side], function(ind, column) { - var content = portal ? column.contentFunction(portal) : ' '; - row += '' - + content - + ''; - }); - - row += ''; - return row; -} - -window.plugin.apList.getHeaderCheckbox = function() { - var onClick = 'window.plugin.apList.clearDestroyPortals();'; - var content = '
' - var div = plugin.apList.getCheckbox(onClick, null, content); - return div; -} - -window.plugin.apList.getPortalDestroyCheckbox = function(portal) { - // Change background color to border color if portal selected for destroy - var addedClass = plugin.apList.destroyPortalIndex(portal.guid) >= 0 - ? 'ap-list-checkbox-selected' : ''; - var onClick = 'window.plugin.apList.destroyPortal(\'' + portal.guid + '\');'; - var div = plugin.apList.getCheckbox(onClick, addedClass, null); - return div; -} - -window.plugin.apList.getCheckbox = function(onClick, addedClass, content) { - // 2 div for centering checkbox horizontally and vertically, - // click event on outest div for people with not so good aiming - var div = '
' - + '
' - + (content || '') - + '
' - + '
'; - return div; -} - -// Combine ap title and test -window.plugin.apList.getPortalApText = function(portal) { - var title = plugin.apList.getPortalApTitle(portal); - return '
' + digits(portal.playerApGain.totalAp) + '
'; -} - -// Friendly portal will get resonator upgrade list, enemy -// portal will get ap breakdown -window.plugin.apList.getPortalApTitle = function(portal) { - var t; - var playerApGain = portal.playerApGain; - if(plugin.apList.portalSide(portal) === plugin.apList.SIDE_FRIENDLY) { - t = 'Deploy & Upgrade\n'; - - for(var i = 0; i < playerApGain.upgradedReso.length; i++) { - var reso = playerApGain.upgradedReso[i]; - var apGain = (reso.level === 0) ? DEPLOY_RESONATOR : UPGRADE_ANOTHERS_RESONATOR; - t += 'Resonator on ' + OCTANTS[reso.slot] + '\t' + reso.level + '->' - + reso.newLevel + '\t= ' + apGain + '\n'; - } - - if(playerApGain.captureBonus > 0) - t += 'Capture\t\t= ' + playerApGain.captureBonus + '\n'; - if(playerApGain.completionBonus > 0) - t += 'Bonus\t\t= ' + playerApGain.completionBonus + '\n'; - - t += 'Sum: ' + digits(playerApGain.totalAp) + ' AP'; - } else { - t = 'Destroy & Capture:\n' - + 'R:' + playerApGain.resoCount + ' L:' + playerApGain.linkCount + ' CF:' + playerApGain.fieldCount + '\n' - + 'Destroy AP\t=\t' + digits(playerApGain.destroyAp) + '\n' - + 'Capture AP\t=\t' + digits(playerApGain.captureAp) + '\n' - + 'Sum: ' + digits(playerApGain.totalAp) + ' AP'; - } - return t; -} - -window.plugin.apList.getPortalEffectiveLvText = function(portal) { - var title = plugin.apList.getPortalEffectiveLvTitle(portal); - return '
' + portal.effectiveLevel.effectiveLevel.toFixed(1) + '
'; -} - -window.plugin.apList.getPortalEffectiveLvTitle = function(portal) { - var t = 'Effective energy:\t' + portal.effectiveLevel.effectiveEnergy + '\n' - + 'Effect of Shields:\t' + portal.effectiveLevel.effectOfShields + '\n' - + 'Effect of resos dist:\t' + portal.effectiveLevel.effectOfResoDistance + '\n' - + 'Origin Level:\t' + portal.effectiveLevel.originLevel; - return t; -} - -// portal link - single click: select portal -// double click: zoom to and select portal -// hover: show address -window.plugin.apList.getPortalLink = function(portal) { - var latlng = [portal.locationE6.latE6/1E6, portal.locationE6.lngE6/1E6].join(); - var jsSingleClick = 'window.plugin.apList.selectPortal(\''+portal.guid+'\');return false'; - var jsDoubleClick = 'window.zoomToAndShowPortal(\''+portal.guid+'\', ['+latlng+']);return false'; - var perma = '/intel?latE6='+portal.locationE6.latE6 - +'&lngE6='+portal.locationE6.lngE6+'&z=17&pguid='+portal.guid; - //Use Jquery to create the link, which escape characters in TITLE and ADDRESS of portal - var a = $('',{ - "class": 'help', - text: portal.portalV2.descriptiveText.TITLE, - title: portal.portalV2.descriptiveText.ADDRESS, - href: perma, - onClick: jsSingleClick, - onDblClick: jsDoubleClick - })[0].outerHTML; - - var divClass = plugin.apList.destroyPortalIndex(portal.guid) >= 0 - ? 'ap-list-link ap-list-link-selected' - : 'ap-list-link'; - var div = '
'+a+'
'; - return div; -} - -window.plugin.apList.updatePaginationControl = function() { - $('#ap-list-current-p').html(plugin.apList.currentPage[plugin.apList.displaySide]); - $('#ap-list-total-p').html(plugin.apList.totalPage[plugin.apList.displaySide]); -} - -window.plugin.apList.updateStats = function() { - var destroyPortals = plugin.apList.destroyPortalsGuid.length; - if(destroyPortals === 0) { - title = 'Stats'; - } else { - var destroyAP = 0; - var averageEL = 0; - $.each(plugin.apList.destroyPortalsGuid, function(ind,guid) { - destroyAP += plugin.apList.cachedPortals[guid].playerApGain.totalAp; - averageEL += plugin.apList.cachedPortals[guid].effectiveLevel.effectiveLevel; - }); - averageEL = Math.round(averageEL / destroyPortals * 10) / 10; - - var title = 'Stats\n' - + 'Selected portal(s)\t=\t' + destroyPortals + '\n' - + 'Total AP\t=\t' + destroyAP + '\n' - + 'Average EL\t=\t' + averageEL; - } - - $('#ap-list-misc-info').attr('title', title); -} - -// MAIN LOGIC FUNCTIONS ////////////////////////////////////////////////////////// - -// Loop through portals and get playerApGain, then put in sortedPortals by side and sort them by AP. -window.plugin.apList.updateSortedPortals = function() { - plugin.apList.sortedPortals[plugin.apList.SIDE_FRIENDLY] = new Array(); - plugin.apList.sortedPortals[plugin.apList.SIDE_ENEMY] = new Array(); - - // Make a backup of cachedPortals with shallow copy - // If cache is not enabled, empty cachedPortals. In following - // "$.each" loop, the backup portal will copy back into - // cachedPortals if it exist in "window.portals"" and didn't change.' - var oldcachedPortal = $.extend({},plugin.apList.cachedPortals); - if(!plugin.apList.useCachedPortals) - plugin.apList.cachedPortals = {}; - - $.each(window.portals, function(key, value) { - var portal = value.options.details; - var cachedPortal = oldcachedPortal[key]; - // If portal is changed, update playerApGain with latest - // information - if(!cachedPortal - || value.timestamp !== cachedPortal.timestamp - || plugin.apList.isFieldsChanged(portal.portalV2.linkedFields, cachedPortal.portalV2.linkedFields)) { - // Shallow copy portal detail to cachedPortal - cachedPortal = $.extend({}, portal); - var side = plugin.apList.portalSide(portal); - var getApGainFunc = plugin.apList.playerApGainFunc[side]; - // Assign playerApGain and guid to cachedPortal - cachedPortal.timestamp = value.timestamp - cachedPortal.playerApGain = getApGainFunc(portal); - cachedPortal.effectiveLevel = plugin.apList.getEffectiveLevel(portal); - cachedPortal.guid = value.options.guid; - } - plugin.apList.cachedPortals[key] = cachedPortal; - }); - - // Add all portals to sortedPortals by side and sort sortedPortals by AP - $.each(plugin.apList.cachedPortals, function(key, portal) { - var side = plugin.apList.portalSide(portal); - plugin.apList.sortedPortals[side].push(portal); - }); - $.each(plugin.apList.sides, function(ind, side) { - plugin.apList.sortedPortals[side].sort(plugin.apList.comparePortal); - }); - - // Modify sortedPortals if any portal selected for destroy - plugin.apList.handleDestroyPortal(); - // Update pagination control data - plugin.apList.updateTotalPages(); -} - -// This function will make AP gain of field and link only count once if -// one of the connected portal is selected for destroy -window.plugin.apList.handleDestroyPortal = function() { - if(plugin.apList.destroyPortalsGuid.length === 0) return; - - var enemy = window.plugin.apList.SIDE_ENEMY; - var destroyedLinks = {}; - var destroyedFields = {}; - - // Clean up portal selected for destroy, remove from destroyPortalsGuid - // if portal not exist or change to friendly side - plugin.apList.destroyPortalsGuid = $.grep(plugin.apList.destroyPortalsGuid, function(portalGuid,ind) { - var portal = plugin.apList.cachedPortals[portalGuid]; - if(!portal || plugin.apList.portalSide(portal) !== enemy) return false; - return true; - }); - - // Loop through portals from highest AP to lowest AP, matching links and fields to the - // portal only if the portal is selected for destroy and have highest AP. - // Matching info stores in "destroyedLinks" and "destroyedFields" - $.each(plugin.apList.sortedPortals[enemy], function(ind, portal) { - if(plugin.apList.destroyPortalIndex(portal.guid) < 0) return true; - - $.each(portal.portalV2.linkedEdges || [], function(ind,link) { - // Skip if the link already matched with a portal - if(destroyedLinks[link.edgeGuid]) return true; - belongTo = {portalGuid: portal.guid}; - destroyedLinks[link.edgeGuid] = belongTo; - }); - $.each(portal.portalV2.linkedFields || [], function(ind,field) { - // Skip if the field already matched with a portal - if(destroyedFields[field]) return true; - belongTo = {portalGuid: portal.guid}; - destroyedFields[field] = belongTo; - }); - }); - - // Remove the link and field which was matched with another portal - var getApGainFunc = plugin.apList.playerApGainFunc[enemy]; - $.each(plugin.apList.sortedPortals[enemy], function(ind, portal) { - // Filter out links which was matched with another portal - var newLinkedEdges = $.grep(portal.portalV2.linkedEdges || [], function(link,ind) { - if(!destroyedLinks[link.edgeGuid]) return true; - return (destroyedLinks[link.edgeGuid].portalGuid === portal.guid); - }); - // Filter out fields which was matched with another portal - var newLinkedFields = $.grep(portal.portalV2.linkedFields || [], function(field,ind) { - if(!destroyedFields[field]) return true; - return (destroyedFields[field].portalGuid === portal.guid); - }); - - // Skip modifying portal if no link and field changed - if(newLinkedEdges.length === (portal.portalV2.linkedEdges || []).length - && newLinkedFields.length === (portal.portalV2.linkedFields || []).length) - return true; - - // Clone the portal with deep copy to avoid modifying original data in cachedPortal - var newPortal = $.extend(true, {}, portal); - // Assign new links and fields and calculate new playerApGain - if(portal.portalV2.linkedEdges) newPortal.portalV2.linkedEdges = newLinkedEdges; - if(portal.portalV2.linkedFields) newPortal.portalV2.linkedFields = newLinkedFields; - newPortal.playerApGain = getApGainFunc(newPortal); - - plugin.apList.sortedPortals[enemy][ind] = newPortal; - }); - - // Sorting portals with updated AP - plugin.apList.sortedPortals[enemy].sort(plugin.apList.comparePortal); -} - -window.plugin.apList.updateTotalPages = function() { - $.each(plugin.apList.sortedPortals, function(side, portals) { - plugin.apList.totalPage[side] = Math.max(Math.ceil(portals.length / plugin.apList.portalPerPage), 1); - plugin.apList.currentPage[side] = Math.min(plugin.apList.totalPage[side], plugin.apList.currentPage[side]); - }); -} - -window.plugin.apList.isFieldsChanged = function(a,b) { - // http://stackoverflow.com/questions/1773069/using-jquery-to-compare-two-arrays - return $(a).not(b).get().length === 0 && $(b).not(a).get().length === 0;; -} - -window.plugin.apList.portalSide = function(portal) { - return (portal.controllingTeam.team === PLAYER.team - || portal.controllingTeam.team === 'NEUTRAL') - ? plugin.apList.SIDE_FRIENDLY - : plugin.apList.SIDE_ENEMY; -} - -// Get AP of friendly portal -window.plugin.apList.getDeployOrUpgradeApGain = function(d) { - var playerResoCount = new Array(MAX_PORTAL_LEVEL + 1); - var otherReso = new Array(); - var totalAp = 0; - var upgradedReso = new Array(); - - var deployCount = 0; - var upgradedCount = 0; - - var captureBonus = 0; - var completionBonus = 0; - - // loop through reso slot and find empty reso, deployed - // by others(only level lower than player level) or by player. - for(var i = 0; i < 8; i++) { - var reso = d.resonatorArray.resonators[i]; - // Empty reso - if(!reso) { - otherReso.push({slot: i, level: 0}); - continue; - } - // By player - if(reso.ownerGuid === window.PLAYER.guid) { - playerResoCount[reso.level] = (playerResoCount[reso.level] || 0) + 1; - continue; - } - // By others and level lower than player - if(reso.level < window.PLAYER.level) { - otherReso.push(reso); - } - } - - // Sort others reso low to high, last reso in otherReso get upgrade first. - otherReso.sort(function(a, b) {return a.level - b.level;}); - - // Find out available count of reso for each level - for(var i = window.PLAYER.level; i > 0 && otherReso.length > 0; i--) { - var availableCount = MAX_RESO_PER_PLAYER[i] - (playerResoCount[i] || 0); - // Loop through lower level reso of others and add to result - while(availableCount > 0 && otherReso.length > 0) { - var targetReso = otherReso.pop(); - // Can only upgrade lower level reso - if(targetReso.level >= i) - continue; - // Add upgraded reso to result - targetReso.newLevel = i; - upgradedReso.push(targetReso); - // Counting upgrade or deploy - (targetReso.level === 0) ? deployCount++ : upgradedCount++; - - availableCount--; - } - } - - if(deployCount > 0) completionBonus = COMPLETION_BONUS; - if(deployCount === 8) captureBonus = CAPTURE_PORTAL; - - totalAp = deployCount * DEPLOY_RESONATOR - + upgradedCount * UPGRADE_ANOTHERS_RESONATOR - + captureBonus - + completionBonus; - - return { - captureBonus: captureBonus, - completionBonus: completionBonus, - totalAp: totalAp, - upgradedReso: upgradedReso - }; -} - -window.plugin.apList.getAttackApGain = function(d) { - var resoCount = 0; - $.each(d.resonatorArray.resonators, function(ind, reso) { - if (!reso) - return true; - resoCount += 1; - }); - - var linkCount = d.portalV2.linkedEdges ? d.portalV2.linkedEdges.length : 0; - var fieldCount = d.portalV2.linkedFields ? d.portalV2.linkedFields.length : 0; - - var resoAp = resoCount * DESTROY_RESONATOR; - var linkAp = linkCount * DESTROY_LINK; - var fieldAp = fieldCount * DESTROY_FIELD; - var destroyAp = resoAp + linkAp + fieldAp; - var captureAp = CAPTURE_PORTAL + 8 * DEPLOY_RESONATOR + COMPLETION_BONUS; - var totalAp = destroyAp + captureAp; - - return { - totalAp: totalAp, - destroyAp: destroyAp, - captureAp: captureAp, - resoCount: resoCount, - linkCount: linkCount, - fieldCount: fieldCount - } -} - -window.plugin.apList.getEffectiveLevel = function(portal) { - var effectiveEnergy = 0; - var effectiveLevel = 0; - - var resosStats = plugin.apList.getResonatorsStats(portal); - - - // Calculate effective energy - - var effectOfShields = plugin.apList.getShieldsEffect(portal); - - // If avgResoDistance is 0, 8 resonators in the same place and can be treated as 1 resonator. - // So the minimum effect of resonator distance is 1/8 - var effectOfResoDistance = (1 + (resosStats.avgResoDistance / HACK_RANGE) * 7 ) / 8; - - effectiveEnergy = resosStats.currentEnergy * effectOfShields * effectOfResoDistance; - - // Calculate effective level - for(var i = MAX_PORTAL_LEVEL; i >= 0; i--) { - var baseLevel = i; - var baseLevelEnergy = RESO_NRG[baseLevel] * 8; - if(effectiveEnergy >= baseLevelEnergy) { - var energyToNextLevel = baseLevel === MAX_PORTAL_LEVEL - ? baseLevelEnergy - RESO_NRG[MAX_PORTAL_LEVEL - 1] * 8 // Extrapolate - : RESO_NRG[baseLevel + 1] * 8 - baseLevelEnergy; // Interpolate - - var additionalLevel = (effectiveEnergy - baseLevelEnergy) / energyToNextLevel; - effectiveLevel = baseLevel + additionalLevel; - break; - } - } - - // Account for damage do to player by portal - var portalLevel = parseInt(getPortalLevel(portal)); - if(effectiveLevel < portalLevel) { - var energyPect = resosStats.currentEnergy / resosStats.totalEnergy; - effectiveLevel = effectiveLevel * (1-energyPect) + portalLevel * energyPect; - } - - return { - effectiveLevel: Math.round(effectiveLevel * 10) / 10, - effectiveEnergy: parseInt(effectiveEnergy), - effectOfShields: Math.round(effectOfShields * 100) / 100, - effectOfResoDistance: Math.round(effectOfResoDistance * 100) / 100, - originLevel: portalLevel - }; -} - -window.plugin.apList.getResonatorsStats = function(portal) { - var totalEnergy = 0; - var currentEnergy = 0; - var avgResoDistance = 0; - - $.each(portal.resonatorArray.resonators, function(ind, reso) { - if (!reso) - return true; - totalEnergy += RESO_NRG[reso.level]; - currentEnergy += reso.energyTotal; - avgResoDistance += (reso.distanceToPortal / 8); - }); - return { - totalEnergy: totalEnergy, - currentEnergy: currentEnergy, - avgResoDistance: avgResoDistance}; -} - -window.plugin.apList.getShieldsEffect = function(portal) { - // shield effect: each shield's mitigation value is assumed to be the percentage of the damage it will absorb - // the rest of the damage gets through to the next shield, and so on. - // so, to calculate the total protection, we multiply the fractions of damage allowed through each shield - // to get a final figure of how much damage gets through - // e.g. - // one shield: mitigation 10 - lets 90% of the damage through - // two shields: mitigation 20 and 30 - first one lets 80% through, second 70% of the remaining - // so final amount let through = 0.8 * 0.7 = 0.56 = 56% damage let through - // four shields: mitigation 30 - 70% through each = 0.7 * 0.7 * 0.7 * 0.7 = 0.24 = 24% damage gets through all four - - var shieldsEffect = 1; - $.each(portal.portalV2.linkedModArray, function(ind, mod) { - if(!mod) - return true; - if(!mod.stats.MITIGATION) - return true; - shieldsEffect *= (1 - parseInt(mod.stats.MITIGATION)/100.0); - }); - return shieldsEffect; -} - -// For using in .sort(func) of sortedPortals -// Use options in plugin.apList.sortOptions. Each type of sortBy has -// array of options. Option consist of an ordering and a property chain. -// -// Sorting done by loop through the options, get the property by -// property chain of each option, compare the property of two object -// with the ordering of option and return the result when the first -// difference is found. -window.plugin.apList.comparePortal = function(a,b) { - var result = 0; - var options = plugin.apList.sortOptions[plugin.apList.sortBy]; - - $.each(options, function(indO, option) { - var aProperty = a; - var bProperty = b; - // Walking down the chain - $.each(option.chain, function(indPN, propertyName) { - aProperty = aProperty[propertyName]; - bProperty = bProperty[propertyName]; - }); - // compare next property if equal - if(aProperty === bProperty) return true; - - result = (aProperty > bProperty ? 1 : -1) * option.order; - return false; - }); - - return result; -} - -// FEATURE TOGGLES AND INTERACTION HANDLER /////////////////////////////////////// - -window.plugin.apList.enableCache = function() { - plugin.apList.useCachedPortals = true; - plugin.apList.updateSortedPortals(); - plugin.apList.updatePortalTable(plugin.apList.displaySide); -} - -window.plugin.apList.disableCache = function() { - plugin.apList.useCachedPortals = false; - plugin.apList.cachedPortals = {}; - plugin.apList.updateSortedPortals(); - plugin.apList.updatePortalTable(plugin.apList.displaySide); -} - -window.plugin.apList.selectPortal = function(guid) { - // Add error catching to avoid following link of portal if error - // occurred in renderPortalDetails or hooked plugin - try { - renderPortalDetails(guid); - } catch(e) { - console.error(e.message); - console.log(e.stack); - console.log('Skipping error in renderPortalDetails or hooked plugin') - } - plugin.apList.setPortalLocationIndicator(guid); -} - -window.plugin.apList.setPortalLocationIndicator = function(guid) { - var portal = window.portals[guid]; - if(!portal) return; - var startRadius = screen.availWidth / 2; - var portalRadius = portal.options.radius; - var latlng = portal.getLatLng(); - var property = { - radius: startRadius, - fill: false, - color: COLOR_SELECTED_PORTAL, - weight: 2, - opacity: 1, - portalRadius: portalRadius, - clickable: false }; - - if(plugin.apList.portalLocationIndicator) - map.removeLayer(plugin.apList.portalLocationIndicator); - if(plugin.apList.animTimeout) - clearTimeout(plugin.apList.animTimeout); - plugin.apList.portalLocationIndicator = L.circleMarker(latlng, property).addTo(map); - plugin.apList.animTimeout = setTimeout(plugin.apList.animPortalLocationIndicator,100); -} - -window.plugin.apList.animPortalLocationIndicator = function() { - var radius = plugin.apList.portalLocationIndicator.options.radius; - var portalRadius = plugin.apList.portalLocationIndicator.options.portalRadius - if(radius > portalRadius) { - var step = radius / 3; - if(radius < 80) step = step / 3; - var newRadius = plugin.apList.portalLocationIndicator.options.radius -= step; - plugin.apList.portalLocationIndicator.setRadius(newRadius); - if(plugin.apList.animTimeout) - clearTimeout(plugin.apList.animTimeout); - plugin.apList.animTimeout = setTimeout(plugin.apList.animPortalLocationIndicator,100); - } else { - map.removeLayer(plugin.apList.portalLocationIndicator); - } -} - -window.plugin.apList.changePage = function(step, toEnd) { - var side = plugin.apList.displaySide; - var oldPage = plugin.apList.currentPage[side]; - - if(toEnd) { - if(step < 0) plugin.apList.currentPage[side] = 1; - if(step > 0) plugin.apList.currentPage[side] = plugin.apList.totalPage[side] - } else { - plugin.apList.currentPage[side] += step; - if(plugin.apList.currentPage[side] < 1) - plugin.apList.currentPage[side] = 1; - if(plugin.apList.currentPage[side] > plugin.apList.totalPage[side]) - plugin.apList.currentPage[side] = plugin.apList.totalPage[side]; - } - - if(plugin.apList.currentPage[side] !== oldPage) - plugin.apList.updatePortalTable(side); -} - -window.plugin.apList.changeSorting = function(sortBy) { - var oldSortBy = plugin.apList.sortBy; - plugin.apList.sortBy = sortBy; - if(plugin.apList.sortBy !== oldSortBy) { - plugin.apList.updateSortedPortals(); - plugin.apList.updatePortalTable(plugin.apList.displaySide); - } -} - -window.plugin.apList.clearDestroyPortals = function() { - plugin.apList.destroyPortalsGuid = new Array(); - - plugin.apList.updateSortedPortals(); - plugin.apList.updatePortalTable(plugin.apList.displaySide); -} - -window.plugin.apList.destroyPortal = function(guid) { - // Add to destroyPortalsGuid if not yet added, remove if already added - var portalIndex = plugin.apList.destroyPortalIndex(guid); - if(portalIndex >= 0) { - plugin.apList.destroyPortalsGuid.splice(portalIndex, 1); - } else { - plugin.apList.destroyPortalsGuid.push(guid); - } - - plugin.apList.updateSortedPortals(); - plugin.apList.updatePortalTable(plugin.apList.displaySide); -} - -// Return the index of portal in destroyPortalsGuid -window.plugin.apList.destroyPortalIndex = function(guid) { - return $.inArray(guid, plugin.apList.destroyPortalsGuid); -} - -// Change display table to friendly portals -window.plugin.apList.displayFriendly = function() { - plugin.apList.changeDisplaySide(plugin.apList.SIDE_FRIENDLY); -} - -// Change display table to enemy portals -window.plugin.apList.displayEnemy = function() { - plugin.apList.changeDisplaySide(plugin.apList.SIDE_ENEMY); -} - -window.plugin.apList.changeDisplaySide = function(side) { - var isChange = (plugin.apList.displaySide !== side); - var scrollTo = 0; - if(isChange) { - plugin.apList.displaySide = side; - plugin.apList.updatePortalTable(side); - plugin.apList.toggleSideLabel(side); - scrollTo = $("#ap-list").position().top + $("#ap-list").outerHeight() - - $("#sidebar").height() + $("#sidebar").scrollTop(); - } - $('#sidebar').scrollTop(scrollTo); -} - -window.plugin.apList.toggleSideLabel = function(side) { - $.each(plugin.apList.sides, function(ind,key) { - var labelClass = plugin.apList.sideLabelClass[key]; - var opacity = (key === side) ? 1.0 : 0.5; - $(labelClass).css("opacity", opacity); - }); -} - -window.plugin.apList.hideReloadLabel = function() { - $('#ap-list-reload').hide(); -} - -window.plugin.apList.showReloadLabel = function() { - $('#ap-list-reload').show(); -} - -// SETUP ///////////////////////////////////////////////////////////////////////// - -window.plugin.apList.setupVar = function() { - plugin.apList.sides[plugin.apList.SIDE_FRIENDLY] = plugin.apList.SIDE_FRIENDLY; - plugin.apList.sides[plugin.apList.SIDE_ENEMY] = plugin.apList.SIDE_ENEMY; - plugin.apList.playerApGainFunc[plugin.apList.SIDE_FRIENDLY] - = plugin.apList.getDeployOrUpgradeApGain; - plugin.apList.playerApGainFunc[plugin.apList.SIDE_ENEMY] - = plugin.apList.getAttackApGain; - plugin.apList.sideLabelClass[plugin.apList.SIDE_FRIENDLY] - = "#ap-list-frd"; - plugin.apList.sideLabelClass[plugin.apList.SIDE_ENEMY] - = "#ap-list-eny"; - plugin.apList.sortedPortals[plugin.apList.SIDE_FRIENDLY] = new Array(); - plugin.apList.sortedPortals[plugin.apList.SIDE_ENEMY] = new Array(); -} - -window.plugin.apList.setupSorting = function() { - var optionELAsc = { - order: plugin.apList.SORT_ASC, - chain: ['effectiveLevel','effectiveLevel']}; - var optionAPDesc = { - order: plugin.apList.SORT_DESC, - chain: ['playerApGain','totalAp']}; - var optionGuidDesc = { - order: plugin.apList.SORT_DESC, - chain: ['guid']}; - - // order by EL -> AP -> guid - plugin.apList.sortOptions[plugin.apList.SORT_BY_EL] = [optionELAsc, optionAPDesc, optionGuidDesc]; - // order by AP -> EL -> guid - plugin.apList.sortOptions[plugin.apList.SORT_BY_AP] = [optionAPDesc, optionELAsc, optionGuidDesc]; -} - -// Setup table columns for header builder and row builder -window.plugin.apList.setupTableColumns = function() { - var enemyColumns = new Array(); - var friendlyColumns = new Array(); - - // AP and Eff. LV columns are same in enemy and friendly table - var apColumn = { - header: 'AP', - headerOnClick: 'plugin.apList.changeSorting(plugin.apList.SORT_BY_AP);', - headerTooltip: 'Click to sort by AP', - cssClass: 'ap-list-td-ap', - contentFunction: plugin.apList.getPortalApText - }; - var effectiveLevelColumn = { - header: 'EL', - headerOnClick: 'plugin.apList.changeSorting(plugin.apList.SORT_BY_EL);', - headerTooltip: 'Effective Level\nClick to sort by EL', - cssClass: 'ap-list-td-eff-lv', - contentFunction: plugin.apList.getPortalEffectiveLvText - }; - - // Columns: Checkbox | Portal | AP | Eff. LV - enemyColumns.push({ - headerFunction: plugin.apList.getHeaderCheckbox, - headerTooltip: 'Unselect all', - cssClass: 'ap-list-td-checkbox', - contentFunction: plugin.apList.getPortalDestroyCheckbox - }); - enemyColumns.push({ - header: 'Portal', - cssClass: 'ap-list-td-link ap-list-td-link-eny', - contentFunction: plugin.apList.getPortalLink - }); - enemyColumns.push(apColumn); - enemyColumns.push(effectiveLevelColumn); - - // Columns: Portal | AP | Eff. LV - friendlyColumns.push({ - header: 'Portal', - cssClass: 'ap-list-td-link ap-list-td-link-frd', - contentFunction: plugin.apList.getPortalLink - }); - friendlyColumns.push(apColumn); - friendlyColumns.push(effectiveLevelColumn); - - plugin.apList.tableColumns[plugin.apList.SIDE_ENEMY] = enemyColumns; - plugin.apList.tableColumns[plugin.apList.SIDE_FRIENDLY] = friendlyColumns; -} - -window.plugin.apList.setupCSS = function() { - $("