DFHack / dfhack

Memory hacking library for Dwarf Fortress and a set of tools that use it
Other
1.84k stars 461 forks source link

RFE: Infinite Magma Source #149

Closed vjek closed 11 years ago

vjek commented 12 years ago

I would like to see the following feature added to dfhack:liquids

The same functionality as painting a riversource or aquifer tile is for water, but have it act as a LAVA_STONE tile does in a volcano tube, as an infinite source for magma.

So in practice, you would be able to switch to lava as a liquid in the dfhack:liquids interface, and place them just like a riversource is now. They would generate magma at the rate the LAVA_STONE tiles do inside a volcano, and replenish if depleted in the same manner.

The goal would be the ability to paint/create an entirely artificial lava tube/volcano from within dfhack:liquids, either multi-z or single-layer.

quietust commented 12 years ago

LAVA_STONE tiles in volcanoes don't actually generate magma - they're just obsidian walls. The actual magma refilling in volcanoes and magma pools is accomplished by the presence of a map feature, and creating map features is not for the faint of heart (we don't even know entirely how they work).

vjek commented 12 years ago

Hm, sounds like a challenge worthy of a Quietust! :-)

peterix mentioned some of this when I was chatting with him, but encouraged me to make the request all the same.

Would it be possible to bastardize a riversource into spewing out magma instead of water?

vj

On Fri, Apr 13, 2012 at 5:52 PM, Quietust < reply@reply.github.com

wrote:

LAVA_STONE tiles in volcanoes don't actually generate magma - they're just obsidian walls. The actual magma refilling in volcanoes and magma pools is accomplished by the presence of a map feature, and creating map features is not for the faint of heart (we don't even know entirely how they work).


Reply to this email directly or view it on GitHub: https://github.com/peterix/dfhack/issues/149#issuecomment-5127181

rh73 commented 12 years ago

A dirty workaround would be: periodically place 7/7 magma at some user-defined spots (and with a user-defined sleep timer). That should work fine for magma rivers flowing horizontally or downwards. BUT: magma in volcanoes is pushed upwards, too, and that would be a bit harder to emulate.

vjek commented 12 years ago

So, the equivalent of a "eternal fountain", in that it would be refilled at an interval like once a second or once every 5 seconds or whatever. I could see that working, although what are the performance implications? Would it need to be limited to a certain number of tiles generated over a certain number of seconds? something like a 30 magma-tiles per second max. or something? So you can have 30 tiles once a second or 150 every 5 seconds type of limit?

rh73 commented 12 years ago

First, refreshing magma too often (like every frame or so) would make no sense because magma flows relatively slow. Doing it every second or couple of seconds should be more than enough to create a decent flow. As for performance there will naturally be some point where it starts to drag down the game, but not because of dfhack placing the magma (which would be almost instantaneously if it's optimized a bit) but rather because of df calculating the flow and temperatures and whatnot. It needs to be tested, but I would assume that it should be no problem to spawn/refill hundreds or thousands or even tens of thousands tiles every second and you would barely notice it if at all. Df probably does much worse things with the map every single tick.

peterix commented 11 years ago

Added in 0.34.11-r2