2014年8月15日金曜日

Hackforplay 攻略方法の一例を挙げてみるよ! 

niconicoでも話題のhackforplay。面白そうだったので早速DLして攻略してみました。以下、完全なネタバレっていうか攻略法です。

 本ブログはniconicoのブロマガでも展開しています。そちらもよろしければ御覧ください(コメントなどはブロマガの方を推奨しております)

ダウンロードサイトへ→Hackforplay

 でも、このゲームのすごいところは攻略方法が無数にあること。幾つか、思いついた方法を挙げていってみるとしましょう。まずは、自分で攻略してから見ることをおすすめします。


 まずステージ1、「天地長久のブルースライム」 なんかSteins;gate感のするtitle……。

 これは公式紹介動画にも上がっていますが、一番簡単な攻略法はスライムのHPを1まで削ることでしょう。55行目をblueSlime.hp = 1;とします。
他にも、例えば73行目、stair.locate(2, 7);で指定されている階段の位置をスライムよりスタート地点寄りに移動させる、という手もありますし(これはステージ2のメイン攻略法でもある)、スライムを出現させる146行目 stage.addChild(blueSlime);をまるごと削除(あるいはコメントアウト→行の前に//を挿入)でもいいでしょう。特に最後のは、最強ですよ。敵がそもそも出てこないんだから。

 ステージ2「閉鎖空間のリロケーション」
 はい、とりあえず一番の攻略法、リロケーションしましょう。階段の位置を規定する175行か、プレイヤーの位置を規定する172行をどちらか変更すれば大丈夫です。その際、どちらを選んだにせよ、サファイアも取得する必要があるので、例えば
player.locate(6, 7);

var stair = new Stair(3); // 階段
stair.locate(5, 8);

var sapphire = new Jewel(65); // サファイア
sapphire.locate(5, 7);

のように並べておくと楽ですね。まあ、ぶっちゃけ全部重ねてもいいんですけど(ステージ4参照)。

 このステージのほかの攻略法……そうだ、207行から始まるmap.collisionData=で規定される、侵入不可領域(1と書かれている部分)を0にしてもいいですね。すると、壁の上に乗れることになるので。


 ステージ3「火炎吐息のトゥルーオアフォルス」

 ほぼ答えが書いてあるw まあ、一番簡単なのは259行目のdragon.fire = true; を =false; に置き換えることですよそりゃ。

 他には、2や1の別解で使った階段や少年の位置変更が答えとしてあるでしょう。あるいは、2の別解、map.collisionDataでの侵入不可領域の削除で、ドラゴンの後ろを回りこむというのもありでしょう。

 ただ、ここで一つ注意。ドラゴンの炎を falseにして消す一番簡単な方法には落とし穴があります。これはエンディングにて判明するのですが、このゲームのクリアは宝石を4つ集めることなのです。で、炎をfalseにすると、320行から324行までのifが働いて、少年(NPC)と収集対象のルビーが消えてしまいます。これでは、完全クリアができません。

ですので、ここで317行の前に追記します。(これによって行番号がずれますが、ずれる前の行番号で解説します。まあ、ずれても数行ですので、もし環境によって差異があった際は、書いた行の周囲でそれっぽいところを探して下さい。ちなみに、私はAdobe DreamWeaverを使用して攻略しました)

317 stage.addChild(ruby); ←追加
318 stage.addChild(map);  ←もともとあった

そして、ルビーの位置(267行)を取りやすいところに変えれば、OKですね。

 ステージ4「死屍累々のメイズ」
 
 oneterframeを扱うステージです。354 行 skulls[i].moveTo(128+i*10, 128+i*10);
 の削除で、逃げ切りましょう。

 また、それ以外にも、2の1の攻略のところで書きましたが、全部重ねる法。これは、階段の位置に、収集対象の今回はダイヤモンド、そして主人公を同じ座標で指定します。そうすると、一瞬で次のステージにダイヤモンドを回収した上で進みます。ドクロも涙目です。

 ちなみに、それ以外にドクロの攻撃力を0に設定するのもありかと思いましたが、これは当たり判定自体は生きている(実は、エクストラステージをいじれば使えるようになるんだけれど、この段階では)ので、ずーっと0のダメージを受け続け、拘束されてしまうので使えません。

 ステージ5 「因果応報のインヘリタンス」

 まず目に飛び込んでくるのはプレーヤーのhpとatkの項目。ここまで来た方ならこれは見つけられるはず。喜び勇んで変えてみるもダメ。コメントアウトのヒントにもありますが、強くなればなるほど敵もパワーアップするからです。では、どうすればいいか。

 敵のパラメータを規定しているエリアは442行以降です。448行などに、this.hpやthis.atkとありますね。これが敵さんのパラメータを規定しています。見ると、

 player.hp *2  player.atk *2……

体力二倍、攻撃力二倍。

 勝てるわけがない!  ってなわけで、*2を/2にしてあげると、逆にそれぞれ半分になるので、おkですね。

 もう一つあるとすれば、今までもやってきた階段をどうにかする方法。この場合、敵さんを無視して階段に入ることはできませんよね、敵さんを倒したら階段が出るんですから。

 ってなわけで、階段を作ってしまえばいいわけです。

 456行あたりに、以下を記述
var stair = new Stair(6); // 階段
stair.locate(4, 4);

このとき、別のステージから階段のところをコピペでいいんですが、気をつけて欲しいのはStarir(6)のところ。この6を例えば2にすると、ブルースライムのステージに戻るというどこかの「アトラ○チスの謎」みたいなゲームにもなりますね。

 で、もう一つ、500行あたりのstage.addChild(map);を見つけて、その下にでも
 stage.addChild(stair);を記述。これで、ど真ん中に階段が出現!!

ステージ6「機械演算のパラドックス」
 
 この攻略に沿ってきた方なら、少年に話しかけてスターを貰えば終わり。
 本来は、このステージの攻略はステージ3のルビー消滅問題なのです。もし、ここで躓いた方が見ていらっしゃったら、この攻略のステージ3をご参照下さい。

 はい、これですべての宝石を回収して、100%のエンディングが見られたことでしょう。

 最初に述べたように、このゲームには解答が無数にあります。ドイツの算数の問題みたいに。面白いやり方としては、TASのような感じに主人公自体をドクロと同じように自動で動かし、クリアに導くこともできるでしょう。ほかにも、階段宝石位置操作法(かっこいい)で、ゲーム開始直後にスターをくれる少年の前に飛んで、話しかけて階段に乗るとクリア、という最強なこともできますし、もっと大幅に改造すれば、宝石だって最初に全部所持していることにすることもできるし。

 また、エクストラステージとして細かい設定がソースコードの下の方に刻まれています。そこには、見た目の設定などもあるので、ブルースライムの冒険にすることもできれば、ステージ1でスライムの体力を1にせず、主人公の攻撃力を猛烈に高く設定する、という方法も取れます(この場合、悪しき心戦の調整が必要になるが)。

 このゲームを少しずつ作り変えて行くと、Javascriptの基本は理解できることでしょう。いわば、これは実践問題のドリル。しかも、RPGツクールのような楽しいドリル。

 ぜひ、みなさんも独自の攻略法を見つけてみてください!  (よろしければ、コメントで独自の解答をお書き下さい、投稿者名とともに追記させて頂きます。)
 

0 件のコメント:

コメントを投稿