ROOOOOOK yumyumyum
*10/22追記 大幅リワークにより私の愛したROOKは死にました
ROOKガイド
巷では
- 身体がデカすぎて弾がよけられない
- 防御(回避)スキルがカウンターしかない
- 見た目がキモい
- うるさい
などの理由で使用率が低いrookなのですが、個人的には勝てるしスコアもいいし何より使ってると楽しくって視床下核を弄られたサルみたいになるので、整理がてらガイド書
スキル解説
LMB 身体と武器がデカいのでmeleeの中では屈指のレンジ rook使った後にfreyaやsiriusを使うとあまりの短小っぷりに困惑することになります
RMB ハンマーをドンッってするやつ チャージ1つごとに与ダメ+2 3スタ溜まっている場合Armor break: 被ダメ+20% を付与する
トドメをさせる、ルーン(真ん中の玉)を取れる場合以外にスタックが溜まっていない状態で使うことはないかなあ
SPACE 突進 距離でダメージ増加
ウメハラじゃなくても見てからカウンター余裕なので、直前に向きを変えたり、Cでキャンセルしてカウンターや移動スキルを吐かせる等の工夫が必要
Q めんどいしみればわかるからスキルの説明はいいか
1秒の無敵があるので、JadeやLvaのFが飛んできた時もなんとか逃げられる(こともある)
E メインウェポン つよい石 敵やルーンを吹っ飛ばしたり引き寄せたりでき、あらゆる場面で役に立つ
R 強スキル 積極的に使っていきましょう 範囲も広く吹っ飛ばし力もなかなかなので、壁に当てるのは簡単 これで固めた敵に石+突進決まればもう勝ちって感じする
F 強ultだが、他のゲージ使用スキルが優秀なので、撃つ機会はそんなにないかも
EXLMB 肉(魚)をたべます nomnom...合計40ヘルスもの回復量を誇る優秀スキル
あまり躊躇せずにリアルヘルス*1が減る前に肉食べましょう 使った後4秒おかないとreg効果は重複しないため無駄が出てしまうので注意
EXRMB 肉(これを書いている時点では、レジェスキンでも魚がrookの手を離れた瞬間肉に変わってしまう。残念。。)をブン投げる。レンジが長く弾速も速いので当てやすい。トドメかルーンをパクる時に使うくらいでスネア目的で撃つことはあんまりないんじゃねえか?上手い人は使ってるのか??
バトルライト
round1 個人的にはFrenzy一択 round2でもそうだけどカウンター確実に入れれる前提じゃないと考慮に入らないレベルのものが多いよね
round2 ほぼ毎回Crumble。 +4ダメ+Armor Breakはデカい。ヒール増やさないとすぐ死ぬだろ・・(カタカタという時はTendrizer行くこともある・・かも
round3 Crag。cooldownが3分の1減るのは強い。吹っ飛ばし+でルーンコントロールもしやすくなる。Armor Breakを入れやすい(敵全員meleeの場合とか)時はWeapon Breakを取る価値もある。
round4 Slayer。 3v3で味方にヒーラーが2人いる場合はrecuparate
round5 always take Earthquake
流れ
石投げてダメージ与えたりスキル使わせたりしてから突っ込んで殴って壁ドンして石投げて殴ればいいんじゃないですかね
ルーンは石を使って頑張ってとりましょう
てきにきたら嫌なキャラ
ばっこ ジャンプで避けるしカウンターしてくるし斧投げてくるしもう最悪 キャラデザも意味不明 無視して他の奴を殴りましょう
あしゅか 逃げれるスキルを多く持っているので、キャンセルを上手くつかってスキルを使わせないとしょうもない火の玉で延々火傷することになります。あとこいつのEはrookの突進より(なぜか)判定が強いので返り討ちにあいます
あとはブーメラン持った気狂いと砂時計おじさんが辛いですかね。上の2キャラ程じゃないですが
それ以外の奴は殴れば死にます
*1:このゲームにおけるヘルスの仕様は、リカバリーヘルスとリアルヘルスがあり40まではダメージを受けても回復できるが、それ以上溶けるとリアルヘルスが減る(回復不能のダメージを受ける)というもの
b.a.b.y.r.e.
64bitのexecutableで13文字のパスを訊くだけのプログラム
とりあえずradareでみてみたところCheckSolutionが本体っぽい
ということでみてみると
嗚嗚嗚嗚嗚嗚アアアアアアアアああああああああああああああああああああああああああああああああああああああああああああw
どうも入力されたcharacterをごちゃごちゃ変換してflagにしてるようだが
こんな感じのが延々と続いている
これを全て丁寧に解析するなんてのは*1
のでangrを使うと、
import angr
p = angr.Project("./re")
s = p.factory.blank_state(addr = 0x4028e0)
#checksokutionのaddr
re = s.se.BVS("re", 32*13)
#パスの長さである13文字分のsymbolic memoryをBSS(0x602e10~)に保存
s.memory.store(0x602e10, re)
s.regs.rdi = 0x602e10
#first argumentであるrdiにポイントさせる
pg = p.factory.path_group(s)
pg.explore(find=0x40294b, avoid=0x402941)
#findはprintfの先のたどり着きたい場所 avoidはパスが間違っていた際に飛ばされる場所
print "flag is: %r" % pg.found[0].state.se.any_str(re)
実行すると
となり、flag = Math is hard!
正直angrはよくわかってないし自分で書いた↑を見返してもBSSにBVSを置いた辺りで???ってなる・・
*1:☛(◜◔。◔◝)☚