Bay 12 Games Forum

Please login or register.

Login with username, password and session length
Advanced search  
Pages: [1] 2 3 ... 12

Author Topic: Biome Manipulator, a world gen/pre embark biome region manipulation tool  (Read 54041 times)

PatrikLundell

  • Bay Watcher
    • View Profile

This tool allows you to manipulate region biomes during world gen and pre embark:
- Change the Evilness of the biome (all world tiles included in the take on the entered value). Evil/Good plants and creatures no longer supported are removed from the population list. Evil weather is likewise removed if an evil region ceases to be evil.
- Add/remove plants and creatures on a per region basis. A toggle allows you to add things that doesn't belong (such as titans...) with largely unknown effects. Use at your own risk.
- Edit population counts for creatures.
- Flora/Fauna-diversity orders: set all regions to contain all plants and creatures respectively supported by each region. The toggle mentioned above does not affect these orders.
- The flora/fauna manipulations can be performed both on surface, cavern, and magma sea biome regions.
- Allows changing of cavern water, openness min/max, and passage density min/max parameters. Changing the water one
  can change the cavern biome type (Subterranean Chasm <-> Subterranean Water).
- Allows adding/removing/replacement of evil weather to regions regardless of actual region evilness, but no weather editing.
- Allows modifications of Geo Biomes, i.e. which minerals are present at different world tiles.
- Allows manipulation of world tile parameters, moving world tiles between regions, and creation of new regions.
- Allows manipulation of rivers, although their spaghetti course makes it a pain to do so.

The latest biomemanipulator.lua version can be downloaded from https://www.dropbox.com/s/bc7gxkmkk3mz1t6/biomemanipulator.lua?dl=0
It can also be found here:https://github.com/PatrikLundell/scripts/blob/own_scripts/biomemanipulator.lua (Note: it's a web page with the script on it, not the script itself, so don't try to save the page as a lua file).

To "install", copy the downloaded file into <DF>\hack\scripts and invoke it from the DFHack console with the command "biomemanipulator".

The author intends to update this first post without explicit change notes to reflect any changes in functionality. A change log should also be updated.

Change log:
0.44 2022-01-23: Dealt with unmapped creature_interaction_effect_type values.
0.43 2021-10-15: Fixed bug when veins occur in the first geo layer.
0.42 2021-08-15: Adapted to the identification of the plant_raw index field. Should be backwards compatible.
0.40 2020-03-04: Adapted to changed creature flag names. Should be backwards compatible.
0.39 2020-01-13: Fixed crashing when used with modded interactions.
0.38 2020-01-12: Updated to handle corrected field name when used during world gen.
0.37 2019-12-12: Fixed numerous bugs affecting biome generation.
0.36 2018-07-29: Fixed incorrect widget usage, causing text matching to fail.
0.35 2018-07-29: Fixed bug in the geo morph command that caused it to do nothing.
0.34 2018-01-15: Adapted to naming of the dead_percentage field.
0.33 2018-01-11: Corrected bug in evil weather reanimation detection causing reanimation to be reported where it isn't.
0.32 2017-12-27: Added new Geo Manipulation commands to assign all legal minerals to a layer, geo biome, or all geo biomes.
0.31 2017-12-25: Added beta and gamma DFHack version detection.
0.30 2017-12-22: Fixed geo biome panning.
0.29 2017-12-19: Fixed forwards compatibility bug in setting of whole region evilness.
0.28 2017-12-10: Modified new region creation to support 0.43.03. Fixed bug causing that to probably fail in 0.44.02.
0.27 2017-12-10: Added mostly untested support for 0.43.03, but river manipulation couldn't make it.
0.26 2017-12-09: Added printing help screens to the DFHack window to work around tile set illegibility.
0.25 2017-12-08: Adapted to DFHack changes in 0.44.02. It should be backwards compatible, though.
0.24 2017-11-25: Adapted to updated DFHack river structure. Remains compatible with the older DFHack version.
0.23 2017-11-24: Fixed region wide evilness changes and new region creation to set a region evilness field, allowing changes
                        during world gen to affect civ placement.
0.22 2017-11-18: Fixed display bug causing river sinks to be marked as disconnected erroneously. Also, DF doesn't seem to
                         recognize new rivers for unknown reasons, so avoid using that function.
0.21 2017-11-13: Added manipulation of rivers, added resizing of "maps", added fast movement keys.
0.20 2017-11-07: Added new page to allow manipulation of world tile parameters, shifting world tile region affiliation, and
                        creation of new regions from world tiles.
0.19 2017-09-24: Corrected geo manipulation "morph" logic that crashed on DF 64 bit Windows.
0.18 2017-09-10: Undone 0.17 as that was due do an incorrect understanding and updated the help text to describe the
                         current understanding of how the Cavern Water parameter works.
0.17 2017-09-08: Changed Cavern Water parameter to Cavern Muddiness due to better understanding of the parameter.
0.16 2017-09-03: Fixed display issue where "maps" are painted on top of the frame.
0.15 2017-07-30:
- No visible changes. It turned out I'd completely misunderstood the 'r' and 'b' parameters for "frames" in the API. Changed to use the 'w' and 'h' parameters instead, as well as correcting the internal "Grid" widget.
0.14 2017-07-25:
- Added Geo Biome manipulation.
- Restructured the help into several pages, as my rambling didn't fit on one...
0.13 2017-07-17:
- Fixed bug causing plant list not to be populated. It was caused by performance optimization that was done incorrectly.
- Shuffled the evil weather effects a bit to compress it while making it clearer (hopefully). No functionality change though.
- Implemented variant execution depending on whether the DFHack version is r2 or newer to use a newly identified field. More of an exercise than of any measurable benefit, though.
0.12 2017-07-16:
- Fixed biome profile calculation. The wrong parameter profile was passed in, so it's surprising that part seemed to work at all.
- Suppressed output of Evil Weather Probability when 100% (which seems to be always for generated weather).
0.11 2017-07-15:
- Expanded the evil weather info into an info dump (far from complete, though).
0.10 2017-07-10:
- Change region interaction identification from using string matching to using interaction source type = REGION. Only has an effect if you are creating your own region interaction raws.
0.9 2017-07-10:
- Fixed evil weather manipulation bug. I was able to assign the first one, but the second one didn't take. An incorrectly assigned variable caused the subsequent weather settings to be considered replacements (not sure why the first one worked at all...).
0.8 2017-07-06:
- Added addition/removal/replacement of evil weather for all regions. No weather editing is provided, as changes aren't saved. A
  crude indication of what the existing weather effects are is provided, however.
0.7 2017-07-05:
- Fixed design flaw casing it to fail to work with a reduced set of caverns. As I was in the middle of implementing some minor region interaction manipulation it's possible to bring up a partially implemented page on which you can do nothing (but nor break anything, I hope).
0.6 2017-06-30:
- Removed the minor hurdles to run the script during world gen. Only tested to a limited extent, though.
- Removed undocumented ability to pass a region parameter on startup. It will now start on region 0's first tile (0, 0) most probably) if started during world gen and at the current world tile if started pre embark (as before).
- Fixed an inevitable performance improvement bug causing animal/plant counts not to be updated on movement.
0.5 2017-06-29:
- Improved performance by not regenerating unchanged information all the time.
0.4 2017-06-29:
- Added cavern parameter editing.
0.3 2017-06-29:
- Replaced hotkeys for "map" display selection in favor of <TAB>/shift-<TAB> cycling
- Added an additional dimension by allowing manipulation of underground regions (the three caverns and the Magma Sea. HFS has been skipped intentionally [and is boring from this perspective anyway]).
0.2 2017-06-28:
- Added support for changing Evilness and Savagery of individual world tiles.
- Corrected initial panning bug, where the "map" didn't "center" on the selected world tile at startup.
0.1 2017-06-26: First version
« Last Edit: January 23, 2022, 05:02:14 am by PatrikLundell »
Logged

PatrikLundell

  • Bay Watcher
    • View Profile
Re: Biome Manipulator, a pre embark biome region manipulation tool
« Reply #1 on: June 26, 2017, 10:56:16 am »

Additional comments, without cluttering the first post:
- I've tried changing a biome region from evil to good, adding good plants to it, and embarking. Good plants were found on the embark.
- In a version prior to the evil weather removal, I did embark in a good, formerly evil, region and encountered a rain of blood, showing that evil interactions are not blocked from affecting a region only due to no longer being evil.
- I tried embarking in a good region after having removed all plants except a number of evil ones, underground ones, and apple trees (which were not legal for the biome). The resulting embark had only generic "grass" as vegetation, indicating that DF verifies that plants are actually legal for the location.
- Based on the above, I speculate that there might not be any technical reason for evilness to be tied to regions, i.e. that DFHacking two adjacent world tiles belonging to the same region to have low and high evilness values respectively could result in an embark that belonged to a single region but had evil and good plants on different halves of the embark.
Logged

Fleeting Frames

  • Bay Watcher
  • Spooky cart at distance
    • View Profile
Re: Biome Manipulator, a pre embark biome region manipulation tool
« Reply #2 on: June 27, 2017, 07:57:07 am »

Heh. Nice, this was what you foreshadowed, right?

"Based on the above, I speculate that there might not be any technical reason for evilness to be tied to regions, i.e. that DFHacking two adjacent world tiles belonging to the same region to have low and high evilness values respectively could result in an embark that belonged to a single region but had evil and good plants on different halves of the embark."

Hm, but not *looks at code* different interactions.

Flora-Fauna diversity, combined with legality check (does creature spawning check if creature is legal? I would guess yes) basically enables one to also change biome type for embark biome, or entire region to any possible biome. Somewhat superfluous, with tweakmap, but an idea for further changes.

Fauna in particular...Neat, you added vermin handling. Since mussels are ubiquitous, I guess that means infinite shell industry on any river.

Though I suppose there are couple of advantages to handling things at worldgen - animal people populations and ogres in goblin civs in particular*, this doesn't require preemptive handling - and I foresee generated region files being shared instead of parameters becoming more common, what's with 32 and 64-bit df generating different worlds.

* And, oh, wouldn't have guessed CASTE_MEGABEAST being the flag for megabeast - and on that note, strictly speaking wagons and werebeasts and such don't need to be excluded, due not having a biome they can match to. Though, didn't GENERATED flag exclude them anyway?

PS: Code-wise, new change on using generator instead of zeroing is neat mental load change as well, though not sure if that behaviour wouldn't result in memory creep with tens of thousands of sequential instances (in which case, replacing make with fetch that zeroes would work).

PatrikLundell

  • Bay Watcher
    • View Profile
Re: Biome Manipulator, a pre embark biome region manipulation tool
« Reply #3 on: June 27, 2017, 11:27:09 am »

Yes, it's what I hinted at. Nice to hear you find it interesting.

I've tried to make some sense out of the mess that is interactions, and they DO have flags to specify biomes and evil/good/savage, but apparently the evil/good check is performed only when hooking the interaction up to the biome. I don't know if it performs biome checking on the fly either, but assume it likewise is done on hookup, given that the legality flags match the biome types. The Savage check has to be done per world tile, though.
It's not that hard to add script to allow you to add interactions to regions (assuming DF doesn't go belly up when adding one to the region: you never know when that will happen), but it's not trivial to describe what they do beyond the most basic level (Animate/Material_emission for DF generated interactions, where the latter can be expanded into various weather types [Creeping gas/vapor/dust and falling material]), and if you try to cater for people modding interactions it becomes even trickier.

I assume creature spawning to check legality, because regions can span several biomes naturally (forest can contain both taiga and dry broadleaf, for instance), and that probably blocks gigantic squid from spawning at the border of your mountain embark (only to air drown, of course, if they would appear). I haven't tested that, though.
I've thought about changing biomes at the tile level, but that gets messy when you either have to assume DF handles regions containing inappropriate biomes correctly (and then somehow have to adjust the biome populations in a nice way), or shuffle world tiles between regions (and possibly come up with new ones).
I've experimented with moving a two tile lake from being E-W to being N-S while swapping the regions for the two tiles. The lake looked OK when embarking on it, but the former lake tile was marked as ocean, so it seemed the elevation didn't adjust properly.
In another experiment I just marked a world tile as being a lake, and while it looked OK pre embark, embarking on it resulted in starting in the cavern on a sand floor (possibly because the lake surface defaults to -30000).

Vermin handling wasn't hard, once the info to use had been located, but that's always an issue (and I've since seen the 10000001 numbers are the default, so the code to setting them can be removed so the defaults are just kept in that case).

I tried running it during world gen, and there was some data that didn't exist at that time, so it failed. Have you checked that adding ogres and animal people actually take effect during world gen? When I looked at it the goblin civ was empty of everything (such as trolls and beak dogs) up at the end of world gen (before acceptance), but adding ogres at that time to their biome didn't seem to work (although I may have botched it).
Sharing region files would require the ability to read and apply them, which is possible for a single region that's applied to the current region, but a mess if you tried to do that for the whole world and then applied it to the wrong world (and even for a single region it will be a mess if the regions are of different types). Unfortunately, quicksave doesn't work pre embark: if it did, it would have been possible to tweak the world and then share the save.

I didn't bother checking if wagons etc. would be excluded due to biomes, so I just added those checks. As for GENERATED, I don't know for sure what that matches, so again, I thought it safer to just add that flag as well (but I did check that it didn't result in giant animals and animal people getting excluded). It can be noted that I haven't checked DOES_NOT_EXIST though, but I haven't seen any Chimeras or other critters I think have that flag.

I don't understand what you refer to in the P.S section. If you mean generation of profiles I think Lua works like Java, i.e. a garbage collector kicks in at random times freezing all activity while garbage is collected. If so, it's usually not noticeable at the human level. I wouldn't create and discard data like that when using a real programming language (or high level assembly, a.k.a. C).
Logged

Fleeting Frames

  • Bay Watcher
  • Spooky cart at distance
    • View Profile
Re: Biome Manipulator, a pre embark biome region manipulation tool
« Reply #4 on: June 27, 2017, 12:39:36 pm »

The interaction thought was mostly about having both undead and live animals on same embark, from same region.

For your lake experiment, I suspect if you embarked on the swapped lake tile that didn't become ocean you'd get no lake water, but would get lake creatures that won't airdrown*, provided they're added in with region-pops. However, if elevation adjustment fail resulted in an ocean it'd suggest the biome is determined again when you embark - however, this doesn't quite work with region manipulator being fine with elevations below 100. It's possible, of course, that the two use normally not different, but separately stored elevation values.

*Assuming the new ocean tile had water. If it didn't, it's even stranger.

For world gen effects, I certainly have 10 new species of animals and 2 of animals people when using it a century before stopping, but haven't seen stoat men and one other (not sure which) join. However, given they're probably both from a single-tile biome the proposition of them joining is unlikely in the first place, when I see less than dozen animal people species in all sites total typically. And the ogres, well I switched my efforts to a gen that had them already present just because of that, but checking on an old one it doesn't seem they're found, at least on a gen where reanimation layout is different (with zombie ogres in legends at times.)

While both of these seem like indicators against it, the fact that megabeasts populations switch the world into age of myth nearly right away does suggest they're used at least in some manner - then again, there's around two magnitudes of difference between the two.

PS is as you said and pretty unimportant here, just a thought.

PatrikLundell

  • Bay Watcher
    • View Profile
Re: Biome Manipulator, a pre embark biome region manipulation tool
« Reply #5 on: June 27, 2017, 02:10:48 pm »

It didn't seem like the ocean (former lake) had any water in it, but I didn't embark on it to check. Note that the experiment was a free hand one using DFHack directly, and I may very well have failed to adjust something.

I definitely think using animaldiversity during world gen is better than using faunadiversity with the tool afterwards, but it was easy to implement...

The process of animal people migrating to civs sounds logical to perform as an ongoing task (after all, each hist fig migrates at some particular point in time), and the same goes for the age determination. Civ access to creatures and plants can logically be performed either at civ placement or at world finalization, with the former having the advantage that creature extinction in the biome won't affect civ access to that creature.
If creature/plant access is done during civ placement, it might be possible to give civs access to the full range if you were able to make a plugin that could insert a call to bio/animaldiversity as the biome generation step finishes, but before civs are placed. I have no idea how to make plugins, though, and certainly not once that could be activated at such a stage... You can manually interrupt the generation process with <ESC>, so I guess you might possibly be able to time it manually.
Logged

Fleeting Frames

  • Bay Watcher
  • Spooky cart at distance
    • View Profile
Re: Biome Manipulator, a pre embark biome region manipulation tool
« Reply #6 on: June 27, 2017, 02:34:05 pm »

Maybe. Worth a try, even if I have bad case of undead sharpnel. Running animaldiversity at the stage of placing civilizations (0 of 7) stage (with megabeasts excluded) ....Results in a partial success - ogres and beak dogs yes, trolls no, not even in wild populations. Huh, I guess it must not go over underground regions. Parameters I tested this on, if you want to try.

(Huh, lot of animals for elves there.)
Spoiler (click to show/hide)
« Last Edit: June 27, 2017, 02:38:30 pm by Fleeting Frames »
Logged

PatrikLundell

  • Bay Watcher
    • View Profile
Re: Biome Manipulator, a pre embark biome region manipulation tool
« Reply #7 on: June 27, 2017, 02:41:47 pm »

Underground populations are separate from normal biomes, yes, so if trolls happen to be absent from the first cavern (which I think is as deep as gobbos go) then they'll probably have to do without. I haven't looked into cavern stuff much though.
As a random side thought, the next DF release sounds like it would allow the players to give the gobbos some of the mounts they have theoretical access to now (I'm not aware of any case of e.g. giant cave bats with modern DF version), although just to get the beak dogs was a huge step forward.

Edit: Looks like underground regions are found in df.global.world.world_data.underground_regions and that the population is hidden at [index].feature_init.feature.population. I think HFS is present as underground regions as well, though.

Edit 2:
Updated to 0.2.
- Now you can change Evilness and Savagery on the current world tile only.
- Fixed initial "map" centering bug.

I tested the Evilness single tile change by changing an Evil region tile to Good, adding Feather Trees, bubble bulb, and Sun Berries to the region, and then embarking. The resulting embark had dead bubble bulbs and feather trees and goblin blood rain. Changing Savagery has been tested earlier when I made a stand alone script for that only, and changing a non savage tile of a region that had other tiles that were savage provided Whip Vine (which is savage only).

Edit 3:
I performed the experiment to remove all plants from a region, embarked on one of its tiles (rock desert, which was poor planning), and saw there was no growth except generic grass, as expected. I then added back all the plants supported by that biome, resumed, and channeled out a large area. However, when migrants arrived (i.e. sometime during the summer), there was still nothing growing at the bottom of the channeled area (normally, you'd get both grass, shrubs, and saplings even in deserts unless the rainfall is extremely low, in which case you'd only get grass and shrubs, or grass only). This seems to indicate that DF has a separate plant population list for the embark and that this list is populated on embark from the biome(s) (and previous experience suggests it might be a random subset of the ones in the biomes). This list is then updated as caverns are breached (to let the spores in). This is, of course, only a theory/speculation.

Edit 4:
A substantial update to version 0.3. The big change is the support for underground region population manipulation.

Edit 5:
Version 0.4. Added ability to mess with some cavern generation parameters.

Edit 5:
Version 0.5. Improved performance, but no changed functionality.
« Last Edit: June 29, 2017, 03:09:02 pm by PatrikLundell »
Logged

PatrikLundell

  • Bay Watcher
    • View Profile
Re: Biome Manipulator, a pre embark biome region manipulation tool
« Reply #8 on: June 30, 2017, 01:31:28 pm »

Updated to version 0.6:
- Removed the minor hurdles to run the script during world gen. Only tested to a limited extent, though.
- Removed undocumented ability to pass a region parameter on startup. It will now start on region 0's first tile (0, 0) most probably) if started during world gen and at the current world tile if started pre embark (as before).
- Fixed an inevitable performance improvement bug causing animal/plant counts not to be updated on movement.
Logged

Fleeting Frames

  • Bay Watcher
  • Spooky cart at distance
    • View Profile

Ran 0.6 during paused worldgen:
Quote
[DFHack]# biomemanipulator
.../DF/df4303LNP/df_linux/hack/scripts/biomemanipulator.lua:243: Cannot read field vector<world_underground_region*>.?: not found.
stack traceback:
   [C]: in function '__index'
   .../DF/df4303LNP/df_linux/hack/scripts/biomemanipulator.lua:243: in function 'biomemanipulator'
   .../DF/df4303LNP/df_linux/hack/scripts/biomemanipulator.lua:3328: in function 'f'
   ./hack/lua/dfhack.lua:562: in function <./hack/lua/dfhack.lua:503>
   (...tail calls...)

Spoiler: Relevant section (click to show/hide)
.

Mm. First thought was it might be problem due 1 cavern world. Removing the outer for 0,3 loop didn't fix it tho didn't look past that. Over 3k lines, though? Impressive.

PatrikLundell

  • Bay Watcher
    • View Profile

I can think of two causes. One is that the script was executed too early, i.e. before DF had generated the underground biomes, and the other is that a single cavern world will lack the references to the two upper caverns, and probably reference them as -1 which would cause the index to be out of bounds. I currently don't know if a single cavern world has that cavern as Layer 0 or 2 (i.e. whether it keeps the first or the third cavern). Regardless, I think there is a need for handling of the case where one or more caverns (and more) are missing as a result of parameters.

Ah, well, time to investigate it myself. I'll report back when I've found something.

Edit: Yes, it's caused by the missing caverns. Apparently cavern 1 is kept (at level 0), while 2 and 3 are missing, with the magma sea remaining at level 3. I'll update the script to handle that. I'm in the middle of adding some rather limited evil weather manipulation, so I can either make an update where you can bring up a partially populated page (but not do anything), or wait until I've implemented that, depending on your urgency.

Edit 2: Updated to 0.7 as an intermediate release fixing the failure to work with worlds with reduced underground layers. A few checks should ensure cavern regions are addressed only if their layer actually exists. The layer rotation now simply skips over missing layers.
« Last Edit: July 05, 2017, 08:07:18 am by PatrikLundell »
Logged

Roses

  • Bay Watcher
    • View Profile

Since you seem to be the person most involved in world gen/pre embark manipulation I was wondering if you have thought at all about making a script that lets you pick where in the world entities start/where cities get built. I have a custom fantasy world that I am translating into DF, but the random placements of entities is kind of a stopping point.
Logged

PatrikLundell

  • Bay Watcher
    • View Profile

No, I haven't done anything about placement beyond PSV values to only provide limited places for civs to start, and it's only partially successful for a single civ (the goblins: I want them to keep to their own so they don't kill off/gets killed off by humans, but they frequently ignore my hints that the evil plains over there is where they're supposed to start, not the neutral ones over that way).

It's possible in principle to move sites (Fleeting Frames made a script that works on necro towers), but they have a web of dependencies that would have to be adjusted (and before adjusting the web you'd have to map it).
I would probably try to intervene just after civ placement in world gen when I assume each civ has only a single site, but even then it's probably a significant task to transplant sites correctly (as far as I've seen, a civ entity is connected to one or more sites, and each site has local site management. Sites have area claims, and there is a history I know nothing about).
I recently made a worldgen_breakout_box script that interrupts world gen at some points defined by DF: I would guess it might be possible to fine tune it a little (you can probably get it to break out at the end of each civ placement, for instance, although I currently haven't investigated what criteria that would require monitoring of, but I think DF counts down for each civ, making it possible to intervene).
Logged

Fleeting Frames

  • Bay Watcher
  • Spooky cart at distance
    • View Profile

Not urgent - I ran the above 8 years before end, but thanks.

(Haven't reembarked so might regen now, wouldn't take long, but not like there'd be much of a difference when goblin taming isn't that common and dwarves already have all undergound plants. I'd imagine this would change once I start generating worlds with biomes maxed at start, not end (for which I'd replace the random part of count with static one to ensure equal histories). Eh, maybe some gorlaks or plumpies would join.).

Civ placement: To elaborate on what PatrikLundell said, dwarf civ goes first on calm mountain with land neighbor when playable civs are required; goblis get 0 savagery evil area spots (but may be put elsewhere sometimes, urgh), elves get good forests(can be high savagery, even), humans neutral plains(I anecdotally once found that they like 25 savagery). Kobolds can get mountain caves, though split that with dwarves - might need to generate caves and history separately. Not always in that order. Could improve by modding the entities.

I control where cities get built by vanilla way by making them only have 1 site in a spot that isn't in 6 tile range of (dark) fortress, but that might not be an option for you.

You can intervene at the point where it says Placing civs(0). Even if links are missing, could try to just move the site anyway and see if the new small offshoots of it are built around new or old place.

PatrikLundell

  • Bay Watcher
    • View Profile

Well, a bit of an anti climax; I should have tested first before constructing most of the UI. It turns out changing the NORMAL_ALLOWED flag for a region interaction doesn't survive save/reload (which means I assume none of the other flags would be retained either), but I can't find any text file generated for it. However, hooking up/severing links to evil weather still survives, so I'll keep that part. However cleaning up the mess will be a task for tomorrow.

Edit:
Version 0.8 207-07-06 has been released. It allows you to add/remove/replace evil weather for any region regardless of evilness, as well as seeing a crude indication of what the weather effects are.
« Last Edit: July 06, 2017, 04:17:50 am by PatrikLundell »
Logged
Pages: [1] 2 3 ... 12