GW2 Dungeon/Temple Checker new

メガサーバー システムの導入により API に変更が加わります。
このチェッカーはすでに機能しないためスクリプトを無効にしました。
(記事の末尾に生スクリプトとして置いてあります)

ギルドウォーズ2のダンジョンと神殿の一部について、現在 解放されているワールドを表示します。

公式 API を使用してダイナミック イベントの進行状況を取得して判断しています。
判断基準は独自調査のため、不正確な可能性があることをご了承ください。

このページにない神殿については、以下のサイトでチェックできます。

続き「ギルドウォーズ2 ダンジョン/神殿 チェッカー

Currently Open

  NA EU
CoF
Citadel of Flame
CoE
Crucible of Eternity
Arah
The Ruined City of Arah
Grenth
Temple of Grenth
Balthazar
Temple of Balthazar

備考

  • グレンス神殿が解放されていると、カルマ商人からソルジャー(パワー タフネス バイタリティ)の Exotic トリンケットを購入できます。他の神殿で購入できるトリンケットは Dulfy さんを参照。
  • バルタザール神殿が解放されていると、カルマ商人からオブシディアン シャード(Obsidian Shard)を購入できます。これはレジェンダリ装備を作成するために必要で、カルマで交換できるのは通常ここだけです。

こじょの所見と妄想

これ大変でした... ダイナミック イベント API が返す state から、解放状況を判断する部分。

例えば CoE。普通に考えると、イベント チェインの最初である「Slay cave trolls to stop their attacks on Gallant's Folly」が Active なら、それ以外の関連イベントは Inactive になって欲しいじゃないですかー それなら最後のイベントの state だけ調べればよいのでー でも実際は、前回の結果がそのまま残っています。すべての関連イベントが Success であることを確認しないと、オープンしているということが判断できないのです。
かといって、Arah なんかは途中のイベントが Fail してても最終的にはオープンしたり、場所によっては防衛イベントがあったり。本当に複雑です。

これはGW2のダイナミック イベント システムが柔軟であることの裏返しなのですが、アプリをつくる側は涙目(つД`)

ここに書いても仕方ないですが、CoF の最後イベント「Hold the Gates of Flame against waves of Flame Legion」は、成功しても Success にならず、Warmup になります。これはバグですね。

冒頭でご紹介している 2サイトは、「今からダンジョンいくぜ、開いてるのどこだー!?」てときに若干、見難いかなと思ったので自分でつくってみました。だいぶ満足しています!^^

バグ報告歓迎です!
「Escort Razen the Raider to the Gates of Flame」イベントが進行中で閉じているのに開いていると表示される 等、関連するイベント名を教えていただけると大変ありがたいです。

$.getJSON('https://api.guildwars2.com/v1/world_names.json', function(data){
	var world_names = [];
	$.each(data, function(){
		world_names['w' + this.id] = this.name;
	});

	// Citadel of Flame
	$.getJSON('https://api.guildwars2.com/v1/events.json?map_id=22', function(data){
		var flag = [];
		for (var wid in world_names){ flag[wid] = true; }
		$.each(data.events, function(){
			switch ( this.event_id ){
			// Escort Razen the Raider to the Gates of Flame
			case '6A8374CF-9999-43E9-B1C7-BAB1541F2426':
				if ( this.state != 'Success' ) { flag['w' + this.world_id] = false; }
				break;
			// Hold the Gates of Flame against waves of Flame Legion
			case 'A1182080-2599-4ACC-918E-A3275610602B':
				if ( this.state != 'Warmup' ) { flag['w' + this.world_id] = false; }
				break;
			}
		});
		for (var wid in flag){
			if ( flag[wid] ) {
				var wname = $('
').append(world_names[wid]); if ( wid.charAt(1) == '1' ) { $('#gw2-na-cof').append(wname); } else { $('#gw2-eu-cof').append(wname); } } } }); // Crucible of Eternity $.getJSON('https://api.guildwars2.com/v1/events.json?map_id=39', function(data){ var flag = []; for (var wid in world_names){ flag[wid] = true; } $.each(data.events, function(){ switch ( this.event_id ){ // Slay cave trolls to stop their attacks on Gallant's Folly case 'C4860CEF-F801-4F6E-BAD5-183A9ECC16BE': // Break into Infinity Coil case '08051AA6-F3E7-4B2A-91C2-4AC07AB8F1FF': // Capture the Destroyer Lab case '7B4EF74F-87CC-4978-9E05-82822F03BD33': // Capture the Zhaitan research Lab case '63E32CC1-F83B-4AA6-8EE6-D429F2673548': // Shut down the Crystal Research Lab case '1F207830-E56C-4639-B375-065828B74249': // Capture the Infinity Coil case 'ED8ADFBF-6D6A-4B98-BD49-741D39A04871': if ( this.state != 'Success' ) { flag['w' + this.world_id] = false; } break; } }); for (var wid in flag){ if ( flag[wid] ) { var wname = $('
').append(world_names[wid]); if ( wid.charAt(1) == '1' ) { $('#gw2-na-coe').append(wname); } else { $('#gw2-eu-coe').append(wname); } } } }); // Temple of Grenth $.getJSON('https://api.guildwars2.com/v1/events.json?map_id=62', function(data){ var tog = []; var arah = []; for (var wid in world_names){ tog[wid] = true; arah[wid] = true; } $.each(data.events, function(){ switch ( this.event_id ){ // Protect Tactician Footi as she sets up her cannon case 'B41C90F8-AF33-400E-9AD3-3DB0AFCEDC6C': // See Keeper Jonez Deadrun safely to Death's Gaze Torch case '4B612C93-3700-43B8-B3C1-CBC64FEC0566': // Secure Death's Gaze Torch while Explorer Ambrose completes his ritual case '1D1BE3D6-2F0D-4D1C-8233-812AAF261CFF': // Ensure that Keeper Jonez Deadrun reaches the Cathedral of Silence case 'C8139970-BE46-419B-B026-485A14002D44': // Protect Keeper Jonez Deadrun and destroy the Champion Risen Priest of Grenth case 'E16113B1-CE68-45BB-9C24-91523A663BCB': // Cover Keeper Jonez Deadrun as he performs the cleansing ritual case '99254BA6-F5AE-4B07-91F1-61A9E7C51A51': if ( this.state != 'Success' ) { tog['w' + this.world_id] = false; } break; // Stop the Risen Priest of Grenth from retaking the Cathedral of Silence case '57A8E394-092D-4877-90A5-C238E882C320': if ( this.state == 'Fail' ) { tog['w' + this.world_id] = false; } break; // Defend the Pact lightning cannon // case '27E2F73C-E26B-4046-AC06-72C442D9B2B7': // The Ruined City of Arah // Get Warmaster Chan to Shank Anchorage before the troops' morale breaks case 'D7246CA2-DD85-42B3-A8D3-D2A1FE464ECF': if ( this.state != 'Success' ) { arah['w' + this.world_id] = false; } break; // Hold the Pact position at Shank Anchorage against Risen attack case '5761F5A5-48D2-484B-BE21-22096E84E845': // Collect scrap metal to help Ballistician Dexa build her siege weapon case '9DA0E1E8-1A44-4A3C-9FCC-257350978CE9': // Help Crusader Angaria signal reinforcements for the assault on Arah case '6B5C8659-F3AF-4DFC-A6F5-CD6620E3BE11': // Escort Scholar Didi to the signal flare site to summon her golem prototype for the assault on Arah case '7EA1BE90-C3CB-4598-A2DD-D56764785F7D': if ( this.state == 'Active' ) { arah['w' + this.world_id] = false; } break; // Help the Pact seize the steps of the Promenade of the Gods case 'E87A021D-4E7C-4A50-BEDB-6F5A54C90A9A': // Help the Pact capture the hall of the Promenade of the Gods case 'B1B94EFD-4F67-4716-97C2-880CD16F1297': // Defeat the Risen High Wizard and secure the Promenade of the Gods case '02DECBE6-A0BA-47CC-9256-A6D59881D92A': if ( this.state != 'Success' ) { arah['w' + this.world_id] = false; } break; // Ensure that the Pact holds the Gates of Arah case 'DFBFF5FE-5AF0-4B65-9199-B7CACC945ABD': if ( this.state == 'Fail' ) { arah['w' + this.world_id] = false; } break; } }); for (var wid in tog){ if ( tog[wid] ) { var wname = $('
').append(world_names[wid]); if ( wid.charAt(1) == '1' ) { $('#gw2-na-tog').append(wname); } else { $('#gw2-eu-tog').append(wname); } } } for (var wid in arah){ if ( arah[wid] ) { var wname = $('
').append(world_names[wid]); if ( wid.charAt(1) == '1' ) { $('#gw2-na-arah').append(wname); } else { $('#gw2-eu-arah').append(wname); } } } }); // Temple of Balthazar $.getJSON('https://api.guildwars2.com/v1/events.json?map_id=51', function(data){ var flag = []; for (var wid in world_names){ flag[wid] = true; } $.each(data.events, function(){ // Defeat the Risen Priest of Balthazar before it can summon a horde of Risen if ( this.event_id == '2555EFCB-2927-4589-AB61-1957D9CC70C8' ) { if ( this.state != 'Success' ) { flag['w' + this.world_id] = false; } } // Help the Pact hold the Altar of Betrayal from the Risen else if ( this.event_id == '589B1C41-DD96-4AEE-8A3A-4CC607805B05' ) { if ( this.state == 'Fail' ) { flag['w' + this.world_id] = false; } } }); for (var wid in flag){ if ( flag[wid] ) { var wname = $('
').append(world_names[wid]); if ( wid.charAt(1) == '1' ) { $('#gw2-na-tob').append(wname); } else { $('#gw2-eu-tob').append(wname); } } } }); });
この記事をツイツイする tweetSearch

Commentあなたのコメントをぜひ書き残してください!

Selerdia@セレア
おおー。お疲れ様です(;´▽`A``

素晴らしいですね。の一言です。ただただ感服です。

バグがあるならレポートするのもできるのがSEさんの腕の見せ所ですね(;´▽`A``
2013/07/07 Sun 16:07
ななしさん
2013/07/19 Fri 21:28
こじょ
セレアさん、ななしさん、コメントありがとうございます!
我ながらシンプルで見やすいと思ってますw
gw2stuff 便利ですよねー いつも使ってます。
2013/08/10 Sat 13:28 [編集]
新しいコメント

※設定しておくとあとからコメントを編集できます
管理者にだけ表示を許可する
※公開されません

Trackback あなたのウェブページをリンク!

Trackback URL

© こじょらぼ all rights reserved.

旧 すぐへこたれるこじょblog

Guild Wars 2 © 2010-2014 ArenaNet, LLC. and NC Interactive, LLC. All rights reserved. Guild Wars, Guild Wars 2, ArenaNet, NCSOFT, the Interlocking NC Logo, and all associated logos and designs are trademarks or registered trademarks of NCSOFT Corporation. All other trademarks are the property of their respective owners.

Back to Top