本稿は、Winter MODの作成過程を記録したものです。
今回は、飲食するアイテムに"温かい/冷たい"状態を実装していきます。
今回実装する項目
今回実装するのは、以下のアイデアです。
・生肉は一定時間で凍った肉になり、腐りにくくなる
・焼いた肉などが一定時間で冷めた焼肉に変化してしまう
・tannin teaや焼肉など、温かい飲食物に体温を上げる効果を追加する
さらに、焼いた肉と飲み物2種だけでは寂しいので、
・冷めたtannin teaの再加熱、colaとwhiskeyを温めるレシピを追加する
・condensed soupの調理レシピを追加する
の2つも実装してしまいます。
生肉系アイテムの凍結
今回は、以下の作業を行います。
・凍った肉(4種類)を追加する
・凍った肉を生成するtreasuretableを追加する
・元の生肉のvDegradeTreasureIDsに、↑で作成したtreasuretableを指定
凍結のプロセスに関しては、前回の"水源の凍結"同様vDegradeTreasureIDsを利用します。
<column name="strDesc">small chunk of meat (frozen)</column>凍った肉はfDegradePerHourを小さくして腐りにくくしました。
(略)
<column name="fDegradePerHour">0.025</column>
<column name="fEquipDegradePerHour">0</column>
<column name="fDegradePerUse">1</column>
<column name="vDegradeTreasureIDs">0:54,0:3</column>
(略)
水源の場合は、クラフトで解凍し、時間で再凍結する1対1の関係でしたが、
今回は生肉→凍結した肉→腐った肉、という一方通行の関係にしています。
生肉がdegradeする先を凍結肉に、凍結肉がdegradeすると腐った肉になるわけです。
凍った肉を実装したら、vDegradeTreasureIDsに指定するtreasuretableを作成します。
<table name="treasuretable">tableの中身は、単純にfrozen meatを1つ生成するだけのものです。
<column name="id">921</column>
<column name="strName">frozen small meat</column>
<column name="aTreasures">204.0x1x1-1</column>
<column name="bNested">0</column>
<column name="bSuppress">0</column>
<column name="bIdentify">0</column>
</table>
tableが用意できたら、0フォルダ側にitemtypes.xmlを用意し、
生肉のvDegradeTreasureIDsで指定します。
<column name="strDesc">small chunk of meat (raw)</column>当然、肉にはsmall/mediumの2サイズ、animal/humanの2種類があります。
(略)
<column name="fDegradePerHour">0.5</column>
<column name="fEquipDegradePerHour">0</column>
<column name="vDegradeTreasureIDs">WinterMod:921,3</column>
<column name="aEquipConditions"></column>
(略)
以降の工程も含めて、ちゃんと4セット分の作業をしておきましょう。
また、生肉、凍結肉ともに調理可能にして、
凍結肉は調理に時間が掛かるように(次項で)設定します。
調理したアイテムを"温かい"ものに
今回は、調理するアイテムとして
・焼いた生肉x4種
・蒸留した水(1-3個)
・tannin tea
・tannin teaの再加熱
・加熱したcola
・加熱したwhiskey
・調理したcondensed soup
のレシピを変更・実装します。
それに従い、以下の作業を行います。
・各種"温かい状態"のアイテムを追加する
・↑のアイテムを生成するtreasuretableを作成
・tannin tea、cola、whiskey、condensed soupをレシピで使用するためのitemprop設定
・一連のレシピを追加
・既存の調理レシピの生成物を"温かい状態"のものに変更
・温かい飲食物がdegradeすると、既存のアイテムを生成するようにする
作業の大半は、前項のものとあまり変わりませんが、
バニラのtannin tea、cola、whiskey、condensed soupの設定を一部変更します。
これらはクラフト素材として特定できるプロパティがないため、
それぞれitempropで設定し、vPropertiesに追加してやります。
<table name="itemprops">こちらのdegradeの流れは、
<column name="nID">903</column>
<column name="strPropertyName">tannin tea</column>
</table>
<table name="itemprops">
<column name="nID">904</column>
<column name="strPropertyName">cola</column>
</table>
<table name="itemprops">
<column name="nID">905</column>
<column name="strPropertyName">whiskey</column>
</table>
素材→(クラフト)→温かい飲食物→通常の飲食物といった感じになります。
温かい飲食物を使用したときのconditionを追加する
もちろん、温かい飲食物を摂取した時の効果も実装する必要があります。
実装する効果は、"温かい食べ物""温かい飲み物"を摂取した時のconditionです。
これらを本来の飲食効果と別に付与し、時間経過で除去されるようにします。
<table name="conditions">効果は単純に、体温を少し上昇させるだけのものです。
<column name="id">1001</column>
<column name="strName">Ate a hot meal</column>
<column name="strDesc"><us> ate a hot meal.</column>
<column name="aFieldNames">fCoreTemp</column>
<column name="aModifiers">2</column>
(略)
<column name="fDuration">2</column>
(略)
2ターンで消失しますが、生産コスト自体は低いので維持することも難しくはありません。
"温かい飲み物を飲んだ"conditionも、同様に作成してあります。
実装項目の動作確認
では、今回分の実装項目を確認していきます。
調達が面倒なので、treasuretableを弄って生肉4種類を入手しました。
生肉のConditionは1ターンあたり50%減少し、最大で2ターン経過すると凍結します。
凍結した肉も、生肉と同じように調理でき、"温かい" cooked meatになります。
温かい食事を摂ることによって、体温を上げるconditionが付加されます。
飲み物系4種+condensed soupの調理レシピもちゃんと"温かい"ものを生成しています。
これらも時間でConditionが減少し、通常のアイテム(スープは新規ですが)に戻ります。
飲み物系は"温かい飲み物を飲んだ"condition、
スープは肉と同じく"温かい食べ物を食べた"conditionが付加されます。
今回のまとめ
今回は、体温調節に便利な調理レシピをいくつか実装しました。
あくまで寒さをしのぐことが目的なので、あまり複雑なレシピは実装していません。
温めて、かつ時間で冷める、という仕様のため、
やはり素材とレシピが1:1の関係になってしまっています。
レシピがシンプルなのでまだ問題はありませんが、
例えば本格的な料理を実装したい場合は
水+にんじん+じゃがいも+…というレシピではなく、
水+野菜+野菜+…と言った感じに汎用化してやることが重要です。
(もちろん全種の組み合わせでレシピを作成しても構いませんが)
MODで追加したレシピに汎用性がない場合、必要な素材が集まらず作成できないため
使えないレシピとして顧みられなくなる可能性もあります。
素材全てを抱えて歩く苦労も鑑みて、レシピはなるべくシンプルにし、
そうでなければ大きな付加価値を付けておくといいかもしれません。
→(4) 暖房器具の実装へ
0 件のコメント:
コメントを投稿