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