Factorio Mod を作成したみた。~レシピの追加:フルゴラ編~

Factorio Mod を作成したみた。~レシピの追加:フルゴラ編~

はじめに

前回のウルガヌス辺に引き続きフルゴラに関してもレシピを追加していきます。
ウルガヌスほどたくさんのレシピは追加しませんが、既存のレシピに追加するなどちょっと小細工が必要になりました。

レシピなどの追加方法(おさらい)

Modのデータは data.lua ⇒ data-update.lua ⇒ data-final-fixes.lua の順で読み込まれ登録されていく。
final-fixesが他のModのupdateを読み込んだあとに読み込まれるので何も考えずに適応させるにはいいらしいとのこと。
フォルダ構成はこんな感じ。

-mod_name
|-locale
 |-ja
  |-mod_name.cfg
|-info.json
|-data.lua
|-data-update.lua
|-data-final-fixes.lua

data-final-fixes内に追加したいレシピを書き込んでいくことにします。

レシピの作り方(おさらいその2)

baseのデータが\\SteamLibrary\steamapps\common\Factorio\data\base\prototypes\recipe.luaに保存されています。これを参考にしましょう。もしくはここ

保存されているデータを閲覧する際は思わぬ更新に注意してください。

data:extend
({
  {
    type = "recipe",
    name = "speed-module",
    enabled = false,
    ingredients =
    {
      {type = "item", name = "advanced-circuit", amount = 5},
      {type = "item", name = "electronic-circuit", amount = 5}
    },
    energy_required = 15,
    results = {{type="item", name="speed-module", amount=1}}
  },
})

例としてスピードモジュールのレシピを持ってきました。意外と簡単。
その他のオプションはmod portal に記載があります。
これをdata-final-fixes.luaに書き込めばレシピが追加されます。

追加するレシピ
基礎回路フェノールボートでも作れるように
搬送ベルト系
廃材リサイクルに金、遮熱タイルを追加
リサイクルレシピが適用されてないものを追加いろいろないもの追加

追加したのレシピ数はウルガヌスほど多くないです。

基礎回路:木材での作成が序盤できないため、電子基板がつくれなく詰みます。
フェノールボートは発展基盤のリサイクル時に産出されるので、それを使って作れるようにしました。

リサイクルレシピは自動で追加されるのが大半ですが、たまに反映されていないものもありましたので、いくつかリサイクルレシピを手動で追加しました。

次に廃材リサイクルに出てくる素材の追加です。
廃材リサイクル時はバニラ状態で12種類の素材がでてきます。これに金と遮熱タイルを追加します。
追加は以下のように行います。

local recipe = data.raw.recipe["scrap-recycling"]
if recipe then
  table.insert(recipe.results, { type = "item", name = "bob-gold-plate", amount = 1, probability = 0.005 , show_details_in_recipe_tooltip = false })
  table.insert(recipe.results, { type = "item", name = "bob-heat-shield-tile", amount = 1, probability = 0.01 ,show_details_in_recipe_tooltip = false })
end


対象となるレシピ名を見つけてきて、追加していきます。
他のレシピでも同じように追加・変更することができるので、無茶苦茶レシピに魔改造することも可能です。

リサイクラーにレシピを追加する時の注意点です。
インベントリサイズが、出力するアイテム数以上にないと全部出てきません。
上から順?に埋められ足りない分は破棄されてるようです。(これ嵌りました。)
標準で12個のインベントリサイズがありますが、追加しただけでは全く素材が出てこず増やしたところ出力されました。

リサイクラーのインベントリサイズは以下のように変更できます。

data.raw["furnace"]["recycler"].result_inventory_size = 18



テクノロジーの適用(おさらいその3)

今回はフルゴラの到着に追加していきます。

local my_custom_recipes = {
--ここに設定したレシピをいれてく。
  "bob-basic-circuit-board-phenolic",
  "decomposition-fibreglass",
・・・・
} 

local tech = data.raw.technology[""planet-discovery-fulgora"] --追加したいテクノロジー名
if tech then
    tech.effects = tech.effects or {}
    for _, recipe in pairs(my_custom_recipes) do
      table.insert(tech.effects, {
        type = "unlock-recipe",
        recipe = recipe
      })
    end
end


レシピを追加した後にループで追加すれば研究後に開放するようになります。
レシピを追加する前にやると当然設定されません。

完成版

※全惑星でレシピ追加してます。


おわりに

ウルガヌスに引き続きフルゴラでのレシピを追加しました。
それほど多く追加していないですが、他にほしいものもあれば順次追加していきたいですね。

次回は宿敵です。宿敵。

コメント