Wizardry マーフィーズゴースト狩りを夢のRPAで

Wizardry: Proving Grounds of the Mad Overload ( Steam / Windows 版) といえば、マーフィーズゴースト狩り。

正直、初代Wizは、B1でレベル5くらいにあげたら、ひたすらマーフィーズゴーストで経験値稼ぎをし、B4のモンスター・アロケーション・センターを突破し、B9~B10を攻略するだけのゲームといえます。

B1のマーフィーズゴースト狩りをしているときは、プレイヤーは全く同じキー入力を何度も繰り返していると思います。

そんなときこそ、RPA ( Microsoft Power Automate ) の出番です。人間が、同じ入力を何度もやってはいけません。

RPAは楽しいですよ。「こうすれば、こうなるんじゃないか?」と思って、ちゃんとそうなったときの喜びがあるので、やめられません。

RPAで経験値稼ぎを自動化するフロー

まず、部屋を調べてマーフィーズゴーストが出現し、自分のパーティの1人目コマンド受付状態になったら、以下のフローを実行します。

Steam ゲーム本体のウィンドウを、「ウィンドウにフォーカスする」で掴もうとするとうまくいかないので、応用として、Win+Tabのウィンドウ選択機能でWizのウィンドウを掴みます。

このとき、ウィンドウの整列をするとダメです。事前にWin+Tabをして、→キーを何回押せばいいか、確認しましょう。

最初のループは、仮に21回としていますが、HPが持つ程度にしておきます。これは、最高21回、マーフィーズゴーストを倒せます。

2回目のループは、5回としていますが、ほとんどの場合、レベル7・前衛ファイター3人では、5ターン以内で倒せるからです。

実際にやってみて、このターン数を掴みます。HPとMPがぎりぎりになるまでは、冒険者の宿に泊まらないようにして、パーティの強さを固定することが必要です。

3つ目のループは、6回としています。これは、パーティが6人の場合です。Wait は 0.1 でもいいですね。

次のWaitが15秒なのは、1ターンがほぼ15秒に収まるからです。

5ターン後のSpaceで、再度マーフィーズゴーストを出現させます。その後13秒待つのは、先制攻撃を食らった場合の時間を見込んでいるからです。

このフローを走らせたら、ごはん食べたりお風呂に入ったりしているだけで、レベルがアップしています。数値はご自身の戦力に合わせて調整していただければと思います。

アクションを全選択してコピー&ペーストで、テキスト化できる

Power Automate は、自分の作ったRPAフローを、他の人にも使ってもらいたい場合、アクションを複数選択して、Ctrl+C→テキストエディタにCtrl+Vすると、次のようなコードが得られます。

画像認識をしているとダメですけど、キーボード操作のみのRPAなら、他のPCのPower Automateに簡単に移設できるようになります。

下のテキストをコピーして、フロー画面でCtrl+Vするだけで、さきほどのフローを他のPCに再現することができます。

# 戦闘画面が開いてコマンド受付を開始したら
MouseAndKeyboard.PressReleaseKey.PressKey Control: False Alt: False Shift: False Win: True
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Tab}''' DelayBetweenKeystrokes: 5 SendTextAsHardwareKeys: False
MouseAndKeyboard.PressReleaseKey.ReleaseKey Control: False Alt: False Shift: False Win: True
WAIT 1
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Right}''' DelayBetweenKeystrokes: 5 SendTextAsHardwareKeys: False
MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Return}''' DelayBetweenKeystrokes: 0 SendTextAsHardwareKeys: False
WAIT 1
LOOP LoopIndex FROM 0 TO 20 STEP 1
    LOOP LoopIndex FROM 0 TO 4 STEP 1
        LOOP LoopIndex FROM 0 TO 5 STEP 1
            MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Return}''' DelayBetweenKeystrokes: 0 SendTextAsHardwareKeys: False
            WAIT 0.1
        END
        MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Return}''' DelayBetweenKeystrokes: 0 SendTextAsHardwareKeys: False
        WAIT 15
    END
    MouseAndKeyboard.SendKeys.FocusAndSendKeys TextToSend: $'''{Space}''' DelayBetweenKeystrokes: 0 SendTextAsHardwareKeys: False
    WAIT 13
END