Hackforplay 攻略してみたよ(2014/08/17更新)
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

Hackforplay 攻略してみたよ(2014/08/17更新)

2014-08-15 02:27
  • 4
niconicoでも話題のhackforplay。面白そうだったので早速DLして攻略してみました。以下、完全なネタバレっていうか攻略法です。
 bloggerでも同内容の記事を展開しています。コメントなどは当ブロマガの方への書き込みを推奨しております。
ダウンロードサイトへ→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をご参照下さい。

----2014/08/17追記 NANA氏 さんの攻略方法----- コメントありがとうございます!

583行目付近を下記のように書き換えて、どっちの会話でもstarをもらえるようにしました。
case 4: var star = new Jewel(30); star.pickup();
case 5: this.message.close();

---------------------------------------------------------------------------------------------

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

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

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

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

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


  

広告
×
秀逸な攻略記事、ありがとうございます!!
ストレートな攻略方法だけでなく、より面白い攻略方法、そして機械演算のパラドックス(宝石コンプリート)まで丁寧にまとめて頂き、助かりました!
39ヶ月前
×
自分のやり方が力技っぽくてこれでいいのかなーと思いながら回答を探してこちらにたどり着きました。いろんな方法のわかりやすい解説をありがとうございます!
私はステージ6は583行目付近を下記のように書き換えて、どっちの会話でもstarをもらえるようにしました。
case 4: var star = new Jewel(30); star.pickup();
case 5: this.message.close();
ところで、354行目付近のskulls[i].moveTo(128+i*10, 128+i*10);をコメントアウトしなかった場合、448・449行目付近をthis.hp = player.hp * 0;、this.atk = player.atk * 0;とした場合、ステージ5で主人公が最初少し動けなくなったのですが、この現象の理由が分かりません。(354行目付近のskulls[i].moveTo(128+i*10, 128+i*10);をコメントアウトすると、448・449行目を* 0にしても主人公が動けなくなる現象は出ませんでした。)
もしよければなぜこの現象が起きるのか解説していただけると嬉しいです。
39ヶ月前
×
>>3
コメントありがとうございます!申し訳ない、今パッとはご質問の答えを思いつかない!!><
実際やってみて考えてみます!
39ヶ月前
×
>>∫ignussさん
コメント読んでくださってありがとうございます!
身近にプログラミングについて聞ける仲間がいないのでつい質問してしましましたが、ご負担になるようでしたらスルーしてください><
39ヶ月前
コメントを書く
コメントをするには、
ログインして下さい。