■Personality bonuses
シムにはそれぞれ得意な能力があります。シムによって特定のスキルアップが、他のシムより早いということがあります。これはGlobal Functionを使うことで自動的に計算されます。
【1】
「Skill - Start」の前に、新しい行を追加します。
Opcodeは「Get in Temp 0 - Personality Skill Bonus(0x0193)」をglobalから選びます。
幾つかのシムの性格の特徴には、スキルにふさわしいものがあります。
このFunctionは、シムに特定のスキルボーナスを付ける計算をし、結果の値をTemp 0の中に放り込みます。
【2】
Interaction Wizardを開きます。
必要な設定は2つです。1つはボーナスを得る性格のタイプ。Literal 0x6(社交的)と設定します。
もう1つは、得られるボーナスをパーセントで設定します。Literal 0x02EEとします。
これらの設定は、職業報酬である「エグゼクパター」からとってきています。
職業報酬のオブジェクトは、スキルアップ用BHAVを作る時、とても参考になるものです。
【3】
性格によるボーナスだけでは、あまり有用とは言えません。
なのでInsert via trueを押して、すぐ下にさらに別の設定を加えます。
globalから「Get in Temp 0 - Skill Gain Speed(0x02D2)」を設定します。
これはTemp0にある値(先ほど設定しました)を性格によるボーナスとして考慮し、シムに付与されているスキルアップブースト(願望報酬のヘルメット等)を加えて、シムのスキルポイント習得速度を計算するものです。
最初の設定は、基本となる習得速度(ボーナスなどがない場合)を入力します。この設定値も、既存のオブジェクトを参考にします。エグゼクパターは、0xFAを使っているので、それを入力。
二つ目の設定が、性格ボーナスに関するものです。ボーナスに関してはすでにTemp0に収めたので、これを使います。なのでTemp 0x0000と設定。
設定を受けて、「Get in Temp 0 - Skill Gain Speed」がTemp 0の値を上書きします。これで構いません。先にTemp 0に入れていた値はもう使って計算したので、必要ないからです。
【4】
さて、これでシムのスキル習得速度を正しく計算できるようになりました。
「Skill - Start」でこの値を使いましょう。
すでに設定してあると思いますが、「Skill - Start」のInteraction Wizardを開けます。
Speed Mod.の項目を、Temp 0x0000に変更します。
習得速度にLiteral値を使うかわりに、Temp 0に格納されている値を使うようになります。
【5】
こんな感じになりました。
早速これまでの設定を、ゲームに入れて確かめてみます。
【6】
比較の為に、社交的なおじいさんと、内気なお兄さんにオブジェクトを使用してもらい、1レベルアップまでの時間を計りました。
上図はおじいさんがレベルアップした瞬間の、お兄さんのスキルアップメータのたまり具合を示しています。まだ半分も溜まってませんね。
1レベルアップまでにかかった時間は、シム時間でおじいさんは11分、お兄さんは53分でした。
歴然の差です。
【7】
おじいさんにはさらにその後も、スキルアップを続けてもらいました。
気分が悪くなったら自発的にやめてくれるかどうかの確認です。
便意がここまで下がった時、おじいさんはトイレの噴出しを出して自発的にオブジェクトを使うのをやめました。
気分メーターはそんなに下がっているようには見えないのですが、漏れそうで切羽詰った気持ちは分かります。
もう一度オブジェクトを使わせようと指示すると、トイレの吹き出しを出してその場を動こうとしませんでした。
てっきり「今は気分じゃありません。後にしてください!」のダイアログが出るのかな、と思ったんですけど、違ったみたいですね。
※おじいさんの行動について、この記事のコメント欄で教えていただきました。ありがとうございます!
記事末尾にて説明を書き加えています。(05/25追記)
以上から、これまでの設定はうまくいったようです。
ループから抜けて行動を終了するのも、正常に行きました。
■Managing motive
スキルポイント習得の時と比較して、欲求を操作するのはとても簡単です。
Primitiveには、欲求の操作を自動的かつスムーズに行ってくれるものがあります。
まずは欲求操作を、BHAV内のどこでスタートさせるか決めましょう。少なくとも、Standard Entryよりは後にしないといけません。しかし無駄な処理を省くためにも、スキル習得が始まった後が最適です。なぜならもしシムがオブジェクトを使うのを拒否した場合、欲求操作のコードを使う必要はなくなりますから。
【8】
まず最初にすべきは、シムが今やっていること以外での欲求変化の影響を受けないようにしないといけません。
そのため、オブジェクトを使おうとしているシムの全ての欲求変化をデフォルトに戻します。
「Set Motive Change」というPrimativeを使います。
これにはまだInteraction Wizardはないので、直接Operandsを入力していかないといけません。
「Skill Start」の次に新しい行を加えます。
そして、primitiveから「Set Motive Change(Opcode : 0x001D)」を選びます。
【8】
Operandsはこんな風に入力します。
これで欲求変化がリセットされます。
【9】
リセットできた所で、改めて欲求操作に入っていきましょう。
Insert via trueを押して、すぐ下に新しい行を加えます。
アニメーションのループに入らないことに注意して下さい。
同じくOpcodeには「Set Motive Change」を設定。
Operandsはこんな風に設定します。
上段の左端から設定を説明していきます(英文が理解できているのか、今ひとつ謎ですが…)。
最初の2つの箱には0x07が入っています。スキル増加の速度と、欲求の上昇速度が達する最大値を、Literalで表しています。
3番めの箱には、どの欲求にブーストをかけるのかを決めます。0x0Eは「社交」を指します。
4番目は00のままにしておきます。ここはflagに関する設定ですが、今回の場合は必要ありません。
5、6番目は、スキルポイントを得る速度を、1時間当たりで表しています。(Skillと書いてあるんですが、単位時間当たりに回復する欲求値の気もします。ミスタイプ? ちょっと分かりません)
ちなみにこの2つの箱は、合わせて0x0020と読みます。数値を逆に読み取っているので、気をつけてください。
(例えば、5番目に0x23、6番目に0x01と入力されていたなら、設定値は0x0123と読みます)
7、8番目は、欲求が到達する最高値を指示します。シムが長時間オブジェクトを使用していると、欲求値がMax値を超える場合もあります。なのでここの設定は0x0064とします。これは十進法で100を表します。シムの欲求の幅は、-100から100でしたからね。
ここの設定も、数字を逆に読むので気をつけてください。7番目には0x00、8番目には0x64を入れます。
シムが「Standard Exit」に達すると、欲求変化も終了します。
もしBHAV内の任意の場所で欲求変化を終わらせたい場合は、もう一度「Set Motive Change」を使って欲求変化をリセットしてください。
これで作業は完了です。
最後にechoさんのお手本オブジェクトを開いて、BHAVが全て正しいかどうか確認します。
【10】
動作を確かめてみました。
じわじわ社交が上がっているのが分かります。
ようやく自作Hack Objectの完成です!
無題
Re:無題
ありがとうございます
Re:ありがとうございます
無題
Re:無題
無題
Re:無題
無題
Re:無題
この記事にトラックバックする