プログラミング・動画編集 備忘録

プログラミングや動画編集についての備忘録です

Skyrim Mod 製作日記 - 13 - ユニーク装備のアップグレードModを製作する (1)

状況

さて、1ヶ月ほどMod製作が止まっていましたが、再開しました。
直前の状況が、アイテムデータなどをCreation Kitで作るのは大変なため、プログラムで生成する仕組みをある程度作りこんでいました。
やりたいことは、各種データを自動生成することです。
しかしながら、ソフィーのアトリエのプレイが進んでいないので、題材とするデータがありません。
そこで、仮題材として、次のようなModをプログラムから作ることにしました。
このプログラムでは、武器データ、防具データ、レシピデータを自動生成します。

ユニーク装備のアップグレードModの基本仕様

  • 通常1つしか手に入らない武器・防具を対象にする
  • 通常の鍛造施設で造れるようにする
  • アイテム名称の最後に +1 ~ +n と付けるようにする
  • アップグレード内容は武器ならダメージを+1ずつ、防具なら防御力を+1ずつ上げるようにする
  • 必要な素材は、強化時に必要なアイテムとアイテムの定価のゴールドとし、強化レベル(+1 ~ +n)を掛けた値とする

武器データの製作

とりあえず武器は「アーリエルの弓」を対象にして、+1 ~ +100までを造れるようにします。
Creation Kitで "DLC1AurielsBow"(02000800) をコピーして、最初の+1の武器データを登録します。
f:id:rrryutaro:20170318205302p:plain
IDには、プレフィックスに"rrr"を付けて、アイテム名称、サフィックスには強化レベル(+1~+n)を3桁(001~100)を付けるようにします。
Nameには、アイテム名称の後に"+1"を付けます。
Damageは値を+1します。

これで、基本となる武器データが登録できました。
後は、プログラムで、+2~+100までのデータを繰り返し作成します。
変更するのは [EDID]EditorID、[FULL]Name、[DATA]Game Data - Damage、[CRDT]Critical Data - Damageの4つで、後は変更しません。
クリティカルダメージは基本的に通常ダメージの1/2(切捨て)となるようです。(※一部、通常ダメージと同じ武器もあり、アーリエルの弓も通常ダメージと同じですが、ここではとりあえず、1/2とします)

鍛造で造れるようにするには

ConstructibleObject にレシピを登録します。
f:id:rrryutaro:20170318202200p:plain

右クリックして、[New]を選択します。
f:id:rrryutaro:20170318202322p:plain

各項目

  • ID: EditorIDのこと。Mod内でユニークな名称を付けます。
  • Created Object: 造られるアイテム。コンボボックスからEditorIDを選択します。
  • Created Object Count: 造られるアイテムの数。数値を入力します。
  • Workbench Keyword: アイテムを造る施設。コンボボックスからEditorIDを選択します。
  • Required Item List: アイテムを造るのに必要な素材のリスト。追加する場合、右クリックして[Add]を選択します。
    • Object: [Required Item List]で選択しているアイテムを変更します。
    • Count: [Required Item List]で選択しているアイテムの数(アイテムを造るのに必要な素材の数)を変更します。
  • Match Conditions: アイテムを造るのに必要な条件の指定。ここで指定した条件に合致しない場合、画面に表示されません。
    • <
    • >>: Match Conditionsで選択している項目を一つ下に移動させます。(条件の優先順位を下げる)
    • New: Match Conditionsに条件を追加します。(右クリックで[New]を選択しても同じ)

※コンボボックスの項目はインクリメンタルサーチが出来るので、EditorIDを打ち込んでいけば探しやすいです。なお、データ上はFormIDで管理されています。

次のように入力しました。
f:id:rrryutaro:20170318203727p:plain

IDには、プレフィックスに"rrrRecipe"を付けて、アイテム名称、サフィックスには強化レベル(+1~+n)を3桁(001~100)を付けるようにします。
造るのに必要なアイテムは、Cration Kit内で探すか、次のサイト(Xbox360/PlayStation3「The Elder Scrolls V:SKYRIM」日本語版wiki - トップページ)を参考にしています。
ちなみに、「アーリエルの弓」は砥石で強化できるため、次のように登録されています。
f:id:rrryutaro:20170318204513p:plain

強化時に必要なアイテムは「研磨された月長石」で、「アーリエルの弓」の価格は1436なので、そのように登録します。
なお、+1製造時は「アーリエルの弓」を必要とはせず、+2の製造からは元のアイテムを消費するようにします。(Modでユニークアイテムを削除してしまうとまずいので)

また大量のレシピを追加するため、元アイテムを所持している場合のみ表示されるように条件を追加します。

これで、基本となるレシピが登録できました。
後は、これでもプログラム側で+2~+100までのデータを繰り返し作成します。
変更するのは、[EDID]Editor ID、[CNTO]Item(アイテム製造に必要な素材)、[CTDA]Conditions(アイテム製造に必要な条件)、[CNAM]Created Objectの4つです。

防具データの製作

防具はギルドマスター装備を対象にしてみます。
これまでと同じように、Creation Kitで元データの"Guild Master's Hood"(000E35D9)、"Guild Master's Armor"(000E35D7)"、"Guild Master's Gloves"(000E35D8)、"Guild Master's Boots"(000E35D6)をコピーします。
ちなみに、FormID的には、脚部・胴・腕・頭部の順番になっていますが、頭部・胴・腕・脚部の順番で登録することにします。

武器と同じように、ID、Nameを付けます。防御力はArmor Ratingを変更します。
後は武器と同じように+2~+100のデータを作り、レシピも同じように登録します。

防御力が反映されない

espファイル内でのバリナリデータの事ですが、Armor Ratingは小数点の表示があったため、てっきり浮動小数点型かと思ったのですが、どうやらint型を1/100した値で管理されているようなので、防御力を+1する場合、100を指定するようにします。(バイナリ上で 01 00 00 00 となってなら、通常のint型なら、 1 ですが、Armor Ratingの場合は 0.01 となっています)

防具が透明になる

単なるプログラムのミスですが、"MODL"の値をミスっていたため、透明に表示されました。
逆に考えると、"MODL"の値をNULLにすれば防具を装備しているのに裸状態になるばかりか、頭部が次のようになりました。
f:id:rrryutaro:20170318211904p:plain

本来は次のようなっています。
f:id:rrryutaro:20170318212111p:plain

これはたぶん、フードの部分でおおわれている部分が透明になったのでこのように見えるのでしょう。

今回、コレに気づくのに一番時間を費やしました・・・

一通りのパターンが完成

つまらないことで躓いたりなどしましたが、どうにか武器・防具のデータコピーとレシピのコピーが出来て、鍛造で造れることが確認できました。
後は、各種ユニーク装備の基礎データを登録していけばOKですが、ここは地味に一つ一つ登録していく他ありません。
今回はここまで。