Compare commits

..

134 commits

Author SHA1 Message Date
Simon Brodtmann
d5ce5d42d5 Readme 2025-06-10 09:39:09 +02:00
Simon Brodtmann
7abcc07a0b 1.0.53 2025-06-08 18:15:32 +02:00
Simon Brodtmann
0b72861273 Reduce usage of resources for some buildings 2025-06-08 17:19:31 +02:00
Simon Brodtmann
4553e887a3 Any Planet Start: Works with moons now 2025-06-08 17:09:51 +02:00
Simon Brodtmann
c20f490d81 Gold plates require 1 gold ore again 2025-06-08 17:09:51 +02:00
Simon Brodtmann
1dc928acdd Readme 2025-06-08 00:03:36 +02:00
Simon Brodtmann
6eb8338779 1.0.52 2025-06-06 14:26:30 +02:00
Simon Brodtmann
e0df3f1335 Add flames and explosions to transition 2025-06-06 14:25:52 +02:00
Simon Brodtmann
d09b66deb5 Increase speed of rocket a bit 2025-06-06 14:25:17 +02:00
Simon Brodtmann
0ea9d1a170 1.0.51 2025-06-06 13:41:58 +02:00
Simon Brodtmann
8c88e8ac8a Crushing industry + Hot metals: Fix crushed gold not being smelted into hot gold 2025-06-05 16:52:02 +02:00
Simon Brodtmann
b889d0db26 Adjust essential flags on technologies 2025-06-04 23:02:14 +02:00
Simon Brodtmann
05b7278b80 Readme 2025-06-04 23:02:14 +02:00
Simon Brodtmann
2ccc07fd74 1.0.50 2025-06-04 16:35:57 +02:00
Simon Brodtmann
23f5286d22 Reapply "Improve transition to Nauvis"
This reverts commit 4e415782f2.
2025-06-04 16:34:02 +02:00
Simon Brodtmann
9c18aba1da 1.0.49 2025-06-04 16:32:26 +02:00
Simon Brodtmann
4e415782f2 Revert "Improve transition to Nauvis"
This reverts commit 07df28273d.
2025-06-04 16:30:52 +02:00
Simon Brodtmann
3683a492c0 Burner-Leech-Fork is not incompatible anymore 2025-06-04 16:24:22 +02:00
Simon Brodtmann
57b3ee9ece Enable burner leech when no dedicated mod is installed 2025-06-03 22:51:33 +02:00
Simon Brodtmann
e56b5a7087 Correct indentation 2025-06-03 19:53:10 +02:00
Simon Brodtmann
822eb1fd7c 1.0.48 2025-06-03 19:51:28 +02:00
Simon Brodtmann
07df28273d Improve transition to Nauvis 2025-06-03 19:46:55 +02:00
Simon Brodtmann
6fc153f3bd Make InserterFuelLeech optional 2025-06-03 16:50:33 +02:00
Simon Brodtmann
68903532bf 1.0.47 2025-05-31 22:58:50 +02:00
Simon Brodtmann
07cb973c00 Correct Factoriopedia simulation for wooden underground belts 2025-05-30 22:35:49 +02:00
Simon Brodtmann
f8671cf738 Fix crash when the on_rocket_launched event doesn't have a rocket_silo 2025-05-30 21:54:11 +02:00
Simon Brodtmann
81214f2a46 Fix crash when there is a tree that has no minable property 2025-05-30 21:48:47 +02:00
Simon Brodtmann
415054ae2b 1.0.46 2025-05-23 21:07:47 +02:00
Simon Brodtmann
8da7d0cea7 Balance basic robots battery usage 2025-05-23 21:02:16 +02:00
Simon Brodtmann
c968a7e437 Correct items per rocket for belts 2025-05-23 21:02:16 +02:00
Simon Brodtmann
f98bbebdab Solar power is orbiting planet +20% 2025-05-23 13:58:20 +02:00
Simon Brodtmann
9f924c3aea 1.0.45 2025-05-03 23:00:57 +02:00
Simon Brodtmann
90a59a7f47 Any Planet Start: Fix planet discovery being disabled 2025-05-03 23:00:02 +02:00
Simon Brodtmann
596077912f 1.0.44 2025-04-20 23:20:09 +02:00
Simon Brodtmann
60a5e37647 1.0.43 2025-04-20 23:10:31 +02:00
Simon Brodtmann
3fffc31f2d Crushing Industry: Move compatibility code to updates phase 2025-04-20 23:08:58 +02:00
Simon Brodtmann
67b4ec0a09 Any planet start (Vulcanus): Add some fixes to not get stuck 2025-04-20 16:58:57 +02:00
Simon Brodtmann
a6a1461581 Correct description of the Quality Assembler 2025-04-20 16:58:12 +02:00
Simon Brodtmann
58da2ed2d4 Any planet start: Move code to updates stage 2025-04-15 18:08:19 +02:00
Simon Brodtmann
656a151075 1.0.42 2025-04-14 15:42:11 +02:00
Simon Brodtmann
d03dfeb643 Crushing Industry: Fix wrong ingredient amount for gold from crushed gold 2025-04-14 14:22:31 +02:00
Simon Brodtmann
e7077ef65b Helmod: Fix bug with steam assembler
(now really)
2025-04-13 22:50:16 +02:00
Simon Brodtmann
77685f2a3e 1.0.41 2025-04-13 15:11:42 +02:00
Simon Brodtmann
7416b4a505 Prevent broken icons 2025-04-13 15:09:36 +02:00
Simon Brodtmann
e18619c807 Add setting for even earlier personal robots 2025-04-13 13:42:42 +02:00
Simon Brodtmann
c8959290c0 Wood Gasification updated: Fix amount of wood per tree 2025-04-13 00:14:47 +02:00
Simon Brodtmann
5bdde48ef1 Any planet start: Fix circular dependency 2025-04-12 23:53:47 +02:00
Simon Brodtmann
aa44117a49 Any planet start: Fix prerequisites for "Tree seeding" 2025-04-12 20:17:25 +02:00
Simon Brodtmann
667678098d Require cf-lib 0.0.12 2025-04-12 20:13:14 +02:00
Simon Brodtmann
22e3f9709e Helmod: Fix bug with steam assembler 2025-04-12 16:27:11 +02:00
Simon Brodtmann
45f245d422 1.0.40 2025-04-06 16:49:05 +02:00
Simon Brodtmann
dffaa99173 Add setting for wood on Fulgora and make Wooden Fulgora optional again 2025-04-06 16:41:10 +02:00
Simon Brodtmann
51e9682125 Remove inventory of provisional rocket silo 2025-04-06 11:27:55 +02:00
Simon Brodtmann
17c2795b3d Add fix for duplicate ready rocket silo 2025-04-06 11:27:12 +02:00
Simon Brodtmann
0353f91144 1.0.39 2025-04-03 18:40:03 +02:00
Simon Brodtmann
bcc4c7a18f Add Space Age flag 2025-04-03 18:31:39 +02:00
Simon Brodtmann
0bbd830068 AAI Loaders: Adhere belt progression setting 2025-04-03 18:19:12 +02:00
Simon Brodtmann
087c30ffcc AAI loaders, Lane splitters: Apply recipe changes only when AAI Industry is active 2025-03-29 23:10:05 +01:00
Simon Brodtmann
7f67e0eff6 1.0.38 2025-03-28 21:28:06 +01:00
Simon Brodtmann
a78bcb75df Any planet start: Change internal name of the space connection to Lignumis depending on the selected planet 2025-03-28 21:28:01 +01:00
Simon Brodtmann
044e058784 Any planet start (Vulcanus) + Crushing Industry: Move iron crushing to fix soft-lock 2025-03-28 21:13:32 +01:00
Simon Brodtmann
2f01c16cda Readme 2025-03-28 19:05:36 +01:00
Simon Brodtmann
6f0fb8cf6f 1.0.37 2025-03-28 18:53:55 +01:00
Simon Brodtmann
bf2f46512e Any planet start (Fulgora): Medium electric pole is unlocked together with the recycler 2025-03-28 18:43:29 +01:00
Simon Brodtmann
151337c116 Add compatibility for "Gleba reborn" 2025-03-28 10:06:13 +01:00
Simon Brodtmann
6f4e8dcda8 Add compatibility for "Any planet start" (Gleba) 2025-03-28 10:06:13 +01:00
Simon Brodtmann
5ca6eb9b3d Wood mods for Vulcanus and Fulgora are mandatory
Sort mods alphabetically
2025-03-28 10:06:13 +01:00
Simon Brodtmann
8ca02c341c Add compatibility for "Any planet start" (Fulgora) 2025-03-28 09:23:01 +01:00
Simon Brodtmann
c5d94ec0b9 Add compatibility for "Any planet start" (Vulcanus) 2025-03-28 00:33:08 +01:00
Simon Brodtmann
d15f877fe1 readme 2025-03-25 20:21:16 +01:00
Simon Brodtmann
2b847f5cd3 Add descriptions with gold per minute from plants and seeds 2025-03-25 20:21:10 +01:00
Simon Brodtmann
a7490b6277 Crushing Industry: Burner Cusher can be crafted in Lumber Mill 2025-03-25 19:47:39 +01:00
Simon Brodtmann
799e22b90a Switch to "Inserter Fuel Leech" 2025-03-25 19:47:39 +01:00
Simon Brodtmann
ea7c652875 Crushing Industry: Fix name of burner crusher copper recipe 2025-03-24 01:26:07 +01:00
Simon Brodtmann
d7f5d0ca67 1.0.36 2025-03-24 01:18:09 +01:00
Simon Brodtmann
8eca5c0952 Add compatibility for "Crushing Industry" 2025-03-24 01:12:56 +01:00
Simon Brodtmann
07afca839c Wood Industry: Woodchips have "wood" fuel category 2025-03-23 22:50:41 +01:00
Simon Brodtmann
cfe22bf13d AAI Industry: Add "wood" fuel category to burner generator and fuel processor 2025-03-23 22:39:55 +01:00
Simon Brodtmann
2a8a2e3562 Fix recylce recipe being generated for rocket parts 2025-03-23 22:30:32 +01:00
Simon Brodtmann
75570cd460 AAI Loaders: Correct item/recipe order 2025-03-23 22:28:45 +01:00
Simon Brodtmann
d68d0c1087 Lane Splitters: Correct item order 2025-03-23 22:28:27 +01:00
Simon Brodtmann
1bda174426 Basic construction robots copper recipe uses basic circuit boards and wooden gear wheels 2025-03-19 00:27:56 +01:00
Simon Brodtmann
ed170d2d4d 1.0.35 2025-03-18 20:38:16 +01:00
Simon Brodtmann
7bc50df763 Regular lab recipe always uses wood belt 2025-03-18 20:36:49 +01:00
Simon Brodtmann
be06f702fb Add russian translation (thanks Fr_Dae) 2025-03-18 20:02:52 +01:00
Simon Brodtmann
843117dfc9 Readme 2025-03-17 21:59:31 +01:00
Simon Brodtmann
21875da7b1 1.0.34 2025-03-17 21:53:34 +01:00
Simon Brodtmann
a60a63135b Make Burner leech fork mandatory 2025-03-17 21:51:53 +01:00
Simon Brodtmann
a546b14d09 Add new enemies 2025-03-17 21:51:53 +01:00
Simon Brodtmann
ac60c67999 Make the second planet after Lignumis configurable by other mods 2025-03-17 18:02:53 +01:00
Simon Brodtmann
8982b1bf82 Balance basic construction robots 2025-03-17 17:15:04 +01:00
Simon Brodtmann
b2b992af5b Corect Date 2025-03-16 22:24:16 +01:00
Simon Brodtmann
981c74aa73 1.0.33 2025-03-16 22:23:00 +01:00
Simon Brodtmann
d1b780636e AAI Loaders: Reduce basic circuit boards to match other tiers 2025-03-16 18:52:44 +01:00
Simon Brodtmann
6f453071ea Lane splitters: Yellow lane splitter uses basic circuit board instead of electronic circuit 2025-03-16 18:52:17 +01:00
Simon Brodtmann
aae06ac132 AAI Loaders: Yellow loader uses basic circuit board instead of electronic circuit 2025-03-16 18:51:59 +01:00
Simon Brodtmann
9b736073a3 Nerf basic portable generator from 200 kW to 100 kW 2025-03-16 10:45:08 +01:00
Simon Brodtmann
d35e86755a Remove temporary fix for crash due to "Wood Walls and floors" 2025-03-16 00:05:23 +01:00
Simon Brodtmann
12fdcbcb90 AAI Industry: Basic construction robot copper recipe uses basic circuit board instead of electronic circuit 2025-03-16 00:04:39 +01:00
Simon Brodtmann
70d22cb121 Replace iron gear weel with wooden gear weel in lumber mill copper recipe 2025-03-15 16:06:43 +01:00
Simon Brodtmann
1e219ba4ad AAI Industry: Lumber mill copper recipe uses burner assembler instead of electrical assembler 1 2025-03-15 10:33:04 +01:00
Simon Brodtmann
fda2a82b5e AAI Industry: Remove technology "Basic logistics" 2025-03-15 10:04:55 +01:00
Simon Brodtmann
9edaf14f93 AAI Industry: Move copper cable recipe to copper processing 2025-03-15 00:02:21 +01:00
Simon Brodtmann
b0ee9f94bc 1.0.32 2025-03-14 18:50:18 +01:00
Simon Brodtmann
86f8c55506 Fix players after the first not attackable 2025-03-14 18:46:05 +01:00
Simon Brodtmann
34d3b4a1a5 Add setting for assembler recipe progression and move some lumber mill recipes to a setting 2025-03-14 18:28:27 +01:00
Simon Brodtmann
1b622ffa05 Restrict provisional rocket silo to Lignumis 2025-03-14 12:01:37 +01:00
Simon Brodtmann
cbba8dddf2 Balance noise 2025-03-14 00:37:50 +01:00
Simon Brodtmann
598d6a241f Readme 2025-03-13 16:07:54 +01:00
Simon Brodtmann
56974406d7 1.0.31 2025-03-13 14:17:42 +01:00
Simon Brodtmann
41a84a503f Add copper recipe for lumber mill 2025-03-13 14:14:09 +01:00
Simon Brodtmann
3eb14395ac Add more recipes to lumber mill 2025-03-13 13:57:16 +01:00
Simon Brodtmann
eb849de427 AAI Loaders: Yellow loader recipe uses wood loader 2025-03-12 20:44:17 +01:00
Simon Brodtmann
5e22624330 AAI Loader: Adjust recipe 2025-03-12 20:31:48 +01:00
Nydaleclya
6186bf68ad lignumis/prototypes/compatibility/aai-loaders.lua aktualisiert 2025-03-12 20:29:55 +01:00
Simon Brodtmann
24a33546d5 Possibly fix problems with Wooden rocket silo in remote view 2025-03-12 20:24:51 +01:00
Simon Brodtmann
c7885afe34 Mark Any planet start and Planet picker as incompatible 2025-03-12 20:16:43 +01:00
Simon Brodtmann
9a89515b81 Add missing translation 2025-03-12 20:09:22 +01:00
Simon Brodtmann
b2ac4793c6 1.0.30 2025-03-06 22:49:06 +01:00
Simon Brodtmann
4ed26b5b9d Any planet start: Fix startup crash 2025-03-06 22:45:51 +01:00
Simon Brodtmann
d41cc3c822 1.0.29 2025-03-05 09:49:28 +01:00
Simon Brodtmann
ad56704b52 Fix Burner agricultural tower not having a Nauvis recipe 2025-03-05 09:47:03 +01:00
Simon Brodtmann
c481394e55 Alien Biomes: Add warning 2025-03-05 00:12:54 +01:00
Simon Brodtmann
c334459db2 readme 2025-03-04 21:31:06 +01:00
Simon Brodtmann
e1c40fcd33 Nerf quality assembler to +25% quality 2025-03-04 21:28:24 +01:00
Simon Brodtmann
da50f85b5b Set default for setting "Basic circuit boards" to true 2025-03-04 20:46:42 +01:00
Simon Brodtmann
3b26f3a754 readme 2025-03-04 20:46:14 +01:00
Simon Brodtmann
0bfda7246f 1.0.28 2025-03-04 10:17:22 +01:00
Simon Brodtmann
f91f364c8d Prevent possible errors on player initialization 2025-03-04 09:56:59 +01:00
Simon Brodtmann
8e1c774e2a Steam assembler technology should not ignore tech cost multiplier 2025-03-03 18:41:20 +01:00
Simon Brodtmann
1b117be9c6 AAI Loaders: Add missing translation 2025-03-03 18:40:55 +01:00
Simon Brodtmann
67055378c8 1.0.27 2025-03-02 23:49:55 +01:00
Simon Brodtmann
0fb21cf2ea AAI Industry: Fix basic circuit board recipe unlock 2025-03-02 23:44:01 +01:00
Simon Brodtmann
db9dd1c252 Add compatibility for "Lane splitters" 2025-03-02 23:19:45 +01:00
59 changed files with 1551 additions and 559 deletions

View file

@ -1,16 +1,38 @@
[![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/ufvFUJtVwk)[![Forgejo](https://img.shields.io/badge/source%20code-%23f4f4f5?style=for-the-badge&logo=forgejo&logoColor=%23c2410c)](https://git.cacklingfiend.info/cacklingfiend/lignumis)
_________________
![Lignumis poster](https://git.cacklingfiend.info/cacklingfiend/lignumis-assets/raw/commit/27e61170a897dc4a6afc7d518629899a3b05b6f0/sources/poster.jpg)
## Lignumis
This mod extends the early game of Space Age by putting you on the moon "Lignumis" before you escape to Nauvis. It concentrates on wood and steam technologies, giving you some early game production chains for those resources.
The duration of the stay on Lignumis will be rather short. The impact of the later game will still be substantial (once implemented).
The duration of the stay on Lignumis will be rather short. The impact of the later game will still be substantial.
**If you start a new game, check out the setting for adding Basic circuit boards.**
**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.
#### Streamers featuring Lignumis
[![S1-E01 - Lumber Support - Laurence Plays Factorio: Planetary Pioneers](https://i.ytimg.com/vi/1eH4oJtlBpE/hqdefault.jpg?sqp=-oaymwEcCPYBEIoBSFXyq4qpAw4IARUAAIhCGAFwAcABBg==&rs=AOn4CLD6UdmD7HuhCdhQBCCSL38Ke_FpXg)](https://www.youtube.com/watch?v=1eH4oJtlBpE)
[![Factorio Multiplayer: Planetary Pioneers - Space Age - E01 - 02/06/25 - Laurence Streams](https://i.ytimg.com/vi/OMDpDhZdTmU/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCVQhrlcmwsZbzRDNQo8vgMKtUHaA)](https://www.youtube.com/live/OMDpDhZdTmU?feature=shared&t=290&list=PLALTzJaRcgW97ItZgtZvkqFBcdVjKNVHz&index=1) [![Factorio Multiplayer: Planetary Pioneers - Space Age - E01.5 - 02/06/25 - Laurence Streams](https://i.ytimg.com/vi/d4n1H6Z4KPc/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLA5TNZBTs7GpUFdVB1CG1-hzYw0tw)](https://www.youtube.com/live/d4n1H6Z4KPc?list=PLALTzJaRcgW97ItZgtZvkqFBcdVjKNVHz&index=3)
_________________
## Mod recommendations
The following mods can be a great addition for this mod:
#### [Burner Leech Fork](https://mods.factorio.com/mod/Burner-Leech-Fork)
#### [Inserter Fuel Leech](https://mods.factorio.com/mod/InserterFuelLeech)
There will be fewer inserters that need to be fueled manually.
While optional, the intended way is to use this mod for the burner phase as it improves the fueling experience of burner entities.
For UPS optimizations, you can disable this mod once the burner phase is over.
Alternatives: [Burner Leech Fork](https://mods.factorio.com/mod/Burner-Leech-Fork), [Burner Leech](https://mods.factorio.com/mod/Burner-Leech)
#### [Any Planet Start](https://mods.factorio.com/mod/any-planet-start)
Allows you to choose the planet that Lignumis orbits. You can continue on Vulcanus, Fulgora or Gleba after leaving Lignumis.
Some modded planets add APS support as well (sometimes with a separate mod).
#### [Diversitree](https://mods.factorio.com/mod/Diversitree)
@ -28,9 +50,14 @@ 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 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)
#### [Wooden Aquilo: Seabloom Algaculture](https://mods.factorio.com/mod/aquilo-seabloom-algaculture)
For wood on the other planets.
For wood on Aquilo.
#### [Crushing Industry](https://mods.factorio.com/mod/crushing-industry) with [Crushing Industry - Productivity Research](https://mods.factorio.com/mod/crushing-industry-productivity-research)
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.
#### [AAI Loaders](https://mods.factorio.com/mod/aai-loaders)
@ -44,6 +71,8 @@ Add this for increased complexity in the early Nauvis game. It has no effect on
For even more complexity after Lignumis. They currently don't change anything on Lignumis itself.
_________________
## Compatibility with other planet mods
The following planet mods are tested for (at least technical) compatibility:
@ -60,12 +89,18 @@ The following planet mods are tested for (at least technical) compatibility:
- [Terra Palus](https://mods.factorio.com/mod/terrapalus)
- [Secretas & Frozeta](https://mods.factorio.com/mod/secretas)
This list is probably not up-to-date. In doubt, just try it out.
_________________
## Problematic / incompatible mods
* Mods that let you start on a different planet: They are supported, but you are missing half of the content of this mod.
* The combination of AAI Industry and Any planet start is currently not supported.
* 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.
_________________
## Add compatibility to your mod
Lignumis, by default, adds wood and steam science packs during `data-updates.lua` to all technologies that match certain criteria.
@ -104,20 +139,31 @@ 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
- 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
@ -125,8 +171,9 @@ If your modded lab is special and it should not support these science packs, use
- Simplified chinese (zh-CN): cyx2015s
- Polish (pl): StarGazer
- Russian (ru): Fr_Dae
### Assets
### Assets / Code
[Hurricane](https://mods.factorio.com/user/Hurricane046)
@ -187,3 +234,8 @@ If your modded lab is special and it should not support these science packs, use
[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,4 +1,225 @@
---------------------------------------------------------------------------------------------------
Version: 1.0.53
Date: 08.06.2025
Changes:
- Gold plates require 1 gold ore again and buff gold by 33%
- Reduce usage of resources for some buildings
Bug Fixes:
- Any Planet Start: Works with moons now (required for Cerys)
---------------------------------------------------------------------------------------------------
Version: 1.0.52
Date: 06.06.2025
Changes:
- Increase speed of rocket a bit
- Add flames and explosions to transition
---------------------------------------------------------------------------------------------------
Version: 1.0.51
Date: 06.06.2025
Changes:
- Adjust essential flags on technologies
Bug Fixes:
- Crushing industry + Hot metals: Fix crushed gold not being smelted into hot gold
---------------------------------------------------------------------------------------------------
Version: 1.0.50
Date: 04.06.2025
Changes:
- Reapply "Improve transition to Nauvis"
---------------------------------------------------------------------------------------------------
Version: 1.0.49
Date: 04.06.2025
Changes:
- Enable burner leech when no dedicated mod is installed
- Burner-Leech-Fork is not incompatible anymore
Bug Fixes:
- Revert "Improve transition to Nauvis" since it requires currently unstable Factorio version 2.0.53
---------------------------------------------------------------------------------------------------
Version: 1.0.48
Date: 03.06.2025
Changes:
- Make InserterFuelLeech optional
- Improve transition to Nauvis
---------------------------------------------------------------------------------------------------
Version: 1.0.47
Date: 31.05.2025
Bug Fixes:
- Fix crash when there is a tree that has no minable property
- Fix crash when the on_rocket_launched event doesn't have a rocket_silo
- Correct Factoriopedia simulation for wooden underground belts
---------------------------------------------------------------------------------------------------
Version: 1.0.46
Date: 23.05.2025
Changes:
- Set solar power to orbiting planet's +20%
- Balance basic robots battery usage
Bug Fixes:
- Correct some item weights
---------------------------------------------------------------------------------------------------
Version: 1.0.45
Date: 03.05.2025
Bug Fixes:
- Any Planet Start: Fix planet discovery being disabled
---------------------------------------------------------------------------------------------------
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,5 +8,3 @@ handler.add_libraries({
require("scripts/to-nauvis"),
require("scripts/wooden-rocket-silo")
})

View file

@ -1,2 +1,7 @@
require("prototypes/content/final")
require("prototypes/compatibility/final")
if not mods["Burner-Leech-Fork"] and not mods["Burner-Leech"] and not mods["InserterFuelLeech"] then
data.raw["inserter"]["burner-inserter"].allow_burner_leech = true
data.raw["inserter"]["burner-long-handed-inserter"].allow_burner_leech = true
end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.4 KiB

View file

@ -1,36 +1,47 @@
{
"name": "lignumis",
"version": "1.0.26",
"version": "1.0.53",
"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.28",
"lignumis-assets",
"flib",
"PlanetsLib >= 1.1.26",
"space-age >= 2.0.53",
"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",
"pollution-as-surface-property",
"bioprocessing-tab",
"?hot-metals >= 1.1.0",
"?wood-military >= 2.3.3",
"?metal-and-stars",
"cf-lib >= 0.0.13",
"flib",
"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",
"Wood-Walls >= 1.2.0",
"vulcanus-sulfuric-bacteria",
"?aai-industry",
"?planet-picker",
"?Diversitree",
"?aai-loaders",
"?aai-loaders-sane",
"?any-planet-start",
"?atan-nuclear-science",
"?crushing-industry",
"?Diversitree",
"?fulgora-coralmium-agriculture",
"?gleba-reborn",
"?hot-metals >= 1.1.0",
"?lane-splitters",
"?metal-and-stars",
"(?)secretas",
"(?)Wood_Gasification_updated",
"?wood-industry",
"?wood-military >= 2.3.3",
"!apm_power_ldinc",
"!wood-logistics",
"!early-agriculture",
"!planet-picker",
"!wood-logistics",
"!wood-universe-modpack"
]
}

View file

@ -45,10 +45,15 @@ 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 one free quality tier to the crafted item by consuming [item=gold-quality-catalyst]. Surface conditions and ingredients are otherwise unchanged.
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
[equipment-name]
basic-portable-generator-equipment-gold=Basic portable generator equipment (gold)
@ -76,11 +81,12 @@ 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.
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__
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
[fluid-name]
wood-pulp=Wood pulp
@ -99,6 +105,8 @@ 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.
@ -128,6 +136,8 @@ 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.
@ -166,6 +176,10 @@ 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.
@ -174,6 +188,13 @@ 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
@ -186,8 +207,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 before Nauvis.
provisional-rocket-silo-button=Escape to Nauvis
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__
provisional-rocket-silo-button-tooltip-inventory=Your personal inventory must be empty!
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.
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.

View file

@ -0,0 +1,138 @@
[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

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

View file

@ -0,0 +1,5 @@
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,14 +1,17 @@
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
@ -16,6 +19,15 @@ 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
@ -24,9 +36,18 @@ 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

@ -0,0 +1,13 @@
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 = 10 } or
basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 5 } or
{ type = "item", name = "gold-cable", amount = 10 },
{ type = "item", name = "wood-transport-belt", amount = 1 }
},
@ -34,15 +34,19 @@ AAILoaders.make_tier({
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 = "wood-transport-belt", amount = 1 }
},
energy_required = 5
},
next_upgrade = "aai-loader",
localise = false
localise = false,
order = "d[loader]-a00[aai-wood-loader]"
})
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

@ -0,0 +1,15 @@
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
-- Switch planet discovery technology to the new planet
local planet_discovery = data.raw.technology["planet-discovery-" .. target_planet] or data.raw.technology["moon-discovery-" .. target_planet]
Technology:new(planet_discovery)
:assign({
enabled = true,
hidden = false
})

View file

@ -0,0 +1,80 @@
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
local planet_discovery = data.raw.technology["planet-discovery-" .. target_planet] or data.raw.technology["moon-discovery-" .. target_planet]
Technology:new(planet_discovery)
: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.name)
Technology:new("copper-processing"):replacePrerequisite("planet-discovery-nauvis", planet_discovery.name)
-- 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

@ -0,0 +1,10 @@
local Technology = require("__cf-lib__/data/Technology")
if not mods["crushing-industry"] then return end
if not settings.startup["crushing-industry-ore"].value then return end
if mods["aai-industry"] then
Technology:new("burner-mechanics"):removeRecipe("burner-crusher")
else
Technology:new("steam-power"):removeRecipe("burner-crusher")
end

View file

@ -0,0 +1,104 @@
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 = 1 } },
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
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,6 +2,8 @@ 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")
require("crushing-industry")

View file

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

View file

@ -0,0 +1,16 @@
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

@ -0,0 +1,38 @@
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

@ -1,7 +0,0 @@
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 +1,4 @@
require("aai-industry")
require("gleba-reborn")
require("any-planet-start")
require("crushing-industry-updates")

View file

@ -0,0 +1,3 @@
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",
icon = Lignumis.graphics .. "icons/basic-circuit-board.png",
icons = { { icon = Lignumis.graphics .. "icons/basic-circuit-board.png", icon_size = 64 } },
subgroup = "intermediate-product",
order = "c[circuits]-0[basic-circuit-board]",
inventory_move_sound = item_sounds.electric_small_inventory_move,

View file

@ -2,6 +2,7 @@ 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"])
@ -9,8 +10,10 @@ 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 = 0.04
result.max_energy = "2MJ"
result.speed = early_robots and 0.05 or 0.04
result.max_energy = early_robots and "1.5MJ" or "1MJ"
result.energy_per_tick = early_robots and "0.03kJ" or "0.04kJ"
result.energy_per_move = early_robots and "2kJ" or "2.5kJ"
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-" ..
@ -83,9 +86,10 @@ local function generator(color)
energy_source = {
type = "electric",
usage_priority = "secondary-output",
output_flow_limit = "200kW"
output_flow_limit = "100kW",
buffer_capacity = "5MJ"
},
power = "200kW",
power = "100kW",
categories = { "armor" }
}
end
@ -177,15 +181,16 @@ local gold_robot_technology = {
modifier = true
}
},
prerequisites = { "steam-science-pack" },
prerequisites = { early_robots and "wood-science-pack" or "steam-science-pack" },
unit = {
count = 200,
ingredients = {
ingredients = early_robots and { { "wood-science-pack", 1 } } or {
{ "wood-science-pack", 1 },
{ "steam-science-pack", 1 }
},
time = 15
}
},
ignore_tech_cost_multiplier = early_robots
}
local copper_robot_technology = {
@ -246,21 +251,21 @@ data:extend({
robot_item("copper", 1),
robot_recipe("copper", {
{ type = "item", name = "copper-plate", amount = 2 },
{ type = "item", name = "iron-gear-wheel", amount = 5 },
{ type = "item", name = "electronic-circuit", amount = 5 }
{ type = "item", name = "wooden-gear-wheel", amount = 5 },
{ type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 5 }
}),
generator("copper"),
generator_item("copper", 1),
generator_recipe("copper", {
{ type = "item", name = "copper-plate", amount = 10 },
{ type = "item", name = "iron-gear-wheel", amount = 10 }
{ type = "item", name = "wooden-gear-wheel", amount = 10 }
}),
roboport("copper"),
roboport_item("copper", 1),
roboport_recipe("copper", {
{ type = "item", name = "copper-plate", amount = 5 },
{ type = "item", name = "electronic-circuit", amount = 10 },
{ type = "item", name = "iron-gear-wheel", amount = 10 }
{ type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 10 },
{ type = "item", name = "wooden-gear-wheel", amount = 10 }
}),
-- Technology

View file

@ -51,12 +51,15 @@ local turret_recipe = {
enabled = false,
energy_required = 8,
ingredients = {
{ type = "item", name = "wooden-gear-wheel", amount = 10 },
{ type = "item", name = "wooden-gear-wheel", amount = 5 },
{ type = "item", name = "lumber", amount = 10 },
{ type = "item", name = "gold-plate", amount = 20 }
{ type = "item", name = "gold-plate", amount = 10 }
},
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,4 +1,5 @@
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/"
@ -8,7 +9,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.icon = Lignumis.graphics .. "icons/burner-agricultural-tower.png"
agricultural_tower.icons = { { icon = Lignumis.graphics .. "icons/burner-agricultural-tower.png", icon_size = 64 } }
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"
@ -17,7 +18,7 @@ agricultural_tower.energy_source = {
fuel_categories = { "chemical" },
effectivity = 1,
fuel_inventory_size = 1,
emissions_per_minute = { noise = 100 }
emissions_per_minute = { noise = 75 }
}
agricultural_tower.resistances = nil
agricultural_tower.input_inventory_size = 1
@ -82,11 +83,12 @@ data:extend({
{
type = "recipe",
name = "burner-agricultural-tower",
category = "wood-processing-or-assembling",
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 = "wooden-gear-wheel", amount = 15 },
{ type = "item", name = "lumber", amount = 15 },
{ type = "item", name = "gold-plate", amount = basic_circuit_board and 10 or 20 },
basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 10 } or nil
},
@ -109,30 +111,27 @@ tech.ignore_tech_cost_multiplier = true
data.raw.technology["fish-breeding"].prerequisites = { "agricultural-science-pack" }
if not basic_circuit_board then
data:extend({
{
type = "recipe",
name = "burner-agricultural-tower-electronic-circuit",
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 = "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } }
{ 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 = "electronic-circuit", amount = 10 }
{ type = "item", name = "wooden-gear-wheel", amount = 15 },
{ type = "item", name = "lumber", amount = 15 },
{ 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
}
})
table.insert(data.raw.technology["electronics"].effects, {
type = "unlock-recipe",
recipe = "burner-agricultural-tower-electronic-circuit"
})
end
Technology:new(basic_circuit_board and "copper-processing" or "electronics"):addRecipe("burner-agricultural-tower-copper")

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.icon = Lignumis.graphics .. "icons/burner-assembling-machine.png"
assembling_machine.icons = { { icon = Lignumis.graphics .. "icons/burner-assembling-machine.png", icon_size = 64 } }
assembling_machine.minable.result = "burner-assembling-machine"
assembling_machine.next_upgrade = "steam-assembling-machine"
assembling_machine.corpse = "burner-assembling-machine-remnants"
@ -50,6 +50,8 @@ 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,
@ -68,6 +70,7 @@ data:extend({
{
type = "recipe",
name = "burner-assembling-machine",
category = crafting_category,
enabled = false,
ingredients = {
{ type = "item", name = "wooden-gear-wheel", amount = 5 },
@ -108,6 +111,7 @@ 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" },

View file

@ -44,6 +44,8 @@ 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,
@ -63,6 +65,7 @@ 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-boards")
require("basic-circuit-board")
require("enemies")
require("noise")

View file

@ -2,7 +2,6 @@ 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 enemy_autoplace = require("__base__.prototypes.entity.enemy-autoplace-utils")
local biter_ai_settings = require("__base__.prototypes.entity.biter-ai-settings")
local blood_particles = {
@ -170,7 +169,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(lifesteal)
local function attack_parameters()
local cooldown = 26
return {
ammo_category = "melee",
@ -180,20 +179,10 @@ 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" }
}
}
}
@ -218,7 +207,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,
@ -229,25 +218,19 @@ 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(true),
attack_parameters = attack_parameters(),
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 / 50 / 60,
healing_per_tick = -health / 1 / 60,
impact_category = "organic",
max_health = health,
max_pursue_distance = 50,
min_pursue_time = 600,
movement_speed = 0.2 * (1 + (scale - 1) / 2),
resistances = {
{
percent = 50,
type = "laser"
}
},
max_pursue_distance = 30,
min_pursue_time = 300,
movement_speed = 0.15 * (1 + (scale - 1) / 2),
run_animation = {
layers = {
wriggler_spritesheet("run", 21, 0.48, scale, tint_body),
@ -280,12 +263,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(false)
wriggler_stable.attack_parameters = attack_parameters()
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,
@ -403,50 +386,6 @@ 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
@ -486,7 +425,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, 20, 0.1,
make_wriggler("lignumis-small-", 0.2, 10, 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)
@ -496,7 +435,7 @@ make_wriggler("lignumis-small-", 0.2, 20, 0.1,
space_age_sounds.wriggler_pentapod.small
)
make_wriggler("lignumis-medium-", 0.4, 40, 0.2,
make_wriggler("lignumis-medium-", 0.4, 20, 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)
@ -506,6 +445,79 @@ make_wriggler("lignumis-medium-", 0.4, 40, 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",
@ -515,17 +527,16 @@ 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,
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 } },
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 } },
})
spawner.collision_mask = nil
spawner.loot = nil

View file

@ -35,3 +35,4 @@ 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,14 +12,15 @@ 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
stack_size = 100,
enabled = true
},
{
type = "recipe",
name = "gold-plate",
category = "smelting",
energy_required = 3.2,
ingredients = { { type = "item", name = "gold-ore", amount = 2 } },
ingredients = { { type = "item", name = "gold-ore", amount = 1 } },
results = { { type = "item", name = "gold-plate", amount = 1 } },
allow_productivity = true
},

View file

@ -147,7 +147,7 @@ plant.minable = {
mining_time = 2,
results = {
{ type = "item", name = "moist-stromatolite-remnant", amount = 25 },
{ type = "item", name = "gold-bacteria", amount = 30 },
{ type = "item", name = "gold-bacteria", amount = 20 },
{ type = "item", name = "gold-stromatolite-seed", amount_min = 1, amount_max = 3 }
}
}

View file

@ -19,5 +19,13 @@ data:extend({
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 },
["enemy-base"] = {},
["lignumis_enemy_base"] = { frequency = 0.75, size = 0.75 },
["rocks"] = {},
["starting_area_moisture"] = { size = 1, richness = 6 },
["nauvis_cliff"] = { frequency = 2, size = 2 }

View file

@ -3,6 +3,11 @@ 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 = {
@ -16,6 +21,11 @@ local nauvis_lignumis = {
}
}
local solar_power = data.raw.planet[target_planet].surface_properties["solar-power"] or 100
local solar_power_in_space = data.raw.planet[target_planet].solar_power_in_space or 300
solar_power = solar_power * 1.2
solar_power_in_space = solar_power_in_space * 1.2
PlanetsLib:extend({
{
type = "planet",
@ -23,7 +33,7 @@ PlanetsLib:extend({
orbit = {
parent = {
type = "planet",
name = "nauvis"
name = target_planet
},
distance = 2,
orientation = 0.16,
@ -43,7 +53,7 @@ PlanetsLib:extend({
map_seed_offset = 100,
map_gen_settings = planet_map_gen,
pollutant_type = "noise",
solar_power_in_space = 300,
solar_power_in_space = solar_power_in_space,
draw_orbit = false,
planet_procession_set = {
arrival = { "default-b" },
@ -53,7 +63,7 @@ PlanetsLib:extend({
["day-night-cycle"] = 2 * minute,
["gravity"] = 4,
["pressure"] = 900,
["solar-power"] = 120
["solar-power"] = solar_power
},
asteroid_spawn_influence = 1,
asteroid_spawn_definitions = asteroid_util.spawn_definitions(nauvis_lignumis, 0.9),
@ -114,9 +124,9 @@ PlanetsLib:extend({
data:extend({
{
type = "space-connection",
name = "nauvis-lignumis",
name = target_planet .. "-lignumis",
subgroup = "planet-connections",
from = "nauvis",
from = target_planet,
to = "lignumis",
order = "0",
length = 2000,

View file

@ -1,3 +1,4 @@
local Technology = require("__cf-lib__/data/Technology")
local LumberMillFactory = require(MF.buildings .. "LumberMill")
local LumberMill = LumberMillFactory()
@ -30,11 +31,11 @@ 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 },
basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 30 } or nil,
{ type = "item", name = "burner-assembling-machine", amount = 5 }
{ type = "item", name = "lumber", amount = 50 },
{ type = "item", name = "wooden-gear-wheel", amount = 50 },
{ type = "item", name = "gold-plate", amount = basic_circuit_board and 20 or 40 },
basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 20 } or nil,
{ type = "item", name = "burner-assembling-machine", amount = 2 }
}))
:apply({
category = "wood-processing-or-assembling"
@ -47,27 +48,23 @@ LumberMill.TechnologyBuilder:new()
:ingredients({ { "wood-science-pack", 1 }, { "steam-science-pack", 1 } })
:apply()
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 = "wooden-gear-wheel", amount = 50 },
{ type = "item", name = "copper-plate", amount = basic_circuit_board and 20 or 40 },
{ type = "item", name = basic_circuit_board and "basic-circuit-board" or "electronic-circuit", amount = 20 },
{ type = "item", name = "assembling-machine-1", amount = 2 }
})
:apply({
name = "lumber-mill-electronic-circuit",
name = "lumber-mill-copper",
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 } }
{ icon = basic_circuit_board and "__base__/graphics/icons/copper-plate.png" or "__base__/graphics/icons/electronic-circuit.png", scale = 0.25, shift = { 8, 8 } }
}
})
table.insert(data.raw.technology["electronics"].effects, {
type = "unlock-recipe",
recipe = "lumber-mill-electronic-circuit"
})
end
Technology:new(basic_circuit_board and "copper-processing" or "electronics"):addRecipe("lumber-mill-copper")

View file

@ -65,9 +65,9 @@ end
-- Walls absorb noise
emit_constant("wall", "wooden-wall", -10)
emit_constant("wall", "stone-wall", -20)
emit_constant("gate", "gate", -10)
emit_constant("wall", "wooden-wall", -15)
emit_constant("wall", "stone-wall", -25)
emit_constant("gate", "gate", -20)
-- 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", 100)
emit("agricultural-tower", "agricultural-tower", 100)
--emit("agricultural-tower", "burner-agricultural-tower", 75)
emit("agricultural-tower", "agricultural-tower", 75)
--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", 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)
--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)

View file

@ -77,7 +77,7 @@ QualityAssembler.EntityBuilder:new()
crafting_speed = 4,
module_slots = 6,
allowed_effects = { "pollution", "quality" },
effect_receiver = { base_effect = { quality = 10 } }
effect_receiver = { base_effect = { quality = 2.5 } }
})
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.icon = Lignumis.graphics .. "icons/steam-assembling-machine.png"
assembling_machine.icons = { { icon = Lignumis.graphics .. "icons/steam-assembling-machine.png", icon_size = 64 } }
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",
fuel_categories = { "steam" },
maximum_temperature = 165,
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 = true
ignore_tech_cost_multiplier = false
}
})

View file

@ -3,7 +3,6 @@ data:extend({
type = "technology",
name = "planet-discovery-lignumis",
icons = PlanetsLib.technology_icons_moon(Lignumis.graphics .. "technology/lignumis.png", 256),
essential = true,
effects = {
{
type = "unlock-space-location",
@ -83,7 +82,6 @@ data:extend({
}
})
if not mods["planet-picker"] and not mods["any-planet-start"] then
data:extend({
{
type = "technology",
@ -118,7 +116,6 @@ if not mods["planet-picker"] and not mods["any-planet-start"] then
name = "iron-processing",
icon = "__base__/graphics/icons/iron-plate.png",
icon_size = 64,
essential = true,
effects = {
{
type = "unlock-recipe",
@ -144,7 +141,6 @@ if not mods["planet-picker"] and not mods["any-planet-start"] then
name = "copper-processing",
icon = "__base__/graphics/icons/copper-plate.png",
icon_size = 64,
essential = true,
effects = {
{
type = "unlock-recipe",
@ -162,4 +158,3 @@ if not mods["planet-picker"] and not mods["any-planet-start"] then
}
}
})
end

View file

@ -144,10 +144,11 @@ data:extend({
{
type = "recipe",
name = "wood-lab",
category = "wood-processing-or-assembling",
energy_required = 2,
ingredients = {
{ type = "item", name = "lumber", amount = 10 },
{ type = "item", name = "wooden-gear-wheel", amount = 10 },
{ type = "item", name = "lumber", amount = 6 },
{ type = "item", name = "wooden-gear-wheel", amount = 4 },
{ type = "item", name = "stone-brick", amount = 10 },
{ type = "item", name = "gold-plate", amount = basic_circuit_board and 10 or 20 },
basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 10 } or nil

View file

@ -10,17 +10,32 @@ Belt.EntityBuilder:new()
:animationSpeedMultiplier(1.01)
:apply({
transportBelt = {
emissions_per_second = { noise = 0.05 }
emissions_per_second = { noise = 0.04 }
},
undergroundBelt = {
emissions_per_second = { noise = 0.5 }
emissions_per_second = { noise = 0.25 },
factoriopedia_simulation = {
init =
[[
game.simulation.camera_position = {0, 0.5}
game.simulation.camera_zoom = 1.8
game.surfaces[1].create_entities_from_blueprint_string
{
string = "0eNqVUNsKgzAM/Zc81+FEBfsrYwwvQQKaltpuivjvS3Wwh8HGnkKSc0tWaIaA1hF70CtMXNvEm6R31MV+Bl0oWECfNwXUGp5AXwRGPddDBHA9Imh4GNMlgTt0vTNSkwYHD5EjsznSrwqQPXnCQ2JvlhuHsUEnAPVdSoE1k7ANv2KlpyOYVLHpyGF7bHMFfrFRidiGGOLDLPvXLP9tZoLf3eRO8jjK5P1YBXd0004oyqzKq6ooqzLNinLbnvlmf6E=",
position = {-0.5, 0}
}
]]
}
},
splitter = {
emissions_per_second = { noise = 1 }
emissions_per_second = { noise = 0.5 }
}
})
local splitter_item = Belt.ItemBuilder:new()
:itemsPerRocket("transportBelt", 100)
:itemsPerRocket("undergroundBelt", 50)
:itemsPerRocket("splitter", 50)
:order("0")
:apply()
.splitter
@ -41,7 +56,17 @@ Belt.RecipeBuilder:new()
basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 5 } or
{ type = "item", name = "gold-cable", amount = 10 }
})
:apply()
:apply({
transportBelt = {
category = "wood-processing-or-assembling"
},
undergroundBelt = {
category = "wood-processing-or-assembling"
},
splitter = {
category = "wood-processing-or-assembling"
}
})
Belt.TechnologyBuilder:new()
:prerequisites({ "wood-science-pack" })
@ -65,7 +90,8 @@ 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,6 +81,7 @@ 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,6 +17,7 @@ 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 = 1
silo.to_be_inserted_to_rocket_inventory_size = 0
silo.clamps_on_trigger = {
type = "script",
effect_id = "provisional-rocket-ready"
@ -67,10 +67,10 @@ local silo_recipe = table.deepcopy(data.raw["recipe"]["rocket-silo"])
silo_recipe.name = "provisional-rocket-silo"
silo_recipe.results[1].name = "provisional-rocket-silo"
silo_recipe.ingredients = {
{ type = "item", name = "lumber", amount = 500 },
{ type = "item", name = "wooden-gear-wheel", amount = 250 },
{ type = "item", name = "stone-brick", amount = 500 },
{ type = "item", name = "gold-plate", amount = 500 },
{ type = "item", name = "lumber", amount = 400 },
{ type = "item", name = "wooden-gear-wheel", amount = 150 },
{ type = "item", name = "stone-brick", amount = 400 },
{ type = "item", name = "gold-plate", amount = 400 },
basic_circuit_board and { type = "item", name = "basic-circuit-board", amount = 100 } or
{ type = "item", name = "gold-cable", amount = 100 }
}
@ -79,9 +79,9 @@ local rocket = table.deepcopy(data.raw["rocket-silo-rocket"]["rocket-silo-rocket
rocket.name = "provisional-rocket"
rocket.inventory_size = 40
rocket.rising_speed = 1 / (14 * 60)
rocket.engine_starting_speed = 1 / (11 * 60)
rocket.flying_speed = 1 / (4000 * 60)
rocket.flying_acceleration = 0.005
rocket.engine_starting_speed = 1 / (8 * 60)
rocket.flying_speed = 1 / (3000 * 60)
rocket.flying_acceleration = 0.007
rocket.rocket_sprite.layers[1].filename = Lignumis.graphics .. "entity/wooden-rocket-silo/rocket-static-pod.png"
local rocket_part_recipe = {
@ -101,7 +101,8 @@ local rocket_part_recipe = {
{ type = "fluid", name = "wood-pulp", amount = 5 }
},
results = { { type = "item", name = "rocket-part", amount = 1 } },
allow_productivity = true
allow_productivity = true,
auto_recycle = false,
}
local silo_ready = {
@ -121,7 +122,7 @@ local silo_ready = {
min = 1
}
},
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" },
flags = { "not-on-map", "not-blueprintable", "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 = {} },
@ -144,3 +145,7 @@ 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,6 +1,4 @@
local recipe = data.raw.recipe["wooden-wall"]
recipe.ingredients = { { type = "item", name = "lumber", amount = 4 } }
recipe.results = { { type = "item", name = "wooden-wall", amount = 1 } }
-- https://mods.factorio.com/mod/Wood-Walls/discussion/679915cbb8bf3c84c65db404
data.raw.corpse["woodenwall-remnants"].icon = "__Wood-Walls__/graphics/wooden-wall/wooden-wall.png"
recipe.category = "wood-processing-or-assembling"

View file

@ -1,5 +1,6 @@
local Technology = require("__cf-lib__/data/Technology")
local Recipe = require("__cf-lib__/data/Recipe")
local Item = require("__cf-lib__/data/Item")
local basic_circuit_board = settings.startup["lignumis-basic-circuit-board"].value
@ -20,6 +21,7 @@ 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 },
@ -40,10 +42,14 @@ burner_inserter.energy_source.initial_fuel_percent = 0.15
data.raw.item["burner-inserter"].icon = Lignumis.graphics .. "icons/burner-inserter.png"
data.raw.recipe["burner-inserter"].ingredients = {
local burner_inserter_recipe = data.raw.recipe["burner-inserter"]
burner_inserter_recipe.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
@ -59,18 +65,12 @@ stone_furnace_remnants.animation[1].filename = Lignumis.graphics .. "entity/ston
-- Lab
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
Recipe:new("lab"):replaceIngredient("transport-belt", "wood-transport-belt")
-- Gun turret
data.raw["ammo-turret"]["gun-turret"].attack_parameters.range = 20
Item:new("gun-turret"):itemsPerRocket(50)
-- Agricultural tower
@ -84,6 +84,9 @@ if agricultural_tower.surface_conditions then
end
end
-- Solar panal
Item:new("solar-panel"):itemsPerRocket(50)
-- Wood processing
@ -96,6 +99,7 @@ for _, tree in pairs(data.raw.tree) do
return result.name == "wood"
end
local minable = tree.minable
if not minable then goto continue end
local woodResults = minable.results and table.filter(minable.results, isWoodResult)
local isRegularTree = (minable.result == "wood" and minable.count == 4) or (minable.results and #minable.results == 1 and #woodResults == 1 and woodResults[1].amount == 4)
if not isRegularTree then goto continue end
@ -104,6 +108,7 @@ 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
@ -129,14 +134,12 @@ table.insert(data.raw["assembling-machine"]["assembling-machine-3"].crafting_cat
-- Disable vanilla early game recipes
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,19 +148,22 @@ if settings.startup["lignumis-belt-progression"].value then
Recipe:new("transport-belt"):replaceIngredient("iron-plate", "wood-transport-belt", 2)
Recipe:new("underground-belt"):replaceIngredient("transport-belt", "wood-underground-belt", 2)
Recipe:new("splitter"):replaceIngredient("transport-belt", "wood-splitter", 1)
Item:new("transport-belt"):itemsPerRocket(100)
Item:new("underground-belt"):itemsPerRocket(50)
Item:new("splitter"):itemsPerRocket(50)
end
if settings.startup["lignumis-inserter-progression"].value then
table.insert(
data.raw.recipe["inserter"].ingredients,
{ type = "item", name = "burner-inserter", amount = 1 }
)
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)
end
-- Adjust vanilla technologies
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
@ -294,7 +300,6 @@ if not mods["planet-picker"] and not mods["any-planet-start"] then
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
Technology:new("logistic-robotics"):addRecipe("requester-chest")
@ -317,3 +322,17 @@ 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,6 +6,12 @@ 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
@ -15,11 +21,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 not force.technologies["planet-discovery-nauvis"].researched then
if game.planets["nauvis"] and force.technologies["planet-discovery-nauvis"] and not force.technologies["planet-discovery-nauvis"].researched then
force.lock_space_location("nauvis")
end
end
@ -62,7 +62,13 @@ end
InitNew.on_init = function()
if game.tick > 0 then return end
if script.active_mods["planet-picker"] or script.active_mods["any-planet-start"] 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
init_intro()
init_space_locations()

View file

@ -7,27 +7,15 @@ 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
@ -37,7 +25,6 @@ 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)
@ -74,15 +61,25 @@ 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["Burner-Leech-Fork"] and not script.active_mods["Burner-Leech"] and not script.active_mods["InserterFuelLeech"] then
game.print("Lignumis: You are starting a new game without a burner leech mod. The intended experience is to use one of the available options. You can disable such a mod after the burner phase of the game. See the mod page for more details.")
end
if not script.active_mods["any-planet-start"] then
init_player(event)
init_freeplay(event)
end
end
-- Watch Nauvis being visited for the first time
@ -91,7 +88,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 == "nauvis" then
if player and player.surface.name == storage.target_planet then
storage.nauvis_visited = true
end
@ -145,10 +142,15 @@ 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,7 +6,6 @@ local ToNauvis = {
events = {}
}
-- Chart the starting area for the player
local function chart_starting_area(surface, player)
local r = 200
@ -19,7 +18,7 @@ end
-- Initialize Nauvis
local function init_nauvis()
if storage.nauvis_visited then return end
local nauvis = game.planets["nauvis"].create_surface()
local nauvis = game.planets[storage.target_planet].create_surface()
nauvis.request_to_generate_chunks({ 0, 0 }, 3)
nauvis.force_generate_chunk_requests()
nauvis.daytime = 0.7
@ -28,12 +27,11 @@ end
-- Teleport player to Nauvis and show welcome message
local function teleport_player(player)
local nauvis = game.planets["nauvis"].surface
local nauvis = game.planets[storage.target_planet].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, "nauvis")
local position = nauvis.find_non_colliding_position("character", { 2, 2 }, 100, 1) or { 0, 0 }
player.teleport(position, storage.target_planet)
chart_starting_area(nauvis, player)
player.print("Oh no, not again. But... Welcome to Nauvis!")
end
end
@ -44,7 +42,7 @@ local function init_freeplay()
if not remote.interfaces.freeplay then return end
storage.crashed_ship_nauvis = true
local nauvis = game.planets["nauvis"].surface
local nauvis = game.planets[storage.target_planet].surface
local ship_items = {
["burner-mining-drill"] = 2,
["stone-furnace"] = 2,
@ -59,35 +57,131 @@ local function init_freeplay()
end
ToNauvis.events[defines.events.on_rocket_launched] = function(event)
if event.rocket_silo.name ~= "provisional-rocket-silo" then return end
local function transit_player(player_index)
local player = game.get_player(player_index)
local transition = storage.transitions[player_index]
local rocket_entry
local rocket_entry_index
local player
for i, entry in pairs(storage.rocket_silos) do
if entry.real_silo == event.rocket_silo then
rocket_entry = entry
rocket_entry_index = i
player = entry.player and game.get_player(entry.player) or game.players[1]
break
end
end
transition.rocket_entry.cargo_pod.set_passenger(nil)
transition.rocket_entry.cargo_pod.destroy()
init_nauvis()
teleport_player(player)
init_freeplay()
-- Give the player the content of the rocket
if rocket_entry.rocket_content then
if transition.rocket_entry.rocket_content then
local inventory = player.get_main_inventory()
for _, item in pairs(rocket_entry.rocket_content) do
for _, item in pairs(transition.rocket_entry.rocket_content) do
inventory.insert(item)
end
inventory.sort_and_merge()
end
table.remove(storage.rocket_silos, rocket_entry_index)
table.remove(storage.rocket_silos, transition.rocket_entry_index)
end
local function explode_silo(silo)
silo.die()
end
local get_random_position = function(box, x_scale, y_scale)
x_scale = x_scale or 1
y_scale = y_scale or 1
local x1 = box.left_top.x
local y1 = box.left_top.y
local x2 = box.right_bottom.x
local y2 = box.right_bottom.y
local x = ((x2 - x1) * x_scale * (math.random() - 0.5)) + ((x1 + x2) / 2)
local y = ((y2 - y1) * y_scale * (math.random() - 0.5)) + ((y1 + y2) / 2)
return { x, y }
end
local function burn_silo(silo)
local surface = silo.surface
local box = silo.bounding_box
for k = 1, 6 do
local position = get_random_position(box, 0.8, 0.5)
surface.create_entity
{
name = "crash-site-fire-flame",
position = position
}
local fire = surface.create_entity
{
name = "crash-site-fire-smoke",
position = position
}
fire.time_to_live = math.random(59 * 9, 59 * 14 - 1)
fire.time_to_next_effect = math.random(59 * 2)
end
end
local function pre_explode_silo(silo)
local surface = silo.surface
local box = silo.bounding_box
for k = 1, 3 do
local explosions = surface.create_entity
{
name = "crash-site-explosion-smoke",
position = get_random_position(box, 0.8, 0.5)
}
explosions.time_to_live = math.random(59 * 6, 59 * 11 - 1)
explosions.time_to_next_effect = math.random(59 * 3)
end
end
ToNauvis.events[defines.events.on_rocket_launch_ordered] = function(event)
if not event.rocket_silo or event.rocket_silo.name ~= "provisional-rocket-silo" then return end
local player
for i, entry in pairs(storage.rocket_silos) do
if entry.real_silo == event.rocket_silo then
if not storage.transitions then
storage.transitions = {}
end
player = entry.player and game.get_player(entry.player) or game.players[1]
storage.transitions[player.index] = {
rocket_entry = entry,
rocket_entry_index = i
}
break
end
end
local burn_tick = game.tick + (14 * 59)
local pre_explode_tick = game.tick + (17 * 59)
local transit_tick = game.tick + (23 * 59)
local explode_tick = game.tick + (28 * 59)
script.on_nth_tick(burn_tick, function()
burn_silo(event.rocket_silo)
script.on_nth_tick(burn_tick, nil)
end)
script.on_nth_tick(pre_explode_tick, function()
pre_explode_silo(event.rocket_silo)
script.on_nth_tick(pre_explode_tick, nil)
end)
script.on_nth_tick(transit_tick, function()
transit_player(player.index)
script.on_nth_tick(transit_tick, nil)
end)
script.on_nth_tick(explode_tick, function()
explode_silo(event.rocket_silo)
script.on_nth_tick(explode_tick, nil)
end)
end
ToNauvis.events[defines.events.on_post_entity_died] = function(event)
if not event.ghost or event.prototype.name ~= "provisional-rocket-silo" then return end
event.ghost.destroy()
end
return ToNauvis

View file

@ -12,16 +12,17 @@ local function build_gui(player, rocket_silo)
position = defines.relative_gui_position.right
}
local launch_button = { type = "button", name = "provisional-rocket-silo-launch-button", caption = { "lignumis.provisional-rocket-silo-button" } }
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 inventory = player.get_main_inventory()
local is_inventory_empty = inventory.is_empty()
local is_nauvis_researched = player.force.technologies["planet-discovery-nauvis"].researched
local is_nauvis_researched = player.force.technologies["planet-discovery-" .. storage.target_planet].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-nauvis" }
launch_button.tooltip = { "lignumis.provisional-rocket-silo-button-tooltip-target" }
end
@ -35,7 +36,7 @@ local function build_gui(player, rocket_silo)
direction = "vertical",
anchor = anchor,
children = {
{ type = "label", style = "frame_title", caption = { "lignumis.provisional-rocket-silo-button" }, ignored_by_interaction = true },
{ type = "label", style = "frame_title", caption = { "lignumis.provisional-rocket-silo-button", target_planet_name }, ignored_by_interaction = true },
{
type = "frame",
direction = "vertical",
@ -46,7 +47,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" } },
{ type = "label", caption = { "lignumis.provisional-rocket-silo-description", target_planet_name } },
launch_button
}
}
@ -64,12 +65,13 @@ 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
@ -90,8 +92,10 @@ local function launch(event)
if entry.fake_silo == fake_silo then
entry.player = event.player_index
entry.rocket_content = rocket_content
entry.cargo_pod = entry.real_silo.rocket.attached_cargo_pod
fake_silo.destroy()
entry.real_silo.launch_rocket()
entry.cargo_pod.set_passenger(player)
break
end
end
@ -104,7 +108,9 @@ 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
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 = false,
default_value = true,
order = "e"
},
{
@ -40,24 +40,53 @@ 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