Compare commits

..

1 commit

Author SHA1 Message Date
Simon Brodtmann
53699b9a9c Add new enemies 2025-03-01 23:26:18 +01:00
55 changed files with 514 additions and 1263 deletions

View file

@ -2,15 +2,15 @@ This mod extends the early game of Space Age by putting you on the moon "Lignumi
The duration of the stay on Lignumis will be rather short. The impact of the later game will still be substantial (once implemented).
**Warning when adding to existing games:** With the default settings, this mod will break a few things in your existing bases and space ships. Check out the settings to disable what you don't like.
**If you start a new game, check out the setting for adding Basic circuit boards.**
## Mod recommendations
The following mods can be a great addition for this mod:
#### [Any Planet Start](https://mods.factorio.com/mod/any-planet-start)
#### [Burner Leech Fork](https://mods.factorio.com/mod/Burner-Leech-Fork)
Allows you to choose the planet that Lignumis orbits. You can continue on Vulcanus, Fulgora or Gleba after leaving Lignumis.
There will be fewer inserters that need to be fueled manually.
#### [Diversitree](https://mods.factorio.com/mod/Diversitree)
@ -28,14 +28,9 @@ If you want more of it than Lignumis offers, add this mod. It adds ammo for shot
If you like go more into the charcoal direction. It has no overlap with Lignumis and starts to get relevant on Nauvis.
#### [Wooden Aquilo: Seabloom Algaculture](https://mods.factorio.com/mod/aquilo-seabloom-algaculture)
#### [Wooden Fulgora: Coralmium Agriculture](https://mods.factorio.com/mod/fulgora-coralmium-agriculture), [Wooden Vulcanus: Sulfuric Bacteria](https://mods.factorio.com/mod/vulcanus-sulfuric-bacteria) and [Wooden Aquilo: Seabloom Algaculture](https://mods.factorio.com/mod/aquilo-seabloom-algaculture)
For wood on Aquilo.
#### [Crushing Industry](https://mods.factorio.com/mod/crushing-industry)
Recommended with high science cost settings. It adds crushers and crushed ores to increase productivity.
Lignumis adds crushed gold ore and a technology to unlock the crusher with wood and steam science packs.
For wood on the other planets.
#### [AAI Loaders](https://mods.factorio.com/mod/aai-loaders)
@ -67,7 +62,7 @@ The following planet mods are tested for (at least technical) compatibility:
## Problematic / incompatible mods
* The combination of AAI Industry and Any planet start is currently not supported.
* Mods that let you start on a different planet: They are supported, but you are missing half of the content of this mod.
* Alien Biomes: Lignumis won't have any trees. It's playable, but not as intended.
* The rest of the Wooden Universe: I marked the ones incompatible that don't make sense to combine or that wouldn't add more that is not already included.
@ -109,29 +104,20 @@ Don't touch inputs for labs in this list.
Lignumis adds wood and steam science packs to all labs' inputs in `data-updates.lua` so modded labs will support them.
If your modded lab is special and it should not support these science packs, use this list or set the inputs in `data-final-fixes.lua`.
#### Chaning the second planet (a.k.a. transition to Nauvis)
If you want to create a mod that moves Lignumis to another planet, there is a hidden setting for the scripted transition to teleport the player not to Nauvis but to any planet you like.
This doesn't change any technologies or the location of Lignumis on the map. Make sure you adjust the prototypes as well on your end.
In `settings-updates.lua` add the following to switch to Gleba as the second planet:
```lua
data.raw["string-setting"]["lignumis-second-planet"].allowed_values = { "gleba" }
data.raw["string-setting"]["lignumis-second-planet"].default_value = "gleba"
```
## Todo
- Fix pipe graphics on desiccation furnace and quality assembler
- Trees must not die when absorbing noise
- https://lua-api.factorio.com/latest/types/TreeVariation.html
- Improve transition to Nauvis a bit more
- Add late-game recipe for oil from wood pulp
- Find a better message when transitioning to Nauvis
- Add information in Factoriopedia
- Compatibility with [On Wayward Seas](https://mods.factorio.com/mod/wayward-seas)
- Compatibility with [Exotic Space Industries](https://mods.factorio.com/mod/exotic-space-industries)
- Compatibility with [Noble Metals](https://mods.factorio.com/mod/bzgold) once it's updated
- "Hardcore Lignumis"
- Check if creating a separate group for Lignumis recipes/items makes sense
- Only create 1 cutscene per game in multiplayer
- Think about moving Lumber mill to later and let it use electricity.
## Credits
@ -139,9 +125,8 @@ data.raw["string-setting"]["lignumis-second-planet"].default_value = "gleba"
- Simplified chinese (zh-CN): cyx2015s
- Polish (pl): StarGazer
- Russian (ru): Fr_Dae
### Assets / Code
### Assets
[Hurricane](https://mods.factorio.com/user/Hurricane046)
@ -202,8 +187,3 @@ data.raw["string-setting"]["lignumis-second-planet"].default_value = "gleba"
[Pixabay](https://pixabay.com)
- [AudioPapkin: Forest ambience](https://pixabay.com/sound-effects/forest-ambience-296528/)
[SafTheLamb](https://mods.factorio.com/user/SafTheLamb)
- [Early Agriculture](https://mods.factorio.com/mod/early-agriculture): Fix for trees not being plantable on Nauvis with Alien Biomes active.
- [Wooden Logistics](https://mods.factorio.com/mod/wood-logistics): Code for AAI Loader.

View file

@ -1,165 +1,4 @@
---------------------------------------------------------------------------------------------------
Version: 1.0.44
Date: 20.04.2025
Bug Fixes:
- Add Secretas optional dependency to fix loading order
---------------------------------------------------------------------------------------------------
Version: 1.0.43
Date: 20.04.2025
Changes:
- Any planet start: Move code to updates stage
Bug Fixes:
- Correct description of the Quality Assembler
- Any planet start (Vulcanus): Add some fixes to not get stuck
- Crushing Industry: Move compatibility code to updates phase to prevent crash
---------------------------------------------------------------------------------------------------
Version: 1.0.42
Date: 14.04.2025
Bug Fixes:
- Helmod: Fix bug with steam assembler (now really)
- Crushing Industry: Fix wrong ingredient amount for gold from crushed gold (BREAKING)
---------------------------------------------------------------------------------------------------
Version: 1.0.41
Date: 13.04.2025
Changes:
- Add setting for even earlier personal robots
Bug Fixes:
- Prevent broken icons
- Helmod: Fix bug with steam assembler
- Any planet start: Fix prerequisites for "Tree seeding"
- Any planet start: Fix circular dependency
- Wood Gasification updated: Fix amount of wood per tree
---------------------------------------------------------------------------------------------------
Version: 1.0.40
Date: 06.04.2025
Changes:
- Add setting for wood on Fulgora and make Wooden Fulgora optional again
Bug Fixes:
- Add fix for duplicate ready rocket silo
- Remove inventory of provisional rocket silo
---------------------------------------------------------------------------------------------------
Version: 1.0.39
Date: 28.03.2025
Changes:
- Add Space Age flag
Breaking changes:
- AAI loaders, Lane splitters: Apply recipe changes only when AAI Industry is active
- AAI Loaders: Adhere belt progression setting
---------------------------------------------------------------------------------------------------
Version: 1.0.38
Date: 28.03.2025
Changes:
- Any planet start: Change internal name of the space connection to Lignumis depending on the selected planet
Bug Fixes:
- Any planet start (Vulcanus) + Crushing Industry: Move iron crushing to fix soft-lock
---------------------------------------------------------------------------------------------------
Version: 1.0.37
Date: 28.03.2025
Changes:
- Switch from "Burner leech fork" to "Inserter Fuel Leech"
- "Wooden Vulcanus" and "Wooden Fulgora" are now mandatory ("Wooden Gleba" is currently being made)
- Crushing Industry: Burner Crusher can be crafted in Lumber Mill (with more Lumber Mill recipes enabled)
- Add compatibility for "Any planet start" - Now it is used to determine the planet after Lignumis and will move the moon accordingly
- Add compatibility for "Gleba reborn"
Bug Fixes:
- Crushing Industry: Fix name of Burner Crusher copper recipe
---------------------------------------------------------------------------------------------------
Version: 1.0.36
Date: 24.03.2025
Changes:
- Basic construction robots copper recipe uses basic circuit boards and wooden gear wheels
- AAI Industry: Add "wood" fuel category to burner generator and fuel processor
- Wood Industry: Woodchips have "wood" fuel category
- Add compatibility for "Crushing Industry"
Bug Fixes:
- Lane Splitters: Correct item order
- AAI Loaders: Correct item/recipe order
- Fix recylce recipe being generated for rocket parts
---------------------------------------------------------------------------------------------------
Version: 1.0.35
Date: 18.03.2025
Changes:
- Add russian translation (thanks Fr_Dae)
- Regular lab recipe always uses wood belt
---------------------------------------------------------------------------------------------------
Version: 1.0.34
Date: 17.03.2025
Changes:
- Balance basic construction robots (reduced energy buffer and usage)
- Make the second planet after Lignumis configurable by other mods
- Add new enemies (only for new games)
- Burner leech fork is now a mandatory dependency
---------------------------------------------------------------------------------------------------
Version: 1.0.33
Date: 16.03.2025
Breaking Changes:
- Replace iron gear wheel with wooden gear wheel in lumber mill copper recipe
- AAI Industry: Lumber mill copper recipe uses burner assembler instead of electrical assembler 1
- AAI Industry: Basic construction robot copper recipe uses basic circuit board instead of electronic circuit
- AAI Loaders: Yellow loader uses basic circuit board instead of electronic circuit
- Lane splitters: Yellow lane splitter uses basic circuit board instead of electronic circuit
Changes:
- Nerf basic portable generator from 200 kW to 100 kW
- AAI Industry: Move copper cable recipe to copper processing
- AAI Industry: Remove technology "Basic logistics"
- AAI Loaders: Reduce basic circuit boards to match other tiers
- Remove temporary fix for crash due to "Wood Walls and floors"
---------------------------------------------------------------------------------------------------
Version: 1.0.32
Date: 14.03.2025
Breaking Changes:
- Some newly added recipes for the lumber mill have been moved to a setting that is off by default
Changes:
- Reduce noise
- Restrict provisional rocket silo to Lignumis
- Add setting for assembler recipe progression
Bug Fixes:
- Fix players after the first not attackable
---------------------------------------------------------------------------------------------------
Version: 1.0.31
Date: 13.03.2025
Breaking Changes:
- Any planet start/Planet picker: Mark as incompatible
Changes:
- Add more recipes to lumber mill
- AAI Loaders: Expensive mode recipe uses basic circuit boards (thanks Nydaleclya)
- AAI Loaders: Yellow loader recipe uses wood loader
Bug Fixes:
- Add missing translation
- Possibly fix problems with Wooden rocket silo in remote view
- Add copper recipe for the lumber mill
---------------------------------------------------------------------------------------------------
Version: 1.0.30
Date: 06.03.2025
Bug Fixes:
- Any planet start: Fix startup crash
---------------------------------------------------------------------------------------------------
Version: 1.0.29
Date: 05.03.2025
Breaking Changes:
- Nerf quality assembler to +25% quality
Changes:
- Set default for setting "Basic circuit boards" to true
- Alien Biomes: Add warning when the game starts that AB is not supported
Bug Fixes:
- Fix Burner agricultural tower not having a Nauvis recipe when "Basic circuit boards" is active
---------------------------------------------------------------------------------------------------
Version: 1.0.28
Date: 04.03.2025
Changes:
- Steam assembler technology should not ignore tech cost multiplier
Bug Fixes:
- AAI Loaders: Add missing translation
- Prevent possible errors on player initialization
---------------------------------------------------------------------------------------------------
Version: 1.0.27
Date: 02.03.2025
Changes:
- Add compatibility for "Any planet start"
- Add compatibility for "Lane splitters"
Bug Fixes:
- AAI Industry: Fix basic circuit board recipe unlock
---------------------------------------------------------------------------------------------------
Version: 1.0.26
Date: 28.02.2025
Bug Fixes:

View file

@ -8,3 +8,5 @@ handler.add_libraries({
require("scripts/to-nauvis"),
require("scripts/wooden-rocket-silo")
})

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

View file

@ -1,49 +1,36 @@
{
"name": "lignumis",
"version": "1.0.44",
"version": "1.0.26",
"title": "Lignumis",
"description": "Dive into the world of Lignumis, a moon of Nauvis offering only the most basic technologies.",
"author": "cackling fiend",
"homepage": "https://discord.gg/5bevXf5W",
"factorio_version": "2.0",
"space_travel_required": true,
"dependencies": [
"base",
"space-age >= 2.0.33",
"astroponics >= 1.2.0",
"bioprocessing-tab",
"cf-lib >= 0.0.12",
"space-age >= 2.0.28",
"lignumis-assets",
"flib",
"InserterFuelLeech",
"lignumis-assets >= 1.0.3",
"mf-buildings >= 1.0.7",
"mf-core >= 1.0.3",
"mf-logistics >= 1.0.1",
"PlanetsLib >= 1.1.26",
"pollution-as-surface-property",
"astroponics >= 1.2.0",
"cf-lib >= 0.0.8",
"mf-core >= 1.0.3",
"mf-buildings >= 1.0.7",
"mf-logistics >= 1.0.1",
"Wood-Walls >= 1.2.0",
"vulcanus-sulfuric-bacteria",
"?aai-industry",
"?aai-loaders",
"?aai-loaders-sane",
"?any-planet-start",
"?atan-nuclear-science",
"?crushing-industry",
"?Diversitree",
"?fulgora-coralmium-agriculture",
"?gleba-reborn",
"pollution-as-surface-property",
"bioprocessing-tab",
"?hot-metals >= 1.1.0",
"?lane-splitters",
"(?)metal-and-stars",
"(?)secretas",
"(?)Wood_Gasification_updated",
"?wood-industry",
"?wood-military >= 2.3.3",
"?metal-and-stars",
"?aai-industry",
"?planet-picker",
"?Diversitree",
"?aai-loaders",
"?atan-nuclear-science",
"!apm_power_ldinc",
"!Burner-Leech-Fork",
"!early-agriculture",
"!planet-picker",
"!wood-logistics",
"!early-agriculture",
"!wood-universe-modpack"
]
}

View file

@ -45,15 +45,10 @@ basic-radar=Basic radar
active-noise-cancelling-tower=Active noise cancelling tower
quality-assembler=Quality assembler
aai-wood-loader=Wood loader
wood-lane-splitter=Wood lane splitter
lignumis-spawner-small=Lignumis egg raft
lignumis-small-wriggler-pentapod=Lignumis small wiggler pentapod
lignumis-medium-wriggler-pentapod=Lignumis medium wiggler pentapod
[entity-description]
lumber-mill=Advanced machine to process wood.
quality-assembler=High-end assembler to craft only the finest quality machines. It gives 25% additional quality by consuming [item=gold-quality-catalyst]. Surface conditions and ingredients are otherwise unchanged.
gold-stromatolite-plant=Harvest gold stromatolites for bacteria that enrich gold from the ground.\n__REMARK_COLOR_BEGIN__Expected yield:__REMARK_COLOR_END__ 1.5 [item=gold-ore]/m
quality-assembler=High-end assembler to craft only the finest quality machines. It gives one free quality tier to the crafted item by consuming [item=gold-quality-catalyst]. Surface conditions and ingredients are otherwise unchanged.
[equipment-name]
basic-portable-generator-equipment-gold=Basic portable generator equipment (gold)
@ -81,12 +76,11 @@ gold-quality-catalyst=Gold quality catalyst
wood-armor=Wood armor
wood-darts-magazine=Wood darts magazine
basic-circuit-board=Basic circuit board
crushed-gold-ore=Crushed gold ore
[item-description]
wooden-wall=Use wooden walls to protect your base from the locals and to reduce noise levels.
stone-wall=Better acoustic and physical protection than the wooden counterpart.
gold-stromatolite-seed=Plant the seed to grow gold stromatolites. They house bacteria that enrich gold from the ground.\n__REMARK_COLOR_BEGIN__Expected yield:__REMARK_COLOR_END__ 1.5 [item=gold-ore]/m
destination-nauvis=Insert this item into a rocket to travel to Nauvis. Notice that you won`t come back for a while.\n__REMARK_COLOR_BEGIN__BETA notice: Keep at most 40 item stack in your inventory before leaving as the current transition to Nauvis is a temporary implementation. Be sure to take material to jumpstart your iron, copper and wood production.__REMARK_COLOR_END__
[fluid-name]
wood-pulp=Wood pulp
@ -105,8 +99,6 @@ low-density-structure-gold=Low density structure
rocket-fuel-from-wood-pulp-and-peat=Bio-rocket-fuel
nutrients-from-wood-pulp=Nutrients from wood pulp
active-noise-cancelling=Active noise cancelling
casting-gold=Casting gold
gold-ore-crushing=Gold ore crushing
[recipe-description]
moist-stromatolite-remnant-desiccation-without-steam=Used for balancing the production of steam.
@ -136,8 +128,6 @@ basic-repair-pack=Basic repair pack
basic-radar=Basic radar
active-noise-cancelling=Active noise cancelling
quality-assembler=Quality assembler
aai-wood-loader=Wood loader
basic-ore-crushing=Basic ore crushing
[technology-description]
wood-science-pack=Allows research of basic technologies based on wood products.
@ -176,10 +166,6 @@ lignumis-ammo-progression=Enable progressive ammo recipes
lignumis-technology-progression=Enable progressive technologies
lignumis-basic-circuit-board=Enable basic circuit board
lignumis-circuit-progression=Enable progressive circuit recipes
lignumis-assembler-progression=Enable progressive assembler recipes
lignumis-lumber-mill-more-recipes=Enable more recipes for the lumber mill
lignumis-fulgora-wood=Add wood to Fulgora
lignumis-early-robots=Even earlier personal robots
[mod-setting-description]
lignumis-belt-progression=Yellow belts will require wood belts to craft.
@ -188,13 +174,6 @@ lignumis-ammo-progression=Firearm magazines will require wooden darts magazines
lignumis-technology-progression=Adds wood and steam science packs to most late game technologies. Disabling this removes the relevance of Lignumis' science packs in the late game.
lignumis-basic-circuit-board=Recipes use basic circuit boards instead of gold cables and gold plates where appropriate. Both gold and copper recipes will be added.
lignumis-circuit-progression=Electric circuits will require basic circuit boards to craft.
lignumis-assembler-progression=Assembling machine 1 will require burner assembling machines to craft.
lignumis-lumber-mill-more-recipes=The lumber mill can also craft basic turrets, burner assemblers and burner inserters. Improves balancing wood usage when all progressive recipes are enabled and helps with marathon games.
lignumis-fulgora-wood=This adds wooden gear wheels to scrap recycling as the main source of wood. Disable this is you have a different source of wood or import everything from other planets.
lignumis-early-robots=Personal robots are moved from steam to wood science and are a tiny bit faster.
[autoplace-control-names]
lignumis_enemy_base=Lignumis enemy bases
[entity-status]
no-quality-catalyst=No quality catalyst
@ -207,8 +186,8 @@ quality-catalyst-energy-value=Quality value
quality-catalyst=Quality catalyst
[lignumis]
start-new-game=Lignumis is meant to be played in a fresh game as it extends the early game.
provisional-rocket-silo-button=Escape to __1__
start-new-game=Lignumis is meant to be played in a fresh game as it extends the early game before Nauvis.
provisional-rocket-silo-button=Escape to Nauvis
provisional-rocket-silo-button-tooltip-inventory=Your personal inventory must be empty!
provisional-rocket-silo-button-tooltip-target=You don't know yet where to go!
provisional-rocket-silo-description=Fill the rocket inventory and launch the rocket to escape to __1__.\nBe sure to take material to jumpstart your iron, copper and wood production.
provisional-rocket-silo-button-tooltip-nauvis=You don't know yet where to go!
provisional-rocket-silo-description=Fill the rocket inventory and launch the rocket to escape to Nauvis.\nBe sure to take material to jumpstart your iron, copper and wood production.

View file

@ -1,138 +0,0 @@
[mod-name]
lignumis=○ Лигнумис
[mod-description]
lignumis=Погрузитесь в мир Лигнумиса — луны Нависа, предлагающей лишь самые базовые технологии.
[space-location-name]
lignumis=Лигнумис
[space-location-description]
lignumis=Лигнумис — это луна, вращающаяся вокруг Нависа. Она во многом похожа на Навис, но кажется моложе и беднее ресурсами.
[airborne-pollutant-name]
noise=Шум
[airborne-pollutant-name-with-amount]
noise=__1__ шума
[entity-name]
wood-lab=Деревянная лаборатория
peat=Торф
burner-agricultural-tower=Сельскохозяйственная башня на горелке
burner-assembling-machine=Сборочная машина на горелке
burner-long-handed-inserter=Длиннорукий манипулятор на горелке
lumber-mill=Лесопильня
gold-stromatolite=Золотой строматолит
gold-stromatolite-plant=Золотой строматолит (растение)
gold-stromatolite-lignumis=Золотой строматолит
gold-patch=Золотое месторождение
deep-miner=Глубинный бур
gold-pipe=Золотая труба
gold-pipe-to-ground=Золотая подземная труба
gold-storage-tank=Золотой резервуар
desiccation-furnace=Печь для высушивания
steam-assembling-machine=Паровая сборочная машина
provisional-rocket-silo=Временное ракетное хранилище
provisional-rocket-silo-ready=Временное ракетное хранилище (готово)
basic-gun-turret=Базовая пулеметная турель
basic-construction-robot-gold=Базовый строительный робот (золото)
basic-construction-robot-copper=Базовый строительный робот (медь)
wood-transport-belt=Деревянный транспортёр
wood-underground-belt=Деревянный подземный транспортёр
wood-splitter=Деревянный разделитель
basic-radar=Базовый радар
active-noise-cancelling-tower=Башня активного шумоподавления
quality-assembler=Качественная сборочная машина
aai-wood-loader=Деревянный загрузчик
wood-lane-splitter=Деревянный распределитель лент
lignumis-spawner-small=Гнездовая колония Лигнумиса
lignumis-small-wriggler-pentapod=Маленький пентанож Лигнумиса
lignumis-medium-wriggler-pentapod=Средний пентанож Лигнумиса
[entity-description]
lumber-mill=Продвинутая машина для обработки древесины.
quality-assembler=Высококачественная сборочная машина, создающая только лучшие механизмы. Добавляет один уровень качества предмету, потребляя [item=gold-quality-catalyst]. Все остальные условия остаются неизменными.
[equipment-name]
basic-portable-generator-equipment-gold=Базовый портативный генератор (золото)
basic-portable-generator-equipment-copper=Базовый портативный генератор (медь)
basic-personal-roboport-equipment-gold=Базовый персональный робопорт (золото)
basic-personal-roboport-equipment-copper=Базовый персональный робопорт (медь)
[item-name]
wooden-gear-wheel=Деревянное зубчатое колесо
wood-science-pack=Деревянный научный пакет
peat=Торф
gold-stromatolite-seed=Семя золотого строматолита
gold-ore=Золотая руда
gold-bacteria=Золотые бактерии
gold-plate=Золотая пластина
gold-cable=Золотой кабель
moist-stromatolite-remnant=Влажный остаток строматолита
steam-science-pack=Паровой научный пакет
destination-nauvis=Путешествие на Навис
lumber=Пиломатериалы
basic-repair-pack=Базовый ремонтный комплект
cupriavidus-necator=Cupriavidus necator
dead-cupriavidus-necator=Мёртвый Cupriavidus necator
gold-quality-catalyst=Золотой катализатор качества
wood-armor=Деревянная броня
wood-darts-magazine=Обойма деревянных дротиков
basic-circuit-board=Базовая схема
[item-description]
wooden-wall=Деревянные стены защищают базу и снижают уровень шума.
stone-wall=Обеспечивает лучшую акустическую и физическую защиту, чем деревянный аналог.
destination-nauvis=Поместите этот предмет в ракету, чтобы отправиться на Навис. Обратите внимание, что вернуться обратно удастся не скоро.\n__REMARK_COLOR_BEGIN__BETA: Перед отлётом храните не более 40 единиц предметов в инвентаре, так как текущая система перехода на Навис временная. Не забудьте взять материалы для запуска производства железа, меди и древесины.__REMARK_COLOR_END__
[fluid-name]
wood-pulp=Древесная масса
molten-gold=Расплавленное золото
[recipe-name]
moist-stromatolite-remnant-desiccation=Высушивание влажного строматолита
gold-stromatolite-seed-to-peat=Обработка семян золотого строматолита
wood-liquefaction=Сжижение древесины
provisional-rocket-part=Часть временной ракеты
cupriavidus-necator-starter=Cupriavidus necator (стартовая культура)
plastic-from-cupriavidus-necator=Биопластик
casting-gold=Литьё золота
[technology-name]
wood-science-pack=Деревянный научный пакет
burner-automation=Автоматизация на горелках
planet-discovery-nauvis=Открытие планеты Навис
planet-discovery-lignumis=Открытие луны Лигнумис
basic-radar=Базовый радар
active-noise-cancelling=Активное шумоподавление
quality-assembler=Качественная сборочная машина
automation-science-pack=Покиньте Лигнумис для изучения продвинутых технологий.
[modifier-description]
basic-gun-turret-attack-bonus=Урон базовой турели: +__1__
[tile-name]
wood-floor=Деревянный пол
natural-gold-soil=Золотосодержащая почва
[fuel-category-name]
wood=Древесное топливо
quality-catalyst=Катализатор качества
[mod-setting-name]
lignumis-belt-progression=Прогрессивные рецепты конвейеров
lignumis-technology-progression=Прогрессивные технологии
lignumis-lumber-mill-more-recipes=Дополнительные рецепты для лесопильни
[mod-setting-description]
lignumis-technology-progression=Добавляет деревянные и паровые научные пакеты к большинству поздних технологий. Отключение этого параметра снижает их значимость в поздней игре.
lignumis-lumber-mill-more-recipes=Лесопильня может создавать базовые турели, сборочные машины и манипуляторы на горелках.
[gui]
quality-catalyst=Катализатор качества
[lignumis]
start-new-game=Лигнумис рассчитан на игру с нуля, так как он удлиняет ранний этап перед Нависом.
provisional-rocket-silo-button=Спастись на Навис
provisional-rocket-silo-description=Заполните ракету ресурсами и запустите её, чтобы сбежать на Навис.\nНе забудьте взять материалы для запуска производства железа, меди и древесины.

View file

@ -1,5 +0,0 @@
for _, player in pairs(game.players) do
if player.character then
player.character.destructible = true
end
end

View file

@ -1,5 +0,0 @@
storage.target_planet = settings.startup["lignumis-second-planet"].value or "nauvis"
if script.active_mods["any-planet-start"] then
storage.target_planet = settings.startup["aps-planet"].value ~= "none" and settings.startup["aps-planet"].value or storage.target_planet
end

View file

@ -1,17 +1,14 @@
local Technology = require("__cf-lib__/data/Technology")
local Recipe = require("__cf-lib__/data/Recipe")
if not mods["aai-industry"] then return end
data.raw.recipe["wood-science-pack"].allow_hand_crafting = true
-- Technologies / Recipe unlocks
local burner_mechanics = Technology:new("burner-mechanics")
burner_mechanics:addPrerequisite("iron-processing")
burner_mechanics:removeRecipe("burner-inserter")
burner_mechanics:removeRecipe("burner-mining-drill")
burner_mechanics:removeRecipe("burner-assembling-machine")
burner_mechanics:addPrerequisite("iron-processing")
data.raw.recipe["burner-inserter"].enabled = true
data.raw.recipe["burner-mining-drill"].enabled = true
@ -19,15 +16,6 @@ data.raw.recipe["burner-mining-drill"].enabled = true
local burner_automation = Technology:new("burner-automation")
burner_automation:addRecipe("burner-assembling-machine")
Technology:new("basic-logistics"):removeRecipe("transport-belt")
Technology:new("logistics"):addRecipe("transport-belt")
-- Electrics comes later with AAI Industry active
Recipe:new("lumber-mill-copper"):replaceIngredient("assembling-machine-1", "burner-assembling-machine")
Recipe:new("basic-construction-robot-copper"):replaceIngredient("electronic-circuit", "basic-circuit-board")
-- Entities
local wall = data.raw["wall"]["concrete-wall"]
wall.emissions_per_second = wall.emissions_per_second or {}
wall.emissions_per_second.noise = -30 / 60
@ -36,18 +24,9 @@ data.raw["lab"]["wood-lab"].next_upgrade = "burner-lab"
table.insert(data.raw["agricultural-tower"]["burner-agricultural-tower"].energy_source.fuel_categories, "processed-chemical")
table.insert(data.raw["assembling-machine"]["fuel-processor"].energy_source.fuel_categories, "wood")
if settings.startup["lignumis-basic-circuit-board"].value then
table.insert(data.raw["recipe"]["electric-mining-drill"].ingredients, { type = "item", name = "basic-circuit-board", amount = 2 })
table.insert(data.raw["recipe"]["inserter"].ingredients, { type = "item", name = "basic-circuit-board", amount = 1 })
table.insert(data.raw["recipe"]["burner-lab"].ingredients, { type = "item", name = "basic-circuit-board", amount = 10 })
table.insert(data.raw["recipe"]["assembling-machine-1"].ingredients, { type = "item", name = "basic-circuit-board", amount = 5 })
-- AAI Industry messes with the basic circuit board recipe
Technology:new("electronics"):removeRecipe("basic-circuit-board")
data.raw.recipe["basic-circuit-board"].enabled = true
Technology:new("electricity"):removeRecipe("copper-cable")
Technology:new("copper-processing"):addRecipe("copper-cable")
end

View file

@ -1,13 +0,0 @@
local Recipe = require("__cf-lib__/data/Recipe")
if not mods["aai-loaders"] then return end
local recipe = Recipe:new("aai-loader")
if settings.startup["lignumis-belt-progression"].value then
recipe:replaceIngredient("transport-belt", "aai-wood-loader", 1)
end
if mods["aai-industry"] and settings.startup["lignumis-basic-circuit-board"].value then
recipe:replaceIngredient("electronic-circuit", "basic-circuit-board")
end

View file

@ -8,7 +8,7 @@ local basic_circuit_board = settings.startup["lignumis-basic-circuit-board"].val
local recipe = {
ingredients = {
{ type = "item", name = "lumber", amount = 5 },
basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 5 } or
basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 10 } or
{ type = "item", name = "gold-cable", amount = 10 },
{ type = "item", name = "wood-transport-belt", amount = 1 }
},
@ -33,20 +33,16 @@ AAILoaders.make_tier({
recipe = recipe,
unlubricated_recipe = mods["aai-loaders-sane"] and recipe or {
ingredients = {
{ type = "item", name = "lumber", amount = 50 },
basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 50 } or
{ type = "item", name = "gold-cable", amount = 100 },
{ type = "item", name = "lumber", amount = 50 },
{ type = "item", name = "gold-cable", amount = 100 },
{ type = "item", name = "wood-transport-belt", amount = 1 }
},
energy_required = 5
},
next_upgrade = "aai-loader",
localise = false,
order = "d[loader]-a00[aai-wood-loader]"
localise = false
})
data.raw.recipe["aai-wood-loader"].category = "wood-processing-or-assembling"
if not basic_circuit_board then
local nauvis_recipe = Recipe:new("aai-wood-loader"):clone("wood-loader-electronic-circuit")
nauvis_recipe:replaceIngredient("gold-cable", "electronic-circuit")

View file

@ -1,79 +0,0 @@
local Technology = require("__cf-lib__/data/Technology")
if not mods["any-planet-start"] then return end
local target_planet = settings.startup["aps-planet"].value
if target_planet == "none" or target_planet == "nauvis" then return end
Technology:new("tree-seeding"):setPrerequisites({ "wood-science-pack" })
-- Switch planet discovery technology to the new planet
Technology:new("planet-discovery-" .. target_planet)
:assign({
enabled = true,
hidden = false,
unit = {
count = 100,
ingredients = {
{ "wood-science-pack", 1 },
{ "steam-science-pack", 1 }
},
time = 30
}
})
:setPrerequisites({ "provisional-rocketry" })
Technology:new("iron-processing"):replacePrerequisite("planet-discovery-nauvis", "planet-discovery-" .. target_planet)
Technology:new("copper-processing"):replacePrerequisite("planet-discovery-nauvis", "planet-discovery-" .. target_planet)
-- Vulcanus
if target_planet == "vulcanus" then
Technology:new("automation"):addPrerequisite("iron-processing")
Technology:new("steel-processing"):addPrerequisite("iron-processing")
Technology:new("tungsten-carbide"):addPrerequisite("planet-discovery-vulcanus")
Technology:new("iron-processing").prototype.research_trigger.entity = "big-volcanic-rock"
Technology:new("copper-processing").prototype.research_trigger.entity = "big-volcanic-rock"
data.raw.resource["tungsten-ore"].category = "basic-solid"
if mods["bztitanium"] and mods["crushing-industry"] then
Technology:new("foundry"):addRecipe("crushed-titanium-ore")
data.raw.recipe["crushed-titanium-ore"].category = "basic-crushing"
end
end
-- Fulgora
if target_planet == "fulgora" then
data.raw.recipe["medium-electric-pole"].enabled = false
Technology:new("recycling")
:addPrerequisite("planet-discovery-fulgora")
:addRecipe("medium-electric-pole")
Technology:new("iron-processing").prototype.research_trigger.entity = "scrap"
Technology:new("copper-processing").prototype.research_trigger.entity = "scrap"
if mods["fulgora-coralmium-agriculture"] then
Technology:new("coralmium-recycling")
:addPrerequisite("recycling")
:removeRecipe("agricultural-tower")
end
end
-- Gleba
if target_planet == "gleba" then
Technology:new("landfill")
:setPrerequisites({ "burner-automation" })
:assign({
unit = {
count = 50,
ingredients = { { "wood-science-pack", 1 } },
time = 15
}
})
.prototype.research_trigger = nil
Technology:new("iron-processing").prototype.research_trigger.entity = "iron-stromatolite"
Technology:new("copper-processing").prototype.research_trigger.entity = "copper-stromatolite"
end

View file

@ -1,112 +0,0 @@
local item_sounds = require("__base__.prototypes.item_sounds")
local Technology = require("__cf-lib__/data/Technology")
local Recipe = require("__cf-lib__/data/Recipe")
if not mods["crushing-industry"] then return end
if not settings.startup["crushing-industry-ore"].value then return end
data:extend({
{
type = "item",
name = "crushed-gold-ore",
icon = Lignumis.graphics .. "icons/crushed-gold-ore.png",
pictures = {
{ size = 64, filename = Lignumis.graphics .. "icons/crushed-gold-ore.png", scale = 0.5, mipmap_count = 4 },
{ size = 64, filename = Lignumis.graphics .. "icons/crushed-gold-ore-1.png", scale = 0.5, mipmap_count = 4 },
{ size = 64, filename = Lignumis.graphics .. "icons/crushed-gold-ore-2.png", scale = 0.5, mipmap_count = 4 },
},
subgroup = "raw-resource",
color_hint = { text = "C" },
order = "f[gold-ore]-c[crushed]",
inventory_move_sound = item_sounds.resource_inventory_move,
pick_sound = item_sounds.resource_inventory_pickup,
drop_sound = item_sounds.resource_inventory_move,
stack_size = 100,
weight = 2 * kg
},
{
type = "recipe",
name = "crushed-gold-ore",
localised_name = { "recipe-name.gold-ore-crushing" },
icons = CrushingIndustry.make_crushing_icons("gold-ore"),
category = "basic-crushing",
enabled = false,
allow_productivity = true,
auto_recycle = false,
energy_required = 1.2,
ingredients = { { type = "item", name = "gold-ore", amount = 1 } },
results = { { type = "item", name = "crushed-gold-ore", amount = 1, extra_count_fraction = 0.5 } },
main_product = "crushed-gold-ore"
},
{
type = "recipe",
name = "crushed-gold-smelting",
localised_name = { "recipe-name.crushed-smelting", { "item-name.gold-plate" } },
icons = {
{ icon = Lignumis.graphics .. "icons/crushed-gold-ore.png", shift = { -12, -12 }, scale = 0.4 },
{ icon = Lignumis.graphics .. "icons/gold-plate.png", draw_background = true }
},
category = "smelting",
order = "a[smelting]-b[gold-plate]-c[crushed]",
enabled = false,
allow_productivity = true,
auto_recycle = false,
hide_from_player_crafting = settings.startup["crushing-industry-hide-player-crafting"].value,
energy_required = 3.2,
ingredients = { { type = "item", name = "crushed-gold-ore", amount = 2 } },
results = { { type = "item", name = "gold-plate", amount = 1 } },
main_product = "gold-plate",
},
{
type = "technology",
name = "basic-ore-crushing",
icon = Lignumis.graphics .. "technology/basic-ore-crushing.png",
icon_size = 256,
effects = {
{ type = "unlock-recipe", recipe = "burner-crusher" },
{ type = "unlock-recipe", recipe = "crushed-gold-ore" },
{ type = "unlock-recipe", recipe = "crushed-gold-smelting" }
},
prerequisites = { "steam-science-pack" },
unit = {
count = 100,
ingredients = {
{ "wood-science-pack", 1 },
{ "steam-science-pack", 1 }
},
time = 15
}
}
})
if settings.startup["crushing-industry-byproducts"].value then
table.insert(data.raw["recipe"]["crushed-gold-ore"].results, { type = "item", name = "gold-ore", amount = 1, probability = 0.05 })
table.insert(data.raw["recipe"]["crushed-gold-ore"].results, { type = "item", name = "sand", amount = 1, probability = 0.02 })
end
if mods["aai-industry"] then
Technology:new("burner-mechanics"):removeRecipe("burner-crusher")
else
Technology:new("steam-power"):removeRecipe("burner-crusher")
end
local gold_recipe = Recipe:new("burner-crusher")
:replaceIngredient("iron-gear-wheel", "wooden-gear-wheel")
:replaceIngredient("iron-plate", "gold-plate")
:assign({
category = settings.startup["lignumis-lumber-mill-more-recipes"].value and "wood-processing-or-assembling" or "crafting"
})
gold_recipe:clone("burner-crusher-copper")
:replaceIngredient("gold-plate", "copper-plate")
:assign({
localised_name = { "entity-name.burner-crusher" },
icons = {
{ icon = data.raw.item["burner-crusher"].icon },
{ icon = "__base__/graphics/icons/copper-plate.png", scale = 0.25, shift = { 8, 8 } }
}
})
:unlockedByTechnology("copper-processing")
:apply()

View file

@ -2,7 +2,6 @@ require("hot-metals")
require("wood-military")
require("metal-and-stars")
require("alien-biomes")
require("planet-picker")
require("aai-loaders")
require("nuclear-science")
require("lane-splitters")
require("wood-industry")

View file

@ -1,5 +1,3 @@
require("aai-loaders-final")
if not data.raw.technology["legendary-quality"] then
table.removeValue(data.raw.technology["quality-assembler"].prerequisites, "legendary-quality")
end

View file

@ -1,16 +0,0 @@
local Technology = require("__cf-lib__/data/Technology")
if not mods["gleba-reborn"] then return end
Technology:new("tree-seeding")
:setPrerequisites({ "wood-science-pack" })
:assign({
unit = {
count = 10,
ingredients = {
{ "wood-science-pack", 1 }
},
time = 10
}
})
.prototype.research_trigger = nil

View file

@ -1,38 +0,0 @@
local Recipe = require("__cf-lib__/data/Recipe")
local Technology = require("__cf-lib__/data/Technology")
if not mods["lane-splitters"] then return end
local lane_splitter = make_tier({
name = "wood-lane-splitter",
base_belt = "wood-transport-belt",
base_splitter = "wood-splitter",
health = 150,
next_upgrade = "lane-splitter",
})
lane_splitter.prototype.icon = Lignumis.graphics .. "icons/wood-lane-splitter.png"
lane_splitter.prototype.dying_explosion = "transport-belt-explosion"
lane_splitter.prototype.structure.east.filename = data.raw.splitter["wood-splitter"].structure.east.filename
lane_splitter.prototype.structure.south.filename = data.raw.splitter["wood-splitter"].structure.south.filename
lane_splitter.prototype.structure.west.filename = data.raw.splitter["wood-splitter"].structure.west.filename
lane_splitter.prototype.structure.north.filename = data.raw.splitter["wood-splitter"].structure.north.filename
lane_splitter.prototype.structure_patch.east.filename = data.raw.splitter["wood-splitter"].structure_patch.east.filename
lane_splitter.prototype.structure_patch.south.filename = data.raw.splitter["wood-splitter"].structure_patch.south.filename
lane_splitter.prototype.structure_patch.west.filename = data.raw.splitter["wood-splitter"].structure_patch.west.filename
lane_splitter.prototype.structure_patch.north.filename = data.raw.splitter["wood-splitter"].structure_patch.north.filename
lane_splitter.item.icon = Lignumis.graphics .. "icons/wood-lane-splitter.png"
lane_splitter.item.order = "d[lane-splitter]-0[wood-lane-splitter]"
lane_splitter.recipe.category = "wood-processing-or-assembling"
data:extend({
lane_splitter.prototype,
lane_splitter.item,
lane_splitter.recipe,
})
Technology:new("wood-logistics"):addRecipe("wood-lane-splitter")
if mods["aai-industry"] and settings.startup["lignumis-basic-circuit-board"].value then
Recipe:new("lane-splitter"):replaceIngredient("electronic-circuit", "basic-circuit-board")
end

View file

@ -0,0 +1,7 @@
local Technology = require("__cf-lib__/data/Technology")
if not mods["planet-picker"] and not mods["any-planet-start"] then return end
local technology = Technology:new("planet-discovery-lignumis")
technology:setPrerequisites({ "space-platform-thruster" })
technology:addIngredients({ "logistic-science-pack", "chemical-science-pack", "space-science-pack" })

View file

@ -1,4 +1 @@
require("aai-industry")
require("gleba-reborn")
require("any-planet-start")
require("crushing-industry")

View file

@ -1,3 +0,0 @@
if not mods["wood-industry"] then return end
data.raw.item["woodchips"].fuel_category = "wood"

View file

@ -7,7 +7,7 @@ data:extend({
{
type = "item",
name = "basic-circuit-board",
icons = { { icon = Lignumis.graphics .. "icons/basic-circuit-board.png", icon_size = 64 } },
icon = Lignumis.graphics .. "icons/basic-circuit-board.png",
subgroup = "intermediate-product",
order = "c[circuits]-0[basic-circuit-board]",
inventory_move_sound = item_sounds.electric_small_inventory_move,

View file

@ -2,7 +2,6 @@ local item_sounds = require("__base__.prototypes.item_sounds")
local item_tints = require("__base__.prototypes.item-tints")
local basic_circuit_board = settings.startup["lignumis-basic-circuit-board"].value
local early_robots = settings.startup["lignumis-early-robots"].value
local function robot(color)
local result = table.deepcopy(data.raw["construction-robot"]["construction-robot"])
@ -10,10 +9,8 @@ local function robot(color)
result.icon = Lignumis.graphics .. "icons/basic-construction-robot-" .. color .. ".png"
result.minable.result = "basic-construction-robot-" .. color
result.max_health = 50
result.speed = early_robots and 0.05 or 0.04
result.max_energy = "1MJ"
result.energy_per_tick = "0.04kJ"
result.energy_per_move = "0.3kJ"
result.speed = 0.04
result.max_energy = "2MJ"
result.idle.filename = Lignumis.graphics .. "entity/basic-construction-robot/basic-construction-robot-" ..
color .. ".png"
result.in_motion.filename = Lignumis.graphics .. "entity/basic-construction-robot/basic-construction-robot-" ..
@ -86,10 +83,9 @@ local function generator(color)
energy_source = {
type = "electric",
usage_priority = "secondary-output",
output_flow_limit = "100kW",
buffer_capacity = "5MJ"
output_flow_limit = "200kW"
},
power = "100kW",
power = "200kW",
categories = { "armor" }
}
end
@ -181,16 +177,15 @@ local gold_robot_technology = {
modifier = true
}
},
prerequisites = { early_robots and "wood-science-pack" or "steam-science-pack" },
prerequisites = { "steam-science-pack" },
unit = {
count = 200,
ingredients = early_robots and { { "wood-science-pack", 1 } } or {
ingredients = {
{ "wood-science-pack", 1 },
{ "steam-science-pack", 1 }
},
time = 15
},
ignore_tech_cost_multiplier = early_robots
}
}
local copper_robot_technology = {
@ -250,22 +245,22 @@ data:extend({
robot("copper"),
robot_item("copper", 1),
robot_recipe("copper", {
{ type = "item", name = "copper-plate", amount = 2 },
{ type = "item", name = "wooden-gear-wheel", amount = 5 },
{ type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 5 }
{ type = "item", name = "copper-plate", amount = 2 },
{ type = "item", name = "iron-gear-wheel", amount = 5 },
{ type = "item", name = "electronic-circuit", amount = 5 }
}),
generator("copper"),
generator_item("copper", 1),
generator_recipe("copper", {
{ type = "item", name = "copper-plate", amount = 10 },
{ type = "item", name = "wooden-gear-wheel", amount = 10 }
{ type = "item", name = "copper-plate", amount = 10 },
{ type = "item", name = "iron-gear-wheel", amount = 10 }
}),
roboport("copper"),
roboport_item("copper", 1),
roboport_recipe("copper", {
{ type = "item", name = "copper-plate", amount = 5 },
{ type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 10 },
{ type = "item", name = "wooden-gear-wheel", amount = 10 }
{ type = "item", name = "copper-plate", amount = 5 },
{ type = "item", name = "electronic-circuit", amount = 10 },
{ type = "item", name = "iron-gear-wheel", amount = 10 }
}),
-- Technology

View file

@ -57,9 +57,6 @@ local turret_recipe = {
},
results = { { type = "item", name = "basic-gun-turret", amount = 1 } }
}
if settings.startup["lignumis-lumber-mill-more-recipes"].value then
turret_recipe.category = "wood-processing-or-assembling"
end
local turret_technology = {
type = "technology",

View file

@ -1,5 +1,4 @@
local item_sounds = require("__base__.prototypes.item_sounds")
local Technology = require("__cf-lib__/data/Technology")
local basic_circuit_board = settings.startup["lignumis-basic-circuit-board"].value
local gfx = Lignumis.graphics .. "entity/burner-agricultural-tower/"
@ -9,7 +8,7 @@ agricultural_tower.name = "burner-agricultural-tower"
agricultural_tower.minable.result = "burner-agricultural-tower"
agricultural_tower.next_upgrade = "agricultural-tower"
agricultural_tower.corpses = "burner-agricultural-tower-remnants"
agricultural_tower.icons = { { icon = Lignumis.graphics .. "icons/burner-agricultural-tower.png", icon_size = 64 } }
agricultural_tower.icon = Lignumis.graphics .. "icons/burner-agricultural-tower.png"
agricultural_tower.graphics_set.animation.layers[1].filename = gfx .. "burner-agricultural-tower-base.png"
agricultural_tower.graphics_set.working_visualisations[1].animation.filename = gfx ..
"burner-agricultural-tower-base.png"
@ -18,7 +17,7 @@ agricultural_tower.energy_source = {
fuel_categories = { "chemical" },
effectivity = 1,
fuel_inventory_size = 1,
emissions_per_minute = { noise = 75 }
emissions_per_minute = { noise = 100 }
}
agricultural_tower.resistances = nil
agricultural_tower.input_inventory_size = 1
@ -83,7 +82,6 @@ data:extend({
{
type = "recipe",
name = "burner-agricultural-tower",
category = "wood-processing-or-assembling",
energy_required = 10,
ingredients = {
{ type = "item", name = "stone-brick", amount = 5 },
@ -111,27 +109,30 @@ tech.ignore_tech_cost_multiplier = true
data.raw.technology["fish-breeding"].prerequisites = { "agricultural-science-pack" }
data:extend({
{
type = "recipe",
name = "burner-agricultural-tower-copper",
category = "wood-processing-or-assembling",
localised_name = { "entity-name.burner-agricultural-tower" },
icons = {
{ icon = Lignumis.graphics .. "icons/burner-agricultural-tower.png" },
{ icon = basic_circuit_board and "__base__/graphics/icons/copper-plate.png" or "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } }
},
energy_required = 10,
ingredients = {
{ type = "item", name = "stone-brick", amount = 5 },
{ type = "item", name = "wooden-gear-wheel", amount = 20 },
{ type = "item", name = "lumber", amount = 20 },
{ type = "item", name = "copper-plate", amount = 10 },
{ type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 10 }
},
results = { { type = "item", name = "burner-agricultural-tower", amount = 1 } },
enabled = false
}
})
if not basic_circuit_board then
data:extend({
{
type = "recipe",
name = "burner-agricultural-tower-electronic-circuit",
localised_name = { "entity-name.burner-agricultural-tower" },
icons = {
{ icon = Lignumis.graphics .. "icons/burner-agricultural-tower.png" },
{ icon = "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } }
},
energy_required = 10,
ingredients = {
{ type = "item", name = "stone-brick", amount = 5 },
{ type = "item", name = "wooden-gear-wheel", amount = 20 },
{ type = "item", name = "lumber", amount = 20 },
{ type = "item", name = "electronic-circuit", amount = 10 }
},
results = { { type = "item", name = "burner-agricultural-tower", amount = 1 } },
enabled = false
}
})
Technology:new(basic_circuit_board and "copper-processing" or "electronics"):addRecipe("burner-agricultural-tower-copper")
table.insert(data.raw.technology["electronics"].effects, {
type = "unlock-recipe",
recipe = "burner-agricultural-tower-electronic-circuit"
})
end

View file

@ -5,7 +5,7 @@ local gfx = Lignumis.graphics .. "entity/burner-assembling-machine/"
local assembling_machine = table.deepcopy(data.raw["assembling-machine"]["assembling-machine-1"])
assembling_machine.name = "burner-assembling-machine"
assembling_machine.icons = { { icon = Lignumis.graphics .. "icons/burner-assembling-machine.png", icon_size = 64 } }
assembling_machine.icon = Lignumis.graphics .. "icons/burner-assembling-machine.png"
assembling_machine.minable.result = "burner-assembling-machine"
assembling_machine.next_upgrade = "steam-assembling-machine"
assembling_machine.corpse = "burner-assembling-machine-remnants"
@ -50,8 +50,6 @@ remnants.animation[2].filename = gfx .. "burner-assembling-machine-remnants.png"
remnants.animation[3].filename = gfx .. "burner-assembling-machine-remnants.png"
remnants.order = "0[burner-assembling-machine]"
local crafting_category = settings.startup["lignumis-lumber-mill-more-recipes"].value and "wood-processing-or-assembling" or "crafting"
data:extend({
assembling_machine,
remnants,
@ -70,7 +68,6 @@ data:extend({
{
type = "recipe",
name = "burner-assembling-machine",
category = crafting_category,
enabled = false,
ingredients = {
{ type = "item", name = "wooden-gear-wheel", amount = 5 },
@ -111,11 +108,10 @@ if not basic_circuit_board then
{
type = "recipe",
name = "burner-assembling-machine-electronic-circuit",
category = crafting_category,
localised_name = { "entity-name.burner-assembling-machine" },
icons = {
{ icon = Lignumis.graphics .. "icons/burner-assembling-machine.png" },
{ icon = "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } }
{ icon = "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } }
},
enabled = false,
ingredients = {

View file

@ -44,8 +44,6 @@ remnants.animation[3].filename = gfx .. "burner-long-handed-inserter-remnants.pn
remnants.animation[4].filename = gfx .. "burner-long-handed-inserter-remnants.png"
remnants.order = "a-c-0"
local crafting_category = settings.startup["lignumis-lumber-mill-more-recipes"].value and "wood-processing-or-assembling" or "crafting"
data:extend({
long_handed_inserter,
remnants,
@ -65,7 +63,6 @@ data:extend({
{
type = "recipe",
name = "burner-long-handed-inserter",
category = crafting_category,
enabled = false,
ingredients = {
{ type = "item", name = "wooden-gear-wheel", amount = 1 },

View file

@ -29,7 +29,7 @@ require("active-noise-cancelling-tower")
require("quality-assembler")
require("decoratives")
require("wood-military")
require("basic-circuit-board")
require("basic-circuit-boards")
require("enemies")
require("noise")

View file

@ -2,7 +2,8 @@ local particle_animations = require("__space-age__/prototypes/particle-animation
local base_sounds = require("__base__.prototypes.entity.sounds")
local space_age_sounds = require("__space-age__.prototypes.entity.sounds")
local simulations = require("__space-age__.prototypes.factoriopedia-simulations")
local biter_ai_settings = require("__base__.prototypes.entity.biter-ai-settings")
local enemy_autoplace = require("__base__.prototypes.entity.enemy-autoplace-utils")
local biter_ai_settings = require ("__base__.prototypes.entity.biter-ai-settings")
local blood_particles = {
"blood-particle-small",
@ -169,7 +170,7 @@ function make_wriggler(prefix, scale, health, damage, tints, factoriopedia_simul
local tint_mask = tints.mask
local tint_body = tints.body
local function attack_parameters()
local function attack_parameters(lifesteal)
local cooldown = 26
return {
ammo_category = "melee",
@ -179,10 +180,20 @@ function make_wriggler(prefix, scale, health, damage, tints, factoriopedia_simul
type = "direct",
action_delivery = {
type = "instant",
source_effects = lifesteal and {
{
type = "damage",
damage = { amount = -health / 50 / 60 * cooldown * 1.1, type = "poison" } -- offsets negative regeneration when attacking
}
} or nil,
target_effects = {
{
type = "damage",
damage = { amount = 5 * damage, type = "physical" }
},
{
type = "damage",
damage = { amount = 5 * damage, type = "poison" }
}
}
}
@ -207,7 +218,7 @@ function make_wriggler(prefix, scale, health, damage, tints, factoriopedia_simul
local wriggler = {
type = "unit",
name = prefix .. "wriggler-pentapod-premature",
icon = Lignumis.graphics .. "icons/" .. prefix .. "wriggler.png",
icon = "__lignumis__/graphics/icons/" .. prefix .. "wriggler.png",
subgroup = "enemies",
order = "gleba-a-wriggler-" .. tostring(scale),
factoriopedia_simulation = factoriopedia_simulation_premature,
@ -218,19 +229,25 @@ function make_wriggler(prefix, scale, health, damage, tints, factoriopedia_simul
flags = { "placeable-player", "placeable-enemy", "placeable-off-grid", "not-repairable", "breaths-air" },
absorptions_to_join_attack = { noise = 1 },
ai_settings = biter_ai_settings,
attack_parameters = attack_parameters(),
attack_parameters = attack_parameters(true),
corpse = prefix .. "wriggler-pentapod-corpse",
damaged_trigger_effect = gleba_hit_effects(),
distance_per_frame = 0.125,
distraction_cooldown = 300,
dying_explosion = prefix .. "wriggler-die",
dying_sound = sounds.dying_sound,
healing_per_tick = -health / 1 / 60,
healing_per_tick = -health / 50 / 60,
impact_category = "organic",
max_health = health,
max_pursue_distance = 30,
min_pursue_time = 300,
movement_speed = 0.15 * (1 + (scale - 1) / 2),
max_pursue_distance = 50,
min_pursue_time = 600,
movement_speed = 0.2 * (1 + (scale - 1) / 2),
resistances = {
{
percent = 50,
type = "laser"
}
},
run_animation = {
layers = {
wriggler_spritesheet("run", 21, 0.48, scale, tint_body),
@ -263,12 +280,12 @@ function make_wriggler(prefix, scale, health, damage, tints, factoriopedia_simul
wriggler_stable.factoriopedia_simulation = factoriopedia_simulation
wriggler_stable.healing_per_tick = health / 500 / 60
wriggler_stable.absorptions_to_join_attack = { noise = 1 }
wriggler_stable.attack_parameters = attack_parameters()
wriggler_stable.attack_parameters = attack_parameters(false)
local wriggler_corpse = {
type = "corpse",
name = prefix .. "wriggler-pentapod-corpse",
icon = Lignumis.graphics .. "icons/" .. prefix .. "wriggler-corpse.png",
icon = "__lignumis__/graphics/icons/" .. prefix .. "wriggler-corpse.png",
subgroup = "corpses",
order = "c[corpse]-d[gleba-enemies-corpses]-d[wriggler]" .. tostring(scale),
hidden_in_factoriopedia = true,
@ -386,6 +403,50 @@ function make_wriggler(prefix, scale, health, damage, tints, factoriopedia_simul
tail_width = 3,
rotate_offsets = false
},
--{
-- type = "create-particle",
-- repeat_count = 2,
-- repeat_count_deviation = 0,
-- probability = 1,
-- affects_target = false,
-- show_in_tooltip = false,
-- particle_name = "pentapod-entrails-particle-small",
-- offsets = {
-- { 0, -0.4 }
-- },
-- offset_deviation = { { -0.5, -0.5 }, { 0.5, 0.5 } },
-- initial_height = 0.1,
-- initial_height_deviation = 0.1,
-- initial_vertical_speed = 0.06,
-- initial_vertical_speed_deviation = 0.05,
-- speed_from_center = 0.07,
-- speed_from_center_deviation = 0,
-- frame_speed = 1,
-- frame_speed_deviation = 0,
-- rotate_offsets = false
--},
--{
-- type = "create-particle",
-- repeat_count = 10,
-- repeat_count_deviation = 0,
-- probability = 1,
-- affects_target = false,
-- show_in_tooltip = false,
-- particle_name = prefix .. "wriggler-skin-particle",
-- offsets = {
-- { 0, -0.4 }
-- },
-- offset_deviation = { { -0.5, -0.5 }, { 0.5, 0.5 } },
-- initial_height = 0.1,
-- initial_height_deviation = 0.1,
-- initial_vertical_speed = 0.05,
-- initial_vertical_speed_deviation = 0.02,
-- speed_from_center = 0.02,
-- speed_from_center_deviation = 0.1,
-- frame_speed = 1,
-- frame_speed_deviation = 0,
-- rotate_offsets = false
--},
{
type = "play-sound",
sound = base_sounds.medium_gore
@ -425,7 +486,7 @@ end
local gleba_small_mask_tint = { 103, 151, 11, 255 }
local gleba_small_body_tint = { 125, 124, 111, 255 }
make_wriggler("lignumis-small-", 0.2, 10, 0.1,
make_wriggler("lignumis-small-", 0.2, 20, 0.1,
{
mask = fade(lerp_color(gleba_small_mask_tint, { 255, 200, 0, 255 }, 0.2), 0.2),
body = grey_overlay(lerp_color(gleba_small_body_tint, { 255, 0, 0, 255 }, 0.2), 0.2)
@ -435,7 +496,7 @@ make_wriggler("lignumis-small-", 0.2, 10, 0.1,
space_age_sounds.wriggler_pentapod.small
)
make_wriggler("lignumis-medium-", 0.4, 20, 0.2,
make_wriggler("lignumis-medium-", 0.4, 40, 0.2,
{
mask = fade(lerp_color(gleba_small_mask_tint, { 255, 200, 0, 255 }, 0.4), 0.2),
body = grey_overlay(lerp_color(gleba_small_body_tint, { 255, 0, 0, 255 }, 0.4), 0.2)
@ -445,79 +506,6 @@ make_wriggler("lignumis-medium-", 0.4, 20, 0.2,
space_age_sounds.wriggler_pentapod.small
)
data:extend({
{
type = "noise-expression",
name = "enemy_lignumis_intensity",
-- biter placement stops increasing in "intensity" after 75 chunks (2400 tiles)
expression = "clamp(distance, 0, 2400) / 325"
},
{
type = "noise-expression",
name = "enemy_lignumis_radius",
expression = "sqrt(var('control:lignumis_enemy_base:size')) * (15 + 4 * enemy_lignumis_intensity)"
},
{
type = "noise-expression",
name = "enemy_lignumis_frequency",
-- bases_per_km2 = 10 + 3 * enemy_lignumis_intensity
expression = "(0.00001 + 0.000003 * enemy_lignumis_intensity) * var('control:lignumis_enemy_base:frequency')"
},
{
type = "noise-expression",
name = "enemy_lignumis_probability",
expression = "spot_noise{x = x,\z
y = y,\z
density_expression = spot_quantity_expression * max(0, enemy_lignumis_frequency),\z
spot_quantity_expression = spot_quantity_expression,\z
spot_radius_expression = spot_radius_expression,\z
spot_favorability_expression = 1,\z
seed0 = map_seed,\z
seed1 = 123,\z
region_size = 512,\z
candidate_point_count = 100,\z
hard_region_target_quantity = 0,\z
basement_value = -1000,\z
maximum_spot_basement_radius = 128} + \z
(blob(1/8, 1) + blob(1/24, 1) + blob(1/64, 2) - 0.5) * spot_radius_expression / 150 * \z
(0.1 + 0.9 * clamp(distance / 3000, 0, 1)) - 0.3 + min(0, 20 / starting_area_radius * distance - 20)",
local_expressions =
{
spot_radius_expression = "max(0, enemy_lignumis_radius)",
spot_quantity_expression = "pi/90 * spot_radius_expression ^ 3"
},
local_functions =
{
blob =
{
parameters = { "input_scale", "output_scale" },
expression =
"basis_noise{x = x, y = y, seed0 = map_seed, seed1 = 123, input_scale = input_scale, output_scale = output_scale}"
}
}
},
{
type = "noise-function",
name = "enemy_autoplace_lignumis",
parameters = { "distance_factor", "seed" },
expression = "random_penalty{x = x + seed,\z
y = y,\z
source = min(enemy_lignumis_probability * max(0, 1 + 0.002 * distance_factor * (-312 * distance_factor - starting_area_radius + distance)),\z
0.25 + distance_factor * 0.05),\z
amplitude = 0.1}"
}
})
local function lignumis_spawner_autoplace(probability_expression, order)
return {
control = "lignumis_enemy_base",
order = order,
force = "enemy",
probability_expression = probability_expression,
richness_expression = 1
}
end
local spawner = table.deepcopy(data.raw["unit-spawner"]["gleba-spawner-small"])
table.assign(spawner, {
name = "lignumis-spawner-small",
@ -527,16 +515,17 @@ table.assign(spawner, {
},
max_count_of_owned_units = 7,
max_friends_around_to_spawn = 5,
spawning_cooldown = { 360, 150 },
spawning_radius = 10,
spawning_spacing = 3,
max_spawn_shift = 0,
max_richness_for_spawn_shift = 100,
resistances = {},
healing_per_tick = 1 / 60,
spawning_cooldown = { 60, 20 },
spawning_radius = 4,
call_for_help_radius = 20,
autoplace = lignumis_spawner_autoplace("enemy_autoplace_lignumis(0, 548)", "b[enemy]-0[spawner]"),
absorptions_per_second = { noise = { absolute = 40, proportional = 0.01 } },
call_for_help_radius = 50,
--spawning_cooldown = { 60, 20 },
--spawning_radius = 4,
--call_for_help_radius = 20,
autoplace = enemy_autoplace.enemy_spawner_autoplace("enemy_autoplace_base(0, 6)"),
absorptions_per_second = { noise = { absolute = 20, proportional = 0.01 } },
})
spawner.collision_mask = nil
spawner.loot = nil

View file

@ -35,4 +35,3 @@ update_fuel_categories(data.raw["reactor"])
update_fuel_categories(data.raw["car"])
update_fuel_categories(data.raw["locomotive"])
update_fuel_categories(data.raw["generator-equipment"])
update_fuel_categories(data.raw["burner-generator"])

View file

@ -12,8 +12,7 @@ data:extend({
inventory_move_sound = item_sounds.metal_small_inventory_move,
pick_sound = item_sounds.metal_small_inventory_pickup,
drop_sound = item_sounds.metal_small_inventory_move,
stack_size = 100,
enabled = true
stack_size = 100
},
{
type = "recipe",

View file

@ -7,7 +7,7 @@ data:extend({
{
type = "autoplace-control",
name = "lignumis_gold",
localised_name = { "", "[entity=gold-patch] ", { "entity-name.gold-patch" } },
localised_name = {"", "[entity=gold-patch] ", {"entity-name.gold-patch"}},
richness = true,
order = "0-b",
category = "resource"
@ -15,17 +15,9 @@ data:extend({
{
type = "autoplace-control",
name = "lignumis_peat",
localised_name = { "", "[entity=peat] ", { "entity-name.peat" } },
localised_name = {"", "[entity=peat] ", {"entity-name.peat"}},
richness = true,
order = "0-c",
category = "resource"
},
{
type = "autoplace-control",
name = "lignumis_enemy_base",
richness = false,
order = "0-a",
category = "enemy",
can_be_disabled = true
}
})

View file

@ -17,7 +17,7 @@ return {
["stone"] = { richness = 1/6, frequency = 4, size = 4 },
["water"] = {},
["trees"] = { richness = 3, frequency = 4, size = 3 },
["lignumis_enemy_base"] = { frequency = 0.75, size = 0.75 },
["enemy-base"] = {},
["rocks"] = {},
["starting_area_moisture"] = { size = 1, richness = 6 },
["nauvis_cliff"] = { frequency = 2, size = 2 }

View file

@ -3,11 +3,6 @@ local effects = require("__core__/lualib/surface-render-parameter-effects")
local procession_graphic_catalogue_types = require("__base__/prototypes/planet/procession-graphic-catalogue-types")
local asteroid_util = require("__space-age__/prototypes/planet/asteroid-spawn-definitions")
local target_planet = settings.startup["lignumis-second-planet"].value or "nauvis"
if mods["any-planet-start"] then
target_planet = settings.startup["aps-planet"].value ~= "none" and settings.startup["aps-planet"].value or target_planet
end
local lignumis_chunks = 0.025
local lignumis_ratio = {1, 1, 1 , 0}
local nauvis_lignumis = {
@ -28,7 +23,7 @@ PlanetsLib:extend({
orbit = {
parent = {
type = "planet",
name = target_planet
name = "nauvis"
},
distance = 2,
orientation = 0.16,
@ -119,9 +114,9 @@ PlanetsLib:extend({
data:extend({
{
type = "space-connection",
name = target_planet .. "-lignumis",
name = "nauvis-lignumis",
subgroup = "planet-connections",
from = target_planet,
from = "nauvis",
to = "lignumis",
order = "0",
length = 2000,

View file

@ -1,4 +1,3 @@
local Technology = require("__cf-lib__/data/Technology")
local LumberMillFactory = require(MF.buildings .. "LumberMill")
local LumberMill = LumberMillFactory()
@ -30,10 +29,10 @@ local lumber_mill_item = LumberMill.ItemBuilder:new()
LumberMill.RecipeBuilder:new()
:ingredients(table.trim({
{ type = "item", name = "stone-brick", amount = 40 },
{ type = "item", name = "lumber", amount = 100 },
{ type = "item", name = "wooden-gear-wheel", amount = 100 },
{ type = "item", name = "gold-plate", amount = basic_circuit_board and 30 or 60 },
{ type = "item", name = "stone-brick", amount = 40 },
{ type = "item", name = "lumber", amount = 100 },
{ type = "item", name = "wooden-gear-wheel", amount = 100 },
{ type = "item", name = "gold-plate", amount = basic_circuit_board and 30 or 60 },
basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 30 } or nil,
{ type = "item", name = "burner-assembling-machine", amount = 5 }
}))
@ -48,23 +47,27 @@ LumberMill.TechnologyBuilder:new()
:ingredients({ { "wood-science-pack", 1 }, { "steam-science-pack", 1 } })
:apply()
LumberMill.RecipeBuilder:new()
:ingredients({
{ type = "item", name = "stone-brick", amount = 40 },
{ type = "item", name = "lumber", amount = 50 },
{ type = "item", name = "wooden-gear-wheel", amount = 50 },
{ type = "item", name = "copper-plate", amount = basic_circuit_board and 30 or 60 },
{ type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 30 },
{ type = "item", name = "assembling-machine-1", amount = 2 }
})
:apply({
name = "lumber-mill-copper",
localised_name = { "entity-name.lumber-mill" },
category = "wood-processing-or-assembling",
icons = {
{ icon = lumber_mill_item.icon },
{ icon = basic_circuit_board and "__base__/graphics/icons/copper-plate.png" or "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } }
}
})
if not basic_circuit_board then
LumberMill.RecipeBuilder:new()
:ingredients({
{ type = "item", name = "stone-brick", amount = 40 },
{ type = "item", name = "lumber", amount = 50 },
{ type = "item", name = "iron-gear-wheel", amount = 50 },
{ type = "item", name = "electronic-circuit", amount = 20 },
{ type = "item", name = "assembling-machine-1", amount = 2 }
})
:apply({
name = "lumber-mill-electronic-circuit",
localised_name = { "entity-name.lumber-mill" },
category = "wood-processing-or-assembling",
icons = {
{ icon = lumber_mill_item.icon },
{ icon = "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } }
}
})
Technology:new(basic_circuit_board and "copper-processing" or "electronics"):addRecipe("lumber-mill-copper")
table.insert(data.raw.technology["electronics"].effects, {
type = "unlock-recipe",
recipe = "lumber-mill-electronic-circuit"
})
end

View file

@ -65,9 +65,9 @@ end
-- Walls absorb noise
emit_constant("wall", "wooden-wall", -15)
emit_constant("wall", "stone-wall", -25)
emit_constant("gate", "gate", -20)
emit_constant("wall", "wooden-wall", -10)
emit_constant("wall", "stone-wall", -20)
emit_constant("gate", "gate", -10)
-- Buildings emit noise
@ -78,8 +78,8 @@ emit("mining-drill", "burner-mining-drill", 50)
emit("mining-drill", "electric-mining-drill", 100)
emit("mining-drill", "big-mining-drill", 200)
--emit("mining-drill", "deep-miner", 2000)
--emit("agricultural-tower", "burner-agricultural-tower", 75)
emit("agricultural-tower", "agricultural-tower", 75)
--emit("agricultural-tower", "burner-agricultural-tower", 100)
emit("agricultural-tower", "agricultural-tower", 100)
--emit("assembling-machine", "burner-assembling-machine", 50)
--emit("assembling-machine", "steam-assembling-machine", 50)
emit("assembling-machine", "assembling-machine-1", 10)
@ -100,18 +100,18 @@ emit("lab", "biolab", 20)
emit("locomotive", "locomotive", 200)
emit_constant("locomotive", "locomotive", 10)
--emit_constant("transport-belt", "wood-transport-belt", 2.4)
emit_constant("transport-belt", "transport-belt", 3)
emit_constant("transport-belt", "fast-transport-belt", 4)
emit_constant("transport-belt", "express-transport-belt", 6)
emit_constant("transport-belt", "turbo-transport-belt", 8)
--emit_constant("underground-belt", "wood-underground-belt", 15)
emit_constant("underground-belt", "underground-belt", 20)
emit_constant("underground-belt", "fast-underground-belt", 30)
emit_constant("underground-belt", "express-underground-belt", 40)
emit_constant("underground-belt", "turbo-underground-belt", 50)
--emit_constant("splitter", "wood-splitter", 30)
emit_constant("splitter", "splitter", 40)
emit_constant("splitter", "fast-splitter", 50)
emit_constant("splitter", "express-splitter", 60)
emit_constant("splitter", "turbo-splitter", 80)
--emit_constant("transport-belt", "wood-transport-belt", 3)
emit_constant("transport-belt", "transport-belt", 4)
emit_constant("transport-belt", "fast-transport-belt", 8)
emit_constant("transport-belt", "express-transport-belt", 12)
emit_constant("transport-belt", "turbo-transport-belt", 16)
--emit_constant("underground-belt", "wood-underground-belt", 30)
emit_constant("underground-belt", "underground-belt", 40)
emit_constant("underground-belt", "fast-underground-belt", 50)
emit_constant("underground-belt", "express-underground-belt", 60)
emit_constant("underground-belt", "turbo-underground-belt", 80)
--emit_constant("splitter", "wood-splitter", 60)
emit_constant("splitter", "splitter", 70)
emit_constant("splitter", "fast-splitter", 80)
emit_constant("splitter", "express-splitter", 90)
emit_constant("splitter", "turbo-splitter", 100)

View file

@ -77,7 +77,7 @@ QualityAssembler.EntityBuilder:new()
crafting_speed = 4,
module_slots = 6,
allowed_effects = { "pollution", "quality" },
effect_receiver = { base_effect = { quality = 2.5 } }
effect_receiver = { base_effect = { quality = 10 } }
})
QualityAssembler.ItemBuilder:new():apply()

View file

@ -6,7 +6,7 @@ local gfx = Lignumis.graphics .. "entity/steam-assembling-machine/"
local assembling_machine = table.deepcopy(data.raw["assembling-machine"]["assembling-machine-2"])
assembling_machine.name = "steam-assembling-machine"
assembling_machine.icons = { { icon = Lignumis.graphics .. "icons/steam-assembling-machine.png", icon_size = 64 } }
assembling_machine.icon = Lignumis.graphics .. "icons/steam-assembling-machine.png"
assembling_machine.minable.result = "steam-assembling-machine"
assembling_machine.next_upgrade = "assembling-machine-1"
assembling_machine.module_slots = nil
@ -30,11 +30,11 @@ assembling_machine.crafting_speed = 0.5
assembling_machine.energy_usage = "25kW"
assembling_machine.energy_source = {
type = "fluid",
maximum_temperature = 165,
fuel_categories = { "steam" },
effectivity = 1,
emissions_per_minute = { noise = 50 },
scale_fluid_usage = true,
fluid_box = {
filter = "steam",
production_type = "input",
pipe_picture = machinepipes(),
pipe_covers = pipecovers(),
@ -106,6 +106,6 @@ data:extend({
ingredients = { { "wood-science-pack", 1 } },
time = 15
},
ignore_tech_cost_multiplier = false
ignore_tech_cost_multiplier = true
}
})

View file

@ -83,81 +83,83 @@ data:extend({
}
})
data:extend({
{
type = "technology",
name = "planet-discovery-nauvis",
icons = util.technology_icon_constant_planet(Lignumis.graphics .. "technology/nauvis.png"),
icon_size = 256,
essential = true,
effects = {
{
type = "unlock-space-location",
space_location = "nauvis",
use_icon_overlay_constant = true
if not mods["planet-picker"] and not mods["any-planet-start"] then
data:extend({
{
type = "technology",
name = "planet-discovery-nauvis",
icons = util.technology_icon_constant_planet(Lignumis.graphics .. "technology/nauvis.png"),
icon_size = 256,
essential = true,
effects = {
{
type = "unlock-space-location",
space_location = "nauvis",
use_icon_overlay_constant = true
},
{
type = "unlock-space-platforms",
modifier = true,
hidden = true
}
},
{
type = "unlock-space-platforms",
modifier = true,
hidden = true
prerequisites = { "provisional-rocketry" },
unit = {
count = 100,
ingredients = {
{ "wood-science-pack", 1 },
{ "steam-science-pack", 1 }
},
time = 30
}
},
prerequisites = { "provisional-rocketry" },
unit = {
count = 100,
ingredients = {
{ "wood-science-pack", 1 },
{ "steam-science-pack", 1 }
{
type = "technology",
name = "iron-processing",
icon = "__base__/graphics/icons/iron-plate.png",
icon_size = 64,
essential = true,
effects = {
{
type = "unlock-recipe",
recipe = "iron-plate"
},
{
type = "unlock-recipe",
recipe = "iron-chest"
},
{
type = "unlock-recipe",
recipe = "iron-gear-wheel"
}
},
time = 30
}
},
{
type = "technology",
name = "iron-processing",
icon = "__base__/graphics/icons/iron-plate.png",
icon_size = 64,
essential = true,
effects = {
{
type = "unlock-recipe",
recipe = "iron-plate"
},
{
type = "unlock-recipe",
recipe = "iron-chest"
},
{
type = "unlock-recipe",
recipe = "iron-gear-wheel"
prerequisites = { "planet-discovery-nauvis" },
research_trigger = {
type = "mine-entity",
entity = "iron-ore"
}
},
prerequisites = { "planet-discovery-nauvis" },
research_trigger = {
type = "mine-entity",
entity = "iron-ore"
}
},
{
type = "technology",
name = "copper-processing",
icon = "__base__/graphics/icons/copper-plate.png",
icon_size = 64,
essential = true,
effects = {
{
type = "unlock-recipe",
recipe = "copper-plate"
{
type = "technology",
name = "copper-processing",
icon = "__base__/graphics/icons/copper-plate.png",
icon_size = 64,
essential = true,
effects = {
{
type = "unlock-recipe",
recipe = "copper-plate"
},
{
type = "unlock-recipe",
recipe = "copper-cable"
}
},
{
type = "unlock-recipe",
recipe = "copper-cable"
prerequisites = { "planet-discovery-nauvis" },
research_trigger = {
type = "mine-entity",
entity = "copper-ore"
}
},
prerequisites = { "planet-discovery-nauvis" },
research_trigger = {
type = "mine-entity",
entity = "copper-ore"
}
}
})
})
end

View file

@ -144,7 +144,6 @@ data:extend({
{
type = "recipe",
name = "wood-lab",
category = "wood-processing-or-assembling",
energy_required = 2,
ingredients = {
{ type = "item", name = "lumber", amount = 10 },

View file

@ -10,13 +10,13 @@ Belt.EntityBuilder:new()
:animationSpeedMultiplier(1.01)
:apply({
transportBelt = {
emissions_per_second = { noise = 0.04 }
emissions_per_second = { noise = 0.05 }
},
undergroundBelt = {
emissions_per_second = { noise = 0.25 }
emissions_per_second = { noise = 0.5 }
},
splitter = {
emissions_per_second = { noise = 0.5 }
emissions_per_second = { noise = 1 }
}
})
@ -41,17 +41,7 @@ Belt.RecipeBuilder:new()
basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 5 } or
{ type = "item", name = "gold-cable", amount = 10 }
})
:apply({
transportBelt = {
category = "wood-processing-or-assembling"
},
undergroundBelt = {
category = "wood-processing-or-assembling"
},
splitter = {
category = "wood-processing-or-assembling"
}
})
:apply()
Belt.TechnologyBuilder:new()
:prerequisites({ "wood-science-pack" })
@ -75,8 +65,7 @@ if not basic_circuit_board then
icons = {
{ icon = splitter_item.icon },
{ icon = "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } }
},
category = "wood-processing-or-assembling"
}
}
})
.splitter

View file

@ -81,7 +81,6 @@ data:extend({
{
type = "recipe",
name = "wood-darts-magazine",
category = "wood-processing-or-assembling",
energy_required = 1,
ingredients = { { type = "item", name = "wood", amount = 2 } },
results = { { type = "item", name = "wood-darts-magazine", amount = 1 } }

View file

@ -17,7 +17,6 @@ data:extend({
{
type = "recipe",
name = "wooden-gear-wheel",
category = "wood-processing-or-assembling",
ingredients = { { type = "item", name = "lumber", amount = 1 } },
results = { { type = "item", name = "wooden-gear-wheel", amount = 2 } },
allow_productivity = true

View file

@ -51,7 +51,7 @@ silo.fluid_boxes_off_when_no_fluid_recipe = true
silo.launch_to_space_platforms = false
silo.rocket_parts_required = 50
silo.rocket_parts_storage_cap = 50
silo.to_be_inserted_to_rocket_inventory_size = 0
silo.to_be_inserted_to_rocket_inventory_size = 1
silo.clamps_on_trigger = {
type = "script",
effect_id = "provisional-rocket-ready"
@ -101,8 +101,7 @@ local rocket_part_recipe = {
{ type = "fluid", name = "wood-pulp", amount = 5 }
},
results = { { type = "item", name = "rocket-part", amount = 1 } },
allow_productivity = true,
auto_recycle = false,
allow_productivity = true
}
local silo_ready = {
@ -122,7 +121,7 @@ local silo_ready = {
min = 1
}
},
flags = { "not-on-map", "not-blueprintable", "not-flammable", "not-repairable", "not-upgradable", "no-automated-item-insertion", "no-automated-item-removal", "not-in-kill-statistics" },
flags = { "not-on-map", "not-blueprintable", "not-deconstructable", "not-flammable", "not-repairable", "not-upgradable", "no-automated-item-insertion", "no-automated-item-removal", "not-in-kill-statistics" },
allow_copy_paste = false,
additional_pastable_entities = { "provisional-rocket-silo" },
collision_mask = { layers = {} },
@ -145,7 +144,3 @@ data:extend({
silo_ready,
silo_ready_item
})
PlanetsLib.restrict_to_planet(silo, "lignumis")
PlanetsLib.restrict_to_planet(silo_recipe, "lignumis")
PlanetsLib.restrict_to_planet(rocket_part_recipe, "lignumis")

View file

@ -1,4 +1,6 @@
local recipe = data.raw.recipe["wooden-wall"]
recipe.ingredients = { { type = "item", name = "lumber", amount = 4 } }
recipe.results = { { type = "item", name = "wooden-wall", amount = 1 } }
recipe.category = "wood-processing-or-assembling"
-- https://mods.factorio.com/mod/Wood-Walls/discussion/679915cbb8bf3c84c65db404
data.raw.corpse["woodenwall-remnants"].icon = "__Wood-Walls__/graphics/wooden-wall/wooden-wall.png"

View file

@ -20,7 +20,6 @@ local drill_item = data.raw["item"]["burner-mining-drill"]
drill_item.icon = Lignumis.graphics .. "icons/burner-mining-drill.png"
local drill_recipe = data.raw["recipe"]["burner-mining-drill"]
drill_recipe.category = "wood-processing-or-assembling"
drill_recipe.ingredients = {
{ type = "item", name = "stone-furnace", amount = 1 },
{ type = "item", name = "wooden-gear-wheel", amount = basic_circuit_board and 2 or 3 },
@ -41,14 +40,10 @@ burner_inserter.energy_source.initial_fuel_percent = 0.15
data.raw.item["burner-inserter"].icon = Lignumis.graphics .. "icons/burner-inserter.png"
local burner_inserter_recipe = data.raw.recipe["burner-inserter"]
burner_inserter_recipe.ingredients = {
data.raw.recipe["burner-inserter"].ingredients = {
{ type = "item", name = "wooden-gear-wheel", amount = 1 },
{ type = "item", name = "lumber", amount = 1 }
}
if settings.startup["lignumis-lumber-mill-more-recipes"].value then
burner_inserter_recipe.category = "wood-processing-or-assembling"
end
-- Stone furnace
@ -64,7 +59,14 @@ stone_furnace_remnants.animation[1].filename = Lignumis.graphics .. "entity/ston
-- Lab
Recipe:new("lab"):replaceIngredient("transport-belt", "wood-transport-belt")
if settings.startup["lignumis-belt-progression"].value then
local lab_recipe = data.raw.recipe["lab"]
for _, ingredient in pairs(lab_recipe.ingredients) do
if ingredient.name == "transport-belt" then
ingredient.name = "wood-transport-belt"
end
end
end
-- Gun turret
@ -102,7 +104,6 @@ for _, tree in pairs(data.raw.tree) do
local woodResult = { type = "item", name = "wood", amount = nil, amount_min = 2, amount_max = 10 }
if minable.results and #woodResults > 0 then
table.assign(woodResults[1], woodResult)
woodResults[1].amount = nil
else
minable.results = { woodResult }
end
@ -128,12 +129,14 @@ table.insert(data.raw["assembling-machine"]["assembling-machine-3"].crafting_cat
-- Disable vanilla early game recipes
data.raw.recipe["iron-plate"].enabled = false
data.raw.recipe["iron-gear-wheel"].enabled = false
data.raw.recipe["iron-chest"].enabled = false
data.raw.recipe["copper-plate"].enabled = false
data.raw.recipe["copper-cable"].enabled = false
data.raw.recipe["transport-belt"].enabled = false
if not mods["planet-picker"] and not mods["any-planet-start"] then
data.raw.recipe["iron-plate"].enabled = false
data.raw.recipe["iron-gear-wheel"].enabled = false
data.raw.recipe["iron-chest"].enabled = false
data.raw.recipe["copper-plate"].enabled = false
data.raw.recipe["copper-cable"].enabled = false
data.raw.recipe["transport-belt"].enabled = false
end
-- Progressive recipes
@ -145,151 +148,152 @@ if settings.startup["lignumis-belt-progression"].value then
end
if settings.startup["lignumis-inserter-progression"].value then
Recipe:new("inserter"):addIngredient("burner-inserter", 1)
end
if settings.startup["lignumis-assembler-progression"].value then
Recipe:new("assembling-machine-1"):addIngredient("burner-assembling-machine", 1)
table.insert(
data.raw.recipe["inserter"].ingredients,
{ type = "item", name = "burner-inserter", amount = 1 }
)
end
-- Adjust vanilla technologies
local automation_science_pack_technology = data.raw.technology["automation-science-pack"]
automation_science_pack_technology.enabled = false
automation_science_pack_technology.visible_when_disabled = true
automation_science_pack_technology.research_trigger = nil
automation_science_pack_technology.unit = {
count = 1,
ingredients = {},
time = 1
}
if not mods["planet-picker"] and not mods["any-planet-start"] then
local automation_science_pack_technology = data.raw.technology["automation-science-pack"]
automation_science_pack_technology.enabled = false
automation_science_pack_technology.visible_when_disabled = true
automation_science_pack_technology.research_trigger = nil
automation_science_pack_technology.unit = {
count = 1,
ingredients = {},
time = 1
}
if not mods["aai-industry"] then
local electronics_technology = data.raw.technology["electronics"]
electronics_technology.prerequisites = { "copper-processing" }
if not mods["aai-industry"] then
local electronics_technology = data.raw.technology["electronics"]
electronics_technology.prerequisites = { "copper-processing" }
local steam_power_technology = data.raw.technology["steam-power"]
steam_power_technology.prerequisites = { "iron-processing" }
end
local steam_power_technology = data.raw.technology["steam-power"]
steam_power_technology.prerequisites = { "iron-processing" }
end
local automation_technology = data.raw.technology["automation"]
automation_technology.ignore_tech_cost_multiplier = false
local automation_technology = data.raw.technology["automation"]
automation_technology.ignore_tech_cost_multiplier = false
local logistics_technology = data.raw.technology["logistics"]
table.insert(logistics_technology.effects, {
type = "unlock-recipe",
recipe = "transport-belt"
})
local logistics_technology = data.raw.technology["logistics"]
table.insert(logistics_technology.effects, {
type = "unlock-recipe",
recipe = "transport-belt"
})
local landfill_technology = data.raw.technology["landfill"]
landfill_technology.prerequisites = { "burner-automation" }
landfill_technology.unit = {
count = 50,
ingredients = { { "wood-science-pack", 1 } },
time = 15
}
local landfill_technology = data.raw.technology["landfill"]
landfill_technology.prerequisites = { "burner-automation" }
landfill_technology.unit = {
count = 50,
ingredients = { { "wood-science-pack", 1 } },
time = 15
}
local robots_speed_technology_1 = data.raw.technology["worker-robots-speed-1"]
robots_speed_technology_1.prerequisites = { "provisional-rocketry", "basic-construction-robotics-gold" }
robots_speed_technology_1.unit = {
count = 100,
ingredients = { { "wood-science-pack", 1 }, { "steam-science-pack", 1 } },
time = 15
}
local robots_speed_technology_1 = data.raw.technology["worker-robots-speed-1"]
robots_speed_technology_1.prerequisites = { "provisional-rocketry", "basic-construction-robotics-gold" }
robots_speed_technology_1.unit = {
count = 100,
ingredients = { { "wood-science-pack", 1 }, { "steam-science-pack", 1 } },
time = 15
}
local robots_speed_technology_2 = data.raw.technology["worker-robots-speed-2"]
robots_speed_technology_2.prerequisites = {
"worker-robots-speed-1",
"logistic-science-pack"
}
robots_speed_technology_2.unit = {
count = 100,
ingredients = { { "automation-science-pack", 1 }, { "logistic-science-pack", 1 } },
time = 30
}
local robots_speed_technology_2 = data.raw.technology["worker-robots-speed-2"]
robots_speed_technology_2.prerequisites = {
"worker-robots-speed-1",
"logistic-science-pack"
}
robots_speed_technology_2.unit = {
count = 100,
ingredients = { { "automation-science-pack", 1 }, { "logistic-science-pack", 1 } },
time = 30
}
local robots_speed_technology_3 = data.raw.technology["worker-robots-speed-3"]
robots_speed_technology_3.prerequisites = { "robotics", "chemical-science-pack" }
robots_speed_technology_3.unit = {
count = 150,
ingredients = { { "automation-science-pack", 1 }, { "logistic-science-pack", 1 }, { "chemical-science-pack", 1 } },
time = 30
}
local robots_speed_technology_3 = data.raw.technology["worker-robots-speed-3"]
robots_speed_technology_3.prerequisites = { "robotics", "chemical-science-pack" }
robots_speed_technology_3.unit = {
count = 150,
ingredients = { { "automation-science-pack", 1 }, { "logistic-science-pack", 1 }, { "chemical-science-pack", 1 } },
time = 30
}
local robots_speed_technology_4 = data.raw.technology["worker-robots-speed-4"]
robots_speed_technology_4.prerequisites = { "worker-robots-speed-3", "utility-science-pack" }
robots_speed_technology_4.unit.ingredients = {
{ "automation-science-pack", 1 },
{ "logistic-science-pack", 1 },
{ "chemical-science-pack", 1 },
{ "utility-science-pack", 1 }
}
local robots_speed_technology_4 = data.raw.technology["worker-robots-speed-4"]
robots_speed_technology_4.prerequisites = { "worker-robots-speed-3", "utility-science-pack" }
robots_speed_technology_4.unit.ingredients = {
{ "automation-science-pack", 1 },
{ "logistic-science-pack", 1 },
{ "chemical-science-pack", 1 },
{ "utility-science-pack", 1 }
}
local physical_damage_technology_1 = data.raw.technology["physical-projectile-damage-1"]
physical_damage_technology_1.prerequisites = { "basic-gun-turret" }
physical_damage_technology_1.unit.ingredients = { { "wood-science-pack", 1 } }
table.insert(physical_damage_technology_1.effects, {
type = "turret-attack",
turret_id = "basic-gun-turret",
modifier = 0.2
})
local physical_damage_technology_1 = data.raw.technology["physical-projectile-damage-1"]
physical_damage_technology_1.prerequisites = { "basic-gun-turret" }
physical_damage_technology_1.unit.ingredients = { { "wood-science-pack", 1 } }
table.insert(physical_damage_technology_1.effects, {
type = "turret-attack",
turret_id = "basic-gun-turret",
modifier = 0.2
})
local weapon_speed_technology_1 = data.raw.technology["weapon-shooting-speed-1"]
weapon_speed_technology_1.prerequisites = table.deepcopy(physical_damage_technology_1.prerequisites)
weapon_speed_technology_1.unit.ingredients = table.deepcopy(physical_damage_technology_1.unit.ingredients)
local weapon_speed_technology_1 = data.raw.technology["weapon-shooting-speed-1"]
weapon_speed_technology_1.prerequisites = table.deepcopy(physical_damage_technology_1.prerequisites)
weapon_speed_technology_1.unit.ingredients = table.deepcopy(physical_damage_technology_1.unit.ingredients)
local physical_damage_technology_2 = data.raw.technology["physical-projectile-damage-2"]
physical_damage_technology_2.prerequisites = { "physical-projectile-damage-1", "steam-science-pack" }
physical_damage_technology_2.unit.ingredients = { { "wood-science-pack", 1 }, { "steam-science-pack", 1 } }
table.insert(physical_damage_technology_2.effects, {
type = "turret-attack",
turret_id = "basic-gun-turret",
modifier = 0.2
})
local physical_damage_technology_2 = data.raw.technology["physical-projectile-damage-2"]
physical_damage_technology_2.prerequisites = { "physical-projectile-damage-1", "steam-science-pack" }
physical_damage_technology_2.unit.ingredients = { { "wood-science-pack", 1 }, { "steam-science-pack", 1 } }
table.insert(physical_damage_technology_2.effects, {
type = "turret-attack",
turret_id = "basic-gun-turret",
modifier = 0.2
})
local weapon_speed_technology_2 = data.raw.technology["weapon-shooting-speed-2"]
weapon_speed_technology_2.prerequisites = { "weapon-shooting-speed-1", "steam-science-pack" }
weapon_speed_technology_2.unit.ingredients = table.deepcopy(physical_damage_technology_2.unit.ingredients)
local weapon_speed_technology_2 = data.raw.technology["weapon-shooting-speed-2"]
weapon_speed_technology_2.prerequisites = { "weapon-shooting-speed-1", "steam-science-pack" }
weapon_speed_technology_2.unit.ingredients = table.deepcopy(physical_damage_technology_2.unit.ingredients)
local physical_damage_technology_3 = data.raw.technology["physical-projectile-damage-3"]
physical_damage_technology_3.prerequisites = { "military-2", "logistic-science-pack" }
physical_damage_technology_3.unit.ingredients = { { "automation-science-pack", 1 }, { "logistic-science-pack", 1 } }
physical_damage_technology_3.upgrade = false
table.insert(physical_damage_technology_3.effects, {
type = "turret-attack",
turret_id = "basic-gun-turret",
modifier = 0.3
})
local physical_damage_technology_3 = data.raw.technology["physical-projectile-damage-3"]
physical_damage_technology_3.prerequisites = { "military-2", "logistic-science-pack" }
physical_damage_technology_3.unit.ingredients = { { "automation-science-pack", 1 }, { "logistic-science-pack", 1 } }
physical_damage_technology_3.upgrade = false
table.insert(physical_damage_technology_3.effects, {
type = "turret-attack",
turret_id = "basic-gun-turret",
modifier = 0.3
})
local weapon_speed_technology_3 = data.raw.technology["weapon-shooting-speed-3"]
weapon_speed_technology_3.prerequisites = { "military-2", "logistic-science-pack" }
weapon_speed_technology_3.unit.ingredients = table.deepcopy(physical_damage_technology_3.unit.ingredients)
weapon_speed_technology_3.upgrade = false
local weapon_speed_technology_3 = data.raw.technology["weapon-shooting-speed-3"]
weapon_speed_technology_3.prerequisites = { "military-2", "logistic-science-pack" }
weapon_speed_technology_3.unit.ingredients = table.deepcopy(physical_damage_technology_3.unit.ingredients)
weapon_speed_technology_3.upgrade = false
local physical_damage_technology_4 = data.raw.technology["physical-projectile-damage-4"]
physical_damage_technology_4.prerequisites = { "physical-projectile-damage-3", "military-science-pack" }
table.insert(physical_damage_technology_4.effects, {
type = "turret-attack",
turret_id = "basic-gun-turret",
modifier = 0.3
})
local physical_damage_technology_4 = data.raw.technology["physical-projectile-damage-4"]
physical_damage_technology_4.prerequisites = { "physical-projectile-damage-3", "military-science-pack" }
table.insert(physical_damage_technology_4.effects, {
type = "turret-attack",
turret_id = "basic-gun-turret",
modifier = 0.3
})
local weapon_speed_technology_4 = data.raw.technology["weapon-shooting-speed-4"]
weapon_speed_technology_4.prerequisites = { "weapon-shooting-speed-3", "military-science-pack" }
local weapon_speed_technology_4 = data.raw.technology["weapon-shooting-speed-4"]
weapon_speed_technology_4.prerequisites = { "weapon-shooting-speed-3", "military-science-pack" }
local production_science_pack_technology = Technology:new("production-science-pack")
production_science_pack_technology:replacePrerequisite("advanced-material-processing-2", "space-platform-thruster")
production_science_pack_technology:addIngredients({ "space-science-pack" })
if settings.startup["lignumis-technology-progression"].value then
production_science_pack_technology:addIngredients({ "wood-science-pack", "steam-science-pack" })
end
local production_science_pack_technology = Technology:new("production-science-pack")
production_science_pack_technology:replacePrerequisite("advanced-material-processing-2", "space-platform-thruster")
production_science_pack_technology:addIngredients({ "space-science-pack" })
if settings.startup["lignumis-technology-progression"].value then
production_science_pack_technology:addIngredients({ "wood-science-pack", "steam-science-pack" })
end
local utility_science_pack_technology = Technology:new("utility-science-pack")
utility_science_pack_technology:setPrerequisites({ "space-platform-thruster" })
utility_science_pack_technology:addIngredients({ "space-science-pack" })
if settings.startup["lignumis-technology-progression"].value then
utility_science_pack_technology:addIngredients({ "wood-science-pack", "steam-science-pack" })
local utility_science_pack_technology = Technology:new("utility-science-pack")
utility_science_pack_technology:setPrerequisites({ "space-platform-thruster" })
utility_science_pack_technology:addIngredients({ "space-science-pack" })
if settings.startup["lignumis-technology-progression"].value then
utility_science_pack_technology:addIngredients({ "wood-science-pack", "steam-science-pack" })
end
end
if not mods["planet-muluna"] then -- Muluna does the same
@ -313,17 +317,3 @@ data.raw["equipment-grid"]["medium-equipment-grid"].height = 8
local nauvis = data.raw.planet["nauvis"]
nauvis.flags = nauvis.flags or {}
table.insert(nauvis.flags, "always-show")
-- Fulgora changes
if settings.startup["lignumis-fulgora-wood"].value then
local recycling = data.raw.recipe["scrap-recycling"]
table.insert(recycling.results, { type = "item", name = "wooden-gear-wheel", amount = 1, probability = 0.2 })
local recycling_result_count = table.count(recycling.results)
local recycler = data.raw.furnace["recycler"]
if recycler.result_inventory_size < recycling_result_count then
recycler.result_inventory_size = recycling_result_count
end
end

View file

@ -6,12 +6,6 @@ local InitExisting = {}
InitExisting.on_init = function()
if game.tick == 0 then return end
storage.target_planet = settings.startup["lignumis-second-planet"].value or "nauvis"
if script.active_mods["any-planet-start"] then
storage.target_planet = settings.startup["aps-planet"].value ~= "none" and settings.startup["aps-planet"].value or storage.target_planet
end
storage.init = {}
for _, player in pairs(game.players) do
storage.init[player.index] = true
@ -21,11 +15,11 @@ InitExisting.on_init = function()
end
for _, force in pairs(game.forces) do
force.technologies["iron-processing"].researched = true
force.technologies["copper-processing"].researched = true
if force.is_space_location_unlocked("nauvis") then
force.technologies["planet-discovery-nauvis"].researched = true
end
force.technologies["iron-processing"].researched = true
force.technologies["copper-processing"].researched = true
end
game.print { "", { "lignumis.start-new-game" } }

View file

@ -33,7 +33,7 @@ end
local function init_space_locations()
local force = game.forces.player
force.technologies["planet-discovery-lignumis"].researched = true
if game.planets["nauvis"] and force.technologies["planet-discovery-nauvis"] and not force.technologies["planet-discovery-nauvis"].researched then
if not force.technologies["planet-discovery-nauvis"].researched then
force.lock_space_location("nauvis")
end
end
@ -62,13 +62,7 @@ end
InitNew.on_init = function()
if game.tick > 0 then return end
storage.target_planet = settings.startup["lignumis-second-planet"].value or "nauvis"
if script.active_mods["any-planet-start"] then
storage.target_planet = settings.startup["aps-planet"].value ~= "none" and settings.startup["aps-planet"].value or storage.target_planet
remote.call("APS", "override_planet", "lignumis")
end
if script.active_mods["planet-picker"] or script.active_mods["any-planet-start"] then return end
init_intro()
init_space_locations()

View file

@ -7,15 +7,27 @@ local Init = {
events = {}
}
-- Migrate storage init as it was just a boolean before not supporting multiple players
local function migrate_0_9_6(event)
if storage.init and type(storage.init) == "boolean" then
storage.init = {
[event.player_index] = true
}
end
end
-- Initialize the player
-- Teleport to Lignumis and give some starting items
local function init_player(event)
local player = game.get_player(event.player_index)
if not player.character then return end
local surface = storage.surface or game.planets["lignumis"].surface
if not player.character or not surface then return end
player.teleport(surface.find_non_colliding_position("character", { 0, 0 }, 0, 1), "lignumis")
player.character.destructible = false
local main_inventory = player.character.get_main_inventory()
-- Add some starting items to player inventory
@ -25,6 +37,7 @@ end
-- Initialize the freeplay scenario
local function init_freeplay(event)
if script.active_mods["planet-picker"] or script.active_mods["any-planet-start"] then return end
if storage.crashed_ship_lignumis then return end
local player = game.get_player(event.player_index)
@ -61,20 +74,14 @@ end
Init.events[defines.events.on_player_created] = function(event)
migrate_0_9_6(event)
storage.init = storage.init or {}
if storage.init[event.player_index] then return end
storage.init[event.player_index] = true
if script.active_mods["alien-biomes"] then
game.print("While Alien Biomes is playable with Lignumis, it is not recommended as it prevents trees from being generated on Lignumis.")
end
if not script.active_mods["any-planet-start"] then
init_player(event)
init_freeplay(event)
end
init_player(event)
init_freeplay(event)
end
@ -84,7 +91,7 @@ Init.events[defines.events.on_player_changed_surface] = function(event)
if player.controller_type ~= defines.controllers.character then return end
if player and player.surface.name == storage.target_planet then
if player and player.surface.name == "nauvis" then
storage.nauvis_visited = true
end
@ -138,15 +145,10 @@ Init.events[defines.events.on_cutscene_cancelled] = function(event)
if player.gui.screen.skip_cutscene_label then
player.gui.screen.skip_cutscene_label.destroy()
end
if player.character then
player.character.destructible = true
end
player.zoom = 1.5
end
Init.on_configuration_changed = function()
storage.target_planet = settings.startup["lignumis-second-planet"].value or "nauvis"
if script.active_mods["any-planet-start"] then
storage.target_planet = settings.startup["aps-planet"].value ~= "none" and settings.startup["aps-planet"].value or storage.target_planet
end
end
return Init

View file

@ -6,6 +6,7 @@ local ToNauvis = {
events = {}
}
-- Chart the starting area for the player
local function chart_starting_area(surface, player)
local r = 200
@ -18,7 +19,7 @@ end
-- Initialize Nauvis
local function init_nauvis()
if storage.nauvis_visited then return end
local nauvis = game.planets[storage.target_planet].create_surface()
local nauvis = game.planets["nauvis"].create_surface()
nauvis.request_to_generate_chunks({ 0, 0 }, 3)
nauvis.force_generate_chunk_requests()
nauvis.daytime = 0.7
@ -27,11 +28,12 @@ end
-- Teleport player to Nauvis and show welcome message
local function teleport_player(player)
local nauvis = game.planets[storage.target_planet].surface
local nauvis = game.planets["nauvis"].surface
if player.surface.name == "lignumis" then
local position = nauvis.find_non_colliding_position("character", { 0, 0 }, 100, 1) or { 0, 0 }
player.teleport(position, storage.target_planet)
player.teleport(position, "nauvis")
chart_starting_area(nauvis, player)
player.print("Oh no, not again. But... Welcome to Nauvis!")
end
end
@ -42,7 +44,7 @@ local function init_freeplay()
if not remote.interfaces.freeplay then return end
storage.crashed_ship_nauvis = true
local nauvis = game.planets[storage.target_planet].surface
local nauvis = game.planets["nauvis"].surface
local ship_items = {
["burner-mining-drill"] = 2,
["stone-furnace"] = 2,

View file

@ -12,17 +12,16 @@ local function build_gui(player, rocket_silo)
position = defines.relative_gui_position.right
}
local target_planet_name = { "space-location-name." .. storage.target_planet }
local launch_button = { type = "button", name = "provisional-rocket-silo-launch-button", caption = { "lignumis.provisional-rocket-silo-button", target_planet_name } }
local launch_button = { type = "button", name = "provisional-rocket-silo-launch-button", caption = { "lignumis.provisional-rocket-silo-button" } }
local inventory = player.get_main_inventory()
local is_inventory_empty = inventory.is_empty()
local is_nauvis_researched = player.force.technologies["planet-discovery-" .. storage.target_planet].researched
local is_nauvis_researched = player.force.technologies["planet-discovery-nauvis"].researched
launch_button.enabled = is_inventory_empty and is_nauvis_researched
if not is_inventory_empty then
launch_button.tooltip = { "lignumis.provisional-rocket-silo-button-tooltip-inventory" }
elseif not is_nauvis_researched then
launch_button.tooltip = { "lignumis.provisional-rocket-silo-button-tooltip-target" }
launch_button.tooltip = { "lignumis.provisional-rocket-silo-button-tooltip-nauvis" }
end
@ -36,7 +35,7 @@ local function build_gui(player, rocket_silo)
direction = "vertical",
anchor = anchor,
children = {
{ type = "label", style = "frame_title", caption = { "lignumis.provisional-rocket-silo-button", target_planet_name }, ignored_by_interaction = true },
{ type = "label", style = "frame_title", caption = { "lignumis.provisional-rocket-silo-button" }, ignored_by_interaction = true },
{
type = "frame",
direction = "vertical",
@ -47,7 +46,7 @@ local function build_gui(player, rocket_silo)
direction = "vertical",
style = "inset_frame_container_vertical_flow",
children = {
{ type = "label", caption = { "lignumis.provisional-rocket-silo-description", target_planet_name } },
{ type = "label", caption = { "lignumis.provisional-rocket-silo-description" } },
launch_button
}
}
@ -65,13 +64,12 @@ local function on_gui_opened(event)
if not entity or not entity.valid then return end
if entity.name ~= "provisional-rocket-silo-ready" then return end
local player = game.get_player(event.player_index)
if player.controller_type ~= defines.controllers.character then return end
if player.gui.relative["provisional-rocket-silo-relative-frame"] then
player.gui.relative["provisional-rocket-silo-relative-frame"].destroy()
end
if player.controller_type ~= defines.controllers.character then return end
build_gui(player, entity)
end
@ -106,9 +104,7 @@ local function on_silo_mined(event)
local player = game.get_player(event.player_index)
for i, entry in pairs(storage.rocket_silos) do
if entry.fake_silo == fake_silo then
if entry.real_silo.valid then
player.mine_entity(entry.real_silo, true)
end
player.mine_entity(entry.real_silo, true)
table.remove(storage.rocket_silos, i)
break
end

View file

@ -31,7 +31,7 @@ data:extend({
type = "bool-setting",
name = "lignumis-basic-circuit-board",
setting_type = "startup",
default_value = true,
default_value = false,
order = "e"
},
{
@ -40,53 +40,24 @@ data:extend({
setting_type = "startup",
default_value = false,
order = "f"
},
{
type = "bool-setting",
name = "lignumis-assembler-progression",
setting_type = "startup",
default_value = false,
order = "g"
},
{
type = "bool-setting",
name = "lignumis-lumber-mill-more-recipes",
setting_type = "startup",
default_value = false,
order = "h"
},
{
type = "bool-setting",
name = "lignumis-fulgora-wood",
setting_type = "startup",
default_value = true,
order = "i"
},
{
type = "bool-setting",
name = "lignumis-early-robots",
setting_type = "startup",
default_value = false,
order = "j"
},
{
type = "string-setting",
name = "lignumis-second-planet",
setting_type = "startup",
allowed_values = { "nauvis" },
default_value = "nauvis",
hidden = true
}
})
if mods["aai-industry"] then
data.raw["bool-setting"]["lignumis-inserter-progression"].forced_value = false
data.raw["bool-setting"]["lignumis-inserter-progression"].hidden = true
data.raw["bool-setting"]["lignumis-assembler-progression"].forced_value = false
data.raw["bool-setting"]["lignumis-assembler-progression"].hidden = true
end
if mods["wood-military"] then
data.raw["bool-setting"]["lignumis-ammo-progression"].forced_value = false
data.raw["bool-setting"]["lignumis-ammo-progression"].hidden = true
end
if mods["planet-picker"] or mods["any-planet-start"] then
data.raw["bool-setting"]["lignumis-belt-progression"].forced_value = false
data.raw["bool-setting"]["lignumis-belt-progression"].hidden = true
data.raw["bool-setting"]["lignumis-inserter-progression"].forced_value = false
data.raw["bool-setting"]["lignumis-inserter-progression"].hidden = true
data.raw["bool-setting"]["lignumis-ammo-progression"].forced_value = false
data.raw["bool-setting"]["lignumis-ammo-progression"].hidden = true
end