2014年08月18日

(SimPeople)支給した食事を食べられる人数を増やそう

「食事を支給する」でみんなの分の食事を支給できますが、デフォルトだと6人まで、ハックオブだと8人用がスタンダードです。

でも我が家は大家族、それだけでは足りません。客が来て食べちゃう事も多々ありますし。
そこで支給される食事の量(何人前なのか)を増やしましょう。

今回はデフォルトの食事を置き換えるので、トラモグでクローンはしません。クローンしたものを書き換えても、冷蔵庫から出てくるのは元の(書き換えていない)食事なので。
※ 多人数専用の冷蔵庫を作るのなら、冷蔵庫と食事を両方クローンし、クローンした食事を修正&クローン冷蔵庫からクローン食事が出るように修正しなければなりません。

食事のファイルはObjects.farに入っているので、展開して中にある"Food.iff"を開きます。

manyfood1.jpg
BHAV→#4101:"init regular group meal" が支給する食事の初期化部分です。
"group meal"っていうのが支給した食事の英語名なんですね…パッと見てピンと来ない、こんな所にも言葉の壁が。

manyfood2.jpg
ここにある、"My Attribute 2 Assign To: 6" が何人前か、となっています。早速書き換えて起動してみます。
※ ちなみにどうやって見つけたかと言うと、「なんとなくコレっぽかった」というのが真相ですw
※ 「たぶんどっかで初期化してるだろ」「ここにそれっぽい名前と数字がある」「取りあえず書き換えて試してみよう」という感じ。解析とかの時は取りあえず何でも試すのが私のジャスティス。

manyfood3.jpg
一応食事の量は増えているようですが、皿のはずがピザの箱になってしまいました。量が減ってくると皿に戻るので、どうやら皿いっぱいのグラフィックを通り越して、別の絵が出ているようです。

manyfood4.jpg
そこでどこで食事の絵を決めているかを探します。名前から推測したりプログラムの流れを追ったりで、#4206:"graphic state - group meal" にたどり着きました。

manyfood5.jpg
ここではGUIDによって場合分けしています。どのGUIDが何なのか調べるには、Trial&Errorさんの公開しているGUID List が便利です。自分で調べるには、"Sims Object ID" をダウンロードしてリストを作っておくといいでしょう。ただし、"Sims Object ID" で出てくるGUIDは、2桁ずつ逆順になっているので注意が必要です。

調べると、上から順にチョコレート、フルーツケーキ、ピザになってました。食事はどれにも当てはまらないので、取りあえず15行目(iffPencil2でReWrite後の行番号)まで飛ぶようです。

manyfood6.jpg
そこから見ていくと、21行目で食事の残量を Temporary Storage0 にコピーしています。これに食事の種類に応じた数字を足した番号が、表示されるグラフィックの番号のようです。
元々の食事は6人前までですから、それを増やしたことで別の食事のグラフィックが出てしまったようです。
なので、食事の残量(Attribute2)が6を超えていたら、代わりに6を入れるようにすればいいはずです。
※ この改造だと、残量が6人前を切るまでは満タンのグラフィックになります。気になるなら自分で頑張ってくださいw

manyfood7.jpg
適当に行を追加して6以上かチェック、代わりに6を入れるように修正して起動します。今度は無事動作しました。

ハックオブ(食事の種類を追加しているもの)でも、foodを追加している.iffを同様の方法で修正することで量を増やせますが、大抵8人前が出てくるので、後半部分のグラフィック修正はすでに行われていることが多いです。
この場合、BHAV→#4101:"init regular group meal" 内の数字を増やすだけで量を増やせますので、デフォルトの食事を増やすより楽にできます。