見出し画像

腹が減る

Everquestには食料と飲料がある。たしか食料は切れるとHPが自然回復しなくなり、飲料は切れるとManaが回復しなくなるんじゃなかったかな。食料や飲み物はインベントリの若い順から自動的に消費されるような仕様になっている。この自動的に消費されるシステムは、Ultimaとかその手の古典的なRPGのシステムの踏襲だと思う。どの食料が消費されるかわかりにくかったため、Everquest2では食事スロットが設けられ、食べたい食事をセットするようになり、WoWでは食事は時間のかかる回復アイテムみたいな扱いになった。以降のMMORPGでは食料や飲料は上昇するステータスやバフの種類が違うだけのポーションや薬と同じ扱いになっていると思う。
話をEverquestに戻すとたいていのエミュレーションサーバでは、飢餓状態になったときに自然回復しない仕様は無効化されていて、飲み食いをしなくてもよいようにできている。ただ、食事にはステータスがついたものがあり、そのステータスは馬鹿にできない。インベントリの最も先頭にある食事のステータスがキャラクターにつくようになっている。

結構ステータスがあがる

普通だと、インベントリの先頭においておくので、勝手にそのステータスのついた食事が消費されていくことになるが、全く別の食料で腹を満たしておけば、ステータスのついた食事を消費することなくそのステータスの恩恵を受けることができる。

E4には、自動食事機能があり、やすい食料や飲料を自動的に飲み食いして腹を満たしておき、希少なステータス付き食料を消費しないようにする機能がある。ちなみに同様の機能はE3にもあるが、それは私がE3にコントリビュートしたものだ。当初はE3をよりよくしようと思っていた。
EQ mightでE4を使っている方から、どうもその機能が動いていないらしいと聞いた。自動消費は動いているものの、それでも勝手に先頭にある食料を食べているというものだ。

これが自動食事コードのメインコードである。なんかごちゃごちゃ書いてあるが、簡単に言えば、各キャラクターには、自分の空腹度と喉乾き度を示す隠しステータスがあり、それがある基準を下回ったら設定された食料を食べる(あるいは飲み物を飲む)というものになっている。空腹度は6000が満腹状態で、0が飢餓状態だ。
基本的に空腹度が0になったときに勝手にインベントリの先頭の食料を食べるものだと思っていたが、腹が減っていないのにもかかわらず食料が消費されているということは、もしかしたら0になる前に食べ物をつまんでしまうのではないかなと思った。早速検証してみよう。

ハラペコはとられていた

紹介しよう。今回の検証に使うハラヘリ氏である。

トゥメィトゥ

彼には、トマトがいっぱい入った袋をもってPoKで立ってもらい、袋に入っている食料をどのタイミングでつまみ食いしてしまうか、監視してみようと思う。

検証用マクロを制作

動かすマクロはこれ。5秒おきに現在の空腹度を報告し、うっかりつまみ食いをしてしまったらそれをアラートするようにするだけというものだ。これでどのタイミングで食事をとるのかわかると思う。

左から、時間、空腹度、トマトの残数

これをみるに、だいたい1分につき空腹度が32へっているようだ。オーガは食料消費が激しいというので、他の種族はこの減り方がもしかしたらゆるやかなのかもしれない。この調子でいくと、3時間くらいで空腹になるようだ。ちょっと放置してみよう。

2時間後(うるさかったので10秒一回報告にした)

なんと、空腹になる前につまみ食いをしているではないか。およそ3000を切ると我慢できなくなるらしい。今のE4のコードでは、空腹値の上限がふえるMetabolismのAAを取っている場合は4000を切ったら食事をしているが、デフォルトでは2000を切ったら食事をするようにしている。これでは自動食事が機能する前にシステムが勝手に食事をしてしまい、求める動作にならなくなってしまう。なるほど。問題がわかったので修正をしよう

修正後

とりあえず、AAがあろうがなかろうが、空腹値が4000を切ったら食事/飲みをするように変更した。これで正しく動くんじゃないかと思う。

ソフトは自分で使っているだけだと問題がわかりにくいことが多い。今回の場合、私はいつもキャラクターがAAがとれるレベルになるとまっさきにMetabolismをとっていたので気づかなかった。こうやって、バグ報告をしてもらえるとツールの品質があがってとてもいいと思う。そういう意味ではこのように不具合の報告をいただけるとすごく助かる。

オレサマオマエマルカジリ


この記事が気に入ったらサポートをしてみませんか?